From 40308f36688e6560b089b1d1acea4bc2fba13e0a Mon Sep 17 00:00:00 2001 From: realsarm <37932944+realsarm@users.noreply.github.com> Date: Tue, 6 Apr 2021 16:44:24 +0430 Subject: [PATCH] Fix error on running report on GPU --- pytorch_twitter_sentiment_analysis.ipynb | 4438 ++++++++++++++-------- 1 file changed, 2821 insertions(+), 1617 deletions(-) diff --git a/pytorch_twitter_sentiment_analysis.ipynb b/pytorch_twitter_sentiment_analysis.ipynb index c43c413..fe8ba47 100644 --- a/pytorch_twitter_sentiment_analysis.ipynb +++ b/pytorch_twitter_sentiment_analysis.ipynb @@ -1,1705 +1,2909 @@ { - "nbformat": 4, - "nbformat_minor": 0, - "metadata": { - "colab": { - "name": "pytorch_twitter_sentiment_analysis.ipynb", - "provenance": [] - }, - "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.7.4" - }, - "toc": { - "base_numbering": 1, - "nav_menu": {}, - "number_sections": true, - "sideBar": true, - "skip_h1_title": false, - "title_cell": "Table of Contents", - "title_sidebar": "Contents", - "toc_cell": false, - "toc_position": {}, - "toc_section_display": true, - "toc_window_display": false - }, - "varInspector": { - "cols": { - "lenName": 16, - "lenType": 16, - "lenVar": 40 - }, - "kernels_config": { - "python": { - "delete_cmd_postfix": "", - "delete_cmd_prefix": "del ", - "library": "var_list.py", - "varRefreshCmd": "print(var_dic_list())" - }, - "r": { - "delete_cmd_postfix": ") ", - "delete_cmd_prefix": "rm(", - "library": "var_list.r", - "varRefreshCmd": "cat(var_dic_list()) " - } - }, - "types_to_exclude": [ - "module", - "function", - "builtin_function_or_method", - "instance", - "_Feature" - ], - "window_display": false - }, - "accelerator": "GPU" - }, - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "collapsed": true, - "id": "oYCfnhWzJrUI", - "pycharm": { - "name": "#%% md\n" - } - }, - "source": [ - "# Twitter Sentiment Analysis Pytorch" - ] - }, - { - "cell_type": "code", - "metadata": { + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "MS1rkSnEJrUQ", - "pycharm": { - "name": "#%%\n" - }, - "outputId": "d913536f-8d32-4116-bf1d-d46278e208a5" - }, - "source": [ - "import numpy as np\n", - "import pandas as pd\n", - "import csv\n", - "import re\n", - "import imblearn\n", - "import torch\n", - "from nltk.corpus import stopwords\n", - "from gensim.parsing.porter import PorterStemmer\n", - "from gensim.utils import tokenize\n", - "from gensim.utils import simple_preprocess\n", - "from gensim.parsing.preprocessing import remove_stopwords\n", - "import torch.nn as nn\n", - "import torch.nn.functional as F\n", - "import torch.optim as optim\n", - "from torch.autograd import Variable\n", - "import torch\n", - "from torchtext.legacy import data\n", - "# from torchtext import data\n", - "import matplotlib.pyplot as plt\n", - "import seaborn as sb\n", - "from sklearn.metrics import accuracy_score\n", - "from sklearn.metrics import confusion_matrix\n", - "from sklearn.model_selection import train_test_split\n", - "from sklearn.metrics import classification_report\n", - "from bokeh.models import ColumnDataSource, LabelSet\n", - "from bokeh.plotting import figure, show, output_file\n", - "from collections import Counter\n", - "from functools import reduce\n", - "# ! pip install captum bokeh spacy emot\n", - "import captum\n", - "import spacy\n", - "from captum.attr import LayerIntegratedGradients, TokenReferenceBase, visualization, IntegratedGradients, LayerConductance\n", - "from captum.attr import visualization as viz\n", - "from captum.attr import configure_interpretable_embedding_layer, remove_interpretable_embedding_layer\n", - "import emot\n", - "from bokeh.io import output_notebook\n", - "output_notebook()\n", - "# ! python -m spacy download en_core_web_sm\n", - "nlp = spacy.load('en')\n", - "%matplotlib inline" - ], - "execution_count": 60, - "outputs": [ + "name": "pytorch_twitter_sentiment_analysis.ipynb", + "provenance": [] + }, + "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.7.4" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": true, + "skip_h1_title": false, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": {}, + "toc_section_display": true, + "toc_window_display": false + }, + "varInspector": { + "cols": { + "lenName": 16, + "lenType": 16, + "lenVar": 40 + }, + "kernels_config": { + "python": { + "delete_cmd_postfix": "", + "delete_cmd_prefix": "del ", + "library": "var_list.py", + "varRefreshCmd": "print(var_dic_list())" + }, + "r": { + "delete_cmd_postfix": ") ", + "delete_cmd_prefix": "rm(", + "library": "var_list.r", + "varRefreshCmd": "cat(var_dic_list()) " + } + }, + "types_to_exclude": [ + "module", + "function", + "builtin_function_or_method", + "instance", + "_Feature" + ], + "window_display": false + }, + "accelerator": "GPU" + }, + "cells": [ { - "data": { - "text/html": "\n
\n \n Loading BokehJS ...\n
" - }, - "metadata": {}, - "output_type": "display_data" + "cell_type": "markdown", + "metadata": { + "collapsed": true, + "id": "oYCfnhWzJrUI", + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "# Twitter Sentiment Analysis Pytorch" + ] }, { - "data": { - "application/javascript": "\n(function(root) {\n function now() {\n return new Date();\n }\n\n var force = true;\n\n if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n root._bokeh_onload_callbacks = [];\n root._bokeh_is_loading = undefined;\n }\n\n var JS_MIME_TYPE = 'application/javascript';\n var HTML_MIME_TYPE = 'text/html';\n var EXEC_MIME_TYPE = 'application/vnd.bokehjs_exec.v0+json';\n var CLASS_NAME = 'output_bokeh rendered_html';\n\n /**\n * Render data to the DOM node\n */\n function render(props, node) {\n var script = document.createElement(\"script\");\n node.appendChild(script);\n }\n\n /**\n * Handle when an output is cleared or removed\n */\n function handleClearOutput(event, handle) {\n var cell = handle.cell;\n\n var id = cell.output_area._bokeh_element_id;\n var server_id = cell.output_area._bokeh_server_id;\n // Clean up Bokeh references\n if (id != null && id in Bokeh.index) {\n Bokeh.index[id].model.document.clear();\n delete Bokeh.index[id];\n }\n\n if (server_id !== undefined) {\n // Clean up Bokeh references\n var cmd = \"from bokeh.io.state import curstate; print(curstate().uuid_to_server['\" + server_id + \"'].get_sessions()[0].document.roots[0]._id)\";\n cell.notebook.kernel.execute(cmd, {\n iopub: {\n output: function(msg) {\n var id = msg.content.text.trim();\n if (id in Bokeh.index) {\n Bokeh.index[id].model.document.clear();\n delete Bokeh.index[id];\n }\n }\n }\n });\n // Destroy server and session\n var cmd = \"import bokeh.io.notebook as ion; ion.destroy_server('\" + server_id + \"')\";\n cell.notebook.kernel.execute(cmd);\n }\n }\n\n /**\n * Handle when a new output is added\n */\n function handleAddOutput(event, handle) {\n var output_area = handle.output_area;\n var output = handle.output;\n\n // limit handleAddOutput to display_data with EXEC_MIME_TYPE content only\n if ((output.output_type != \"display_data\") || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n return\n }\n\n var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n\n if (output.metadata[EXEC_MIME_TYPE][\"id\"] !== undefined) {\n toinsert[toinsert.length - 1].firstChild.textContent = output.data[JS_MIME_TYPE];\n // store reference to embed id on output_area\n output_area._bokeh_element_id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n }\n if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n var bk_div = document.createElement(\"div\");\n bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n var script_attrs = bk_div.children[0].attributes;\n for (var i = 0; i < script_attrs.length; i++) {\n toinsert[toinsert.length - 1].firstChild.setAttribute(script_attrs[i].name, script_attrs[i].value);\n toinsert[toinsert.length - 1].firstChild.textContent = bk_div.children[0].textContent\n }\n // store reference to server id on output_area\n output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n }\n }\n\n function register_renderer(events, OutputArea) {\n\n function append_mime(data, metadata, element) {\n // create a DOM node to render to\n var toinsert = this.create_output_subarea(\n metadata,\n CLASS_NAME,\n EXEC_MIME_TYPE\n );\n this.keyboard_manager.register_events(toinsert);\n // Render to node\n var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n render(props, toinsert[toinsert.length - 1]);\n element.append(toinsert);\n return toinsert\n }\n\n /* Handle when an output is cleared or removed */\n events.on('clear_output.CodeCell', handleClearOutput);\n events.on('delete.Cell', handleClearOutput);\n\n /* Handle when a new output is added */\n events.on('output_added.OutputArea', handleAddOutput);\n\n /**\n * Register the mime type and append_mime function with output_area\n */\n OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n /* Is output safe? */\n safe: true,\n /* Index of renderer in `output_area.display_order` */\n index: 0\n });\n }\n\n // register the mime type if in Jupyter Notebook environment and previously unregistered\n if (root.Jupyter !== undefined) {\n var events = require('base/js/events');\n var OutputArea = require('notebook/js/outputarea').OutputArea;\n\n if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n register_renderer(events, OutputArea);\n }\n }\n\n \n if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n var NB_LOAD_WARNING = {'data': {'text/html':\n \"
\\n\"+\n \"

\\n\"+\n \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n \"

\\n\"+\n \"\\n\"+\n \"\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"\\n\"+\n \"
\"}};\n\n function display_loaded() {\n var el = document.getElementById(\"1165\");\n if (el != null) {\n el.textContent = \"BokehJS is loading...\";\n }\n if (root.Bokeh !== undefined) {\n if (el != null) {\n el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(display_loaded, 100)\n }\n }\n\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n\n root._bokeh_onload_callbacks.push(callback);\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls == null || js_urls.length === 0) {\n run_callbacks();\n return null;\n }\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n root._bokeh_is_loading = css_urls.length + js_urls.length;\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n\n function on_error() {\n console.error(\"failed to load \" + url);\n }\n\n for (var i = 0; i < css_urls.length; i++) {\n var url = css_urls[i];\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error;\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n }\n\n const hashes = {\"https://cdn.bokeh.org/bokeh/release/bokeh-2.2.1.min.js\": \"qkRvDQVAIfzsJo40iRBbxt6sttt0hv4lh74DG7OK4MCHv4C5oohXYoHUM5W11uqS\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.2.1.min.js\": \"Sb7Mr06a9TNlet/GEBeKaf5xH3eb6AlCzwjtU82wNPyDrnfoiVl26qnvlKjmcAd+\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.2.1.min.js\": \"HaJ15vgfmcfRtB4c4YBOI4f1MUujukqInOWVqZJZZGK7Q+ivud0OKGSTn/Vm2iso\"};\n\n for (var i = 0; i < js_urls.length; i++) {\n var url = js_urls[i];\n var element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error;\n element.async = false;\n element.src = url;\n if (url in hashes) {\n element.crossOrigin = \"anonymous\";\n element.integrity = \"sha384-\" + hashes[url];\n }\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n \n var js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.2.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.2.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.2.1.min.js\"];\n var css_urls = [];\n \n\n var inline_js = [\n function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\n function(Bokeh) {\n \n \n }\n ];\n\n function run_inline_js() {\n \n if (root.Bokeh !== undefined || force === true) {\n \n for (var i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }\n if (force === true) {\n display_loaded();\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n } else if (force !== true) {\n var cell = $(document.getElementById(\"1165\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n\n }\n\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(css_urls, js_urls, function() {\n console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));", - "application/vnd.bokehjs_load.v0+json": "\n(function(root) {\n function now() {\n return new Date();\n }\n\n var force = true;\n\n if (typeof root._bokeh_onload_callbacks === \"undefined\" || force === true) {\n root._bokeh_onload_callbacks = [];\n root._bokeh_is_loading = undefined;\n }\n\n \n\n \n if (typeof (root._bokeh_timeout) === \"undefined\" || force === true) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n var NB_LOAD_WARNING = {'data': {'text/html':\n \"
\\n\"+\n \"

\\n\"+\n \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n \"

\\n\"+\n \"\\n\"+\n \"\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"\\n\"+\n \"
\"}};\n\n function display_loaded() {\n var el = document.getElementById(\"1165\");\n if (el != null) {\n el.textContent = \"BokehJS is loading...\";\n }\n if (root.Bokeh !== undefined) {\n if (el != null) {\n el.textContent = \"BokehJS \" + root.Bokeh.version + \" successfully loaded.\";\n }\n } else if (Date.now() < root._bokeh_timeout) {\n setTimeout(display_loaded, 100)\n }\n }\n\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n\n root._bokeh_onload_callbacks.push(callback);\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls == null || js_urls.length === 0) {\n run_callbacks();\n return null;\n }\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n root._bokeh_is_loading = css_urls.length + js_urls.length;\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n\n function on_error() {\n console.error(\"failed to load \" + url);\n }\n\n for (var i = 0; i < css_urls.length; i++) {\n var url = css_urls[i];\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error;\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n }\n\n const hashes = {\"https://cdn.bokeh.org/bokeh/release/bokeh-2.2.1.min.js\": \"qkRvDQVAIfzsJo40iRBbxt6sttt0hv4lh74DG7OK4MCHv4C5oohXYoHUM5W11uqS\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.2.1.min.js\": \"Sb7Mr06a9TNlet/GEBeKaf5xH3eb6AlCzwjtU82wNPyDrnfoiVl26qnvlKjmcAd+\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.2.1.min.js\": \"HaJ15vgfmcfRtB4c4YBOI4f1MUujukqInOWVqZJZZGK7Q+ivud0OKGSTn/Vm2iso\"};\n\n for (var i = 0; i < js_urls.length; i++) {\n var url = js_urls[i];\n var element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error;\n element.async = false;\n element.src = url;\n if (url in hashes) {\n element.crossOrigin = \"anonymous\";\n element.integrity = \"sha384-\" + hashes[url];\n }\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n \n var js_urls = [\"https://cdn.bokeh.org/bokeh/release/bokeh-2.2.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-2.2.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-2.2.1.min.js\"];\n var css_urls = [];\n \n\n var inline_js = [\n function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\n function(Bokeh) {\n \n \n }\n ];\n\n function run_inline_js() {\n \n if (root.Bokeh !== undefined || force === true) {\n \n for (var i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }\n if (force === true) {\n display_loaded();\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n } else if (force !== true) {\n var cell = $(document.getElementById(\"1165\")).parents('.cell').data().cell;\n cell.output_area.append_execute_result(NB_LOAD_WARNING)\n }\n\n }\n\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: BokehJS loaded, going straight to plotting\");\n run_inline_js();\n } else {\n load_libs(css_urls, js_urls, function() {\n console.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n run_inline_js();\n });\n }\n}(window));" - }, - "metadata": {}, - "output_type": "display_data" - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "6DETgMPgJrUS", - "pycharm": { - "name": "#%% md\n" - } - }, - "source": [ - "## Loading the data" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 496 - }, - "id": "QwFJPG55JrUT", - "pycharm": { - "name": "#%%\n" + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "MS1rkSnEJrUQ", + "pycharm": { + "name": "#%%\n" + }, + "outputId": "cdbd5e4c-9d32-42f0-e8e4-c397f5b77100" + }, + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "import csv\n", + "import re\n", + "import imblearn\n", + "import torch\n", + "from nltk.corpus import stopwords\n", + "from gensim.parsing.porter import PorterStemmer\n", + "from gensim.utils import tokenize\n", + "from gensim.utils import simple_preprocess\n", + "from gensim.parsing.preprocessing import remove_stopwords\n", + "import torch.nn as nn\n", + "import torch.nn.functional as F\n", + "import torch.optim as optim\n", + "from torch.autograd import Variable\n", + "import torch\n", + "from torchtext.legacy import data\n", + "# from torchtext import data\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sb\n", + "from sklearn.metrics import accuracy_score\n", + "from sklearn.metrics import confusion_matrix\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.metrics import classification_report\n", + "from bokeh.models import ColumnDataSource, LabelSet\n", + "from bokeh.plotting import figure, show, output_file\n", + "from collections import Counter\n", + "from functools import reduce\n", + "! pip install captum bokeh spacy emot\n", + "import captum\n", + "import spacy\n", + "from captum.attr import LayerIntegratedGradients, TokenReferenceBase, visualization, IntegratedGradients, LayerConductance\n", + "from captum.attr import visualization as viz\n", + "from captum.attr import configure_interpretable_embedding_layer, remove_interpretable_embedding_layer\n", + "import emot\n", + "from bokeh.io import output_notebook\n", + "output_notebook()\n", + "! python -m spacy download en_core_web_sm\n", + "nlp = spacy.load('en')\n", + "%matplotlib inline" + ], + "execution_count": 1, + "outputs": [ + { + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.7/dist-packages/sklearn/externals/six.py:31: FutureWarning: The module is deprecated in version 0.21 and will be removed in version 0.23 since we've dropped support for Python 2.7. Please rely on the official version of six (https://pypi.org/project/six/).\n", + " \"(https://pypi.org/project/six/).\", FutureWarning)\n", + "/usr/local/lib/python3.7/dist-packages/sklearn/utils/deprecation.py:144: FutureWarning: The sklearn.neighbors.base module is deprecated in version 0.22 and will be removed in version 0.24. The corresponding classes / functions should instead be imported from sklearn.neighbors. Anything that cannot be imported from sklearn.neighbors is now part of the private API.\n", + " warnings.warn(message, FutureWarning)\n" + ], + "name": "stderr" + }, + { + "output_type": "stream", + "text": [ + "Requirement already satisfied: captum in /usr/local/lib/python3.7/dist-packages (0.3.1)\n", + "Requirement already satisfied: bokeh in /usr/local/lib/python3.7/dist-packages (2.3.0)\n", + "Requirement already satisfied: spacy in /usr/local/lib/python3.7/dist-packages (2.2.4)\n", + "Requirement already satisfied: emot in /usr/local/lib/python3.7/dist-packages (2.1)\n", + "Requirement already satisfied: torch>=1.2 in /usr/local/lib/python3.7/dist-packages (from captum) (1.8.1+cu101)\n", + "Requirement already satisfied: matplotlib in /usr/local/lib/python3.7/dist-packages (from captum) (3.2.2)\n", + "Requirement already satisfied: numpy in /usr/local/lib/python3.7/dist-packages (from captum) (1.19.5)\n", + "Requirement already satisfied: python-dateutil>=2.1 in /usr/local/lib/python3.7/dist-packages (from bokeh) (2.8.1)\n", + "Requirement already satisfied: Jinja2>=2.7 in /usr/local/lib/python3.7/dist-packages (from bokeh) (2.11.3)\n", + "Requirement already satisfied: packaging>=16.8 in /usr/local/lib/python3.7/dist-packages (from bokeh) (20.9)\n", + "Requirement already satisfied: pillow>=7.1.0 in /usr/local/lib/python3.7/dist-packages (from bokeh) (7.1.2)\n", + "Requirement already satisfied: tornado>=5.1 in /usr/local/lib/python3.7/dist-packages (from bokeh) (5.1.1)\n", + "Requirement already satisfied: PyYAML>=3.10 in /usr/local/lib/python3.7/dist-packages (from bokeh) (3.13)\n", + "Requirement already satisfied: typing-extensions>=3.7.4 in /usr/local/lib/python3.7/dist-packages (from bokeh) (3.7.4.3)\n", + "Requirement already satisfied: thinc==7.4.0 in /usr/local/lib/python3.7/dist-packages (from spacy) (7.4.0)\n", + "Requirement already satisfied: plac<1.2.0,>=0.9.6 in /usr/local/lib/python3.7/dist-packages (from spacy) (1.1.3)\n", + "Requirement already satisfied: requests<3.0.0,>=2.13.0 in /usr/local/lib/python3.7/dist-packages (from spacy) (2.23.0)\n", + "Requirement already satisfied: wasabi<1.1.0,>=0.4.0 in /usr/local/lib/python3.7/dist-packages (from spacy) (0.8.2)\n", + "Requirement already satisfied: preshed<3.1.0,>=3.0.2 in /usr/local/lib/python3.7/dist-packages (from spacy) (3.0.5)\n", + "Requirement already satisfied: cymem<2.1.0,>=2.0.2 in /usr/local/lib/python3.7/dist-packages (from spacy) (2.0.5)\n", + "Requirement already satisfied: srsly<1.1.0,>=1.0.2 in /usr/local/lib/python3.7/dist-packages (from spacy) (1.0.5)\n", + "Requirement already satisfied: setuptools in /usr/local/lib/python3.7/dist-packages (from spacy) (54.2.0)\n", + "Requirement already satisfied: blis<0.5.0,>=0.4.0 in /usr/local/lib/python3.7/dist-packages (from spacy) (0.4.1)\n", + "Requirement already satisfied: murmurhash<1.1.0,>=0.28.0 in /usr/local/lib/python3.7/dist-packages (from spacy) (1.0.5)\n", + "Requirement already satisfied: catalogue<1.1.0,>=0.0.7 in /usr/local/lib/python3.7/dist-packages (from spacy) (1.0.0)\n", + "Requirement already satisfied: tqdm<5.0.0,>=4.38.0 in /usr/local/lib/python3.7/dist-packages (from spacy) (4.41.1)\n", + "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.7/dist-packages (from matplotlib->captum) (1.3.1)\n", + "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.7/dist-packages (from matplotlib->captum) (0.10.0)\n", + "Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.1 in /usr/local/lib/python3.7/dist-packages (from matplotlib->captum) (2.4.7)\n", + "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.7/dist-packages (from python-dateutil>=2.1->bokeh) (1.15.0)\n", + "Requirement already satisfied: MarkupSafe>=0.23 in /usr/local/lib/python3.7/dist-packages (from Jinja2>=2.7->bokeh) (1.1.1)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.7/dist-packages (from requests<3.0.0,>=2.13.0->spacy) (2020.12.5)\n", + "Requirement already satisfied: chardet<4,>=3.0.2 in /usr/local/lib/python3.7/dist-packages (from requests<3.0.0,>=2.13.0->spacy) (3.0.4)\n", + "Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in /usr/local/lib/python3.7/dist-packages (from requests<3.0.0,>=2.13.0->spacy) (1.24.3)\n", + "Requirement already satisfied: idna<3,>=2.5 in /usr/local/lib/python3.7/dist-packages (from requests<3.0.0,>=2.13.0->spacy) (2.10)\n", + "Requirement already satisfied: importlib-metadata>=0.20; python_version < \"3.8\" in /usr/local/lib/python3.7/dist-packages (from catalogue<1.1.0,>=0.0.7->spacy) (3.8.1)\n", + "Requirement already satisfied: zipp>=0.5 in /usr/local/lib/python3.7/dist-packages (from importlib-metadata>=0.20; python_version < \"3.8\"->catalogue<1.1.0,>=0.0.7->spacy) (3.4.1)\n", + "Requirement already satisfied: en_core_web_sm==2.2.5 from https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-2.2.5/en_core_web_sm-2.2.5.tar.gz#egg=en_core_web_sm==2.2.5 in /usr/local/lib/python3.7/dist-packages (2.2.5)\n", + "Requirement already satisfied: spacy>=2.2.2 in /usr/local/lib/python3.7/dist-packages (from en_core_web_sm==2.2.5) (2.2.4)\n", + "Requirement already satisfied: murmurhash<1.1.0,>=0.28.0 in /usr/local/lib/python3.7/dist-packages (from spacy>=2.2.2->en_core_web_sm==2.2.5) (1.0.5)\n", + "Requirement already satisfied: cymem<2.1.0,>=2.0.2 in /usr/local/lib/python3.7/dist-packages (from spacy>=2.2.2->en_core_web_sm==2.2.5) (2.0.5)\n", + "Requirement already satisfied: numpy>=1.15.0 in /usr/local/lib/python3.7/dist-packages (from spacy>=2.2.2->en_core_web_sm==2.2.5) (1.19.5)\n", + "Requirement already satisfied: blis<0.5.0,>=0.4.0 in /usr/local/lib/python3.7/dist-packages (from spacy>=2.2.2->en_core_web_sm==2.2.5) (0.4.1)\n", + "Requirement already satisfied: tqdm<5.0.0,>=4.38.0 in /usr/local/lib/python3.7/dist-packages (from spacy>=2.2.2->en_core_web_sm==2.2.5) (4.41.1)\n", + "Requirement already satisfied: preshed<3.1.0,>=3.0.2 in /usr/local/lib/python3.7/dist-packages (from spacy>=2.2.2->en_core_web_sm==2.2.5) (3.0.5)\n", + "Requirement already satisfied: thinc==7.4.0 in /usr/local/lib/python3.7/dist-packages (from spacy>=2.2.2->en_core_web_sm==2.2.5) (7.4.0)\n", + "Requirement already satisfied: srsly<1.1.0,>=1.0.2 in /usr/local/lib/python3.7/dist-packages (from spacy>=2.2.2->en_core_web_sm==2.2.5) (1.0.5)\n", + "Requirement already satisfied: setuptools in /usr/local/lib/python3.7/dist-packages (from spacy>=2.2.2->en_core_web_sm==2.2.5) (54.2.0)\n", + "Requirement already satisfied: requests<3.0.0,>=2.13.0 in /usr/local/lib/python3.7/dist-packages (from spacy>=2.2.2->en_core_web_sm==2.2.5) (2.23.0)\n", + "Requirement already satisfied: catalogue<1.1.0,>=0.0.7 in /usr/local/lib/python3.7/dist-packages (from spacy>=2.2.2->en_core_web_sm==2.2.5) (1.0.0)\n", + "Requirement already satisfied: plac<1.2.0,>=0.9.6 in /usr/local/lib/python3.7/dist-packages (from spacy>=2.2.2->en_core_web_sm==2.2.5) (1.1.3)\n", + "Requirement already satisfied: wasabi<1.1.0,>=0.4.0 in /usr/local/lib/python3.7/dist-packages (from spacy>=2.2.2->en_core_web_sm==2.2.5) (0.8.2)\n", + "Requirement already satisfied: idna<3,>=2.5 in /usr/local/lib/python3.7/dist-packages (from requests<3.0.0,>=2.13.0->spacy>=2.2.2->en_core_web_sm==2.2.5) (2.10)\n", + "Requirement already satisfied: chardet<4,>=3.0.2 in /usr/local/lib/python3.7/dist-packages (from requests<3.0.0,>=2.13.0->spacy>=2.2.2->en_core_web_sm==2.2.5) (3.0.4)\n", + "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.7/dist-packages (from requests<3.0.0,>=2.13.0->spacy>=2.2.2->en_core_web_sm==2.2.5) (2020.12.5)\n", + "Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in /usr/local/lib/python3.7/dist-packages (from requests<3.0.0,>=2.13.0->spacy>=2.2.2->en_core_web_sm==2.2.5) (1.24.3)\n", + "Requirement already satisfied: importlib-metadata>=0.20; python_version < \"3.8\" in /usr/local/lib/python3.7/dist-packages (from catalogue<1.1.0,>=0.0.7->spacy>=2.2.2->en_core_web_sm==2.2.5) (3.8.1)\n", + "Requirement already satisfied: zipp>=0.5 in /usr/local/lib/python3.7/dist-packages (from importlib-metadata>=0.20; python_version < \"3.8\"->catalogue<1.1.0,>=0.0.7->spacy>=2.2.2->en_core_web_sm==2.2.5) (3.4.1)\n", + "Requirement already satisfied: typing-extensions>=3.6.4; python_version < \"3.8\" in /usr/local/lib/python3.7/dist-packages (from importlib-metadata>=0.20; python_version < \"3.8\"->catalogue<1.1.0,>=0.0.7->spacy>=2.2.2->en_core_web_sm==2.2.5) (3.7.4.3)\n", + "\u001b[38;5;2m✔ Download and installation successful\u001b[0m\n", + "You can now load the model via spacy.load('en_core_web_sm')\n" + ], + "name": "stdout" + } + ] }, - "outputId": "0d2f64d6-a53f-4cf2-888b-96fea8416357" - }, - "source": [ - "!curl https://raw.githubusercontent.com/dipikabaad/Sentiment_Classification_with_RNN/master/Tweets.csv --create-dirs -o .pytorch/tweets/tweets.csv\n", - "# !mkdir checkpoint\n", - "df = pd.read_csv('.pytorch/tweets/tweets.csv')\n", - "df.head()" - ], - "execution_count": 2, - "outputs": [ { - "name": "stderr", - "output_type": "stream", - "text": [ - " % Total % Received % Xferd Average Speed Time Time Time Current\n", - " Dload Upload Total Spent Left Speed\n", - "\n", - " 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0\n", - " 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0\n", - " 0 3341k 0 24276 0 0 19010 0 0:02:59 0:00:01 0:02:58 19040\n", - " 7 3341k 7 245k 0 0 114k 0 0:00:29 0:00:02 0:00:27 114k\n", - " 36 3341k 36 1229k 0 0 389k 0 0:00:08 0:00:03 0:00:05 389k\n", - " 50 3341k 50 1689k 0 0 407k 0 0:00:08 0:00:04 0:00:04 407k\n", - " 92 3341k 92 3092k 0 0 599k 0 0:00:05 0:00:05 --:--:-- 631k\n", - "100 3341k 100 3341k 0 0 631k 0 0:00:05 0:00:05 --:--:-- 826k\n" - ] + "cell_type": "markdown", + "metadata": { + "id": "6DETgMPgJrUS", + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "## Loading the data" + ] }, { - "data": { - "text/plain": " tweet_id airline_sentiment airline_sentiment_confidence \\\n0 570306133677760513 neutral 1.0000 \n1 570301130888122368 positive 0.3486 \n2 570301083672813571 neutral 0.6837 \n3 570301031407624196 negative 1.0000 \n4 570300817074462722 negative 1.0000 \n\n negativereason negativereason_confidence airline \\\n0 NaN NaN Virgin America \n1 NaN 0.0000 Virgin America \n2 NaN NaN Virgin America \n3 Bad Flight 0.7033 Virgin America \n4 Can't Tell 1.0000 Virgin America \n\n airline_sentiment_gold name negativereason_gold retweet_count \\\n0 NaN cairdin NaN 0 \n1 NaN jnardino NaN 0 \n2 NaN yvonnalynn NaN 0 \n3 NaN jnardino NaN 0 \n4 NaN jnardino NaN 0 \n\n text tweet_coord \\\n0 @VirginAmerica What @dhepburn said. NaN \n1 @VirginAmerica plus you've added commercials t... NaN \n2 @VirginAmerica I didn't today... Must mean I n... NaN \n3 @VirginAmerica it's really aggressive to blast... NaN \n4 @VirginAmerica and it's a really big bad thing... NaN \n\n tweet_created tweet_location user_timezone \n0 2015-02-24 11:35:52 -0800 NaN Eastern Time (US & Canada) \n1 2015-02-24 11:15:59 -0800 NaN Pacific Time (US & Canada) \n2 2015-02-24 11:15:48 -0800 Lets Play Central Time (US & Canada) \n3 2015-02-24 11:15:36 -0800 NaN Pacific Time (US & Canada) \n4 2015-02-24 11:14:45 -0800 NaN Pacific Time (US & Canada) ", - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
tweet_idairline_sentimentairline_sentiment_confidencenegativereasonnegativereason_confidenceairlineairline_sentiment_goldnamenegativereason_goldretweet_counttexttweet_coordtweet_createdtweet_locationuser_timezone
0570306133677760513neutral1.0000NaNNaNVirgin AmericaNaNcairdinNaN0@VirginAmerica What @dhepburn said.NaN2015-02-24 11:35:52 -0800NaNEastern Time (US & Canada)
1570301130888122368positive0.3486NaN0.0000Virgin AmericaNaNjnardinoNaN0@VirginAmerica plus you've added commercials t...NaN2015-02-24 11:15:59 -0800NaNPacific Time (US & Canada)
2570301083672813571neutral0.6837NaNNaNVirgin AmericaNaNyvonnalynnNaN0@VirginAmerica I didn't today... Must mean I n...NaN2015-02-24 11:15:48 -0800Lets PlayCentral Time (US & Canada)
3570301031407624196negative1.0000Bad Flight0.7033Virgin AmericaNaNjnardinoNaN0@VirginAmerica it's really aggressive to blast...NaN2015-02-24 11:15:36 -0800NaNPacific Time (US & Canada)
4570300817074462722negative1.0000Can't Tell1.0000Virgin AmericaNaNjnardinoNaN0@VirginAmerica and it's a really big bad thing...NaN2015-02-24 11:14:45 -0800NaNPacific Time (US & Canada)
\n
" - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "wnZDU5kUJrUT" - }, - "source": [ - "### Exploring features" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 297 - }, - "id": "8iEEuqAuJrUT", - "pycharm": { - "name": "#%%\n" + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 513 + }, + "id": "QwFJPG55JrUT", + "pycharm": { + "name": "#%%\n" + }, + "outputId": "9d8b44f8-f467-484f-c72c-d50e5072e2dc" + }, + "source": [ + "!curl https://raw.githubusercontent.com/dipikabaad/Sentiment_Classification_with_RNN/master/Tweets.csv --create-dirs -o .pytorch/tweets/tweets.csv\n", + "!mkdir checkpoint\n", + "df = pd.read_csv('.pytorch/tweets/tweets.csv')\n", + "df.head()" + ], + "execution_count": 2, + "outputs": [ + { + "output_type": "stream", + "text": [ + " % Total % Received % Xferd Average Speed Time Time Time Current\n", + " Dload Upload Total Spent Left Speed\n", + "100 3341k 100 3341k 0 0 9827k 0 --:--:-- --:--:-- --:--:-- 9827k\n", + "mkdir: cannot create directory ‘checkpoint’: File exists\n" + ], + "name": "stdout" + }, + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
tweet_idairline_sentimentairline_sentiment_confidencenegativereasonnegativereason_confidenceairlineairline_sentiment_goldnamenegativereason_goldretweet_counttexttweet_coordtweet_createdtweet_locationuser_timezone
0570306133677760513neutral1.0000NaNNaNVirgin AmericaNaNcairdinNaN0@VirginAmerica What @dhepburn said.NaN2015-02-24 11:35:52 -0800NaNEastern Time (US & Canada)
1570301130888122368positive0.3486NaN0.0000Virgin AmericaNaNjnardinoNaN0@VirginAmerica plus you've added commercials t...NaN2015-02-24 11:15:59 -0800NaNPacific Time (US & Canada)
2570301083672813571neutral0.6837NaNNaNVirgin AmericaNaNyvonnalynnNaN0@VirginAmerica I didn't today... Must mean I n...NaN2015-02-24 11:15:48 -0800Lets PlayCentral Time (US & Canada)
3570301031407624196negative1.0000Bad Flight0.7033Virgin AmericaNaNjnardinoNaN0@VirginAmerica it's really aggressive to blast...NaN2015-02-24 11:15:36 -0800NaNPacific Time (US & Canada)
4570300817074462722negative1.0000Can't Tell1.0000Virgin AmericaNaNjnardinoNaN0@VirginAmerica and it's a really big bad thing...NaN2015-02-24 11:14:45 -0800NaNPacific Time (US & Canada)
\n", + "
" + ], + "text/plain": [ + " tweet_id ... user_timezone\n", + "0 570306133677760513 ... Eastern Time (US & Canada)\n", + "1 570301130888122368 ... Pacific Time (US & Canada)\n", + "2 570301083672813571 ... Central Time (US & Canada)\n", + "3 570301031407624196 ... Pacific Time (US & Canada)\n", + "4 570300817074462722 ... Pacific Time (US & Canada)\n", + "\n", + "[5 rows x 15 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 2 + } + ] }, - "outputId": "05320e99-cc59-4a30-8d9a-a6a6843ae1b1" - }, - "source": [ - "df.describe()" - ], - "execution_count": 3, - "outputs": [ { - "data": { - "text/plain": " tweet_id airline_sentiment_confidence negativereason_confidence \\\ncount 1.464000e+04 14640.000000 10522.000000 \nmean 5.692184e+17 0.900169 0.638298 \nstd 7.791112e+14 0.162830 0.330440 \nmin 5.675883e+17 0.335000 0.000000 \n25% 5.685592e+17 0.692300 0.360600 \n50% 5.694779e+17 1.000000 0.670600 \n75% 5.698905e+17 1.000000 1.000000 \nmax 5.703106e+17 1.000000 1.000000 \n\n retweet_count \ncount 14640.000000 \nmean 0.082650 \nstd 0.745778 \nmin 0.000000 \n25% 0.000000 \n50% 0.000000 \n75% 0.000000 \nmax 44.000000 ", - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
tweet_idairline_sentiment_confidencenegativereason_confidenceretweet_count
count1.464000e+0414640.00000010522.00000014640.000000
mean5.692184e+170.9001690.6382980.082650
std7.791112e+140.1628300.3304400.745778
min5.675883e+170.3350000.0000000.000000
25%5.685592e+170.6923000.3606000.000000
50%5.694779e+171.0000000.6706000.000000
75%5.698905e+171.0000001.0000000.000000
max5.703106e+171.0000001.00000044.000000
\n
" - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "pLQm2ZkvJrUU", - "pycharm": { - "name": "#%% md\n" - } - }, - "source": [] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 224 + "cell_type": "markdown", + "metadata": { + "id": "wnZDU5kUJrUT" + }, + "source": [ + "### Exploring features" + ] }, - "id": "HLQhe0zgJrUU", - "pycharm": { - "name": "#%%\n" - }, - "outputId": "63e51aa9-dfd7-4211-f7b4-14617a18591f" - }, - "source": [ - "df.groupby('airline_sentiment').describe()" - ], - "execution_count": 4, - "outputs": [ { - "data": { - "text/plain": " tweet_id \\\n count mean std min \nairline_sentiment \nnegative 9178.0 5.692602e+17 7.572474e+14 5.675900e+17 \nneutral 3099.0 5.691841e+17 8.068405e+14 5.675883e+17 \npositive 2363.0 5.691006e+17 8.112476e+14 5.676555e+17 \n\n \\\n 25% 50% 75% max \nairline_sentiment \nnegative 5.686511e+17 5.695355e+17 5.698798e+17 5.703106e+17 \nneutral 5.684852e+17 5.693080e+17 5.699305e+17 5.703093e+17 \npositive 5.684331e+17 5.691980e+17 5.698788e+17 5.703093e+17 \n\n airline_sentiment_confidence ... \\\n count mean ... \nairline_sentiment ... \nnegative 9178.0 0.933365 ... \nneutral 3099.0 0.823303 ... \npositive 2363.0 0.872039 ... \n\n negativereason_confidence retweet_count \\\n 75% max count mean \nairline_sentiment \nnegative 1.0 1.0 9178.0 0.093375 \nneutral 0.0 0.0 3099.0 0.060987 \npositive 0.0 0.0 2363.0 0.069403 \n\n \n std min 25% 50% 75% max \nairline_sentiment \nnegative 0.792865 0.0 0.0 0.0 0.0 44.0 \nneutral 0.658037 0.0 0.0 0.0 0.0 28.0 \npositive 0.659914 0.0 0.0 0.0 0.0 22.0 \n\n[3 rows x 32 columns]", - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
tweet_idairline_sentiment_confidence...negativereason_confidenceretweet_count
countmeanstdmin25%50%75%maxcountmean...75%maxcountmeanstdmin25%50%75%max
airline_sentiment
negative9178.05.692602e+177.572474e+145.675900e+175.686511e+175.695355e+175.698798e+175.703106e+179178.00.933365...1.01.09178.00.0933750.7928650.00.00.00.044.0
neutral3099.05.691841e+178.068405e+145.675883e+175.684852e+175.693080e+175.699305e+175.703093e+173099.00.823303...0.00.03099.00.0609870.6580370.00.00.00.028.0
positive2363.05.691006e+178.112476e+145.676555e+175.684331e+175.691980e+175.698788e+175.703093e+172363.00.872039...0.00.02363.00.0694030.6599140.00.00.00.022.0
\n

3 rows × 32 columns

\n
" - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "mgpw8FCZJrUV", - "pycharm": { - "name": "#%%\n" + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 297 + }, + "id": "8iEEuqAuJrUT", + "pycharm": { + "name": "#%%\n" + }, + "outputId": "2ba79036-b670-4547-90dd-e12bc2c63875" + }, + "source": [ + "df.describe()" + ], + "execution_count": 3, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
tweet_idairline_sentiment_confidencenegativereason_confidenceretweet_count
count1.464000e+0414640.00000010522.00000014640.000000
mean5.692184e+170.9001690.6382980.082650
std7.791112e+140.1628300.3304400.745778
min5.675883e+170.3350000.0000000.000000
25%5.685592e+170.6923000.3606000.000000
50%5.694779e+171.0000000.6706000.000000
75%5.698905e+171.0000001.0000000.000000
max5.703106e+171.0000001.00000044.000000
\n", + "
" + ], + "text/plain": [ + " tweet_id ... retweet_count\n", + "count 1.464000e+04 ... 14640.000000\n", + "mean 5.692184e+17 ... 0.082650\n", + "std 7.791112e+14 ... 0.745778\n", + "min 5.675883e+17 ... 0.000000\n", + "25% 5.685592e+17 ... 0.000000\n", + "50% 5.694779e+17 ... 0.000000\n", + "75% 5.698905e+17 ... 0.000000\n", + "max 5.703106e+17 ... 44.000000\n", + "\n", + "[8 rows x 4 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 3 + } + ] }, - "outputId": "2371410f-3ede-46f3-bf70-b5139eaad687" - }, - "source": [ - "df.info()" - ], - "execution_count": 5, - "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "RangeIndex: 14640 entries, 0 to 14639\n", - "Data columns (total 15 columns):\n", - " # Column Non-Null Count Dtype \n", - "--- ------ -------------- ----- \n", - " 0 tweet_id 14640 non-null int64 \n", - " 1 airline_sentiment 14640 non-null object \n", - " 2 airline_sentiment_confidence 14640 non-null float64\n", - " 3 negativereason 9178 non-null object \n", - " 4 negativereason_confidence 10522 non-null float64\n", - " 5 airline 14640 non-null object \n", - " 6 airline_sentiment_gold 40 non-null object \n", - " 7 name 14640 non-null object \n", - " 8 negativereason_gold 32 non-null object \n", - " 9 retweet_count 14640 non-null int64 \n", - " 10 text 14640 non-null object \n", - " 11 tweet_coord 1019 non-null object \n", - " 12 tweet_created 14640 non-null object \n", - " 13 tweet_location 9907 non-null object \n", - " 14 user_timezone 9820 non-null object \n", - "dtypes: float64(2), int64(2), object(11)\n", - "memory usage: 1.7+ MB\n" - ] - } - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "6oGU6704JrUV", - "pycharm": { - "name": "#%%\n" + "cell_type": "markdown", + "metadata": { + "id": "pLQm2ZkvJrUU", + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "" + ] }, - "outputId": "0dd653d8-557c-4d35-d020-01355edbc66b" - }, - "source": [ - "df.isnull().sum()" - ], - "execution_count": 6, - "outputs": [ { - "data": { - "text/plain": "tweet_id 0\nairline_sentiment 0\nairline_sentiment_confidence 0\nnegativereason 5462\nnegativereason_confidence 4118\nairline 0\nairline_sentiment_gold 14600\nname 0\nnegativereason_gold 14608\nretweet_count 0\ntext 0\ntweet_coord 13621\ntweet_created 0\ntweet_location 4733\nuser_timezone 4820\ndtype: int64" - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 69 + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 224 + }, + "id": "HLQhe0zgJrUU", + "pycharm": { + "name": "#%%\n" + }, + "outputId": "0f9aab2b-3fa1-44ff-8df1-986582b55864" + }, + "source": [ + "df.groupby('airline_sentiment').describe()" + ], + "execution_count": 4, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
tweet_idairline_sentiment_confidencenegativereason_confidenceretweet_count
countmeanstdmin25%50%75%maxcountmeanstdmin25%50%75%maxcountmeanstdmin25%50%75%maxcountmeanstdmin25%50%75%max
airline_sentiment
negative9178.05.692602e+177.572474e+145.675900e+175.686511e+175.695355e+175.698798e+175.703106e+179178.00.9333650.1381090.33941.000001.0001.01.09178.00.7317690.2382760.31220.64530.68061.01.09178.00.0933750.7928650.00.00.00.044.0
neutral3099.05.691841e+178.068405e+145.675883e+175.684852e+175.693080e+175.699305e+175.703093e+173099.00.8233030.1855940.33500.666050.9161.01.01014.00.0000000.0000000.00000.00000.00000.00.03099.00.0609870.6580370.00.00.00.028.0
positive2363.05.691006e+178.112476e+145.676555e+175.684331e+175.691980e+175.698788e+175.703093e+172363.00.8720390.1794780.33560.677501.0001.01.0330.00.0000000.0000000.00000.00000.00000.00.02363.00.0694030.6599140.00.00.00.022.0
\n", + "
" + ], + "text/plain": [ + " tweet_id ... retweet_count \n", + " count mean std ... 50% 75% max\n", + "airline_sentiment ... \n", + "negative 9178.0 5.692602e+17 7.572474e+14 ... 0.0 0.0 44.0\n", + "neutral 3099.0 5.691841e+17 8.068405e+14 ... 0.0 0.0 28.0\n", + "positive 2363.0 5.691006e+17 8.112476e+14 ... 0.0 0.0 22.0\n", + "\n", + "[3 rows x 32 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 4 + } + ] }, - "id": "QFUejj4jJrUV", - "pycharm": { - "name": "#%%\n" - }, - "outputId": "d858a7d0-845e-4e02-936c-30dc8fa0aeb6" - }, - "source": [ - "df[df['text'].str.len() < 2]" - ], - "execution_count": 7, - "outputs": [ { - "data": { - "text/plain": "Empty DataFrame\nColumns: [tweet_id, airline_sentiment, airline_sentiment_confidence, negativereason, negativereason_confidence, airline, airline_sentiment_gold, name, negativereason_gold, retweet_count, text, tweet_coord, tweet_created, tweet_location, user_timezone]\nIndex: []", - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
tweet_idairline_sentimentairline_sentiment_confidencenegativereasonnegativereason_confidenceairlineairline_sentiment_goldnamenegativereason_goldretweet_counttexttweet_coordtweet_createdtweet_locationuser_timezone
\n
" - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 796 - }, - "id": "yZ6t1ICXJrUW", - "pycharm": { - "name": "#%%\n" + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "mgpw8FCZJrUV", + "pycharm": { + "name": "#%%\n" + }, + "outputId": "4f3f2daf-ae91-48e9-fffd-642d6ceb8c47" + }, + "source": [ + "df.info()" + ], + "execution_count": 5, + "outputs": [ + { + "output_type": "stream", + "text": [ + "\n", + "RangeIndex: 14640 entries, 0 to 14639\n", + "Data columns (total 15 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 tweet_id 14640 non-null int64 \n", + " 1 airline_sentiment 14640 non-null object \n", + " 2 airline_sentiment_confidence 14640 non-null float64\n", + " 3 negativereason 9178 non-null object \n", + " 4 negativereason_confidence 10522 non-null float64\n", + " 5 airline 14640 non-null object \n", + " 6 airline_sentiment_gold 40 non-null object \n", + " 7 name 14640 non-null object \n", + " 8 negativereason_gold 32 non-null object \n", + " 9 retweet_count 14640 non-null int64 \n", + " 10 text 14640 non-null object \n", + " 11 tweet_coord 1019 non-null object \n", + " 12 tweet_created 14640 non-null object \n", + " 13 tweet_location 9907 non-null object \n", + " 14 user_timezone 9820 non-null object \n", + "dtypes: float64(2), int64(2), object(11)\n", + "memory usage: 1.7+ MB\n" + ], + "name": "stdout" + } + ] }, - "outputId": "2786e635-2834-4f3a-ad25-1fd225171bb0" - }, - "source": [ - "df[df.duplicated('text')]" - ], - "execution_count": 8, - "outputs": [ { - "data": { - "text/plain": " tweet_id airline_sentiment airline_sentiment_confidence \\\n331 568605449659895808 positive 0.6482 \n515 570299889688702976 positive 0.6634 \n1477 569705563287896064 positive 0.6629 \n1864 569545805826166784 positive 0.3512 \n1938 569513703722393601 positive 1.0000 \n... ... ... ... \n13995 569680231012773888 negative 1.0000 \n14386 569622568459636736 negative 1.0000 \n14392 569621879633391616 negative 1.0000 \n14543 569601363799359488 negative 1.0000 \n14556 569600137296633856 positive 1.0000 \n\n negativereason negativereason_confidence airline \\\n331 NaN NaN Virgin America \n515 NaN NaN United \n1477 NaN NaN United \n1864 NaN 0.0000 United \n1938 NaN NaN United \n... ... ... ... \n13995 Customer Service Issue 1.0000 American \n14386 Customer Service Issue 0.6398 American \n14392 Customer Service Issue 1.0000 American \n14543 Flight Attendant Complaints 1.0000 American \n14556 NaN NaN American \n\n airline_sentiment_gold name negativereason_gold \\\n331 NaN SuuperG NaN \n515 NaN nydia376 NaN \n1477 NaN tiamariaroxs NaN \n1864 NaN worldknits NaN \n1938 NaN Angry_VBK NaN \n... ... ... ... \n13995 NaN LBernieMeyer NaN \n14386 NaN SchrierCar NaN \n14392 NaN salitron78 NaN \n14543 NaN stevereasnors NaN \n14556 NaN douglaskgordon NaN \n\n retweet_count text \\\n331 0 @VirginAmerica Thanks! \n515 0 @united thanks \n1477 0 @united thank you! \n1864 0 @united thank you \n1938 0 @united thank you \n... ... ... \n13995 0 @AmericanAir 800 number will not even let you... \n14386 0 @AmericanAir I want to speak to a human being!... \n14392 0 @AmericanAir no response to DM or email yet. ... \n14543 0 @AmericanAir should reconsider #usairways acqu... \n14556 0 @AmericanAir Thank you.....you do the same!! \n\n tweet_coord tweet_created tweet_location \\\n331 NaN 2015-02-19 18:57:58 -0800 Wandering So-Cal-ian \n515 NaN 2015-02-24 11:11:04 -0800 USA \n1477 NaN 2015-02-22 19:49:25 -0800 NaN \n1864 NaN 2015-02-22 09:14:36 -0800 Fredericksburg, VA \n1938 NaN 2015-02-22 07:07:02 -0800 NaN \n... ... ... ... \n13995 NaN 2015-02-22 18:08:45 -0800 NaN \n14386 NaN 2015-02-22 14:19:38 -0800 NaN \n14392 NaN 2015-02-22 14:16:53 -0800 on @TheJR \n14543 NaN 2015-02-22 12:55:22 -0800 Los Angeles \n14556 NaN 2015-02-22 12:50:30 -0800 Caribbean, New York and Miami. \n\n user_timezone \n331 Pacific Time (US & Canada) \n515 NaN \n1477 NaN \n1864 Eastern Time (US & Canada) \n1938 NaN \n... ... \n13995 NaN \n14386 NaN \n14392 Seoul \n14543 Pacific Time (US & Canada) \n14556 Indiana (East) \n\n[213 rows x 15 columns]", - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
tweet_idairline_sentimentairline_sentiment_confidencenegativereasonnegativereason_confidenceairlineairline_sentiment_goldnamenegativereason_goldretweet_counttexttweet_coordtweet_createdtweet_locationuser_timezone
331568605449659895808positive0.6482NaNNaNVirgin AmericaNaNSuuperGNaN0@VirginAmerica Thanks!NaN2015-02-19 18:57:58 -0800Wandering So-Cal-ianPacific Time (US & Canada)
515570299889688702976positive0.6634NaNNaNUnitedNaNnydia376NaN0@united thanksNaN2015-02-24 11:11:04 -0800USANaN
1477569705563287896064positive0.6629NaNNaNUnitedNaNtiamariaroxsNaN0@united thank you!NaN2015-02-22 19:49:25 -0800NaNNaN
1864569545805826166784positive0.3512NaN0.0000UnitedNaNworldknitsNaN0@united thank youNaN2015-02-22 09:14:36 -0800Fredericksburg, VAEastern Time (US & Canada)
1938569513703722393601positive1.0000NaNNaNUnitedNaNAngry_VBKNaN0@united thank youNaN2015-02-22 07:07:02 -0800NaNNaN
................................................
13995569680231012773888negative1.0000Customer Service Issue1.0000AmericanNaNLBernieMeyerNaN0@AmericanAir 800 number will not even let you...NaN2015-02-22 18:08:45 -0800NaNNaN
14386569622568459636736negative1.0000Customer Service Issue0.6398AmericanNaNSchrierCarNaN0@AmericanAir I want to speak to a human being!...NaN2015-02-22 14:19:38 -0800NaNNaN
14392569621879633391616negative1.0000Customer Service Issue1.0000AmericanNaNsalitron78NaN0@AmericanAir no response to DM or email yet. ...NaN2015-02-22 14:16:53 -0800on @TheJRSeoul
14543569601363799359488negative1.0000Flight Attendant Complaints1.0000AmericanNaNstevereasnorsNaN0@AmericanAir should reconsider #usairways acqu...NaN2015-02-22 12:55:22 -0800Los AngelesPacific Time (US & Canada)
14556569600137296633856positive1.0000NaNNaNAmericanNaNdouglaskgordonNaN0@AmericanAir Thank you.....you do the same!!NaN2015-02-22 12:50:30 -0800Caribbean, New York and Miami.Indiana (East)
\n

213 rows × 15 columns

\n
" - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 69 + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "6oGU6704JrUV", + "pycharm": { + "name": "#%%\n" + }, + "outputId": "4e722407-3c6d-47de-8cb3-708662868096" + }, + "source": [ + "df.isnull().sum()" + ], + "execution_count": 6, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "tweet_id 0\n", + "airline_sentiment 0\n", + "airline_sentiment_confidence 0\n", + "negativereason 5462\n", + "negativereason_confidence 4118\n", + "airline 0\n", + "airline_sentiment_gold 14600\n", + "name 0\n", + "negativereason_gold 14608\n", + "retweet_count 0\n", + "text 0\n", + "tweet_coord 13621\n", + "tweet_created 0\n", + "tweet_location 4733\n", + "user_timezone 4820\n", + "dtype: int64" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 6 + } + ] }, - "id": "HHfQVsljJrUW", - "pycharm": { - "name": "#%%\n" - }, - "outputId": "78afee3d-9851-43cd-eb5c-d05f1fc2a37d" - }, - "source": [ - "df.drop_duplicates('text', inplace=True)\n", - "df[df.duplicated('text')]" - ], - "execution_count": 9, - "outputs": [ { - "data": { - "text/plain": "Empty DataFrame\nColumns: [tweet_id, airline_sentiment, airline_sentiment_confidence, negativereason, negativereason_confidence, airline, airline_sentiment_gold, name, negativereason_gold, retweet_count, text, tweet_coord, tweet_created, tweet_location, user_timezone]\nIndex: []", - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
tweet_idairline_sentimentairline_sentiment_confidencenegativereasonnegativereason_confidenceairlineairline_sentiment_goldnamenegativereason_goldretweet_counttexttweet_coordtweet_createdtweet_locationuser_timezone
\n
" - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 331 - }, - "id": "y_GcsS8iJrUX", - "pycharm": { - "name": "#%%\n" + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 69 + }, + "id": "QFUejj4jJrUV", + "pycharm": { + "name": "#%%\n" + }, + "outputId": "12dcc85b-cfa3-4c0d-ca2f-2d40251f773b" + }, + "source": [ + "df[df['text'].str.len() < 2]" + ], + "execution_count": 7, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
tweet_idairline_sentimentairline_sentiment_confidencenegativereasonnegativereason_confidenceairlineairline_sentiment_goldnamenegativereason_goldretweet_counttexttweet_coordtweet_createdtweet_locationuser_timezone
\n", + "
" + ], + "text/plain": [ + "Empty DataFrame\n", + "Columns: [tweet_id, airline_sentiment, airline_sentiment_confidence, negativereason, negativereason_confidence, airline, airline_sentiment_gold, name, negativereason_gold, retweet_count, text, tweet_coord, tweet_created, tweet_location, user_timezone]\n", + "Index: []" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 7 + } + ] }, - "outputId": "0d4f982e-28d1-4338-81b8-a989869fa8bd" - }, - "source": [ - "df[['airline_sentiment', 'text']].groupby('airline_sentiment').count().plot.bar()" - ], - "execution_count": 10, - "outputs": [ { - "data": { - "text/plain": "" - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 796 + }, + "id": "yZ6t1ICXJrUW", + "pycharm": { + "name": "#%%\n" + }, + "outputId": "63d0c017-6780-4b79-aed9-e20dd8ee25a3" + }, + "source": [ + "df[df.duplicated('text')]" + ], + "execution_count": 8, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
tweet_idairline_sentimentairline_sentiment_confidencenegativereasonnegativereason_confidenceairlineairline_sentiment_goldnamenegativereason_goldretweet_counttexttweet_coordtweet_createdtweet_locationuser_timezone
331568605449659895808positive0.6482NaNNaNVirgin AmericaNaNSuuperGNaN0@VirginAmerica Thanks!NaN2015-02-19 18:57:58 -0800Wandering So-Cal-ianPacific Time (US & Canada)
515570299889688702976positive0.6634NaNNaNUnitedNaNnydia376NaN0@united thanksNaN2015-02-24 11:11:04 -0800USANaN
1477569705563287896064positive0.6629NaNNaNUnitedNaNtiamariaroxsNaN0@united thank you!NaN2015-02-22 19:49:25 -0800NaNNaN
1864569545805826166784positive0.3512NaN0.0000UnitedNaNworldknitsNaN0@united thank youNaN2015-02-22 09:14:36 -0800Fredericksburg, VAEastern Time (US & Canada)
1938569513703722393601positive1.0000NaNNaNUnitedNaNAngry_VBKNaN0@united thank youNaN2015-02-22 07:07:02 -0800NaNNaN
................................................
13995569680231012773888negative1.0000Customer Service Issue1.0000AmericanNaNLBernieMeyerNaN0@AmericanAir 800 number will not even let you...NaN2015-02-22 18:08:45 -0800NaNNaN
14386569622568459636736negative1.0000Customer Service Issue0.6398AmericanNaNSchrierCarNaN0@AmericanAir I want to speak to a human being!...NaN2015-02-22 14:19:38 -0800NaNNaN
14392569621879633391616negative1.0000Customer Service Issue1.0000AmericanNaNsalitron78NaN0@AmericanAir no response to DM or email yet. ...NaN2015-02-22 14:16:53 -0800on @TheJRSeoul
14543569601363799359488negative1.0000Flight Attendant Complaints1.0000AmericanNaNstevereasnorsNaN0@AmericanAir should reconsider #usairways acqu...NaN2015-02-22 12:55:22 -0800Los AngelesPacific Time (US & Canada)
14556569600137296633856positive1.0000NaNNaNAmericanNaNdouglaskgordonNaN0@AmericanAir Thank you.....you do the same!!NaN2015-02-22 12:50:30 -0800Caribbean, New York and Miami.Indiana (East)
\n", + "

213 rows × 15 columns

\n", + "
" + ], + "text/plain": [ + " tweet_id ... user_timezone\n", + "331 568605449659895808 ... Pacific Time (US & Canada)\n", + "515 570299889688702976 ... NaN\n", + "1477 569705563287896064 ... NaN\n", + "1864 569545805826166784 ... Eastern Time (US & Canada)\n", + "1938 569513703722393601 ... NaN\n", + "... ... ... ...\n", + "13995 569680231012773888 ... NaN\n", + "14386 569622568459636736 ... NaN\n", + "14392 569621879633391616 ... Seoul\n", + "14543 569601363799359488 ... Pacific Time (US & Canada)\n", + "14556 569600137296633856 ... Indiana (East)\n", + "\n", + "[213 rows x 15 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 8 + } + ] }, { - "data": { - "text/plain": "
", - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYAAAAEsCAYAAADKGWQqAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAGEhJREFUeJzt3X20XXWd3/H3RxKJAgJCdChBg8roAIPghCeZoY5YEK3AVFEEFFx0xRYdqZ2qwVpxRKdxtDLaDlaW4sIRRIqOUrQ8FPBhZATCw2AAGVBBrlCJQDBBgzx8+8fZ0Uu8yT03JGffm9/7tdZZZ+/f/u1zvocbzufsvX9771QVkqT2PKXvAiRJ/TAAJKlRBoAkNcoAkKRGGQCS1CgDQJIaZQBIUqMMAElqlAEgSY2a1XcB67L99tvX/Pnz+y5DkmaUa6+99udVNXeyftM6AObPn8+SJUv6LkOSZpQkdw7Tz11AktQoA0CSGmUASFKjpvUxAEl6sh555BHGxsZYtWpV36VscHPmzGHevHnMnj17vdY3ACRt0sbGxthqq62YP38+SfouZ4OpKu677z7GxsbYeeed1+s13AUkaZO2atUqtttuu03qyx8gCdttt92T2rIxACRt8ja1L//VnuznMgAkqVEeAxhn/qKv913CRnXH4lf3XYLUuw39//kw/18tX76cc845hxNPPHHqr3/HHVx55ZUcffTR61PeOrkFIEkb2fLlyzn99NPXa9077riDc845ZwNXNGAASNJGtmjRIn74wx+y55578q53vYuPfvSj7L333uyxxx6ccsopAFxzzTXssccerFq1ioceeojddtuNpUuXsmjRIr7zne+w5557ctppp23QutwFJEkb2eLFi1m6dCk33HADl1xyCeeffz5XX301VcVhhx3Gt7/9bQ488EAOO+ww3ve+9/GrX/2KY489lt13353FixfzsY99jAsvvHCD12UASNIIXXLJJVxyySXstddeAKxcuZLbbruNAw88kPe///3svffezJkzh09+8pMbvRYDQJJGqKo4+eSTeetb3/o7y+6//35WrlzJI488wqpVq9hiiy02ai0eA5CkjWyrrbZixYoVABxyyCGceeaZrFy5EoCf/vSn3HvvvQAsXLiQU089lWOOOYb3vOc9v7PuhuYWgKSm9DEcervttuOA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\n" - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "qRNRGUr1JrUX" - }, - "source": [ - "### Preprocessing Data" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "8_Sbn3-qJrUX" - }, - "source": [ - "#### Steps\n", - "1. One-hot encode output\n", - "2. Replace tags and metion with a unique symbol\n", - "3. Replace `emoji` and `emoticons` with their meaning\n", - "4. Remove stop-words\n", - "5. Remove punctuation and tokenize sentences\n", - "6. Stemming each token" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 204 + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 69 + }, + "id": "HHfQVsljJrUW", + "pycharm": { + "name": "#%%\n" + }, + "outputId": "6f4c7d6e-3ced-4f97-b63b-20d0c97a1c1c" + }, + "source": [ + "df.drop_duplicates('text', inplace=True)\n", + "df[df.duplicated('text')]" + ], + "execution_count": 9, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
tweet_idairline_sentimentairline_sentiment_confidencenegativereasonnegativereason_confidenceairlineairline_sentiment_goldnamenegativereason_goldretweet_counttexttweet_coordtweet_createdtweet_locationuser_timezone
\n", + "
" + ], + "text/plain": [ + "Empty DataFrame\n", + "Columns: [tweet_id, airline_sentiment, airline_sentiment_confidence, negativereason, negativereason_confidence, airline, airline_sentiment_gold, name, negativereason_gold, retweet_count, text, tweet_coord, tweet_created, tweet_location, user_timezone]\n", + "Index: []" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 9 + } + ] }, - "id": "iy0yXqzYJrUY", - "pycharm": { - "name": "#%%\n" - }, - "outputId": "5aeb94d4-41e4-47e3-b489-c58100b3fd1b" - }, - "source": [ - "\n", - "condlist = [\n", - " df['airline_sentiment'].str.match('neutral'),\n", - " df['airline_sentiment'].str.match('positive'),\n", - " df['airline_sentiment'].str.match('negative')\n", - "]\n", - "df['sentiment'] = np.select(condlist, [0,1,2])\n", - "d = df[['text', 'sentiment']]\n", - "d.head()" - ], - "execution_count": 11, - "outputs": [ { - "data": { - "text/plain": " text sentiment\n0 @VirginAmerica What @dhepburn said. 0\n1 @VirginAmerica plus you've added commercials t... 1\n2 @VirginAmerica I didn't today... Must mean I n... 0\n3 @VirginAmerica it's really aggressive to blast... 2\n4 @VirginAmerica and it's a really big bad thing... 2", - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
textsentiment
0@VirginAmerica What @dhepburn said.0
1@VirginAmerica plus you've added commercials t...1
2@VirginAmerica I didn't today... Must mean I n...0
3@VirginAmerica it's really aggressive to blast...2
4@VirginAmerica and it's a really big bad thing...2
\n
" - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 504 - }, - "id": "xHC-GTGIJrUY", - "pycharm": { - "name": "#%%\n" + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 331 + }, + "id": "y_GcsS8iJrUX", + "pycharm": { + "name": "#%%\n" + }, + "outputId": "9d7dd307-2055-4be0-c01e-9a63b37d2433" + }, + "source": [ + "df[['airline_sentiment', 'text']].groupby('airline_sentiment').count().plot.bar()" + ], + "execution_count": 10, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 10 + }, + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] }, - "outputId": "543823a1-6555-4cfb-ab1d-00ff9ca07b1f" - }, - "source": [ - "def emoji_helper(text):\n", - " clean_mean = lambda x: x.replace('-', '_').replace(':', ' ')\n", - " for emoti in emot.emo_unicode.EMOTICONS:\n", - " if emoti in text:\n", - " text = text.replace(emoti, clean_mean(emot.emo_unicode.EMOTICONS.get(emoti, '')))\n", - "\n", - " for emoti in emot.emo_unicode.UNICODE_EMO:\n", - " if emoti in text:\n", - " text = text.replace(emoti, clean_mean(emot.emo_unicode.UNICODE_EMO.get(emoti, '')))\n", - "\n", - " for emoti in emot.emo_unicode.EMOTICONS_EMO:\n", - " if emoti in text:\n", - " text = text.replace(emoti, clean_mean(emot.emo_unicode.EMOTICONS_EMO.get(emoti, '')).replace(' ','_'))\n", - " return text\n", - "\n", - "porter_stemmer = PorterStemmer()\n", - "\n", - "\n", - "def preprocess(x):\n", - " return [porter_stemmer.stem(word) for word in\n", - " simple_preprocess(remove_stopwords(emoji_helper(re.sub(r'\\s*([@#][\\w_-]+)', '', str(x)))), deacc=True)\n", - " ]\n", - "\n", - "d['text'] = d['text'].apply(func=lambda x:preprocess(x))\n", - "\n", - "d" - ], - "execution_count": 12, - "outputs": [ { - "name": "stderr", - "output_type": "stream", - "text": [ - "c:\\program files\\python37\\lib\\site-packages\\ipykernel_launcher.py:24: SettingWithCopyWarning: \n", - "A value is trying to be set on a copy of a slice from a DataFrame.\n", - "Try using .loc[row_indexer,col_indexer] = value instead\n", - "\n", - "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n" - ] + "cell_type": "markdown", + "metadata": { + "id": "qRNRGUr1JrUX" + }, + "source": [ + "### Preprocessing Data" + ] }, { - "data": { - "text/plain": " text sentiment\n0 [what, said] 0\n1 [plu, you, ve, ad, commerci, experi, tacki] 1\n2 [didn, todai, must, mean, need, trip] 0\n3 [it, aggress, blast, obnoxi, entertain, guest,... 2\n4 [it, big, bad, thing] 2\n... ... ...\n14635 [thank, got, differ, flight, chicago] 1\n14636 [leav, minut, late, flight, no, warn, commun, ... 2\n14637 [pleas, bring, american, airlin] 0\n14638 [monei, chang, flight, don, answer, phone, ani... 2\n14639 [ppl, need, know, seat, flight, plz, standbi, ... 0\n\n[14427 rows x 2 columns]", - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
textsentiment
0[what, said]0
1[plu, you, ve, ad, commerci, experi, tacki]1
2[didn, todai, must, mean, need, trip]0
3[it, aggress, blast, obnoxi, entertain, guest,...2
4[it, big, bad, thing]2
.........
14635[thank, got, differ, flight, chicago]1
14636[leav, minut, late, flight, no, warn, commun, ...2
14637[pleas, bring, american, airlin]0
14638[monei, chang, flight, don, answer, phone, ani...2
14639[ppl, need, know, seat, flight, plz, standbi, ...0
\n

14427 rows × 2 columns

\n
" - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "V1lsg8zVJrUY" - }, - "source": [ - "#### Analyze review length\n", - "Here we remove the outliers" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "nE-zLQLWJrUZ", - "pycharm": { - "name": "#%%\n" + "cell_type": "markdown", + "metadata": { + "id": "8_Sbn3-qJrUX" + }, + "source": [ + "#### Steps\n", + "1. One-hot encode output\n", + "2. Replace tags and metion with a unique symbol\n", + "3. Replace `emoji` and `emoticons` with their meaning\n", + "4. Remove stop-words\n", + "5. Remove punctuation and tokenize sentences\n", + "6. Stemming each token" + ] }, - "outputId": "d7854052-5447-4517-996f-fc8e90ab187f" - }, - "source": [ - "d['text'].str.len().describe()" - ], - "execution_count": 13, - "outputs": [ { - "data": { - "text/plain": "count 14427.000000\nmean 9.361128\nstd 4.221203\nmin 0.000000\n25% 6.000000\n50% 10.000000\n75% 12.000000\nmax 49.000000\nName: text, dtype: float64" - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 282 - }, - "id": "241NoGKyJrUZ", - "pycharm": { - "name": "#%%\n" + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "id": "iy0yXqzYJrUY", + "pycharm": { + "name": "#%%\n" + }, + "outputId": "d385cb7c-9d1c-4541-acab-89198582bc7e" + }, + "source": [ + "\n", + "condlist = [\n", + " df['airline_sentiment'].str.match('neutral'),\n", + " df['airline_sentiment'].str.match('positive'),\n", + " df['airline_sentiment'].str.match('negative')\n", + "]\n", + "df['sentiment'] = np.select(condlist, [0,1,2])\n", + "d = df[['text', 'sentiment']]\n", + "d.head()" + ], + "execution_count": 11, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
textsentiment
0@VirginAmerica What @dhepburn said.0
1@VirginAmerica plus you've added commercials t...1
2@VirginAmerica I didn't today... Must mean I n...0
3@VirginAmerica it's really aggressive to blast...2
4@VirginAmerica and it's a really big bad thing...2
\n", + "
" + ], + "text/plain": [ + " text sentiment\n", + "0 @VirginAmerica What @dhepburn said. 0\n", + "1 @VirginAmerica plus you've added commercials t... 1\n", + "2 @VirginAmerica I didn't today... Must mean I n... 0\n", + "3 @VirginAmerica it's really aggressive to blast... 2\n", + "4 @VirginAmerica and it's a really big bad thing... 2" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 11 + } + ] }, - "outputId": "c0860369-4e53-41cf-e1d9-1a66ad0f9ff6" - }, - "source": [ - "d['text'].str.len().hist()" - ], - "execution_count": 14, - "outputs": [ { - "data": { - "text/plain": "" - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "id": "xHC-GTGIJrUY", + "pycharm": { + "name": "#%%\n" + }, + "outputId": "06bcb3ff-7a72-4dae-ee92-78f0ec643909" + }, + "source": [ + "def emoji_helper(text):\n", + " clean_mean = lambda x: x.replace('-', '_').replace(':', ' ')\n", + " for emoti in emot.emo_unicode.EMOTICONS:\n", + " if emoti in text:\n", + " text = text.replace(emoti, clean_mean(emot.emo_unicode.EMOTICONS.get(emoti, '')))\n", + "\n", + " for emoti in emot.emo_unicode.UNICODE_EMO:\n", + " if emoti in text:\n", + " text = text.replace(emoti, clean_mean(emot.emo_unicode.UNICODE_EMO.get(emoti, '')))\n", + "\n", + " for emoti in emot.emo_unicode.EMOTICONS_EMO:\n", + " if emoti in text:\n", + " text = text.replace(emoti, clean_mean(emot.emo_unicode.EMOTICONS_EMO.get(emoti, '')).replace(' ','_'))\n", + " return text\n", + "\n", + "porter_stemmer = PorterStemmer()\n", + "\n", + "\n", + "def preprocess(x):\n", + " return [porter_stemmer.stem(word) for word in\n", + " simple_preprocess(remove_stopwords(emoji_helper(re.sub(r'\\s*([@#][\\w_-]+)', '', str(x)))), deacc=True)\n", + " ]\n", + "\n", + "d['text'] = d['text'].apply(func=lambda x:preprocess(x))\n", + "\n", + "d" + ], + "execution_count": 12, + "outputs": [ + { + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.7/dist-packages/ipykernel_launcher.py:24: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n" + ], + "name": "stderr" + }, + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
textsentiment
0[what, said]0
1[plu, you, ve, ad, commerci, experi, tacki]1
2[didn, todai, must, mean, need, trip]0
3[it, aggress, blast, obnoxi, entertain, guest,...2
4[it, big, bad, thing]2
.........
14635[thank, got, differ, flight, chicago]1
14636[leav, minut, late, flight, no, warn, commun, ...2
14637[pleas, bring, american, airlin]0
14638[monei, chang, flight, don, answer, phone, ani...2
14639[ppl, need, know, seat, flight, plz, standbi, ...0
\n", + "

14427 rows × 2 columns

\n", + "
" + ], + "text/plain": [ + " text sentiment\n", + "0 [what, said] 0\n", + "1 [plu, you, ve, ad, commerci, experi, tacki] 1\n", + "2 [didn, todai, must, mean, need, trip] 0\n", + "3 [it, aggress, blast, obnoxi, entertain, guest,... 2\n", + "4 [it, big, bad, thing] 2\n", + "... ... ...\n", + "14635 [thank, got, differ, flight, chicago] 1\n", + "14636 [leav, minut, late, flight, no, warn, commun, ... 2\n", + "14637 [pleas, bring, american, airlin] 0\n", + "14638 [monei, chang, flight, don, answer, phone, ani... 2\n", + "14639 [ppl, need, know, seat, flight, plz, standbi, ... 0\n", + "\n", + "[14427 rows x 2 columns]" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 12 + } + ] }, { - "data": { - "text/plain": "
", - "image/png": "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\n" - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 282 + "cell_type": "markdown", + "metadata": { + "id": "V1lsg8zVJrUY" + }, + "source": [ + "#### Analyze review length\n", + "Here we remove the outliers" + ] }, - "id": "YKCZ7SYYJrUZ", - "pycharm": { - "name": "#%%\n" - }, - "outputId": "3cf52832-2f44-41c1-f938-587360681a98" - }, - "source": [ - "d = d[ (2 < d['text'].str.len()) & (d['text'].str.len() < 24) ]\n", - "d['text'].str.len().hist()" - ], - "execution_count": 15, - "outputs": [ { - "data": { - "text/plain": "" - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "nE-zLQLWJrUZ", + "pycharm": { + "name": "#%%\n" + }, + "outputId": "dc2407f2-9249-433c-b836-7dcb20cceb01" + }, + "source": [ + "d['text'].str.len().describe()" + ], + "execution_count": 13, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "count 14427.000000\n", + "mean 9.361128\n", + "std 4.221203\n", + "min 0.000000\n", + "25% 6.000000\n", + "50% 10.000000\n", + "75% 12.000000\n", + "max 49.000000\n", + "Name: text, dtype: float64" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 13 + } + ] }, { - "data": { - "text/plain": "
", - "image/png": "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\n" - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "8FTBryPnJrUa", - "pycharm": { - "name": "#%% md\n" - } - }, - "source": [ - "### Creating vocab" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "j6jBsOu6JrUa", - "pycharm": { - "name": "#%%\n" - } - }, - "source": [ - "max_document_length = d['text'].str.len().max() # each sentence has until 100 words\n", - "max_size = 5000\n", - "Text = data.Field(batch_first=True, tokenize=lambda x: x, include_lengths=True, fix_length=max_document_length)\n", - "Label = data.Field(sequential=False, use_vocab=False, pad_token=None, unk_token=None)\n", - "fields = [('text', Text), ('labels', Label)]" - ], - "execution_count": 16, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "id": "241NoGKyJrUZ", + "pycharm": { + "name": "#%%\n" + }, + "outputId": "d948c451-8960-4cd4-b003-4bf33c618c33" + }, + "source": [ + "d['text'].str.len().hist()" + ], + "execution_count": 14, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 14 + }, + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] }, - "id": "DOIRUDjzJrUa", - "pycharm": { - "name": "#%%\n" + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 0 + }, + "id": "YKCZ7SYYJrUZ", + "pycharm": { + "name": "#%%\n" + }, + "outputId": "70c99c6c-39e2-4dc0-bc9d-6ea4386a4833" + }, + "source": [ + "d = d[ (2 < d['text'].str.len()) & (d['text'].str.len() < 24) ]\n", + "d['text'].str.len().hist()" + ], + "execution_count": 15, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 15 + }, + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [], + "needs_background": "light" + } + } + ] }, - "outputId": "06cf7729-0c1c-4052-dc0d-7938a9743b71" - }, - "source": [ - "class DataFrameDataset(data.Dataset):\n", - "\n", - " def __init__(self, df, text_field, label_field, is_test=False, **kwargs):\n", - " fields = [('text', text_field), ('labels', label_field)]\n", - " examples = []\n", - " for i, row in df.iterrows():\n", - " label = row.sentiment\n", - " text = row.text\n", - " examples.append(data.Example.fromlist([text, label], fields))\n", - "\n", - " super().__init__(examples, fields, **kwargs)\n", - "\n", - " @staticmethod\n", - " def sort_key(ex):\n", - " return len(ex.text)\n", - "\n", - " @classmethod\n", - " def splits(cls, text_field, label_field, train_df, test_df=None, **kwargs):\n", - " train_data, test_data = (None, None)\n", - "\n", - " if train_df is not None:\n", - " train_data = cls(train_df.copy(), text_field, label_field, **kwargs)\n", - " if test_df is not None:\n", - " test_data = cls(test_df.copy(), text_field, label_field, True, **kwargs)\n", - "\n", - " return tuple(d for d in (train_data, test_data) if d is not None)\n", - "test_size = 0.2 # split percentage to train\\validation data\n", - "X_train,X_test,y_train,y_test = train_test_split(d['text'].index,d['sentiment'], test_size=test_size, random_state=0, stratify=d['sentiment'])\n", - "train_df = d.loc[X_train.values]\n", - "test_df = d.loc[X_test.values]\n", - "train_ds, test_ds = DataFrameDataset.splits(\n", - " text_field=Text, label_field=Label, train_df=train_df, test_df=test_df)\n", - "vars(test_ds[0])" - ], - "execution_count": 17, - "outputs": [ { - "data": { - "text/plain": "{'text': ['rd', 'time', 'jamaica', 'volunt', 'risk', 'youth'], 'labels': 0}" - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "-rzlLLUsKDPJ" - }, - "source": [ - "### Checking how balance is our testset in comparison to trainset" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "8fU_1ta2JuSZ", - "outputId": "41425cf3-8ca7-437d-befe-fe2a4ef46cb8", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 173 - } - }, - "source": [ - "test_df.groupby('sentiment').count()" - ], - "execution_count": 18, - "outputs": [ + "cell_type": "markdown", + "metadata": { + "id": "8FTBryPnJrUa", + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "### Creating vocab" + ] + }, { - "data": { - "text/plain": " text\nsentiment \n0 543\n1 413\n2 1767", - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
text
sentiment
0543
1413
21767
\n
" - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "W-8DkMpgJ8Nz", - "outputId": "45d215c2-8e80-4876-8757-e8574b809972", - "colab": { - "base_uri": "https://localhost:8080/", - "height": 173 - } - }, - "source": [ - "train_df.groupby('sentiment').count()" - ], - "execution_count": 19, - "outputs": [ + "cell_type": "code", + "metadata": { + "id": "j6jBsOu6JrUa", + "pycharm": { + "name": "#%%\n" + } + }, + "source": [ + "max_document_length = d['text'].str.len().max() # each sentence has until 100 words\n", + "max_size = 5000\n", + "Text = data.Field(batch_first=True, tokenize=lambda x: x, include_lengths=True, fix_length=max_document_length)\n", + "Label = data.Field(sequential=False, use_vocab=False, pad_token=None, unk_token=None)\n", + "fields = [('text', Text), ('labels', Label)]" + ], + "execution_count": 16, + "outputs": [] + }, { - "data": { - "text/plain": " text\nsentiment \n0 2173\n1 1649\n2 7069", - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
text
sentiment
02173
11649
27069
\n
" - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ] - }, - { - "cell_type": "code", - "execution_count": 68, - "outputs": [], - "source": [ - "items = train_df.groupby('sentiment').count().to_numpy()\n", - "neu, pos, neg = items[0][0], items[1][0], items[2][0]\n", - "total = train_df.count()[0]\n", - "weight_for_0 = (1 / neu)*(total)/2.0\n", - "weight_for_1 = (1 / pos)*(total)/2.0\n", - "weight_for_2 = (1 / neg)*(total)/2.0" - ], - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - } - }, - { - "cell_type": "code", - "metadata": { - "id": "L4QWhGExJrUb", - "pycharm": { - "name": "#%%\n" - } - }, - "source": [ - "Text.build_vocab(train_ds, test_ds, max_size=max_size)\n", - "Label.build_vocab(train_ds)\n", - "vocab_size = len(Text.vocab)" - ], - "execution_count": 20, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "Fm69dUmTJrUb", - "pycharm": { - "name": "#%%\n" - } - }, - "source": [ - "PAD_IND = Text.vocab.stoi['pad']\n", - "# captum\n", - "token_reference = TokenReferenceBase(reference_token_idx=PAD_IND) # create a reference (aka baseline) for the sentences and its constituent parts, tokens" - ], - "execution_count": 21, - "outputs": [] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "f5xCcMgXJrUb", - "pycharm": { - "name": "#%% md\n" - } - }, - "source": [ - "## Defining model" - ] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "DOIRUDjzJrUa", + "pycharm": { + "name": "#%%\n" + }, + "outputId": "83ec3f9d-e997-46ca-a3f7-ff710a9a8b5d" + }, + "source": [ + "class DataFrameDataset(data.Dataset):\n", + "\n", + " def __init__(self, df, text_field, label_field, is_test=False, **kwargs):\n", + " fields = [('text', text_field), ('labels', label_field)]\n", + " examples = []\n", + " for i, row in df.iterrows():\n", + " label = row.sentiment\n", + " text = row.text\n", + " examples.append(data.Example.fromlist([text, label], fields))\n", + "\n", + " super().__init__(examples, fields, **kwargs)\n", + "\n", + " @staticmethod\n", + " def sort_key(ex):\n", + " return len(ex.text)\n", + "\n", + " @classmethod\n", + " def splits(cls, text_field, label_field, train_df, test_df=None, **kwargs):\n", + " train_data, test_data = (None, None)\n", + "\n", + " if train_df is not None:\n", + " train_data = cls(train_df.copy(), text_field, label_field, **kwargs)\n", + " if test_df is not None:\n", + " test_data = cls(test_df.copy(), text_field, label_field, True, **kwargs)\n", + "\n", + " return tuple(d for d in (train_data, test_data) if d is not None)\n", + "test_size = 0.2 # split percentage to train\\validation data\n", + "X_train,X_test,y_train,y_test = train_test_split(d['text'].index,d['sentiment'], test_size=test_size, random_state=0, stratify=d['sentiment'])\n", + "train_df = d.loc[X_train.values]\n", + "test_df = d.loc[X_test.values]\n", + "train_ds, test_ds = DataFrameDataset.splits(\n", + " text_field=Text, label_field=Label, train_df=train_df, test_df=test_df)\n", + "vars(test_ds[0])" + ], + "execution_count": 17, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "{'labels': 0, 'text': ['rd', 'time', 'jamaica', 'volunt', 'risk', 'youth']}" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 17 + } + ] }, - "id": "jjpQpWbkJrUb", - "pycharm": { - "name": "#%%\n" + { + "cell_type": "markdown", + "metadata": { + "id": "-rzlLLUsKDPJ" + }, + "source": [ + "### Checking how balance is our testset in comparison to trainset" + ] }, - "outputId": "8517b48d-35dc-4fba-a63c-43f1cc4ef66e" - }, - "source": [ - "device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')\n", - "device" - ], - "execution_count": 22, - "outputs": [ { - "data": { - "text/plain": "device(type='cpu')" - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "zFri3ivlJrUc", - "pycharm": { - "name": "#%%\n" - } - }, - "source": [ - "from torch.nn.utils.rnn import pack_padded_sequence, pad_packed_sequence\n", - "class LSTM(nn.Module):\n", - "\n", - " # define all the layers used in model\n", - " def __init__(self, vocab_size, embedding_dim, hidden_dim1, hidden_dim2, output_dim, n_layers,\n", - " bidirectional, dropout, pad_index):\n", - " # Constructor\n", - " super().__init__()\n", - " self.n_layers = n_layers\n", - " self.hidden_dim1 = hidden_dim1\n", - " # embedding layer\n", - " self.embedding = nn.Embedding(vocab_size, embedding_dim, padding_idx = pad_index)\n", - "\n", - " # lstm layer\n", - " self.lstm = nn.LSTM(embedding_dim,\n", - " hidden_dim1,\n", - " num_layers=n_layers,\n", - " bidirectional=bidirectional,\n", - " batch_first=True)\n", - " self.fc1 = nn.Linear(hidden_dim1 * 2, hidden_dim2)\n", - " self.fc2 = nn.Linear(hidden_dim2, output_dim)\n", - " self.relu = nn.SELU()\n", - " self.dropout = nn.Dropout(dropout)\n", - " self.dropout1 = nn.Dropout(dropout)\n", - " # activation function\n", - " self.act = nn.Softmax() #\\ F.log_softmax(outp)\n", - "\n", - " def forward(self, text, text_lengths, hid=None):\n", - " # text = [batch size,sent_length]\n", - " if hid == None:\n", - " hid = self.init_hidden(text.shape[0])\n", - " embedded = self.embedding(text)\n", - " # embedded = [batch size, sent_len, emb dim]\n", - "\n", - " # packed sequence\n", - " packed_embedded = pack_padded_sequence(embedded, text_lengths.cpu(), batch_first=True) # unpad\n", - "\n", - " packed_output, (hidden, cell) = self.lstm(packed_embedded, hid)\n", - " # packed_output shape = (batch, seq_len, num_directions * hidden_size)\n", - " # hidden shape = (num_layers * num_directions, batch, hidden_size)\n", - "\n", - " # concat the final forward and backward hidden state\n", - " cat = torch.cat((hidden[-2, :, :], hidden[-1, :, :]), dim=1)\n", - " # output, output_lengths = pad_packed_sequence(packed_output) # pad the sequence to the max length in the batch\n", - " cat = self.dropout1(cat)\n", - " rel = self.relu(cat)\n", - " dense1 = self.fc1(rel)\n", - "\n", - " drop = self.dropout(dense1)\n", - " preds = self.fc2(drop)\n", - "\n", - " # Final activation function\n", - " # preds = self.act(preds)\n", - " # preds = preds.argmax(dim=1).unsqueeze(0)\n", - " return preds, (hidden, cell)\n", - " \n", - " def init_hidden(self, batch_size):\n", - " ''' Initializes hidden state '''\n", - " # Create two new tensors with sizes n_layers x batch_size x n_hidden,\n", - " # initialized to zero, for hidden state and cell state of LSTM\n", - " weight = next(self.parameters()).data\n", - "\n", - " hidden = (torch.zeros(self.n_layers*2, batch_size, self.hidden_dim1).to(device),\n", - " torch.zeros(self.n_layers*2, batch_size, self.hidden_dim1).to(device))\n", - "\n", - " return hidden" - ], - "execution_count": 23, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" + "cell_type": "code", + "metadata": { + "id": "8fU_1ta2JuSZ", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 173 + }, + "outputId": "5d18405b-0d37-4c98-8ab1-fca7c76b538a" + }, + "source": [ + "test_df.groupby('sentiment').count()/test_df['sentiment'].count()*100" + ], + "execution_count": 18, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
text
sentiment
019.941241
115.167095
264.891664
\n", + "
" + ], + "text/plain": [ + " text\n", + "sentiment \n", + "0 19.941241\n", + "1 15.167095\n", + "2 64.891664" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 18 + } + ] }, - "id": "2zLwnk5UJrUg", - "pycharm": { - "name": "#%%\n" + { + "cell_type": "code", + "metadata": { + "id": "W-8DkMpgJ8Nz", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 173 + }, + "outputId": "1ede3cf6-6168-4fd0-edcd-ab43660b7fc8" + }, + "source": [ + "train_df.groupby('sentiment').count()/train_df['sentiment'].count()*100" + ], + "execution_count": 19, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
text
sentiment
019.952254
115.140942
264.906804
\n", + "
" + ], + "text/plain": [ + " text\n", + "sentiment \n", + "0 19.952254\n", + "1 15.140942\n", + "2 64.906804" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 19 + } + ] }, - "outputId": "de93adcd-f18a-4c90-9260-c51589c2e07e" - }, - "source": [ - "\n", - "# hyper-parameters:\n", - "lr = 1e-4\n", - "batch_size = 50\n", - "dropout_keep_prob = 0.5\n", - "embedding_size = 300\n", - "seed = 0\n", - "clip=5\n", - "num_classes = 3\n", - "num_hidden_nodes = 93\n", - "hidden_dim2 = 512\n", - "num_layers = 2 # LSTM layers\n", - "bi_directional = True\n", - "num_epochs = 100\n", - "\n", - "pad_index = Text.vocab.stoi[Text.pad_token]\n", - "\n", - "# Build the model\n", - "lstm_model = LSTM(vocab_size, embedding_size, num_hidden_nodes, hidden_dim2 , num_classes, num_layers,\n", - " bi_directional, dropout_keep_prob, pad_index)\n", - "lstm_model.to(device)\n", - "print(lstm_model)" - ], - "execution_count": 24, - "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "LSTM(\n", - " (embedding): Embedding(5002, 300, padding_idx=1)\n", - " (lstm): LSTM(300, 93, num_layers=2, batch_first=True, bidirectional=True)\n", - " (fc1): Linear(in_features=186, out_features=512, bias=True)\n", - " (fc2): Linear(in_features=512, out_features=3, bias=True)\n", - " (relu): SELU()\n", - " (dropout): Dropout(p=0.5, inplace=False)\n", - " (dropout1): Dropout(p=0.5, inplace=False)\n", - " (act): Softmax(dim=None)\n", - ")\n" - ] - } - ] - }, - { - "cell_type": "markdown", - "metadata": { - "id": "ZLmmdfsyJrUk", - "pycharm": { - "name": "#%% md\n" - } - }, - "source": [ - "## training the model" - ] - }, - { - "cell_type": "code", - "metadata": { - "id": "tESutgn6JrUk", - "pycharm": { - "name": "#%%\n" - } - }, - "source": [ - "train_iterator, test_iterator = data.BucketIterator.splits((train_ds, test_ds),\n", - " batch_size=batch_size,\n", - " sort_key=lambda x: len(x.text),\n", - " # Sort the batches by text length size\n", - " sort_within_batch=True,\n", - " device=device,\n", - " )" - ], - "execution_count": 25, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "Ne_LiAoSJrUk", - "pycharm": { - "name": "#%%\n" - } - }, - "source": [ - "def accuracy(probs, target):\n", - " winners = probs.argmax(dim=1)\n", - " corrects = (winners == target)\n", - " accuracy = corrects.sum().float() / float(target.size(0))\n", - " return accuracy\n", - "\n", - "def plot_cm(y_true, y_pred, target_names):\n", - " cm = confusion_matrix(y_true, y_pred, labels=target_names)\n", - " plt.figure(figsize=(5,5))\n", - " sb.heatmap(cm, annot=True, fmt=\"d\")\n", - " plt.title('Confusion matrix')\n", - " plt.ylabel('Actual label')\n", - " plt.xlabel('Predicted label')\n", - "\n", - "def train(model, iterator, optimizer, criterion):\n", - " epoch_loss = 0\n", - " epoch_acc = 0\n", - "\n", - " model.train()\n", - " h = model.init_hidden(batch_size)\n", - " for batch in iterator:\n", - " optimizer.zero_grad()\n", - " # zero accumulated gradients\n", - " model.zero_grad()\n", - " # retrieve text and no. of words\n", - " text, text_lengths = batch.text\n", - " if (text.shape[0], text.shape[1]) != (batch_size, max_document_length):\n", - " continue\n", - "\n", - " # Creating new variables for the hidden state, otherwise\n", - " # we'd backprop through the entire training history\n", - " h = tuple([each.data for each in h])\n", - "\n", - " predictions, h = model(text, text_lengths, h)\n", - " loss = criterion(predictions, batch.labels.squeeze())\n", - "\n", - " acc = accuracy(predictions, batch.labels)\n", - "\n", - " # perform backpropagation\n", - " loss.backward()\n", - " # `clip_grad_norm` helps prevent the exploding gradient problem in RNNs / LSTMs.\n", - " nn.utils.clip_grad_norm_(model.parameters(), clip)\n", - " optimizer.step()\n", - "\n", - " epoch_loss += loss.item()\n", - " epoch_acc += acc.item()\n", - "\n", - " return epoch_loss / len(iterator), epoch_acc / len(iterator)\n", - "\n", - "def evaluate(model, iterator, criterion, report=False):\n", - " epoch_loss = 0\n", - " epoch_acc = 0\n", - " report_pred_test =[]\n", - " report_label_test =[]\n", - "\n", - " model.eval()\n", - " val_h = model.init_hidden(batch_size)\n", - " with torch.no_grad():\n", - " for batch in iterator:\n", - " text, text_lengths = batch.text\n", - " if (text.shape[0], text.shape[1]) != (batch_size, max_document_length):\n", - " continue\n", - "\n", - " # Creating new variables for the hidden state, otherwise\n", - " # we'd backprop through the entire training history\n", - " val_h = tuple([each.data for each in val_h])\n", - "\n", - " predictions, val_h = model(text, text_lengths, val_h)\n", - "\n", - " loss = criterion(predictions, batch.labels)\n", - "\n", - " acc = accuracy(predictions, batch.labels)\n", - " if report:\n", - " report_pred_test.extend(predictions.argmax(dim=1))\n", - " report_label_test.extend(batch.labels)\n", - "\n", - " epoch_loss += loss.item()\n", - " epoch_acc += acc.item()\n", - " if report:\n", - " print(classification_report(report_label_test, report_pred_test, target_names=['neutral', 'positive', 'negative']))\n", - " plot_cm(report_label_test, report_pred_test, target_names=[0, 1, 2])\n", - "\n", - " return epoch_loss / len(iterator), epoch_acc / len(iterator)\n", - "\n", - "\n", - "def run_train(epochs, model, train_iterator, valid_iterator, optimizer, criterion):\n", - " best_valid_loss = float('inf')\n", - "\n", - " for epoch in range(epochs):\n", - "\n", - " # train the model\n", - " train_loss, train_acc = train(model, train_iterator, optimizer, criterion)\n", - "\n", - " # evaluate the model\n", - " valid_loss, valid_acc = evaluate(model, valid_iterator, criterion)\n", - "\n", - " # save the best model\n", - " if valid_loss < best_valid_loss:\n", - " best_valid_loss = valid_loss\n", - " torch.save(model.state_dict(), 'checkpoint/twitter.t7')\n", - "\n", - " print(f'\\tTrain Loss: {train_loss:.3f} | Train Acc: {train_acc * 100:.2f}%')\n", - " print(f'\\t Val. Loss: {valid_loss:.3f} | Val. Acc: {valid_acc * 100:.2f}%')" - ], - "execution_count": 57, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "id": "aPadIekjJrUl", - "pycharm": { - "name": "#%%\n" - } - }, - "source": [ - "# loss function\n", - "loss_func = nn.CrossEntropyLoss(weight=torch.tensor([weight_for_0, weight_for_1, weight_for_2], dtype=torch.float32))\n", - "optimizer = torch.optim.Adam(lstm_model.parameters(), lr=lr)" - ], - "execution_count": 73, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 952 + "cell_type": "code", + "metadata": { + "pycharm": { + "name": "#%%\n" + }, + "id": "SFHEes6ewWpa", + "outputId": "af82c2c5-f1ea-44be-83af-3330eec8e190", + "colab": { + "base_uri": "https://localhost:8080/" + } + }, + "source": [ + "items = train_df.groupby('sentiment').count().to_numpy()\n", + "neu, pos, neg = items[0][0], items[1][0], items[2][0]\n", + "total = train_df.count()[0]\n", + "weight_for_0 = (1 / neu)*(total)/2.0\n", + "weight_for_1 = (1 / pos)*(total)/2.0\n", + "weight_for_2 = (1 / neg)*(total)/1.5\n", + "print(weight_for_0, weight_for_1, weight_for_2)" + ], + "execution_count": 20, + "outputs": [ + { + "output_type": "stream", + "text": [ + "2.5059825126553155 3.3023044269254096 1.0271136888763144\n" + ], + "name": "stdout" + } + ] }, - "id": "IXSVKXpkJrUl", - "pycharm": { - "name": "#%%\n" + { + "cell_type": "code", + "metadata": { + "id": "L4QWhGExJrUb", + "pycharm": { + "name": "#%%\n" + } + }, + "source": [ + "Text.build_vocab(train_ds, test_ds, max_size=max_size)\n", + "Label.build_vocab(train_ds)\n", + "vocab_size = len(Text.vocab)" + ], + "execution_count": 21, + "outputs": [] }, - "outputId": "59d292e9-fa7c-47b7-8947-854983412f42" - }, - "source": [ - "# run_train(num_epochs, lstm_model, train_iterator, test_iterator, optimizer, loss_func)" - ], - "execution_count": 28, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" + { + "cell_type": "code", + "metadata": { + "id": "Fm69dUmTJrUb", + "pycharm": { + "name": "#%%\n" + } + }, + "source": [ + "PAD_IND = Text.vocab.stoi['pad']\n", + "# captum\n", + "token_reference = TokenReferenceBase(reference_token_idx=PAD_IND) # create a reference (aka baseline) for the sentences and its constituent parts, tokens" + ], + "execution_count": 22, + "outputs": [] }, - "id": "zNhQggYQJrUm", - "pycharm": { - "name": "#%%\n" + { + "cell_type": "markdown", + "metadata": { + "id": "f5xCcMgXJrUb", + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "## Defining model" + ] }, - "outputId": "4e5e31bd-0d35-4bb1-e3e9-f2f352271385" - }, - "source": [ - "lstm_model.load_state_dict(torch.load('checkpoint/twitter(fantast pos normal neu horib neu).t7', map_location=device))\n", - "# predict\n", - "test_loss, test_acc = evaluate(lstm_model, test_iterator, loss_func, report=True)\n", - "print(f'Test Loss: {test_loss:.3f} | Test Acc: {test_acc * 100:.2f}%')" - ], - "execution_count": 74, - "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - " precision recall f1-score support\n", - "\n", - " neutral 0.60 0.28 0.38 538\n", - " positive 0.74 0.54 0.62 412\n", - " negative 0.78 0.95 0.86 1750\n", - "\n", - " accuracy 0.76 2700\n", - " macro avg 0.70 0.59 0.62 2700\n", - "weighted avg 0.73 0.76 0.73 2700\n", - "\n", - "Test Loss: 1.449 | Test Acc: 74.18%\n" - ] + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "jjpQpWbkJrUb", + "pycharm": { + "name": "#%%\n" + }, + "outputId": "8df6d548-7ad3-4a69-c332-94b1b29e0809" + }, + "source": [ + "device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')\n", + "device" + ], + "execution_count": 23, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "device(type='cuda')" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 23 + } + ] }, { - "data": { - "text/plain": "
", - "image/png": "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\n" - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ] - }, - { - "cell_type": "markdown", - "source": [ - "If the model is predicted perfectly confusion matrix should be diagonal which indicates values off the main diagonal representing incorrect prediction is zero" - ], - "metadata": { - "collapsed": false - } - }, - { - "cell_type": "markdown", - "metadata": { - "id": "QifVxbhqJrUm", - "pycharm": { - "name": "#%% md\n" - } - }, - "source": [ - "## Visualizing the model" - ] - }, - { - "cell_type": "code", - "metadata": { - "ExecuteTime": { - "end_time": "2021-04-04T20:11:40.665155Z", - "start_time": "2021-04-04T20:11:40.648151Z" + "cell_type": "code", + "metadata": { + "id": "zFri3ivlJrUc", + "pycharm": { + "name": "#%%\n" + } + }, + "source": [ + "from torch.nn.utils.rnn import pack_padded_sequence, pad_packed_sequence\n", + "class LSTM(nn.Module):\n", + "\n", + " # define all the layers used in model\n", + " def __init__(self, vocab_size, embedding_dim, hidden_dim1, hidden_dim2, output_dim, n_layers,\n", + " bidirectional, dropout, pad_index):\n", + " # Constructor\n", + " super().__init__()\n", + " self.n_layers = n_layers\n", + " self.hidden_dim1 = hidden_dim1\n", + " self.bidirectional = bidirectional\n", + " # embedding layer\n", + " self.embedding = nn.Embedding(vocab_size, embedding_dim, padding_idx = pad_index)\n", + "\n", + " # lstm layer\n", + " self.lstm = nn.LSTM(embedding_dim,\n", + " hidden_dim1,\n", + " num_layers=n_layers,\n", + " bidirectional=bidirectional,\n", + " batch_first=True)\n", + " self.fc1 = nn.Linear(hidden_dim1 * 2, hidden_dim2)\n", + " self.fc2 = nn.Linear(hidden_dim2, output_dim)\n", + " self.relu = nn.SELU()\n", + " self.dropout = nn.Dropout(dropout)\n", + " self.dropout1 = nn.Dropout(dropout)\n", + " # activation function\n", + " self.act = nn.Softmax() #\\ F.log_softmax(outp)\n", + "\n", + " def forward(self, text, text_lengths, hid=None):\n", + " # text = [batch size,sent_length]\n", + " if hid == None:\n", + " hid = self.init_hidden(text.shape[0])\n", + " embedded = self.embedding(text)\n", + " # embedded = [batch size, sent_len, emb dim]\n", + "\n", + " # packed sequence\n", + " packed_embedded = pack_padded_sequence(embedded, text_lengths.cpu(), batch_first=True) # unpad\n", + "\n", + " packed_output, (hidden, cell) = self.lstm(packed_embedded, hid)\n", + " # packed_output shape = (batch, seq_len, num_directions * hidden_size)\n", + " # hidden shape = (num_layers * num_directions, batch, hidden_size)\n", + "\n", + " # concat the final forward and backward hidden state\n", + " cat = torch.cat((hidden[-2, :, :], hidden[-1, :, :]), dim=1)\n", + " # output, output_lengths = pad_packed_sequence(packed_output) # pad the sequence to the max length in the batch\n", + " cat = self.dropout1(cat)\n", + " rel = self.relu(cat)\n", + " dense1 = self.fc1(rel)\n", + "\n", + " drop = self.dropout(dense1)\n", + " preds = self.fc2(drop)\n", + "\n", + " # Final activation function\n", + " # preds = self.act(preds)\n", + " # preds = preds.argmax(dim=1).unsqueeze(0)\n", + " return preds, (hidden, cell)\n", + " \n", + " def init_hidden(self, batch_size):\n", + " ''' Initializes hidden state '''\n", + " # Create two new tensors with sizes n_layers x batch_size x n_hidden,\n", + " # initialized to zero, for hidden state and cell state of LSTM\n", + " weight = next(self.parameters()).data\n", + "\n", + " hidden = (torch.zeros(self.n_layers*(2 if self.bidirectional else 1), batch_size, self.hidden_dim1).to(device),\n", + " torch.zeros(self.n_layers*(2 if self.bidirectional else 1), batch_size, self.hidden_dim1).to(device))\n", + "\n", + " return hidden" + ], + "execution_count": 24, + "outputs": [] }, - "id": "gH1wMUQVJrUm", - "pycharm": { - "name": "#%%\n" - } - }, - "source": [ - "vis_data_records_ig = []\n", - "def forward(input, text_length):\n", - " return F.softmax(lstm_model(input, text_length)[0])\n", - "lig = LayerIntegratedGradients(forward, lstm_model.embedding)\n", - "def interpret_sentence(model, sentence, min_len = max_document_length, label = 0):\n", - " model.train()\n", - " h = model.init_hidden(1)\n", - " h500 = model.init_hidden(500)\n", - " text = preprocess(sentence)\n", - " actual_len = len(text)\n", - " if len(text) < min_len:\n", - " text += [''] * (min_len - len(text))\n", - " indexed = [Text.vocab.stoi[t] for t in text]\n", - "\n", - " model.zero_grad()\n", - "\n", - " input_indices = torch.tensor(indexed, device=device)\n", - " input_indices = input_indices.unsqueeze(0)\n", - " text_length = torch.tensor([actual_len], device=device)\n", - " # input_indices dim: [sequence_length]\n", - " seq_length = min_len\n", - "\n", - " # predict\n", - " pred = F.softmax(model(input_indices, text_length, h)[0]).argmax(dim=1).item()\n", - " pred_ind = round(pred)\n", - "\n", - " # generate reference indices for each sample\n", - " reference_indices = token_reference.generate_reference(seq_length, device=device).unsqueeze(0)\n", - "\n", - " # compute attributions and approximation delta using layer integrated gradients\n", - " attributions_ig, delta = lig.attribute(input_indices, reference_indices,\n", - " n_steps=500,target=2-label, return_convergence_delta=True, additional_forward_args=text_length)\n", - "\n", - " print(sentence, 'pred: ', {1:'positive', 0: 'netural', 2: 'negative'}[pred_ind], '(', '%.2f'%pred, ')', ', delta: ', abs(delta))\n", - "\n", - " add_attributions_to_visualizer(attributions_ig, text, pred, pred_ind, label, delta, vis_data_records_ig)\n", - "\n", - "def add_attributions_to_visualizer(attributions, text, pred, pred_ind, label, delta, vis_data_records):\n", - " attributions = attributions.sum(dim=2).squeeze(0)\n", - " attributions = attributions / torch.norm(attributions)\n", - " attributions = attributions.cpu().detach().numpy()\n", - "\n", - "\n", - " # storing couple samples in an array for visualization purposes\n", - " vis_data_records.append(visualization.VisualizationDataRecord(\n", - " attributions,\n", - " pred,\n", - " {1:'positive', 0: 'netural', 2: 'negative'}[pred_ind],\n", - " {1:'positive', 0: 'netural', 2: 'negative'}[label],\n", - " {1:'positive', 0: 'netural', 2: 'negative'}[label],\n", - " attributions.sum(),\n", - " text,\n", - " delta))" - ], - "execution_count": 30, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "pycharm": { - "name": "#%%\n" + { + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "2zLwnk5UJrUg", + "pycharm": { + "name": "#%%\n" + }, + "outputId": "6c557f6e-08c1-4e84-bd9a-1cd6754455af" + }, + "source": [ + "\n", + "# hyper-parameters:\n", + "lr = 1e-4\n", + "batch_size = 50\n", + "dropout_keep_prob = 0.5\n", + "embedding_size = 300\n", + "seed = 0\n", + "clip=5\n", + "num_classes = 3\n", + "num_hidden_nodes = 93\n", + "hidden_dim2 = 512\n", + "num_layers = 2 # LSTM layers\n", + "bi_directional = True\n", + "num_epochs = 100\n", + "\n", + "pad_index = Text.vocab.stoi[Text.pad_token]\n", + "\n", + "# Build the model\n", + "lstm_model = LSTM(vocab_size, embedding_size, num_hidden_nodes, hidden_dim2 , num_classes, num_layers,\n", + " bi_directional, dropout_keep_prob, pad_index)\n", + "lstm_model.to(device)\n", + "print(lstm_model)" + ], + "execution_count": 25, + "outputs": [ + { + "output_type": "stream", + "text": [ + "LSTM(\n", + " (embedding): Embedding(5002, 1024, padding_idx=1)\n", + " (lstm): LSTM(1024, 512, num_layers=2, batch_first=True, bidirectional=True)\n", + " (fc1): Linear(in_features=1024, out_features=1024, bias=True)\n", + " (fc2): Linear(in_features=1024, out_features=3, bias=True)\n", + " (relu): SELU()\n", + " (dropout): Dropout(p=0.7, inplace=False)\n", + " (dropout1): Dropout(p=0.7, inplace=False)\n", + " (act): Softmax(dim=None)\n", + ")\n" + ], + "name": "stdout" + } + ] }, - "colab": { - "base_uri": "https://localhost:8080/" + { + "cell_type": "markdown", + "metadata": { + "id": "ZLmmdfsyJrUk", + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "## training the model" + ] }, - "id": "wUrqYoqLz9ks", - "outputId": "e4a502cc-7655-43f6-93c2-9951759137ad" - }, - "source": [ - "interpret_sentence(lstm_model, 'It was a fantastic performance !', label=1)\n", - "interpret_sentence(lstm_model, 'Best film ever', label=1)\n", - "interpret_sentence(lstm_model, 'Such a great show!', label=1)\n", - "interpret_sentence(lstm_model, 'It was a horrible movie', label=2)\n", - "interpret_sentence(lstm_model, 'I\\'ve never watched something as bad', label=2)\n", - "interpret_sentence(lstm_model, 'It is a disgusting movie!', label=2)\n", - "interpret_sentence(lstm_model, 'normal', label=0)" - ], - "execution_count": 31, - "outputs": [ { - "name": "stderr", - "output_type": "stream", - "text": [ - "c:\\program files\\python37\\lib\\site-packages\\ipykernel_launcher.py:24: UserWarning: Implicit dimension choice for softmax has been deprecated. Change the call to include dim=X as an argument.\n", - "c:\\program files\\python37\\lib\\site-packages\\ipykernel_launcher.py:3: UserWarning: Implicit dimension choice for softmax has been deprecated. Change the call to include dim=X as an argument.\n", - " This is separate from the ipykernel package so we can avoid doing imports until\n" - ] + "cell_type": "code", + "metadata": { + "id": "tESutgn6JrUk", + "pycharm": { + "name": "#%%\n" + } + }, + "source": [ + "train_iterator, test_iterator = data.BucketIterator.splits((train_ds, test_ds),\n", + " batch_size=batch_size,\n", + " sort_key=lambda x: len(x.text),\n", + " # Sort the batches by text length size\n", + " sort_within_batch=True,\n", + " device=device,\n", + " )" + ], + "execution_count": 26, + "outputs": [] }, { - "name": "stdout", - "output_type": "stream", - "text": [ - "It was a fantastic performance ! pred: positive ( 1.00 ) , delta: tensor([0.0410], dtype=torch.float64)\n", - "Best film ever pred: positive ( 1.00 ) , delta: tensor([0.0217], dtype=torch.float64)\n", - "Such a great show! pred: positive ( 1.00 ) , delta: tensor([0.2001], dtype=torch.float64)\n", - "It was a horrible movie pred: netural ( 0.00 ) , delta: tensor([0.0539], dtype=torch.float64)\n", - "I've never watched something as bad pred: negative ( 2.00 ) , delta: tensor([0.0929], dtype=torch.float64)\n", - "It is a disgusting movie! pred: negative ( 2.00 ) , delta: tensor([0.0058], dtype=torch.float64)\n", - "normal pred: netural ( 0.00 ) , delta: tensor([0.0104], dtype=torch.float64)\n" - ] - } - ] - }, - { - "cell_type": "code", - "metadata": { - "pycharm": { - "name": "#%%\n" + "cell_type": "code", + "metadata": { + "id": "Ne_LiAoSJrUk", + "pycharm": { + "name": "#%%\n" + } + }, + "source": [ + "def accuracy(probs, target):\n", + " winners = probs.argmax(dim=1)\n", + " corrects = (winners == target)\n", + " accuracy = corrects.sum().float() / float(target.size(0))\n", + " return accuracy\n", + "\n", + "def plot_cm(y_true, y_pred, target_names):\n", + " cm = confusion_matrix(y_true, y_pred, labels=target_names)\n", + " plt.figure(figsize=(5,5))\n", + " sb.heatmap(cm, annot=True, fmt=\"d\")\n", + " plt.title('Confusion matrix')\n", + " plt.ylabel('Actual label')\n", + " plt.xlabel('Predicted label')\n", + "\n", + "def train(model, iterator, optimizer, criterion):\n", + " epoch_loss = 0\n", + " epoch_acc = 0\n", + "\n", + " model.train()\n", + " h = model.init_hidden(batch_size)\n", + " for batch in iterator:\n", + " optimizer.zero_grad()\n", + " # zero accumulated gradients\n", + " model.zero_grad()\n", + " # retrieve text and no. of words\n", + " text, text_lengths = batch.text\n", + " if (text.shape[0], text.shape[1]) != (batch_size, max_document_length):\n", + " continue\n", + "\n", + " # Creating new variables for the hidden state, otherwise\n", + " # we'd backprop through the entire training history\n", + " h = tuple([each.data for each in h])\n", + "\n", + " predictions, h = model(text, text_lengths, h)\n", + " loss = criterion(predictions, batch.labels.squeeze())\n", + "\n", + " acc = accuracy(predictions, batch.labels)\n", + "\n", + " # perform backpropagation\n", + " loss.backward()\n", + " # `clip_grad_norm` helps prevent the exploding gradient problem in RNNs / LSTMs.\n", + " nn.utils.clip_grad_norm_(model.parameters(), clip)\n", + " optimizer.step()\n", + "\n", + " epoch_loss += loss.item()\n", + " epoch_acc += acc.item()\n", + "\n", + " return epoch_loss / len(iterator), epoch_acc / len(iterator)\n", + "\n", + "def evaluate(model, iterator, criterion, report=False):\n", + " epoch_loss = 0\n", + " epoch_acc = 0\n", + " report_pred_test =[]\n", + " report_label_test =[]\n", + "\n", + " model.eval()\n", + " val_h = model.init_hidden(batch_size)\n", + " with torch.no_grad():\n", + " for batch in iterator:\n", + " text, text_lengths = batch.text\n", + " if (text.shape[0], text.shape[1]) != (batch_size, max_document_length):\n", + " continue\n", + "\n", + " # Creating new variables for the hidden state, otherwise\n", + " # we'd backprop through the entire training history\n", + " val_h = tuple([each.data for each in val_h])\n", + "\n", + " predictions, val_h = model(text, text_lengths, val_h)\n", + "\n", + " loss = criterion(predictions, batch.labels)\n", + "\n", + " acc = accuracy(predictions, batch.labels)\n", + " if report:\n", + " report_pred_test.extend(predictions.argmax(dim=1).cpu())\n", + " report_label_test.extend(batch.labels.cpu())\n", + "\n", + " epoch_loss += loss.item()\n", + " epoch_acc += acc.item()\n", + " if report:\n", + " print(classification_report(report_label_test, report_pred_test, target_names=['neutral', 'positive', 'negative']))\n", + " plot_cm(report_label_test, report_pred_test, target_names=[0, 1, 2])\n", + "\n", + " return epoch_loss / len(iterator), epoch_acc / len(iterator)\n", + "\n", + "\n", + "def run_train(epochs, model, train_iterator, valid_iterator, optimizer, criterion):\n", + " best_valid_loss = float('inf')\n", + "\n", + " for epoch in range(epochs):\n", + "\n", + " # train the model\n", + " train_loss, train_acc = train(model, train_iterator, optimizer, criterion)\n", + "\n", + " # evaluate the model\n", + " valid_loss, valid_acc = evaluate(model, valid_iterator, criterion)\n", + "\n", + " # save the best model\n", + " if valid_loss < best_valid_loss:\n", + " best_valid_loss = valid_loss\n", + " torch.save(model.state_dict(), 'checkpoint/twitter.t7')\n", + "\n", + " print(f'\\tTrain Loss: {train_loss:.3f} | Train Acc: {train_acc * 100:.2f}%')\n", + " print(f'\\t Val. Loss: {valid_loss:.3f} | Val. Acc: {valid_acc * 100:.2f}%')" + ], + "execution_count": 27, + "outputs": [] }, - "colab": { - "base_uri": "https://localhost:8080/", - "height": 1000 + { + "cell_type": "code", + "metadata": { + "id": "aPadIekjJrUl", + "pycharm": { + "name": "#%%\n" + } + }, + "source": [ + "# loss function\n", + "loss_func = nn.CrossEntropyLoss(weight=torch.tensor([weight_for_0, weight_for_1, weight_for_2], dtype=torch.float32, device=device))\n", + "optimizer = torch.optim.Adam(lstm_model.parameters(), lr=lr)" + ], + "execution_count": 28, + "outputs": [] }, - "id": "sheZvYeYz9ks", - "outputId": "4d60eab5-2e34-4b32-ddbb-334df594647c" - }, - "source": [ - "_ = visualization.visualize_text(vis_data_records_ig)" - ], - "execution_count": 32, - "outputs": [ { - "data": { - "text/plain": "", - "text/html": "
Legend: Negative Neutral Positive
True LabelPredicted LabelAttribution LabelAttribution ScoreWord Importance
positivepositive (1.00)positive0.78 it fantast perform #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad
positivepositive (1.00)positive0.94 best film #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad
positivepositive (1.00)positive0.86 such great show #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad
negativenetural (0.00)negative-1.01 it horribl movi #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad
negativenegative (2.00)negative-0.56 ve watch bad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad
negativenegative (2.00)negative-1.15 it disgust movi #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad
neturalnetural (0.00)netural1.00 normal #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad #pad
" - }, - "metadata": {}, - "output_type": "display_data" - } - ] - }, - { - "cell_type": "code", - "metadata": { - "pycharm": { - "name": "#%%\n" + "cell_type": "code", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "id": "IXSVKXpkJrUl", + "pycharm": { + "name": "#%%\n" + }, + "outputId": "66d4f20d-bc97-437a-91a1-fd6647e921a5" + }, + "source": [ + "run_train(num_epochs, lstm_model, train_iterator, test_iterator, optimizer, loss_func)" + ], + "execution_count": 29, + "outputs": [ + { + "output_type": "stream", + "text": [ + "\tTrain Loss: 1.066 | Train Acc: 42.58%\n", + "\t Val. Loss: 0.983 | Val. Acc: 61.97%\n", + "\tTrain Loss: 1.052 | Train Acc: 54.12%\n", + "\t Val. Loss: 0.968 | Val. Acc: 62.93%\n", + "\tTrain Loss: 1.034 | Train Acc: 61.93%\n", + "\t Val. Loss: 0.950 | Val. Acc: 63.49%\n", + "\tTrain Loss: 1.016 | Train Acc: 65.14%\n", + "\t Val. Loss: 0.928 | Val. Acc: 63.64%\n", + "\tTrain Loss: 0.991 | Train Acc: 66.61%\n", + "\t Val. Loss: 0.901 | Val. Acc: 63.46%\n", + "\tTrain Loss: 0.959 | Train Acc: 67.42%\n", + "\t Val. Loss: 0.870 | Val. Acc: 63.46%\n", + "\tTrain Loss: 0.929 | Train Acc: 67.47%\n", + "\t Val. Loss: 0.840 | Val. Acc: 63.35%\n", + "\tTrain Loss: 0.895 | Train Acc: 67.91%\n", + "\t Val. Loss: 0.812 | Val. Acc: 62.96%\n", + "\tTrain Loss: 0.866 | Train Acc: 68.17%\n", + "\t Val. Loss: 0.790 | Val. Acc: 63.03%\n", + "\tTrain Loss: 0.842 | Train Acc: 68.53%\n", + "\t Val. Loss: 0.771 | Val. Acc: 63.32%\n", + "\tTrain Loss: 0.815 | Train Acc: 69.39%\n", + "\t Val. Loss: 0.755 | Val. Acc: 63.60%\n", + "\tTrain Loss: 0.797 | Train Acc: 69.59%\n", + "\t Val. Loss: 0.741 | Val. Acc: 63.74%\n", + "\tTrain Loss: 0.779 | Train Acc: 69.98%\n", + "\t Val. Loss: 0.728 | Val. Acc: 64.10%\n", + "\tTrain Loss: 0.763 | Train Acc: 70.47%\n", + "\t Val. Loss: 0.718 | Val. Acc: 64.20%\n", + "\tTrain Loss: 0.747 | Train Acc: 71.60%\n", + "\t Val. Loss: 0.707 | Val. Acc: 64.28%\n", + "\tTrain Loss: 0.726 | Train Acc: 71.78%\n", + "\t Val. Loss: 0.698 | Val. Acc: 64.20%\n", + "\tTrain Loss: 0.717 | Train Acc: 72.09%\n", + "\t Val. Loss: 0.691 | Val. Acc: 64.42%\n", + "\tTrain Loss: 0.697 | Train Acc: 72.25%\n", + "\t Val. Loss: 0.685 | Val. Acc: 64.10%\n", + "\tTrain Loss: 0.684 | Train Acc: 73.22%\n", + "\t Val. Loss: 0.679 | Val. Acc: 64.17%\n", + "\tTrain Loss: 0.667 | Train Acc: 73.21%\n", + "\t Val. Loss: 0.673 | Val. Acc: 64.20%\n", + "\tTrain Loss: 0.655 | Train Acc: 73.37%\n", + "\t Val. Loss: 0.668 | Val. Acc: 64.38%\n", + "\tTrain Loss: 0.643 | Train Acc: 74.23%\n", + "\t Val. Loss: 0.667 | Val. Acc: 64.35%\n", + "\tTrain Loss: 0.629 | Train Acc: 74.16%\n", + "\t Val. Loss: 0.662 | Val. Acc: 64.35%\n", + "\tTrain Loss: 0.620 | Train Acc: 74.15%\n", + "\t Val. Loss: 0.660 | Val. Acc: 64.45%\n", + "\tTrain Loss: 0.615 | Train Acc: 74.65%\n", + "\t Val. Loss: 0.656 | Val. Acc: 64.70%\n", + "\tTrain Loss: 0.607 | Train Acc: 74.92%\n", + "\t Val. Loss: 0.653 | Val. Acc: 64.81%\n", + "\tTrain Loss: 0.592 | Train Acc: 75.28%\n", + "\t Val. Loss: 0.651 | Val. Acc: 64.63%\n", + "\tTrain Loss: 0.586 | Train Acc: 75.31%\n", + "\t Val. Loss: 0.650 | Val. Acc: 65.34%\n", + "\tTrain Loss: 0.565 | Train Acc: 76.30%\n", + "\t Val. Loss: 0.649 | Val. Acc: 65.45%\n", + "\tTrain Loss: 0.557 | Train Acc: 76.19%\n", + "\t Val. Loss: 0.649 | Val. Acc: 65.55%\n", + "\tTrain Loss: 0.556 | Train Acc: 76.22%\n", + "\t Val. Loss: 0.648 | Val. Acc: 65.38%\n", + "\tTrain Loss: 0.542 | Train Acc: 76.91%\n", + "\t Val. Loss: 0.647 | Val. Acc: 65.91%\n", + "\tTrain Loss: 0.533 | Train Acc: 77.23%\n", + "\t Val. Loss: 0.646 | Val. Acc: 65.66%\n", + "\tTrain Loss: 0.518 | Train Acc: 77.80%\n", + "\t Val. Loss: 0.648 | Val. Acc: 66.05%\n", + "\tTrain Loss: 0.517 | Train Acc: 78.42%\n", + "\t Val. Loss: 0.645 | Val. Acc: 65.55%\n", + "\tTrain Loss: 0.502 | Train Acc: 78.45%\n", + "\t Val. Loss: 0.646 | Val. Acc: 65.77%\n", + "\tTrain Loss: 0.500 | Train Acc: 78.73%\n", + "\t Val. Loss: 0.648 | Val. Acc: 65.94%\n", + "\tTrain Loss: 0.491 | Train Acc: 78.64%\n", + "\t Val. Loss: 0.646 | Val. Acc: 66.26%\n", + "\tTrain Loss: 0.478 | Train Acc: 79.26%\n", + "\t Val. Loss: 0.647 | Val. Acc: 66.30%\n", + "\tTrain Loss: 0.473 | Train Acc: 79.49%\n", + "\t Val. Loss: 0.647 | Val. Acc: 66.58%\n", + "\tTrain Loss: 0.460 | Train Acc: 79.73%\n", + "\t Val. Loss: 0.649 | Val. Acc: 66.97%\n", + "\tTrain Loss: 0.450 | Train Acc: 80.39%\n", + "\t Val. Loss: 0.653 | Val. Acc: 67.01%\n", + "\tTrain Loss: 0.436 | Train Acc: 80.89%\n", + "\t Val. Loss: 0.655 | Val. Acc: 67.12%\n", + "\tTrain Loss: 0.440 | Train Acc: 80.90%\n", + "\t Val. Loss: 0.656 | Val. Acc: 66.16%\n", + "\tTrain Loss: 0.425 | Train Acc: 81.65%\n", + "\t Val. Loss: 0.662 | Val. Acc: 67.58%\n", + "\tTrain Loss: 0.422 | Train Acc: 81.72%\n", + "\t Val. Loss: 0.663 | Val. Acc: 66.62%\n", + "\tTrain Loss: 0.413 | Train Acc: 81.61%\n", + "\t Val. Loss: 0.666 | Val. Acc: 67.12%\n", + "\tTrain Loss: 0.403 | Train Acc: 82.38%\n", + "\t Val. Loss: 0.664 | Val. Acc: 66.97%\n", + "\tTrain Loss: 0.396 | Train Acc: 82.80%\n", + "\t Val. Loss: 0.670 | Val. Acc: 66.87%\n", + "\tTrain Loss: 0.381 | Train Acc: 83.02%\n", + "\t Val. Loss: 0.672 | Val. Acc: 67.26%\n", + "\tTrain Loss: 0.378 | Train Acc: 83.28%\n", + "\t Val. Loss: 0.680 | Val. Acc: 67.40%\n", + "\tTrain Loss: 0.370 | Train Acc: 83.54%\n", + "\t Val. Loss: 0.683 | Val. Acc: 67.44%\n", + "\tTrain Loss: 0.367 | Train Acc: 83.57%\n", + "\t Val. Loss: 0.687 | Val. Acc: 67.54%\n", + "\tTrain Loss: 0.346 | Train Acc: 84.68%\n", + "\t Val. Loss: 0.692 | Val. Acc: 67.33%\n", + "\tTrain Loss: 0.351 | Train Acc: 84.20%\n", + "\t Val. Loss: 0.701 | Val. Acc: 67.19%\n", + "\tTrain Loss: 0.342 | Train Acc: 85.10%\n", + "\t Val. Loss: 0.702 | Val. Acc: 67.61%\n", + "\tTrain Loss: 0.340 | Train Acc: 85.08%\n", + "\t Val. Loss: 0.709 | Val. Acc: 67.83%\n", + "\tTrain Loss: 0.325 | Train Acc: 84.81%\n", + "\t Val. Loss: 0.712 | Val. Acc: 67.68%\n", + "\tTrain Loss: 0.322 | Train Acc: 85.19%\n", + "\t Val. Loss: 0.721 | Val. Acc: 67.72%\n" + ], + "name": "stdout" + }, + { + "output_type": "error", + "ename": "KeyboardInterrupt", + "evalue": "ignored", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mrun_train\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnum_epochs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlstm_model\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtrain_iterator\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtest_iterator\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0moptimizer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mloss_func\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m\u001b[0m in \u001b[0;36mrun_train\u001b[0;34m(epochs, model, train_iterator, valid_iterator, optimizer, criterion)\u001b[0m\n\u001b[1;32m 90\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 91\u001b[0m \u001b[0;31m# train the model\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 92\u001b[0;31m \u001b[0mtrain_loss\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtrain_acc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtrain\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmodel\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtrain_iterator\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0moptimizer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcriterion\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 93\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 94\u001b[0m \u001b[0;31m# evaluate the model\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m\u001b[0m in \u001b[0;36mtrain\u001b[0;34m(model, iterator, optimizer, criterion)\u001b[0m\n\u001b[1;32m 22\u001b[0m \u001b[0moptimizer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mzero_grad\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 23\u001b[0m \u001b[0;31m# zero accumulated gradients\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 24\u001b[0;31m \u001b[0mmodel\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mzero_grad\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 25\u001b[0m \u001b[0;31m# retrieve text and no. of words\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 26\u001b[0m \u001b[0mtext\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtext_lengths\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mbatch\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtext\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/torch/nn/modules/module.py\u001b[0m in \u001b[0;36mzero_grad\u001b[0;34m(self, set_to_none)\u001b[0m\n\u001b[1;32m 1510\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1511\u001b[0m \u001b[0mp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgrad\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrequires_grad_\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1512\u001b[0;31m \u001b[0mp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgrad\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mzero_\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1513\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1514\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mshare_memory\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mT\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m->\u001b[0m \u001b[0mT\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + ] + } + ] }, - "id": "3R8NdKcbz9kt" - }, - "source": [ - "vis_word = []\n", - "colorlist= []\n", - "def interpret_word(model, word, min_len = max_document_length, label = 0):\n", - " model.train()\n", - " text = preprocess(word)\n", - " actual_len = 1\n", - " if len(text) < min_len:\n", - " text += [''] * (min_len - len(text))\n", - " indexed = [Text.vocab.stoi[t] for t in text]\n", - "\n", - " model.zero_grad()\n", - "\n", - " input_indices = torch.tensor(indexed, device=device)\n", - " input_indices = input_indices.unsqueeze(0)\n", - " text_length = torch.tensor([actual_len], device=device)\n", - " # input_indices dim: [sequence_length]\n", - " seq_length = min_len\n", - "\n", - " # predict\n", - " pred = F.softmax(model(input_indices, text_length)[0]).cpu()\n", - "\n", - "\n", - " vis_word.append(pred.detach().numpy().squeeze(0))\n", - " colorlist.append({0:'#00ff00', 1: '#00ffff', 2:'#000000' }[pred.argmax(dim=1).item()])" - ], - "execution_count": 33, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "pycharm": { - "name": "#%%\n" + { + "cell_type": "code", + "metadata": { + "id": "zNhQggYQJrUm", + "pycharm": { + "name": "#%%\n" + } + }, + "source": [ + "lstm_model.load_state_dict(torch.load('checkpoint/twitter.t7', map_location=device))\n", + "# predict\n", + "test_loss, test_acc = evaluate(lstm_model, test_iterator, loss_func, report=True)\n", + "print(f'Test Loss: {test_loss:.3f} | Test Acc: {test_acc * 100:.2f}%')" + ], + "execution_count": null, + "outputs": [] }, - "colab": { - "base_uri": "https://localhost:8080/" + { + "cell_type": "markdown", + "metadata": { + "collapsed": false, + "id": "ocDF29euwWph" + }, + "source": [ + "If the model is predicted perfectly confusion matrix should be diagonal which indicates values off the main diagonal representing incorrect prediction is zero" + ] }, - "id": "kMTrDK7sz9kt", - "outputId": "be9a3f13-4c76-4d23-fb91-a5e2da1be075" - }, - "source": [ - "for i in Text.vocab.itos:\n", - " interpret_word(lstm_model, i)" - ], - "execution_count": 34, - "outputs": [ { - "name": "stderr", - "output_type": "stream", - "text": [ - "c:\\program files\\python37\\lib\\site-packages\\ipykernel_launcher.py:20: UserWarning: Implicit dimension choice for softmax has been deprecated. Change the call to include dim=X as an argument.\n" - ] - } - ] - }, - { - "cell_type": "code", - "metadata": { - "pycharm": { - "name": "#%%\n" + "cell_type": "markdown", + "metadata": { + "id": "QifVxbhqJrUm", + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "## Visualizing the model" + ] }, - "id": "ndkX6219z9kt" - }, - "source": [ - "from sklearn.manifold import TSNE\n", - "tsne = TSNE(n_components=2, random_state=0)\n", - "words_top_ted_tsne = tsne.fit_transform(vis_word)" - ], - "execution_count": 35, - "outputs": [] - }, - { - "cell_type": "code", - "metadata": { - "ExecuteTime": { - "end_time": "2021-04-05T15:55:28.003009Z", - "start_time": "2021-04-05T15:55:27.883014Z" + { + "cell_type": "code", + "metadata": { + "ExecuteTime": { + "end_time": "2021-04-04T20:11:40.665155Z", + "start_time": "2021-04-04T20:11:40.648151Z" + }, + "id": "gH1wMUQVJrUm", + "pycharm": { + "name": "#%%\n" + } + }, + "source": [ + "vis_data_records_ig = []\n", + "def forward(input, text_length):\n", + " return F.softmax(lstm_model(input, text_length)[0])\n", + "lig = LayerIntegratedGradients(forward, lstm_model.embedding)\n", + "def interpret_sentence(model, sentence, min_len = max_document_length, label = 0):\n", + " model.train()\n", + " h = model.init_hidden(1)\n", + " h500 = model.init_hidden(500)\n", + " text = preprocess(sentence)\n", + " actual_len = len(text)\n", + " if len(text) < min_len:\n", + " text += [''] * (min_len - len(text))\n", + " indexed = [Text.vocab.stoi[t] for t in text]\n", + "\n", + " model.zero_grad()\n", + "\n", + " input_indices = torch.tensor(indexed, device=device)\n", + " input_indices = input_indices.unsqueeze(0)\n", + " text_length = torch.tensor([actual_len], device=device)\n", + " # input_indices dim: [sequence_length]\n", + " seq_length = min_len\n", + "\n", + " # predict\n", + " pred = F.softmax(model(input_indices, text_length, h)[0]).argmax(dim=1).item()\n", + " pred_ind = round(pred)\n", + "\n", + " # generate reference indices for each sample\n", + " reference_indices = token_reference.generate_reference(seq_length, device=device).unsqueeze(0)\n", + "\n", + " # compute attributions and approximation delta using layer integrated gradients\n", + " attributions_ig, delta = lig.attribute(input_indices, reference_indices,\n", + " n_steps=500,target=2-label, return_convergence_delta=True, additional_forward_args=text_length)\n", + "\n", + " print(sentence, 'pred: ', {1:'positive', 0: 'netural', 2: 'negative'}[pred_ind], '(', '%.2f'%pred, ')', ', delta: ', abs(delta))\n", + "\n", + " add_attributions_to_visualizer(attributions_ig, text, pred, pred_ind, label, delta, vis_data_records_ig)\n", + "\n", + "def add_attributions_to_visualizer(attributions, text, pred, pred_ind, label, delta, vis_data_records):\n", + " attributions = attributions.sum(dim=2).squeeze(0)\n", + " attributions = attributions / torch.norm(attributions)\n", + " attributions = attributions.cpu().detach().numpy()\n", + "\n", + "\n", + " # storing couple samples in an array for visualization purposes\n", + " vis_data_records.append(visualization.VisualizationDataRecord(\n", + " attributions,\n", + " pred,\n", + " {1:'positive', 0: 'netural', 2: 'negative'}[pred_ind],\n", + " {1:'positive', 0: 'netural', 2: 'negative'}[label],\n", + " {1:'positive', 0: 'netural', 2: 'negative'}[label],\n", + " attributions.sum(),\n", + " text,\n", + " delta))" + ], + "execution_count": null, + "outputs": [] }, - "pycharm": { - "name": "#%%\n" + { + "cell_type": "code", + "metadata": { + "pycharm": { + "name": "#%%\n" + }, + "id": "wUrqYoqLz9ks" + }, + "source": [ + "interpret_sentence(lstm_model, 'It was a fantastic performance !', label=1)\n", + "interpret_sentence(lstm_model, 'Best film ever', label=1)\n", + "interpret_sentence(lstm_model, 'Such a great show!', label=1)\n", + "interpret_sentence(lstm_model, 'It was a horrible movie', label=2)\n", + "interpret_sentence(lstm_model, 'I\\'ve never watched something as bad', label=2)\n", + "interpret_sentence(lstm_model, 'It is a disgusting movie!', label=2)\n", + "interpret_sentence(lstm_model, 'normal', label=0)" + ], + "execution_count": null, + "outputs": [] }, - "colab": { - "base_uri": "https://localhost:8080/", - "height": 617 + { + "cell_type": "code", + "metadata": { + "pycharm": { + "name": "#%%\n" + }, + "id": "sheZvYeYz9ks" + }, + "source": [ + "_ = visualization.visualize_text(vis_data_records_ig)" + ], + "execution_count": null, + "outputs": [] }, - "id": "Yd79T06dz9kt", - "outputId": "44a51fe1-47d8-4307-cb08-da572e2c800c" - }, - "source": [ - "p = figure(tools=\"pan,wheel_zoom,reset,save\",\n", - " toolbar_location=\"above\",\n", - " title=\"vector T-SNE for most polarized words\")\n", - "\n", - "source = ColumnDataSource(data=dict(x1=words_top_ted_tsne[:,0],\n", - " x2=words_top_ted_tsne[:,1],\n", - " names=Text.vocab.itos,\n", - " color=colorlist))\n", - "\n", - "p.scatter(x=\"x1\", y=\"x2\", size=8, source=source, fill_color=\"color\")\n", - "\n", - "word_labels = LabelSet(x=\"x1\", y=\"x2\", text=\"names\", y_offset=6,\n", - " text_font_size=\"8pt\", text_color=\"#555555\",\n", - " source=source, text_align='center',render_mode='canvas')\n", - "# p.add_layout(word_labels)\n", - "\n", - "show(p)\n" - ], - "execution_count": 36, - "outputs": [ { - "data": { - "text/html": "\n\n\n\n\n\n
\n" - }, - "metadata": {}, - "output_type": "display_data" + "cell_type": "code", + "metadata": { + "pycharm": { + "name": "#%%\n" + }, + "id": "3R8NdKcbz9kt" + }, + "source": [ + "vis_word = []\n", + "colorlist= []\n", + "def interpret_word(model, word, min_len = max_document_length, label = 0):\n", + " model.train()\n", + " text = preprocess(word)\n", + " actual_len = 1\n", + " if len(text) < min_len:\n", + " text += [''] * (min_len - len(text))\n", + " indexed = [Text.vocab.stoi[t] for t in text]\n", + "\n", + " model.zero_grad()\n", + "\n", + " input_indices = torch.tensor(indexed, device=device)\n", + " input_indices = input_indices.unsqueeze(0)\n", + " text_length = torch.tensor([actual_len], device=device)\n", + " # input_indices dim: [sequence_length]\n", + " seq_length = min_len\n", + "\n", + " # predict\n", + " pred = F.softmax(model(input_indices, text_length)[0]).cpu()\n", + "\n", + "\n", + " vis_word.append(pred.detach().numpy().squeeze(0))\n", + " colorlist.append({0:'#00ff00', 1: '#00ffff', 2:'#000000' }[pred.argmax(dim=1).item()])" + ], + "execution_count": null, + "outputs": [] }, { - "data": { - "application/javascript": "(function(root) {\n function embed_document(root) {\n \n var docs_json = {\"4771f0a6-ffaa-4d9c-9218-11d51d85f8b1\":{\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1013\"}],\"center\":[{\"id\":\"1016\"},{\"id\":\"1020\"}],\"left\":[{\"id\":\"1017\"}],\"renderers\":[{\"id\":\"1034\"}],\"title\":{\"id\":\"1003\"},\"toolbar\":{\"id\":\"1025\"},\"toolbar_location\":\"above\",\"x_range\":{\"id\":\"1005\"},\"x_scale\":{\"id\":\"1009\"},\"y_range\":{\"id\":\"1007\"},\"y_scale\":{\"id\":\"1011\"}},\"id\":\"1002\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"source\":{\"id\":\"1030\"}},\"id\":\"1035\",\"type\":\"CDSView\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"field\":\"color\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"units\":\"screen\",\"value\":8},\"x\":{\"field\":\"x1\"},\"y\":{\"field\":\"x2\"}},\"id\":\"1033\",\"type\":\"Scatter\"},{\"attributes\":{},\"id\":\"1005\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1023\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1011\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1039\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1018\",\"type\":\"BasicTicker\"},{\"attributes\":{\"formatter\":{\"id\":\"1039\"},\"ticker\":{\"id\":\"1018\"}},\"id\":\"1017\",\"type\":\"LinearAxis\"},{\"attributes\":{\"axis\":{\"id\":\"1017\"},\"dimension\":1,\"ticker\":null},\"id\":\"1020\",\"type\":\"Grid\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"1021\"},{\"id\":\"1022\"},{\"id\":\"1023\"},{\"id\":\"1024\"}]},\"id\":\"1025\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"1041\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{\"formatter\":{\"id\":\"1041\"},\"ticker\":{\"id\":\"1014\"}},\"id\":\"1013\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1014\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1043\",\"type\":\"UnionRenderers\"},{\"attributes\":{\"text\":\"vector T-SNE for most polarized words\"},\"id\":\"1003\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1021\",\"type\":\"PanTool\"},{\"attributes\":{},\"id\":\"1044\",\"type\":\"Selection\"},{\"attributes\":{},\"id\":\"1009\",\"type\":\"LinearScale\"},{\"attributes\":{\"data_source\":{\"id\":\"1030\"},\"glyph\":{\"id\":\"1032\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1033\"},\"selection_glyph\":null,\"view\":{\"id\":\"1035\"}},\"id\":\"1034\",\"type\":\"GlyphRenderer\"},{\"attributes\":{},\"id\":\"1022\",\"type\":\"WheelZoomTool\"},{\"attributes\":{\"fill_color\":{\"field\":\"color\"},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"units\":\"screen\",\"value\":8},\"x\":{\"field\":\"x1\"},\"y\":{\"field\":\"x2\"}},\"id\":\"1032\",\"type\":\"Scatter\"},{\"attributes\":{},\"id\":\"1024\",\"type\":\"SaveTool\"},{\"attributes\":{\"data\":{\"color\":[\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ffff\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ffff\",\"#00ffff\",\"#00ffff\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ffff\",\"#000000\",\"#000000\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#000000\",\"#00ffff\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#000000\",\"#000000\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ffff\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ffff\",\"#00ffff\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ffff\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ffff\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\"],\"names\":[\"\",\"\",\"flight\",\"thank\",\"annoi\",\"hesit\",\"undecid\",\"uneasi\",\"co\",\"hour\",\"httpskeptic\",\"you\",\"cancel\",\"help\",\"it\",\"servic\",\"delai\",\"time\",\"custom\",\"can\",\"bag\",\"wait\",\"plane\",\"need\",\"hold\",\"amp\",\"fly\",\"dai\",\"airlin\",\"gate\",\"seat\",\"flightl\",\"book\",\"ve\",\"check\",\"we\",\"no\",\"chang\",\"don\",\"got\",\"phone\",\"like\",\"that\",\"try\",\"todai\",\"hr\",\"us\",\"late\",\"agent\",\"gui\",\"now\",\"work\",\"miss\",\"ticket\",\"on\",\"know\",\"what\",\"go\",\"min\",\"re\",\"me\",\"wai\",\"airport\",\"call\",\"board\",\"travel\",\"minut\",\"want\",\"get\",\"great\",\"thi\",\"weather\",\"connect\",\"tomorrow\",\"problem\",\"not\",\"good\",\"new\",\"home\",\"issu\",\"look\",\"peopl\",\"email\",\"love\",\"pleas\",\"the\",\"let\",\"sit\",\"told\",\"ll\",\"luggag\",\"rebook\",\"aa\",\"number\",\"reserv\",\"is\",\"my\",\"crew\",\"dm\",\"unit\",\"lost\",\"baggag\",\"passeng\",\"trip\",\"how\",\"respons\",\"worst\",\"ye\",\"again\",\"sai\",\"tell\",\"do\",\"experi\",\"just\",\"right\",\"have\",\"line\",\"your\",\"thei\",\"why\",\"am\",\"ua\",\"in\",\"leav\",\"didn\",\"hope\",\"onlin\",\"week\",\"there\",\"come\",\"and\",\"jfk\",\"answer\",\"arriv\",\"pai\",\"staff\",\"make\",\"happi\",\"our\",\"bad\",\"best\",\"so\",\"long\",\"better\",\"follow\",\"left\",\"sure\",\"land\",\"said\",\"updat\",\"won\",\"think\",\"refund\",\"stuck\",\"mile\",\"pm\",\"all\",\"but\",\"morn\",\"care\",\"doesn\",\"sent\",\"flightr\",\"ask\",\"tonight\",\"busi\",\"flt\",\"happen\",\"websit\",\"appreci\",\"hotel\",\"night\",\"attend\",\"out\",\"will\",\"fleet\",\"fleek\",\"dfw\",\"tri\",\"lax\",\"year\",\"up\",\"confirm\",\"info\",\"offer\",\"final\",\"air\",\"to\",\"nice\",\"upgrad\",\"charg\",\"pilot\",\"person\",\"voucher\",\"credit\",\"rude\",\"talk\",\"avail\",\"free\",\"ago\",\"point\",\"fix\",\"send\",\"class\",\"rep\",\"start\",\"thing\",\"if\",\"pass\",\"ani\",\"st\",\"sfo\",\"contact\",\"option\",\"frustrat\",\"take\",\"employe\",\"abl\",\"open\",\"receiv\",\"tweet\",\"back\",\"phl\",\"claim\",\"fee\",\"stop\",\"face\",\"still\",\"here\",\"speak\",\"understand\",\"wifi\",\"app\",\"awesom\",\"differ\",\"disappoint\",\"ord\",\"team\",\"statu\",\"actual\",\"she\",\"yesterdai\",\"hi\",\"dca\",\"suppos\",\"terribl\",\"too\",\"plan\",\"ar\",\"departur\",\"amaz\",\"ok\",\"instead\",\"sorri\",\"suck\",\"direct\",\"earli\",\"la\",\"return\",\"schedul\",\"extra\",\"frown\",\"gt\",\"rt\",\"thx\",\"isn\",\"jetblu\",\"site\",\"couldn\",\"haven\",\"kid\",\"bo\",\"friend\",\"ground\",\"mean\",\"paid\",\"smilei\",\"clt\",\"deal\",\"earlier\",\"lot\",\"monei\",\"allow\",\"famili\",\"polici\",\"realli\",\"reason\",\"show\",\"ewr\",\"job\",\"compani\",\"took\",\"add\",\"card\",\"chanc\",\"provid\",\"strand\",\"wasn\",\"depart\",\"expect\",\"member\",\"messag\",\"big\",\"did\",\"ever\",\"hung\",\"month\",\"repli\",\"snow\",\"account\",\"oh\",\"question\",\"respond\",\"vega\",\"wife\",\"airplan\",\"lose\",\"tarmac\",\"th\",\"airwai\",\"boston\",\"dalla\",\"old\",\"when\",\"feel\",\"horribl\",\"mechan\",\"southwest\",\"them\",\"assist\",\"chicago\",\"give\",\"pick\",\"poor\",\"possibl\",\"ridicul\",\"apolog\",\"for\",\"run\",\"san\",\"well\",\"yet\",\"denver\",\"reschedul\",\"serious\",\"never\",\"request\",\"treat\",\"twitter\",\"unaccept\",\"ur\",\"wa\",\"american\",\"caus\",\"cost\",\"keep\",\"at\",\"awai\",\"been\",\"mayb\",\"vacat\",\"desk\",\"end\",\"far\",\"flightlat\",\"food\",\"hang\",\"inform\",\"nyc\",\"stai\",\"wrong\",\"count\",\"gave\",\"half\",\"link\",\"past\",\"destin\",\"handl\",\"complaint\",\"aw\",\"bc\",\"complet\",\"hei\",\"noth\",\"broken\",\"fail\",\"hear\",\"off\",\"went\",\"car\",\"row\",\"wonder\",\"compens\",\"much\",\"price\",\"twice\",\"commun\",\"current\",\"error\",\"littl\",\"move\",\"runwai\",\"soon\",\"pl\",\"switch\",\"charlott\",\"guess\",\"iad\",\"idea\",\"place\",\"rout\",\"termin\",\"veri\",\"with\",\"would\",\"bring\",\"carri\",\"newark\",\"wors\",\"citi\",\"fll\",\"houston\",\"intern\",\"purchas\",\"after\",\"first\",\"he\",\"lack\",\"longer\",\"phx\",\"real\",\"drive\",\"lga\",\"reach\",\"believ\",\"drop\",\"given\",\"hard\",\"list\",\"plu\",\"room\",\"second\",\"watch\",\"cool\",\"deliv\",\"disconnect\",\"head\",\"life\",\"live\",\"sat\",\"see\",\"thought\",\"cust\",\"fare\",\"had\",\"im\",\"then\",\"turn\",\"also\",\"bui\",\"close\",\"figur\",\"heard\",\"jet\",\"load\",\"lol\",\"sleep\",\"accept\",\"httpsskeptic\",\"nd\",\"process\",\"system\",\"address\",\"down\",\"even\",\"onli\",\"origin\",\"philli\",\"total\",\"group\",\"human\",\"iah\",\"leg\",\"mainten\",\"reflight\",\"share\",\"sw\",\"wast\",\"dc\",\"forward\",\"quick\",\"standbi\",\"world\",\"worri\",\"wouldn\",\"absolut\",\"as\",\"date\",\"den\",\"form\",\"glad\",\"mondai\",\"relat\",\"announc\",\"club\",\"entir\",\"ic\",\"joke\",\"resolv\",\"tv\",\"yr\",\"ad\",\"bwi\",\"ceo\",\"file\",\"loyal\",\"manag\",\"non\",\"oper\",\"where\",\"aren\",\"award\",\"case\",\"done\",\"explain\",\"locat\",\"miami\",\"name\",\"or\",\"refus\",\"screw\",\"spent\",\"swa\",\"wish\",\"word\",\"blue\",\"flew\",\"flyer\",\"hate\",\"mess\",\"over\",\"read\",\"rock\",\"usair\",\"who\",\"be\",\"correct\",\"more\",\"counter\",\"forc\",\"record\",\"ruin\",\"should\",\"supervisor\",\"taken\",\"train\",\"yeah\",\"alreadi\",\"anoth\",\"bought\",\"from\",\"fuck\",\"hopefulli\",\"mco\",\"promis\",\"someon\",\"spend\",\"support\",\"wow\",\"anyth\",\"concern\",\"continu\",\"fault\",\"pretti\",\"sundai\",\"though\",\"thumbs_up\",\"asap\",\"detail\",\"inconveni\",\"kind\",\"lt\",\"meet\",\"post\",\"report\",\"situat\",\"super\",\"access\",\"appar\",\"autom\",\"cloth\",\"door\",\"drink\",\"futur\",\"high\",\"learn\",\"safe\",\"set\",\"storm\",\"suggest\",\"transfer\",\"cabin\",\"companion\",\"fine\",\"huge\",\"readi\",\"select\",\"sign\",\"tsa\",\"atl\",\"delta\",\"feb\",\"nashvil\",\"of\",\"okai\",\"tuesdai\",\"unfortun\",\"austin\",\"bump\",\"checkin\",\"cross\",\"expir\",\"extrem\",\"flown\",\"layov\",\"probabl\",\"safeti\",\"through\",\"upset\",\"accommod\",\"atlanta\",\"could\",\"crazi\",\"easi\",\"fact\",\"folded_hand\",\"note\",\"orlando\",\"sad\",\"save\",\"submit\",\"togeth\",\"zero\",\"dont\",\"gonna\",\"ha\",\"middl\",\"mom\",\"pre\",\"prioriti\",\"seen\",\"shit\",\"shouldn\",\"state\",\"stick\",\"weekend\",\"aircraft\",\"cold\",\"daughter\",\"hand\",\"husband\",\"notic\",\"platinum\",\"reimburs\",\"space\",\"troubl\",\"water\",\"came\",\"control\",\"dividend\",\"fun\",\"loung\",\"luck\",\"matter\",\"multipl\",\"offic\",\"pouting_fac\",\"rdu\",\"sens\",\"serv\",\"wink_or_smirk\",\"birthdai\",\"consid\",\"countri\",\"despit\",\"enjoi\",\"friendli\",\"gold\",\"hello\",\"laugh\",\"listen\",\"mia\",\"mobil\",\"notif\",\"ppl\",\"rate\",\"rd\",\"round\",\"spoke\",\"tix\",\"unabl\",\"usual\",\"winter\",\"wtf\",\"yall\",\"anyon\",\"appli\",\"area\",\"babi\",\"catch\",\"code\",\"entertain\",\"excus\",\"held\",\"id\",\"impress\",\"item\",\"knew\",\"letter\",\"luv\",\"meal\",\"media\",\"mileag\",\"next\",\"notifi\",\"ny\",\"other\",\"page\",\"prefer\",\"secur\",\"stand\",\"text\",\"track\",\"true\",\"wall\",\"afternoon\",\"attitud\",\"choic\",\"cover\",\"folk\",\"fridai\",\"goe\",\"haha\",\"hasn\",\"itinerari\",\"ladi\",\"man\",\"overhead\",\"overnight\",\"red_heart\",\"short\",\"small\",\"step\",\"tag\",\"child\",\"includ\",\"mail\",\"program\",\"pull\",\"social\",\"son\",\"surpris\",\"virgin\",\"assign\",\"bit\",\"blame\",\"bna\",\"clapping_hand\",\"clear\",\"cut\",\"doe\",\"excel\",\"exist\",\"hire\",\"incompet\",\"li\",\"liter\",\"march\",\"mistak\",\"plz\",\"push\",\"ride\",\"saw\",\"sort\",\"tire\",\"win\",\"window\",\"worth\",\"advisori\",\"attempt\",\"center\",\"conf\",\"earn\",\"everyon\",\"excit\",\"explan\",\"feedback\",\"fl\",\"gone\",\"incred\",\"last\",\"nope\",\"requir\",\"reward\",\"saturdai\",\"sound\",\"stori\",\"volum\",\"web\",\"clean\",\"comput\",\"cours\",\"definit\",\"enter\",\"ey\",\"found\",\"honor\",\"kudo\",\"mention\",\"order\",\"phoenix\",\"premier\",\"receipt\",\"repres\",\"same\",\"ski\",\"about\",\"anymor\",\"break\",\"btw\",\"cs\",\"damag\",\"deplan\",\"domest\",\"dragon\",\"everi\",\"failur\",\"fan\",\"flightd\",\"frequent\",\"full\",\"funer\",\"her\",\"kept\",\"mind\",\"plai\",\"snack\",\"video\",\"view\",\"walk\",\"alwai\",\"bank\",\"blow\",\"bother\",\"by\",\"captain\",\"crying_fac\",\"deserv\",\"dollar\",\"equip\",\"expens\",\"finger\",\"flightat\",\"improv\",\"power\",\"special\",\"stuff\",\"svc\",\"takeoff\",\"unhelp\",\"warm\",\"wed\",\"au\",\"cater\",\"choos\",\"disgust\",\"experienc\",\"find\",\"mai\",\"major\",\"offici\",\"parti\",\"sell\",\"touch\",\"appear\",\"bs\",\"cc\",\"complain\",\"corpor\",\"deni\",\"especi\",\"except\",\"fair\",\"jb\",\"merg\",\"merger\",\"mexico\",\"posit\",\"remind\",\"singl\",\"sister\",\"slow\",\"some\",\"two\",\"usairwai\",\"useless\",\"weren\",\"addit\",\"altern\",\"around\",\"auto\",\"befor\",\"bird\",\"carrier\",\"emerg\",\"fill\",\"ignor\",\"interest\",\"made\",\"match\",\"nightmar\",\"nonstop\",\"onboard\",\"passbook\",\"philadelphia\",\"realiz\",\"redeem\",\"rememb\",\"rerout\",\"street\",\"suitcas\",\"tmrw\",\"visit\",\"welcom\",\"write\",\"advis\",\"battl\",\"begin\",\"broke\",\"callback\",\"cheeki\",\"confus\",\"dal\",\"damn\",\"de\",\"enough\",\"exit\",\"fantast\",\"fit\",\"forgot\",\"funni\",\"god\",\"hit\",\"imagin\",\"imposs\",\"kill\",\"overbook\",\"partner\",\"patient\",\"play\",\"print\",\"replac\",\"result\",\"rule\",\"screen\",\"stress\",\"tho\",\"trust\",\"winking_fac\",\"alert\",\"america\",\"becaus\",\"brother\",\"bu\",\"children\",\"clearli\",\"coach\",\"condit\",\"consist\",\"crash\",\"deliveri\",\"diego\",\"dismai\",\"engin\",\"fa\",\"favorit\",\"freez\",\"fyi\",\"gener\",\"hell\",\"import\",\"inflight\",\"insid\",\"internet\",\"log\",\"mad\",\"most\",\"music\",\"profit\",\"rental\",\"resolut\",\"sea\",\"seattl\",\"shame\",\"skeptic\",\"south\",\"taxi\",\"appeas\",\"avoid\",\"base\",\"basic\",\"beauti\",\"bin\",\"coffe\",\"decid\",\"dept\",\"event\",\"forev\",\"game\",\"glass\",\"gotten\",\"infant\",\"lie\",\"limit\",\"midnight\",\"nc\",\"outsid\",\"pgreat\",\"prompt\",\"rais\",\"recent\",\"shot\",\"sick\",\"solut\",\"specif\",\"stewardess\",\"till\",\"uk\",\"unbeliev\",\"unhappi\",\"weary_fac\",\"wednesdai\",\"yo\",\"act\",\"admir\",\"ahead\",\"an\",\"chairman\",\"clue\",\"commerci\",\"coupl\",\"daili\",\"degre\",\"diff\",\"discount\",\"effort\",\"els\",\"estim\",\"everyth\",\"extend\",\"fall\",\"fast\",\"fuel\",\"intl\",\"level\",\"main\",\"mon\",\"onc\",\"oscar\",\"pbi\",\"photo\",\"plenti\",\"previou\",\"put\",\"rent\",\"seem\",\"ugh\",\"yep\",\"afford\",\"angri\",\"automat\",\"ball\",\"bdai\",\"buffalo\",\"cheer\",\"cmh\",\"comp\",\"congrat\",\"decis\",\"design\",\"doubl\",\"eventu\",\"faster\",\"florida\",\"forget\",\"girl\",\"gotta\",\"hook\",\"hot\",\"jetwai\",\"journal\",\"known\",\"mark\",\"market\",\"moment\",\"mother\",\"normal\",\"park\",\"patienc\",\"pr\",\"premium\",\"prepar\",\"promo\",\"quickli\",\"red\",\"remov\",\"sale\",\"separ\",\"sold\",\"spring\",\"straight\",\"tampa\",\"thumbs_down\",\"traffic\",\"transport\",\"truli\",\"unamused_fac\",\"waiv\",\"affect\",\"ag\",\"anywai\",\"april\",\"brand\",\"cab\",\"carousel\",\"certif\",\"charact\",\"client\",\"com\",\"comfort\",\"courtesi\",\"disast\",\"divert\",\"eat\",\"either\",\"embarrass\",\"exactli\",\"exampl\",\"flier\",\"floor\",\"fund\",\"grin\",\"guarante\",\"honest\",\"hous\",\"insan\",\"interview\",\"iphon\",\"light\",\"met\",\"msg\",\"omg\",\"perfect\",\"pictur\",\"pleasant\",\"practic\",\"prevent\",\"profession\",\"public\",\"rr\",\"school\",\"silver\",\"simpli\",\"solv\",\"sun\",\"sweet\",\"tough\",\"ty\",\"type\",\"usa\",\"valu\",\"woman\",\"wont\",\"worker\",\"yell\",\"absurd\",\"advanc\",\"advantag\",\"almost\",\"arrang\",\"beat\",\"cheap\",\"click\",\"comment\",\"creat\",\"dad\",\"dull\",\"economi\",\"elit\",\"etc\",\"feet\",\"fight\",\"fort\",\"frm\",\"hare\",\"ipad\",\"jblu\",\"juan\",\"jump\",\"kick\",\"kp\",\"lead\",\"lhr\",\"local\",\"logan\",\"london\",\"low\",\"mdw\",\"nearli\",\"palm\",\"paper\",\"pathet\",\"peanut\",\"piec\",\"pit\",\"prior\",\"promot\",\"pt\",\"qualiti\",\"raspberri\",\"refer\",\"rest\",\"rsw\",\"sf\",\"shock\",\"sinc\",\"sju\",\"slc\",\"smh\",\"sos_button\",\"speed\",\"stl\",\"technic\",\"three\",\"thursdai\",\"til\",\"treatment\",\"vx\",\"wanna\",\"wheel\",\"ya\",\"acct\",\"action\",\"attent\",\"bet\",\"biz\",\"both\",\"buf\",\"cheaper\",\"cle\",\"coat\",\"columbu\",\"crappi\",\"dead\",\"death\",\"dia\",\"directli\",\"disappear\",\"discuss\",\"dog\",\"dream\",\"easili\",\"east\",\"frozen\",\"global\",\"howev\",\"immedi\",\"iv\",\"jan\",\"larg\",\"lauderdal\",\"lower\",\"militari\",\"minor\",\"near\",\"ok_hand\",\"opportun\",\"pair\",\"parent\",\"pic\",\"piss\",\"queue\",\"respect\",\"shuttl\",\"simpl\",\"sna\",\"song\",\"sooner\",\"suit\",\"texa\",\"unprofession\",\"victory_hand\",\"wheelchair\",\"ah\",\"airfar\",\"ass\",\"assum\",\"august\",\"awar\",\"bathroom\",\"bdl\",\"beach\",\"benefit\",\"black\",\"blue_heart\",\"carryon\",\"cell\",\"chair\",\"coast\",\"contest\",\"crap\",\"cun\",\"devic\",\"didnt\",\"difficult\",\"drunk\",\"easier\",\"express\",\"featur\",\"februari\",\"felt\",\"ft\",\"gear\",\"guitar\",\"hawaii\",\"higher\",\"holder\",\"honeymoon\",\"idiot\",\"inbound\",\"insult\",\"memphi\",\"million\",\"mine\",\"miser\",\"mke\",\"none\",\"nut\",\"obvious\",\"outlet\",\"pain\",\"pari\",\"part\",\"pax\",\"properli\",\"pvd\",\"raleigh\",\"ran\",\"rapid\",\"recommend\",\"releas\",\"retriev\",\"search\",\"shout\",\"size\",\"standard\",\"star\",\"student\",\"summer\",\"tpa\",\"unavail\",\"understaf\",\"weight\",\"west\",\"wet\",\"yea\",\"york\",\"yyz\",\"accord\",\"accur\",\"activ\",\"advertis\",\"balanc\",\"chat\",\"commit\",\"convers\",\"costum\",\"coupon\",\"cry\",\"disgrac\",\"doubt\",\"drove\",\"english\",\"est\",\"exact\",\"fam\",\"fi\",\"finish\",\"four\",\"freak\",\"function\",\"heart\",\"hundr\",\"hunt\",\"indic\",\"jh\",\"kiosk\",\"laptop\",\"lb\",\"legroom\",\"less\",\"lesson\",\"loyalti\",\"mani\",\"meant\",\"medic\",\"might\",\"model\",\"movi\",\"msp\",\"must\",\"nasti\",\"nj\",\"pensive_fac\",\"perform\",\"poorli\",\"prob\",\"review\",\"rip\",\"road\",\"sever\",\"sky\",\"smile\",\"someth\",\"spot\",\"term\",\"these\",\"throw\",\"tue\",\"ual\",\"va\",\"aadvantag\",\"approach\",\"approv\",\"asham\",\"ba\",\"broken_heart\",\"cancun\",\"certainli\",\"chi\",\"compass\",\"confer\",\"david\",\"defin\",\"dinner\",\"dirti\",\"disrespect\",\"due\",\"elev\",\"exec\",\"faa\",\"father\",\"field\",\"formal\",\"fraud\",\"ga\",\"garbag\",\"gift\",\"golf\",\"handler\",\"heat\",\"honestli\",\"hostag\",\"ill\",\"incid\",\"ind\",\"initi\",\"inspir\",\"int\",\"join\",\"laguardia\",\"lap\",\"memori\",\"method\",\"mileageplu\",\"mint\",\"msy\",\"okc\",\"outbound\",\"outstand\",\"ow\",\"pa\",\"pack\",\"payment\",\"perhap\",\"personnel\",\"present\",\"procedur\",\"regist\",\"repair\",\"repeat\",\"ring\",\"roundtrip\",\"sadli\",\"shitti\",\"somebodi\",\"split\",\"stroller\",\"sunni\",\"surgeri\",\"tea\",\"tech\",\"those\",\"toddler\",\"trueblu\",\"understood\",\"unus\",\"upcom\",\"valid\",\"warn\",\"yai\",\"advic\",\"agre\",\"allianc\",\"anywher\",\"apart\",\"assur\",\"australia\",\"badli\",\"band\",\"beer\",\"biggest\",\"bogota\",\"boyfriend\",\"brought\",\"bummer\",\"button\",\"california\",\"celebr\",\"central\",\"certain\",\"cleveland\",\"complimentari\",\"confused_fac\",\"cont\",\"csr\",\"cuz\",\"doesnt\",\"dozen\",\"effici\",\"em\",\"equal\",\"flightli\",\"francisco\",\"heathrow\",\"histori\",\"ici\",\"increas\",\"industri\",\"ktn\",\"lame\",\"law\",\"least\",\"loos\",\"lousi\",\"lucki\",\"mech\",\"midwai\",\"mr\",\"myself\",\"odd\",\"pittsburgh\",\"plat\",\"polic\",\"privat\",\"puerto\",\"remain\",\"republican\",\"revenu\",\"ric\",\"salt\",\"seek\",\"self\",\"shoe\",\"shortli\",\"sight\",\"sincer\",\"sjc\",\"smiling_fac\",\"smooth\",\"statement\",\"stupid\",\"teach\",\"tkt\",\"toilet\",\"transact\",\"tx\",\"unreal\",\"voic\",\"volunt\",\"washington\",\"waterburi\",\"winner\",\"young\",\"zone\",\"abc\",\"abq\",\"acknowledg\",\"ahold\",\"alright\",\"anniversari\",\"anytim\",\"applic\",\"argu\",\"articl\",\"aug\",\"await\",\"bai\",\"bare\",\"belong\",\"blog\",\"boi\",\"bonu\",\"bottl\",\"breakfast\",\"browser\",\"bug\",\"bunch\",\"ca\",\"camera\",\"canada\",\"cart\",\"cash\",\"challeng\",\"channel\",\"charleston\",\"collect\",\"combin\",\"common\",\"compar\",\"copi\",\"correctli\",\"cup\",\"curiou\",\"cx\",\"cxl\",\"danc\",\"develop\",\"dmed\",\"donat\",\"downgrad\",\"dtw\",\"dy\",\"each\",\"eastern\",\"empti\",\"ensur\",\"epic\",\"eta\",\"exchang\",\"execut\",\"fabul\",\"faith\",\"fals\",\"fb\",\"ff\",\"flat\",\"fra\",\"gr\",\"grand\",\"greet\",\"gross\",\"growing_heart\",\"guest\",\"hadn\",\"hassl\",\"horrend\",\"hou\",\"hpn\",\"huh\",\"integr\",\"irrit\",\"jack\",\"jax\",\"john\",\"jp\",\"juli\",\"karen\",\"lauren\",\"legal\",\"liveri\",\"luckili\",\"magic\",\"malfunct\",\"manner\",\"mari\",\"mci\",\"mid\",\"misplac\",\"monitor\",\"nah\",\"nation\",\"nexu\",\"noon\",\"occur\",\"outsourc\",\"paperwork\",\"party_popp\",\"passport\",\"password\",\"penalti\",\"pend\",\"period\",\"portland\",\"prai\",\"protect\",\"prove\",\"race\",\"reagan\",\"refresh\",\"rough\",\"scan\",\"scaveng\",\"segment\",\"seriou\",\"ship\",\"shut\",\"sigh\",\"skill\",\"spoken\",\"stink\",\"strike\",\"survei\",\"tablet\",\"thousand\",\"threaten\",\"ton\",\"trap\",\"truck\",\"uncomfort\",\"waiver\",\"wind\",\"abil\",\"abt\",\"agenc\",\"anticip\",\"appal\",\"appropri\",\"atroci\",\"backup\",\"badg\",\"baltimor\",\"bar\",\"belt\",\"birmingham\",\"block\",\"buck\",\"bullshit\",\"canadian\",\"chao\",\"chicken\",\"compliment\",\"confid\",\"consider\",\"content\",\"courteou\",\"ctl\",\"dealt\",\"dear\",\"decemb\",\"decent\",\"deep\",\"desper\",\"dest\",\"di\",\"die\",\"digit\",\"disorgan\",\"disregard\",\"document\",\"download\",\"dr\",\"driver\",\"dure\",\"educ\",\"ep\",\"europ\",\"explor\",\"extens\",\"fire\",\"flightst\",\"forecast\",\"forth\",\"gain\",\"girlfriend\",\"grandma\",\"harder\",\"headach\",\"him\",\"hnl\",\"hub\",\"hubbi\",\"hungri\",\"inch\",\"ing\",\"invit\",\"io\",\"januari\",\"june\",\"lifetim\",\"lit\",\"loss\",\"loui\",\"machin\",\"male\",\"membership\",\"metal\",\"mi\",\"numer\",\"octob\",\"organ\",\"pen\",\"perk\",\"pillow\",\"plastic\",\"pocket\",\"pound\",\"preboard\",\"pressur\",\"progress\",\"ps\",\"purpos\",\"raising_hand\",\"ramp\",\"rectifi\",\"redirect\",\"refuel\",\"regul\",\"reinstat\",\"relationship\",\"resch\",\"reset\",\"rico\",\"robot\",\"roc\",\"selfi\",\"shop\",\"shown\",\"snowflak\",\"spread\",\"staf\",\"stat\",\"stolen\",\"success\",\"such\",\"sxm\",\"tabl\",\"terri\",\"test\",\"thnx\",\"thru\",\"top\",\"turbul\",\"typic\",\"uh\",\"unload\",\"van\",\"vs\",\"wallet\",\"weird\",\"which\",\"white\",\"wi\",\"wine\",\"wk\",\"women\",\"wrote\",\"wth\",\"yup\",\"yvr\",\"abysm\",\"admit\",\"adopt\",\"albani\",\"although\",\"asleep\",\"aspen\",\"batteri\",\"bill\",\"blah\",\"blast\",\"bridg\",\"brilliant\",\"buddi\",\"bush\",\"cabo\",\"caller\",\"capt\",\"chase\",\"circl\",\"clarifi\",\"closer\",\"colleagu\",\"colleg\",\"color\",\"comm\",\"compet\",\"competit\",\"concours\",\"conflict\",\"constant\",\"continent\",\"contract\",\"cousin\",\"cowork\",\"cracker\",\"crewmemb\",\"crowd\",\"cvg\",\"data\",\"depend\",\"destroi\",\"detroit\",\"dial\",\"discov\",\"disnei\",\"displai\",\"dissatisfi\",\"dl\",\"dming\",\"driven\",\"dumb\",\"earth\",\"ella\",\"elsewher\",\"en\",\"enrout\",\"esp\",\"etongu\",\"evalu\",\"everytim\",\"ex\",\"exhaust\",\"exp\",\"expedit\",\"facebook\",\"fat\",\"film\",\"fortun\",\"fresh\",\"fulli\",\"getawai\",\"gf\",\"glitch\",\"goodwil\",\"grinning_fac\",\"grr\",\"gtwink\",\"happili\",\"hartford\",\"headphon\",\"heavi\",\"heck\",\"highli\",\"humor\",\"hurt\",\"impact\",\"inappropri\",\"inclement\",\"incom\",\"incur\",\"inexcus\",\"injuri\",\"intent\",\"investig\",\"involv\",\"isnt\",\"jacksonvil\",\"jose\",\"journei\",\"jt\",\"kei\",\"kinda\",\"kn\",\"licens\",\"lock\",\"lodg\",\"ly\",\"maint\",\"map\",\"massiv\",\"mem\",\"menu\",\"mex\",\"nearbi\",\"nervou\",\"nh\",\"north\",\"often\",\"ogg\",\"otherwis\",\"overal\",\"overweight\",\"own\",\"packag\",\"palm_tre\",\"pet\",\"ph\",\"physic\",\"plain\",\"planet\",\"po\",\"precheck\",\"pro\",\"proper\",\"qualifi\",\"quot\",\"rare\",\"reconsid\",\"ref\",\"regular\",\"rel\",\"reliabl\",\"remot\",\"ribbon\",\"rob\",\"savannah\",\"scale\",\"scare\",\"sec\",\"shirt\",\"side\",\"signific\",\"similar\",\"slept\",\"softwar\",\"spanish\",\"spirit\",\"steal\",\"stellar\",\"stole\",\"stood\",\"stranger\",\"stream\",\"superior\",\"tail\",\"teen\",\"tel\",\"telephon\",\"thankfulli\",\"tick\",\"tini\",\"tone\",\"truth\",\"two_heart\",\"unexpect\",\"unlik\",\"unnecessari\",\"user\",\"valuabl\",\"wake\",\"while\",\"wing\",\"without\",\"worthless\",\"written\",\"ac\",\"accid\",\"aisl\",\"alaska\",\"alon\",\"alot\",\"angel\",\"annual\",\"antonio\",\"anxiou\",\"appl\",\"appoint\",\"armrest\",\"assault\",\"atlant\",\"attach\",\"averag\",\"aviat\",\"aviv\",\"aww\",\"bae\",\"bahama\",\"bankrupt\",\"barbado\",\"bf\",\"bhm\",\"birth\",\"bk\",\"blueman\",\"boot\",\"bot\",\"bounc\",\"box\",\"burn\",\"cake\",\"cannot\",\"cant\",\"carseat\",\"centuri\",\"chariti\",\"cheat\",\"checkout\",\"chose\",\"cinci\",\"circumst\",\"closest\",\"cluster\",\"cmon\",\"competitor\",\"connector\",\"constantli\",\"consum\",\"conveni\",\"cooki\",\"corp\",\"cot\",\"crisi\",\"cute\",\"darn\",\"def\",\"delet\",\"delight\",\"desktop\",\"difficulti\",\"dime\",\"disabl\",\"divers\",\"dry\",\"dsm\",\"dump\",\"ed\",\"encount\",\"eu\",\"fastest\",\"fave\",\"fc\",\"fear\",\"fell\",\"fiasco\",\"finest\",\"flexibl\",\"fli\",\"flip\",\"flushed_fac\",\"folder\",\"foot\",\"fq\",\"fran\",\"freq\",\"gari\",\"gj\",\"green\",\"greenvil\",\"guid\",\"haiti\",\"harbor\",\"hardli\",\"hat\",\"haul\",\"hdn\",\"heavili\",\"hero\",\"hilari\",\"hop\",\"horrid\",\"hospit\",\"hv\",\"illeg\",\"inadequ\",\"incent\",\"indi\",\"ineffici\",\"inquir\",\"instruct\",\"ivr\",\"jac\",\"jacket\",\"kc\",\"kelli\",\"king\",\"kit\",\"lake\",\"lavatori\",\"lmao\",\"login\",\"louisvil\",\"lunch\",\"luxuri\",\"ma\",\"manchest\",\"manual\",\"marri\",\"md\",\"measur\",\"mislead\",\"mission\",\"mosaic\",\"mt\",\"na\",\"nantucket\",\"natur\",\"necessari\",\"neglect\",\"neglig\",\"negoti\",\"neutral_fac\",\"nite\",\"northeast\",\"notch\",\"novemb\",\"nrt\",\"omaha\",\"oop\",\"orlean\",\"overs\",\"oz\",\"pacif\",\"paint\",\"particularli\",\"partnership\",\"pat\",\"philippin\",\"pile_of_poo\",\"pj\",\"pleasur\",\"pool\",\"pop\",\"popular\",\"pqd\",\"prais\",\"predict\",\"pref\",\"pretzel\",\"pricei\",\"proactiv\",\"project\",\"proof\",\"properti\",\"proud\",\"pwm\",\"rain\",\"random\",\"rang\",\"rant\",\"rather\",\"reclin\",\"recours\",\"recov\",\"reflect\",\"regret\",\"restor\",\"rethink\",\"rno\",\"roll\",\"rush\",\"section\",\"sept\",\"septemb\",\"settl\",\"shoulder\",\"smirking_fac\",\"snowi\",\"soak\",\"somehow\",\"spam\",\"spare\",\"speedi\",\"station\",\"steamboat\",\"stock\",\"strong\",\"stt\",\"stun\",\"style\",\"suicid\",\"sympathi\",\"tab\",\"temp\",\"their\",\"thur\",\"tight\",\"tk\",\"tourist\",\"trai\",\"tremend\",\"unfriendli\",\"unknown\",\"unreli\",\"urgent\",\"utah\",\"verifi\",\"viequ\",\"visa\",\"wasnt\",\"weak\",\"wear\",\"weigh\",\"were\",\"wide\",\"wreck\",\"abandon\",\"aboard\",\"accident\",\"accordingli\",\"aggrav\",\"agt\",\"ahhhh\",\"airbu\",\"aka\",\"albuquerqu\",\"ali\",\"aliv\",\"allergi\",\"amex\",\"ana\",\"andrew\",\"angry_fac\",\"anthoni\",\"anybodi\",\"aqjn\",\"aruba\",\"asset\",\"asshol\",\"assult\",\"astound\",\"atc\",\"athlet\",\"ay\",\"az\",\"bagag\",\"bed\",\"beg\",\"bereav\",\"beverag\",\"bike\",\"bitch\",\"blanket\",\"bloodi\",\"boat\",\"boe\",\"boo\",\"booz\",\"bound\",\"brain\",\"breath\",\"bro\",\"bruh\",\"brush\",\"brutal\",\"btv\",\"cae\",\"calgari\",\"cana\",\"capabl\",\"capit\",\"carolina\",\"cat\",\"caught\",\"cert\",\"cessna\",\"ch\",\"charter\",\"chees\",\"chill\",\"china\",\"cho\",\"chocol\",\"chrome\",\"clarif\",\"classi\",\"clever\",\"cloud\",\"cocktail\",\"coincid\",\"complic\",\"concert\",\"confounded_fac\",\"consecut\",\"contain\",\"conting\",\"convinc\",\"costa\",\"couldnt\",\"cramp\",\"cranki\",\"cruis\",\"ct\",\"cuba\",\"cue\",\"cushion\",\"cxld\",\"dang\",\"dark\",\"daytona\",\"debacl\",\"deck\",\"deic\",\"del\",\"delhi\",\"dep\",\"deplor\",\"describ\",\"desir\",\"discrimin\",\"dispatch\",\"disrupt\",\"dissapoint\",\"div\",\"dot\",\"doug\",\"dpt\",\"draw\",\"duh\",\"dunno\",\"duti\",\"ear\",\"easiest\",\"ef\",\"el\",\"elderli\",\"emboss\",\"enforc\",\"engag\",\"enquir\",\"er\",\"eri\",\"es\",\"essenti\",\"establish\",\"exclus\",\"expand\",\"fav\",\"favor\",\"fed\",\"feed\",\"festiv\",\"ffl\",\"financi\",\"five\",\"flaw\",\"flex\",\"flightawar\",\"forfeit\",\"forgiv\",\"fr\",\"frankfurt\",\"further\",\"gallei\",\"gent\",\"giant\",\"gladli\",\"goal\",\"goodby\",\"googl\",\"gorgeou\",\"grab\",\"grate\",\"hahaha\",\"hanger\",\"havent\",\"hayden\",\"heart_suit\",\"henc\",\"hide\",\"hmmm\",\"holdup\",\"holi\",\"holidai\",\"honolulu\",\"host\",\"hundred_point\",\"hwnac\",\"ident\",\"idk\",\"inconvenienc\",\"incorrect\",\"incorrectli\",\"inde\",\"indianapoli\",\"input\",\"insist\",\"intend\",\"intention\",\"interact\",\"investor\",\"island\",\"itali\",\"jam\",\"jamaica\",\"jeanin\",\"jeff\",\"kgdh\",\"kphl\",\"ky\",\"lazi\",\"legitim\",\"lfulcbq\",\"lh\",\"lisa\",\"loc\",\"logic\",\"logist\",\"lowest\",\"magazin\",\"maiden\",\"med\",\"midland\",\"miler\",\"miracl\",\"mn\",\"mtg\",\"mth\",\"musician\",\"nasdaq\",\"nassau\",\"neither\",\"network\",\"nicer\",\"nl\",\"nola\",\"nonprofit\",\"nonsens\",\"norfolk\",\"norm\",\"nvr\",\"oak\",\"oakland\",\"observ\",\"oct\",\"oma\",\"oneworld\",\"ontim\",\"opinion\",\"opposit\",\"orf\",\"orig\",\"outrag\",\"overcharg\",\"owner\",\"pant\",\"partial\",\"patch\",\"paypal\",\"person_walk\",\"phil\",\"pile\",\"plate\",\"port\",\"potenti\",\"prime\",\"princess\",\"problemss\",\"proce\",\"profil\",\"protocol\",\"psp\",\"pump\",\"punta\",\"pure\",\"quicker\",\"quit\",\"randomli\",\"rank\",\"reciev\",\"recoveri\",\"reduc\",\"regard\",\"relax\",\"reli\",\"reopen\",\"rescu\",\"restrict\",\"restroom\",\"resum\",\"retain\",\"retrain\",\"rev\",\"rfxlv\",\"rica\",\"richard\",\"rid\",\"risk\",\"robin\",\"rudest\",\"sabr\",\"sacramento\",\"safari\",\"sandwich\",\"sanit\",\"santa\",\"sayin\",\"sc\",\"scam\",\"scene\",\"sched\",\"scott\",\"scream\",\"sdf\",\"seg\",\"sentiment\",\"sep\",\"seven\",\"sexual\",\"shall\",\"shannon\",\"shift\",\"shouldnt\",\"shv\",\"signal\",\"silli\",\"sing\",\"sm\",\"smallest\",\"smell\",\"smoothli\",\"snowboard\",\"sop\",\"spell\",\"srvc\",\"strang\",\"strategi\",\"subpar\",\"suffer\",\"supposedli\",\"swap\",\"sy\",\"sydnei\",\"tax\",\"tear\",\"temperatur\",\"terrif\",\"than\",\"third\",\"thoma\",\"tide\",\"tired_fac\",\"tn\",\"tom\",\"tomato\",\"tongu\",\"tonit\",\"tool\",\"toronto\",\"touchdown\",\"town\",\"trade\",\"transit\",\"trash\",\"tryin\",\"tucson\",\"txt\",\"um\",\"umm\",\"unawar\",\"under\",\"understat\",\"uniform\",\"unpleas\",\"usernam\",\"valentin\",\"version\",\"vile\",\"visibl\",\"whenev\",\"wipe\",\"wit\",\"wknd\",\"wn\",\"woo\",\"xelbon\",\"xx\",\"yest\",\"yuma\",\"zurich\",\"abus\",\"accomplish\",\"achiev\",\"addtl\",\"adjust\",\"affili\",\"aggress\",\"ain\",\"al\",\"altitud\",\"approx\",\"apr\",\"apt\",\"argument\",\"arizona\",\"arm\",\"arrog\",\"atx\",\"auh\",\"author\",\"av\",\"awak\",\"awww\",\"backlog\",\"backpack\",\"basket\",\"bat\",\"behav\",\"behavior\",\"beliz\",\"bestfriend\",\"bewar\",\"beyond\",\"billion\",\"bkk\",\"blank\",\"blatant\",\"blew\",\"blown\",\"blue_circl\",\"bois\",\"border\",\"boss\",\"bougth\",\"bout\",\"brag\",\"brave\",\"breast\",\"bright\",\"bueno\",\"build\",\"bull\",\"bum\",\"bussei\",\"buyer\",\"bv\",\"bye\",\"calendar\",\"cali\",\"cancer\",\"capac\",\"captiv\",\"captur\",\"cargo\",\"carpet\",\"cattl\",\"cb\",\"cdg\",\"cellphon\",\"centr\",\"centric\",\"charm\",\"chart\",\"checkpoint\",\"cherri\",\"chg\",\"christma\",\"citizen\",\"cll\",\"clown\",\"cnx\",\"cnxn\",\"codeshar\",\"coke\",\"columbia\",\"comedi\",\"concept\",\"congratul\",\"consol\",\"construct\",\"convo\",\"coordin\",\"court\",\"coverag\",\"cp\",\"cr\",\"cruel\",\"cultur\",\"danger\",\"dare\",\"dawn\",\"deadhead\",\"deaf\",\"dean\",\"declin\",\"dedic\",\"demand\",\"derrick\",\"determin\",\"devalu\",\"dick\",\"dig\",\"dine\",\"directtv\",\"discontinu\",\"dislik\",\"dismiss\",\"disput\",\"distanc\",\"distribut\",\"divid\",\"doctor\",\"downhil\",\"downtown\",\"dread\",\"dub\",\"dublin\",\"dude\",\"duffl\",\"durango\",\"dw\",\"eagl\",\"eco\",\"econ\",\"edit\",\"empathi\",\"encourag\",\"endless\",\"enjoy\",\"enrol\",\"entitl\",\"entri\",\"envoi\",\"err\",\"ethiopia\",\"etihad\",\"evouch\",\"evri\",\"expedia\",\"eyw\",\"fake\",\"faulti\",\"fe\",\"feder\",\"fella\",\"ferri\",\"few\",\"fewer\",\"fianc\",\"fiance\",\"flatter\",\"flgt\",\"flower\",\"fold\",\"forgotten\",\"fourth\",\"franc\",\"french\",\"fresno\",\"frigid\",\"front\",\"frontier\",\"frontrunn\",\"fu\",\"fucken\",\"furiou\",\"furrow\",\"gb\",\"gee\",\"geek\",\"geg\",\"gestur\",\"gettin\",\"glasgow\",\"globe\",\"gmail\",\"gng\",\"gnv\",\"goin\",\"gotcha\",\"grace\",\"gracia\",\"grade\",\"graduat\",\"grandfath\",\"greatest\",\"grk\",\"gso\",\"guidelin\",\"gun\",\"gx\",\"halfwai\",\"hangar\",\"happier\",\"hardwork\",\"harsh\",\"hashtag\",\"hay\",\"health\",\"heaven\",\"hemispher\",\"hidden\",\"highlight\",\"hint\",\"histor\",\"ho\",\"hole\",\"homeless\",\"hometown\",\"honei\",\"hoop\",\"hotlin\",\"hp\",\"hrl\",\"humili\",\"huntsvil\",\"imo\",\"inabl\",\"inaccur\",\"inbox\",\"incl\",\"individu\",\"inevit\",\"inferior\",\"inflat\",\"instal\",\"instrument\",\"insuffici\",\"intellig\",\"intercom\",\"interior\",\"internation\",\"into\",\"invalid\",\"invest\",\"irrespons\",\"ish\",\"isi\",\"jacqui\",\"jane\",\"janet\",\"jason\",\"jeokoo\",\"jerk\",\"jj\",\"joanna\",\"justifi\",\"jx\",\"kim\",\"kindl\",\"knee\",\"knowledg\",\"koa\",\"lag\",\"lai\",\"larger\",\"ld\",\"le\",\"lf\",\"likelihood\",\"lil\",\"lindsei\",\"livid\",\"lj\",\"lo\",\"logo\",\"lone\",\"loop\",\"lv\",\"lynn\",\"madrid\",\"maimi\",\"maintain\",\"manch\",\"marathon\",\"mass\",\"mastercard\",\"math\",\"mb\",\"mc\",\"mce\",\"meantim\",\"men\",\"merci\",\"metro\",\"mht\",\"mike\",\"minneapoli\",\"mo\",\"modifi\",\"mood\",\"moon\",\"mous\",\"movement\",\"mph\",\"ms\",\"multi\",\"murder\",\"mv\",\"mvp\",\"myer\",\"mysteri\",\"nbr\",\"neg\",\"neighbor\",\"nephew\",\"newli\",\"nicest\",\"nm\",\"nobodi\",\"nonexist\",\"noooo\",\"nothin\",\"nowher\",\"nt\",\"nw\",\"nxt\",\"oc\",\"occas\",\"occupi\",\"offload\",\"ohar\",\"ojrsdwpkk\",\"ont\",\"op\",\"opal\",\"orbitz\",\"ordeal\",\"oti\",\"ourselv\",\"outdat\",\"overflight\",\"overflow\",\"oversea\",\"oversold\",\"overwhelm\",\"painless\",\"par\",\"parker\",\"particular\",\"paso\",\"path\",\"patron\",\"pattern\",\"paulo\",\"peac\",\"peep\",\"per\",\"perman\",\"permiss\",\"perth\",\"phi\",\"pia\",\"pig\",\"pin\",\"ping\",\"pink\",\"plagu\",\"pleasantli\",\"plitt\",\"plough\",\"plow\",\"pn\",\"pnr\",\"pointless\",\"polit\",\"portion\",\"preciat\",\"preciou\",\"precipit\",\"pregnant\",\"prem\",\"presid\",\"pretend\",\"previous\",\"princ\",\"principl\",\"privileg\",\"product\",\"promptli\",\"prop\",\"pst\",\"pu\",\"qanta\",\"rachel\",\"radio\",\"ramper\",\"rcvd\",\"reader\",\"realist\",\"realiti\",\"rearrang\",\"reassign\",\"rec\",\"recheck\",\"recruit\",\"reek\",\"regardless\",\"region\",\"registr\",\"reissu\",\"relai\",\"relief\",\"repeatedli\",\"reput\",\"research\",\"resourc\",\"retir\",\"retweet\",\"reunit\",\"revers\",\"ripoff\",\"rmpkogwu\",\"rn\",\"robert\",\"royal\",\"rubber\",\"rumor\",\"rx\",\"sadden\",\"sao\",\"sauc\",\"saver\",\"sb\",\"scenario\",\"scheme\",\"scollegelondon\",\"sean\",\"season\",\"seatac\",\"secret\",\"sensit\",\"seri\",\"shade\",\"shake\",\"shrug\",\"singapor\",\"sjo\",\"sleet\",\"slide\",\"slightli\",\"slip\",\"smisek\",\"snag\",\"snowstorm\",\"soft\",\"solo\",\"sometim\",\"somewher\",\"sooo\",\"soooo\",\"soul\",\"sparkl\",\"specifi\",\"spoil\",\"sport\",\"sprint\",\"squar\",\"srq\",\"srsly\",\"staffer\",\"stall\",\"stare\",\"storag\",\"stow\",\"strai\",\"strip\",\"strongli\",\"sub\",\"subsequ\",\"sudden\",\"sun_with_fac\",\"sunglass\",\"suppli\",\"surli\",\"surviv\",\"suspect\",\"sweetheart\",\"sympathet\",\"syracus\",\"ta\",\"tailwind\",\"target\",\"tast\",\"taylor\",\"tb\",\"thankyou\",\"thanx\",\"thu\",\"tokyo\",\"toledo\",\"tortur\",\"tour\",\"trace\",\"tree\",\"trick\",\"tripl\",\"troubleshoot\",\"trvl\",\"tu\",\"tul\",\"tune\",\"turnaround\",\"twin\",\"typo\",\"univers\",\"unrel\",\"untz\",\"unusu\",\"unveil\",\"unwil\",\"ut\",\"utterli\",\"uvf\",\"vaca\",\"vallarta\",\"vc\",\"veer\",\"vegan\",\"verbal\",\"via\",\"vice\",\"vital\",\"vm\",\"voicemail\",\"void\",\"vomit\",\"vote\",\"vw\",\"warmth\",\"wave\",\"wbzorrn\",\"wc\",\"wd\",\"westchest\",\"whatev\",\"whoa\",\"wichita\",\"wld\",\"woaw\",\"woke\",\"woven\",\"wrap\",\"xc\",\"xdaili\",\"xl\",\"xna\",\"xweekli\",\"youth\",\"za\",\"zy\",\"zz\",\"aal\",\"abi\",\"abroad\",\"absorb\",\"acc\",\"accompani\",\"accru\",\"accus\",\"acquir\",\"adam\",\"adjac\",\"ador\",\"adult\",\"adv\",\"afraid\",\"agnt\",\"ai\",\"ail\",\"aim\",\"airborn\",\"ala\",\"alcohol\",\"alex\",\"allerg\",\"allevi\",\"along\",\"alt\",\"amateur\",\"amateurish\",\"amazingli\",\"amazon\",\"amen\",\"amm\",\"analyst\",\"anchorag\",\"andri\",\"android\",\"anim\",\"ann\",\"antigua\",\"anxieti\",\"ap\",\"api\",\"apologis\",\"applaud\",\"approxim\",\"ardent\",\"arent\",\"argentina\",\"arkansa\",\"armi\",\"art\",\"ashlei\",\"asia\",\"asid\",\"associ\",\"asw\",\"ath\",\"atleast\",\"attende\",\"austrian\",\"avert\",\"avi\",\"avon\",\"awhil\",\"awkward\",\"backroad\",\"bait\",\"bake\",\"ban\",\"bandwidth\",\"bangkok\",\"bankruptci\",\"barbara\",\"barclai\",\"barrier\",\"bd\",\"beautifulli\",\"began\",\"behalf\",\"behind\",\"bein\",\"belfast\",\"bellagio\",\"bench\",\"benefici\",\"bergstrom\",\"besid\",\"between\",\"bg\",\"bgm\",\"bgr\",\"bicycl\",\"bigger\",\"bio\",\"birthdat\",\"bite\",\"bizarr\",\"bless\",\"bluman\",\"bm\",\"bohol\",\"bold\",\"bom\",\"bonus\",\"boom\",\"boooo\",\"bora\",\"born\",\"bourbon\",\"boycott\",\"bp\",\"bqn\",\"bravo\",\"brazil\",\"breach\",\"breez\",\"brian\",\"broadwai\",\"brussel\",\"bt\",\"btr\",\"bttr\",\"btwn\",\"bucket\",\"budget\",\"bulkhead\",\"bumper\",\"burbank\",\"burger\",\"buse\",\"busiest\",\"butt\",\"cabl\",\"cach\",\"caffein\",\"cal\",\"camp\",\"cane\",\"canx\",\"cap\",\"career\",\"caribbean\",\"carol\",\"carsl\",\"cebu\",\"cf\",\"cha\",\"chain\",\"chaotic\",\"chapter\",\"char\",\"charger\",\"charl\",\"chief\",\"childish\",\"chip\",\"chk\",\"chkd\",\"chng\",\"chnge\",\"chosen\",\"cincinnati\",\"cite\",\"cking\",\"clarenc\",\"cld\",\"cldnt\",\"closet\",\"clueless\",\"clutch\",\"cng\",\"cockpit\",\"cocktail_glass\",\"colo\",\"colombia\",\"command\",\"commut\",\"compat\",\"compliant\",\"compound\",\"concentr\",\"condescend\",\"condom\",\"conect\",\"consult\",\"contd\",\"context\",\"convey\",\"copilot\",\"corner\",\"counti\",\"courier\",\"cpap\",\"craft\",\"crave\",\"cream\",\"creativ\",\"cri\",\"crimin\",\"css\",\"ctr\",\"cu\",\"curb\",\"curbsid\",\"curios\",\"cycl\",\"da\",\"dakota\",\"dale\",\"dbcvepn\",\"deactiv\",\"debat\",\"debit\",\"dec\",\"decenc\",\"declar\",\"deede\",\"defend\",\"deflat\",\"delayetongu\",\"delici\",\"demo\",\"dentongu\",\"deodor\",\"depress\",\"desert\",\"despic\",\"diabet\",\"dialogu\",\"diamond\",\"dice\",\"dim\",\"dinosaur\",\"disinfect\",\"displeas\",\"dissatisfact\",\"distress\",\"dmd\",\"dn\",\"dnt\",\"doc\",\"doll\",\"dominican\",\"donkei\",\"donut\",\"doo\",\"draft\",\"dramat\",\"dre\",\"dress\",\"dupe\",\"earliest\",\"earlybird\",\"earthquak\",\"eb\",\"ee\",\"effect\",\"eh\",\"elabor\",\"electr\",\"electron\",\"elig\",\"eliz\",\"elm\",\"embassi\",\"emerald\",\"emp\",\"empath\",\"emploi\",\"employ\",\"emv\",\"endlessli\",\"energi\",\"enterpris\",\"entranc\",\"entre\",\"enuf\",\"environ\",\"eofthgaj\",\"erj\",\"escap\",\"etern\",\"everybodi\",\"everywher\",\"evid\",\"exce\",\"exercis\",\"expedi\",\"expos\",\"extent\",\"fab\",\"fairli\",\"fallow\",\"fashion\",\"fate\",\"fax\",\"fd\",\"fece\",\"femal\",\"filthi\",\"finder\",\"finnair\",\"firefox\",\"flashlight\",\"flght\",\"flightedflight\",\"flightledflight\",\"fligt\",\"fligth\",\"flite\",\"flow\",\"flyfi\",\"fm\",\"fo\",\"focus\",\"fool\",\"foolish\",\"foreign\",\"forgiven\",\"formula\",\"frank\",\"frankli\",\"frequenc\",\"fri\",\"friendliest\",\"fritz\",\"fro\",\"fron\",\"fs\",\"ftw\",\"fuk\",\"fulfil\",\"fw\",\"fx\",\"fy\",\"gaga\",\"gainesvil\",\"gal\",\"gangwai\",\"gatwick\",\"gd\",\"geez\",\"gem\",\"geniu\",\"gentleman\",\"genuin\",\"georg\",\"gfc\",\"glove\",\"glowing_star\",\"gluten\",\"goblin\",\"gogh\",\"gogo\",\"gosh\",\"gpu\",\"graciou\",\"grai\",\"grandmoth\",\"grant\",\"graphic\",\"greater\",\"greedi\",\"grimacing_fac\",\"grow\",\"grown\",\"grp\",\"gsp\",\"guidanc\",\"gunna\",\"gxdqortss\",\"gy\",\"hack\",\"hah\",\"hail\",\"hair\",\"handi\",\"handicap\",\"hangup\",\"hannah\",\"havoc\",\"hawaiian\",\"hb\",\"hd\",\"heel\",\"hep\",\"herman\",\"herndon\",\"hf\",\"hh\",\"hmm\",\"hn\",\"hoo\",\"hoot\",\"hormon\",\"horrif\",\"horror\",\"hors\",\"hot_beverag\",\"hotspot\",\"hotter\",\"hs\",\"hsv\",\"ht\",\"hug\",\"humour\",\"hurri\",\"huston\",\"hve\",\"hy\",\"hypocrisi\",\"iberia\",\"iceland\",\"ideal\",\"iflyswa\",\"ih\",\"il\",\"ilc\",\"imma\",\"impati\",\"impend\",\"imperson\",\"inc\",\"incident\",\"inconsider\",\"inconsist\",\"inconvi\",\"india\",\"inept\",\"infuri\",\"injur\",\"innov\",\"inop\",\"inquiri\",\"insight\",\"inspect\",\"instagram\",\"insur\",\"intact\",\"internship\",\"intro\",\"invoic\",\"iowa\",\"ireland\",\"irrop\",\"isp\",\"itin\",\"itself\",\"jackass\",\"jackson\",\"jealou\",\"ji\",\"jim\",\"jimmi\",\"jk\",\"jkf\",\"jm\",\"joe\",\"js\",\"jun\",\"junk\",\"kai\",\"kat\",\"kate\",\"kb\",\"kci\",\"kelsei\",\"kevin\",\"kewl\",\"kf\",\"ki\",\"kiss\",\"kitti\",\"kj\",\"km\",\"knoxvil\",\"korea\",\"kristi\",\"kul\",\"kv\",\"labor\",\"lan\",\"lane\",\"languag\",\"largest\",\"larri\",\"lawsuit\",\"leadership\",\"leagu\",\"leak\",\"led\",\"legaci\",\"legit\",\"lemm\",\"length\",\"lexington\",\"liabl\",\"liar\",\"lift\",\"lima\",\"loan\",\"loaner\",\"lookin\",\"looong\",\"loooooong\",\"lord\",\"loser\",\"loud\",\"lucia\",\"lufthansa\",\"lug\",\"lung\",\"lusaka\",\"lx\",\"mac\",\"madden\",\"makeup\",\"mammoth\",\"maneuv\",\"marshal\",\"master\",\"mate\",\"maui\",\"mde\",\"meaning\",\"meanwhil\",\"medal\",\"meelan\",\"meh\",\"mel\",\"memo\",\"mere\",\"mgr\",\"michel\",\"mideast\",\"midght\",\"milan\",\"minimum\",\"miriam\",\"misfortun\",\"misinform\",\"mistreat\",\"misunderstood\",\"mitchel\",\"mite\",\"mix\",\"ml\",\"mnl\",\"modif\",\"moin\",\"momma\",\"montego\",\"monthli\",\"moodlight\",\"morrow\",\"motel\",\"motion\",\"motto\",\"mountain\",\"mouth\",\"mp\",\"mtongu\",\"myrtl\",\"nail\",\"nap\",\"narita\",\"narrow\",\"navig\",\"naxbu\",\"necess\",\"nerd\",\"newburgh\",\"nigga\",\"nitrogen\",\"nonrefund\",\"nor\",\"norma\",\"nov\",\"num\",\"nvm\",\"obnoxi\",\"obviou\",\"offend\",\"offens\",\"oil\",\"oncoming_fist\",\"oppos\",\"opt\",\"oq\",\"oqukso\",\"orang\",\"oregon\",\"org\",\"orl\",\"os\",\"ot\",\"ottawa\",\"oui\",\"outag\",\"outfit\",\"overh\",\"overhaul\",\"overheard\",\"overload\",\"overpr\",\"oversel\",\"oy\",\"panamerican\",\"pandora\",\"panic\",\"partli\",\"passiv\",\"patrick\",\"pd\",\"pedro\",\"perfectli\",\"perspect\",\"pf\",\"pg\",\"pgh\",\"phenomen\",\"phn\",\"pho\",\"phrase\",\"pita\",\"piti\",\"pitt\",\"platitud\",\"player\",\"plead\",\"pleaseee\",\"plot\",\"plug\",\"popul\",\"portfolio\",\"possess\",\"postcod\",\"postpon\",\"poughkeepsi\",\"pqm\",\"prebook\",\"preflight\",\"press\",\"prev\",\"priceless\",\"printer\",\"priorit\",\"prize\",\"produc\",\"professor\",\"prohibit\",\"prom\",\"provo\",\"publicli\",\"puls\",\"puppi\",\"purple_heart\",\"pv\",\"pvg\",\"pw\",\"qc\",\"qd\",\"qh\",\"quarter\",\"que\",\"queri\",\"quiet\",\"quirki\",\"qw\",\"rage\",\"ramada\",\"raspberryhx\",\"rave\",\"react\",\"reaction\",\"reactiv\",\"rear\",\"reboard\",\"reboot\",\"recap\",\"recogn\",\"reddit\",\"redempt\",\"referr\",\"refrain\",\"refsd\",\"regularli\",\"reject\",\"relev\",\"remedi\",\"remors\",\"reno\",\"repost\",\"req\",\"resend\",\"resort\",\"reunion\",\"reveal\",\"rez\",\"rhonda\",\"ricoh\",\"rifl\",\"rise\",\"rito\",\"rivet\",\"roast\",\"roberto\",\"rocki\",\"roger\",\"roller\",\"rooki\",\"rotten\",\"routin\",\"rtb\",\"ru\",\"rub\",\"rubbish\",\"rum\",\"russia\",\"ruth\",\"saga\",\"salli\",\"samartzi\",\"sampl\",\"sand\",\"saniti\",\"sapphir\",\"sarcasm\",\"sarcast\",\"sass\",\"satisfact\",\"satisfactori\",\"sav\",\"sba\",\"scatter\",\"sch\",\"scienc\",\"scotch\",\"scratch\",\"screenshot\",\"seam\",\"seatbelt\",\"sedholm\",\"senior\",\"sentinel\",\"setup\",\"sh\",\"shampoo\",\"shanghai\",\"shawn\",\"shenanigan\",\"shld\",\"shoddi\",\"shortag\",\"shortcom\",\"shoutout\",\"shuffl\",\"si\",\"sibl\",\"significantli\",\"silenc\",\"silicon\",\"sir\",\"sittin\",\"six\",\"sizer\",\"sj\",\"sjd\",\"skateboard\",\"sked\",\"skin\",\"skip\",\"skycap\",\"sl\",\"sld\",\"sleekmonei\",\"slight\",\"slot\",\"slower\",\"slowest\",\"slowli\",\"smaller\",\"smart\",\"smash\",\"smirkal\",\"smirken\",\"smoke\",\"smoothest\",\"sn\",\"snap\",\"snapchat\",\"sob\",\"solid\",\"somewhat\",\"sooooo\",\"sorta\",\"sour\",\"southern\",\"sp\",\"spectacular\",\"spf\",\"spill\",\"spite\",\"spotti\",\"sprinkl\",\"squawk\",\"stair\",\"standby\",\"startl\",\"starv\",\"steam\",\"steel\",\"steer\",\"steve\",\"sti\",\"sticker\",\"stndby\",\"stoke\",\"stone\",\"store\",\"straight_fac\",\"straighten\",\"stretch\",\"strive\",\"structur\",\"struggl\",\"subscrib\",\"substitut\",\"sue\",\"sunset\",\"sunshin\",\"surround\",\"susan\",\"swamp\",\"swear\",\"sweepstak\",\"swell\",\"swiss\",\"swu\",\"sync\",\"syr\",\"tactic\",\"taiwan\",\"tamara\",\"tammi\",\"tank\",\"tape\",\"tarmack\",\"technolog\",\"teco\",\"televis\",\"ten\",\"tf\",\"thaw\",\"themselv\",\"thirti\",\"thk\",\"thread\",\"thrill\",\"thrown\",\"thy\",\"tim\",\"timco\",\"timeli\",\"tip\",\"tisk\",\"tld\",\"tlh\",\"tmw\",\"tnx\",\"tock\",\"toiletri\",\"toss\",\"tr\",\"transatlant\",\"transf\",\"transpar\",\"traveloc\",\"trend\",\"trial\",\"troubadour\",\"tryna\",\"tulsa\",\"turkish\",\"tweeter\",\"txfd\",\"tyr\",\"ui\",\"uj\",\"un\",\"unaccompani\",\"unanticip\",\"uncal\",\"uncar\",\"uncl\",\"uncontrol\",\"uncool\",\"unimpress\",\"unmonitor\",\"unnecessarili\",\"unorgan\",\"unsaf\",\"unschedul\",\"unspecifi\",\"unsur\",\"unsympathet\",\"upgd\",\"uphold\",\"upload\",\"upstat\",\"uq\",\"urgenc\",\"usd\",\"uu\",\"ux\",\"uxzj\",\"vacai\",\"vallei\",\"variou\",\"vdi\",\"vent\",\"versu\",\"vet\",\"vetr\",\"vhgkitzsaw\",\"vibe\",\"vicki\",\"villag\",\"vineyard\",\"vinyl\",\"violat\",\"virginamerica\",\"virtual\",\"vo\",\"vp\",\"vu\",\"vuelo\",\"vz\",\"waitin\",\"waitlist\",\"wander\",\"ward\",\"warehous\",\"warmer\",\"wat\",\"waving_hand\",\"wayn\",\"weari\",\"western\",\"westjet\",\"whisper\",\"whoever\",\"wht\",\"wine_glass\",\"winston\",\"wire\",\"wkrb\",\"woohoo\",\"workaround\",\"worthi\",\"woulda\",\"wound\",\"wrongfulli\",\"ws\",\"wsj\",\"wudda\",\"wut\",\"wx\",\"xd\",\"yard\",\"yearli\",\"younger\",\"yourself\",\"youv\",\"yummi\",\"yvonn\",\"yw\",\"ywg\",\"yx\",\"yyj\",\"ze\",\"zf\",\"zi\",\"zoom\",\"zq\",\"zr\",\"zv\",\"aaaand\",\"aadavantag\",\"aadv\",\"aai\",\"aakjumxa\",\"aaron\",\"aau\",\"aavvoreph\",\"ab\",\"aback\",\"abassinet\",\"abbrev\",\"abduct\",\"aboout\",\"abound\",\"abprg\",\"absoulut\",\"absurdli\",\"abtwf\",\"abund\",\"abxrq\",\"acarl\",\"acceler\",\"accomid\",\"accumul\",\"acebo\",\"acfqcdq\",\"aci\",\"ack\",\"acosta\",\"acoust\",\"acpt\",\"acquisit\",\"across\",\"actuali\",\"ada\",\"adapt\",\"addition\",\"additon\",\"addr\",\"admin\",\"adress\",\"advan\",\"adventur\",\"advi\",\"advsri\",\"aeroport\",\"aesthet\",\"aex\",\"af\",\"affair\",\"afili\",\"aflam\",\"aforement\",\"african\",\"aft\",\"afteral\",\"afterward\",\"aftr\",\"agfd\",\"agian\",\"agpb\",\"agr\",\"agreement\",\"agum\",\"aha\",\"ahah\",\"ahem\",\"ahhhhh\",\"ahlxhhkiyn\",\"ahoi\",\"aiecraft\",\"aircrft\",\"airlinegav\",\"airportcardio\",\"airpt\",\"airserv\",\"airsid\",\"airspac\",\"airstair\",\"airtran\",\"aitzl\",\"aiyc\",\"aj\",\"ajm\",\"ajz\",\"ak\",\"akron\",\"aktg\",\"alabama\",\"alamo\",\"alan\",\"alarm\",\"alavera\",\"alb\",\"albeit\",\"album\",\"albuqu\",\"align\",\"alison\",\"alist\",\"alittl\",\"alittlebett\",\"allan\",\"allend\",\"allll\",\"allowabl\",\"allreadi\",\"allright\",\"amarillo\",\"ambassador\",\"ambival\",\"amend\",\"ami\",\"amid\",\"amiga\",\"amirit\",\"amiw\",\"amnt\",\"among\",\"amount\",\"amsterdam\",\"amt\",\"amtrak\",\"analyt\",\"anarchi\",\"anderson\",\"aneqxzr\",\"angelo\",\"anger\",\"angl\",\"angriest\",\"angrybird\",\"angst\",\"anna\",\"annamari\",\"anni\",\"annnndddd\",\"annnnddddd\",\"annnnnd\",\"ant\",\"anti\",\"anyhelp\",\"anythin\",\"aoeaeszdlx\",\"aopdtsq\",\"aormfkac\",\"aou\",\"apathet\",\"apathi\",\"apear\",\"apiau\",\"apnea\",\"apostroph\",\"appeal\",\"applaus\",\"appleton\",\"appropro\",\"appt\",\"apron\",\"aprzspxig\",\"aptzpurop\",\"apx\",\"aqa\",\"aquadilla\",\"aqzwecokk\",\"arab\",\"arbitrari\",\"arbitrarili\",\"arc\",\"archaic\",\"arena\",\"argg\",\"argh\",\"aricyq\",\"aros\",\"arpt\",\"artisan\",\"aruna\",\"arvl\",\"asgmnt\",\"ash\",\"asha\",\"assignetongu\",\"assuag\",\"astonished_fac\",\"astoria\",\"asu\",\"asuwx\",\"asyq\",\"atct\",\"atd\",\"ateafnc\",\"atfrkp\",\"athau\",\"att\",\"attain\",\"attdt\",\"attir\",\"attitudi\",\"attndt\",\"atu\",\"atwyifh\",\"auckland\",\"aucsykfuhd\",\"auction\",\"audienc\",\"audio\",\"audit\",\"auditorium\",\"auf\",\"aufm\",\"augjscmolu\",\"aunt\",\"aunti\",\"aurn\",\"aussi\",\"austic\",\"authorit\",\"automobil\",\"autorespons\",\"auzu\",\"availab\",\"aval\",\"avatar\",\"avbdstjuj\",\"avenu\",\"avg\",\"avio\",\"avp\",\"avrtowtyzk\",\"avyqdmpi\",\"awdbw\",\"awesomee\",\"awfulli\",\"awgjkjiiac\",\"awheelchair\",\"awol\",\"awqtln\",\"awrd\",\"ax\",\"axeo\",\"axlqzwvh\",\"axpn\",\"axryeiwzh\",\"aygaoeb\",\"aypyadui\",\"ayyi\",\"azltjhf\",\"aztdaer\",\"bach\",\"backward\",\"backyard\",\"badbadbad\",\"baejet\",\"bafor\",\"baggagefail\",\"bagtag\",\"bail\",\"bailei\",\"baim\",\"baldwin\",\"ballbag\",\"ballin\",\"balloon\",\"balt\",\"banana\",\"bape\",\"barcod\",\"bark\",\"barklai\",\"barnum\",\"barrel\",\"barzegar\",\"bash\",\"basketbal\",\"bass\",\"batman\",\"bayepzkmiz\",\"bbaonx\",\"bbhtlzgh\",\"bbj\",\"bbm\",\"bbzijwfdl\",\"bcn\",\"bcuz\",\"bcwckwtnle\",\"bcz\",\"bdng\",\"bdrxfn\",\"bdtldx\",\"bduauzfhw\",\"bean\",\"beani\",\"bear\",\"bearabl\",\"beareav\",\"beatriz\",\"beautiful\",\"bec\",\"becki\",\"becuas\",\"becuz\",\"begrudgingli\",\"begun\",\"beij\",\"belabor\",\"belief\",\"belliger\",\"belov\",\"below\",\"ben\",\"benadryl\",\"bene\",\"beought\",\"beqotlnugc\",\"berlin\",\"besti\",\"beta\",\"betch\",\"betsi\",\"betterfrown\",\"betti\",\"bettween\",\"bevi\",\"bff\",\"bfpfw\",\"bgbtq\",\"bgtjfmneot\",\"bh\",\"bham\",\"bhjvaa\",\"bhooiyt\",\"bi\",\"bibl\",\"bicep\",\"bid\",\"biggi\",\"bijlxat\",\"bil\",\"bila\",\"billmel\",\"bingo\",\"birder\",\"biscuit\",\"bitchi\",\"bitcoin\",\"bitti\",\"bjnz\",\"bjwgoap\",\"bked\",\"bkmfei\",\"bl\",\"blackish\",\"blacklist\",\"blackmail\",\"blade\",\"blanc\",\"blatantli\",\"blatimor\",\"blazer\",\"bleed\",\"blegh\",\"bleh\",\"blind\",\"blindsid\",\"blizzard\",\"blizzu\",\"bloat\",\"blood\",\"blueti\",\"blwgwa\",\"blx\",\"bmc\",\"bmi\",\"bmij\",\"bmk\",\"bnflhpxtmw\",\"bng\",\"bngpli\",\"boardingpass\",\"boavxi\",\"bobbi\",\"bodi\",\"boggl\",\"boh\",\"boil\",\"bone\",\"bonni\",\"boofin\",\"bookabl\",\"booklet\",\"bool\",\"booo\",\"boost\",\"booster\",\"bootbag\",\"bop\",\"borderlin\",\"bore\",\"borrow\",\"bosnia\",\"boson\",\"botch\",\"bottom\",\"bouncer\",\"boundless\",\"bowl\",\"bozo\",\"bpb\",\"bpdfpp\",\"bq\",\"bqiw\",\"br\",\"bracket\",\"bradlei\",\"brancato\",\"brandi\",\"brcsjbxg\",\"brd\",\"bread\",\"breakdown\",\"breaker\",\"breastfeed\",\"breavement\",\"breezi\",\"brendan\",\"brent\",\"bride\",\"bridesmaid\",\"brief\",\"brighter\",\"bringin\",\"brink\",\"brisk\",\"brittani\",\"briughi\",\"broad\",\"brochur\",\"brood\",\"brooklyn\",\"brotha\",\"brothaaaaaa\",\"brt\",\"bru\",\"bruin\",\"bryant\",\"bsi\",\"bso\",\"bsuxlu\",\"btb\",\"bttgmyn\",\"bttzf\",\"btvpxtzju\",\"btvtb\",\"bubbl\",\"budapest\",\"buggi\",\"built\",\"buis\",\"buj\",\"bulb\",\"bulli\",\"bundl\",\"bur\",\"burden\",\"bureau\",\"burg\",\"burgundi\",\"burlington\",\"burrito\",\"burrough\",\"burst\",\"businessfirst\",\"bussin\",\"bust\",\"butnot\",\"buwjtvuwkm\",\"buyback\",\"buzj\",\"buzz\",\"buzzkil\",\"bvexmcj\",\"bvfaxdubaq\",\"bvl\",\"bvzty\",\"bwahahaha\",\"bxlk\",\"bxwg\",\"byackc\",\"byn\",\"bypass\",\"bz\",\"bze\",\"bzqzqxlaugh\",\"bzwgp\",\"cabaret\",\"cabcel\",\"cac\",\"caf\",\"cafe\",\"cai\",\"cak\",\"calam\",\"calderon\",\"calibr\",\"calm\",\"calv\",\"campaign\",\"campu\",\"canadaair\",\"cancld\",\"candac\",\"candi\",\"candic\",\"canist\",\"canld\",\"captiveaudi\",\"cardhold\",\"caren\",\"carlton\",\"carmen\",\"carolin\",\"carta\",\"cartagena\",\"cartago\",\"cascino\",\"casimir\",\"casual\",\"categori\",\"cathai\",\"cathi\",\"caution\",\"caval\",\"cavan\",\"cave\",\"cbr\",\"cbv\",\"ccndjp\",\"cco\",\"cdj\",\"cdn\",\"cdt\",\"cdzhtyd\",\"ce\",\"ceas\",\"ceeenj\",\"cefa\",\"cehroeurc\",\"celeb\",\"cement\",\"cent\",\"centerl\",\"cesspool\",\"cevi\",\"cfhtk\",\"cfi\",\"cfpohl\",\"cfrlqbe\",\"cfv\",\"cfyhkvb\",\"cfzdjmn\",\"cgfv\",\"cgreat\",\"cgroup\",\"cgwe\",\"chalk\",\"champagn\",\"championship\",\"changer\",\"chantilli\",\"chaperon\",\"chapman\",\"charac\",\"character\",\"chariot\",\"charlot\",\"chath\",\"chd\",\"cheapest\",\"checker\",\"chedul\",\"cheek\",\"cheesi\",\"cheez\",\"chef\",\"chemistri\",\"chequ\",\"chewei\",\"chgd\",\"chge\",\"chging\",\"chgy\",\"chilli\",\"chines\",\"chipper\",\"chkin\",\"chking\",\"chkout\",\"chl\",\"chock\",\"choppi\",\"choppiest\",\"choxkpjp\",\"christin\",\"chronolog\",\"chuckhol\",\"church\",\"churn\",\"ci\",\"cid\",\"cigarett\",\"cih\",\"cinnabon\",\"circuit\",\"circul\",\"civil\",\"cjg\",\"cjsvssqf\",\"cju\",\"ckg\",\"ckin\",\"cl\",\"clarion\",\"clarita\",\"classic\",\"classiq\",\"claudia\",\"cleanli\",\"clearanc\",\"clgiu\",\"clifton\",\"clincher\",\"cling\",\"clo\",\"clob\",\"clockwork\",\"clog\",\"closur\",\"clu\",\"club_\",\"clunki\",\"clusterfuck\",\"clvlhfguzw\",\"cm\",\"cmjriwop\",\"cmo\",\"cncdld\",\"cnceld\",\"cncld\",\"cncled\",\"cnctl\",\"coathang\",\"cockroach\",\"coffeemak\",\"coffin\",\"coin\",\"colder\",\"coldli\",\"cole\",\"collid\",\"colombian\",\"colonist\",\"coloss\",\"colour\",\"columbian\",\"coma\",\"comb\",\"combat\",\"combo\",\"comcast\",\"comed\",\"comedian\",\"comen\",\"comic\",\"comin\",\"commenc\",\"commend\",\"commiss\",\"communist\",\"compact\",\"comparison\",\"compart\",\"compassion\",\"complex\",\"complt\",\"compton\",\"con\",\"concierg\",\"concret\",\"cond\",\"condescens\",\"condo\",\"condol\",\"config\",\"confront\",\"congest\",\"conjunct\",\"conn\",\"connectfor\",\"connectin\",\"connectn\",\"connet\",\"connex\",\"connolli\",\"consequ\",\"constitut\",\"consumpt\",\"contac\",\"contactless\",\"contagi\",\"contempt\",\"contend\",\"contractor\",\"contradictori\",\"contribut\",\"conv\",\"convei\",\"conveyor\",\"cooker\",\"cooler\",\"cop\",\"copa\",\"copai\",\"copx\",\"core\",\"cori\",\"corni\",\"correl\",\"correspond\",\"corrupt\",\"coshar\",\"cosmet\",\"cough\",\"counterpart\",\"countless\",\"courrier\",\"courtnei\",\"courtsei\",\"covert\",\"cowardli\",\"cowboi\",\"cowgirl\",\"cozi\",\"cpu\",\"cpypgfnd\",\"cpzb\",\"cqmm\",\"crabbi\",\"cram\",\"crape\",\"crappiest\",\"crate\",\"crawl\",\"credenti\",\"credibl\",\"crfrwpc\",\"crib\",\"cricket\",\"cristian\",\"criteria\",\"critic\",\"crj\",\"crook\",\"cross_mark\",\"crosswind\",\"crossword\",\"crucial\",\"crumb\",\"crutch\",\"cruz\",\"crw\"],\"x1\":{\"__ndarray__\":\"oTILwQBa8sCmHfLBOeKlQroZv8GDypzBl/tyQobljEKvSRfB5OY5QiSDLEHYTHXBOUwJQoERYL+AeMA/jt9tQaQ7OkLgpd1BGjMwQuRHpMEPcSpCARgEQhpX2cEEoE/Cf38yQsun40EEgQRAggXUQbYueUED5APBlqZBQdAakj4+0fXBp3Jdwl8y5MF/QJW+PsxYwfW558F7FFXBvzudQm/Hy0Evp+1B4L/fwCHl8UE5NXpCL4o5Qmwr9MHlBDZCRf4EQt/vOUJLpoXBQuhsQhj2KEGj4lnCFxN8wck0WEHATdrAzqBcwW2WHULFjXXBBECqweV6XkEedPxAkGawP1c8NMJZ3lHCb0vjQfU5PsL5CwDC+TqlQuchN0IhpzlBwDQOwowAUMIcDjNCh8+vwQyEpEJXp0lC7ff6QRET+kFsSf1AKhI3QrcfZ8JV+aVCubQcwio8yL7zMGfCVUusQSbvFsKPoRdC7540QmwwM0KAiBTCPBoGwqXrRcLlmRvBZJJ1wRIhnkILfkTCUqFnQTXZrkGuOS1CdtvcQZ3aTEIZfYDBY9aewV1nOkIvu09BDNn0wQi7HEIy8qxB0/YJwXISAEJnw17BzzKiQZEw4MEaC6lBeZuqwTTra0FpvHbBGHMVwdLXAcJMkeDAxz5/wvrsasE4SWFB7WVBwqGdPkL6nZrBYPWmwYK7DcLGwyG+2IEpQnUZjcB7qy9Cepx4QaPRjsE1PKJC7CkfwR4QB0KVs6VCaTdvwarkF8K4WipCgeIyQd3nQcL0+5PATtmIwV6ZCEKdVmbC5bkFQj92TsL0OuNAEkUaQk8fFsKEDcvBTHj7wbO9DsJS/3dB+cHbQXP0oMGGrltBehjAwU5eZMIuXGxBsT/3wUCmCMHd2hDCvz8kQSfOo0KZ36RBUeXFwNQHKkJ0D0bBfUURwbv6AcIVsnE+rjAYQGYOmkHPU1vCB7+Nwdk5rMGxsQPCU+VywiAgdMIYpXZBKqJIwhnT0cFagKFC1pjVQNIdJkJLBA1BLNNEQXNhR8Kx6nPCve0xQgVHYr9w+0TC+K4rQlI5D8Lk8QjCSc0JQj8/sEHYrHRBoS5HwfKLLcIkNJa/5qfGwdo0I8LGkTfCNbECwZ2kOcJ6TwrC9rrOP4gj0kGj5QbCscqSwf4Be0L9oGVBp9vyQN3oTUJdqCfCI4wZwpJvG0Lu2QlCQZcUP/3dO8JW9OHA9pTRwQFWEEKmXrRBRGvhQTkwG8JoTaVCbZomwq/3c8IzyFDCj8iHQrOQecGDTbbBv+JLwVknCMEdCWZBvXXwwCNnOT+ejh9Cjb7WwcLc+EGZ8DVB1iJJwsycpUL4kkhC6Q02wluYb8K/hTZCATIMwoY55cGXLbZB8vQLwSdUH8J438fBUPYuQgnSL8LL+gnC3nSkQrD6ZEEdK6BCyrG0wW1J+EE0OPHBjNFXQCO4HcLJijPCUNQUQW6hHsIksSxCgUcIQmaIlsEtIwfB6TorQigg30BiyWLCNxcwwhHmZULV5lHCy5hywhGTg70S2ATCFOMEQe+8d0I/9SNCknkfQRIZMEFr11PCrfQ6wlPCKEF3kSlC2qdRwtJEJsKqaSzCP439QUd5EUI614VCpPhpwUZcGMFYzSdCp28FwhRjMkINcBRC0wwPwmsejkHcEzzC/gCtQTGjQEJT5VFBdkJ8QiaKDUJOtS1CFwjaweoDMMJQWqRAMo+2QSE0b8KG8drAKt8aQvg068F6EzVCLRdkQh2D/MAoa1LCz78pQgvKkcHia7ZALI41QqkPJ0L/7GVBrR3iQMXfgMGImhnCOEwpQT9wVUEVOAXBYRB+Qb3nLMKQsYrBoX6BwcUzc8Ls2MNBR0W0wemtIkLPY7rAoh9Ywl41AcHDMuDAZB2BwRw277/zJz/BUpiQwZgTbMFIsCbCsmyLQf6AQsJTCmFAtaTLQXFLnEEvmkVBeinawV6J7sGPjplB7ACcQZim7kB0OLq/nbBcQVGjKkKGIGHCeOTOwWP8BcJYBWZBq7+XwCLypEEa+dZB81r/vk4+o8GQtAhCdeXcQUvqCEJ4wJM/nH9uwSAEN0G6/6zBsDj4QaF6lEI/kBbCow7XwYdIwUDxHiRCl0rwQTkqOkIIqCdCsn29QSlOacEzRg5CCd8AwmqwWcHD7ifBfKISwpF6yEHKLT/CO3oEQW8BEUGw6XFCC0tmwm/GGUKcgMnBI9zvwM1aR0LH2lPBVcrzwTiOkMDkXcRApMSwQU4uysEHOx/CGspWwFi3E8L7wIDBVRSUwaddLsB+KcpBRVYEQkeqv8DHbAjCAS59wnqXP0HDICDCWZiEQHUWQMFSE9c+FknQwe3Uj8Hpj9FAVUhQQg79SkI2KqNCYnuOQnRCEELGWYZCq364wLFw7MHQGi1BLVm/wU8ZO8I7A9vBobxTwh81A0Ab7ghBkvV+wSqa8b/rgxhAWWZ+wvzuUsK3+6zBtdtswiATmUJMpJw+U27DQQi4n8GaZxvCZTdev0gVgsHeKZpB+3eWwWoJFsIuHALB3qbTwRdIc0Is38nBS/7PQO63Ur/lHuHBm+dBQSioK8Jl6nLCtF98QcSuc0HQw9BA0Hw5wezyaj+ZzvrBVRubQt4+mkKQZwLCEhmaQrWLoELEYXvCA6s7wg4mjcFRVXNCQ56GQlfhXMKqDy5CFuqswcoZt0GlIiTCvZb/QdDfw8HYSqPBiKsxQgeo8UCw9NDByMthwpHGJsLKZxZBftlnwmhm3cE1G21CsCYFQZxQW8J9+7/B7/6bwRqFQsIxHyHCJuPqwRtFDb+ieVDCqGESwmIKn0HX9aTBas0kQJwZlsH4dSVCpZLRQS84GUK4RzJCn43QQJTINkIzGyZB86ITwoWb6EGLy9zBRBnswbkXRMIyVaRCX9UfwogQYcEiDb7Bbb1zQVHElMGybuhASIbfwWls4cDo1ApCFFPlwMW+uUGYNxXCexyzQZPxkEAqEyFCUC4XQad0jb9hXJbBrGIMQvMGPcGgezdBhCUtQa5lu0Fl+K5BvUYEQqZ5YkIrvYfBAT5NwAYV5sHdwBVCujlDQVyhmEJNcc/By+2jQhDcjcDLA1TBkKEBQiifdcKY3j/BSlHVwdzDPkHLZHNC+nu7Qf74m0I/FVjCgbGsQYunbkHjyUHCPdrvQcpev0H0q0DC7+9jQmqmKsG1FZdC7WsqQusJS8I3WkfClS0RwhnQicHYRQlBIw/bQLfyjUIz9OnBuQkpwg94o0D4pltB9zoGwThmXkJYSXrCWdhFQs/EGcKBNQjCp01TwtdZRsLjWIBC8KINwtGumr5VJQlCGM4LwpmbHcDxv1NBsfJMwuCxo0B8aaxBtBirwcqJ20Fp6x3Bh+fBwdu3HME67v1Bk26RQiqxI8LIgGJChVXOwGQCPcKJs1HBLFs9QjvUrMET9tnB9q3twfqJHME7P6w/XylYvzDZ98Elwg7CFCITwnfgFcEm/KnBrHTxwfUDFsLczV7CHQYxQYERX0GhnxfC8lD8QblVGUAQlDNCoY08wvsE4sEHtGhCa1KhwW+chsB6T+PAIhvywS6joMHrs0G+8OAmwv5YCMI3rJhA/WcUwk45tkF35GlC2puJwGRyCkL1z+dA2CpNQNQnX0BaK5FC25JXwWijvcDMoT5A7cSPQuCnlUI0/JU+48tCQOvJLMKrPUlCeG2WQcEglsEuC4VBHSqvQa26dsIHGrFBsntnQIV8qsBJ81vBaVeCQV1928FtxTfCeoNnwVIyT0EzkgrCH7dgwV50EMH1zmJBc3EyQlZFT0HREMrBtDzhwAg49ECx3jTCnsbXwaOsaUITzEHC5SF4QXHUWMLgJ5JCdc19wsTpO0GPB5rBS5ohwnaQMsLK1wrClJzjwexmZD+u5lBBxNldwE5fQsCL32dBBc+5QKuKQsKX76G/wGg4wrmaOMHl7QnBk4s9wTZ5vkGILTfCyzY4whBvgkJ1MsNBGXBcwhRRkULVm+/BCpwewvy7+UAl051CpVk8QqG3FMJndpjBjvnLQV7zGcIoYp/AXFV0wrPUWcIzZFnCq1gqQrzO2UGtLCjBb72PQkiHMcIjDADCsEEJQgQEwcER+ItCB3oAQdXHSUFetSjCpX6LQpt85sEC+hdCRDXuQWiZ4kE3tRzBL0ZFQjrFqcCKik3Bg5NWwvPjykHZ0YJCWsX1QV2ws0GIFJ1CH/AJwr1bPcIX4t7BoVAIwrUYhkJwQHrCdeOCQiEyMsLC5i1C6kW2wC5KEsJsPE5CrTlmwgthHMJrRhvC1Q4WQbg9NEHZATHCY5gDwrk2IMH59t5B+K1XQJx9r8A7rL9B7gStQeSo3cCnlphC2UdkQSVsmEIEay3C3xwwQVPplEKM+0JCLMinQR6iNsKqGGBChvE7wZ08F8G4hKvBhg8awiZXk8GfkcZBRK4Pwm9mZkJSJEdBRU3Kwc67McJ6/AlBwhRCQvn65r4llF3C4MW8QM2qDcI9u7DB9spOwTfDXcH+FpjA0ynOQbf7rsAMEZnA8myYQgpJI0LrqDVCULh5wmzdHUJbI/9B6yYYwEGIZEIEt/XAdx12Qs9XBkHAJCtC8PTcwbCTjMFXMhrCWBL9QZPcq0HS7BTCeJsKwrgO0sB3w6NAaYeMwbzNpkHI/t7BswP9QZndPEKmwrJAeqTrwXcsEcLu6xhCTaMlwcyty8GXoEnCj6XnQTPQIUIuQBrAaFBfwo6Hm0IfvBTC8wAjQuPSTUF3xTBCK/pFQW9ilcAKEA9CcRUBwjZ81MFGQKpAb79VwvLCAsJvS/3BLH0kQv9rBsLHusLBjcUlwqqo1EFHwIvBByeHwGkQ5MEiuABCzJkwQmMdWMHXf7NB9dDRwJ4fDULuSJ5CDh9EwlucKUJZO4pCDr6Jwc0dXcKesuy/AkGOwZgtH0LjVMlB3kdGws8pX0GtBANCcv2dwbM8QcHzXSdBOPlRQWkPZcIjygbCVgHdwKHTbMJBQbHBKSCJQhCmCsIZgVfC5gFlwmoUpkFB7GxCl+IfQUPsb0Lnqc9A2cIwQqo+PcIztdjAS8gSwt8xOMK6KnlC/qhZQmS/SUFQxyVCpktyQhq8EEExMIJCOW5hQZ2MY8ExJxFCz/bXP8ZtQkJCNXJBfMfkQdtfBUIHimfCdJtawVqe1kECxwbC1RtRQMO+b0JG+wPBYwslQkpLYkAdVBbBJSUTwie9tkFXeoa+XHL7QasXw8Fla5FBRNwtwZkb4kE/JcVBYR+DwWLoFsJV/0RBC4f3Qa/cLkJOsqfBoskjwq5Sg8LWsKVBePFuQlxeIEJWfPzBxG+0wTy/58FvdvJByLJwwbAO9kGP87hAqUNhQMvQEMK9vGdA96yvwaIAdkGsvjvBK/SWQmruMcFxVQ7B/JLcQeCDkUJ2CmVB89BuQfTOI0GXwyxBwEB6wnCfJEJHmgbC1hEvwuw1AEJlKzRCH8cLQkRzw0E7oNTBK4MGQlK6RMFo/IFCWdD/QRB2lMEJxkBBmNGXwcUTqsE57mE+VtgrwQALBcK6koDBSzBgwt9X28EUOUhBEeQ2wktIosGkW0RCJzOWQux/6cEhL5hAx8JjQnVRQMJgD6fBJEoqwkwecsKWWnZCRqe5QUHIOcI/0BnCBmxwwmhhz0FhG55CYIP1P35yxsEyyiTCYdJiwqkeAUJiQKFCVnttwtoBUcLygzjCqUbqwb8j8EFMlsBB4BrPwUUhMcJ9ZZJCLqLGwS2kmULXwevAdyWAwTbMD8ITrx9Cc5sIQYAC2EGRmyxAzywsQRRz50HhPERCCTSBwgXwQkK9YOpAsqgYQvVNk0Li65FAnE/owUqgTkFFp49ClX3qwS/NS0JyNwnCs4WUwBAGZ8Ez7enBqN6KQtelvcG4pajBYl5gwjlPPMLVGxfCq/4IQqWBAEI4PgfCg0UswE0ee7/Gww7CU3Ntwish7MEmCU3CdywKQdOzTUE3pHzCz5YRwpU5B8JLrDzChAlAQv8cSkLpNWlBB64vwkVBOMFPBOLBmaocQSrMoEG/D+TBHZcmwiw55ECC16bBbfcBwsitdMLU6TrCFW1NQmNkBUCunoBBeG0twvv7xz+pPnBCIi35QWLSIMGUYxvCY2YCwYQDzMEPOQ/C2hwpQvCYCECIGUjBSBWFQZOgt8EH5TlBsRKWwGH/UEEK1ttANsIzQQOq6r/5heBAxMfZQQVfm8EXIcjBY1NrQn72SkIbdUpBqBfRQZZuwMECXdxBzQEWwo48r8Ff1ShA1H4mwvx0OcJmtYpBEqkTQQ/bmkLb74pC7OJ1Qn0Sl0L5/UtBMplBQdHsH8LrphhCJ3dZwkr1UEA+nSPCEWcTQHNB98FQvEJCqRSCwU8j4sCfPDRCZhC2wUNRLMKh4utAo6GqQemr4sHlVL5BCKEPwg6qSsEx3fLAv8D2QfKnNMLPZWLBAcD2QF6SBcLGmsVBR1mawZ/ug0LPANnB3K2QQZz4pcCONzLCRIiTQjtaFcJSEIlBpeSvwKzZGMJemYtCks5xQW7GJkI2GlXB7VrdQVrXPkDxw7jBsvKFQslOCsIW/+dBXYpLwq1ByEEw7YNC0rcuQSD1U0Jq63xCl4yawb5PKcK3WptBTKYaQQDrtkGhnrdBtTOmQenLSkJSYy9BvTqewUty78DFWE1C5BzMwWt10sH7URpCDi8bQsvBZkKinJ09Y6khwfzw6z/ec2nAL7DBQSJxgMKqccvBmuUlQgSZqz/onejB2mdCQnY8AsKkFn9AGPArwbNYrcHuzaXAfQbTwSG/zkGRqyJCllKeQYLRn0Lc/AzBbDemwdWtYz+ibYhAII0SwYR0Zb+ePkvBz5HBwMdtp8FEAwtBCp2kQTUGvMHS2L8/zxOcQh7WhUKqv6jBeHB1QpS7Pr6BubNB7v8zwaXicEAfsgVClwF3QuBNMr9TcgrCWa8PwZlS78BbajPCzKvaQSljJEBkZh1BsP4pwnFEI0JDAD9CKGrXQfT6jcF4U7LBu30aQaPjGsIJAC3A2H+PQkioIcEBzkTB3o6XQk34GUJqotvBpUxZwRsvpEGNVmzCZfB8QV51GcJ93c7Bv/LgwbruBkFlyY481TJvQkkZ7cHh7bbBa/roPnqpEkErgh9Ci6rEQWi7tUAfRurB5u6cwQ05psHyw81BNRrkQW1jHUIPZ89Bz+++QcyDV8LkldTBz8iOQNZIE0AxfyTCrKNiwvbkOkK8aYdB0vmwQEM0A0KJEJXBF2FAwqayaz4pOCnAZ8POwYN8rUEDarRBawrmQdsy78EsgyLCKNXuP6FRCz/xvqZB2zUowohHZkHhR4rBfQT5wF3wG8JgyRZCRpMQwpKJzkEVVsxAdUHHQDMkSEKsC5fBjWaRwakY/8H4xfK/xyIMwnI/+kBV/T7CyL1YwmicAsAfhADCHINXQA5GE0FVMNjB5CKZP9FKq79cP6m/KUgBwsSkrUFy64HBBWYaQlndM8JJwM5Bs9WiwQa8dUDAmbhBv0g/QSQOM0FqTlfCpjWcwEjhMsGaXDfB0a4MwjzH6L/PBvhBy1j9PoQANkKEVObB9xk2Qi/CRsGV7vLBu5G8wYeJVMHn9XXCAIZCwpM4jcEZs0PCuH4WwkG0XsAWesnBF9FbQh2ic8K4CCxCZ7Arwm6YQ8JwCjvBckMgwtwSiUKsgkPCwiFuwhEsnsA+3YDAqs4MwlqCXUHYgnfCUUPfwatrisG7O81A9N7owYn9q0DW0NQ+4OgFwgxcoMGFMQzC14Z/wS9Nuj9dGeFBG38yQa1RI8Jg1ZrBHmQ5wmSB+EHX5tbBzEoswq9wxMFbXlLBeHBWwmQEzkHPFapBkvP/QCLW10G/bknBZHkfwjcTRsKsKrrBjv0ewrvXqcFs95lCMHsMQi7KJUKnWXDBpCycwXyPwMF0ixjCqupJwvEdl8H7UmpBXn0owj0AnkIdD0tBZ3pbwva0ZkFsA3JC0nhnQad6H0Ea0CFBpkDWQFN2XcITUwXCW6phQeflXsKpHoHBonBkwhWpb0HW5jpBctzzwV4AHUKyOo/BhwNuwqUaekHxu1k/Q5e/QHraBsINDjjChigIQr2qkELi9jJBFdOrvzPqUMEaQh1C2NHcQKpzOMLqZnPClGi6wYKxuUGNlV/BV0Xvv2DMHkIZdGnCnNHywJVRCcIddXnCTcfzQbB7LcGW9bdBSmi+wDlQtsGq0e/By7Imwso+/j+EaAZC6rozQTMJwcHAcyDC6egjQpCY48BrDEDCoB0/wgPqs0Hst5ZCqAbFwV+fC0IwyTzBC1iZP9dDtMFcilZBDXDlwTOXH8Kg1XDBsz6+wPkFj0IKkefBd5WgwSi07UA5VwfC2763v6EQvMF9rBTBLWLgQTFfYMJ0EEnB65wnwrpoD0JFu6PAIbjLQOVLNsJWbwtBJYbCQSP8lUG7cxbCQroDQp31CsF7ajhBIYkiwW69ZEA4cyrC28YpQqT8l8Ezw+dBOyRHwe5fAkAu45VCWt1uQphWjkLqyRpCIkbOwVtJSMKdtJ5BEgP0we+MnMF7TuPAy4sBQMoMA8H5gMhB/WaswAd5tsGmftrBFbLiwDrVEUJPcyhBmZdgwpthMkHQqa9AQLSjQVZTc0JYku7ANzATv0VZTMLVYSvBB9CFQu47VkIcsnTBwhbtwRFRpUEjymTBkhwrQtGPvsG3oz9CZmDcQJqlMUK9G21BWR+ewX+lB8HerlzC/rIjQiGya0CTynnBZQSzwU0YXEHcABLCXbOOQWFUI8BjhAbBg1cAwt65fcHKMSLCRGCDwYqLwkDSv65AY0tOQNRIC8KausVBiZTuwSt258F4ngDC97wowTjfiMAVeCJCAHKjwRTJHMISFjLC1+PqQagK/0Fbcj3C+Zg5v6jXdMEIckdC5NWpvxHHCkCCCbvBiuwRwrCUPsDTqh3CyPedwbiDG0L2hD3CxHd6QDTA5cE/k35BOP7tQQZiKkLCNSzBoWtgwFfXn0ECP+BBkJD5wZ82I8LUpgRCdveZPzBmlUJpvrZBAGsAQl26P8KfvIxCjR1twgYnkkKZbmlAw6QeQhFqDMKVCh7Ccis2QvqruEHuCgLCe5Iov3jDY8J6jF1C5xwswgEnycCOvDPCXKSuQCrGAkJJRXVBUk2LQhNBAEK9EWHC14GtQO/2rUHxrKdAFJJ5wvVIEMIJnkpCbYUzwtTxV0F6ZQlBWXclwtrz/cEhCNnBuyoPQSG0y0Drp2TBz1uWwfGrCMIAxcHBNMOAwmASKsJQyu7B5WIPQsVvM0LYAuNBqTndQd7FYMLqesfBa3qIQSAGH8EIHtrBWJIuwseUGMKtIANBPkhqQMm8/8HTVDQ/IdIgQr/VOcI2HQ1CIyxjwjAjc8I+PTTCqewlQpZKMkKX7sdANQ0pQpOOQUL8HfbByfqpQZm2R8C6Tg/BgttKwofz6EEhxM4/l/zYwJLZO0GF1CRBhX5QQffJjEKoj4TBzhwBQjelHkJJChBCB0RWwcwvRcI8JDzCoUZLwaw108CG8j1BpHX/Qbf3BcIFrwLC6EURQSnoFUJ/M+bBYxg2wuzFekJc3+/B37YGQbJym8Fq7wJCsIxowpgZksEAsmpCuHohwmpoN0L/XVpBTkKiwWJ8tMFruMtBrv2Lv0BPY8Ii03xCYm3lQS77WUGWJrRBzNJHwrBTY8LoI9lBWpoVwmmJKEKk0x7CWi9ywgrytUG5JI9CEqYAwgr9PcEMtk1CT3HuQUtP+8F0szfCwnoeQoaiI0FaXjtBWjNRQnTGdUEaxV3C4S8eQoLB/8FqDL+804MYwcpM5MF7MfpAK9VLwgYbY0KgP0vCm3sWwp1aBsF13fFAQ3oDQowviUE4dlhBWwUKQEEDS0AWcv3BOeWSQMyAyj9Nm1zCJjFyQUhNc8JSIhPCxuaVQuif/MCVu1PAPKr4wVOAhsHXdH7Cg7eNQj2CLEIBeMZAJMKIP7unjMH+ZQ9BQLgyQS3FFsLnbPbAPkRpwgAigcLknZRBTtx7QpLlfsFE3vZBVlsQwnbIsb/QVRRCsIoCQn7SwkFgQLBBxuIxwl+MEkF5lQZC9X4vwdPGMsJEiqtBeZ96wX0SUcIOQXdCjYR4QHUTo8E4sLFBtltGwj5LQ8Jyi6jA1IRJwqojPsK9cBnCUrkwwnFJlkL8VyTCfHHDQdjdJ8J1HZe+k2VrwqZGDEKnbA5Ct4eQQA4WPkJebJjAM63nwbDTEcK5l8lBg4G8wduDKEEl0FzCc9s/QmJkEUC5ZbFBiVIEQlFKS0JSoCPC0kirwbfQM8IastzACQwPwkTAOsKIJGVCpne6wX87+0G+/79BK3xeQWZFeL6GKWTCvD6hv+Ymo8GdFLzBzxx8QjNm80GkNEDCUmiuQfljjcHXHo1BSzh7v16jz0H8TuvBt4hVQf7SokEAgDxCZ33kQaj1IkJ5H6zBqrEBQVvQGkHgloRAxxD4wSvj+MA5tPtB936bQT4MVEE8YCVCqXDkQNr7AcEEm3dCeg77QIMKrMHv8wXCYNF7QdQ8wMGUGWZA3kYIwmgQAkK5OSHCDUuuwHXv3cHBWJ7BCUg/whjcBUIZUwnCzpACQIu1iMEbq4pCuOWjQAGVI0LOh2lCkbxDQbTutkEvCaJB6NVQwpL0nUCT2XfCsAbVQKz8i0Ji/GtCxpkWwq6u+8EtBfPBhXUjQpMyPMLd6XBA7WPTwXjUicFfZqbBYTWpwfoqD0Gssa3BQ4FXwoBkmUE30YPBJsQwwRZiWsFrEg3CmzoOwsGj3Dwzf8k/lPj8QePBe0KWKq/AV68yPySpX8LuZtzBUI1dwtgrXsHmzFnCo08vwlCkQb9n5EFBwzWRQdXgAkFw8Q/Cz6CxQJJQZkJ4+mJBJZl4v/+24sFYDEJCUiQDQgy/AMDkJ4DCuXxZwRdXN0L8zNXBxcg/wLG6J8JyceHAei0wwm/hfEGkN2DBKsgBQkdYNUJhiX3CKat0QiVZI0KENAhBya9PwftiCcK/DY5C0eCqvwgpO8ItXSHC8/nWQVnL90GGPtfBt+UswUzJIkLVZ+DBWCo7QfPiZMI6a+LBC6Mmwh/AgEJTadC/OT5IQFpfUcG/yQFCDBV6QMzaOkJg+ZZBVL5FQnfMGEFgUO1AkfLgv3FNLMILD/BBSoPvQcBEZ0K3nLXB3JTDQZnnJ8L++2PBNnoiQg4+DsHxmC9BKxLNwe5hL0BAl3JCm8YJQjH3M8LNFKBBYrWdQuvyAsKd0DPBH1JdwZtN4MHVpLvBfvGxwXvILkCAnzlB45kmQv3ebUF3PQ7CTYUHwpMFo0FHhaZB2u6uQC4VNMF0VmpCQ1c2Qs9Bq8FBg0dCYgBxwuj75kDkdZVB2V/EQe1JB0Dy5rdBoHA+wmP0LMLoqyZCkog3Qs/vOUIAghTCDGmnQZ0hlkFgCQLCddmWPznAaEEGJ9NAOArCwTaGB8G86bZB/vM/QhEzJMI3repBFCuOwe9cZ0FrLvlBViIOwueZ28HJ/j1B3Ov9wbunNMF/MTTBWPojQUwjxkGvoVbBl/EgwTLLOEBju6HBWGISwgYmjsHgS/29acc5wrzkM8L2fR3CnqTyQSL6W0FJ4vtBfHkJQiAnusDr+3xCVnngweCNI8IQZ35C1KnuQdh9vEAA3StBJMdBQt7zBkFPK7fBM85gQugrBkLmJw/CFVKiweCiIcI8vi3CtKZCwmjyiUICHG/BECLTQPF+VcF2XPXBSkZGQjTcxkEnHQ7C3gN5wi+Rl0J2FjrC6MTcwS115kAJxBxCBHWKwWKhzUH66OxBQ755wjQ8j0ETdK1BeDTFwELvZ8LMNQbC9WIfwWt2vMAahWLBF3HsQIQLUkHmzEpCuF0CQTWqaEKS8nbCRumawVdn2sEaL7FAC6sIwqweMUKXMDnCuC8aQpHRcMFhtizCYiphQeVEl8GRFgDB2jdKQl8UkkI9ZgLCb0cXQQ6gQEFm8KFByD9pwWLWxUB7srBAodwGQtgT9EErKy1BIOJsQZLaW8AWun/C5LdnwLYV3UGOQB3BchEGwrolYEKS2vXBGZ2TweoHikJFCi9AfEM5wlzD58Eu99FA3jzmwYux+0HJ5h5CIouPv4Bhf8FWCjnC+EPzQZwxLEKwTInB7dElwphbs0Frdt3A8yFBwdKqqsE4lgZCO2EnwlsD8MHfxFlBI7u8QOdmXsErpLdBIQYxwsaGoL7HSurBZ03HwSp3rEAD7p7BPzYUwY8O+MGZQsTBOAS/QSLAP8BZv+DBvVXzwR6BG8JPzHvCIw9ZQUVnk8HHVidCb6pKQYQ6zMGX15pCVeAKQP2Y/kH2NHfBhuoxwn8W8MCgBrPAFocCQlnTJ0LEO2nBa5CLQb2A9cFxImPBXtIUwpS9pkDssybB4PdKwpmujMHTV6XBOuAoQtfotkHXA2xCZHgXwjurBkELLkPCl2H/wNqdrcHd/spBV+OGQnhqA0JMiNDBvxPrwBegUcIQ1z3C5o7vv3RWMUJGXqBAto1nQOT+m0GHOtXAB8b8wdYYnsF77bTBYMLxQIBwsECrej5CJwliwUtvaj6fKGXAjjQLQpok7kHb4D3CSQBkQnUlFcEEJ/7Br7YFQaliJUH/qOFA4lwGQiezrD8QluPBcKovwlahJcIXrTXCFHVhwDO++cHO56xBm93zQAsvXcIVGE7C+niOQItrdT/v80rBmDbXwW2xhULuKtVBLg+8QA0Tz0BnBXg/gwUvwmypekKTcexAUp8kwgOP6ME4mYdC/lE6wQCe+EC6pJZCZCc7QqQIVkD1k+FBqsaswB3/dr+TL0vB/py7QXHt18CO8u9Ba/xkQu0PDEKF+F9BRJb1wdC5JkIuHfPBg5sOQWRF1sAZqQ7BT7hjwvFMAEJks9vBnVO4QQOooMF8pr8/fLovQhefAcAWEVtAoHGawT3n80EyZftBZUWmwcBJ+cFwQGRCXxguQifOxkGZQtfAKGB1wcNshkLtwSRCbkg0QevWX0H3uQTCftwkwiDDfkJcaABBfzSHQN7i40Gh7rLAWYXWwAA0acI0VabB53m/wQK7lUKadzbCFwg9QUPcXkGQcT1CmRmxwWtyHsLiRpXBix6rQWl0AcF7JkU/J8wQwi0QKEDP4ufBvxGCwiElhcHbj5tBEz2GQthH58CYMsTBxM1FQs1RAsJed0BCuQOTQUQ9QcJPtuDBKnokQVTiDMK711zCUssSwi7wRcKUkOLB7eZoQOdjL0LmeQ5CrJtzQjN6S8InnCTCERyPQEkhucEpqezBJvEHwkBUXEEzPrHBxOBsQc0GaMEWHdpBAt+XQniADMLbkLhB16kZwOn0/cCmrazB2j4twg4ESELQ7ghBGe0NQQsQGcE/TADCKFfhQRxJJELC8glC29NQQTbs90BYzsZBDU+hweIozUH0QVhBmp88QBpQWsFKDDJCF9awwVyhesHygGLCHRMJwkovv8CAmvTBSvo/Qoc/IUI2+DxCD2FiQf4UdsF7wQvCDUvfwYkYpr7MnZHBBPEpwu1fg0GgUso/9CWGQhYY/UEPP3XC9YakQNUQLUFIQl5Cv0GmQbKZrkHN4O884KYaQbAhnkCJ979BzvAnQbAq28Fx7wNCTcuUwWlViUHyjx/BwgkHQaAztEBAOC5Ca83wwdKEzb/0Mz9BKjscwhvQ7kEVpRNCVUc3QXmJKMJMdA1BMKRKwqvGwUEO+kTCgfEWwi0U3MFKvo5CEfABwjWeFcKriPzBvna2QZuWY8KfFirC3WTiwYFjGsHMtQpByDhAwmaQ4sG7gFjC+g4iwHp6pcHnU4PBw+hEQQL7p0GQgiHCmnOnQcAeqEDk7sFBT6onQpfONUK1QaS+1rIBwvuUA8LSQkBBunfiwYDmM0GIJNnBdGk3QWnv3UEn0jJC/EJlQY/gLsIOBNlAB/GIQToMz0GkPJ0/GJFkQioBGEK9Vs7B5mtOQDt50sDKgoRCz2YwQbpR/kFrbb1AILXdQfMNTUH4/gzCtkgqwVTLzkBcv6pBeCIyQIi1lkJjtOXBZH08wanxg0LFJ4RC0zMSQkkomT9t0VPC+pqpQDLaA0E+bkTC7deMQfRtFMLrHspA1Pp9QmT9EELdZkbC2L3hQX2e6MG5VRRCzL2eweufoME0Yz9B9Cd4wsGIKMK32lvC7HUuQlkrIkK1EQdCUPcbwg2QskFeJPXB0GWAQOn+TUHmqTdCJBJIwdQ9JcGTECpBtTaywK+bE0IZvQBC8am0walG1kG2TLDB1IYUQjdEUsKvjCvC/Yk2wtQPScK7XcXBbcECwn36P8G5jiXCPTjJwQ9gJUKv1T/Cz8BMwQKpQsKKFRDBjDOKQnW2MUFufulBLGaaQaTdfsDcEYJCebfkQYSJA0CVX0DCDZytwdiea0FfblXCJVhVwoNyX8F/JttBism/wQ5SBkLCMQFC+joBQrJVP8Ip1wfCRzgHwk+qhcB9QBVBE1wOQUeZ0MEIC+xAZRRewpjmv0Eq9+DB+3ZUwbEuHEEQUmvBGMh4Qm2wmUKCSNvBhMvSwcL2gsKi0LDBW9zPwVTfCcJ0UPxBpGYtQpD3wcFQ7z/CRfgtwo81q8FBYFPBf56Awp6OwcHiJRnBluyrP6s4ekIXXB9BqN0cwedrDEHcTQxBVCa1wWpYTcFeAoxCVkQFQn8mP8LteHTBFTGOQYP3EkLnbIW/ndddwtXwI0JHRebBNkNOwiLzl0Kh3efB50zHQUC9dcJDkINCIsLtwBW0CUImot7AMjO2wGIGxMEubPLB77QGQC91L8IMNRnCc32kQTvJ5MAmB0/CukY8QluxYELZ7MjBSksYQVF9K8LPiJLAIN0DwrU7yD8E5h3C6ExrwnmiO8KSCh7B9dd1wc6H5sGDqm7CIQ0LQa5yxkHZejRCpc4cwnXHMEGhXSZCBTzQwegW4sHFw8xB9UHoQCQLakLaAiZBisrQQcVpPcLglibBxk/IQKCWBUHfP2C/XjK6wAwI8UEgjwZCmEJlQrgvJ8IVqCdCP8E+wq5pU8J1M6nBSJUpwmtNEEK/KC9ChdT2QNHSbUD9mB7CGG30wQIJKcJOwQbCPMGRQRkr/0HJBHhAnUhKwpJRgkKGV71BNQ/sQYyEe8IA1CdBAB0fwdz/R0JYfw5C/4R6Qq+Zf0Fw/Qc8fSEdwknWp8F7wCfBUuwzQKIsCMJw4DlCStYuwkBqy8BHhdpAkPmRweAD1MFe06zBqh1iwrVJQMLu/tPAuzWQQPU8R8EmRhDCOGBEQiaqwUEZbVLCLrhHwfn0QUEC/e9BtQtuQT7dfkHdghDBXvOPQZFxJsJygYNC+zq2QDLpSEEDdRDCgXDawVoUBcFFzrxB8MwBQqw8YcIav0NC4FAQwh5jJ0LUbR9CF4uAQj/W80E7c2pCosU0QoiC98C2wEPCnm4eQZL3DkFemhFCksTjwbd0ekDjW2bCRVDuwU/dKMIi7ifAr4RCQmNdqsFUqRfBXitbQTZA00D70izCH6cHQjZUpUG2/oNCzmw0Qju4DsGiusRBy5CgwayKBsKeLlPB8IYowlXvB8K6WfZBUu5SQTEIN8IEWQDC/Qh8wvpIpEG0gQHCkEKSwHs0N0GZqRtCkz95QqW0qcFG84ZCxTQyQSeik0HzhYLBEcAQweg2d8KTxj/CLHUpwcqaC0H91NDBz54KQccsT0KmREXCOL73QYW6IkKw3nNCjUTkwdlj+UFQhjpCbqiqwXNdakFQ4h1CFxK3QVjr7cCLx/vBMw62QN6WCsJHgmHCvVfswfp2G0FYGCnADnmjwBWqykAq9KNB81UiQpYIxEFy1lbBoLX8wXNn08EI+cBBPfupQWGetkB/HkVCzGc7wt8OB8J0/UVCvUR8wjSjckHSaQRC2wX0wcIXCMHk5YBCHUvMQNU/X0FRXGBBgf+TvwvFbsLa8q7Aj60oQopvVEF3SwzCTrXuQa0jRcK0bwLCfw2eQYXqDkIn/HDBFKFSwOus2sGbwGbCx7YSQrHSUsKWWIjBdFd3QV6o9sHPvpjBMZznwaMc4EDg5vfBdYoKQoSAEMLpUyTCLS1CwvDfDsIbD+ZAtES4QW+4okHSh3JC4VhDwl2Y/sHpTK3BeeG7QQRLHEJz8wPCUX61wXbSDMFoZ2LCM8EewrkWIcKHxtXAZtmGwTtfQ8IWQoDCrOmjQVwBgMKML79AKBMAwe0F3sG2G/HB8rThQaMnEMGR5fBAo/SxQcWQC0FQiMzBLS+IQDXhNcEGYKdBRIICwvZTZUH/hC/CBFEEwHbhwsFG/ghCmbdjQtZyRMImCOPBYKMwwpK3MsLOontBjAkfQnRQt8Bx665BJ6YIQdznF8KDOaZATgwHQULpLMJpn6RBtt8gQTtigsHY5INBqDHMQfvxAkFmgYBCMmoPQaeI7kAwgmRB2v3hwErIi0K4gUlCP4mfQU+QqEG+R1xCCI8owo8xWkHiDPHBLk4QQYUTzMGofC7BvjEHQun5p0GiuUJCW23NwXWUXsK4sZdAn/05QcN1EEGHsxxBVc0JwhIUgkAloXzCzksIQsu86cFezCXCIVu+wcnJ2cGF34xCNWYswu8v5UEVnCJC4ssvQgnSpkEiahnCvPJYwY9M38Csvp/BWJPvQYCA70FmYNJB8J4LwLDEGEEyGTNCAlKxQatZ0kDjh2HC+jvCQfPsAcK9dMXBYpTSv/1S1MHWwdzBiy/jQD1vXUGI0zzBKo5IQsxzMkERoEhB7jTlwZo/98C2q7a/AIINwVVAnsGEtbHBlOo7wrw/pUHVux3CNl+HQeKHC8L6xia/uJQPQYbRO8EVob/BfQqrwLSgpUGKHyxBG5MYwYdDV8LxWufBG0tBwZ1KLcHmYRnCz7Z6QmEIMsEQ2j5BlqkDQj1zd8G7jE9BkOlkwplLW8KOmztBFkl8QEKvq0EjSz7A97puwvVN9sGWXzpBxKU9wjeLJcJzV2fBbOi4QeCQHz/PurNBMmgIwSdOm8GPFQXBDr0FwearikFvb4BB5g8fQQWorUCmKxLC+J+MQp+sPsKMqs9B/vzmwaAErUFKgFDCaUEnQgu858F1xtjBzNvQQAaU6EEMCbpB8zTNwfHiBcKdcsBBRosGwmZRiULsOznC8HAPwk6xpUDOZ91BhGKMQPlQF8InKa1BX64fQuVKG0FqB1BAapNFwvtnqEDScjtCvLRPQmacXcJztAlBU7DgwYp3Z8JAH7jBXAuWwcFY+MFimvfAv0AoQv54/UHahEFBcgWXwbzx2kDmVQdCFOaLQoxOYcF4eb3BApSwQKnQecHmlF9Bs7oxwsPcG0FZVMVAwX5/wsn7lkEzX8JBy3PpwQ+7FsAmIhTCbn68wawCuz6V6zdCs14qQtF5RcK5z1nBv0hUQcOq2kHQtkjBqOX1QEfL3UBKO11BxzIdwRp2w8G62jFCrxYlwjyBbUIZ3SpCRd5Kwt8ACcHVggHCTkyfQeoIpMEv6gJBeMdbQO555EHkd8pA8pkuQk9F0MHAKohCKb+Xwfs6IEKw9gXC/N3PQAX3JsE/V1xCbdwdQgOrnEDbC5hBDyw7Pr47/MH2o5DA1XKbwdbqrsGpwRA/FcxzwR+TXkGqjirCIwTeQZef6cBiPnfCdHVlwiRcX0EmZSTCC4eWQAp9TEHMrTdC8rwVQUFwm0G7ASDCYs10wmrBaMLdcDVCn+aLQZugB0LyigFCH4iRwcxl7MB+Oi9CPqmDQqkNWUGy80NAtzpKwvaMTUITTyfC73xSQZ8fkUJzWTDCAKfPQYo+HUHvubfBeHV4wuU1LEJRWDZCCrU3wcMeBMJBGeDBNAqpwcd0oUK5ziXCutwmQqOteMJXiR1CTcIIwuk5LkJRdPJBIcgHwgD0qkGAoGRAsvUqwQo0VMLUHL1BOe8FQpLWKkLVlzfC5TmfQVZZMsI+n9vBnE0bwIYGa0LvX9FAR4sWwBRYusFXNNBBF3J0Qr+bS0IT4crBkc1PwiwV+kFyeCBCr4xJwlqzVsH0J9BBTCtMQbNbE0EwRrhBYmyjwVpFncCBV5RCKHQmQRsPCkAwlQnCHssFQkleSsInHQ1Cak8Twqmuv8FoXjVC4uJvQllE8sEvdhNCK4cEwl3OUsIe8UdCaw65QXgEkcATxYRCSleNQtMhTMKsZinCvLmhwIWZbUHwQ2bCCacdQlEpEsIgegvCSkVpwViPRkGXch9CoDuQQM+uI0K+prHAsOBYwhboYcIoU+PBHqADwmpXLcLQxVzCZJykQfIoDcJinjs/kxHWQIPXeUIAuBTB7ErlQSsvqMBaCyjCbO92QsbHrsDMSG2+yJYeQo1Q+EGcFvlB2Va3QcS8UMJOWlVBbtGYwVPbiUHDpoDCu02aQYU4ej95F8XBeU3UwcBMqUG0t/JB38hiwl7Xt8FmTSBCISVcwtL9GUI8uFXCrHgXQbHvQEKoqP1Aeqs6QZT2+cEoSPNAp234QQKUJ0LXzobBrHqwQQlowUHrEbzBIb73wI/2YsLjJoTBVqIzQtLLdsFgLDbCEbUYwQMZ98GgAXXCTOAOQLhVKsE5ZO5BmPi/wVWHHz9Tpl9AxZaNQFjZGUE6eRTChjVJwYxAGMGNYvs9LqenP3eZtkGJrJpBuOUdwI0+0sGkiAxCIu+3QB++W0H/SglCls8bQgybn8GOR1LBysMxwuJj+8H9FYXAhnK7Qc5cRME9vfTBBKZlwlfDUcJfWw9CLjfiwRzbtkGFio3BJDIWQY76AkHksQzCNgEAQoaf3kAfsivBvAY5QSrHB0ApCgTCG2kaQl2Tcz/qJXjCo6dCwq+ocMFG3QrCpGffQW0pncFbC6bBNBMEwDLNFMDWbIfB+r8lwl01V0I8EGHAsL0Kwnf7WUGZuxrCxk00QUDcBUH1KVvCbfTzQGqKUUHFxG1A6ScAQreQvsGyVj5AsLS9wKb3Y8GDnwJCbU7UwClHX8IEHbNBpcqZQTOt40Hhb09Bwvrfwd/x2sEx8ibBBATVwZe8dsLTc2PCy2ehwefef0EUpybCN0QvwuYSkcANGEPBk5H/wdP9DkLd9r5BO5hKwRh/i0Kyv6nBa1UEQqk0f8KQVuhAnffcQJf7pkEYPefBUnM4wch0ykCVh/NBsMieQVhfGEJE7m9AgcbiQX432cFkfN9BrCsKwjSxlUIXmQNCe1UgwtVGEkIntkLCt9EiQtieB8KDjwzB1LyCQBWtF0AqXNJA7HlDwubTIz8BM4TBvPNdwfP4mEHRpyjCEkFlQnkEIMFGfDvBwIrXQQrJv8AafyHBLV+1wHm0KEHecqTAbeWDwdNZjEG/TTdCEY+BQsn+TkFXogLCkaQZQkpNrUHyEc0/mhgmws3PsL96nOPAc1QGPpFACcL87CvCCcmkQRy1mcGuiLPBQKPyQaRNvcGw7jlCy6ElQYgrAUJOZFzBbRV+wjL8T0GxfjBCW00ewiOhkcF+PhxC/IWZwUF9gUKBOW9Aqmd1wktODECgum1BSCxTwbi88kFGuFpBucJfwr1bDcJrpQvBBOihQS2BgkH06ZFBEWp6wUQFzkA+PsLATTBCQaAWhz+wiQDC2sO7wXq2i0L6sGbCiL+LQjutTcIORjLBE72dwOmzi8GqnvZBk20QwTTqKkLHFulBMN+KQc6H0b9sKbrAbgDQQf5+ZsHYCB9A2kARwlrBhEJ2fP5BNslQwh//ikK1chPCDmufwVNU3MFdagnC3CygQU10SUJvVeVBNceLQilO6sFBXx8/wEwuQXi4SMKawDlB5mU6Qhfbj0JsGqZArDonwcnYf8IKTCnCpA0YQknfDsGtOMxABUo5wp1RC8IyU0xCNVnqQDzPK8KNgn7C1Bn7QeloGMJrgFhBZSWFwFAfPsImgSTC2qDGwbcgAkIRsm9Ap+POwXeBYMJeP3VCuFpNQsHwvsAvQvtBJJOlwVSiLcGsngJBf/TwQUMMisHieJJCiKBKQjsrMkFG+9HBXrCnQKfdtcHBdv9BYdUbwdayV0FrjktCQNwlwlnCVMJYigBCoyVhwqGgFz8cEChCTaPcwIQv3cEpbbvBWGbeQXAAZcJf9RHBfCTKQBteRMIq+wJCPTcpQkJd38FuxURCzQAMwq1y+sHS+2bCs2UZwiORskHUC7+/Z8TzQV86tb9UGIrBv7agQAjcO8GUAEdCUqlpQpqmi0JcU6nBIGWAQA6vskHW73zCvqWDQdm26EG3MTlCm4opwpA5MsIBNg3AnjsnQtdB0cGPhpe/w+WwQKMYiUK586lBPTsGwLLiM8Fk9QjA3IWNQb/f08GUcwlCzCKyQUYIwEAGbjFCCvRZwcovpMGkvTLBAwA8wnr1hsEEWAVAHkntvv4CH8G+ZdhByVepwZ1c60HnLwDBSKVkwuagW0HsdNDBgnjLQVqCKMKeycjB0nTIQWoWDsL/zznCdR39QVzZ5sGBDvzB2CdDwm5QfkL15oVCc8p0QTQATj+DjCbClxSfQoSHY8Kpa5c/UAPfQKMS/EG1zCpCGRHBwVs4DcKfSp/Bm0nEweM/TEF6aC1BPhLpwQu5XcIW4CNCai2DQjLuFUFZrK5B+0BHQYSOesK7LhfBGDUtQXDMLsL3jB7CrNIHwo9YN8LC1aFBPgAYwvJ1TcKcTCNB6XgJQVhxckHxzgdCe7gnQXSLn8HFa8PB6yFpwjuDZMJ4quzAO6S2vme1p8FcPqrBkr15wQxSx0GtunhBDwrkwUFuVsFF6TdCS/czQc6iEcIuxujBmuiWwaLlaUF5GhPCO0wxwmkz3UAuoiHCcyDNPaoaOELnk7VB8da2wT8MmUCB05Y/gf8Ewdg+0UAzgmTCNiOewU6698F4viNBtAR8wm9nwUGlCnJCZPbrQdKzNcKFvBdBOL4QwqJtScLIppJBHNRvP+5MyEH570PC1KnVwXJ9pUC3uUdCs+KJQQZ4LkJ4U9PBFjDswVexx73qBYNC8WjawaL8scDB0cbBr646Ql/bJ0IN54M+qjz3wb/mskHB1WTBHGcXwTwLKcJMyifCPkU6wqCC+8EYE6DBbcQAQjYLkEJvz5lCbNvMwQEKVMKs5PPB1jKzQcHvQcKjPF1BLuyowTn5GEICFItCVD/jwZ+gicB1VLRAJ/p3wmkI4kEoHv6/se4cwVkeE8LoPLhB4Y4GwuSrBELFhoVCSWRPwptTDcL++CbBpmQnwWgnlEBAoErBRnNMQbMTLcDh4gdCM3OmwIa/dkJnNfpAYQZQP7oHAELSIi7BIfIRQYQiP0IDx6tAIw8pQtVqS0JAV0TBx4AUQsHZlUEK+mLBvQDDQZN/lECi9oRAAnsnwPTGGcIOPwlCLOgAws0eb0Gii1LAXOpywm4hIcJW0ybCsk8owmqYu0Gi8QLCgJIkQsxKc0HcigdB5MIbwhzquEH9iULCS7JOQnl3p0A8nVrB/gmTv9EpokKZ1xJCb2wpwRr5vUFlLX7CeUExQgGUJMKglJrB6/hfQCHnJkI5vtLBqHgcQaS59T/XpR3B2MGuwdp1F0Jgq8dBD6hwQc8otkHj+AXC4bz3QcWIK8K/VFXCRDNxwtOEScLkaqa/W9wnwlNV8cH/airCtuZewqgcOD+Hx6HBm2x1QTq1i0JLbVFAL6VfwuEoPMHm9HdBMGukQKcgOUG6srfBG49fwiT1/8CY4FlBmM2qQS/xAsJc7nnBz/OFQEmYYMKGOzTCSiasQVqJvcBOVihCQMiPP94vS8LUYlPCmbgrwmxmkELS1oBCVyI5QjBV6UFw999BLs3+QWrTEsLCcaPBLJ8nwuH7L0Fl6LzBHaNSPw6UI0Hn/pdBPVKqwK1O00GrmXlBSLIcQqC1TMJjBIXBtFFUQJQaakGr/wfCYvMrQjpIqkFJ+GbBie6UQuq44sE/qERBd2bcwTB2ScJ9rnfCVDKWQnVQOMLeRyhBzWiKQZOXjMD1rQfCEjpWQse/n7/8FNrBbUggQplIpkBC60tBxvaovg+Fl0LKBmBBgodhwYOSA0Lcj7NBmJ/QQVJFC8Kd9IFBurwBwsE6YcJDpb9BlBmdP1wN8UBjbwrCVT6PQHg9QELbsvPAa1vNwZ/d1z8ECWLBQAqOQiMsrsHHUixCY8GDQGXIJsEDq4zBlR/OQICGpcHGLoLCitacwKYFtEAMWRDCJNpxQlBRA8JMtuZBBt0MQXJmMEI2amfCrTJlwC1AHsHlf5ZBeKhqwrk1QsH0qn5C6BoowQe+vEF33TzBZLscwluXJsKZwMBB2/SjQFlQHUHMGLvBDJEowok+CMHBdFtCm9BDwrLOrsHbPsrB3zQIQte24cFJydbBH3lWQQ/xMUAgKQHCJy+aQBNP5z8SjMk/V/EpQl9DL8J2JfDBaxCNQansYsJadGXCThiUv5qGBEF8pczBEnqmQLE1VMG4zivBbFkjQVbpnMA+qgvCJlaNwFD79UHUh+XBp8+5wSQK4sF2pChB9V1uQgCpPsIUwrlB7RMWQjFUCsFBjDRBPCCbwWSOU8LtHSjCmf4yQsPGr8F1AW9BD9+VwIv37kF4/BDBmWGKvwIgGcJXbthBi8F1QZYqtUGrsv0+JD0wwqNzIkC8+aXA+XclQmawQ0KioCfCQrqVwbNjGcLWr1lCgkHAQYoa0sFH0ipAJfAoQS3B+kAxb7xA5b8+QQnTL0IyIixCHZM2QoY4ckJVrBVC+8USwo1VAUD2nWLCAFPGwWqu68F2ihJC1x/lQKl0vMEs2yW/H2dewq1iC0Eija3BVJlRwoJ1IUGFpiDCPQTOwf4RJ0IJk/zBHAUVQZ04YsK+un5BpBXAQQy9Wr7gdGVC5VhGwYN5f8KUMzs/8p1bQcoafUKYnv3AWsSzQAo4ycEgqR1CbCpvwP7WGMCO+hrC5sdYv/j7h8FN5rjBPVgmP0Y7mcE3NLBAraIGwszpxUAyiyvCpRRNwlEtGcLBirs+iSjTQWRT28EGg/tBv5GhwVAG4sCAmT4+FBH3wNJZw0D4tArBoL3hP6KeBEC7FUHCVzApQhIUUsHV/vxBGWDEwcLvDkINPzFBFKELQZ+pHEEZ+xDC0yM5QR49r0HRKalBmXhbQfv3hEEYTwhCwDlkwbWzI0B0O3ZArUxKQQ4a/sGldSNBloenQQM0rsHNDp1BTDRIQqSJS0K1j3HCcIJvQiySJ0KxaUtCVZA0QYv6A0LMSopBNgm6QULjA8JjBDRAkoUcwlO7tUHFpAtBPUT7wEy1U0KDWNJAtzrgQUSPRkL7zx9Czgfpvzm62MGaniZBf7QNQsnEFcKahEpBy7WYweKtb0B4FJHBTlEFwQRAKUGDW/FBTX70wPArCsJLDNbBqkJlweouF0G62qfBZuPlwRM8K0LYwS1CTyfSP0gcW0BYKD1Co4eaQV2pNcLj4wnCYI9PQoP1fEHHdNDB6gM2Qtm32EDYi29BR8uBwfNChEHQrSfCGdp5QS6WhkH/pA5ChQwBQqvCtEEHshPCH4TkQc4py71HttFBT9LFQEYaGMJ/OinCRS/4QJFSg0KMCQdBsPshQnsYu8BkgoxBJBRkwtS6QcKDFUDCbI4AQvdLh0E7xQPCr92Zwf8KAsLqFYBCeORFwSF2q8EYkwNCcUXWwcbmbkIw5iRBKCo3wbk3A8E6R8XB3mCpwVphQ8LYjEfC34XWwfOHQUIYJB7Can9TwmFmAsKu2n5Cw9S0wDdoGkD1F/BBBpNbQe+PGMJms0zCaTPmQTZbUEAipU5BiX4bQUQnGEHbG3dBEymDQXlNBcKvHYnBKVUAwizUE8LyewTBP6SSQWgM2cCzEljCs8DLQE4duUC6cAbB0HUawgcD90AlRFLB9y6OwX8mPEJ7didCQO5Fwo1HZMLoMLJB/TBkQZbX58HSlAJBieomwIf9tMC8e9dAAgcSwviVTkJUVIZCwhkJwuHSRsExMX/B2nrcwZ04eUJGb4hAIVR/QflftUADcmrCrH8hwkcvtj8g7JnBSQuqQUbsEsGOfyNCpi7ZQTkdlUFeA6xBHxWYQrmvlcFLGqZBXY8OQmLRKcLzqYRCIwQ0QlqkLsKmLsPBEtlDQj0jAr/7koTC69rJQMbGD8IHl6NBAabkwa9FaEF6vunACkL2wZA+AEEYygNCUGAlQfP768ElhHlCJp0bQpOsuUDiKehBFLZlwjvRb8FH26PBAMZtQUeSGMHR1QVCJcC1wb4MO8JNBm27KjuKwbAbB0FpqQ5Cg6GAwfM9FcKLeopBE7dGQpGAZEG8hz9C99/wQWtipMHmaoZCT0X4P/McYEJQ6i1Cwx80Qi09ZEKmKMxBdg6LwZUfAcK4fP8+LmEIwZAdvcGxYEDB6P/9wc2x78EjDH1AehRzQXmhwcEZJItCYUcIQjVU90GL/3DCI72GwZOFhkDQREVBRmquwM7gVkExEyzCDbtLwZctSkGOp6VA7mwOwbQT2j+fTCtCJy0awm8WLsK5HYHB8AuNQU1im0L3dNBAn8uAQv8FNsLikhtBcaUIwtAmicFH6u1BBwqbwSpMBkLhtQ9BpWAewrnlskGWIZ9C8e0JwA6I6EBo7pXB9sNmQUOiQMG9mspB3ld+QMB/TUKUnLzBAdO5QSADckG8BW3CmHfJQa8WL0L/9TBCqT/5Qe/DSMKnHwxCkEUFQqsAbMCBwSxC2LcuQsEmBkJN0D6/c7pGQrrBgULd9nbCh3e/QWiHtkFmmFHCw39IwuZ4rMHu3KHBLNQQQZ7nwkHsYkG/hl/sQZwNOcJrPJhCkhx1QiBy8EEGaxfCYpgeQQHCCMJJt3jCrkpwwVNbJEJ/Hly/oPMoQoetTMLlb3BCWWuCQPw7NMIyInnBtpzdwaPpTkIMxek8csMNwTe6ucEdohPCWwxKQtxdGUIUafpB2iVDwaU5EsFv7SPCW/gEwgJG/0ElCwvCww1YQjGH/kELyXHC+V0cwtOAwkFChOZAuHkjwi44IcJ6TSBBAqEPQfFrYEKT7GNCtJRqwiBXAELCjWLCMaAiwtnSF8GT71bCmW1Vws4D2j92lBrCYVT8wTSMvL+yH1HCdyv4QfPDBULuzW/C8shpQuljg0I8JsnALf84QdZ1NcI/ey7CXGM2wR9UNUFFWhHCAlQowZntPsJOwLbAnGacQbQNgkLAP71BJ2MFwhay1kFrYknBaC6EwpBPC8G/G07CJZN4wjvuzMGVa21B7yPuwYbjz0GFpwbCVYzGQbzy4sGiRV9BpTbCQbU7jUCte5RC4ct4Quyx60FWh0DCobGfwVzWD0KgNUxCbE7/QEUducCErh/BrrONwA9DLcJHspjBSd5lwhjP48H7QK1BH4S9QWRurMHSwDbC0aT0QQsEOUL9+xHCiNAOwoaTGcLfWjtAEblqwluJM0LjYGTC3WFawt0yvUGUGLjBNpY7wr7cu0HDOtVBFeZXQVuas8HFLofB9sROwQ4PBMJ0szRCt5SvwaKmi0JUPtBBwqCBQp2uNMFe2L1BR4uXQGZFxMBAWOvBLhOiwYfjJsJ99TZBT/HvwV4MMMKutCHB7gsKwrYk9EAIFVDBpzpxQQFeSUF7By/BKSguwohuhEJhYwJC3/NPQnHFb8CMQzDBc3JmwuZXMcEU7AJCZuHSQdV7O8IOhRVBsQ1uQJI9AcJwg4nBfaYxwncly0HycQHCqHLwwdhWAkFDZPbBgP8CQi5hGsK4wSXCw/jUQNagCUJCo+lBtGbHwTR9GkJ8zTNCSzANQZpZ9r4nNfzAdRi3QVOr3r9R4hJC2AGqwdiYGUKhbPhBreo+QvDUWEFNdijC75gUQl5Wm0JvPm9BzXlJwoQqC8K1c9RAxJslwbha5kGSFP1B4bHFwU7ueD8QsrzAYlKHQaeWG0JpbSvCVq+KwJkh/sHp53HBEAn2P8V4dsBUGTrBDnIOwV45HMI9o0NCoaREwk/MUkECOpDBt25Gwi2qmkEz4jHBWnmPQesBE0FvjFfCSIIzQPB4ScAk9IpAbGciwmQwk0HFOIZCNfsnQR8DqUDTIzhC7RkEwf2NFMCyGztCYVXAweb7b8LNJWDCp5KYQYEYEcJHl4hCcMakwW2Oh0KjyinCS2kxQmCeCUGg3h/B6J5mws38uUGNCiFCTWA/QNQ6T8InPZ1AOw98Qa4cH0EMgHhCEWgIwgXk+cFMLcPAcAGzwa9VT8KengDCY2UvQODdZsHoEBRC80b9wGSTZEK88F/CiCdgwlWd9b+bGp5BgydwQed44UBu1gxBnZxSwcHldcAkRchB/o8DQu4IO8IJYQXCAjTEQT9JhcE1SNBBlLsWQhT0QkHc8pvBwzRywndeDEJkYgzCX2Vgwsn2LcJClkdBX11HQhBT+kFm+ZdChS7sQVd6ikLhC9ZB3gZ6QtYo+cEqwADCch64wSke8UAbJbfATX/uwWP/k0DrqwTCJtqUQTVmSsG5WhhCuJ1XQQbtkUIK9ytC2fEuwtg4DkLWmP1A53wGQFNzU0EVPwa+cM2XQfJvZ0LDXiPCCoRSQaWx18EcMbJAvRizwbi3okAh5gtCBwckQkeMskFxnXFBsyg/QpZ1HkLxooFByXoVwlIFJEIIquY/k2ABQlPRVsJwtqlBDj0nwsoU3MGMpmlC3pwhwkARR8JFFrdBtxKSQh3mJcJBakHCcXuewRLMSEKwQJHBP/orQnCahcFsXqXBID+7QfBZ08HIt2LCy6QeQjID/UFDO7JAK23fwKTgXsJP9hjCfA4swqdKCkL1ddvAx6tIwi9KLcIBOLpBI2kwQq/XlkHjVojB5nYRQtoFvEBrMkJCzvcPwjBlWkKWlNK/wm6MwSQO/cFs/6FBYsFnQdtkPkJaCcPBuYDKQQ==\",\"dtype\":\"float32\",\"order\":\"little\",\"shape\":[5002]},\"x2\":{\"__ndarray__\":\"uNVPQiW0AEI/pFBCpnv2wMnxasKNZydCuKuUv6+UiUB4pkPADTxSwmi3gEJMl49BNb15wrpbJUFNZYrAnec1wi2jUcIMXlTCgAdWwulDlUE4oV3CmSJawuu0CsJySndC07JcwvwBV8JgemBCxj1uwog/KsJfRUnC2VGawiW4nsK8/N9BLE+MwFN8WUKh68BBvGp5QAwI1MGSvR5BxdWHwCtrkMJfghlCduTUvkd1gMJ1M6lB+zpTwrHSvEAjpVTCHDZbwq8tAkA4Z/jAQkf2v2TplMKDOFHBxk6tvuSRbUL1R7VAEdaGQHpiasKwqstAPk+GQEKegkKR9O7BS5+ewHY7uMHPrGpCNrRzwhbe1MGC2fBAEKf4wJ6PVMLPrtpAEkQZwaw/YkK91FTCQOc/QDNd7sCwovFBYWCnvznaaMJLUNJBquNVwg2qvsFU9PLAunV5Qkyb8UC43czA3u6WwtH0gcJlZIJBme5ZwgubVsKd5nrCUOh8Ql21W0J9OBfBuv0lviqMkMBWaoFCasZqwrHzkMLhm17CFu6PwtK980CfkJBBgHXLQbsyUcKv3XpCANOmQKCkbcJwDZbC+rFFwSzsW8LBMMhB3AL8wDllGMGKvY3CvLozQeSgU0CWAfjAb0LdwEmmksHkigLAZ5/fQfXxRsFKJOZB/flawRyf/T9kep9BKFIWQnHvWEGsURJBuQddwl5xNcImo17Ca/w2wg+/h0G6p9HAje1kwaHjgcIVounAKvsrwWF5ycBf6RHBMmmFQlqngUJmHk9CXfrkQFHSXsJxJYHALs2DwqYc0UHG74XCdXZwwrg+y0EpfFvCEy3gwJ90D0HVvm5CzK2Owk3hpUBHbYBCWcBqwjcvlMBShWpCUwaIwpOW4sGvxnfCKkqcwm994sDDa5nCY0U2wust+8CuTTVBh/R/QSEmiELSqRBCMVlRQlgAlMLyqNhB8TcyQqI+dcABNCVC6nCMwfHg60GV9S3BFdMGwP+uFcF6R8PAgXx4QlExX8KbqzbC0EBhwgwwQMDm4IPBXoxawgNtfMKLu1hC98VFQfHIFUHkSnnCRah/whxT8kEIVmRC2CJjwr7wH0KEznpBQOU8QCyogEKAW2NCNFolQod3gUL7imbClCSRwlk2g8LjvOJA/X4WQfxHakF2FnNCRsa5Qbf48kHGaL4/BYh4Qi6bZcIu8QHBMBCVwiGNQUL7sGNAz3hYQUoKeMI42GzCCrd8wrgn7cDWlfjACKcBwhyxmcFtLWJCNktHQWwaIkJcSWTCesgpQRNmfkFxwYJCbEJKwsNJHkL77WfC2G0aQCF0bMJo631CrLFsQW8w58DEmgFCAGpoQiDq4UHLzVbCZsULwr5F0MH5rNNBoKiCwek9fkKbFCzByDldwqHCysHJb3pCQ3rZwAECi8Jc3cnAudVUwhugXsLUWHDCgh4aQlZEZkLvToBCjtg+wrdQsUFBAWHC/MWDwo+ho0FCuiBCgluLQebpXcLqI3TBfIpJQk2glkEErmhCxM56wZjBlcKpn4BAP7KQwrzfi0EWTF7CT4/pQReohUKC+VtCQ99/Qnp/+kGgE2TCaloqwU0rMsFnECJCo82pQONidMKZP50/wlSDQAU+4MC2r2LCuszvQdps+kAUzzhC7LxrwrDn4sD03nhChN6OwlmbLkKf6pzCvJ6mQUy4ecLjO2DCadlcQuPWW0IIHeFB08kfQkhi7EG0LVxAsg1wwtH3f8Fu4FXCaC6ZQGBUAEKL7l5CkV+KQScudEDURUvC68xXwgXWBkK76obChAM3wmslj0G26b1ByAh9Qt+q9MA3LlxBhqFnQotE/8E9egnBlm63QYam6EEdyFrCHMNOQs68X8Iob2vAWlqvQZWVIUKlrwVCz1owP0ILPED9bEhBifO2vz7SiUB8/LpB6n1bwt1uPMEZemK/VZJtQUYbFUIieZrCOaxZwr5WnsG6wirBh2qwPyA6hsLFBYnCh0JTP8yUYcIJYtfAs2GDwgOEQkLNxynCxtRIwnojj8Lp54vCoFQkwk6MG0IsYYXCtCB9wtVkXcJdYFDAp2efQCXMJcGQtMlBEixews+XykBon3hCJT7TP3r/wsHDP1/CuQhfwtX5OULg3FvCHyjxQVn12T9HVWbCqCmHQlQPaMKh9MvBzDEUQvc/jsL1tYFCgbKKQDHDsMGG06xBscvAwdWnrT6omRdAQoP2v6eSJUKjgS1B8WNOQmN2RkKzCYbCM3yWwWFQg8Jjd2JCI3xdQgmwK0BjELlAzsA+wMI5l8LuZI3C6U40wRmGssF/pzpBwWvqQROeYcJUSALBebOGwrJkJ8IihHTBYkybwXdaasI0cwfCql/iQV8RAEJDRtrAu3aEQGXqY8Lha85A/HIwQuK8rMH1M5/CXWSUwcDeJMDAiPs/9Echwbhdb7+s6KdBUSnIQEH1KsJlJvs/v/oBQnU1aUJTYlRBZPT3QZ02hsCqbZzCpWXGQThvCsGpkvPAJWsRQrY+ccKeqH/CA7uywbr+d8LRjfw/sqZpQauVrkE58YDCIPJAwv7YYMHkbIFCfAyVwtH2Y8GGx43BSaZjwjyxLMIStBhCTSnYQSf9bcKTxzJCucAkvl6t8D6Jk81BmdHPP8HklcAISVvBSISaQXsXD0ECrahB4F4nvV6spsFef4tBN1JIQrpTDEAZ4FBCj/z7QRO7BsKYs05CXe1XwlrKtEDZqVbCAnO8wJEJKcFEb5xBOl6WQVpE2sFIDyC/hJFNwlVys0HwBoHCdqxMPrReYMFjORtCL+qBwgpzEUHVK1tCjbt3wmQQlMKLmGFAAO4wv5pvM0JKdmPCnL2LwnyeHb8a7/lBSy8DQvAKaUF0NV1CsLcDwleEjMLGkgfCG3SXQML7t0Hu39nAQa6zQS8+pkBtpEdAiycnwrX7rcD/rZLCE7CAwkHUZkHW4oTCmAoGv/eVusEcMRJBJduPwiLxdcJqAG5B9+SPwsprgUFcTDdBK9+DwicUG0IvGf5BnDKYQIehd0G9dJbC7dNAwYr6FUEkPcrBUr4nwlitR8KEbZjA0nIHwg97bsCrJTPBHZzYwOcVM8KGHIhAoPyFwnmvQcEN+MfBreeCwq7euT8+uR0/nJ8ywbrhN8CbeS3BEVdqwubvacJXg1ZBbst2wsfUK8Gg8XDBKVx4QNu628HNtYlA40E5QQFx1cEFitnB8tmLwELRy8ETK3JCAchPP05kZ0Ai41dC6Jk5wUFF+MGetozCz0SCwX3RsUDKMzbBUCAqQm3lqT9rXYlCeLNeQqnAWEIAKIhBlEJ7wizXhEGqqxBCOR8kQvkVh8JccSBAigGUQSywsUE0d6TBOrJGQL4ijMLNs1ZBc8ZpQtfresDBKHDCGCDLQGgyXkFnYBdBTTWbwTZegELRJ9bAkaovQh9masKBzdvBcHSBwuSW5cGSO4XAqvJ8QfWA5cCH5nxCMwKAQiCufkEt1SHB2lhtwlkIrMBO0FvB1rr0Qcyin0GPXdBB2QM0QjbyVj5ZmYxBsBzNwTwlBsK67KJBZWgWQgvjIcI4TkjCk1KCwgyWZcKlqHPBJruPP1kT1kHT4f29SpnYQVjVr8EWQ1/AoN+swQGzhcJHRnhCjJIKQuB/d8KuZeJAbzquwYBlmcF6OwxCL33YQPKtr8CSgpTC4INqwOd1MEIBBfNBz2aIP0nkZ8Jb/tZAemggPtBglcGLZo/CUr71wa6+VkKZ78BBW+wgQdpRk8EPRAvAX4msQKUznsIAg8VBckEywaNWTUJ9//DAPoDvQV2nd0LIcbVBzPIhwtTorUETDUVCZEkLwhwUML6jJGHBY/Y9wrDY88BBw4m/Y7znQXJzzMDbAi5CKmZVQYFqt8F2TehBNmUEwb0qaMJPMZ3CQ+0ywiIcqcH7jYrCv1kXQt1NdUIWtnjBn7tGQkliH8LmQ5vB4gkdwjtDm0GMsEFCWXhwQWR2HEFHEYTCnee9wMfHwEDXxYVCtlifvw11QsJSb3HATTf6QVGbgcDDB9nA2YaOwkeEwkHcqjpC9mabwc9aXkJAPD3B7qMJQg+OmUE/P0JCZYrhQB7q1sGX2kpC5Rj6QTY8cELG2he/QT1WQuoYnMKBOmJCJd47Qf0RTsIQ1XLCmK98wmFdgsLn8yfCoXstQkUijEHSabzBeuICwZafh8HGwphBb8GTQJwdVsJH2hG/SKCkwQ91QkJXulFCAE4kQn6x30CZn9JB3coVwI2Nw8FH8uvAaH4ewrwrREI2LshASs/GweVcZUIBqNw+VxmgwXnzAMImIydCjqUgQlrCFsLCYF/C0vRMQnZYkUDSoEjBwBxewvtmTELOMtw/5WWJQQ/3EEAGcAC/b0/cwK296r97WyI/VjL0QRkJf0F/oxxBNwAAwdHKPkIQhN5ApmtLQa+csMAzU5DBabTbQU6FI0F8/GHCXJMMwoE4x8EckIrCy8TwQRVR20AnX7DBG7ZMQn+IJ0IWlLlBt1f4wEb0K8Lr8J5A/XaIwfzDUsCudJNAWj+XwMU42cCZIOVAHHoUwceEJUAuLZy/+bJeQiWeBkGITqK/f7WEQWb2qUGS8gpCCohzwlazw7/CBmBCc2kGQsE430HSrZHAlb/0wVmsIEJUElPCguZuwvlxVsKzXVLC7owBQiOkYEA1K0HCSkKrwds3J0KtTGXCkqyGQTqDYkG8Ub3B7bR+wl7p9EFQr51A79mnwSi0Zj7H7ydCMeBmwlU470HMiDBCZpuawrrFtMGO5cRB7hgLQUAp9z/CLHdCr66tQeq/bcJEaJ/BFAsJQkIswz0Jq4TCQ1J7QrxJ4UFw5Y5ByUO0QNGkh8Lxn4PCDB9awkKxFEEpAJbCcTplQSdzfMLi3ZrAmHdcwUSDFMFfa9RA6/sHwaLMqcEIi3NAOeU2QQR7pMB3wX7CTJtAwSol9cBX4k1BwaplwuJ2G0KUWgjCfbQuwofPucEg1ktCq4VHQvrm5EExjGVCyIimPyRcQULuqbFBQV2/QVZkBkC2zZFBWZCbwjZmxECwk6dBmuU3QgEkaULIEKhAFlrWP3iYVkIqb2VBvJoaQeEx/0Hn14PAi7Imv8eIAcIT9olBB8uJwq9x2MHO/HnCbmUUQblXdUGl1LlAW9FgwlKRKEE64MXBWoEowoIQgcI7W2RA9oh7wiIotj5cNRFCptsLQovac0LRnD1CVILBQWstnMGo4ZrCvadtwpdtX8LF0mC+IwLawQI1VsIfSlzChPrIQcMkPkGqWjHCA/Q2QnGf5UHpbR1CEPcmQlqh00E0gI3CTG66v2MpckGrmgXCyQchwfFpiMIj77pAlOtBQfUSy0EPMpLCZK1xwRzTAsKHJ05CtFkLQfNXKMIl6ljCifAWwLcUXcKx2kFCwLmJwi8JV8CIau5Bf+TTQAC39sHp2VhCtoY9wZ8hakEvP+pBFfBHQoAG+UFhHIxBK69pwt+nu0HrFQnCdOmDwjsiWMKEInTAOCWBwimBQkF3PYFCxpYyQghLXcJJppHC+CjFwR2e/sHH3N9A9NqXwSkuMMF+hXNCwjYEwtcRxUFW/ChClypLwNEWiMJ0TYfCqbKiQXo2T8HFXbS/GFTzvihZgsGghRlBduEswY8rfUJcWW9Cq3/hQYVW3UEJmYPAI2wZQPxGgcJCy0bB4bXiQbdMr0BsSLjAsCHnQSkH2cFOHbXBNL5SQq+Ry0GDDV7CpjOMwYGwX0Egh7a/C0iGwo1gcb+PqSq/K7bAwRuaXUGUJERAInWtQFz8oMHPl3LB5FV8QvSxbUBaPSxCNxXpQQBt8EEUhUhC5adnwlf0O8DTxkVCufcPwukhAEHrtUxAxkEMwiADGUEjRHLCI8o+QsOEQsLxzYRC2X+evvbCgcIlBVrCPyasQQR3e0IdX0jAzvwhQSgFVsCZmUZBlQcuQGKsl8LkFh/BW9/iQcLuhcHJVV1CqRi0Qc4EckJbNf9BkQR/QhpRoMEQKcNBnJ6LQU+bWUAY6n1C5HbXwX0KSsI/TUPBwhTkwY2yeMIy4wfCotkIP7TzxcGtmlBAM12PQE+mVsEVelJBHanJQLwzEkHCloXCjR0wQmGwDkKHVtpAhaxxwqFdjkGsTnXCsL1xwQcZ4MA7zyfBPwuRQTTIhsFOxVnBUvpqwlpZHUEw0L9BUFJVQmGAckLpe43CteiWwu6Mn8HY8r1BQp1KQQqUKEI5+H3CPjtbwD43wkBOynNCvQaTwRaAUcKOldVBSOXEQbofgUBzCIrC2n99QjSfukGq7z3BwpeYQG+0BD+qt7pA2r2oQXqEHr8i7w1AjyOXwpqifkIWXui/hkTXQVAqesIkvuHBgXlzwhKt0kHuZ3hB+mUEwe5XU0JKDGtB3R1dQrAcVcFKADzCNfUoQT0nV0IGADvBScBswkg+7sFfoP49LNlQQbr1A8L4YsNBEPgOQjTNBMK2J2RBRnwVQlm4g0F+cBHC0TGEv2RGakE07mdBgevDQMvxfUJRxC7B+udIQrbQAsJlw+9Ac4JCwilqi0GrvMpBZJmQwn+DDkC0/FfClzbEQLGIdcIn4ZbBtTKDQTbyV8L+BpFB9FnDQN5gLUErdwlBjDj+QIVDoL5ufkFA+wBfQnkt2MABSLRBXsJywrQqdkEw21dCOVCeQeA6lj3J+6pAnLzUwDLqgMIbW1vASTnsQdb4oUC8hsFAzE4jwPPpu0FnrFpCSKuwQVQ+6UGcxwfB1SKBwOtIXELMOgrCxXgEQhXQ7EFD+YHCQPNSwjHXw0ER1zVCwa1Zwmo9jcHRrobAQsshQgrkhcDLLwhC5UE7QrLCLsIZNRBACvEWwifyaMENcWXCgVmZwQs70UGZTlhCta96wurEYEK/EMRBcD5qvzvQrECnJTlCHdfzQKyhBUHCTcrAlqnuwRUNfMJv72nCkcTdQKPAc0Gq0hDBrRo5Qs4kT0CNV3FBuseewYt9U0JiZuzBrwgqQp8yd0EkAjJC9yaGwgVXy0G8sL1BywGdwtukUUFih1FAQ52EQOd/Z0F+shRChOAzwHmSkUBhkJjBQFCswWJD30FtOzXB5VNuwv6PdUJozYHC0HuAwt+FKcGQIHfCJFziQJCUfsLtUWRCa7mOQD0zPsK5q/BBR1mEwlB8vcFx2EfCaENrwhm5SkI7l4rBW9Jywmp09sBPD3LCHmL+wHmPo0E70KxBRQSHwouCHULrhke/bYPBwSnpLkLY0tRA7UI/wpWd8r9NdQBBPv9IQZ0AwEE8R2RBM0NdQRGEaMIod/RBN72RwSTK00Gygl9CgEGJwrPyqcBCJHjCE73GQV+Gf0LAWpVA6IVDQkgUdcJnkNO/VsDOwIXkPkFU0Yo/diDnweqy+UHbbyhCC3QuQqh/RUIUy4zCrzYoQnmxV0I/UmRC9f/QQbgtj8LNhjdCkcfdvxArgUIWdwbBCVNxwmmWlcIegCrCLIihwQLMFEFEymvC3s8tQkIiAcKafupBSnSZQeVyCUB5AZDB5LXAQV0Fm8LMlCfBodpDwkeq18HW90vCvlsFwjGofcLUETi/p0K7QVUr2kG+N4RC9zAzQmDiF0JDeoHCli0+QGm7I8L9q/NB8mw8wa/YlUGCJMDBMSZ2Qq4fhEHw7lxCO/wgQTif5kHCD4LASgbfwYLTHsHEKFvCGMdQwV0BNkDoRG1CL2f+wAfQQsIftVlAx4BBQgyvdkJUZIHBpPqFwvtnycE2YbvBQVkMwv83WsIQoMZBoPIjQqrgkL9HGwDCChpywlBgksKy4YnCvBt+QjlSuEFwjjJCM0ByQQUkMUFuv7JB80BPQkEVy0GdetNBuRLowCWW40Hyx1bCAx+UQJIPc8I6LhtCEN53Qs10Y0GHU15CHz22QQ8PQ0IQrpM/wcPZQbwLXMLkczpBlH4ywN90w0FX7ERBe21xQmvkasJPmkXC8iR9Qj/OT8DCgJ3CPdrFQUnnl0G3nb++6HWfQfAduUGTArVBg/GuwX+WokHrr4lCBOdlwjIzeMHKV0ZBgR29wJaQh8KbVZlBvGCIwm/KM0JqU+XAiSPoQVMKdsIhZmfCGeSQwrRViEIs9ZFBrG80Qr2Db0DQq4VC2TRvQBECVsJmhV7AzIs4wrQHh0EQhhLBp5heQvfRkMFZpLJBKA17wmNhf0EH141Bz+oKQsQ0CsKk53jBSl4jQnV5S8Jq2W7CHdy0QP8MWcJHeINCd7XewYSF2EHCPTDBPt2Hwkr+xj0d/MFBEDFkwpdeAULZwYFCxkvTwUMNX8L7Na/A6N5SwsPeecLKXmjCisrQQRyPX0BKIynCRuFGwiyc07+EgAxB97aFQag6mUCir3/CAohJQhzZwcFHColC+AaowVelSUKDM4rAaS0QQswUnMF2qblBvkAswUSg1UG7vUTC7IldP3V4V8Fdc4jCOPCLwvLSf8JMgeLA6qAtQX8tTEK8VpdBkl1lwnN+CEKG7ktCFg7wQWsdqMDqcxNCYWQgwrWUGELLmiTAtXywQTBXhEDEmu7ADwUnwSvEkUEQ75LC47MTwpj/ZsJ89zLC8xDywVkWgMGZ+4pB73k3QnC5JMGyEyJAL6dWQgw9xkHOVu3Ba/3AQebvv8AELcZBWMGSwnzar0HvMSBCkksuwqhidELhpQ9CQDg6QcW/HUGTubpBkjLNQWwRjMFuJMFBCSWGQSTxhcFiFC9CNLRFwt6I2cAAZLxBk82LQUgMd0HnbUzBJR4EQpikXULcf7dBulUGQZ3zY0KAigzBi/guwcZ8ZsGnD1BCXR0+QusVu8GeXGJCaDbRwd1LSEJDf+dB3f9UwnjjBMIMhVTBkTq1wY1Zh0IEDbxAo5zYwSFbO0IS7PBBJ7+tQAsnQUHjiINBRPWbwTxfO8GPjXlCXKeLwdKkRT9x9URAzgnKQVHjVUKM11hBnfd4wuttV0IbHmlCsCLRQROoMkIkJbBBwBJUwn/hscEFUm5ClJWIwk9gDEKldxrCiKQzwt9ulsJRkj5BCdA1QhRLaUFYNjRCHXoSQWppOMB5wyBCTyAkQpPAqkHPR+FAQQ2RQZIB4r9ic3vBOIhEP9scDMLouuvAGLsIQAt2JcEOyoNCubB2wvIZTMHNdRNBBhctQuDsN8CN/kFCNbhBwiypZMBNxvLA/rZcQVpKOEGxB7RBjVVHQofxbsKYL+ZBx95lwcD/BcLMOShCo5L9wbZXg0KFVnxCwVImwQcTPUIbbhfBjGDsQUP9zEGLxK3B6H1kwtZtMkGVjcdBsSvyQQOAA8LEv1fC8tN3wsSSO0EyQRFCm25zwnJpXsFE4Zs/AnceQWHtDsE4h1jChTYwQmKZG0L62upB3VodQmS8gkJaupvAE2MPQoz0fULjC2fC5EKRQYPVisEBt8zBPMqbwFwF+EAdwwZCu2JawoLh8T2qr3DCCd89QTrAMMKSMYLBwcTKwXvqXcJ0psHArT/JwZRjpEFDR5fCtkbuQTMHfb7dvOjAgHXIQYzxZ8K6nYzA4alhwgLw1MG34WlBtugQwfJPxME2g53CMiIAQvFx6kFLoHbCXy23wReWL0KOwmvBGzS2QUR5kkGYiYJCTF1mQhheiEFIszFCqUOQQf+ZPsDNil9Ar20WQvxMOMDRd+BBIvYxQstL2EDMk3pB9CR7ws8L7kH5YBZBh7MKQrNEZcIkmOpBDutcQoppxUG+Wx1CxA57wliiVcLyjT1BI64awbkMJEKZIghAm8h0QJ60TMIhgwhBy0+dwSVCgkJ4jpFBY48vQrrpWEK+PgJCDIvtQfqzmkEAp0bBCFrmQQpGsUCxnZbCFhJ/wbwA1UHdKQlCH2XOwVK+JUGNjNLBtFySP6PSNkKqlVjC8n4hQSEkdcLIQ5s/M6kcQuKdc8K1xTZCwS91QoapFkKBO7RBdXOBQtc/NMFoMFFBbb/0v7niDkJesivCRemWQNr+jEEU1dpBcC30P/1YO0KMtsjBU3KQwDEnYkCt3WBCsH+Wwl2mvz9a/u3B4rrGwXPUy0FLDx5CD+JUQVG6lkD1GaBAy5nEQVflWUCLFDBCV9AkQnCXz0EfGGxBqZUIv0uKa0A4mVzCE+DQwcutNULaRtI/s4gMPjvlh8BcOwJBznR+woBERUEZqL7BcA1nQUJXpUHY2n1BWWxlQtdpZkI5pB1C+I/YP4mnS0A2bltCwPmMwgHWGUL3zwpBnLyWQfrwNUJ8f9rAsgOgviTX8T6qqkTCqvBVQiI3QkIm8x5C8TRbQvPoiMI82KlBtfZtQbsaG8CeffFBfg8fQjoP20FaOUxCdLRFQjhBe0EiwTJC5uozwX1yokE9bxHArbBDQlwlCEJsWmjCr0yLwg2gxEFGz9xB0fKdwUJEZULFFGxCL9IgQRnUXsI3sG9BLuCuwUq3HkKT31bCTxclQdWygsL+0FTCEXKiP0imlsIeRPlB0BF4wgdo80GTsWFCUWadwn/C4cEz6FzCCxUKwiwHDkL8F/VB5xRbQKizjsJ0qAdCRjAGwrtDPcFd0ZZB6mFsQiDOI8GjgalAgNjOQIaHREGEECFAcTxBQnbJIEKY9ujBr+lXQjmXgcLhDtFBhSDDwT8SF0HRSOVBsmPZQYwaFr8fhIo/+BoAwhDgXkF4t/o//tf0QLhvJEIDO4DCCxLAwYYvdcImDIPB7hUGQngesEDG9rq/JdGWwPeUFMHhgIhCDxPlQU0Ja0LTpFHC3n8swRcbxMGEkTlCyV9SQuElz8Hk3ZPBh6eGwIgmFEJq/h9ClQ0iwj8PqMH6zt9BNjt6wlRzBEHhH3I/xqMqQfpWRkEle9NAFDGdwrCqSsGd4G7CBqaUwQq19cCeRUHBJqxMwdUO40DPobhBuGWBwv1xZULlOm/CSjH+QTfYF0Etz3VAqo2YP+2iUEK0gf9ByaBcwhCujsJOd+9BLh8pwm2NQ0DzTHbCsJ0rwpgXSMEeqSFC/1kkQpc2x8BQDizC6EEHQnT0BUHyIzHBEMfdQC5OC0JUzpDCJXtdwViCKUJFPoi9Go9jwbXVvkHUJT1BoyhlQDgCf8JhRdnB2NImwOzMaD9uNg7BcaeVwse2UMFLDYjCVttoQZJ4CT8e51xArg9WQvQN88GV9C7BOvgYQhh4jEE7APTA0lPNQf6ZnsLbyLhBGgsowpnxfkJlGjpCRtiAwivtUsD7Qz9BEBqLwTDF2D9cQA9CLoEYPyInd0HT7O7Ab8gGwmfATkI32aVBxr8QwXaKv0FNqXbCE6ePwO03g0JKg9TB4frwwatBG8HOEL1BBNZYQhod+cG8e7NBp+4vQgXhL0FFrwtBx0tIQVM5ecLxK5HCx06Fwn+6GMK6cq8/85RYQbt5EEKkbCpCmayIwXU168G15yLBZwGVQcSQWkKJYLTAwgo9Qpu7SELEo/TAv5s3QVEIL0FLsjPByFx2wn2nUsL7PUNC48gcQjsJisLWES/BQJjJQWvp7cFWbX1BMMU2QpI1IUId4hBC6nZ6v26SbkK/vW9AH2BDQnhPiMJUuf1BmTCEQntiYEFvE0LC43ycQGONYcKQBeHA7FrnwYQNHEKEtMa/Zjv9wWEdxcEnXXjBmhV9QljwXkEOEWFCnKF+wt6MYUJt3l5Bsxz4QdLoBULcXHtBljUKwp6U4b1d4YRBOzCJwqheBcJU9wvCKWbqQcjJqcHngFPC8fomQQOf1UHdwAnC5iMYQmx/I0JkxzJCEkW0QXOBhEHiAhBCYM6aQYHD48EJqQnCwlQEQmOxi8LtMALC7c4TwUcHm8BkQq7BZROIwsjitMHOHThCAP0WwVyYjcKriDdCqvuIwakvVMKlxOhB6Eodwm6+wsFDg4NCJKopwlUGR0IUZd/BMNI1wrJnm8JjSmpBpMyiQVmqEUAXIE7BCGZWQQLOicEeQ4vBOaXsQTtINEJOq0FCzNswQi2IrEFPNkjBVmYuwjOrHkI9kiJCQ6PYQVkc30CCJnnC4tnWQe2oX8LW7YrBMz/twRWZAsIID3nBlHgiQXbjz0EuB1rCpxhtQhnhW0IVTELBN/xNQtwtRUFpWpvA4wv/wTAvekB6es9BNHg4wJWKLUErF0xCEIPIwfLuWEKeLI/CfMLVwZZ6gEBz23FB55OWwjN4vUFKFntB2Jp7woB86UGrmhBCnEJNwbB4KEJLJV1Bhc/wwZKfakDUNi/AarBAwcjk00FsuHFCtIVDwuaORcJGgXpAGV3EwakD2EAnF8pByLe8QTlh7MHBCJlBNRoZwsaO30H7YoHCXvogQlflT0LRNUXCE1Z9wimEAsJAm/9BVjkswhh1IUINeMHAbyL4wJcThMJStFPAm7tUwaioNMHmvKNB3TFGQv9vF0I67ZZA/UN4wuUpm0EzgyjBvSctQbIonMG4kubABeztP5TjFkJN62TAhqp+QYoMz8Et/jRCNfz3QZ2XM8FKFJ5BDRx5wrJbB8KkcW1CLuAoQhjBl8GyPplB8xkGQWJQCcA8gihAmtiYvqu7k0HLw7dB179mwZVb48BVZNTB2CwXQmlSFEKghiLCUwTFQFRbqsFv8k1BNF82wtxjcEKHLjFC8e+6QRXlecKXJLzBfYb5QSdGOEKKWsfBGR2ZQelqbUEkvdBAAhNWQmvF80EPrZA/wRYswTX21UFRuINC/MTQwZWl+8FLeWBBpSkkwjzv08CTr5bBwF36wQMybcHCIXHAf4xzwoAwEULofRrCoIFeQtFtj0HVdxJCe/5MQoqfd0JgXF5CbAxOQiLvNkGIKtdBF0gbQhjrpcE1ez9BYRzQQXEKSELOFT5ADuxEwF2fV8KzXVbCSfVhwKYugcISezhBQli3QYfkSMIpZy5BM/eFQBOnBMFedEbCgcRrwu1uA0KgLN5BKSKdwpmpH0JWf5rBQ27sQUxSpUA0cV/BwW14wuJXacJw/F9C/NEtQtCJjUFrUXbCvIpkwiSb/kH6KP5Bz88VwEHq68CKqz1AzohWwh7Zg0GoXAlCzenxQJInAEB97VFBnTAUwUoURkBP3kVClKVhQqZTYUFFIrRB5KtMQi5ZYML+f5tAK3xFwMdJ4MBRfGdCJu2QwRyuTMC1Z05C4ImeQdIhQ8Iyc11ADJ3MQZ15YkLsmInAaLAVQepRT8Kd9pzCoyrhwRVSUUJCCkvCzO/WQTVY5cAtXAPBQdLQPzKiBULg4w/CRUQFQrbAgEJUVe5BrnZgQNMrt0F1VJc/z8uXwlK6CsLiINRBxPw4wBkQq0E8UxDCL11uwisn7MA2CDlC3hWoQRSZvsEnISLBitOPwj1IMMGrv1pCNcdLQi+/M8J6+D5CW6ppwnGEDEEXM0FBTsuVwHiggD/cnpTB6CCZwnIgJ0KIfcNBgBgkQjtdKkJkxgTCUX3owe0PBkIGHYFCX6kLQphMkkEaL2HCP4KOQUMETsLX4ozCVhJCQfxWQkHUmvFBMpoOQOI638FY5z1A6/tOQROKhECFgqvBAFCvwU+lHsJAILLB6a6yvgSw60EaCDRBYFdjQsunp0BkvMlBnIlZQu2yBEEyqg9CK9F1QiPUMsI86mjC2OiNQSrVAULfVgFCa8RKwndgmsIm4C5AEFbpwBiCosEy0ifCWX9cQvCU90Hwy5NB2cW1QSo8q8H/i1lB5iuwQGup90Akd2nCteDrwQ2ORkLs7I3AD7SIQmuumcILD4rC9ScbQrB7OUB2UC1CvMG5QejfqkGFO6VBr5d0QgmViEHOJEZCpdaBwu+cCMJGC9lA3hpmwtQwKUJRPd1B68vuQfTqpkHwUW9BxC2DQCv2h0EkOcTBF/dBQucYpcHiucVBvrGOwkpUZcIwViZCYHVBwh3VNUHiw6pBZyB6wkkgQcF9FR9CabLsQXV21ECBsYjByTLTQf4Id8IeMTbCNe1xwnIyXMJoabdBDHc3wn6qYsIsLI5BNvn8QXpfXEGKkaRBYFwNQS3WokG+3RxCPy6WQfnIOEKatw/CBI2Uwg/ASMKhe5NBuRsIwkCnLUHe5+xBRVcPQrQlHcEepQbCwoYrwlrL+sHZhmbCpqJkQoGSwMDksNTBFrYowSdd0r8kZohB/IdrwkhibsL9btXBkxbqwWbErMEz7yjBb7tpwt98wkF9TzXBHn1HQQUFzkGseGxB1B0XQlGJs8EYdUBCm8iZQRmV8D5tZJJBWd4twRKbTEJ1itdBQgQIQdKB90GCIjlCpfKxQTs/qcGbGxHC0kJHQtS5mUGF51tBVCNfwgKsWEH2zS7C+tgiwpJh+b/gFDRCg5N9woWgmUHR/1VB99B0wk9XZ0I4WF5CMV6IQVKpdkFIXRLBXwEkQrxnIcKbJWBCewhVQXmThUH0SDfAezblwSyGK8G1UHvBaRpXQV9XJcFI/oHCJ7RxP9y8PUIxo5hBPZyJwtuvXsHn1STAz1ZBQFVHjsL7z0DBaBJnQquKWcKoxxxC5B9EQiWeFMEICHfCrQHOv7H/rkHOR+zBPJNIQs2prcFVtSPB83qkQFfOWMJIr51Bwnx+wbTV+D+pmnfCTZ6xwZ3J9cHlBL5Bs4dfQWnApz9m9qPBQSIaQBAC1UHo2VnCqp2Ewj10dsKjvOhBWSoxQe/fRkJRZzjAvF1mQTLuJUKeHrTBx2t2weTme8JS0wRCYb6SwkuWc0GOM4nChKsMQjH3jsIthJLBgt8TQeCdyEHBa1tBykgtQo75gEJXl79BlK6AwqnN20ESFhVBALx3wXW+gEHpWlhCqxDXwRzPiD/ECQ3CO8uxPzHjL8EQhD5B8nZLQgD1XcL/HB7Cp4C+wdRXSELz2EtCN+lcQiKSgkEsIXvCXqdIQKbcQ0K4a9HBhN8fQJBpnkFGclzCDPeJwnSxvEEjHEHCWNaRQDDL8MGp7HVCquyswa+sQ0KLVATBQQ5xwnG/h8KR/dxBWnvqQf/iv0G7f01BYo5+wt/UF8HSPAJCfWU7wdRW1MGDi9JBWALDwcdUbMBcRcdAB6g7QRLXIsDWN1XBkV4gwSXHKsKEp4VBT9/IwL8bTEGS9rq/SZhvwOLaAsJFceBB6eD8v2fSZEK+rhlCDQG8QSvZJEIM0C5BKj29wfpYjMLBTGVCxxP3wElQY0I5/qnBeSgxwX7kBEISm4jCCw5wQvVnF8AbSxvB97Zwwopw+0HFs4jC9j9BwEW7yEEuQTNCBUD7QCFPaEIqAY1BDCkZQppDF0KEffLB5av8wZt1bcKX2a5AhmUiQnYRZEGUNobC2YgPQsfcqMFSpkhBOYDHQcgpgEJ7Cv8/Hqf/wUokJMI2jCo/9YwBQjkblMEiEtrBNHL5wL96eUKULWFBnxptwl8JQsHTk0nCCA4kQYh7GULpnIhBaMiHwcChYEDi53pCOlJowSSqBUJiKsNB55goQkAa6EGJJQRClQhqwH/3C0L8DvdBL22iP9qMh8Jh7s5Agvw5QpZSUELiBczBWuFWQqp2CEJiJs5BrjdEwjTnasI68pBB0hysQOWSTkJztIpAN4lQQffhOEJ4Ht3B90COQQ65eELfp9jBpI1ewhIHiEDqfJa+2AjzQGf4LMJCJjvBVepkQqup60Hdt1zCHIzlwWOKQ0K4nFZBfCSawkbHoUEoiZnBsbAtwXr2c8K8i4dC8/pKQjcie0Jp9jJCXcvyQI45FsDxWkNBErQXwaCfE0LdtHDCnkYuwsP3PcFbhWRCC8knwLWGXUJWa6XBUTt2QvToVUHrVlxCY4eRv9NHZcLOtpNB/6+BQk2rBEK+FvpBTuAjQi8bLMHpHyRA8bmUwsFR9MFGpOZBbzeNwqalFcHKos3AaLSAwtaTskBLD5TCUtmswCFjjcKMJovBi491QcryFkLrTQ7B23BAQpG7ZsFvv5TB4zjmQd2obcG1WHJB8Re6wQBpUkGQEgNCjh02wVbWKcIHGk1BF8WHwp5KDkLpMnfAYWG8QYuljMKrbbhAMhuFwjhj1UHdwLXBzuJnQaGgDsHq3KLBcidYwuJgRcGuMgZBIv8XQvE31kFiS7/BwCdZQjhkc8Kmr+xBtSHGQe1ZRsFqWXDCIMMuwhUd2EEYCxxCl3BMwvzun0EuwpvB6vZCQGzVFEGWvAHC7OtBwQjewkFFgljCIqBgwoTIkMIGzK9BGc9aQTn/MkJc55bB3ZO2wTjIdsB4RHtC+FD2QOhPmr3r8sTBBsdyQmZnHELdKiNCv2VGQfW/bEKwi9ZBsgrlwFctesHOqIU9hdoyQsB/BcKYf89ByvuBwgUefsFw7qBBOfY3QTrPkcG9daLBz3RZwtXi1kHRoGRAZ8xOQl3GQ8K5ZgPCV9xnQfZrbj+IrWbCqItjQLv2UMGhhVLCwPqsP2IXg0GUEMtAkCWDQcXcMsIluDVBLnUFwqzDCkH9SgBCakUvwtStNEJFA9dBCPnwwZE2FsH0WMJA+gZ3wQmg2UGuJIxBa86Vwfw6NMHYl4k/gZWBQYvPPkDM69JBQ1aLwXHpjsKTFzFBzEjcwS7PlkHLW4hC5QqQwu99B8K93PPBE9k/wULMksIrsSxCnJthQuGj0kHyIUHC95tdwi+sCkITYhzBinlaQe/Uc0IpAQJC+ns/wWBB1sGyV+LBhkKDwk8CWsEWx0lAyNLUwbztHEIFPdRB5QxdwqEyEsHW3VvASMcPQn8EHUInFrDBaDFyQJyTTEDyzBFCnh+Zwpu8tUFNOdxBxtXtwMFS1EH7JZlBsSJbwQVsv0CygGRCrCbHP/8vskHOwYBCUJq3wbI6IMHm21zBHw8pQoxJTcIFzJHCzsG+wVYCTMJjcJTCQlhzwFAwNULdvSVAXuG0QVbnjcJNWnlCWLqBv6PxdMJx3nnBQaViQoJFGsI2cmjCbhQfQjrsgMJ2MQBCD3bDwXnxrkH8frnBMbrLwS3rAUJGU3zCG+QIQc19ZsJrtxPB7FLQQb0AEEJO00FAHSGiQSjut0HO/VzCOVNWQnxDWMI9ZGpBEyfSQRQ7CsExx3pCrko+Qm5qM8GSbkFAYJy2wVEkDEF+Z+RB2TMawo02GUKWk0jBPxmKwfUeRMGRr2fCXTeuQC2Pw0H/70JCfxFdQasit0GVLuFBVhxIwv9iq8He/VhCku/oQejqgkI7CrtB24vZQYHyRUFf12LCPLgPwmPZk8HSRJTCSscjQsIBykBBmoBBRIdmQUDEg8Lqa4fC60GHwfOQR0G+spjB46jnQVQLl8KZB4rCQgJpQgip9MG76zdBwm/nQXNPzsDUdy3ChjV+wS4M2EEnO0JCXA0SQvf0acLlJYBBb3j8vvrshsKRVn1CO8DswIBnz0HLug9CnKhpQYzxsMEhScxBiS8XQpFAsEDt9G3CH0ApQjE2nsJX1lbCQIzhQYDuiL5xaL8/L99aQpMJgUGg1v3B+GZCQlj9h0GqWvhBhNg5QlO0F8D87WzC7MlzQo3vicIP2VzC6/ufwbf3OsKe+DPCRltDQv9VQMFKI1tBZh7lwU1km0HNtTBCurGdQb1MTMKuT+JAOqZ8woynML9pmTLC4DFzQs/sDkI1RVnCO1CUQanBW8Jk7UdBjox0wEbUMEIiSidCNcg6wi5bZMLb47xAtZHmwPrKRMIwwRRCyL4NQYNnQkKRbVrAHr74wCJeU0KhBJfCkUGzwfTWhEFp5v/BatRgwjppC0I0r+BBgeaUQdcbj8J9C1BCwCZbQnd9icJSGTFC0MZQwkDmFkKj3BxCfwT3QTtuwMEaIF9B3LRdwi9GKcERVTHB4HCXQcj1NULGB+RBuLgIQbYbMMIEMw5C5eZbQrlP7UGdm/m+7YTzwEaEMUBXlDw/8GOHwVU9CsKKHMJByAjqQeXb3UGlTVZBYYj0wZ8yzECH4nnCXQeBwqd3v8A17QDCHDCGQdkm+EFvxszACxTMQWiL30F7rw9CEmc9QVXc6UHbVoA8bNJkwphm/8DQjR9CbfwrQnJhOkJQO4FC7YN5wt57vkGZeblBcJ5VQkRRoUE0cfTB1b2TwvjBw0GWz51BQvqCQV7y9kFNOlFBSxVpQuqJDUI2IvlBfdxzQjwKJMJeI4pB2TZ0QCpBU8KrzPY/P45ZwhzqjMExk0XAkGLhwWKI7b4ciPfBQ2UhQallmUFqNJXAQJN6QvCJi8FxIWRBFp6Mv5yj2kGbYDhCm2KIQhxmW0KlDHBBXTCBQfcyL8Lxfj1B/hbpQGsDTcBzsXpC6HZZQqGMhsL4qZ7ArDhzQCRxKMFSvnxCtak9wadaMcL3LJG9J0pFQrCxMkKPoSDC8/PLQWePzMAeAMBBlwhvwjbqJELrQNbAFDaVwv+AAcJ3cibCjHiEwm5dWkECMSbB8M8UQkS/ikH3Mpu/KCeNQQbzd0HnumvCZQ/zQR4/jED4jlZB7cO7QQ1S1sELAp9BRCtowkHoVcLNSMtBJ4IJwUqfcMH2qWJC2aZawtFRp8EaMAJCDBJ7wIPme8K0nMfAlmORQY8/hkDpFl9Cp3QLQkOtRUFyA5zC0LvDwEYRwUDeo9NBKbTLQZz6cUF6yrbB4mDpQc3/GULgCJzBxEF6wWnPgcCafyJCcvhWQN6nEUKofVxCNmhKwnhWe8Ln54TB6T5lQkQa7sH6bNBBTTpMQhJhzkGFfBtC7G6MwlFzssFrJyhCEi1kws/TO0JwvYbBM3gmwjLVJUI3Iv4/lCiVwj0htkHYDoTCBAlQQndwa8KoKN9BA3fYwBOWZ8KjdifCSSTOwcTZM0L4gD1CgDhJQBXPE0KhM6HBaSFEwXFxZEL72fDAO7qAQpwENsGCni5CxphzQqH9DEJtfirBvWPOQUBlakLuJSTCQ7SfwroU7T7mA5jBFOn0QTL5XkI+GpjBZVtCQpLWQsImy23CIaaiwe7xZEIMXBFCpAyNP0KrKMLk5W3CfJoqQvrgH0FxLVhCu30MwmQ8bMJgVADC4zYIwu6+ZEJXi5JBsMl2Qt6v9EH1GAZCaPA3QlkMbkK0b8RBIFlHQoTUCUJj1nnChy5XQhftqsFxO8A/W3CIv0hgxUGNqiXBd5Fawvz/LcEeWEnCqdQ/wRdIncH+mpnAjt9LQQzehcLC4lg+LgxBwU9YvkDMKhzCQIbpQfSnV8CosbxBelBbwvAlOEHU4UpCCJcoQi7XOsG0q43CS6O9wSJXjMKawIVCpho9wV/Tn0HSVtNBnETsQQSbY8JMkcg/ovCCwlXYMcHe4nTCSsGlwVg/rkDbfyNB1mx7QjFOd8K7jC3BssZKQRgIgEJh3AlC7AtRwn1bF0ECwrTBii/PwQ9NxkE60aFAQ9oPQl3mGkIXm2c/Z20KQRyrBEL3kALBZTOQwuRFjkCrvRTCrGxVQoCZmMIINcJAxBeNQYynN8EcgiJB5miRQS/UlUEyD2nCEigyQodbHEGFrp3ColO0QdZUo8GdNvlB71QQQq4y3UApNj7BRU//wMu4rsHZMYHC4z19wgyCQkJXoyBA64OfwjTdy0GIKWfCoLtEwRMEY8I5LkBBQ2z5wAuCxEFl81nAeU2ywWFTKMBrHFBCcfmIwfi8GkIZDyBB8Y3ZwfXlykF/MWnCCqTRwbwHKUKTVYfBw2vZQV6IJ0GzJlXCpYNwwuQUkcFPR09BL0X6QYpJa8JDEXLCzjyCwpFanT3wKphB+wYsQaVMNsGzRyLC+7xUQirGL0KOzf5B9wE+QsuJLr/KdnfCci3jwKPfdEEs8epARkmEwn2UDUIo24HB2XDiwPbTzT9fmyc/46VwQnDBYEEjJsdB77FLQr7cZsEuUUJBGNSQwUrSKkKY4lnC0BdqQes5y8GZvy3C8yDgwYniz8FaXZTCJj2XQQ1q6z+9PFjCgRdCwAoef8FygczBJ52VwHn0Nb1ohelB5z9QwXl17MFXtJBA78ErwWrRUEJD6ULB9ujPQT1BAsKm5ehBP2JWQhXZbELQ4j5BxexhQi2xdsL6J1bCbo0TwnSXkMET1ItBX5bgQPHgm8EAcS1C76ibQa9l98FwTUzC9zU2QljZNUIBuwbAKWn5QefOsEAGQlzCl05NwjrpQEJyXBxCWDDqwf43L8ICbylCTGYBwu7X1cDzb0dBd7nJwbBwdsGa2OlBNyLHwZhoXkI757lBhx8cQvYzsEEe/8DBTS09wfhJvsFYfilBk4MzQgdlL0BEFXNBPKYFwuuE7UHbPVDBhvx/wvk4YcJWa3zCLl6XQIDFi8IYRQFBHwpOQmTZbcK4EtJBxsNpP0p8HEHAvIDCHg0AwrKH4kGcDgFCA6JpQj+TOkAQ/CbAIG14QUjDQ0KZgCjCaUEGQv8eX0Jx6CXCReUBQqRliL1371xAcW2TwtnuE0J7KI7Cvl6DwlSvV0G4JzhCR7xfwpL09sHi6jBCU0jRQdttwb9vP+fBvyY7QgOJbcLMVUlCrcbJQY2jRsLE+ThBZQguwaFQnMHm1CXCGs2bQeM/MUDleV5B1fU5QQouc0KbjYLCPBnWQYkJasLZda/BistiwhuRT8JFzAbCtKBbQqLwpEHi2DM+KHXMQCcfksLDQb2+PyKNwD2ssMG/lnPCf6wFwqtzDb8XLTZC8UpBQMlGWUGTe6dBbFBVwpZwd0IVSXVCq8rMwYyx0sEdQJA/3a2TQVKtiMJ5ldnA16EpQKgaJMEWY7vB7L7BwLPVJEL8VEFBX/NvwjNyfkIDn4/CQ9YwwHyCL8EydwjCLvSSwvdFA0ERUftBhCueQVjQDMDuOFfCT3uzwU/FlEHlngZCx0BzwsOlWcIqWmZC8ZkjwdjhisGtxzjCzjIUwsXnVcKBsk1AVtqYQTpf48GvlodCFpu8waRVZUIkYBVC4LBbQm+ZjsHPB4BC4FCXwh2IMsD4gGbC+g1BQtGSQsI47YhBghJKwtd0AkKyxWPBQY0ZQlxKbMKm4VtCtd81wfZO6kEzh8G/IAF4wty+AcJ1uS3CceRFQlAUwsHgs1jCwHxZQiioisJx70NCqTRaQdAndcIihoNAjTxTwqXLO0KpVxLCMeNZwi6GmcJU7BLA2wRdQgTsBUJY3XPCLZAOwMg5WMIxSnLBaSFKQnboX8LvlWzCfa7QwPnP1D8R2QDCwHC6wWduCcF7OTNCaN06wbpSsb+Kc5DA9t2XwZkLkkE/hgLC03bzwElKbMAPD0TCQz5HQoDXDkD82f4/P0eswUwqpUCo4kPBW4XvQc1ASEHD4pXC7m4/QgUYFEIf9AjBOAckQvE500EpkSNAdnzhwCiXVEFmUzPBTM1HwhuKUMKEEm7CBzKdQTdZj8KDtoHCUKQ1Qi6koj7/UAJCLJmdwilrikA/K2bClfTjQb+VMEKROIDBe7ILwe8ExUD+D0vCLAJ2wq9ZgMKcUCbC4/xhQXgfk8JUs4LCsgxaQiLku7+cFmHCROeDQpUKG0FZMadAew6LwSOZeEIQiRtCDtfAQdGZucGQJGfCuc/wQd7FZ8KzWJHCeigFwtI8HcEZ3inAD6zGQDSMH0Jw40bCAhp0wfgswMDIvpTAjaYdwiq6pz8Td9dBiJ5VwJLpF0IqJbDA7IB3wRKBmEHNl3JA6jafwhnmA79mcwVCH2ZdQj8uhcCqapPCohkpQb37IULK2iVCRSE5QpK1KkINFcjAzrStwQmqYkEih5LCaxAbQqR6DMJc2L5B0Z/VQZUEwUF8azBC+qxwwihzLkETcfnBDb3MwRpcI8JnSUnC7lt1Qvu/P8JsQM1BQU2ZwW6PXMGQHYjC52DoQaX3nsGTVwLBe7SMwuWvhMFCXbzBWbYgQO7oKkLSjhBChe7SQXfZwcG0DchB3WnmwR7QUkC/unLAF8PyQSx2WsIC0IvClSwiQisRRkKKdStAjv7gwbR8OcLEo2JCrBnDQT70CcJqkilADxIgwmI+jcKNtgPBSGl9QXeW18H2jL1BYph3wr21gUKdiKfB47SZQWeKAMGev7dBfX6aQKaoy8HiSF1CF0KUwXYtM8EnNR/BlCG9wAXiWUKMuTLCikZtwviZbUGJfetBibgbQZHQUkKpFGFBdvATQAqeXMKxqp3CRleBwchIfUC/KHtCFYu4QetA1UEn9K/Bk7OAwkAwesJTTDnCa9aMPjW1pUELarpBaKlswlMbGEIMH0VCYekAQn9WN0L610fCVR5yweDUHELWQ+rBjwVGQOzEWcKm12HCAWCFwvu+w8EPTWrC3BiRwUVdI0Kn1tlB0o+yQCSqU8GaLG3CJU2dPwgcuEDl7RFCRRiTwro4ZsCyCqRB+JOmwU2ZQcEJvS2/EpzUQa0w6ME3LwRBlxpZwt0tacL7o0/A5lLLQQ6rOcHGeI5BPK2LwnmlXkIoQljCihaHQaf7TUKYAmZAsjuiQdDlXkKCX+bA/JFbwkZaWMKb40/B9VjiQZ2zZUKH+j9Ctg5/wdvpHUL9TdFB3DfrwKPwi7+MAVBCGuKBwiH5g8F4PJlBQuaBwiZ2aUKIrVzC43lDwmiZtsGDIUbBX4DmQTXOrsED5GrCe18vwmYnDEIIYldCCTdpQjpBwj8PgoBCz3mKP+gpWcGvLWDCyHYzQluYEEL+iP5BBAQ5Qehbp8CGQblBcw7dQcRvFUHknzfBec40wpRIiECmkyTCk2uGwp5wAsL3lofChWzbwEAs9kF3/JPCI/hIQmNwbsGaWCDC1fTZwERf60EQx07BjqGYQW2UREHaOTJBX5m5wQ3do8EE5GI/SN3pQbjgP8KYQ0DCJ9zLQdsXJUAsMTpCZlRGQNBvh0GBBS5C8Oa4wH/6acIh+9HANArMwCepiMK0uza/6PuvwWXLZcJJ4XrC8sDYQdGhr8FXwp3BTb7NwLWSbkLWcExB3CATwm9ZiEGf+jtCTg1PwqZq2UE41HLCQqI7wZH9hkFJNKBBWrXQQTs830H2tcRBuamWQUSeDj5EVkvC/TyFwb6YZ0Ke5xBCgIeGQECJmcJsTfi/2lWYwu2LMEIPBiXBh8YSQklXtcD7TE9CwF1oQOF8kcL373xB+5AbwfAtdkLe1GjCoLBAQV0MvUEQpSm/X6cTQoHvxUDcc2BCGwtMQue4PMJwDoRBFZeKwecM9T/+TF9Cv4/zwMO7u8F48SJCU0VxQrcsvcCx0YRCfoRMwpaWZkInyXnCOrgtwreNT0FeMJbCuefpQXjcR8HJHWXCOyFDwhTsCUFkgP3BzPXkwLfbgUKttk/CK6SVwg7eZkIguevAa44pQlRCZ0F37RfBIcOhQYkAAb4ZXeVBeaXhwRWYNUH1XKy/v14iQk9MCMJyRpHCKyxjQk3x8EElR6fBmKkKQptO00CSyfLBwzCJwv++1UFEjDVCFlyXwrb+hsJ+2h3Bb685QqT4UUEr+91ABR0dQmMCS0KfIbrB2IBBQqvCA8LI1JnBxHleQQAOKELLmQXBLMs8QeMMgkD9ZDlBC7VlwRvZQUIV8OdBiSaCwPwt6MHM8ty/+28dQmtLwEHhuGfCurNmQYurbsLubxDB2T9nQQOURcIjznBC90K/wRuQY8IO1nRCTWcvwqUVNsJRcXvCmzTIv8uJK8GNxHbCHyZ5wtgbzEDYJaRBln+ywQMDgcIdo3VButsCwlzGl0HJ7wpC7OYVQHioIcJdYITCpHvAwZTdsUFVqDnAw1g1QtXAM8IPm2zC8E2hQfj2iMGrio5BsL/GwfzeIEIcGiZCP2Fywsi1279J5wXCklpcwpmuPELX/AbCkupDQuGsREI4lZtBPkgKwigPgj+8sxtCNPheQndhcML4WvlAg9Y4QmcKZ0JovVrC+I+dwoIH1z/x/HJCA1c4QNs66sGVJ5jC20gwwoWeUMLPBT/C50wDwbuze0LpNS5Cvylrwurdd0Jt6XTBf3oWQvSSLsD53F9CNUscQoNQSkIr3UtCRviavo1tNsKTPGjC97vSwb/hhkGKYjBCjOFEQua6ScFuRK3BANRwQsF+U0I7PZPBD7pTQpZYBUI/LvnBwHdRQWbsdkBy8C5A9+3swY+uW8IFupRBN34DwkBW/0D2nF1CLUcywVLNGEJGeFHBRjAbQjMAUELdx8lBYTRJQVGOQ0Lvc2dB8+QSQgBwWcIi4zZB9bf0PwhgnkE8Nt5BMc8qQkvKfEL/AKa/5A4NQWS9M0LUDp3BpFHxP03hd8Kx0NBBdHrFQf+VKEJsMyBCMnCDwmjOh8JcAmVBU+/gP7MAjsI/VjXBO5xMwuIwE8KXY4hBkj6DQafLdcF0/0pBR2SgQXJETMFHPmdCah47QMedbcGIuBfAt6llQh3O1MHFDWzCivPSwXS6sUGhSOrA/TBvwnWbm8DbRoPC2fVmQab5dUIVufhB0D87QqFKEkLoy+5AeXvPQWDGH0GiCC5CIYwiQDSHFUFwfBxC2mkPQqoyyEHIvX3CKtokQoNXF8FwpTjBJW/lQJRyCsKp7FJCZ4bWwMMu8T+od/ZAa605QvAhOEKdZuxBJPoxQqbpdUI5W+NBGthIwurZYMKeU93B2Ns/wV6dscCsGUdCP5/AwWq7h8JxVixCa1bHQfxXAMK3RgPBb97JQJSS078ZNsHB25xCP4PiWUJfLFRCUmkPPw1WQ0H0uRJCfspNQWjPI0LjQplAcbQfQmiKVkFo4JnAys+DQXrsCEIUOKZAjLQEwYEMGEIznuRBQJD8wZEG2kHcgRtBSRckQlcau0HygpNBaU3GQSjk3z+nzC5Cjt2jQDA1W0Jez9ZBfE95wpM+LMJ7MgpCEAUVQb8RVUDXNxBCulvOQYbTmEHvXIzBe5iMQd0qJ0LfCgTBnhJpQdpoY0IFsRXBuBFQwiznnD+oEG5B8OdXQHUGgEKHCBG8M9ervNJFmsEjirxB8qGIwp//iUKxhNVBT3CuwYYEC0LhcyjCi+uQQaRQKsFM+kC+xKUfv5tAgEIayiXBDTNWwpEvgEDioibC1JqAQdt0MkHnpFDAnEHIQXtOAL8ZO+VBUwr/wMz8iMEd4CpC5+KFQs3z1EGrjfZA+i8OQaIVIEIqHofBaH9AP63adUEEixtCNWB0QlQQGELPiBfBquxbQjaapED+U15AZmuuwRAGlEAaAbbAMKITwSyuL8KkpGlCIz0fwffvh8CMl3fCMyaiwcU0lcKyGnJCVHHOQXJIz79JxrTB2kgKQEq0LUG3G5bBRVzmQdUXgEKA0SZCQx8LwXD5WkKDP2zCni8NwPEMzcG4wjXCzuhzwgCMJUEq/GLCkn1+QgUJSUAUIs3Bz5PSQbzSDEIR3WVCSNP6QfqBh8EwrXBCGcHGQQZHicLYV4lCGY7VQYCsbcJ2eQzB58McQk5hXcKbO7DAZ16QQZQPOEGMQLpBwX8xQmwlQEKPedlBDjctwbSYpMBJ20jCP7suwiMATELeARhCinbjQUUFSMI2G+FBhGmUwWIZT0IqXWtCnr8DQvB6L0LGXgHCRMgfwbXCHD/GpFpCXhm0wR9zMEITeZtB2JXRQYnOU0HOm1PChDrDQf5EusEHUA9C1HtHwh3aaEKVJMDBbESwQZjz0UH93z7Ae6KAwp3hR0H0eJlBEamNQdKD5sHGq5XBVNjGwWvZZsDns4DC6Z4PQrx058Hq43pCfP2FQs61XEItmT3BoLpGQlPga0IwJhFCoY6+QQPZFMEURynCU5v5wdZG1j8ttxTAqkvaQH/LucFpa0RCjEyhwBi1ZMLx/iNCExFewiVRQ0K9h1NCxalhv1zxgUJxRJJBwSK+wWrgkcEzKQTCv6TOQVpOYkKQUd1BAKA2wF8uG0LlcE5Cq4PswYn+g8LFsGLCxNDRwCChg8C/HTJBpymxwUHImcLiMmlBK89EQR7NksL14DtCzCgzwb/pXkB4f3PCpLBWQVtphsLxteDBF8eUv/JEXr9Sr4JCW6OeQaPt3EG7SI/C1IdawmiT0UGhs+u/Hi3GQaKza8JKVrBAOvRFwcNg6cCQzBdCIWBPwP5jNkJuXMtBTf7CQZ70UEIjQbxBObuSwb6idEI78wFCkTJeQpHvNcKEkrXA1qFVwSU3E0Kk/hfCm6TqQOv1h8LaiIvABtXnwafOUULxeQZCWTBdQl+xJcFAHyc/VBHrwVlr8MGW8ZRB/U82Qjy8k8IdpYRBMpRJQs5cCMGyrr/BUZp+QL5id8LwtKs+5i+twR2klz8vLzzBIUQrQX5oK8HJfGTCeJmdQb5tlcL/8t5BX4Pxwc/wcUK+NJPC/9MyQdMAksI6N6lBYkTswZgmzEGW+BvCJrFZwmohxMFII4JCWZ/dQVY8QcLs0n8+QbFOwhtdU8Cb7HjAUNJpwUy5e0FHcAM+kEFPQCGEmkGO3THCbKKiwQNHt8Fw571Bf/F6wtDmP0J6P+ZA7L6MwaVvLULpzYnBBotgvyBkZMIBaZNBgXzZQdM8ZMLJCBTBgk1WwYRndkJ37ZhBfghbQSx2lkAYI4zAG6U9QcK4SEEi4HTChbWbQbBqSUL7kwTClX2XwVv0YkJkaTfAMxCDQsKCRELpNJ3B0vZWwkiWO0E52i9C0PqZQdEzHcBUtU1BfqCFQdSb58CJG7LBms1pwTT3i8Kh+ijCZSlXwsTddcBiJizBqJAAwbEYX0EXfvE/CkOWwaUveELrBtlBHAlcwrRTgD+JIGfCeXFRvzfOYMLrLhJBT6dYQQqYlcANQ3DCiSz/QRBTzEGToxxBV20rQucRiMJoOe0/DNceQkxqJcGTa2PCK1nNQK5aZULdultC/PgbQjGNY0FJmpRBx9FAQnSMv8G4W2XC3y4gQn00CcH1V8rB6uwQQqenW0E59+NBZEYIQsClosFZ0vK+9VQjQhNADsFnyG7AP9LOwXsHzMGsZWpBbz1fQWMHR0B2eo9BsH8zQkkTQ8JARjNCs0gVwdpTHkF/J4bCO0ltwk4FesJKfzo/d9Jrwt4wLEL0tATBRrliQQ==\",\"dtype\":\"float32\",\"order\":\"little\",\"shape\":[5002]}},\"selected\":{\"id\":\"1044\"},\"selection_policy\":{\"id\":\"1043\"}},\"id\":\"1030\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1007\",\"type\":\"DataRange1d\"},{\"attributes\":{\"axis\":{\"id\":\"1013\"},\"ticker\":null},\"id\":\"1016\",\"type\":\"Grid\"}],\"root_ids\":[\"1002\"]},\"title\":\"Bokeh Application\",\"version\":\"2.2.1\"}};\n var render_items = [{\"docid\":\"4771f0a6-ffaa-4d9c-9218-11d51d85f8b1\",\"root_ids\":[\"1002\"],\"roots\":{\"1002\":\"06ab471d-01ed-4008-9bd3-13dc300dd8ff\"}}];\n root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n\n }\n if (root.Bokeh !== undefined) {\n embed_document(root);\n } else {\n var attempts = 0;\n var timer = setInterval(function(root) {\n if (root.Bokeh !== undefined) {\n clearInterval(timer);\n embed_document(root);\n } else {\n attempts++;\n if (attempts > 100) {\n clearInterval(timer);\n console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n }\n }\n }, 10, root)\n }\n})(window);", - "application/vnd.bokehjs_exec.v0+json": "" - }, - "metadata": { - "application/vnd.bokehjs_exec.v0+json": { - "id": "1002" - } - }, - "output_type": "display_data" - } - ] - }, - { - "cell_type": "code", - "metadata": { - "ExecuteTime": { - "end_time": "2021-04-05T15:55:20.282440Z", - "start_time": "2021-04-05T15:55:20.162442Z" + "cell_type": "code", + "metadata": { + "pycharm": { + "name": "#%%\n" + }, + "id": "kMTrDK7sz9kt" + }, + "source": [ + "for i in Text.vocab.itos:\n", + " interpret_word(lstm_model, i)" + ], + "execution_count": null, + "outputs": [] }, - "colab": { - "base_uri": "https://localhost:8080/", - "height": 617 + { + "cell_type": "code", + "metadata": { + "pycharm": { + "name": "#%%\n" + }, + "id": "ndkX6219z9kt" + }, + "source": [ + "from sklearn.manifold import TSNE\n", + "tsne = TSNE(n_components=2, random_state=0)\n", + "words_top_ted_tsne = tsne.fit_transform(vis_word)" + ], + "execution_count": null, + "outputs": [] }, - "id": "wWbpD19Dz9ku", - "outputId": "be29e12e-1dde-49af-a893-5c5e3820b9ae" - }, - "source": [ - "p = figure(tools=\"pan,wheel_zoom,reset,save\",\n", - " toolbar_location=\"above\",\n", - " title=\"vector T-SNE for most polarized words\")\n", - "\n", - "source = ColumnDataSource(data=dict(x1=words_top_ted_tsne[:,0],\n", - " x2=words_top_ted_tsne[:,1],\n", - " names=Text.vocab.itos,\n", - " color=colorlist))\n", - "\n", - "p.scatter(x=\"x1\", y=\"x2\", size=8, source=source, fill_color=\"color\")\n", - "\n", - "word_labels = LabelSet(x=\"x1\", y=\"x2\", text=\"names\", y_offset=6,\n", - " text_font_size=\"8pt\", text_color=\"#555555\",\n", - " source=source, text_align='center',render_mode='canvas')\n", - "p.add_layout(word_labels)\n", - "\n", - "show(p)" - ], - "execution_count": 37, - "outputs": [ { - "data": { - "text/html": "\n\n\n\n\n\n
\n" - }, - "metadata": {}, - "output_type": "display_data" + "cell_type": "code", + "metadata": { + "ExecuteTime": { + "end_time": "2021-04-05T15:55:28.003009Z", + "start_time": "2021-04-05T15:55:27.883014Z" + }, + "pycharm": { + "name": "#%%\n" + }, + "id": "Yd79T06dz9kt" + }, + "source": [ + "p = figure(tools=\"pan,wheel_zoom,reset,save\",\n", + " toolbar_location=\"above\",\n", + " title=\"vector T-SNE for most polarized words\")\n", + "\n", + "source = ColumnDataSource(data=dict(x1=words_top_ted_tsne[:,0],\n", + " x2=words_top_ted_tsne[:,1],\n", + " names=Text.vocab.itos,\n", + " color=colorlist))\n", + "\n", + "p.scatter(x=\"x1\", y=\"x2\", size=8, source=source, fill_color=\"color\")\n", + "\n", + "word_labels = LabelSet(x=\"x1\", y=\"x2\", text=\"names\", y_offset=6,\n", + " text_font_size=\"8pt\", text_color=\"#555555\",\n", + " source=source, text_align='center',render_mode='canvas')\n", + "# p.add_layout(word_labels)\n", + "\n", + "show(p)\n" + ], + "execution_count": null, + "outputs": [] }, { - "data": { - "application/javascript": "(function(root) {\n function embed_document(root) {\n \n var docs_json = {\"80e9ed8a-f6da-4f95-96ff-225896cf26f1\":{\"roots\":{\"references\":[{\"attributes\":{\"below\":[{\"id\":\"1091\"}],\"center\":[{\"id\":\"1094\"},{\"id\":\"1098\"},{\"id\":\"1114\"}],\"left\":[{\"id\":\"1095\"}],\"renderers\":[{\"id\":\"1112\"}],\"title\":{\"id\":\"1081\"},\"toolbar\":{\"id\":\"1103\"},\"toolbar_location\":\"above\",\"x_range\":{\"id\":\"1083\"},\"x_scale\":{\"id\":\"1087\"},\"y_range\":{\"id\":\"1085\"},\"y_scale\":{\"id\":\"1089\"}},\"id\":\"1080\",\"subtype\":\"Figure\",\"type\":\"Plot\"},{\"attributes\":{\"text\":\"vector T-SNE for most polarized words\"},\"id\":\"1081\",\"type\":\"Title\"},{\"attributes\":{},\"id\":\"1124\",\"type\":\"BasicTickFormatter\"},{\"attributes\":{},\"id\":\"1102\",\"type\":\"SaveTool\"},{\"attributes\":{},\"id\":\"1087\",\"type\":\"LinearScale\"},{\"attributes\":{},\"id\":\"1128\",\"type\":\"UnionRenderers\"},{\"attributes\":{},\"id\":\"1101\",\"type\":\"ResetTool\"},{\"attributes\":{},\"id\":\"1089\",\"type\":\"LinearScale\"},{\"attributes\":{\"fill_color\":{\"field\":\"color\"},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"units\":\"screen\",\"value\":8},\"x\":{\"field\":\"x1\"},\"y\":{\"field\":\"x2\"}},\"id\":\"1110\",\"type\":\"Scatter\"},{\"attributes\":{\"fill_alpha\":{\"value\":0.1},\"fill_color\":{\"field\":\"color\"},\"line_alpha\":{\"value\":0.1},\"line_color\":{\"value\":\"#1f77b4\"},\"size\":{\"units\":\"screen\",\"value\":8},\"x\":{\"field\":\"x1\"},\"y\":{\"field\":\"x2\"}},\"id\":\"1111\",\"type\":\"Scatter\"},{\"attributes\":{},\"id\":\"1085\",\"type\":\"DataRange1d\"},{\"attributes\":{\"formatter\":{\"id\":\"1126\"},\"ticker\":{\"id\":\"1092\"}},\"id\":\"1091\",\"type\":\"LinearAxis\"},{\"attributes\":{},\"id\":\"1083\",\"type\":\"DataRange1d\"},{\"attributes\":{},\"id\":\"1099\",\"type\":\"PanTool\"},{\"attributes\":{\"source\":{\"id\":\"1108\"},\"text\":{\"field\":\"names\"},\"text_align\":\"center\",\"text_color\":{\"value\":\"#555555\"},\"text_font_size\":{\"value\":\"8pt\"},\"x\":{\"field\":\"x1\"},\"y\":{\"field\":\"x2\"},\"y_offset\":{\"value\":6}},\"id\":\"1114\",\"type\":\"LabelSet\"},{\"attributes\":{\"active_drag\":\"auto\",\"active_inspect\":\"auto\",\"active_multi\":null,\"active_scroll\":\"auto\",\"active_tap\":\"auto\",\"tools\":[{\"id\":\"1099\"},{\"id\":\"1100\"},{\"id\":\"1101\"},{\"id\":\"1102\"}]},\"id\":\"1103\",\"type\":\"Toolbar\"},{\"attributes\":{},\"id\":\"1092\",\"type\":\"BasicTicker\"},{\"attributes\":{},\"id\":\"1129\",\"type\":\"Selection\"},{\"attributes\":{\"formatter\":{\"id\":\"1124\"},\"ticker\":{\"id\":\"1096\"}},\"id\":\"1095\",\"type\":\"LinearAxis\"},{\"attributes\":{\"source\":{\"id\":\"1108\"}},\"id\":\"1113\",\"type\":\"CDSView\"},{\"attributes\":{\"data_source\":{\"id\":\"1108\"},\"glyph\":{\"id\":\"1110\"},\"hover_glyph\":null,\"muted_glyph\":null,\"nonselection_glyph\":{\"id\":\"1111\"},\"selection_glyph\":null,\"view\":{\"id\":\"1113\"}},\"id\":\"1112\",\"type\":\"GlyphRenderer\"},{\"attributes\":{\"axis\":{\"id\":\"1091\"},\"ticker\":null},\"id\":\"1094\",\"type\":\"Grid\"},{\"attributes\":{\"axis\":{\"id\":\"1095\"},\"dimension\":1,\"ticker\":null},\"id\":\"1098\",\"type\":\"Grid\"},{\"attributes\":{},\"id\":\"1096\",\"type\":\"BasicTicker\"},{\"attributes\":{\"data\":{\"color\":[\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ffff\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ffff\",\"#00ffff\",\"#00ffff\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ffff\",\"#000000\",\"#000000\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#000000\",\"#00ffff\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#000000\",\"#000000\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ffff\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ffff\",\"#00ffff\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ffff\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ffff\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#000000\",\"#000000\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#000000\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#00ffff\",\"#00ff00\",\"#00ff00\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ffff\",\"#000000\",\"#000000\",\"#000000\",\"#00ff00\",\"#000000\",\"#00ffff\",\"#00ff00\",\"#00ff00\"],\"names\":[\"\",\"\",\"flight\",\"thank\",\"annoi\",\"hesit\",\"undecid\",\"uneasi\",\"co\",\"hour\",\"httpskeptic\",\"you\",\"cancel\",\"help\",\"it\",\"servic\",\"delai\",\"time\",\"custom\",\"can\",\"bag\",\"wait\",\"plane\",\"need\",\"hold\",\"amp\",\"fly\",\"dai\",\"airlin\",\"gate\",\"seat\",\"flightl\",\"book\",\"ve\",\"check\",\"we\",\"no\",\"chang\",\"don\",\"got\",\"phone\",\"like\",\"that\",\"try\",\"todai\",\"hr\",\"us\",\"late\",\"agent\",\"gui\",\"now\",\"work\",\"miss\",\"ticket\",\"on\",\"know\",\"what\",\"go\",\"min\",\"re\",\"me\",\"wai\",\"airport\",\"call\",\"board\",\"travel\",\"minut\",\"want\",\"get\",\"great\",\"thi\",\"weather\",\"connect\",\"tomorrow\",\"problem\",\"not\",\"good\",\"new\",\"home\",\"issu\",\"look\",\"peopl\",\"email\",\"love\",\"pleas\",\"the\",\"let\",\"sit\",\"told\",\"ll\",\"luggag\",\"rebook\",\"aa\",\"number\",\"reserv\",\"is\",\"my\",\"crew\",\"dm\",\"unit\",\"lost\",\"baggag\",\"passeng\",\"trip\",\"how\",\"respons\",\"worst\",\"ye\",\"again\",\"sai\",\"tell\",\"do\",\"experi\",\"just\",\"right\",\"have\",\"line\",\"your\",\"thei\",\"why\",\"am\",\"ua\",\"in\",\"leav\",\"didn\",\"hope\",\"onlin\",\"week\",\"there\",\"come\",\"and\",\"jfk\",\"answer\",\"arriv\",\"pai\",\"staff\",\"make\",\"happi\",\"our\",\"bad\",\"best\",\"so\",\"long\",\"better\",\"follow\",\"left\",\"sure\",\"land\",\"said\",\"updat\",\"won\",\"think\",\"refund\",\"stuck\",\"mile\",\"pm\",\"all\",\"but\",\"morn\",\"care\",\"doesn\",\"sent\",\"flightr\",\"ask\",\"tonight\",\"busi\",\"flt\",\"happen\",\"websit\",\"appreci\",\"hotel\",\"night\",\"attend\",\"out\",\"will\",\"fleet\",\"fleek\",\"dfw\",\"tri\",\"lax\",\"year\",\"up\",\"confirm\",\"info\",\"offer\",\"final\",\"air\",\"to\",\"nice\",\"upgrad\",\"charg\",\"pilot\",\"person\",\"voucher\",\"credit\",\"rude\",\"talk\",\"avail\",\"free\",\"ago\",\"point\",\"fix\",\"send\",\"class\",\"rep\",\"start\",\"thing\",\"if\",\"pass\",\"ani\",\"st\",\"sfo\",\"contact\",\"option\",\"frustrat\",\"take\",\"employe\",\"abl\",\"open\",\"receiv\",\"tweet\",\"back\",\"phl\",\"claim\",\"fee\",\"stop\",\"face\",\"still\",\"here\",\"speak\",\"understand\",\"wifi\",\"app\",\"awesom\",\"differ\",\"disappoint\",\"ord\",\"team\",\"statu\",\"actual\",\"she\",\"yesterdai\",\"hi\",\"dca\",\"suppos\",\"terribl\",\"too\",\"plan\",\"ar\",\"departur\",\"amaz\",\"ok\",\"instead\",\"sorri\",\"suck\",\"direct\",\"earli\",\"la\",\"return\",\"schedul\",\"extra\",\"frown\",\"gt\",\"rt\",\"thx\",\"isn\",\"jetblu\",\"site\",\"couldn\",\"haven\",\"kid\",\"bo\",\"friend\",\"ground\",\"mean\",\"paid\",\"smilei\",\"clt\",\"deal\",\"earlier\",\"lot\",\"monei\",\"allow\",\"famili\",\"polici\",\"realli\",\"reason\",\"show\",\"ewr\",\"job\",\"compani\",\"took\",\"add\",\"card\",\"chanc\",\"provid\",\"strand\",\"wasn\",\"depart\",\"expect\",\"member\",\"messag\",\"big\",\"did\",\"ever\",\"hung\",\"month\",\"repli\",\"snow\",\"account\",\"oh\",\"question\",\"respond\",\"vega\",\"wife\",\"airplan\",\"lose\",\"tarmac\",\"th\",\"airwai\",\"boston\",\"dalla\",\"old\",\"when\",\"feel\",\"horribl\",\"mechan\",\"southwest\",\"them\",\"assist\",\"chicago\",\"give\",\"pick\",\"poor\",\"possibl\",\"ridicul\",\"apolog\",\"for\",\"run\",\"san\",\"well\",\"yet\",\"denver\",\"reschedul\",\"serious\",\"never\",\"request\",\"treat\",\"twitter\",\"unaccept\",\"ur\",\"wa\",\"american\",\"caus\",\"cost\",\"keep\",\"at\",\"awai\",\"been\",\"mayb\",\"vacat\",\"desk\",\"end\",\"far\",\"flightlat\",\"food\",\"hang\",\"inform\",\"nyc\",\"stai\",\"wrong\",\"count\",\"gave\",\"half\",\"link\",\"past\",\"destin\",\"handl\",\"complaint\",\"aw\",\"bc\",\"complet\",\"hei\",\"noth\",\"broken\",\"fail\",\"hear\",\"off\",\"went\",\"car\",\"row\",\"wonder\",\"compens\",\"much\",\"price\",\"twice\",\"commun\",\"current\",\"error\",\"littl\",\"move\",\"runwai\",\"soon\",\"pl\",\"switch\",\"charlott\",\"guess\",\"iad\",\"idea\",\"place\",\"rout\",\"termin\",\"veri\",\"with\",\"would\",\"bring\",\"carri\",\"newark\",\"wors\",\"citi\",\"fll\",\"houston\",\"intern\",\"purchas\",\"after\",\"first\",\"he\",\"lack\",\"longer\",\"phx\",\"real\",\"drive\",\"lga\",\"reach\",\"believ\",\"drop\",\"given\",\"hard\",\"list\",\"plu\",\"room\",\"second\",\"watch\",\"cool\",\"deliv\",\"disconnect\",\"head\",\"life\",\"live\",\"sat\",\"see\",\"thought\",\"cust\",\"fare\",\"had\",\"im\",\"then\",\"turn\",\"also\",\"bui\",\"close\",\"figur\",\"heard\",\"jet\",\"load\",\"lol\",\"sleep\",\"accept\",\"httpsskeptic\",\"nd\",\"process\",\"system\",\"address\",\"down\",\"even\",\"onli\",\"origin\",\"philli\",\"total\",\"group\",\"human\",\"iah\",\"leg\",\"mainten\",\"reflight\",\"share\",\"sw\",\"wast\",\"dc\",\"forward\",\"quick\",\"standbi\",\"world\",\"worri\",\"wouldn\",\"absolut\",\"as\",\"date\",\"den\",\"form\",\"glad\",\"mondai\",\"relat\",\"announc\",\"club\",\"entir\",\"ic\",\"joke\",\"resolv\",\"tv\",\"yr\",\"ad\",\"bwi\",\"ceo\",\"file\",\"loyal\",\"manag\",\"non\",\"oper\",\"where\",\"aren\",\"award\",\"case\",\"done\",\"explain\",\"locat\",\"miami\",\"name\",\"or\",\"refus\",\"screw\",\"spent\",\"swa\",\"wish\",\"word\",\"blue\",\"flew\",\"flyer\",\"hate\",\"mess\",\"over\",\"read\",\"rock\",\"usair\",\"who\",\"be\",\"correct\",\"more\",\"counter\",\"forc\",\"record\",\"ruin\",\"should\",\"supervisor\",\"taken\",\"train\",\"yeah\",\"alreadi\",\"anoth\",\"bought\",\"from\",\"fuck\",\"hopefulli\",\"mco\",\"promis\",\"someon\",\"spend\",\"support\",\"wow\",\"anyth\",\"concern\",\"continu\",\"fault\",\"pretti\",\"sundai\",\"though\",\"thumbs_up\",\"asap\",\"detail\",\"inconveni\",\"kind\",\"lt\",\"meet\",\"post\",\"report\",\"situat\",\"super\",\"access\",\"appar\",\"autom\",\"cloth\",\"door\",\"drink\",\"futur\",\"high\",\"learn\",\"safe\",\"set\",\"storm\",\"suggest\",\"transfer\",\"cabin\",\"companion\",\"fine\",\"huge\",\"readi\",\"select\",\"sign\",\"tsa\",\"atl\",\"delta\",\"feb\",\"nashvil\",\"of\",\"okai\",\"tuesdai\",\"unfortun\",\"austin\",\"bump\",\"checkin\",\"cross\",\"expir\",\"extrem\",\"flown\",\"layov\",\"probabl\",\"safeti\",\"through\",\"upset\",\"accommod\",\"atlanta\",\"could\",\"crazi\",\"easi\",\"fact\",\"folded_hand\",\"note\",\"orlando\",\"sad\",\"save\",\"submit\",\"togeth\",\"zero\",\"dont\",\"gonna\",\"ha\",\"middl\",\"mom\",\"pre\",\"prioriti\",\"seen\",\"shit\",\"shouldn\",\"state\",\"stick\",\"weekend\",\"aircraft\",\"cold\",\"daughter\",\"hand\",\"husband\",\"notic\",\"platinum\",\"reimburs\",\"space\",\"troubl\",\"water\",\"came\",\"control\",\"dividend\",\"fun\",\"loung\",\"luck\",\"matter\",\"multipl\",\"offic\",\"pouting_fac\",\"rdu\",\"sens\",\"serv\",\"wink_or_smirk\",\"birthdai\",\"consid\",\"countri\",\"despit\",\"enjoi\",\"friendli\",\"gold\",\"hello\",\"laugh\",\"listen\",\"mia\",\"mobil\",\"notif\",\"ppl\",\"rate\",\"rd\",\"round\",\"spoke\",\"tix\",\"unabl\",\"usual\",\"winter\",\"wtf\",\"yall\",\"anyon\",\"appli\",\"area\",\"babi\",\"catch\",\"code\",\"entertain\",\"excus\",\"held\",\"id\",\"impress\",\"item\",\"knew\",\"letter\",\"luv\",\"meal\",\"media\",\"mileag\",\"next\",\"notifi\",\"ny\",\"other\",\"page\",\"prefer\",\"secur\",\"stand\",\"text\",\"track\",\"true\",\"wall\",\"afternoon\",\"attitud\",\"choic\",\"cover\",\"folk\",\"fridai\",\"goe\",\"haha\",\"hasn\",\"itinerari\",\"ladi\",\"man\",\"overhead\",\"overnight\",\"red_heart\",\"short\",\"small\",\"step\",\"tag\",\"child\",\"includ\",\"mail\",\"program\",\"pull\",\"social\",\"son\",\"surpris\",\"virgin\",\"assign\",\"bit\",\"blame\",\"bna\",\"clapping_hand\",\"clear\",\"cut\",\"doe\",\"excel\",\"exist\",\"hire\",\"incompet\",\"li\",\"liter\",\"march\",\"mistak\",\"plz\",\"push\",\"ride\",\"saw\",\"sort\",\"tire\",\"win\",\"window\",\"worth\",\"advisori\",\"attempt\",\"center\",\"conf\",\"earn\",\"everyon\",\"excit\",\"explan\",\"feedback\",\"fl\",\"gone\",\"incred\",\"last\",\"nope\",\"requir\",\"reward\",\"saturdai\",\"sound\",\"stori\",\"volum\",\"web\",\"clean\",\"comput\",\"cours\",\"definit\",\"enter\",\"ey\",\"found\",\"honor\",\"kudo\",\"mention\",\"order\",\"phoenix\",\"premier\",\"receipt\",\"repres\",\"same\",\"ski\",\"about\",\"anymor\",\"break\",\"btw\",\"cs\",\"damag\",\"deplan\",\"domest\",\"dragon\",\"everi\",\"failur\",\"fan\",\"flightd\",\"frequent\",\"full\",\"funer\",\"her\",\"kept\",\"mind\",\"plai\",\"snack\",\"video\",\"view\",\"walk\",\"alwai\",\"bank\",\"blow\",\"bother\",\"by\",\"captain\",\"crying_fac\",\"deserv\",\"dollar\",\"equip\",\"expens\",\"finger\",\"flightat\",\"improv\",\"power\",\"special\",\"stuff\",\"svc\",\"takeoff\",\"unhelp\",\"warm\",\"wed\",\"au\",\"cater\",\"choos\",\"disgust\",\"experienc\",\"find\",\"mai\",\"major\",\"offici\",\"parti\",\"sell\",\"touch\",\"appear\",\"bs\",\"cc\",\"complain\",\"corpor\",\"deni\",\"especi\",\"except\",\"fair\",\"jb\",\"merg\",\"merger\",\"mexico\",\"posit\",\"remind\",\"singl\",\"sister\",\"slow\",\"some\",\"two\",\"usairwai\",\"useless\",\"weren\",\"addit\",\"altern\",\"around\",\"auto\",\"befor\",\"bird\",\"carrier\",\"emerg\",\"fill\",\"ignor\",\"interest\",\"made\",\"match\",\"nightmar\",\"nonstop\",\"onboard\",\"passbook\",\"philadelphia\",\"realiz\",\"redeem\",\"rememb\",\"rerout\",\"street\",\"suitcas\",\"tmrw\",\"visit\",\"welcom\",\"write\",\"advis\",\"battl\",\"begin\",\"broke\",\"callback\",\"cheeki\",\"confus\",\"dal\",\"damn\",\"de\",\"enough\",\"exit\",\"fantast\",\"fit\",\"forgot\",\"funni\",\"god\",\"hit\",\"imagin\",\"imposs\",\"kill\",\"overbook\",\"partner\",\"patient\",\"play\",\"print\",\"replac\",\"result\",\"rule\",\"screen\",\"stress\",\"tho\",\"trust\",\"winking_fac\",\"alert\",\"america\",\"becaus\",\"brother\",\"bu\",\"children\",\"clearli\",\"coach\",\"condit\",\"consist\",\"crash\",\"deliveri\",\"diego\",\"dismai\",\"engin\",\"fa\",\"favorit\",\"freez\",\"fyi\",\"gener\",\"hell\",\"import\",\"inflight\",\"insid\",\"internet\",\"log\",\"mad\",\"most\",\"music\",\"profit\",\"rental\",\"resolut\",\"sea\",\"seattl\",\"shame\",\"skeptic\",\"south\",\"taxi\",\"appeas\",\"avoid\",\"base\",\"basic\",\"beauti\",\"bin\",\"coffe\",\"decid\",\"dept\",\"event\",\"forev\",\"game\",\"glass\",\"gotten\",\"infant\",\"lie\",\"limit\",\"midnight\",\"nc\",\"outsid\",\"pgreat\",\"prompt\",\"rais\",\"recent\",\"shot\",\"sick\",\"solut\",\"specif\",\"stewardess\",\"till\",\"uk\",\"unbeliev\",\"unhappi\",\"weary_fac\",\"wednesdai\",\"yo\",\"act\",\"admir\",\"ahead\",\"an\",\"chairman\",\"clue\",\"commerci\",\"coupl\",\"daili\",\"degre\",\"diff\",\"discount\",\"effort\",\"els\",\"estim\",\"everyth\",\"extend\",\"fall\",\"fast\",\"fuel\",\"intl\",\"level\",\"main\",\"mon\",\"onc\",\"oscar\",\"pbi\",\"photo\",\"plenti\",\"previou\",\"put\",\"rent\",\"seem\",\"ugh\",\"yep\",\"afford\",\"angri\",\"automat\",\"ball\",\"bdai\",\"buffalo\",\"cheer\",\"cmh\",\"comp\",\"congrat\",\"decis\",\"design\",\"doubl\",\"eventu\",\"faster\",\"florida\",\"forget\",\"girl\",\"gotta\",\"hook\",\"hot\",\"jetwai\",\"journal\",\"known\",\"mark\",\"market\",\"moment\",\"mother\",\"normal\",\"park\",\"patienc\",\"pr\",\"premium\",\"prepar\",\"promo\",\"quickli\",\"red\",\"remov\",\"sale\",\"separ\",\"sold\",\"spring\",\"straight\",\"tampa\",\"thumbs_down\",\"traffic\",\"transport\",\"truli\",\"unamused_fac\",\"waiv\",\"affect\",\"ag\",\"anywai\",\"april\",\"brand\",\"cab\",\"carousel\",\"certif\",\"charact\",\"client\",\"com\",\"comfort\",\"courtesi\",\"disast\",\"divert\",\"eat\",\"either\",\"embarrass\",\"exactli\",\"exampl\",\"flier\",\"floor\",\"fund\",\"grin\",\"guarante\",\"honest\",\"hous\",\"insan\",\"interview\",\"iphon\",\"light\",\"met\",\"msg\",\"omg\",\"perfect\",\"pictur\",\"pleasant\",\"practic\",\"prevent\",\"profession\",\"public\",\"rr\",\"school\",\"silver\",\"simpli\",\"solv\",\"sun\",\"sweet\",\"tough\",\"ty\",\"type\",\"usa\",\"valu\",\"woman\",\"wont\",\"worker\",\"yell\",\"absurd\",\"advanc\",\"advantag\",\"almost\",\"arrang\",\"beat\",\"cheap\",\"click\",\"comment\",\"creat\",\"dad\",\"dull\",\"economi\",\"elit\",\"etc\",\"feet\",\"fight\",\"fort\",\"frm\",\"hare\",\"ipad\",\"jblu\",\"juan\",\"jump\",\"kick\",\"kp\",\"lead\",\"lhr\",\"local\",\"logan\",\"london\",\"low\",\"mdw\",\"nearli\",\"palm\",\"paper\",\"pathet\",\"peanut\",\"piec\",\"pit\",\"prior\",\"promot\",\"pt\",\"qualiti\",\"raspberri\",\"refer\",\"rest\",\"rsw\",\"sf\",\"shock\",\"sinc\",\"sju\",\"slc\",\"smh\",\"sos_button\",\"speed\",\"stl\",\"technic\",\"three\",\"thursdai\",\"til\",\"treatment\",\"vx\",\"wanna\",\"wheel\",\"ya\",\"acct\",\"action\",\"attent\",\"bet\",\"biz\",\"both\",\"buf\",\"cheaper\",\"cle\",\"coat\",\"columbu\",\"crappi\",\"dead\",\"death\",\"dia\",\"directli\",\"disappear\",\"discuss\",\"dog\",\"dream\",\"easili\",\"east\",\"frozen\",\"global\",\"howev\",\"immedi\",\"iv\",\"jan\",\"larg\",\"lauderdal\",\"lower\",\"militari\",\"minor\",\"near\",\"ok_hand\",\"opportun\",\"pair\",\"parent\",\"pic\",\"piss\",\"queue\",\"respect\",\"shuttl\",\"simpl\",\"sna\",\"song\",\"sooner\",\"suit\",\"texa\",\"unprofession\",\"victory_hand\",\"wheelchair\",\"ah\",\"airfar\",\"ass\",\"assum\",\"august\",\"awar\",\"bathroom\",\"bdl\",\"beach\",\"benefit\",\"black\",\"blue_heart\",\"carryon\",\"cell\",\"chair\",\"coast\",\"contest\",\"crap\",\"cun\",\"devic\",\"didnt\",\"difficult\",\"drunk\",\"easier\",\"express\",\"featur\",\"februari\",\"felt\",\"ft\",\"gear\",\"guitar\",\"hawaii\",\"higher\",\"holder\",\"honeymoon\",\"idiot\",\"inbound\",\"insult\",\"memphi\",\"million\",\"mine\",\"miser\",\"mke\",\"none\",\"nut\",\"obvious\",\"outlet\",\"pain\",\"pari\",\"part\",\"pax\",\"properli\",\"pvd\",\"raleigh\",\"ran\",\"rapid\",\"recommend\",\"releas\",\"retriev\",\"search\",\"shout\",\"size\",\"standard\",\"star\",\"student\",\"summer\",\"tpa\",\"unavail\",\"understaf\",\"weight\",\"west\",\"wet\",\"yea\",\"york\",\"yyz\",\"accord\",\"accur\",\"activ\",\"advertis\",\"balanc\",\"chat\",\"commit\",\"convers\",\"costum\",\"coupon\",\"cry\",\"disgrac\",\"doubt\",\"drove\",\"english\",\"est\",\"exact\",\"fam\",\"fi\",\"finish\",\"four\",\"freak\",\"function\",\"heart\",\"hundr\",\"hunt\",\"indic\",\"jh\",\"kiosk\",\"laptop\",\"lb\",\"legroom\",\"less\",\"lesson\",\"loyalti\",\"mani\",\"meant\",\"medic\",\"might\",\"model\",\"movi\",\"msp\",\"must\",\"nasti\",\"nj\",\"pensive_fac\",\"perform\",\"poorli\",\"prob\",\"review\",\"rip\",\"road\",\"sever\",\"sky\",\"smile\",\"someth\",\"spot\",\"term\",\"these\",\"throw\",\"tue\",\"ual\",\"va\",\"aadvantag\",\"approach\",\"approv\",\"asham\",\"ba\",\"broken_heart\",\"cancun\",\"certainli\",\"chi\",\"compass\",\"confer\",\"david\",\"defin\",\"dinner\",\"dirti\",\"disrespect\",\"due\",\"elev\",\"exec\",\"faa\",\"father\",\"field\",\"formal\",\"fraud\",\"ga\",\"garbag\",\"gift\",\"golf\",\"handler\",\"heat\",\"honestli\",\"hostag\",\"ill\",\"incid\",\"ind\",\"initi\",\"inspir\",\"int\",\"join\",\"laguardia\",\"lap\",\"memori\",\"method\",\"mileageplu\",\"mint\",\"msy\",\"okc\",\"outbound\",\"outstand\",\"ow\",\"pa\",\"pack\",\"payment\",\"perhap\",\"personnel\",\"present\",\"procedur\",\"regist\",\"repair\",\"repeat\",\"ring\",\"roundtrip\",\"sadli\",\"shitti\",\"somebodi\",\"split\",\"stroller\",\"sunni\",\"surgeri\",\"tea\",\"tech\",\"those\",\"toddler\",\"trueblu\",\"understood\",\"unus\",\"upcom\",\"valid\",\"warn\",\"yai\",\"advic\",\"agre\",\"allianc\",\"anywher\",\"apart\",\"assur\",\"australia\",\"badli\",\"band\",\"beer\",\"biggest\",\"bogota\",\"boyfriend\",\"brought\",\"bummer\",\"button\",\"california\",\"celebr\",\"central\",\"certain\",\"cleveland\",\"complimentari\",\"confused_fac\",\"cont\",\"csr\",\"cuz\",\"doesnt\",\"dozen\",\"effici\",\"em\",\"equal\",\"flightli\",\"francisco\",\"heathrow\",\"histori\",\"ici\",\"increas\",\"industri\",\"ktn\",\"lame\",\"law\",\"least\",\"loos\",\"lousi\",\"lucki\",\"mech\",\"midwai\",\"mr\",\"myself\",\"odd\",\"pittsburgh\",\"plat\",\"polic\",\"privat\",\"puerto\",\"remain\",\"republican\",\"revenu\",\"ric\",\"salt\",\"seek\",\"self\",\"shoe\",\"shortli\",\"sight\",\"sincer\",\"sjc\",\"smiling_fac\",\"smooth\",\"statement\",\"stupid\",\"teach\",\"tkt\",\"toilet\",\"transact\",\"tx\",\"unreal\",\"voic\",\"volunt\",\"washington\",\"waterburi\",\"winner\",\"young\",\"zone\",\"abc\",\"abq\",\"acknowledg\",\"ahold\",\"alright\",\"anniversari\",\"anytim\",\"applic\",\"argu\",\"articl\",\"aug\",\"await\",\"bai\",\"bare\",\"belong\",\"blog\",\"boi\",\"bonu\",\"bottl\",\"breakfast\",\"browser\",\"bug\",\"bunch\",\"ca\",\"camera\",\"canada\",\"cart\",\"cash\",\"challeng\",\"channel\",\"charleston\",\"collect\",\"combin\",\"common\",\"compar\",\"copi\",\"correctli\",\"cup\",\"curiou\",\"cx\",\"cxl\",\"danc\",\"develop\",\"dmed\",\"donat\",\"downgrad\",\"dtw\",\"dy\",\"each\",\"eastern\",\"empti\",\"ensur\",\"epic\",\"eta\",\"exchang\",\"execut\",\"fabul\",\"faith\",\"fals\",\"fb\",\"ff\",\"flat\",\"fra\",\"gr\",\"grand\",\"greet\",\"gross\",\"growing_heart\",\"guest\",\"hadn\",\"hassl\",\"horrend\",\"hou\",\"hpn\",\"huh\",\"integr\",\"irrit\",\"jack\",\"jax\",\"john\",\"jp\",\"juli\",\"karen\",\"lauren\",\"legal\",\"liveri\",\"luckili\",\"magic\",\"malfunct\",\"manner\",\"mari\",\"mci\",\"mid\",\"misplac\",\"monitor\",\"nah\",\"nation\",\"nexu\",\"noon\",\"occur\",\"outsourc\",\"paperwork\",\"party_popp\",\"passport\",\"password\",\"penalti\",\"pend\",\"period\",\"portland\",\"prai\",\"protect\",\"prove\",\"race\",\"reagan\",\"refresh\",\"rough\",\"scan\",\"scaveng\",\"segment\",\"seriou\",\"ship\",\"shut\",\"sigh\",\"skill\",\"spoken\",\"stink\",\"strike\",\"survei\",\"tablet\",\"thousand\",\"threaten\",\"ton\",\"trap\",\"truck\",\"uncomfort\",\"waiver\",\"wind\",\"abil\",\"abt\",\"agenc\",\"anticip\",\"appal\",\"appropri\",\"atroci\",\"backup\",\"badg\",\"baltimor\",\"bar\",\"belt\",\"birmingham\",\"block\",\"buck\",\"bullshit\",\"canadian\",\"chao\",\"chicken\",\"compliment\",\"confid\",\"consider\",\"content\",\"courteou\",\"ctl\",\"dealt\",\"dear\",\"decemb\",\"decent\",\"deep\",\"desper\",\"dest\",\"di\",\"die\",\"digit\",\"disorgan\",\"disregard\",\"document\",\"download\",\"dr\",\"driver\",\"dure\",\"educ\",\"ep\",\"europ\",\"explor\",\"extens\",\"fire\",\"flightst\",\"forecast\",\"forth\",\"gain\",\"girlfriend\",\"grandma\",\"harder\",\"headach\",\"him\",\"hnl\",\"hub\",\"hubbi\",\"hungri\",\"inch\",\"ing\",\"invit\",\"io\",\"januari\",\"june\",\"lifetim\",\"lit\",\"loss\",\"loui\",\"machin\",\"male\",\"membership\",\"metal\",\"mi\",\"numer\",\"octob\",\"organ\",\"pen\",\"perk\",\"pillow\",\"plastic\",\"pocket\",\"pound\",\"preboard\",\"pressur\",\"progress\",\"ps\",\"purpos\",\"raising_hand\",\"ramp\",\"rectifi\",\"redirect\",\"refuel\",\"regul\",\"reinstat\",\"relationship\",\"resch\",\"reset\",\"rico\",\"robot\",\"roc\",\"selfi\",\"shop\",\"shown\",\"snowflak\",\"spread\",\"staf\",\"stat\",\"stolen\",\"success\",\"such\",\"sxm\",\"tabl\",\"terri\",\"test\",\"thnx\",\"thru\",\"top\",\"turbul\",\"typic\",\"uh\",\"unload\",\"van\",\"vs\",\"wallet\",\"weird\",\"which\",\"white\",\"wi\",\"wine\",\"wk\",\"women\",\"wrote\",\"wth\",\"yup\",\"yvr\",\"abysm\",\"admit\",\"adopt\",\"albani\",\"although\",\"asleep\",\"aspen\",\"batteri\",\"bill\",\"blah\",\"blast\",\"bridg\",\"brilliant\",\"buddi\",\"bush\",\"cabo\",\"caller\",\"capt\",\"chase\",\"circl\",\"clarifi\",\"closer\",\"colleagu\",\"colleg\",\"color\",\"comm\",\"compet\",\"competit\",\"concours\",\"conflict\",\"constant\",\"continent\",\"contract\",\"cousin\",\"cowork\",\"cracker\",\"crewmemb\",\"crowd\",\"cvg\",\"data\",\"depend\",\"destroi\",\"detroit\",\"dial\",\"discov\",\"disnei\",\"displai\",\"dissatisfi\",\"dl\",\"dming\",\"driven\",\"dumb\",\"earth\",\"ella\",\"elsewher\",\"en\",\"enrout\",\"esp\",\"etongu\",\"evalu\",\"everytim\",\"ex\",\"exhaust\",\"exp\",\"expedit\",\"facebook\",\"fat\",\"film\",\"fortun\",\"fresh\",\"fulli\",\"getawai\",\"gf\",\"glitch\",\"goodwil\",\"grinning_fac\",\"grr\",\"gtwink\",\"happili\",\"hartford\",\"headphon\",\"heavi\",\"heck\",\"highli\",\"humor\",\"hurt\",\"impact\",\"inappropri\",\"inclement\",\"incom\",\"incur\",\"inexcus\",\"injuri\",\"intent\",\"investig\",\"involv\",\"isnt\",\"jacksonvil\",\"jose\",\"journei\",\"jt\",\"kei\",\"kinda\",\"kn\",\"licens\",\"lock\",\"lodg\",\"ly\",\"maint\",\"map\",\"massiv\",\"mem\",\"menu\",\"mex\",\"nearbi\",\"nervou\",\"nh\",\"north\",\"often\",\"ogg\",\"otherwis\",\"overal\",\"overweight\",\"own\",\"packag\",\"palm_tre\",\"pet\",\"ph\",\"physic\",\"plain\",\"planet\",\"po\",\"precheck\",\"pro\",\"proper\",\"qualifi\",\"quot\",\"rare\",\"reconsid\",\"ref\",\"regular\",\"rel\",\"reliabl\",\"remot\",\"ribbon\",\"rob\",\"savannah\",\"scale\",\"scare\",\"sec\",\"shirt\",\"side\",\"signific\",\"similar\",\"slept\",\"softwar\",\"spanish\",\"spirit\",\"steal\",\"stellar\",\"stole\",\"stood\",\"stranger\",\"stream\",\"superior\",\"tail\",\"teen\",\"tel\",\"telephon\",\"thankfulli\",\"tick\",\"tini\",\"tone\",\"truth\",\"two_heart\",\"unexpect\",\"unlik\",\"unnecessari\",\"user\",\"valuabl\",\"wake\",\"while\",\"wing\",\"without\",\"worthless\",\"written\",\"ac\",\"accid\",\"aisl\",\"alaska\",\"alon\",\"alot\",\"angel\",\"annual\",\"antonio\",\"anxiou\",\"appl\",\"appoint\",\"armrest\",\"assault\",\"atlant\",\"attach\",\"averag\",\"aviat\",\"aviv\",\"aww\",\"bae\",\"bahama\",\"bankrupt\",\"barbado\",\"bf\",\"bhm\",\"birth\",\"bk\",\"blueman\",\"boot\",\"bot\",\"bounc\",\"box\",\"burn\",\"cake\",\"cannot\",\"cant\",\"carseat\",\"centuri\",\"chariti\",\"cheat\",\"checkout\",\"chose\",\"cinci\",\"circumst\",\"closest\",\"cluster\",\"cmon\",\"competitor\",\"connector\",\"constantli\",\"consum\",\"conveni\",\"cooki\",\"corp\",\"cot\",\"crisi\",\"cute\",\"darn\",\"def\",\"delet\",\"delight\",\"desktop\",\"difficulti\",\"dime\",\"disabl\",\"divers\",\"dry\",\"dsm\",\"dump\",\"ed\",\"encount\",\"eu\",\"fastest\",\"fave\",\"fc\",\"fear\",\"fell\",\"fiasco\",\"finest\",\"flexibl\",\"fli\",\"flip\",\"flushed_fac\",\"folder\",\"foot\",\"fq\",\"fran\",\"freq\",\"gari\",\"gj\",\"green\",\"greenvil\",\"guid\",\"haiti\",\"harbor\",\"hardli\",\"hat\",\"haul\",\"hdn\",\"heavili\",\"hero\",\"hilari\",\"hop\",\"horrid\",\"hospit\",\"hv\",\"illeg\",\"inadequ\",\"incent\",\"indi\",\"ineffici\",\"inquir\",\"instruct\",\"ivr\",\"jac\",\"jacket\",\"kc\",\"kelli\",\"king\",\"kit\",\"lake\",\"lavatori\",\"lmao\",\"login\",\"louisvil\",\"lunch\",\"luxuri\",\"ma\",\"manchest\",\"manual\",\"marri\",\"md\",\"measur\",\"mislead\",\"mission\",\"mosaic\",\"mt\",\"na\",\"nantucket\",\"natur\",\"necessari\",\"neglect\",\"neglig\",\"negoti\",\"neutral_fac\",\"nite\",\"northeast\",\"notch\",\"novemb\",\"nrt\",\"omaha\",\"oop\",\"orlean\",\"overs\",\"oz\",\"pacif\",\"paint\",\"particularli\",\"partnership\",\"pat\",\"philippin\",\"pile_of_poo\",\"pj\",\"pleasur\",\"pool\",\"pop\",\"popular\",\"pqd\",\"prais\",\"predict\",\"pref\",\"pretzel\",\"pricei\",\"proactiv\",\"project\",\"proof\",\"properti\",\"proud\",\"pwm\",\"rain\",\"random\",\"rang\",\"rant\",\"rather\",\"reclin\",\"recours\",\"recov\",\"reflect\",\"regret\",\"restor\",\"rethink\",\"rno\",\"roll\",\"rush\",\"section\",\"sept\",\"septemb\",\"settl\",\"shoulder\",\"smirking_fac\",\"snowi\",\"soak\",\"somehow\",\"spam\",\"spare\",\"speedi\",\"station\",\"steamboat\",\"stock\",\"strong\",\"stt\",\"stun\",\"style\",\"suicid\",\"sympathi\",\"tab\",\"temp\",\"their\",\"thur\",\"tight\",\"tk\",\"tourist\",\"trai\",\"tremend\",\"unfriendli\",\"unknown\",\"unreli\",\"urgent\",\"utah\",\"verifi\",\"viequ\",\"visa\",\"wasnt\",\"weak\",\"wear\",\"weigh\",\"were\",\"wide\",\"wreck\",\"abandon\",\"aboard\",\"accident\",\"accordingli\",\"aggrav\",\"agt\",\"ahhhh\",\"airbu\",\"aka\",\"albuquerqu\",\"ali\",\"aliv\",\"allergi\",\"amex\",\"ana\",\"andrew\",\"angry_fac\",\"anthoni\",\"anybodi\",\"aqjn\",\"aruba\",\"asset\",\"asshol\",\"assult\",\"astound\",\"atc\",\"athlet\",\"ay\",\"az\",\"bagag\",\"bed\",\"beg\",\"bereav\",\"beverag\",\"bike\",\"bitch\",\"blanket\",\"bloodi\",\"boat\",\"boe\",\"boo\",\"booz\",\"bound\",\"brain\",\"breath\",\"bro\",\"bruh\",\"brush\",\"brutal\",\"btv\",\"cae\",\"calgari\",\"cana\",\"capabl\",\"capit\",\"carolina\",\"cat\",\"caught\",\"cert\",\"cessna\",\"ch\",\"charter\",\"chees\",\"chill\",\"china\",\"cho\",\"chocol\",\"chrome\",\"clarif\",\"classi\",\"clever\",\"cloud\",\"cocktail\",\"coincid\",\"complic\",\"concert\",\"confounded_fac\",\"consecut\",\"contain\",\"conting\",\"convinc\",\"costa\",\"couldnt\",\"cramp\",\"cranki\",\"cruis\",\"ct\",\"cuba\",\"cue\",\"cushion\",\"cxld\",\"dang\",\"dark\",\"daytona\",\"debacl\",\"deck\",\"deic\",\"del\",\"delhi\",\"dep\",\"deplor\",\"describ\",\"desir\",\"discrimin\",\"dispatch\",\"disrupt\",\"dissapoint\",\"div\",\"dot\",\"doug\",\"dpt\",\"draw\",\"duh\",\"dunno\",\"duti\",\"ear\",\"easiest\",\"ef\",\"el\",\"elderli\",\"emboss\",\"enforc\",\"engag\",\"enquir\",\"er\",\"eri\",\"es\",\"essenti\",\"establish\",\"exclus\",\"expand\",\"fav\",\"favor\",\"fed\",\"feed\",\"festiv\",\"ffl\",\"financi\",\"five\",\"flaw\",\"flex\",\"flightawar\",\"forfeit\",\"forgiv\",\"fr\",\"frankfurt\",\"further\",\"gallei\",\"gent\",\"giant\",\"gladli\",\"goal\",\"goodby\",\"googl\",\"gorgeou\",\"grab\",\"grate\",\"hahaha\",\"hanger\",\"havent\",\"hayden\",\"heart_suit\",\"henc\",\"hide\",\"hmmm\",\"holdup\",\"holi\",\"holidai\",\"honolulu\",\"host\",\"hundred_point\",\"hwnac\",\"ident\",\"idk\",\"inconvenienc\",\"incorrect\",\"incorrectli\",\"inde\",\"indianapoli\",\"input\",\"insist\",\"intend\",\"intention\",\"interact\",\"investor\",\"island\",\"itali\",\"jam\",\"jamaica\",\"jeanin\",\"jeff\",\"kgdh\",\"kphl\",\"ky\",\"lazi\",\"legitim\",\"lfulcbq\",\"lh\",\"lisa\",\"loc\",\"logic\",\"logist\",\"lowest\",\"magazin\",\"maiden\",\"med\",\"midland\",\"miler\",\"miracl\",\"mn\",\"mtg\",\"mth\",\"musician\",\"nasdaq\",\"nassau\",\"neither\",\"network\",\"nicer\",\"nl\",\"nola\",\"nonprofit\",\"nonsens\",\"norfolk\",\"norm\",\"nvr\",\"oak\",\"oakland\",\"observ\",\"oct\",\"oma\",\"oneworld\",\"ontim\",\"opinion\",\"opposit\",\"orf\",\"orig\",\"outrag\",\"overcharg\",\"owner\",\"pant\",\"partial\",\"patch\",\"paypal\",\"person_walk\",\"phil\",\"pile\",\"plate\",\"port\",\"potenti\",\"prime\",\"princess\",\"problemss\",\"proce\",\"profil\",\"protocol\",\"psp\",\"pump\",\"punta\",\"pure\",\"quicker\",\"quit\",\"randomli\",\"rank\",\"reciev\",\"recoveri\",\"reduc\",\"regard\",\"relax\",\"reli\",\"reopen\",\"rescu\",\"restrict\",\"restroom\",\"resum\",\"retain\",\"retrain\",\"rev\",\"rfxlv\",\"rica\",\"richard\",\"rid\",\"risk\",\"robin\",\"rudest\",\"sabr\",\"sacramento\",\"safari\",\"sandwich\",\"sanit\",\"santa\",\"sayin\",\"sc\",\"scam\",\"scene\",\"sched\",\"scott\",\"scream\",\"sdf\",\"seg\",\"sentiment\",\"sep\",\"seven\",\"sexual\",\"shall\",\"shannon\",\"shift\",\"shouldnt\",\"shv\",\"signal\",\"silli\",\"sing\",\"sm\",\"smallest\",\"smell\",\"smoothli\",\"snowboard\",\"sop\",\"spell\",\"srvc\",\"strang\",\"strategi\",\"subpar\",\"suffer\",\"supposedli\",\"swap\",\"sy\",\"sydnei\",\"tax\",\"tear\",\"temperatur\",\"terrif\",\"than\",\"third\",\"thoma\",\"tide\",\"tired_fac\",\"tn\",\"tom\",\"tomato\",\"tongu\",\"tonit\",\"tool\",\"toronto\",\"touchdown\",\"town\",\"trade\",\"transit\",\"trash\",\"tryin\",\"tucson\",\"txt\",\"um\",\"umm\",\"unawar\",\"under\",\"understat\",\"uniform\",\"unpleas\",\"usernam\",\"valentin\",\"version\",\"vile\",\"visibl\",\"whenev\",\"wipe\",\"wit\",\"wknd\",\"wn\",\"woo\",\"xelbon\",\"xx\",\"yest\",\"yuma\",\"zurich\",\"abus\",\"accomplish\",\"achiev\",\"addtl\",\"adjust\",\"affili\",\"aggress\",\"ain\",\"al\",\"altitud\",\"approx\",\"apr\",\"apt\",\"argument\",\"arizona\",\"arm\",\"arrog\",\"atx\",\"auh\",\"author\",\"av\",\"awak\",\"awww\",\"backlog\",\"backpack\",\"basket\",\"bat\",\"behav\",\"behavior\",\"beliz\",\"bestfriend\",\"bewar\",\"beyond\",\"billion\",\"bkk\",\"blank\",\"blatant\",\"blew\",\"blown\",\"blue_circl\",\"bois\",\"border\",\"boss\",\"bougth\",\"bout\",\"brag\",\"brave\",\"breast\",\"bright\",\"bueno\",\"build\",\"bull\",\"bum\",\"bussei\",\"buyer\",\"bv\",\"bye\",\"calendar\",\"cali\",\"cancer\",\"capac\",\"captiv\",\"captur\",\"cargo\",\"carpet\",\"cattl\",\"cb\",\"cdg\",\"cellphon\",\"centr\",\"centric\",\"charm\",\"chart\",\"checkpoint\",\"cherri\",\"chg\",\"christma\",\"citizen\",\"cll\",\"clown\",\"cnx\",\"cnxn\",\"codeshar\",\"coke\",\"columbia\",\"comedi\",\"concept\",\"congratul\",\"consol\",\"construct\",\"convo\",\"coordin\",\"court\",\"coverag\",\"cp\",\"cr\",\"cruel\",\"cultur\",\"danger\",\"dare\",\"dawn\",\"deadhead\",\"deaf\",\"dean\",\"declin\",\"dedic\",\"demand\",\"derrick\",\"determin\",\"devalu\",\"dick\",\"dig\",\"dine\",\"directtv\",\"discontinu\",\"dislik\",\"dismiss\",\"disput\",\"distanc\",\"distribut\",\"divid\",\"doctor\",\"downhil\",\"downtown\",\"dread\",\"dub\",\"dublin\",\"dude\",\"duffl\",\"durango\",\"dw\",\"eagl\",\"eco\",\"econ\",\"edit\",\"empathi\",\"encourag\",\"endless\",\"enjoy\",\"enrol\",\"entitl\",\"entri\",\"envoi\",\"err\",\"ethiopia\",\"etihad\",\"evouch\",\"evri\",\"expedia\",\"eyw\",\"fake\",\"faulti\",\"fe\",\"feder\",\"fella\",\"ferri\",\"few\",\"fewer\",\"fianc\",\"fiance\",\"flatter\",\"flgt\",\"flower\",\"fold\",\"forgotten\",\"fourth\",\"franc\",\"french\",\"fresno\",\"frigid\",\"front\",\"frontier\",\"frontrunn\",\"fu\",\"fucken\",\"furiou\",\"furrow\",\"gb\",\"gee\",\"geek\",\"geg\",\"gestur\",\"gettin\",\"glasgow\",\"globe\",\"gmail\",\"gng\",\"gnv\",\"goin\",\"gotcha\",\"grace\",\"gracia\",\"grade\",\"graduat\",\"grandfath\",\"greatest\",\"grk\",\"gso\",\"guidelin\",\"gun\",\"gx\",\"halfwai\",\"hangar\",\"happier\",\"hardwork\",\"harsh\",\"hashtag\",\"hay\",\"health\",\"heaven\",\"hemispher\",\"hidden\",\"highlight\",\"hint\",\"histor\",\"ho\",\"hole\",\"homeless\",\"hometown\",\"honei\",\"hoop\",\"hotlin\",\"hp\",\"hrl\",\"humili\",\"huntsvil\",\"imo\",\"inabl\",\"inaccur\",\"inbox\",\"incl\",\"individu\",\"inevit\",\"inferior\",\"inflat\",\"instal\",\"instrument\",\"insuffici\",\"intellig\",\"intercom\",\"interior\",\"internation\",\"into\",\"invalid\",\"invest\",\"irrespons\",\"ish\",\"isi\",\"jacqui\",\"jane\",\"janet\",\"jason\",\"jeokoo\",\"jerk\",\"jj\",\"joanna\",\"justifi\",\"jx\",\"kim\",\"kindl\",\"knee\",\"knowledg\",\"koa\",\"lag\",\"lai\",\"larger\",\"ld\",\"le\",\"lf\",\"likelihood\",\"lil\",\"lindsei\",\"livid\",\"lj\",\"lo\",\"logo\",\"lone\",\"loop\",\"lv\",\"lynn\",\"madrid\",\"maimi\",\"maintain\",\"manch\",\"marathon\",\"mass\",\"mastercard\",\"math\",\"mb\",\"mc\",\"mce\",\"meantim\",\"men\",\"merci\",\"metro\",\"mht\",\"mike\",\"minneapoli\",\"mo\",\"modifi\",\"mood\",\"moon\",\"mous\",\"movement\",\"mph\",\"ms\",\"multi\",\"murder\",\"mv\",\"mvp\",\"myer\",\"mysteri\",\"nbr\",\"neg\",\"neighbor\",\"nephew\",\"newli\",\"nicest\",\"nm\",\"nobodi\",\"nonexist\",\"noooo\",\"nothin\",\"nowher\",\"nt\",\"nw\",\"nxt\",\"oc\",\"occas\",\"occupi\",\"offload\",\"ohar\",\"ojrsdwpkk\",\"ont\",\"op\",\"opal\",\"orbitz\",\"ordeal\",\"oti\",\"ourselv\",\"outdat\",\"overflight\",\"overflow\",\"oversea\",\"oversold\",\"overwhelm\",\"painless\",\"par\",\"parker\",\"particular\",\"paso\",\"path\",\"patron\",\"pattern\",\"paulo\",\"peac\",\"peep\",\"per\",\"perman\",\"permiss\",\"perth\",\"phi\",\"pia\",\"pig\",\"pin\",\"ping\",\"pink\",\"plagu\",\"pleasantli\",\"plitt\",\"plough\",\"plow\",\"pn\",\"pnr\",\"pointless\",\"polit\",\"portion\",\"preciat\",\"preciou\",\"precipit\",\"pregnant\",\"prem\",\"presid\",\"pretend\",\"previous\",\"princ\",\"principl\",\"privileg\",\"product\",\"promptli\",\"prop\",\"pst\",\"pu\",\"qanta\",\"rachel\",\"radio\",\"ramper\",\"rcvd\",\"reader\",\"realist\",\"realiti\",\"rearrang\",\"reassign\",\"rec\",\"recheck\",\"recruit\",\"reek\",\"regardless\",\"region\",\"registr\",\"reissu\",\"relai\",\"relief\",\"repeatedli\",\"reput\",\"research\",\"resourc\",\"retir\",\"retweet\",\"reunit\",\"revers\",\"ripoff\",\"rmpkogwu\",\"rn\",\"robert\",\"royal\",\"rubber\",\"rumor\",\"rx\",\"sadden\",\"sao\",\"sauc\",\"saver\",\"sb\",\"scenario\",\"scheme\",\"scollegelondon\",\"sean\",\"season\",\"seatac\",\"secret\",\"sensit\",\"seri\",\"shade\",\"shake\",\"shrug\",\"singapor\",\"sjo\",\"sleet\",\"slide\",\"slightli\",\"slip\",\"smisek\",\"snag\",\"snowstorm\",\"soft\",\"solo\",\"sometim\",\"somewher\",\"sooo\",\"soooo\",\"soul\",\"sparkl\",\"specifi\",\"spoil\",\"sport\",\"sprint\",\"squar\",\"srq\",\"srsly\",\"staffer\",\"stall\",\"stare\",\"storag\",\"stow\",\"strai\",\"strip\",\"strongli\",\"sub\",\"subsequ\",\"sudden\",\"sun_with_fac\",\"sunglass\",\"suppli\",\"surli\",\"surviv\",\"suspect\",\"sweetheart\",\"sympathet\",\"syracus\",\"ta\",\"tailwind\",\"target\",\"tast\",\"taylor\",\"tb\",\"thankyou\",\"thanx\",\"thu\",\"tokyo\",\"toledo\",\"tortur\",\"tour\",\"trace\",\"tree\",\"trick\",\"tripl\",\"troubleshoot\",\"trvl\",\"tu\",\"tul\",\"tune\",\"turnaround\",\"twin\",\"typo\",\"univers\",\"unrel\",\"untz\",\"unusu\",\"unveil\",\"unwil\",\"ut\",\"utterli\",\"uvf\",\"vaca\",\"vallarta\",\"vc\",\"veer\",\"vegan\",\"verbal\",\"via\",\"vice\",\"vital\",\"vm\",\"voicemail\",\"void\",\"vomit\",\"vote\",\"vw\",\"warmth\",\"wave\",\"wbzorrn\",\"wc\",\"wd\",\"westchest\",\"whatev\",\"whoa\",\"wichita\",\"wld\",\"woaw\",\"woke\",\"woven\",\"wrap\",\"xc\",\"xdaili\",\"xl\",\"xna\",\"xweekli\",\"youth\",\"za\",\"zy\",\"zz\",\"aal\",\"abi\",\"abroad\",\"absorb\",\"acc\",\"accompani\",\"accru\",\"accus\",\"acquir\",\"adam\",\"adjac\",\"ador\",\"adult\",\"adv\",\"afraid\",\"agnt\",\"ai\",\"ail\",\"aim\",\"airborn\",\"ala\",\"alcohol\",\"alex\",\"allerg\",\"allevi\",\"along\",\"alt\",\"amateur\",\"amateurish\",\"amazingli\",\"amazon\",\"amen\",\"amm\",\"analyst\",\"anchorag\",\"andri\",\"android\",\"anim\",\"ann\",\"antigua\",\"anxieti\",\"ap\",\"api\",\"apologis\",\"applaud\",\"approxim\",\"ardent\",\"arent\",\"argentina\",\"arkansa\",\"armi\",\"art\",\"ashlei\",\"asia\",\"asid\",\"associ\",\"asw\",\"ath\",\"atleast\",\"attende\",\"austrian\",\"avert\",\"avi\",\"avon\",\"awhil\",\"awkward\",\"backroad\",\"bait\",\"bake\",\"ban\",\"bandwidth\",\"bangkok\",\"bankruptci\",\"barbara\",\"barclai\",\"barrier\",\"bd\",\"beautifulli\",\"began\",\"behalf\",\"behind\",\"bein\",\"belfast\",\"bellagio\",\"bench\",\"benefici\",\"bergstrom\",\"besid\",\"between\",\"bg\",\"bgm\",\"bgr\",\"bicycl\",\"bigger\",\"bio\",\"birthdat\",\"bite\",\"bizarr\",\"bless\",\"bluman\",\"bm\",\"bohol\",\"bold\",\"bom\",\"bonus\",\"boom\",\"boooo\",\"bora\",\"born\",\"bourbon\",\"boycott\",\"bp\",\"bqn\",\"bravo\",\"brazil\",\"breach\",\"breez\",\"brian\",\"broadwai\",\"brussel\",\"bt\",\"btr\",\"bttr\",\"btwn\",\"bucket\",\"budget\",\"bulkhead\",\"bumper\",\"burbank\",\"burger\",\"buse\",\"busiest\",\"butt\",\"cabl\",\"cach\",\"caffein\",\"cal\",\"camp\",\"cane\",\"canx\",\"cap\",\"career\",\"caribbean\",\"carol\",\"carsl\",\"cebu\",\"cf\",\"cha\",\"chain\",\"chaotic\",\"chapter\",\"char\",\"charger\",\"charl\",\"chief\",\"childish\",\"chip\",\"chk\",\"chkd\",\"chng\",\"chnge\",\"chosen\",\"cincinnati\",\"cite\",\"cking\",\"clarenc\",\"cld\",\"cldnt\",\"closet\",\"clueless\",\"clutch\",\"cng\",\"cockpit\",\"cocktail_glass\",\"colo\",\"colombia\",\"command\",\"commut\",\"compat\",\"compliant\",\"compound\",\"concentr\",\"condescend\",\"condom\",\"conect\",\"consult\",\"contd\",\"context\",\"convey\",\"copilot\",\"corner\",\"counti\",\"courier\",\"cpap\",\"craft\",\"crave\",\"cream\",\"creativ\",\"cri\",\"crimin\",\"css\",\"ctr\",\"cu\",\"curb\",\"curbsid\",\"curios\",\"cycl\",\"da\",\"dakota\",\"dale\",\"dbcvepn\",\"deactiv\",\"debat\",\"debit\",\"dec\",\"decenc\",\"declar\",\"deede\",\"defend\",\"deflat\",\"delayetongu\",\"delici\",\"demo\",\"dentongu\",\"deodor\",\"depress\",\"desert\",\"despic\",\"diabet\",\"dialogu\",\"diamond\",\"dice\",\"dim\",\"dinosaur\",\"disinfect\",\"displeas\",\"dissatisfact\",\"distress\",\"dmd\",\"dn\",\"dnt\",\"doc\",\"doll\",\"dominican\",\"donkei\",\"donut\",\"doo\",\"draft\",\"dramat\",\"dre\",\"dress\",\"dupe\",\"earliest\",\"earlybird\",\"earthquak\",\"eb\",\"ee\",\"effect\",\"eh\",\"elabor\",\"electr\",\"electron\",\"elig\",\"eliz\",\"elm\",\"embassi\",\"emerald\",\"emp\",\"empath\",\"emploi\",\"employ\",\"emv\",\"endlessli\",\"energi\",\"enterpris\",\"entranc\",\"entre\",\"enuf\",\"environ\",\"eofthgaj\",\"erj\",\"escap\",\"etern\",\"everybodi\",\"everywher\",\"evid\",\"exce\",\"exercis\",\"expedi\",\"expos\",\"extent\",\"fab\",\"fairli\",\"fallow\",\"fashion\",\"fate\",\"fax\",\"fd\",\"fece\",\"femal\",\"filthi\",\"finder\",\"finnair\",\"firefox\",\"flashlight\",\"flght\",\"flightedflight\",\"flightledflight\",\"fligt\",\"fligth\",\"flite\",\"flow\",\"flyfi\",\"fm\",\"fo\",\"focus\",\"fool\",\"foolish\",\"foreign\",\"forgiven\",\"formula\",\"frank\",\"frankli\",\"frequenc\",\"fri\",\"friendliest\",\"fritz\",\"fro\",\"fron\",\"fs\",\"ftw\",\"fuk\",\"fulfil\",\"fw\",\"fx\",\"fy\",\"gaga\",\"gainesvil\",\"gal\",\"gangwai\",\"gatwick\",\"gd\",\"geez\",\"gem\",\"geniu\",\"gentleman\",\"genuin\",\"georg\",\"gfc\",\"glove\",\"glowing_star\",\"gluten\",\"goblin\",\"gogh\",\"gogo\",\"gosh\",\"gpu\",\"graciou\",\"grai\",\"grandmoth\",\"grant\",\"graphic\",\"greater\",\"greedi\",\"grimacing_fac\",\"grow\",\"grown\",\"grp\",\"gsp\",\"guidanc\",\"gunna\",\"gxdqortss\",\"gy\",\"hack\",\"hah\",\"hail\",\"hair\",\"handi\",\"handicap\",\"hangup\",\"hannah\",\"havoc\",\"hawaiian\",\"hb\",\"hd\",\"heel\",\"hep\",\"herman\",\"herndon\",\"hf\",\"hh\",\"hmm\",\"hn\",\"hoo\",\"hoot\",\"hormon\",\"horrif\",\"horror\",\"hors\",\"hot_beverag\",\"hotspot\",\"hotter\",\"hs\",\"hsv\",\"ht\",\"hug\",\"humour\",\"hurri\",\"huston\",\"hve\",\"hy\",\"hypocrisi\",\"iberia\",\"iceland\",\"ideal\",\"iflyswa\",\"ih\",\"il\",\"ilc\",\"imma\",\"impati\",\"impend\",\"imperson\",\"inc\",\"incident\",\"inconsider\",\"inconsist\",\"inconvi\",\"india\",\"inept\",\"infuri\",\"injur\",\"innov\",\"inop\",\"inquiri\",\"insight\",\"inspect\",\"instagram\",\"insur\",\"intact\",\"internship\",\"intro\",\"invoic\",\"iowa\",\"ireland\",\"irrop\",\"isp\",\"itin\",\"itself\",\"jackass\",\"jackson\",\"jealou\",\"ji\",\"jim\",\"jimmi\",\"jk\",\"jkf\",\"jm\",\"joe\",\"js\",\"jun\",\"junk\",\"kai\",\"kat\",\"kate\",\"kb\",\"kci\",\"kelsei\",\"kevin\",\"kewl\",\"kf\",\"ki\",\"kiss\",\"kitti\",\"kj\",\"km\",\"knoxvil\",\"korea\",\"kristi\",\"kul\",\"kv\",\"labor\",\"lan\",\"lane\",\"languag\",\"largest\",\"larri\",\"lawsuit\",\"leadership\",\"leagu\",\"leak\",\"led\",\"legaci\",\"legit\",\"lemm\",\"length\",\"lexington\",\"liabl\",\"liar\",\"lift\",\"lima\",\"loan\",\"loaner\",\"lookin\",\"looong\",\"loooooong\",\"lord\",\"loser\",\"loud\",\"lucia\",\"lufthansa\",\"lug\",\"lung\",\"lusaka\",\"lx\",\"mac\",\"madden\",\"makeup\",\"mammoth\",\"maneuv\",\"marshal\",\"master\",\"mate\",\"maui\",\"mde\",\"meaning\",\"meanwhil\",\"medal\",\"meelan\",\"meh\",\"mel\",\"memo\",\"mere\",\"mgr\",\"michel\",\"mideast\",\"midght\",\"milan\",\"minimum\",\"miriam\",\"misfortun\",\"misinform\",\"mistreat\",\"misunderstood\",\"mitchel\",\"mite\",\"mix\",\"ml\",\"mnl\",\"modif\",\"moin\",\"momma\",\"montego\",\"monthli\",\"moodlight\",\"morrow\",\"motel\",\"motion\",\"motto\",\"mountain\",\"mouth\",\"mp\",\"mtongu\",\"myrtl\",\"nail\",\"nap\",\"narita\",\"narrow\",\"navig\",\"naxbu\",\"necess\",\"nerd\",\"newburgh\",\"nigga\",\"nitrogen\",\"nonrefund\",\"nor\",\"norma\",\"nov\",\"num\",\"nvm\",\"obnoxi\",\"obviou\",\"offend\",\"offens\",\"oil\",\"oncoming_fist\",\"oppos\",\"opt\",\"oq\",\"oqukso\",\"orang\",\"oregon\",\"org\",\"orl\",\"os\",\"ot\",\"ottawa\",\"oui\",\"outag\",\"outfit\",\"overh\",\"overhaul\",\"overheard\",\"overload\",\"overpr\",\"oversel\",\"oy\",\"panamerican\",\"pandora\",\"panic\",\"partli\",\"passiv\",\"patrick\",\"pd\",\"pedro\",\"perfectli\",\"perspect\",\"pf\",\"pg\",\"pgh\",\"phenomen\",\"phn\",\"pho\",\"phrase\",\"pita\",\"piti\",\"pitt\",\"platitud\",\"player\",\"plead\",\"pleaseee\",\"plot\",\"plug\",\"popul\",\"portfolio\",\"possess\",\"postcod\",\"postpon\",\"poughkeepsi\",\"pqm\",\"prebook\",\"preflight\",\"press\",\"prev\",\"priceless\",\"printer\",\"priorit\",\"prize\",\"produc\",\"professor\",\"prohibit\",\"prom\",\"provo\",\"publicli\",\"puls\",\"puppi\",\"purple_heart\",\"pv\",\"pvg\",\"pw\",\"qc\",\"qd\",\"qh\",\"quarter\",\"que\",\"queri\",\"quiet\",\"quirki\",\"qw\",\"rage\",\"ramada\",\"raspberryhx\",\"rave\",\"react\",\"reaction\",\"reactiv\",\"rear\",\"reboard\",\"reboot\",\"recap\",\"recogn\",\"reddit\",\"redempt\",\"referr\",\"refrain\",\"refsd\",\"regularli\",\"reject\",\"relev\",\"remedi\",\"remors\",\"reno\",\"repost\",\"req\",\"resend\",\"resort\",\"reunion\",\"reveal\",\"rez\",\"rhonda\",\"ricoh\",\"rifl\",\"rise\",\"rito\",\"rivet\",\"roast\",\"roberto\",\"rocki\",\"roger\",\"roller\",\"rooki\",\"rotten\",\"routin\",\"rtb\",\"ru\",\"rub\",\"rubbish\",\"rum\",\"russia\",\"ruth\",\"saga\",\"salli\",\"samartzi\",\"sampl\",\"sand\",\"saniti\",\"sapphir\",\"sarcasm\",\"sarcast\",\"sass\",\"satisfact\",\"satisfactori\",\"sav\",\"sba\",\"scatter\",\"sch\",\"scienc\",\"scotch\",\"scratch\",\"screenshot\",\"seam\",\"seatbelt\",\"sedholm\",\"senior\",\"sentinel\",\"setup\",\"sh\",\"shampoo\",\"shanghai\",\"shawn\",\"shenanigan\",\"shld\",\"shoddi\",\"shortag\",\"shortcom\",\"shoutout\",\"shuffl\",\"si\",\"sibl\",\"significantli\",\"silenc\",\"silicon\",\"sir\",\"sittin\",\"six\",\"sizer\",\"sj\",\"sjd\",\"skateboard\",\"sked\",\"skin\",\"skip\",\"skycap\",\"sl\",\"sld\",\"sleekmonei\",\"slight\",\"slot\",\"slower\",\"slowest\",\"slowli\",\"smaller\",\"smart\",\"smash\",\"smirkal\",\"smirken\",\"smoke\",\"smoothest\",\"sn\",\"snap\",\"snapchat\",\"sob\",\"solid\",\"somewhat\",\"sooooo\",\"sorta\",\"sour\",\"southern\",\"sp\",\"spectacular\",\"spf\",\"spill\",\"spite\",\"spotti\",\"sprinkl\",\"squawk\",\"stair\",\"standby\",\"startl\",\"starv\",\"steam\",\"steel\",\"steer\",\"steve\",\"sti\",\"sticker\",\"stndby\",\"stoke\",\"stone\",\"store\",\"straight_fac\",\"straighten\",\"stretch\",\"strive\",\"structur\",\"struggl\",\"subscrib\",\"substitut\",\"sue\",\"sunset\",\"sunshin\",\"surround\",\"susan\",\"swamp\",\"swear\",\"sweepstak\",\"swell\",\"swiss\",\"swu\",\"sync\",\"syr\",\"tactic\",\"taiwan\",\"tamara\",\"tammi\",\"tank\",\"tape\",\"tarmack\",\"technolog\",\"teco\",\"televis\",\"ten\",\"tf\",\"thaw\",\"themselv\",\"thirti\",\"thk\",\"thread\",\"thrill\",\"thrown\",\"thy\",\"tim\",\"timco\",\"timeli\",\"tip\",\"tisk\",\"tld\",\"tlh\",\"tmw\",\"tnx\",\"tock\",\"toiletri\",\"toss\",\"tr\",\"transatlant\",\"transf\",\"transpar\",\"traveloc\",\"trend\",\"trial\",\"troubadour\",\"tryna\",\"tulsa\",\"turkish\",\"tweeter\",\"txfd\",\"tyr\",\"ui\",\"uj\",\"un\",\"unaccompani\",\"unanticip\",\"uncal\",\"uncar\",\"uncl\",\"uncontrol\",\"uncool\",\"unimpress\",\"unmonitor\",\"unnecessarili\",\"unorgan\",\"unsaf\",\"unschedul\",\"unspecifi\",\"unsur\",\"unsympathet\",\"upgd\",\"uphold\",\"upload\",\"upstat\",\"uq\",\"urgenc\",\"usd\",\"uu\",\"ux\",\"uxzj\",\"vacai\",\"vallei\",\"variou\",\"vdi\",\"vent\",\"versu\",\"vet\",\"vetr\",\"vhgkitzsaw\",\"vibe\",\"vicki\",\"villag\",\"vineyard\",\"vinyl\",\"violat\",\"virginamerica\",\"virtual\",\"vo\",\"vp\",\"vu\",\"vuelo\",\"vz\",\"waitin\",\"waitlist\",\"wander\",\"ward\",\"warehous\",\"warmer\",\"wat\",\"waving_hand\",\"wayn\",\"weari\",\"western\",\"westjet\",\"whisper\",\"whoever\",\"wht\",\"wine_glass\",\"winston\",\"wire\",\"wkrb\",\"woohoo\",\"workaround\",\"worthi\",\"woulda\",\"wound\",\"wrongfulli\",\"ws\",\"wsj\",\"wudda\",\"wut\",\"wx\",\"xd\",\"yard\",\"yearli\",\"younger\",\"yourself\",\"youv\",\"yummi\",\"yvonn\",\"yw\",\"ywg\",\"yx\",\"yyj\",\"ze\",\"zf\",\"zi\",\"zoom\",\"zq\",\"zr\",\"zv\",\"aaaand\",\"aadavantag\",\"aadv\",\"aai\",\"aakjumxa\",\"aaron\",\"aau\",\"aavvoreph\",\"ab\",\"aback\",\"abassinet\",\"abbrev\",\"abduct\",\"aboout\",\"abound\",\"abprg\",\"absoulut\",\"absurdli\",\"abtwf\",\"abund\",\"abxrq\",\"acarl\",\"acceler\",\"accomid\",\"accumul\",\"acebo\",\"acfqcdq\",\"aci\",\"ack\",\"acosta\",\"acoust\",\"acpt\",\"acquisit\",\"across\",\"actuali\",\"ada\",\"adapt\",\"addition\",\"additon\",\"addr\",\"admin\",\"adress\",\"advan\",\"adventur\",\"advi\",\"advsri\",\"aeroport\",\"aesthet\",\"aex\",\"af\",\"affair\",\"afili\",\"aflam\",\"aforement\",\"african\",\"aft\",\"afteral\",\"afterward\",\"aftr\",\"agfd\",\"agian\",\"agpb\",\"agr\",\"agreement\",\"agum\",\"aha\",\"ahah\",\"ahem\",\"ahhhhh\",\"ahlxhhkiyn\",\"ahoi\",\"aiecraft\",\"aircrft\",\"airlinegav\",\"airportcardio\",\"airpt\",\"airserv\",\"airsid\",\"airspac\",\"airstair\",\"airtran\",\"aitzl\",\"aiyc\",\"aj\",\"ajm\",\"ajz\",\"ak\",\"akron\",\"aktg\",\"alabama\",\"alamo\",\"alan\",\"alarm\",\"alavera\",\"alb\",\"albeit\",\"album\",\"albuqu\",\"align\",\"alison\",\"alist\",\"alittl\",\"alittlebett\",\"allan\",\"allend\",\"allll\",\"allowabl\",\"allreadi\",\"allright\",\"amarillo\",\"ambassador\",\"ambival\",\"amend\",\"ami\",\"amid\",\"amiga\",\"amirit\",\"amiw\",\"amnt\",\"among\",\"amount\",\"amsterdam\",\"amt\",\"amtrak\",\"analyt\",\"anarchi\",\"anderson\",\"aneqxzr\",\"angelo\",\"anger\",\"angl\",\"angriest\",\"angrybird\",\"angst\",\"anna\",\"annamari\",\"anni\",\"annnndddd\",\"annnnddddd\",\"annnnnd\",\"ant\",\"anti\",\"anyhelp\",\"anythin\",\"aoeaeszdlx\",\"aopdtsq\",\"aormfkac\",\"aou\",\"apathet\",\"apathi\",\"apear\",\"apiau\",\"apnea\",\"apostroph\",\"appeal\",\"applaus\",\"appleton\",\"appropro\",\"appt\",\"apron\",\"aprzspxig\",\"aptzpurop\",\"apx\",\"aqa\",\"aquadilla\",\"aqzwecokk\",\"arab\",\"arbitrari\",\"arbitrarili\",\"arc\",\"archaic\",\"arena\",\"argg\",\"argh\",\"aricyq\",\"aros\",\"arpt\",\"artisan\",\"aruna\",\"arvl\",\"asgmnt\",\"ash\",\"asha\",\"assignetongu\",\"assuag\",\"astonished_fac\",\"astoria\",\"asu\",\"asuwx\",\"asyq\",\"atct\",\"atd\",\"ateafnc\",\"atfrkp\",\"athau\",\"att\",\"attain\",\"attdt\",\"attir\",\"attitudi\",\"attndt\",\"atu\",\"atwyifh\",\"auckland\",\"aucsykfuhd\",\"auction\",\"audienc\",\"audio\",\"audit\",\"auditorium\",\"auf\",\"aufm\",\"augjscmolu\",\"aunt\",\"aunti\",\"aurn\",\"aussi\",\"austic\",\"authorit\",\"automobil\",\"autorespons\",\"auzu\",\"availab\",\"aval\",\"avatar\",\"avbdstjuj\",\"avenu\",\"avg\",\"avio\",\"avp\",\"avrtowtyzk\",\"avyqdmpi\",\"awdbw\",\"awesomee\",\"awfulli\",\"awgjkjiiac\",\"awheelchair\",\"awol\",\"awqtln\",\"awrd\",\"ax\",\"axeo\",\"axlqzwvh\",\"axpn\",\"axryeiwzh\",\"aygaoeb\",\"aypyadui\",\"ayyi\",\"azltjhf\",\"aztdaer\",\"bach\",\"backward\",\"backyard\",\"badbadbad\",\"baejet\",\"bafor\",\"baggagefail\",\"bagtag\",\"bail\",\"bailei\",\"baim\",\"baldwin\",\"ballbag\",\"ballin\",\"balloon\",\"balt\",\"banana\",\"bape\",\"barcod\",\"bark\",\"barklai\",\"barnum\",\"barrel\",\"barzegar\",\"bash\",\"basketbal\",\"bass\",\"batman\",\"bayepzkmiz\",\"bbaonx\",\"bbhtlzgh\",\"bbj\",\"bbm\",\"bbzijwfdl\",\"bcn\",\"bcuz\",\"bcwckwtnle\",\"bcz\",\"bdng\",\"bdrxfn\",\"bdtldx\",\"bduauzfhw\",\"bean\",\"beani\",\"bear\",\"bearabl\",\"beareav\",\"beatriz\",\"beautiful\",\"bec\",\"becki\",\"becuas\",\"becuz\",\"begrudgingli\",\"begun\",\"beij\",\"belabor\",\"belief\",\"belliger\",\"belov\",\"below\",\"ben\",\"benadryl\",\"bene\",\"beought\",\"beqotlnugc\",\"berlin\",\"besti\",\"beta\",\"betch\",\"betsi\",\"betterfrown\",\"betti\",\"bettween\",\"bevi\",\"bff\",\"bfpfw\",\"bgbtq\",\"bgtjfmneot\",\"bh\",\"bham\",\"bhjvaa\",\"bhooiyt\",\"bi\",\"bibl\",\"bicep\",\"bid\",\"biggi\",\"bijlxat\",\"bil\",\"bila\",\"billmel\",\"bingo\",\"birder\",\"biscuit\",\"bitchi\",\"bitcoin\",\"bitti\",\"bjnz\",\"bjwgoap\",\"bked\",\"bkmfei\",\"bl\",\"blackish\",\"blacklist\",\"blackmail\",\"blade\",\"blanc\",\"blatantli\",\"blatimor\",\"blazer\",\"bleed\",\"blegh\",\"bleh\",\"blind\",\"blindsid\",\"blizzard\",\"blizzu\",\"bloat\",\"blood\",\"blueti\",\"blwgwa\",\"blx\",\"bmc\",\"bmi\",\"bmij\",\"bmk\",\"bnflhpxtmw\",\"bng\",\"bngpli\",\"boardingpass\",\"boavxi\",\"bobbi\",\"bodi\",\"boggl\",\"boh\",\"boil\",\"bone\",\"bonni\",\"boofin\",\"bookabl\",\"booklet\",\"bool\",\"booo\",\"boost\",\"booster\",\"bootbag\",\"bop\",\"borderlin\",\"bore\",\"borrow\",\"bosnia\",\"boson\",\"botch\",\"bottom\",\"bouncer\",\"boundless\",\"bowl\",\"bozo\",\"bpb\",\"bpdfpp\",\"bq\",\"bqiw\",\"br\",\"bracket\",\"bradlei\",\"brancato\",\"brandi\",\"brcsjbxg\",\"brd\",\"bread\",\"breakdown\",\"breaker\",\"breastfeed\",\"breavement\",\"breezi\",\"brendan\",\"brent\",\"bride\",\"bridesmaid\",\"brief\",\"brighter\",\"bringin\",\"brink\",\"brisk\",\"brittani\",\"briughi\",\"broad\",\"brochur\",\"brood\",\"brooklyn\",\"brotha\",\"brothaaaaaa\",\"brt\",\"bru\",\"bruin\",\"bryant\",\"bsi\",\"bso\",\"bsuxlu\",\"btb\",\"bttgmyn\",\"bttzf\",\"btvpxtzju\",\"btvtb\",\"bubbl\",\"budapest\",\"buggi\",\"built\",\"buis\",\"buj\",\"bulb\",\"bulli\",\"bundl\",\"bur\",\"burden\",\"bureau\",\"burg\",\"burgundi\",\"burlington\",\"burrito\",\"burrough\",\"burst\",\"businessfirst\",\"bussin\",\"bust\",\"butnot\",\"buwjtvuwkm\",\"buyback\",\"buzj\",\"buzz\",\"buzzkil\",\"bvexmcj\",\"bvfaxdubaq\",\"bvl\",\"bvzty\",\"bwahahaha\",\"bxlk\",\"bxwg\",\"byackc\",\"byn\",\"bypass\",\"bz\",\"bze\",\"bzqzqxlaugh\",\"bzwgp\",\"cabaret\",\"cabcel\",\"cac\",\"caf\",\"cafe\",\"cai\",\"cak\",\"calam\",\"calderon\",\"calibr\",\"calm\",\"calv\",\"campaign\",\"campu\",\"canadaair\",\"cancld\",\"candac\",\"candi\",\"candic\",\"canist\",\"canld\",\"captiveaudi\",\"cardhold\",\"caren\",\"carlton\",\"carmen\",\"carolin\",\"carta\",\"cartagena\",\"cartago\",\"cascino\",\"casimir\",\"casual\",\"categori\",\"cathai\",\"cathi\",\"caution\",\"caval\",\"cavan\",\"cave\",\"cbr\",\"cbv\",\"ccndjp\",\"cco\",\"cdj\",\"cdn\",\"cdt\",\"cdzhtyd\",\"ce\",\"ceas\",\"ceeenj\",\"cefa\",\"cehroeurc\",\"celeb\",\"cement\",\"cent\",\"centerl\",\"cesspool\",\"cevi\",\"cfhtk\",\"cfi\",\"cfpohl\",\"cfrlqbe\",\"cfv\",\"cfyhkvb\",\"cfzdjmn\",\"cgfv\",\"cgreat\",\"cgroup\",\"cgwe\",\"chalk\",\"champagn\",\"championship\",\"changer\",\"chantilli\",\"chaperon\",\"chapman\",\"charac\",\"character\",\"chariot\",\"charlot\",\"chath\",\"chd\",\"cheapest\",\"checker\",\"chedul\",\"cheek\",\"cheesi\",\"cheez\",\"chef\",\"chemistri\",\"chequ\",\"chewei\",\"chgd\",\"chge\",\"chging\",\"chgy\",\"chilli\",\"chines\",\"chipper\",\"chkin\",\"chking\",\"chkout\",\"chl\",\"chock\",\"choppi\",\"choppiest\",\"choxkpjp\",\"christin\",\"chronolog\",\"chuckhol\",\"church\",\"churn\",\"ci\",\"cid\",\"cigarett\",\"cih\",\"cinnabon\",\"circuit\",\"circul\",\"civil\",\"cjg\",\"cjsvssqf\",\"cju\",\"ckg\",\"ckin\",\"cl\",\"clarion\",\"clarita\",\"classic\",\"classiq\",\"claudia\",\"cleanli\",\"clearanc\",\"clgiu\",\"clifton\",\"clincher\",\"cling\",\"clo\",\"clob\",\"clockwork\",\"clog\",\"closur\",\"clu\",\"club_\",\"clunki\",\"clusterfuck\",\"clvlhfguzw\",\"cm\",\"cmjriwop\",\"cmo\",\"cncdld\",\"cnceld\",\"cncld\",\"cncled\",\"cnctl\",\"coathang\",\"cockroach\",\"coffeemak\",\"coffin\",\"coin\",\"colder\",\"coldli\",\"cole\",\"collid\",\"colombian\",\"colonist\",\"coloss\",\"colour\",\"columbian\",\"coma\",\"comb\",\"combat\",\"combo\",\"comcast\",\"comed\",\"comedian\",\"comen\",\"comic\",\"comin\",\"commenc\",\"commend\",\"commiss\",\"communist\",\"compact\",\"comparison\",\"compart\",\"compassion\",\"complex\",\"complt\",\"compton\",\"con\",\"concierg\",\"concret\",\"cond\",\"condescens\",\"condo\",\"condol\",\"config\",\"confront\",\"congest\",\"conjunct\",\"conn\",\"connectfor\",\"connectin\",\"connectn\",\"connet\",\"connex\",\"connolli\",\"consequ\",\"constitut\",\"consumpt\",\"contac\",\"contactless\",\"contagi\",\"contempt\",\"contend\",\"contractor\",\"contradictori\",\"contribut\",\"conv\",\"convei\",\"conveyor\",\"cooker\",\"cooler\",\"cop\",\"copa\",\"copai\",\"copx\",\"core\",\"cori\",\"corni\",\"correl\",\"correspond\",\"corrupt\",\"coshar\",\"cosmet\",\"cough\",\"counterpart\",\"countless\",\"courrier\",\"courtnei\",\"courtsei\",\"covert\",\"cowardli\",\"cowboi\",\"cowgirl\",\"cozi\",\"cpu\",\"cpypgfnd\",\"cpzb\",\"cqmm\",\"crabbi\",\"cram\",\"crape\",\"crappiest\",\"crate\",\"crawl\",\"credenti\",\"credibl\",\"crfrwpc\",\"crib\",\"cricket\",\"cristian\",\"criteria\",\"critic\",\"crj\",\"crook\",\"cross_mark\",\"crosswind\",\"crossword\",\"crucial\",\"crumb\",\"crutch\",\"cruz\",\"crw\"],\"x1\":{\"__ndarray__\":\"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\",\"dtype\":\"float32\",\"order\":\"little\",\"shape\":[5002]},\"x2\":{\"__ndarray__\":\"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\",\"dtype\":\"float32\",\"order\":\"little\",\"shape\":[5002]}},\"selected\":{\"id\":\"1129\"},\"selection_policy\":{\"id\":\"1128\"}},\"id\":\"1108\",\"type\":\"ColumnDataSource\"},{\"attributes\":{},\"id\":\"1100\",\"type\":\"WheelZoomTool\"},{\"attributes\":{},\"id\":\"1126\",\"type\":\"BasicTickFormatter\"}],\"root_ids\":[\"1080\"]},\"title\":\"Bokeh Application\",\"version\":\"2.2.1\"}};\n var render_items = [{\"docid\":\"80e9ed8a-f6da-4f95-96ff-225896cf26f1\",\"root_ids\":[\"1080\"],\"roots\":{\"1080\":\"e3920f6f-400d-46f8-9372-7900482539e9\"}}];\n root.Bokeh.embed.embed_items_notebook(docs_json, render_items);\n\n }\n if (root.Bokeh !== undefined) {\n embed_document(root);\n } else {\n var attempts = 0;\n var timer = setInterval(function(root) {\n if (root.Bokeh !== undefined) {\n clearInterval(timer);\n embed_document(root);\n } else {\n attempts++;\n if (attempts > 100) {\n clearInterval(timer);\n console.log(\"Bokeh: ERROR: Unable to run BokehJS code because BokehJS library is missing\");\n }\n }\n }, 10, root)\n }\n})(window);", - "application/vnd.bokehjs_exec.v0+json": "" - }, - "metadata": { - "application/vnd.bokehjs_exec.v0+json": { - "id": "1080" - } - }, - "output_type": "display_data" + "cell_type": "code", + "metadata": { + "ExecuteTime": { + "end_time": "2021-04-05T15:55:20.282440Z", + "start_time": "2021-04-05T15:55:20.162442Z" + }, + "id": "wWbpD19Dz9ku" + }, + "source": [ + "p = figure(tools=\"pan,wheel_zoom,reset,save\",\n", + " toolbar_location=\"above\",\n", + " title=\"vector T-SNE for most polarized words\")\n", + "\n", + "source = ColumnDataSource(data=dict(x1=words_top_ted_tsne[:,0],\n", + " x2=words_top_ted_tsne[:,1],\n", + " names=Text.vocab.itos,\n", + " color=colorlist))\n", + "\n", + "p.scatter(x=\"x1\", y=\"x2\", size=8, source=source, fill_color=\"color\")\n", + "\n", + "word_labels = LabelSet(x=\"x1\", y=\"x2\", text=\"names\", y_offset=6,\n", + " text_font_size=\"8pt\", text_color=\"#555555\",\n", + " source=source, text_align='center',render_mode='canvas')\n", + "p.add_layout(word_labels)\n", + "\n", + "show(p)" + ], + "execution_count": null, + "outputs": [] } - ] - } - ] + ] } \ No newline at end of file