├── app ├── __init__.py ├── schema.py ├── models.py ├── config.py ├── encoders.py ├── db.py ├── encrypt.py ├── main.py ├── ml.py └── encrypted │ └── astradb_connect.zip ├── ai-api.code-workspace ├── pyvenv.cfg ├── requirements.txt ├── entrypoint.sh ├── README.md ├── pipelines ├── encrypt.yaml ├── decrypt.yaml └── ai-model-download.yaml ├── Dockerfile ├── nbs ├── 1 - Download Datasets.ipynb ├── encrypt_module.ipynb ├── Encryption.ipynb ├── 2 - Download Datasets & Unzip.ipynb └── 4 - Convert Dataset into Vectors.ipynb ├── .gitignore └── LICENSE /app/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ai-api.code-workspace: -------------------------------------------------------------------------------- 1 | { 2 | "folders": [ 3 | { 4 | "path": "." 5 | } 6 | ] 7 | } -------------------------------------------------------------------------------- /app/schema.py: -------------------------------------------------------------------------------- 1 | from pydantic import BaseModel 2 | 3 | class Query(BaseModel): 4 | q: str -------------------------------------------------------------------------------- /pyvenv.cfg: -------------------------------------------------------------------------------- 1 | home = /Library/Frameworks/Python.framework/Versions/3.9/bin 2 | include-system-site-packages = false 3 | version = 3.9.7 4 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | cassandra-driver 2 | cryptography 3 | fastapi 4 | gunicorn 5 | jupyter 6 | pandas 7 | pypyr 8 | python-dotenv 9 | tensorflow 10 | uvicorn 11 | boto3 -------------------------------------------------------------------------------- /entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | RUN_PORT=${PORT:-8000} 4 | 5 | /opt/venv/bin/gunicorn --worker-tmp-dir /dev/shm -k uvicorn.workers.UvicornWorker --bind "0.0.0.0:${RUN_PORT}" app.main:app -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # AI as an API Course Reference 2 | This repository is the exact code used in the course. For the complete & most up to date project go to https://github.com/codingforentrepreneurs/AI-as-an-API 3 | 4 | The final working (and production version) of the code is [here](https://github.com/codingforentrepreneurs/AI-as-an-API). 5 | -------------------------------------------------------------------------------- /pipelines/encrypt.yaml: -------------------------------------------------------------------------------- 1 | steps: 2 | - name: pypyr.steps.pyimport 3 | in: 4 | pyImport: | 5 | from app import encrypt 6 | - name: pypyr.steps.set 7 | in: 8 | set: 9 | toEncrypt: 10 | - input_dir: app/ignored 11 | output_dir: app/encrypted 12 | - name: pypyr.steps.py 13 | run: !py encrypt.encrypt_dir(i["input_dir"], i["output_dir"]) 14 | foreach: "{toEncrypt}" -------------------------------------------------------------------------------- /pipelines/decrypt.yaml: -------------------------------------------------------------------------------- 1 | steps: 2 | - name: pypyr.steps.pyimport 3 | in: 4 | pyImport: | 5 | from app import encrypt 6 | - name: pypyr.steps.set 7 | in: 8 | set: 9 | toDecrypt: 10 | - secured_dir: app/encrypted 11 | output_dir: app/decrypted 12 | - name: pypyr.steps.py 13 | run: !py encrypt.decrypt_dir(i["secured_dir"], i["output_dir"]) 14 | foreach: "{toDecrypt}" -------------------------------------------------------------------------------- /app/models.py: -------------------------------------------------------------------------------- 1 | import uuid 2 | from cassandra.cqlengine import columns 3 | from cassandra.cqlengine.models import Model 4 | 5 | 6 | class SMSInference(Model): 7 | __keyspace__ = "spam_inferences" 8 | uuid = columns.UUID(primary_key=True, default=uuid.uuid1) # uuid.uuid1 -> timestamp 9 | query = columns.Text() 10 | label = columns.Text() 11 | confidence = columns.Float() 12 | model_version = columns.Text(default='v1') -------------------------------------------------------------------------------- /app/config.py: -------------------------------------------------------------------------------- 1 | import os 2 | from functools import lru_cache 3 | from pydantic import BaseSettings, Field 4 | 5 | 6 | os.environ['CQLENG_ALLOW_SCHEMA_MANAGEMENT'] = '1' 7 | 8 | class Settings(BaseSettings): 9 | aws_access_key_id: str = None 10 | aws_secret_access_key: str = None 11 | db_client_id: str = Field(..., env="ASTRA_DB_CLIENT_ID") 12 | db_client_secret: str = Field(..., env="ASTRA_DB_CLIENT_SECRET") 13 | 14 | class Config: 15 | env_file = '.env' 16 | 17 | 18 | @lru_cache 19 | def get_settings(): 20 | return Settings() -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM codingforentrepreneurs/python:3.9-webapp-cassandra 2 | 3 | COPY .env /app/.env 4 | COPY ./app /app/app 5 | COPY ./requirements.txt /app/requirements.txt 6 | COPY ./entrypoint.sh /app/entrypoint.sh 7 | COPY ./pipelines /app/pipelines/ 8 | 9 | WORKDIR /app 10 | 11 | RUN chmod +x entrypoint.sh 12 | 13 | 14 | RUN python3 -m venv /opt/venv && /opt/venv/bin/python -m pip install -r requirements.txt 15 | 16 | RUN /opt/venv/bin/python -m pypyr /app/pipelines/ai-model-download 17 | 18 | RUN /opt/venv/bin/python -m pypyr /app/pipelines/decrypt 19 | 20 | CMD [ "./entrypoint.sh" ] -------------------------------------------------------------------------------- /app/encoders.py: -------------------------------------------------------------------------------- 1 | import json 2 | import numpy as np 3 | 4 | class NumpyEncoder(json.JSONEncoder): 5 | """ Special json encoder for numpy types """ 6 | def default(self, obj): 7 | if isinstance(obj, np.integer): 8 | return int(obj) 9 | elif isinstance(obj, np.floating): 10 | return float(obj) 11 | elif isinstance(obj, np.ndarray): 12 | return obj.tolist() 13 | return json.JSONEncoder.default(self, obj) 14 | 15 | 16 | 17 | def encode_to_json(data, as_py=True): 18 | encoded = json.dumps(data, cls=NumpyEncoder) 19 | if as_py: 20 | return json.loads(encoded) 21 | return encoded -------------------------------------------------------------------------------- /app/db.py: -------------------------------------------------------------------------------- 1 | import pathlib 2 | from . import config 3 | from cassandra.cluster import Cluster 4 | from cassandra.auth import PlainTextAuthProvider 5 | from cassandra.cqlengine import connection 6 | 7 | BASE_DIR = pathlib.Path(__file__).resolve().parent 8 | SOURCE_DIR = BASE_DIR / 'ignored' 9 | if not SOURCE_DIR.exists(): 10 | SOURCE_DIR = BASE_DIR / 'decrypted' 11 | 12 | CLUSTER_BUNDLE = str( SOURCE_DIR / 'astradb_connect.zip') 13 | 14 | settings = config.get_settings() 15 | 16 | ASTRA_DB_CLIENT_ID = settings.db_client_id 17 | ASTRA_DB_CLIENT_SECRET = settings.db_client_secret 18 | 19 | 20 | def get_cluster(): 21 | cloud_config= { 22 | 'secure_connect_bundle': CLUSTER_BUNDLE 23 | } 24 | auth_provider = PlainTextAuthProvider(ASTRA_DB_CLIENT_ID, ASTRA_DB_CLIENT_SECRET) 25 | return Cluster(cloud=cloud_config, auth_provider=auth_provider) 26 | 27 | 28 | def get_session(): 29 | cluster = get_cluster() 30 | session = cluster.connect() 31 | connection.register_connection(str(session), session=session) 32 | connection.set_default_connection(str(session)) 33 | return session -------------------------------------------------------------------------------- /pipelines/ai-model-download.yaml: -------------------------------------------------------------------------------- 1 | context_parser: pypyr.parser.keyvaluepairs 2 | steps: 3 | - name: pypyr.steps.contextsetf 4 | in: 5 | contextSetf: 6 | local_dest_dir: models/spam-sms 7 | file_keys: [ 8 | "exports/spam-sms/spam-classifer-metadata.json", 9 | "exports/spam-sms/spam-classifer-tokenizer.json", 10 | "exports/spam-sms/spam-model.h5", 11 | ] 12 | - name: pypyr.steps.py 13 | in: 14 | py: | 15 | import boto3 16 | import os 17 | import pathlib 18 | from dotenv import load_dotenv 19 | load_dotenv() 20 | dest_path = pathlib.Path(local_dest_dir).resolve() 21 | dest_path.mkdir(exist_ok=True, parents=True) 22 | session = boto3.session.Session() 23 | bucket_name = os.environ.get("BUCKET_NAME") 24 | region = os.environ.get("REGION_NAME") 25 | endpoint_url = os.environ.get("ENDPOINT_URL") or None 26 | client = session.client('s3', region_name=region, endpoint_url=endpoint_url) 27 | for key in file_keys: 28 | fname = pathlib.Path(key).name 29 | dl_path = dest_path / fname 30 | client.download_file(bucket_name, key, str(dl_path)) -------------------------------------------------------------------------------- /app/encrypt.py: -------------------------------------------------------------------------------- 1 | import pathlib 2 | import os 3 | from cryptography.fernet import Fernet 4 | from dotenv import load_dotenv 5 | 6 | load_dotenv() 7 | 8 | ENCRYPTION_KEY = os.environ.get("ENCRYPTION_KEY") 9 | 10 | def generate_key(): 11 | return Fernet.generate_key().decode("UTF-8") 12 | 13 | 14 | def encrypt_dir(input_dir, output_dir): 15 | key = ENCRYPTION_KEY 16 | if not key: 17 | raise Exception("ENCRYPTION_KEY is not found") 18 | fer = Fernet(key) # f"{}:" 19 | input_dir = pathlib.Path(input_dir) 20 | output_dir = pathlib.Path(output_dir) 21 | output_dir.mkdir(exist_ok=True, parents=True) 22 | for path in input_dir.glob("*"): 23 | _path_bytes = path.read_bytes() # open(filepath, 'rb') 24 | data = fer.encrypt(_path_bytes) 25 | rel_path = path.relative_to(input_dir) 26 | dest_path = output_dir / rel_path 27 | dest_path.write_bytes(data) 28 | 29 | 30 | def decrypt_dir(input_dir, output_dir): 31 | key = ENCRYPTION_KEY 32 | if not key: 33 | raise Exception("ENCRYPTION_KEY is not found") 34 | fer = Fernet(key) # f"{}:" 35 | input_dir = pathlib.Path(input_dir) 36 | output_dir = pathlib.Path(output_dir) 37 | output_dir.mkdir(exist_ok=True, parents=True) 38 | for path in input_dir.glob("*"): 39 | _path_bytes = path.read_bytes() # open(filepath, 'rb') 40 | data = fer.decrypt(_path_bytes) 41 | rel_path = path.relative_to(input_dir) 42 | dest_path = output_dir / rel_path 43 | dest_path.write_bytes(data) 44 | 45 | -------------------------------------------------------------------------------- /nbs/1 - Download Datasets.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 11, 6 | "id": "82cdd096", 7 | "metadata": {}, 8 | "outputs": [], 9 | "source": [ 10 | "import pathlib\n", 11 | "\n", 12 | "BASE_DIR = pathlib.Path().resolve().parent\n", 13 | "DATASET_DIR = BASE_DIR / \"datasets\"\n", 14 | "ZIPS_DIR = DATASET_DIR / 'zips'\n", 15 | "ZIPS_DIR.mkdir(exist_ok=True, parents=True)\n", 16 | "\n", 17 | "SPAM_SMS_ZIP_PATH = ZIPS_DIR / \"sms-spam-dataset.zip\"\n", 18 | "SPAM_YOUTUBE_ZIP_PATH = ZIPS_DIR / \"youtube-spam-dataset.zip\"" 19 | ] 20 | }, 21 | { 22 | "cell_type": "code", 23 | "execution_count": 13, 24 | "id": "60828e1b", 25 | "metadata": {}, 26 | "outputs": [], 27 | "source": [ 28 | "SMS_SPAM_ZIP = \"https://archive.ics.uci.edu/ml/machine-learning-databases/00228/smsspamcollection.zip\"\n", 29 | "YOUTUBE_SPAM_ZIP = \"https://archive.ics.uci.edu/ml/machine-learning-databases/00380/YouTube-Spam-Collection-v1.zip\"" 30 | ] 31 | }, 32 | { 33 | "cell_type": "code", 34 | "execution_count": 14, 35 | "id": "13a8f781", 36 | "metadata": {}, 37 | "outputs": [ 38 | { 39 | "name": "stdout", 40 | "output_type": "stream", 41 | "text": [ 42 | " % Total % Received % Xferd Average Speed Time Time Time Current\n", 43 | " Dload Upload Total Spent Left Speed\n", 44 | "100 198k 100 198k 0 0 31165 0 0:00:06 0:00:06 --:--:-- 45455 0 0:00:18 0:00:05 0:00:13 13221\n", 45 | " % Total % Received % Xferd Average Speed Time Time Time Current\n", 46 | " Dload Upload Total Spent Left Speed\n", 47 | "100 159k 100 159k 0 0 49045 0 0:00:03 0:00:03 --:--:-- 49030\n" 48 | ] 49 | } 50 | ], 51 | "source": [ 52 | "!curl $SMS_SPAM_ZIP -o $SPAM_SMS_ZIP_PATH\n", 53 | "\n", 54 | "!curl $YOUTUBE_SPAM_ZIP -o $SPAM_YOUTUBE_ZIP_PATH " 55 | ] 56 | }, 57 | { 58 | "cell_type": "code", 59 | "execution_count": null, 60 | "id": "31b8c9ae", 61 | "metadata": {}, 62 | "outputs": [], 63 | "source": [] 64 | } 65 | ], 66 | "metadata": { 67 | "kernelspec": { 68 | "display_name": "Python 3 (ipykernel)", 69 | "language": "python", 70 | "name": "python3" 71 | }, 72 | "language_info": { 73 | "codemirror_mode": { 74 | "name": "ipython", 75 | "version": 3 76 | }, 77 | "file_extension": ".py", 78 | "mimetype": "text/x-python", 79 | "name": "python", 80 | "nbconvert_exporter": "python", 81 | "pygments_lexer": "ipython3", 82 | "version": "3.9.7" 83 | } 84 | }, 85 | "nbformat": 4, 86 | "nbformat_minor": 5 87 | } 88 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | app/ignored/ 2 | app/decrypted/ 3 | models/ 4 | *.pkl 5 | datasets/exports/*.json 6 | .DS_Store 7 | datasets/spam-classifier/ 8 | datasets/zips/ 9 | bin/ 10 | etc/ 11 | include/ 12 | share/ 13 | 14 | # Byte-compiled / optimized / DLL files 15 | __pycache__/ 16 | *.py[cod] 17 | *$py.class 18 | 19 | # C extensions 20 | *.so 21 | 22 | # Distribution / packaging 23 | .Python 24 | build/ 25 | develop-eggs/ 26 | dist/ 27 | downloads/ 28 | eggs/ 29 | .eggs/ 30 | lib/ 31 | lib64/ 32 | parts/ 33 | sdist/ 34 | var/ 35 | wheels/ 36 | share/python-wheels/ 37 | *.egg-info/ 38 | .installed.cfg 39 | *.egg 40 | MANIFEST 41 | 42 | # PyInstaller 43 | # Usually these files are written by a python script from a template 44 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 45 | *.manifest 46 | *.spec 47 | 48 | # Installer logs 49 | pip-log.txt 50 | pip-delete-this-directory.txt 51 | 52 | # Unit test / coverage reports 53 | htmlcov/ 54 | .tox/ 55 | .nox/ 56 | .coverage 57 | .coverage.* 58 | .cache 59 | nosetests.xml 60 | coverage.xml 61 | *.cover 62 | *.py,cover 63 | .hypothesis/ 64 | .pytest_cache/ 65 | cover/ 66 | 67 | # Translations 68 | *.mo 69 | *.pot 70 | 71 | # Django stuff: 72 | *.log 73 | local_settings.py 74 | db.sqlite3 75 | db.sqlite3-journal 76 | 77 | # Flask stuff: 78 | instance/ 79 | .webassets-cache 80 | 81 | # Scrapy stuff: 82 | .scrapy 83 | 84 | # Sphinx documentation 85 | docs/_build/ 86 | 87 | # PyBuilder 88 | .pybuilder/ 89 | target/ 90 | 91 | # Jupyter Notebook 92 | .ipynb_checkpoints 93 | 94 | # IPython 95 | profile_default/ 96 | ipython_config.py 97 | 98 | # pyenv 99 | # For a library or package, you might want to ignore these files since the code is 100 | # intended to run in multiple environments; otherwise, check them in: 101 | # .python-version 102 | 103 | # pipenv 104 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 105 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 106 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 107 | # install all needed dependencies. 108 | #Pipfile.lock 109 | 110 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow 111 | __pypackages__/ 112 | 113 | # Celery stuff 114 | celerybeat-schedule 115 | celerybeat.pid 116 | 117 | # SageMath parsed files 118 | *.sage.py 119 | 120 | # Environments 121 | .env 122 | .venv 123 | env/ 124 | venv/ 125 | ENV/ 126 | env.bak/ 127 | venv.bak/ 128 | 129 | # Spyder project settings 130 | .spyderproject 131 | .spyproject 132 | 133 | # Rope project settings 134 | .ropeproject 135 | 136 | # mkdocs documentation 137 | /site 138 | 139 | # mypy 140 | .mypy_cache/ 141 | .dmypy.json 142 | dmypy.json 143 | 144 | # Pyre type checker 145 | .pyre/ 146 | 147 | # pytype static type analyzer 148 | .pytype/ 149 | 150 | # Cython debug symbols 151 | cython_debug/ -------------------------------------------------------------------------------- /app/main.py: -------------------------------------------------------------------------------- 1 | import os 2 | import pathlib 3 | from typing import Optional 4 | from fastapi import FastAPI 5 | from fastapi.responses import StreamingResponse 6 | 7 | from cassandra.query import SimpleStatement 8 | from cassandra.cqlengine.management import sync_table 9 | 10 | from . import ( 11 | config, 12 | db, 13 | models, 14 | ml, 15 | schema 16 | ) 17 | 18 | app = FastAPI() 19 | settings = config.get_settings() 20 | 21 | BASE_DIR = pathlib.Path(__file__).resolve().parent 22 | 23 | MODEL_DIR = BASE_DIR.parent / "models" 24 | SMS_SPAM_MODEL_DIR = MODEL_DIR / "spam-sms" 25 | MODEL_PATH = SMS_SPAM_MODEL_DIR / "spam-model.h5" 26 | TOKENIZER_PATH = SMS_SPAM_MODEL_DIR / "spam-classifer-tokenizer.json" 27 | METADATA_PATH = SMS_SPAM_MODEL_DIR / "spam-classifer-metadata.json" 28 | 29 | AI_MODEL = None 30 | DB_SESSION = None 31 | SMSInference = models.SMSInference 32 | 33 | @app.on_event("startup") 34 | def on_startup(): 35 | global AI_MODEL, DB_SESSION 36 | AI_MODEL = ml.AIModel( 37 | model_path= MODEL_PATH, 38 | tokenizer_path = TOKENIZER_PATH, 39 | metadata_path = METADATA_PATH 40 | ) 41 | DB_SESSION = db.get_session() 42 | sync_table(SMSInference) 43 | 44 | 45 | @app.get("/") 46 | def read_index(q:Optional[str] = None): 47 | return {"hello": "world"} 48 | 49 | @app.post("/") 50 | def create_inference(query:schema.Query): 51 | global AI_MODEL 52 | preds_dict = AI_MODEL.predict_text(query.q) 53 | top = preds_dict.get('top') # {label: , conf} 54 | data = {"query": query.q, **top} 55 | obj = SMSInference.objects.create(**data) 56 | # NoSQL -> cassandra -> DataStax AstraDB 57 | return obj 58 | 59 | 60 | @app.get("/inferences") # /?q=this is awesome 61 | def list_inference(): 62 | q = SMSInference.objects.all() 63 | print(q) 64 | return list(q) 65 | 66 | 67 | @app.get("/inferences/{my_uuid}") # /?q=this is awesome 68 | def read_inference(my_uuid): 69 | obj = SMSInference.objects.get(uuid=my_uuid) 70 | return obj 71 | 72 | 73 | 74 | def fetch_rows( 75 | stmt:SimpleStatement, 76 | fetch_size:int = 25, 77 | session=None): 78 | stmt.fetch_size = fetch_size 79 | result_set = session.execute(stmt) 80 | has_pages = result_set.has_more_pages 81 | yield "uuid,label,confidence,query,version\n" 82 | while has_pages: 83 | for row in result_set.current_rows: 84 | yield f"{row['uuid']},{row['label']},{row['confidence']},{row['query']},{row['model_version']}\n" 85 | has_pages = result_set.has_more_pages 86 | result_set = session.execute(stmt, paging_state=result_set.paging_state) 87 | 88 | 89 | @app.get("/dataset") # /?q=this is awesome 90 | def export_inferences(): 91 | global DB_SESSION 92 | cql_query = "SELECT * FROM spam_inferences.smsinference LIMIT 10000" 93 | statement = SimpleStatement(cql_query) 94 | # rows = DB_SESSION.execute(cql_query) 95 | return StreamingResponse(fetch_rows(statement, 25, DB_SESSION)) -------------------------------------------------------------------------------- /app/ml.py: -------------------------------------------------------------------------------- 1 | import json 2 | import numpy as np 3 | 4 | from typing import Optional, List 5 | from pathlib import Path 6 | from dataclasses import dataclass # pip install dataclasses 7 | 8 | from tensorflow.keras.models import load_model 9 | from tensorflow.keras.preprocessing.sequence import pad_sequences 10 | from tensorflow.keras.preprocessing.text import tokenizer_from_json 11 | 12 | from . import encoders 13 | 14 | @dataclass 15 | class AIModel: 16 | model_path: Path 17 | tokenizer_path: Optional[Path] = None 18 | metadata_path: Optional[Path] = None 19 | 20 | model = None 21 | tokenizer = None 22 | metadata = None 23 | 24 | def __post_init__(self): 25 | if self.model_path.exists(): 26 | self.model = load_model(self.model_path) 27 | if self.tokenizer_path: 28 | if self.tokenizer_path.exists(): 29 | if self.tokenizer_path.name.endswith("json"): 30 | tokenizer_text = self.tokenizer_path.read_text() 31 | self.tokenizer = tokenizer_from_json(tokenizer_text) 32 | if self.metadata_path: 33 | if self.metadata_path.exists(): 34 | if self.metadata_path.name.endswith("json"): 35 | self.metadata = json.loads(self.metadata_path.read_text()) 36 | 37 | 38 | def get_model(self): 39 | if not self.model: 40 | raise Exception("Model not implemeted") 41 | return self.model 42 | 43 | def get_tokenizer(self): 44 | if not self.tokenizer: 45 | raise Exception("tokenizer not implemeted") 46 | return self.tokenizer 47 | 48 | def get_metadata(self): 49 | if not self.metadata: 50 | raise Exception("metadata not implemeted") 51 | return self.metadata 52 | 53 | def get_sequences_from_text(self, texts: List[str] ): 54 | tokenizer = self.get_tokenizer() 55 | sequences = tokenizer.texts_to_sequences(texts) 56 | return sequences 57 | 58 | def get_input_from_sequences(self, sequences): 59 | maxlen = self.get_metadata().get('max_sequence') or 280 60 | x_input = pad_sequences(sequences, maxlen=maxlen) 61 | return x_input 62 | 63 | def get_label_legend_inverted(self): 64 | legend = self.get_metadata().get('labels_legend_inverted') or {} 65 | if len(legend.keys()) != 2: 66 | raise Exception("You legend is incorrect") 67 | return legend 68 | 69 | def get_label_pred(self, idx, val): 70 | legend = self.get_label_legend_inverted() 71 | return {"label": legend[str(idx)], "confidence": val} 72 | 73 | def get_top_pred_labled(self, preds): 74 | top_idx_val = np.argmax(preds) 75 | val = preds[top_idx_val] 76 | return self.get_label_pred(top_idx_val, val) 77 | 78 | def predict_text(self, query:str, include_top=True, encode_to_json=True): 79 | model = self.get_model() 80 | sequences = self.get_sequences_from_text([query]) 81 | x_input = self.get_input_from_sequences(sequences) 82 | preds = model.predict(x_input)[0] 83 | labeled_preds = [self.get_label_pred(i, x) for i, x in enumerate(list(preds))] 84 | results = { 85 | "predictions": labeled_preds 86 | } 87 | if include_top: 88 | results['top'] = self.get_top_pred_labled(preds) 89 | if encode_to_json: 90 | results = encoders.encode_to_json(results, as_py=True) 91 | return results -------------------------------------------------------------------------------- /nbs/encrypt_module.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": null, 6 | "id": "cfc58cd7", 7 | "metadata": {}, 8 | "outputs": [], 9 | "source": [] 10 | }, 11 | { 12 | "cell_type": "code", 13 | "execution_count": 1, 14 | "id": "3138f8e2", 15 | "metadata": {}, 16 | "outputs": [ 17 | { 18 | "data": { 19 | "text/plain": [ 20 | "True" 21 | ] 22 | }, 23 | "execution_count": 1, 24 | "metadata": {}, 25 | "output_type": "execute_result" 26 | } 27 | ], 28 | "source": [ 29 | "import pathlib\n", 30 | "import os\n", 31 | "from cryptography.fernet import Fernet\n", 32 | "from dotenv import load_dotenv\n", 33 | "\n", 34 | "load_dotenv()" 35 | ] 36 | }, 37 | { 38 | "cell_type": "code", 39 | "execution_count": 2, 40 | "id": "c554c805", 41 | "metadata": {}, 42 | "outputs": [], 43 | "source": [ 44 | "ENCRYPTION_KEY = os.environ.get(\"ENCRYPTION_KEY\")" 45 | ] 46 | }, 47 | { 48 | "cell_type": "code", 49 | "execution_count": 3, 50 | "id": "3d4f1ef8", 51 | "metadata": {}, 52 | "outputs": [], 53 | "source": [ 54 | "def generate_key():\n", 55 | " return Fernet.generate_key().decode(\"UTF-8\")" 56 | ] 57 | }, 58 | { 59 | "cell_type": "code", 60 | "execution_count": 4, 61 | "id": "d1bc2406", 62 | "metadata": {}, 63 | "outputs": [], 64 | "source": [ 65 | "def encrypt_dir(input_dir, output_dir):\n", 66 | " key = ENCRYPTION_KEY\n", 67 | " if not key:\n", 68 | " raise Exception(\"ENCRYPTION_KEY is not found\")\n", 69 | " fer = Fernet(key) # f\"{}:\"\n", 70 | " input_dir = pathlib.Path(input_dir)\n", 71 | " output_dir = pathlib.Path(output_dir)\n", 72 | " output_dir.mkdir(exist_ok=True, parents=True)\n", 73 | " for path in input_dir.glob(\"*\"):\n", 74 | " _path_bytes = path.read_bytes() # open(filepath, 'rb')\n", 75 | " data = fer.encrypt(_path_bytes)\n", 76 | " rel_path = path.relative_to(input_dir)\n", 77 | " dest_path = output_dir / rel_path\n", 78 | " dest_path.write_bytes(data)" 79 | ] 80 | }, 81 | { 82 | "cell_type": "code", 83 | "execution_count": 5, 84 | "id": "62bc24a7", 85 | "metadata": {}, 86 | "outputs": [], 87 | "source": [ 88 | "def decrypt_dir(input_dir, output_dir):\n", 89 | " key = ENCRYPTION_KEY\n", 90 | " if not key:\n", 91 | " raise Exception(\"ENCRYPTION_KEY is not found\")\n", 92 | " fer = Fernet(key) # f\"{}:\"\n", 93 | " input_dir = pathlib.Path(input_dir)\n", 94 | " output_dir = pathlib.Path(output_dir)\n", 95 | " output_dir.mkdir(exist_ok=True, parents=True)\n", 96 | " for path in input_dir.glob(\"*\"):\n", 97 | " _path_bytes = path.read_bytes() # open(filepath, 'rb')\n", 98 | " data = fer.decrypt(_path_bytes)\n", 99 | " rel_path = path.relative_to(input_dir)\n", 100 | " dest_path = output_dir / rel_path\n", 101 | " dest_path.write_bytes(data)" 102 | ] 103 | } 104 | ], 105 | "metadata": { 106 | "kernelspec": { 107 | "display_name": "Python 3 (ipykernel)", 108 | "language": "python", 109 | "name": "python3" 110 | }, 111 | "language_info": { 112 | "codemirror_mode": { 113 | "name": "ipython", 114 | "version": 3 115 | }, 116 | "file_extension": ".py", 117 | "mimetype": "text/x-python", 118 | "name": "python", 119 | "nbconvert_exporter": "python", 120 | "pygments_lexer": "ipython3", 121 | "version": "3.9.7" 122 | } 123 | }, 124 | "nbformat": 4, 125 | "nbformat_minor": 5 126 | } 127 | -------------------------------------------------------------------------------- /nbs/Encryption.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "id": "cfc58cd7", 7 | "metadata": {}, 8 | "outputs": [ 9 | { 10 | "name": "stdout", 11 | "output_type": "stream", 12 | "text": [ 13 | "Requirement already satisfied: cryptography in /Users/cfe/Dev/ai-api/lib/python3.9/site-packages (35.0.0)\n", 14 | "Requirement already satisfied: cffi>=1.12 in /Users/cfe/Dev/ai-api/lib/python3.9/site-packages (from cryptography) (1.14.6)\n", 15 | "Requirement already satisfied: pycparser in /Users/cfe/Dev/ai-api/lib/python3.9/site-packages (from cffi>=1.12->cryptography) (2.20)\n", 16 | "Note: you may need to restart the kernel to use updated packages.\n" 17 | ] 18 | } 19 | ], 20 | "source": [ 21 | "%pip install cryptography" 22 | ] 23 | }, 24 | { 25 | "cell_type": "code", 26 | "execution_count": 2, 27 | "id": "3138f8e2", 28 | "metadata": {}, 29 | "outputs": [], 30 | "source": [ 31 | "from cryptography.fernet import Fernet" 32 | ] 33 | }, 34 | { 35 | "cell_type": "code", 36 | "execution_count": 32, 37 | "id": "3d4f1ef8", 38 | "metadata": {}, 39 | "outputs": [], 40 | "source": [ 41 | "key = Fernet.generate_key().decode(\"UTF-8\")" 42 | ] 43 | }, 44 | { 45 | "cell_type": "code", 46 | "execution_count": 6, 47 | "id": "25e02d70", 48 | "metadata": {}, 49 | "outputs": [], 50 | "source": [ 51 | "import pathlib" 52 | ] 53 | }, 54 | { 55 | "cell_type": "code", 56 | "execution_count": 11, 57 | "id": "6053c85b", 58 | "metadata": {}, 59 | "outputs": [ 60 | { 61 | "data": { 62 | "text/plain": [ 63 | "True" 64 | ] 65 | }, 66 | "execution_count": 11, 67 | "metadata": {}, 68 | "output_type": "execute_result" 69 | } 70 | ], 71 | "source": [ 72 | "BASE_DIR = pathlib.Path().resolve().parent\n", 73 | "BASE_DIR.exists()" 74 | ] 75 | }, 76 | { 77 | "cell_type": "code", 78 | "execution_count": 12, 79 | "id": "cf435f7a", 80 | "metadata": {}, 81 | "outputs": [ 82 | { 83 | "data": { 84 | "text/plain": [ 85 | "True" 86 | ] 87 | }, 88 | "execution_count": 12, 89 | "metadata": {}, 90 | "output_type": "execute_result" 91 | } 92 | ], 93 | "source": [ 94 | "APP_DIR = BASE_DIR / \"app\"\n", 95 | "APP_DIR.exists()" 96 | ] 97 | }, 98 | { 99 | "cell_type": "code", 100 | "execution_count": 21, 101 | "id": "38f8e0dc", 102 | "metadata": {}, 103 | "outputs": [], 104 | "source": [ 105 | "IGNORED_DIR = APP_DIR / \"ignored\"\n", 106 | "SECURE_DIR = APP_DIR / \"encrypted\"\n", 107 | "DECRYPTED_DIR = APP_DIR / \"decrypted\"\n", 108 | "SECURE_DIR.mkdir(exist_ok=True, parents=True)\n", 109 | "DECRYPTED_DIR.mkdir(exist_ok=True, parents=True)" 110 | ] 111 | }, 112 | { 113 | "cell_type": "code", 114 | "execution_count": 33, 115 | "id": "233c5507", 116 | "metadata": {}, 117 | "outputs": [], 118 | "source": [ 119 | "fer = Fernet(key) # f\"{}:\"" 120 | ] 121 | }, 122 | { 123 | "cell_type": "code", 124 | "execution_count": 27, 125 | "id": "62bc24a7", 126 | "metadata": {}, 127 | "outputs": [], 128 | "source": [ 129 | "for path in IGNORED_DIR.glob(\"*\"):\n", 130 | " _path_bytes = path.read_bytes() # open(filepath, 'rb')\n", 131 | " data = fer.encrypt(_path_bytes)\n", 132 | " rel_path = path.relative_to(IGNORED_DIR)\n", 133 | " dest_path = SECURE_DIR / rel_path\n", 134 | " dest_path.write_bytes(data)" 135 | ] 136 | }, 137 | { 138 | "cell_type": "code", 139 | "execution_count": 31, 140 | "id": "246ded34", 141 | "metadata": {}, 142 | "outputs": [], 143 | "source": [ 144 | "for path in SECURE_DIR.glob(\"*\"):\n", 145 | " _path_bytes = path.read_bytes() # open(filepath, 'rb')\n", 146 | " data = fer.decrypt(_path_bytes)\n", 147 | " rel_path = path.relative_to(SECURE_DIR)\n", 148 | " dest_path = DECRYPTED_DIR / rel_path\n", 149 | " dest_path.write_bytes(data)" 150 | ] 151 | }, 152 | { 153 | "cell_type": "code", 154 | "execution_count": null, 155 | "id": "8735b09c", 156 | "metadata": {}, 157 | "outputs": [], 158 | "source": [] 159 | } 160 | ], 161 | "metadata": { 162 | "kernelspec": { 163 | "display_name": "Python 3 (ipykernel)", 164 | "language": "python", 165 | "name": "python3" 166 | }, 167 | "language_info": { 168 | "codemirror_mode": { 169 | "name": "ipython", 170 | "version": 3 171 | }, 172 | "file_extension": ".py", 173 | "mimetype": "text/x-python", 174 | "name": "python", 175 | "nbconvert_exporter": "python", 176 | "pygments_lexer": "ipython3", 177 | "version": "3.9.7" 178 | } 179 | }, 180 | "nbformat": 4, 181 | "nbformat_minor": 5 182 | } 183 | -------------------------------------------------------------------------------- /nbs/2 - Download Datasets & Unzip.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "id": "82cdd096", 7 | "metadata": {}, 8 | "outputs": [], 9 | "source": [ 10 | "import pathlib\n", 11 | "\n", 12 | "BASE_DIR = pathlib.Path().resolve().parent\n", 13 | "DATASET_DIR = BASE_DIR / \"datasets\"\n", 14 | "ZIPS_DIR = DATASET_DIR / 'zips'\n", 15 | "ZIPS_DIR.mkdir(exist_ok=True, parents=True)\n", 16 | "\n", 17 | "SPAM_SMS_ZIP_PATH = ZIPS_DIR / \"sms-spam-dataset.zip\"\n", 18 | "SPAM_YOUTUBE_ZIP_PATH = ZIPS_DIR / \"youtube-spam-dataset.zip\"" 19 | ] 20 | }, 21 | { 22 | "cell_type": "code", 23 | "execution_count": 2, 24 | "id": "60828e1b", 25 | "metadata": {}, 26 | "outputs": [], 27 | "source": [ 28 | "SMS_SPAM_ZIP = \"https://archive.ics.uci.edu/ml/machine-learning-databases/00228/smsspamcollection.zip\"\n", 29 | "YOUTUBE_SPAM_ZIP = \"https://archive.ics.uci.edu/ml/machine-learning-databases/00380/YouTube-Spam-Collection-v1.zip\"" 30 | ] 31 | }, 32 | { 33 | "cell_type": "code", 34 | "execution_count": 3, 35 | "id": "13a8f781", 36 | "metadata": {}, 37 | "outputs": [ 38 | { 39 | "name": "stdout", 40 | "output_type": "stream", 41 | "text": [ 42 | " % Total % Received % Xferd Average Speed Time Time Time Current\n", 43 | " Dload Upload Total Spent Left Speed\n", 44 | "100 198k 100 198k 0 0 413k 0 --:--:-- --:--:-- --:--:-- 413k\n", 45 | " % Total % Received % Xferd Average Speed Time Time Time Current\n", 46 | " Dload Upload Total Spent Left Speed\n", 47 | "100 159k 100 159k 0 0 351k 0 --:--:-- --:--:-- --:--:-- 351k\n" 48 | ] 49 | } 50 | ], 51 | "source": [ 52 | "!curl $SMS_SPAM_ZIP -o $SPAM_SMS_ZIP_PATH\n", 53 | "\n", 54 | "!curl $YOUTUBE_SPAM_ZIP -o $SPAM_YOUTUBE_ZIP_PATH " 55 | ] 56 | }, 57 | { 58 | "cell_type": "code", 59 | "execution_count": 4, 60 | "id": "31b8c9ae", 61 | "metadata": {}, 62 | "outputs": [], 63 | "source": [ 64 | "SPAM_CLASSIFIER_DIR = DATASET_DIR / \"spam-classifier\"\n", 65 | "SMS_SPAM_DIR = SPAM_CLASSIFIER_DIR / \"spam-sms\"\n", 66 | "YOUTUBE_SPAM_DIR = SPAM_CLASSIFIER_DIR / \"youtube-spam\"\n", 67 | "\n", 68 | "\n", 69 | "SMS_SPAM_DIR.mkdir(exist_ok=True, parents=True)\n", 70 | "YOUTUBE_SPAM_DIR.mkdir(exist_ok=True, parents=True)" 71 | ] 72 | }, 73 | { 74 | "cell_type": "code", 75 | "execution_count": 9, 76 | "id": "48269c4f", 77 | "metadata": {}, 78 | "outputs": [ 79 | { 80 | "name": "stdout", 81 | "output_type": "stream", 82 | "text": [ 83 | "Archive: /Users/cfe/Dev/ai-api/datasets/zips/sms-spam-dataset.zip\n", 84 | " inflating: /Users/cfe/Dev/ai-api/datasets/spam-classifier/spam-sms/SMSSpamCollection \n", 85 | " inflating: /Users/cfe/Dev/ai-api/datasets/spam-classifier/spam-sms/readme \n", 86 | "Archive: /Users/cfe/Dev/ai-api/datasets/zips/youtube-spam-dataset.zip\n", 87 | " inflating: /Users/cfe/Dev/ai-api/datasets/spam-classifier/youtube-spam/Youtube01-Psy.csv \n", 88 | " creating: /Users/cfe/Dev/ai-api/datasets/spam-classifier/youtube-spam/__MACOSX/\n", 89 | " inflating: /Users/cfe/Dev/ai-api/datasets/spam-classifier/youtube-spam/__MACOSX/._Youtube01-Psy.csv \n", 90 | " inflating: /Users/cfe/Dev/ai-api/datasets/spam-classifier/youtube-spam/Youtube02-KatyPerry.csv \n", 91 | " inflating: /Users/cfe/Dev/ai-api/datasets/spam-classifier/youtube-spam/__MACOSX/._Youtube02-KatyPerry.csv \n", 92 | " inflating: /Users/cfe/Dev/ai-api/datasets/spam-classifier/youtube-spam/Youtube03-LMFAO.csv \n", 93 | " inflating: /Users/cfe/Dev/ai-api/datasets/spam-classifier/youtube-spam/__MACOSX/._Youtube03-LMFAO.csv \n", 94 | " inflating: /Users/cfe/Dev/ai-api/datasets/spam-classifier/youtube-spam/Youtube04-Eminem.csv \n", 95 | " inflating: /Users/cfe/Dev/ai-api/datasets/spam-classifier/youtube-spam/__MACOSX/._Youtube04-Eminem.csv \n", 96 | " inflating: /Users/cfe/Dev/ai-api/datasets/spam-classifier/youtube-spam/Youtube05-Shakira.csv \n", 97 | " inflating: /Users/cfe/Dev/ai-api/datasets/spam-classifier/youtube-spam/__MACOSX/._Youtube05-Shakira.csv \n" 98 | ] 99 | } 100 | ], 101 | "source": [ 102 | "!unzip -o $SPAM_SMS_ZIP_PATH -d $SMS_SPAM_DIR\n", 103 | "!unzip -o $SPAM_YOUTUBE_ZIP_PATH -d $YOUTUBE_SPAM_DIR" 104 | ] 105 | }, 106 | { 107 | "cell_type": "code", 108 | "execution_count": null, 109 | "id": "fcb9fb69", 110 | "metadata": {}, 111 | "outputs": [], 112 | "source": [] 113 | } 114 | ], 115 | "metadata": { 116 | "kernelspec": { 117 | "display_name": "Python 3 (ipykernel)", 118 | "language": "python", 119 | "name": "python3" 120 | }, 121 | "language_info": { 122 | "codemirror_mode": { 123 | "name": "ipython", 124 | "version": 3 125 | }, 126 | "file_extension": ".py", 127 | "mimetype": "text/x-python", 128 | "name": "python", 129 | "nbconvert_exporter": "python", 130 | "pygments_lexer": "ipython3", 131 | "version": "3.9.7" 132 | } 133 | }, 134 | "nbformat": 4, 135 | "nbformat_minor": 5 136 | } 137 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /app/encrypted/astradb_connect.zip: -------------------------------------------------------------------------------- 1 | gAAAAABhYHw2svK4NHkYUQoiSDsuU1qSJOaBveu75FKjUFI58rcFCJsn-zYrtgcSVZr-bbcMZuMt5l475847A5FvBWGLl0onLkc0wX-hSiCcChSqlvnD-tUhp07v1H0fIbBtpyp0445VG3uNR6edTNzA2lGoDZ7xNICXlKD2ivDrYO1Gug-WsboLmQWprhOUojMObDMkmvIUhssT3f_iIUdLrOMaJciyhGkp4-quCOJjpOi1Tu6C_t6IjNydX7TnbbbTadXvFSoXJNojxabUXbECBsxJU6AN1XbQJvBL3IJmEMWenIFn7MJcE4_oOBs_8ZXkvbKiid_DzUt8RfyTIKOtwGgo2Ob9JsvUR0iFowd_ZaMcsr-rIH_eWq0SmLodpdFhdvyCvE22y-GsoiX_qGFLUEBQtz8CkO_e2V55KbWizeJePrQE88NDT2ZuQKpLHB-sC80hK3Gw3ClolEhpCLu9cxVhoKrQodwOE2503aCSzXYgIwSaX9ySHZ_-N-byKGyVKiJq7HSMgG0vd8Nm1vuyO7eUgWIZPrEofMjaX4Ay4N-WUi48FHTGbU4NhYINF9TNiCOJukyMRz1-Zm5MOtEd8Fmn10UnSSEpfCdmhiJxkvcZ3jGXuh6-41oBXUJR3BUmspmcXUyA4sUXEeJwNRym-6QUNrKGS_SW56wHd4Lreug9TH4xjy60nIIa5cYHO7NDxrrBHfqD9ABI3S_ABXO4Z1OQKc-JNvao69FGJmEIH3UEx7MwHYfgPy6iHr664rPVJfR-VpdHOscg2fw2mBe0Otn40cwT4D0eVt9UC5C2aUp4pQUkVatwWgACynl5dk5sWZLi4yUHgrLAhtfnPTKT7kduGNv66_YMqA-fRZVMVDXeqjYdv5TYt_R6RtNIZKWDdU8VLd0EWYdCR3MBwrh07wFnlkdZDUj_fFLKb0qemtS1JxYxERrBMpfKvlz4jFlAvReCAFU36nZbfGGueP7_fJilEF1gpXERT1iAD98Johs60Hv3rZ0I0Fx1dNLVcIVUwyvYY38Ic3fIrEat-I3i-sPgVDpDxYs6a-CbmTig9c3QGGjWexSuskF7Y_fdfHpJD7GEfZbTZwfZ6OTU58l_i7g-u9rZUossFRDW1JlP8Pz6hxXcr8Ds1yZ0XI88go2adA7JusBbquHZUtd9A1koj55PGy7sqhtQog9f4lTtliA6iVpQsEZf-qYRJdFJhSN819_gCZ2ZwhH4QoXgNqO7QbACSGP7KCO7bvkCDDnM500l8bt3HKBEBQUJNWc2UEKg1YYxRJ2bwsXrEkKaKbYcrXJ0QsOIs5qnczQXPIihqXmz0KCx6wInWVZ1acn9xkKbe2bshcqKY_bFDvtOUjY5yNcGAZ_v9pj_FyK1WizpT0uAED1C7BMdoVlLc_GLFNgjLV8BUKRhhc3tw5fg8lnZC4SUC4nFONxjO9I28Il_640Y4yHTz2DyoeAbKaKf3WMc2b09pOoZDPdgKo_VLELGGTevs_StX-acnGyX52SZNt2W0F6-hYthVtK4sNVj9PEogET9yCzshe0L-QNRZhxrqpbBVSHjSGL6k6MCHqDS-tMArv-FIiSwim0f7ZXC-hHVgDcMerKd3HVp0dDxGSgJ2rdpDzV3VnYUiMnEXWeRLKgmM3xR-p6KlBzMtu-xQtKsRfS47cL4njUyV29es81QNuCs6vn7Z4tsZkjfUh6PiB2_0lF4Sgb4FfcH5kFD5wpJHbg9KHFqv-MfwSp9vAjpP0zSQ3afSOPOLmUzAEQyLp1Zxvy4rEP04gKDPdizIISmGz63J_lSYFMmotjbmb3sEtQ75VQ3Pa495JxMiXlFPn-LhOYltQO8bHx7OWoL6oP-wygC55b_CGCfS-mM3xPs_5bqmOlUAfb1YRXjVNlId5WPmXZ3wZraDiLBS-HNUDoESioFvx3s3JPGhV5pXf5M4-OJ4UuAMKH-KrlqLTLRH1EOfbgViz78Z7GE0DPMbSnEu9dnq7DiWeupVBOGZEf5q1-cmbHKf1qSW_I3bMPoVQ9twwmF2gW6DoXPgtLyX5qahcY_Rku997nkFH9DbZBg1gQenr8LNeUkaGSzqiTy_Gt7IVYEYsYTQq3H8uk54UoeQnGUOXA-19HPGB8L1nWBjBP3_682MqzHRa2-7J79OoKT7g2quqWP9198gF2SDFljbZU_WfAYVuPla6dDtolkqP8tUuWiRqld9kQu84PrqxMvYag4Qr1MloMGlE3-4eaCH9bWspg8sEglej3Pqnonn3cmTG3EKgLd8rUXI6ErbC17S3fIHm5umfAm7_dhXhPxakhYxso8hmZVVwwoaNUHU2BHEyZzbJJmO8_phSDT66k4JEH6TYOoQV3ejiKgQxlbPYUqXzXcpmY_LuhyOdNHtynAKJj8231EllifzcgouQPwGAayENlFqyY2vVjDIoouyuzAAIem_0APePHBPP6p-RnW9q1nU7OtLX96L6b3C3K02TOGg3Lj_0Dd_W_z2x_uMxzSgZPDQAedymdKh0lEu0rH7J7ci-mL9PSeLE9anpZhImdyCFw0ck80GHmkua4TpzCG6Bv-w2nOPSGRZe-8WU1PX6rT_1ZUCsZLZoGntU5FmQCwvNsOkYjaLknF6lTDvijWgcNF8lH1Ncpn2uRbkeGR-mmyNwmizFTTzTMo0ZIrVXpVQGOOzp6Ax1QK5W7jw9SzHlfxFeC7UwkTrFebwEBHSxrOzBWvrmvuSW529GjQFFtsxKBkMdil39O7kYlVKSIee1zR7ezv1aCaigei4UuxXZT9BHqlGG10qPyV1rKb-CCGIC5OviYo6K6GKhV7iCdhd3NCscqyk37nwWITA1f_K-NTxOlTl93AASemDXXwgbmeIZdkojEpe7_rahBezrnm_UviVdRB3cyXjlhoI9WphpqrEv6Zenc8ABIx2LSLCzdmC8ckRfDwSCHgtK638EEk8AvMiKLoU9IjcSz6uC-dKdb_JstT6wZwm4bfGU_W2N_Ca5EeRbEDYXQUVSvynSqZ2COU1uSdaSI7ZMtaWqgMYQ8v8LwG_g5a9Dzx6xbRoOTg7aok48bADhWJLn_9Kt3Wu9HJvAbZ58H1_6ZFRq6MDL7OtKv_KJpcBehrZdkvJj0MJDLU0PK_wahVPPOFhaJmdX8148STWHhLIBvGqJXv_9Re7KQMmCa7U97f0Y7vhL2nGmCWTOfhRcUWWGens4oGM6556gb0ehCP24nclISD52rF-O8NUvgTSMQdU4BXI-yLVw6-084I8wVBdVnZP79zuhNHK4_W1bi6JuxBpWpi0X77c65Cxxvl9x66JlP1TETkGSgDu_yx_3laV4kqH8szndVfwWuUtfap10pZvKPjsJevQXs46s_ns0b_I3iEjH_Idxp2EJ_TRsVxHkWSp6cpygc-eErywWiDoq1M2RhMoXTwNTEBQLQLmmDJbW8qiDKXUertPjesmq05deewNTjIni0iTxjFBL2UMmSuuBAf-bd2UjcjZADqPliJCJgegS32s5lN_EFXsS1qS2oImSgqKKr77P0_V2EMiD0VvVdz7d24ng_Qrq46yce00PchuTQPpEHaZfW5ci91rTwIa6h0u0D47_aYSAQjlTM8ZHHd8q70VIut9M7A5d8J5n3aKRIqhjG3KdgnmO3g_3DnsDo_xG4-rJDsn8FWKdzGHxsVOivjUA-rWKY1XbIKvCA6z9mq4ZFlER8BbaI7QOikHnszfvMzA1YTSte-5h0l0mZANqdQ6GNJ7ZObHWbVuYXCcLsOyY16gMIIcRS3Cw4_TmoO0rNCu4s6cuuI8_vRI-o1SOd44tRh6DwfXUzlLn14yBj_Z3ntH_xpAFq6I4kTHRMh93_yL3ZMxxi7Nb6bL95iFH1OO-N_ryYIo86lzj6G9Zq4sCwjyr_kv7YWHcIF729QMQN3FLOqwHr2YVw4Hke5FAro1oDK81hZr3Weqns7GkWIzvoZ2JP_LizZxUfBlFt8cCqVbVi7G-YhPEwdtM3Sgm07Tnsndur7vOA6g0RQuLthXNIJ7Io1HR9HqfxWb1epTE1aM_qEJEgMA2XXho_F9cbNBYCvlq1FE1BD56He5V6bwSz0X5gpJMV1aQ88NGCVe-I4RAC8U5ObnjdH_C8yCn3jtg5yH-uLFcAXXnIv8M8iJltF2ZswGPlpubV0u6N_-h_490k34iD4BUjuFrg8PuW217a8m8NbftILs317eslNj_caDhlO_iKRmXrhdmS1Ks8YT5pC8cv4Gn987WGug9idcOpDRxalGUG7hN5_5HzCp9qhC9_gUYyiO-PF5sfw5KDKXlY8TOgFEjisEA8WdCpW_hOay-1ZXklow6zL_P8cWLw7cvqew8z_1dzgAUyMTCAY5WXP3zYN1jLeSfFJ9v8_4LQTKUttadejz2G64Ynk9nVw4GUK2nLDAW0GXVi3OHFsAlLG9cXpPw6ZsgfxX6fvGdhynluCXmGmPjKvMu2FamQ4yEtsfoBBLKGI0iVbymfQmP_QcQHgo4mqd-MdUHo1xDMt9pYdw6i-AOfDB4uyvDTdMqCYl0togqWFrdO3dV_1IfSmSNjTpGp0gZKxHzXsoQko42papwtI3YK3M_CnE6DGVyW4oQpbXnPoaXoGEzWLs8By8HuBIhvwDfUtS5Ez2GE_iHrahDH0lf1PT2Pk0NXQk8miYUKpokDvij_FeHONaxQJiBVuud-heicD2gxgrsNUhxBuWR3jRDFYchYrEwctzxdJEhTFeCQcLqrhLuWs05RGNsRN7PKPdnexLbsN4yyBWy_tBG0QdhvjdRVun21NGPJ7SnU7m9katdsHVNOM_dSXOdBtCBVdunbJ2xGKOQz4X6KjIm14AOonjw8BeZhwZkF4zF4ym8eeIWH_rq1fly9Jrxuig1pilw9W308sAuHfoIhkMyZ-QKn0xOJmla0BqxbpIFeDoMZtR2BucSZ2RL74HGNDRTaRu1XjYXmOWVQwWxc8yhFFoRdeSfpVcfiX-TRZZeeUgLPbC_r6dr7ogzn-vDR7eY2HbA-Uequ3VqyQdGQfWcJgGJPzEHI3_PKiq3bhWa8s-3PKoabeNL83tYIy2Jv34p1fjxINod3jKxeooFtn66PcAYATqzLCpCjJpJcXqXZmixWDfhAkvNZ1Yul4ueV3Xdboe6Q_R9ADP66wrM6cM9HZpftMlBD2xk3o6yA5DxDz9MKEBqCvmu6ztIQh7H3HTRNPx9rRsOBtxuwKy2qOkwEl-8pnTrgU7A_SddeUt-ojdD_VELH4UYuLly3yd8nVEtfqYi7yJQRJ0WlgJcG9YfFh_SEqkfTdYZYILkxoLofnYHhIbG4iA3I61kS5CpyOjlOX8dJ4vhf5yb2D7WP--ieAZrUnDfBvTNHfGR_DOfDJ3Rjwdoe9PTwTdAsJPSBpyjOZrXjps0T-hw5J7uJnNNTMoPQwGdAwWqBOXRcpXMq-hb5ovieaSmnTiGUZiftbDB8wVaYZfh7kSKTaHbmhjfjQUVifxzek4wyAfCtiEmaSqkk7jkWW4QRl20_D7mUEZsSYg1c9laRW_ZIsBWY1km7wEyej2_Orrdznm1N2l0s8nz7ixJPmEeeLCPE4ezTNl1cYlol7wO1CgKwft_Nq94T_bdHWUQLV2KvsTYzK6F34b52mXe_GB5nEi9T8UTUhDkVtzBba0L7DgfRN7DyRsh8V20dq3ficw7Iw_57Qx5473yxtZ9xtSH4WUMDSH7svjLULd24ByC8PvjATJcVCB6e1atBzzdLQd8ObuMNnmFCwnOOfZfRj-ZaYyk1_q4Z8aRTcQUbtkdzhy9vI4h6JZfKWSHUUAl5HExVflf3KkVj-KCswWQytaLT6Am5UGKi_-NG3F16GD2YJAlU1ADRaDwoM6Mk5aMRPFLOzWI4PtUG67ugdQfvwaJrYQExdxZDhh-MrENUZQeP6Q1_oJ6B9MwZ8MOjqu2W1eqQd53bdaylC04zXty-vzRhRlwITD1cdj0c2HA4rAhipK3H6WgOm0za_9SFpvcPk8fwKKEKT6TccFEDYfzhe1TiFsIoyPgddml26EN9viVSN6utKpObCLxki_WNpxCw7I4xVs6n2aXygdTBrJoLdJuGda3GcBz5kAwOF3bGmKhxUrO-jvcgMoamSiEiGYRBspC6yARXEDtTR3MwUMZqRQDqccDwLmvNsjHgkpGTJERSO1MPZYTmTnGc8tda6FiVaTop7qMrS6FmlKB8KBMvyb6fJkDIuZ1GNKS4zjdxGVq0C_oTnSo5cUOW7tqEEV0wY_i2VVcstDVXGsDowEZ43Y3Z8nI-Inw6SK-G21BjPqiY0jLt7VHTQN1QuDcOWxZDW00ltPn1uNRes6fHry_rdbKUt6h6awzANwvChzCLS_VNDMxEdIjmtscjVdZPg58coX7bT8nHobwKhKsMmHtldy_Ok96zK0J-WtkymDBDW5BrEjr4bGQ2UeU9o4G2ZYQac_akIl9tzqoWbSIQLwnpiW41mWxIhrMuKXiWvx3Y0uicYli9JYKg-fKi8U86toPf5K-cfb4LMSVvPl0ZyUorXUEyIWT7JNDrHARVHrmx6zADx768ZWd8--9KQUAc3ajeZslGCbgWgpcqdCFXD0aS413NSq6xe0TxqiDkc5PRyPUiPlnKl-5NLvb_ZCxpV6etBlGFlZGSNd2vu0ltN32Pms9hEZn5JwjT2Idnpa7PHio2QIrGJ8geiQOPYJ3ahC162ROryh3mjm1xksypYdDsUzO-_Q3JdqJfJPhjQtJ_2-_ad6qfv7m1-3xH1nLvXzkNa4tEga6J-cLQUXYzh7IQekxREvOCeKA4-pWaTJAgpKLMp2zIaLzi-3RC9llCNseVqaGLalGMLgcWQesnW6zHZ1rx2KZGQ5s43rrsIlvTIAxufOm1qEQu7_ynDLiHEA87OHzf-V-CpT_4h8V6vsI8vshf_NNnm--WdXzKa6hM9eP5HsRQ6CI9O2qb8lTc1_GrWI1_ctytRiadX_UrXCTeEl6WhwEXYLhdlNayAASHoif4rLQfhhVz5DY_pk_ihIKewP2x4FhrlXcBubzx9O9FHLNkk87brFFZsN7G-76ySnQaSuIcfAHdDDuNJzzCxrRW9ZVHf7-mtkaCmDaEOOcRROYkDpAuEjbnQ2hr8TEvKDrY160b896KR21EHPO8Wun5BKjzy6flPsGMeZFly5tAOcHWppdUIIUVOtXO1rJKjFeOkdLvI-7GT1JcM_OMaetWC6gRsOB1M4-M8ucMdRIKJVRHi4EBlMw5W6vVlnNCigpVnLPTSIy7MAiofHEOrTkFJAK3lZ5pQc23dGW9JINe2jzbxKwUQIw4CmJlq4uMEOHoYA97SKqmMVNgNvWOsJ_qUs9AS9ajEw2QwSB_Mow_6P-C0UiVFp10C8XyVQ4Dt43MTC_CDWhW3MpZrakE9mk_gjZaZnAxGutfO41T2WCCRq1x7eqVqKO-URNoxS68vCRBkIRcaT0t4ZjZkAV0oIRb0gwk1iVuBOXpDEAuoM5ZUB1_263Vb7vO2YuIQZB-lUgKkPi7XCiY2aK7V--5AUPptwDLjK7HUnPj1SL56EtJwB0-OA6XYzhEMkAjgROf_v_haaB2NMmM4Ob2ywkUOpE4aUJbIPwGKPF4cNjulHMQkfb4EPPLutzxSGzdi-p0W9EM_RF689GeqcVnx-w2GUOi5rXhrUBxe7GRdox7laEDcXbGAxify0qYUU5kTWnDyTkBdWNUyuFDa8TED5U9MirxDAFNOrM_JNdHCf8Q_VLx8Rt3ejkw6MM6ZPU-_-pFadO88PznM6Hmgfd4hzK58i6MaYW_0BRu_D0-9ybWBprJfkmqB-39RGvrZCRuZvgGZ7ajf1XrpfX3QanU02lyLDosLRf5L4h7JhrnL1BRjjupfFKkX-WoxF0eaF1AllAgFDkRMJu0mZPaYVZpjNF1iuaoiFQeiZOn0o0JmxpoCBcK_bW6ts8GHPmWq5H2ZzNlBgDWNuXJvN8XQ0kY9P7WEZID19Dd6cIuqrPfYQxY_9szZ_sJy8illmKOsjw6fD6UsOIEL1ZkVi27CRPdWcxzf2Usy5j5ckReLaU38zyraybYxC9ROk8U4sGyc1rrl7q80RugwxTrLty0S-X9bE3LxfAl2NzPv1iFhRzqA0DNj84mD2-tqmneG30Qy9HGT-9Yj8EURu5JIC4drebu1iUKB8CCRhKLzRSc_p2vwbF0bO8cFrIEybyWneM-T-Fajb_QdKDo0aH4qrxYJHJmydy4zdvcQ6nMnedB4_crQ_Re33t0Gw0b7GQTE_yLt7Q4TtppTm9zTgJzUqLAt08sHjQS761uul22VsGWR1i_DMACXbheejqL7JUgSYBIkT0HpNWt_GqRgDQZP5UfdpBC5YQURP2fYWJFukSThgJpjPYkA8oQbOxXyba2LEIYDWOi35EMoUTETptf8VAAWSYzSJF5laadFMV0zSTvSPWblLA4oPMGpkhDzcUfYDIW2jo58oC3biM3tuuTXRevHcJpPHsSE1y7dlVNayulbWhoJFevYjVl66aEixX4shpWzlskz8iuI37dM83S_-LYMcDyCiH31Ql1VlVUPf11MJV0dtWfg4VrmbDMmrakWtiQsfFlLmhUaU-6ShwPU59nmrNDUcOPN-nsDHWVEIQKuTWHhHgB17MP7nQi5c_S7kczWhjnrGcvGrGUMfsATmve6aeQZ_pmTg9DsdT87OBAmxe3tlN_hAe3tov82GWreDlM47t3vDW9mP2vx-1ck1ExRj1KPt4wDGcK5ORBkxzR40tpPEFzxDJXCRcsjFhFswhelNdr7bRfVBGS8ZQvtpthiMw_S-6UZb4fnIPrap4KXIgBUsV7cN0kz6-XCVsLnnFxuC5KVQSfCnc3OjwpwuT8QIZSUqP9Zw4WbOs-hhZWu_St6f90pyubA94eWw2s6SmJQvSKPQxZKA-1VZSLsYP7AEtTpDaPprkeOtTqDoqGiDiSC3ODy4ReCm8QLP2omhW8qdQ_5Vxm40vQNwBOz8OdKBKVLX4mv8Wuj05P4DJ8cLnKzKtzHqSLhoJbOkAlBn8G3vmq2OyGlNu-c7YqSQ1hRSCbP2hiocOR3HSRhi507hha3ePbCsGsDSo4ncf6QIHg9sXnDdW7vfiXsRPSm-4bLs3nDuh9zfyDwUcNxFqwrtGbisV_V-xbAmeJUX_ui4IEDbGpbqOcU_OROpfK2onu0qeu6nTQQy4bxk3uqp42JN4T_WJRFn6jEUpYNacFM9I7L8d1sRIgqLkHz15rQxpSUkonAErevp2ndVETZ1euHigA3iJUXD1l1Q8TFC_dcVpVxuCyxrHp4H_BbsmWhxOohKTK0e9tdsDIPnEhT4n48SrhVP1zHzhe211_-gScVm0GLgMrI-FGacTp6j8CxZAr-hZtMj1dcUo85Bv71ay8mGqypZxWg1j1VUK_6adDJHNI1O1_O9gg4Cnbam_3H2h_j0PHygBpuGVw1JNiRT0_8xtql-Pj_63jZFqw0FM4_ExmvjEWuTQirJsxE7OHghcIQJrmAVDIY2bstEW2zIMbtQ1b3aS-GFuqFw1u11kUpNXYrJ_6oMZveYlMe3FMYg5KHJ2NK3f2XG2M_5jibMGW7nuymjcnptupwA7Nczlu5Av5xISh48FXndSS9QDrS89N8Zvck7hCp43P6ZHvNVuGxJqL7SdyHNznVGwA3lp1WPiLaukiXjiiD_GWZIqOXYuaxmujFJY6OD5MWK9C5RxiMOWDD_PXQuirKsgdfRiyeKOk0ks3BWMRISehzRyaiU3MesV2pUeZ7O_fj-0sWDzS4NJ_OPqwGqzXCIzOBXPuCgn3dS9VuSE6VSqBzUgdHEbOdU2tdkR9Itd9UGgTfxgxKr45D7kEHaeS2Akf97GhMJh-rtDJ67X5PR6shdofGoFLZonH0cshSFWgDGvCVmOTl8EHnt2prxa7bS5LukRqgwgiDXMsU3Nvv8tgayEfaE0LIhjiOahwKScHxmtRKrVhewdkDmeTENvX7sMWob997w-0DoFMwYtjysDV8FMsom0g_PG9EC_T19vUwRScvIjMQXxlDNY6CRajSXZwFs_3bhVj_NP3d6zZ00fN7_u7yKjhA4TGVCDNIZ0an8DXybeYon99yBvY9G5fKv6VVKgfwSGIx_U-42UNv0nWSY3NXUMuMlTH86yviKwWmHZKdpBH7NPgFdLg8EftEL8NAweDmQwt0YpZyeK09g1uAxWazmMGjEaiO6o_sWJiYFxsDG1EPQ9ss1MtIIiOT0Yr7kUkOtUxu4UmXLJPthx3J3ILEUy6u0yPdHbr3JNPbf5ASOCPr9f1Xb832h9hCNlqohQ0UskmBfNpHfm3U4GcOLIdBaI0SO_mpyDBqbJ871G6TqoH7wTDvmSv7Zhp24ydtnn6B_eggk37NTI3EjaW6X1YSLis2K3JvqevZUyHgA7IyamlsIengRRu2JZdB-iLb6hI7VXXbhSiXufDUP0Dw-1XNoxpu2tj__eG3mFzYc1843SJE3PhHRmQYcTJo686K1myUEEW9y2XYTU63FOHeJLVQAAMDdB6DsoTcNvmyjWuLp_DwP9_WQ_jnFfmPLeb8rFgXZBRhTvmj7ioV54fpk9zPT588UWh9nA8ZqBL2xUIOL9JeUJaQmbwllBcPed3ND5-y5phTcIRZloO1D4skIvinHXM_7n-2pg7iDqSAiVVGZOrmzxcx4PLKuSF30SRE9E8z2ljx_OYtPWHoVcit_MLWJWKWHPd5z_5ZcLqY0d3f5ychvwudnDz-M978coIn4JJQW48M-Qmi8TNbRU_4Q0D_Lfuod9w6oj1KDNceCbsUei04JSGq8VjfQMqgV7UMnnxrvRYkczJ8lOkAxqQmqwJJInrrPRmkuoMbxEtWAq125x1j-KcCk0GFCB9BGH2a_xxUaa-8kWviKM1BM4SgkuBdg-2xQDYbBswr-vujO8blVwG57P5kEc0rI4Yz9L58zJREQo1hNvVx8h8CV84i4MjgvZtrjAoj7brwr92EFEeJJw_ln2coDFLZSlHo3knXOm-TQvMbcFew9TUPKT_mQL2XHFnolwA5WjAMtUU7KrSZt6erd7hxLophzFbB4cwS4ShlshpZXxQtD5GCO-dWf4TJUH2tqBMg4FqgcF3nuAAmOalo17WeT9afjeSMCoBU9QWb935Np6OKWENIrWER0KviK7TKnZPGCJRcwZY9hQVJZKW-YPxdZOqFnxeZJPBjHsPnhvKzpu0syfN5bcC_X4WOr2fzGrG9kDopgNgljecNyS8GjhP5Z7M0BzkjjpYQza4gLFVwzWiYJM-hy2YsLATu7FTWLpvKEooflETkPx02lYrrEHSeaPUX0HaLE-odShZItRIO0L8SbgTMB4gXqZfaGiB8CMbJ_E0Fv_zJGdWb0B82RTaZp2rMv1bSLnjVyBfTy3rb1zHm6ONBdGaxXL4nXX2cWJuinqrp2crf4oS5Xdgvk9uuOLv9UnPPeOh5BOWCkooyJVQYfiO3QWXiu-X4lrNxAjw4hEtuXmAyWyO3QircHMJkVoKS3ljFcZvvUKVM08pr47gLcoadhtFi5wL6j7XcKhwB4lTdKwt7HT-otZF86As7ubwUsMVIZ9TtjsECIdIgjvJr2q8koZTvWKCfrR9tMLb0gITvamD7d1rVzudDfdvEXmE0z42UnpEg3lJnI52Rl8bUIaSW0tvOY7W723h3l434otg1JPEOIDUvSK7Z8uaCxoYWbX1HfdBVUHjSXGWRA0wCNn_9ikW9GK4myNSQI8DaydbOQAMtUFDzduaFtzhEY8sakR9sLNn0bIJGaEFg4V4kK6-DHtCH9wz2ZwZ8ymhAUQlelzIGm9IFqf4IfZlzD5rByZiAtdfTafpX83_hj6nsBeV1ipbJC2Fd3WL4XmsyvkJcqe0szXAWV3KHKIhdFMokbkZCPlxSxWeUU3K3iiBC-bI7iO8syQnzrGhL0vONAs6FfhtW6JBT6cO-tvvE_wxAqVsH9MfllX1YAm1yG_ykbZfYL78cAQwVGkVTaXuBbuWY-epVxgryDQL54t-XqEJ_PCIbo9HraciI1j1Z4kZSrPKhhBwPfdfgRtdbLUVRbnhD1iVU1ERZ1gdOAOoccyv95fOl2pao0NZMcZJYAXb_RTLkec9L6lDq8hq7KC908I678xCMa4__2mDeW06LDVZJecxteblpUVzsYNW5tFgSDKcZlfD3NWWZZ9Rf8kzEy-B02I_5jOxwIg3mdxAImhAT99qYGdabTAWHHcAVNuy7vpWivybcd-PoNXDxpwiMDldXhar1obwmZ2s9I-4mngwsAHTctKwEtwobWFCBA8wx4nJ5usGz_FT2-BXu9Oqn0-HVMzRDvsUdp8vXelcDJPTediZJxDENncI7hf6i7g-nKx31gsBC8J2OqrLYgCTx9hURyYX_B65b5PE6fB9XG3_U3uQQnRdHqzBOTbKCHQ4kTmU5Ni7O6_GEITxq21D-STuRzDkXwNU6N7jU4A83uB91fhzJtVCVG8itz2qwuNwWVKzOndqaXy2YBP_4aPTxP5vpuTyFUSz1jbLVOdSmWpY1mq_GHTgKAEV7-lWVODsACWAtLDe6HNsccEDoz8thZk2BG8EcUkoRW94rYUzoVZBaV2kV3SrQoZsk5pX5xTZBG7ZQ0CZRgmGb_wVjXFdOKBZcc_1yLQ85s2IfTc_DXxXoYovIIfCZZyW32kf77-mto0CMK0eFbr6Lhd-RSPg23Vl-XEiMSUS6sYGfxo1fc3biyeqL-BOkdwdkBsEPmsC0a2zOR7jI9c2SnFQWf4AnyBrwuOSTXOGQGd6OBtUs_9FhEBkQ8fbaopbUITKgwI_o6vXw0nTOZuGgrCOkKFI6jKJlQFZZ7JU1AamI2QaWaSkT-qmN9trzwWJN6FFR34hPVKG5O1aor4Twt2rHhJfYJu3Tvl2M04U2JLTyzkp3qV6UFmH1FcXN_AaD3DMyAbNEqfB1h5zLIPvH-YvQDB9-GLSmlqXWrAFV350hxzQzkTx0N01xBSYwI0_6Gm7axFCPLfYlJkgzf0faVq5LJVxMN8vWde1XTRWRwDMYRUnfFLVJ6MptRrS4_SVgK5hIg79OIjYeYr5g-D-FQ0SGOWzpkU06HXGaArtPjlxovphLoDN20XVX72hZ_KvYMgmrhpmYVVbx0aHgZjSIZGk3Br9e7aM87DhFv0Xhjzr3siwna4h8f8yrvWXm0QzW2ZtMAvscj0iwJzeXlo7z-K9apwFJiE3gC4AJ3HefjsVQRg8znAlc0BaTPs93yGSHLD_heLOeDxAM_4HJzKVmgvf5xiMJjhmwcvuA-iqWZ-ctdUcaVgiEYOCUS4uwzDEbJ6qMcoPvbzqYbvPmdUjvOfF5kuCIj5J8AtHLqzt_KQzqPgOuIIDFnMsnGwhzzBQvvoDuBpSM0Rhjjj9YL30i7TAtI4e6fli_gCmnKQLap-2LbY-CUmii6NAH-Y9BYYgKGeiMheJ6DXG97wlvCzyMvPG26EseioMzPhBjijDuQcxY79jBjS3rOdCFcsvZhwkphUd1qjedUVEBSxGGYEKHFK-BrFHkBE090A3jCxQiISXAqvaI8489gPD8MVWbrnicoy9ABQMg2rCAuHwx5ex2tOlqfLeVxyPU3AnrVlvSmZG24T2QNTrx6dj0rcXmohyntec-acgvO9NYQla2DkF9A8szjUPDVwxcXQE5KQDsRO_9OJqCBwnQC8K_c-PsVgCzjag-LMZsF6Whel9OwSKogcGoEY6xioshyzOpXmvq5elqLtqtU3Enw0jofRmBWuuF9p1mZdz6ntXmlXmxmuDfPCDSQN1PJOkdNmo8QsbcG-DDCDp7dWo_0XexRW77bcx2KHAi5Cw8HcehCug5mbNWOca1K_afQgI-38ltpV-yLrUXwYiLpSf4hoVAsU30_OrBw8AVGjILUkhx-ArcQ4YRCpUt_bT6FC1mhKh00R8Fn6QN5gEut8OOj0xzHRrSWOJpU85355-bLlj4iQllMeUOTib1cP5zJbsZthZKOLA6Husuch_ud5YLgb7zZWe_M_nWk-OHC2ujJ6O8gn2ea4lOYbwPXhazS7Wx2d8Pyhk2ivUvEm18RJ8ddP3JYwd_nCmzOC1dfM2RbvPxAAiXCJruZWdyh33yqIbIG9Jk6jG0vjgBS2cA1mhvrEOCvK5PCYTop3nOLNC27MqP6ZK30JXlXJ1SPOWZCCljuBK-tHl4ZRqAsgwshp08g70nWFOWZ2EfkdZFo-Gm9UDXyOfUnWDFWm6qJhmuyfeegLOd2n7g2_IXy-hFOvxUjnuFhOCzcXpNrOgQ5ezaKlmahBEBDWT6zouddn9tqYnDyiCwhA8DAdR9o-hlc47fAH8nN7riQhSUte5yGjcInnIueHCrhLbVmBwF7IWGhPVQT16SW2dPtJ2nI1qLakmRf6aUZOQ_zAIujxXudqFE7vieSZ5ENd3aYRNXC4txkkSLRTkEEsxND3Li02v_r5io7V6NDhnpi17n79wmNZ0-9MpVqnCD1vqE5pxXF0aMi9B99qT_Y1MbURVny34X6kxhnyEhkMg4T5h3OaXn-KHqm_waa_J3COBX3bCLEge8NKM0amH2MKiKPCuMttfhXiwjToMh0QGPgeU2Mf5TctJaRd6YiAMSFsoHZowci038BJXRkL9XbvBUFpnmJSuTHjncOXRW_hTxEqWgGYE4DRLey75JZJm2657mm79ODNnDrQwZqWaDeS501A9roaS7-5KH40KyVjKo22HEz-kSNPt4v-90I1bjutpVNrU43-vjheG55mWKFc6VMlM_pRkgwlHJjeaj2Iy9C6jTJMZj1GxpnLn6rfFzrl5idm3ieFR6vjzVGxHf5fNhyUvJvO1xW9NMaDlKksKDPiqvNCk_JNCELiZs8--mwBkY5dYBvc-rbTTsQBjAUMRp5TyOtc8Tp8leh-UzGTfi8ip4FFdoc41MZBQk0KCdB8_mQh3o9_Mcj2VcWYNOYxvj4gAXdfHVDMAGS5rB8mGC4ncm4mi75KxJz8iDAae7hEJ1kbGDA6n0QVTIVmX3a0im2yppsB76w-3OGXB84-wrv2xsKloAKvspMz3vaDGCBZrpP_Bum5xO2YZcXiCnrrgiYzkzZJn9jFIHuMK-gD1JLq4gmgcHWNOR3iH2Ha1xtTQH1Rp3WcttDpkkXqbKH6mLMwvhSruwUTf3Dw2OlsHMrMRzdQ8CevK7ko-iX3rcd5wonNMxg3Cg8xqaI4xlkA_fEi7dxOFOeIDjjGcSwQB7Rj7JXBP5qmaFFoN8602MuU9HmMSHpp6zFxPstKFQlGO4TLyIsjatz6qeit55t1wLbfumu7DjFjjruFmmJTAyegbpeqqAvCHWIfZOizPsNvJNTNP71FgeSsB5LrOnzrpZFeR1a7V3Bsk5lHyPQOFFOLuWuMoy0RDF-iPKCAm3VECyLjQDbFFQJkfp96SEZ9keHz75VWw_7fINrhmU_vCZKFLFdHH-CB34rxpM9ztLZZDh8KwreEC2Jq45dsJc0LS1NYzaeqkeSsoiJpkSdP4J0tJrabqpnXJx54dZtZte_1HW4cVWX2tWD2B46Ltg3uP3ROG_DA_E17IfOZjMz-VtWibqRiswCNG9Tpen_N6sXY5d05kHu_zjNVQ4D4EUVkbwioFDgj01WwWhGt_AchqB07P7m9PNYPi5oUgSYbx6EB-dE1I_RaC70_hsJJE5Zdwa2IZOoBUrOcODMjDSuuYDYd0VwHKyGequqif4s0EFRnnaMsfydpsf3fnhoys13aS9Tgl6oM7UFZwIIwnxUYB6Fi3PRvE7fB17jtgSh7RgOnlwfhVGnQPKGguZpP7POm6B5sC2OKLxAvMbrfpeYmxO-mxEC2XtL8QKI1DewqsQcpDx7eRNmUYbQI5sJhMw3vbyprdIwQxsL1M4dvPI4RdmvN_l8nhE-0PYCZIr_doCGCCfSR8N2e1gMtut22CP7SixWPJX2mKoUHZ4nil6VIF41Wu_rPOgKQCgrrSV_qMjn4HH5uRt7gQYRFetp8eEpZp_IWaO3UZC73LLvkhIu1HZdb4KoPBbJxRgaEoLsqOG7wA84cbzinYplBRaC4jvHY-_iCC5P3es4VuMrrroT6X8xZ529pZn33RkPGMLHSUl-8MPRUOl7Kl0X-A94lVU_ksP5uNhOBe53xwWE53nibKxr_lrwsPJmQhIskdQuaN1NfQb3-NfLhK7QLHXV_7hjExZmtnUzr5wOF36MTpzVPdAu5drCUj3UreDmKFNVCmaSepSW4lHhNkCmQf4LKmtKJh4K2HbpsLMVPeso4WXnflWXsU9wsKLs9aTkVggHy974SEGAteava7rIdqj6PoeCYU2XhfqHT_jPPQh3dP5b_siI6l9GxCDNaKmXv44ZCg4a1S7-eD0V9wP54OPa7B3KRTeEP8h-J0sOAG4od3lQeb8Ir43iE5CnyVbQZ5bNdXzl051wYl1XODVip7k3dpKcGaio1e2z1M_dyz6Tl84FJVQog== -------------------------------------------------------------------------------- /nbs/4 - Convert Dataset into Vectors.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 18, 6 | "id": "03e95af1", 7 | "metadata": {}, 8 | "outputs": [], 9 | "source": [ 10 | "import pathlib\n", 11 | "import pandas as pd\n", 12 | "import random\n", 13 | "\n", 14 | "BASE_DIR = pathlib.Path().resolve().parent\n", 15 | "DATASET_DIR = BASE_DIR / \"datasets\"\n", 16 | "EXPORT_DIR = DATASET_DIR / \"exports\"\n", 17 | "EXPORT_DIR.mkdir(exist_ok=True, parents=True)\n", 18 | "SPAM_DATASET_PATH = EXPORT_DIR / \"spam-dataset.csv\"" 19 | ] 20 | }, 21 | { 22 | "cell_type": "code", 23 | "execution_count": 6, 24 | "id": "f65cc36d", 25 | "metadata": {}, 26 | "outputs": [ 27 | { 28 | "data": { 29 | "text/html": [ 30 | "
\n", 31 | "\n", 44 | "\n", 45 | " \n", 46 | " \n", 47 | " \n", 48 | " \n", 49 | " \n", 50 | " \n", 51 | " \n", 52 | " \n", 53 | " \n", 54 | " \n", 55 | " \n", 56 | " \n", 57 | " \n", 58 | " \n", 59 | " \n", 60 | " \n", 61 | " \n", 62 | " \n", 63 | " \n", 64 | " \n", 65 | " \n", 66 | " \n", 67 | " \n", 68 | " \n", 69 | " \n", 70 | " \n", 71 | " \n", 72 | " \n", 73 | " \n", 74 | " \n", 75 | " \n", 76 | " \n", 77 | " \n", 78 | " \n", 79 | " \n", 80 | " \n", 81 | " \n", 82 | " \n", 83 | " \n", 84 | " \n", 85 | "
labeltextsource
0hamGo until jurong point, crazy.. Available only ...sms-spam
1hamOk lar... Joking wif u oni...sms-spam
2spamFree entry in 2 a wkly comp to win FA Cup fina...sms-spam
3hamU dun say so early hor... U c already then say...sms-spam
4hamNah I don't think he goes to usf, he lives aro...sms-spam
\n", 86 | "
" 87 | ], 88 | "text/plain": [ 89 | " label text source\n", 90 | "0 ham Go until jurong point, crazy.. Available only ... sms-spam\n", 91 | "1 ham Ok lar... Joking wif u oni... sms-spam\n", 92 | "2 spam Free entry in 2 a wkly comp to win FA Cup fina... sms-spam\n", 93 | "3 ham U dun say so early hor... U c already then say... sms-spam\n", 94 | "4 ham Nah I don't think he goes to usf, he lives aro... sms-spam" 95 | ] 96 | }, 97 | "execution_count": 6, 98 | "metadata": {}, 99 | "output_type": "execute_result" 100 | } 101 | ], 102 | "source": [ 103 | "df = pd.read_csv(SPAM_DATASET_PATH)\n", 104 | "df.head()" 105 | ] 106 | }, 107 | { 108 | "cell_type": "code", 109 | "execution_count": 7, 110 | "id": "b72886e5", 111 | "metadata": {}, 112 | "outputs": [], 113 | "source": [ 114 | "labels = df['label'].tolist()\n", 115 | "texts = df['text'].tolist()" 116 | ] 117 | }, 118 | { 119 | "cell_type": "code", 120 | "execution_count": 8, 121 | "id": "2a57afc1", 122 | "metadata": {}, 123 | "outputs": [ 124 | { 125 | "data": { 126 | "text/plain": [ 127 | "('spam',\n", 128 | " 'PRIVATE! Your 2004 Account Statement for 07742676969 shows 786 unredeemed Bonus Points. To claim call 08719180248 Identifier Code: 45239 Expires')" 129 | ] 130 | }, 131 | "execution_count": 8, 132 | "metadata": {}, 133 | "output_type": "execute_result" 134 | } 135 | ], 136 | "source": [ 137 | "labels[120], texts[120]" 138 | ] 139 | }, 140 | { 141 | "cell_type": "code", 142 | "execution_count": 13, 143 | "id": "75ccc8f1", 144 | "metadata": {}, 145 | "outputs": [ 146 | { 147 | "data": { 148 | "text/plain": [ 149 | "{'0': 'ham', '1': 'spam'}" 150 | ] 151 | }, 152 | "execution_count": 13, 153 | "metadata": {}, 154 | "output_type": "execute_result" 155 | } 156 | ], 157 | "source": [ 158 | "label_legend = {\"ham\": 0, \"spam\": 1}\n", 159 | "label_legend_inverted = {f\"{v}\": k for k,v in label_legend.items()}\n", 160 | "label_legend_inverted" 161 | ] 162 | }, 163 | { 164 | "cell_type": "code", 165 | "execution_count": 17, 166 | "id": "63a2b378", 167 | "metadata": {}, 168 | "outputs": [], 169 | "source": [ 170 | "labels_as_int = [label_legend[x] for x in labels]\n", 171 | "# label_legend_inverted[str(labels_as_int[120])]" 172 | ] 173 | }, 174 | { 175 | "cell_type": "code", 176 | "execution_count": 27, 177 | "id": "1ae380b7", 178 | "metadata": {}, 179 | "outputs": [], 180 | "source": [ 181 | "random_idx = random.randint(0, len(labels))\n", 182 | "\n", 183 | "assert texts[random_idx] == df.iloc[random_idx].text\n", 184 | "\n", 185 | "assert labels[random_idx] == df.iloc[random_idx].label\n", 186 | "\n", 187 | "assert label_legend_inverted[str(labels_as_int[random_idx])] == df.iloc[random_idx].label" 188 | ] 189 | }, 190 | { 191 | "cell_type": "code", 192 | "execution_count": 29, 193 | "id": "52b7be64", 194 | "metadata": {}, 195 | "outputs": [], 196 | "source": [ 197 | "from tensorflow.keras.preprocessing.text import Tokenizer" 198 | ] 199 | }, 200 | { 201 | "cell_type": "code", 202 | "execution_count": 30, 203 | "id": "0f1bb7ab", 204 | "metadata": {}, 205 | "outputs": [], 206 | "source": [ 207 | "MAX_NUM_WORDS = 280" 208 | ] 209 | }, 210 | { 211 | "cell_type": "code", 212 | "execution_count": 33, 213 | "id": "4a8e800d", 214 | "metadata": {}, 215 | "outputs": [ 216 | { 217 | "data": { 218 | "text/plain": [ 219 | "[[55, 66, 10, 123, 143, 204, 169, 77, 68, 187],\n", 220 | " [64, 8],\n", 221 | " [59, 10, 25, 4, 2, 211, 95, 2, 2, 110, 104],\n", 222 | " [8, 182, 21, 8, 181, 185, 67, 182],\n", 223 | " [1, 121, 124, 80, 2, 80, 263, 118],\n", 224 | " [94,\n", 225 | " 77,\n", 226 | " 175,\n", 227 | " 136,\n", 228 | " 129,\n", 229 | " 31,\n", 230 | " 6,\n", 231 | " 44,\n", 232 | " 101,\n", 233 | " 38,\n", 234 | " 125,\n", 235 | " 3,\n", 236 | " 41,\n", 237 | " 14,\n", 238 | " 13,\n", 239 | " 92,\n", 240 | " 64,\n", 241 | " 2,\n", 242 | " 93,\n", 243 | " 2],\n", 244 | " [208, 7, 9, 32, 38, 2, 40, 12, 113, 12, 38],\n", 245 | " [76, 212, 18, 120, 136, 76, 18, 14, 49, 2, 18, 276],\n", 246 | " [76, 4, 3, 20, 136, 2, 199, 2, 174, 26, 174, 66],\n", 247 | " [166, 18, 141, 37, 114, 8, 111, 2, 2, 5, 40, 14, 59, 26, 5, 141, 249, 59, 16],\n", 248 | " [42, 254, 33, 91, 245, 6, 1, 121, 79, 2, 89, 11, 135, 267, 96],\n", 249 | " [2, 211, 209, 47, 2, 196, 110, 6, 93, 2, 255, 78, 134, 56],\n", 250 | " [257,\n", 251 | " 3,\n", 252 | " 20,\n", 253 | " 216,\n", 254 | " 4,\n", 255 | " 90,\n", 256 | " 159,\n", 257 | " 59,\n", 258 | " 10,\n", 259 | " 88,\n", 260 | " 196,\n", 261 | " 199,\n", 262 | " 110,\n", 263 | " 5,\n", 264 | " 174,\n", 265 | " 2,\n", 266 | " 44,\n", 267 | " 104,\n", 268 | " 181,\n", 269 | " 82],\n", 270 | " [267,\n", 271 | " 136,\n", 272 | " 14,\n", 273 | " 5,\n", 274 | " 170,\n", 275 | " 2,\n", 276 | " 195,\n", 277 | " 3,\n", 278 | " 14,\n", 279 | " 11,\n", 280 | " 1,\n", 281 | " 1,\n", 282 | " 107,\n", 283 | " 18,\n", 284 | " 177,\n", 285 | " 14,\n", 286 | " 6,\n", 287 | " 35,\n", 288 | " 7,\n", 289 | " 3,\n", 290 | " 20,\n", 291 | " 136,\n", 292 | " 6,\n", 293 | " 4,\n", 294 | " 34,\n", 295 | " 49],\n", 296 | " [1, 20, 4, 16, 40, 35],\n", 297 | " [2, 18, 5, 10, 5, 246, 110, 186, 37, 118, 122, 50, 123],\n", 298 | " [163, 135, 42, 264, 118],\n", 299 | " [8, 53, 25, 225, 268, 183, 1, 147, 80, 206, 100, 1, 206],\n", 300 | " [27, 5, 144, 8, 251, 5, 144, 69, 213],\n", 301 | " [206, 108, 202, 5, 110, 46, 2, 2],\n", 302 | " [9, 22, 53, 3, 225, 268],\n", 303 | " [98, 2, 14, 25, 66],\n", 304 | " [21, 119, 190, 67, 54, 9, 130],\n", 305 | " [1, 7, 67, 1, 55, 126, 129, 126, 8, 46, 185],\n", 306 | " [44, 144, 1, 29, 214, 41, 40, 3],\n", 307 | " [30, 2, 4, 42, 140, 32, 11, 9, 233, 80, 42, 54, 1, 197],\n", 308 | " [197, 18, 269, 21],\n", 309 | " [147, 3, 5, 24, 3, 127, 147, 3, 100, 4, 24, 3, 18, 168, 36, 3, 251, 7, 45],\n", 310 | " [42, 101, 84, 5, 31, 112, 226, 3, 58, 27],\n", 311 | " [165, 1, 22, 61, 219, 13, 251, 38, 197],\n", 312 | " [270,\n", 313 | " 92,\n", 314 | " 32,\n", 315 | " 49,\n", 316 | " 22,\n", 317 | " 241,\n", 318 | " 3,\n", 319 | " 32,\n", 320 | " 230,\n", 321 | " 89,\n", 322 | " 12,\n", 323 | " 37,\n", 324 | " 22,\n", 325 | " 155,\n", 326 | " 79,\n", 327 | " 2,\n", 328 | " 272,\n", 329 | " 40,\n", 330 | " 161],\n", 331 | " [203,\n", 332 | " 80,\n", 333 | " 68,\n", 334 | " 10,\n", 335 | " 34,\n", 336 | " 25,\n", 337 | " 6,\n", 338 | " 63,\n", 339 | " 206,\n", 340 | " 123,\n", 341 | " 166,\n", 342 | " 17,\n", 343 | " 6,\n", 344 | " 86,\n", 345 | " 63,\n", 346 | " 38,\n", 347 | " 6,\n", 348 | " 80,\n", 349 | " 68,\n", 350 | " 41,\n", 351 | " 10,\n", 352 | " 22,\n", 353 | " 25,\n", 354 | " 28,\n", 355 | " 43,\n", 356 | " 55,\n", 357 | " 77,\n", 358 | " 32,\n", 359 | " 178,\n", 360 | " 151,\n", 361 | " 3],\n", 362 | " [135, 132, 12, 234, 89, 3],\n", 363 | " [14, 15, 40, 5, 15, 49, 22, 3, 30, 147, 20, 4],\n", 364 | " [145,\n", 365 | " 14,\n", 366 | " 18,\n", 367 | " 2,\n", 368 | " 231,\n", 369 | " 18,\n", 370 | " 141,\n", 371 | " 35,\n", 372 | " 33,\n", 373 | " 273,\n", 374 | " 48,\n", 375 | " 83,\n", 376 | " 183,\n", 377 | " 37,\n", 378 | " 44,\n", 379 | " 27,\n", 380 | " 3,\n", 381 | " 134,\n", 382 | " 44,\n", 383 | " 3,\n", 384 | " 35,\n", 385 | " 32,\n", 386 | " 33],\n", 387 | " [64, 1, 55, 91, 34, 5, 67, 1, 176, 119, 236, 98, 2, 16, 151, 28, 103, 9, 34],\n", 388 | " [112, 226, 3, 58, 54, 7],\n", 389 | " [1, 85, 5, 213, 16, 7],\n", 390 | " [234, 126, 8],\n", 391 | " [242,\n", 392 | " 3,\n", 393 | " 6,\n", 394 | " 53,\n", 395 | " 147,\n", 396 | " 55,\n", 397 | " 1,\n", 398 | " 63,\n", 399 | " 30,\n", 400 | " 2,\n", 401 | " 85,\n", 402 | " 27,\n", 403 | " 2,\n", 404 | " 36,\n", 405 | " 234,\n", 406 | " 32,\n", 407 | " 22,\n", 408 | " 42,\n", 409 | " 2,\n", 410 | " 37,\n", 411 | " 234],\n", 412 | " [148, 55, 40, 1, 30, 2, 33, 230, 36, 20, 4, 143],\n", 413 | " [147, 1, 2, 132, 3, 1, 79, 3, 1, 99, 3, 1, 3, 28, 15, 49, 1, 45, 3, 7],\n", 414 | " [176,\n", 415 | " 43,\n", 416 | " 2,\n", 417 | " 26,\n", 418 | " 3,\n", 419 | " 18,\n", 420 | " 134,\n", 421 | " 2,\n", 422 | " 88,\n", 423 | " 14,\n", 424 | " 4,\n", 425 | " 59,\n", 426 | " 252,\n", 427 | " 141,\n", 428 | " 59,\n", 429 | " 48,\n", 430 | " 26,\n", 431 | " 31,\n", 432 | " 14,\n", 433 | " 193],\n", 434 | " [97, 24, 3],\n", 435 | " [143, 1, 153, 3, 38, 18, 154, 1, 60, 51, 52],\n", 436 | " [44],\n", 437 | " [3, 39, 213, 10],\n", 438 | " [234, 98, 16],\n", 439 | " [203, 27, 279, 36, 13, 1, 171, 200, 263, 4],\n", 440 | " [8, 121, 58, 53, 1, 60, 1, 208, 79, 2, 55, 2, 5, 1, 42, 32, 4, 24, 14],\n", 441 | " [61, 3, 89, 12, 190, 65, 3, 12, 10, 274],\n", 442 | " [4, 38, 51, 52, 4, 9, 6, 3, 4, 14, 51, 52],\n", 443 | " [135, 120, 4, 193, 220, 28, 34, 88],\n", 444 | " [1,\n", 445 | " 22,\n", 446 | " 3,\n", 447 | " 241,\n", 448 | " 21,\n", 449 | " 83,\n", 450 | " 18,\n", 451 | " 1,\n", 452 | " 3,\n", 453 | " 13,\n", 454 | " 1,\n", 455 | " 63,\n", 456 | " 178,\n", 457 | " 5,\n", 458 | " 156,\n", 459 | " 1,\n", 460 | " 171,\n", 461 | " 6,\n", 462 | " 3,\n", 463 | " 269,\n", 464 | " 21,\n", 465 | " 167,\n", 466 | " 89,\n", 467 | " 5,\n", 468 | " 42,\n", 469 | " 105,\n", 470 | " 1,\n", 471 | " 6,\n", 472 | " 121,\n", 473 | " 20,\n", 474 | " 114,\n", 475 | " 2,\n", 476 | " 137,\n", 477 | " 42,\n", 478 | " 105,\n", 479 | " 1,\n", 480 | " 42,\n", 481 | " 105,\n", 482 | " 18,\n", 483 | " 63,\n", 484 | " 21],\n", 485 | " [5, 74, 6, 5, 37, 134],\n", 486 | " [36, 3, 58, 61, 147, 210, 17, 31, 51, 52],\n", 487 | " [90, 215, 14, 25, 9, 26, 31, 181, 206, 49, 56, 59, 108, 202, 17],\n", 488 | " [105, 112, 26, 149, 10],\n", 489 | " [132, 157, 3],\n", 490 | " [183, 6, 17, 15],\n", 491 | " [18, 254, 20, 2, 256, 41, 4, 90, 14, 16, 18, 144, 91, 1, 279, 208, 9, 12],\n", 492 | " [62, 24],\n", 493 | " [69, 4, 15],\n", 494 | " [105, 7, 13, 64, 27, 1, 71, 83, 31],\n", 495 | " [64, 1, 23, 130, 185, 80, 198, 206, 80, 198, 35, 1, 194],\n", 496 | " [76, 4, 1, 60, 2, 3, 22, 15, 18, 44, 3, 24, 40, 4, 199, 26],\n", 497 | " [96, 9, 70, 78, 277, 70, 35, 8, 14, 12, 93, 11, 2, 49, 46, 28, 190, 12],\n", 498 | " [257, 46, 4, 2, 37, 2, 174, 110, 2],\n", 499 | " [147, 3, 89, 5, 74, 13, 40, 49, 15],\n", 500 | " [1, 2, 137, 16, 11, 273],\n", 501 | " [67, 29, 133],\n", 502 | " [274, 157, 24, 3],\n", 503 | " [115, 227, 138, 34, 91, 31, 36, 235],\n", 504 | " [135, 135, 157, 24, 3, 53, 147, 3],\n", 505 | " [8, 29, 26, 12, 31],\n", 506 | " [1, 60, 26, 12, 3, 59],\n", 507 | " [258, 1, 60, 4, 6, 35, 3, 40, 6],\n", 508 | " [1, 38, 3, 172, 117, 28, 60, 172],\n", 509 | " [219, 32, 188, 51, 52, 37, 61],\n", 510 | " [69, 32, 5, 118, 92, 14, 4, 53, 117, 36, 77],\n", 511 | " [105, 112, 26, 149],\n", 512 | " [135, 147, 3, 26, 12, 30, 31],\n", 513 | " [64, 1, 60, 16, 5, 144, 2, 91, 115, 115],\n", 514 | " [3, 35, 33, 10, 5, 15, 22],\n", 515 | " [246, 106],\n", 516 | " [1, 26, 3, 149, 121, 20, 27, 12],\n", 517 | " [14, 54, 8, 233, 16, 1, 66, 99, 25, 114, 6, 81, 114, 6, 42, 1, 185, 49, 7],\n", 518 | " [183,\n", 519 | " 1,\n", 520 | " 2,\n", 521 | " 93,\n", 522 | " 2,\n", 523 | " 100,\n", 524 | " 13,\n", 525 | " 28,\n", 526 | " 101,\n", 527 | " 21,\n", 528 | " 42,\n", 529 | " 101,\n", 530 | " 10,\n", 531 | " 34,\n", 532 | " 5,\n", 533 | " 151,\n", 534 | " 1,\n", 535 | " 209,\n", 536 | " 10,\n", 537 | " 49,\n", 538 | " 7],\n", 539 | " [42, 140, 32, 41, 2, 13, 92, 227],\n", 540 | " [71, 46, 59],\n", 541 | " [203, 36, 2, 235],\n", 542 | " [105,\n", 543 | " 2,\n", 544 | " 33,\n", 545 | " 4,\n", 546 | " 9,\n", 547 | " 13,\n", 548 | " 64,\n", 549 | " 27,\n", 550 | " 43,\n", 551 | " 214,\n", 552 | " 164,\n", 553 | " 1,\n", 554 | " 10,\n", 555 | " 6,\n", 556 | " 22,\n", 557 | " 1,\n", 558 | " 116,\n", 559 | " 15,\n", 560 | " 6,\n", 561 | " 22,\n", 562 | " 49,\n", 563 | " 7,\n", 564 | " 65,\n", 565 | " 6,\n", 566 | " 22,\n", 567 | " 105],\n", 568 | " [10, 10, 54, 38, 54, 8, 247, 92, 2, 85, 8],\n", 569 | " [48, 26, 88, 16, 76, 3, 20, 216, 4, 209, 37, 199],\n", 570 | " [2, 237, 149, 1, 23, 185, 66, 68, 10, 169, 8, 165, 185],\n", 571 | " [18, 59, 9, 2, 33, 95, 5, 2, 2, 39, 6],\n", 572 | " [264, 187, 8],\n", 573 | " [1, 85, 54, 43, 43, 20, 15, 2],\n", 574 | " [115,\n", 575 | " 136,\n", 576 | " 64,\n", 577 | " 16,\n", 578 | " 31,\n", 579 | " 183,\n", 580 | " 16,\n", 581 | " 14,\n", 582 | " 4,\n", 583 | " 15,\n", 584 | " 4,\n", 585 | " 22,\n", 586 | " 1,\n", 587 | " 20,\n", 588 | " 34,\n", 589 | " 21,\n", 590 | " 99,\n", 591 | " 2,\n", 592 | " 39,\n", 593 | " 91,\n", 594 | " 123,\n", 595 | " 219,\n", 596 | " 22,\n", 597 | " 14,\n", 598 | " 8],\n", 599 | " [1, 85, 4, 15],\n", 600 | " [48, 121, 95, 12, 1, 20, 2, 182],\n", 601 | " [268, 46, 76, 76, 69, 29, 1, 256, 191, 41, 8],\n", 602 | " [42, 92, 14, 4, 2, 237, 6, 20, 32],\n", 603 | " [76, 212, 18, 120, 136, 76, 18, 14, 49, 2, 18, 276],\n", 604 | " [170, 1, 2, 36, 22, 1, 1, 41, 16, 6, 7, 2, 235, 16, 7, 13, 92],\n", 605 | " [7, 173, 6, 45, 3, 160],\n", 606 | " [145, 4, 14, 18, 16, 7, 145, 3, 14, 7],\n", 607 | " [112, 3, 41, 54, 1, 39, 125, 209],\n", 608 | " [53, 142, 7, 22, 7, 4],\n", 609 | " [1, 58, 243, 150, 7, 63, 38, 3, 32, 33, 67, 236, 1, 60, 269, 5, 81, 2],\n", 610 | " [108, 1],\n", 611 | " [61, 9, 5, 15, 5],\n", 612 | " [98, 14, 176, 3, 188],\n", 613 | " [42, 64, 13, 238, 1, 38, 25, 74, 28, 1, 8, 38, 238, 8, 198, 32, 151],\n", 614 | " [43, 24, 2, 259, 3, 217, 22, 3, 216, 4, 199, 26, 174, 66],\n", 615 | " [46, 172, 42, 151, 42, 151, 117, 123, 16, 21],\n", 616 | " [76, 1, 7, 7, 198, 167, 1, 86, 12, 56, 188, 86, 12, 2, 103, 43, 77],\n", 617 | " [3, 24, 4, 8, 20, 136, 25, 37, 4, 56, 2, 4, 272, 25, 174, 260],\n", 618 | " [183, 43, 14],\n", 619 | " [7, 30, 12, 22, 5, 21, 148, 237],\n", 620 | " [18, 14, 2, 174, 26],\n", 621 | " [257, 18, 141, 44, 63, 199, 16, 218, 11, 9, 88, 2, 259, 8, 26, 47],\n", 622 | " [118, 9, 7, 74, 49, 22],\n", 623 | " [24, 2, 4, 27, 3, 20, 4, 48, 26, 174],\n", 624 | " [1, 60, 98, 2, 96, 35, 33, 66, 34],\n", 625 | " [119, 187, 65],\n", 626 | " [62, 35, 36],\n", 627 | " [30,\n", 628 | " 21,\n", 629 | " 22,\n", 630 | " 3,\n", 631 | " 58,\n", 632 | " 261,\n", 633 | " 133,\n", 634 | " 1,\n", 635 | " 30,\n", 636 | " 261,\n", 637 | " 103,\n", 638 | " 4,\n", 639 | " 95,\n", 640 | " 32,\n", 641 | " 2,\n", 642 | " 21,\n", 643 | " 69,\n", 644 | " 168,\n", 645 | " 3,\n", 646 | " 108,\n", 647 | " 20,\n", 648 | " 2,\n", 649 | " 10,\n", 650 | " 234,\n", 651 | " 1,\n", 652 | " 20,\n", 653 | " 234,\n", 654 | " 16,\n", 655 | " 3,\n", 656 | " 10,\n", 657 | " 5,\n", 658 | " 190,\n", 659 | " 21,\n", 660 | " 14,\n", 661 | " 22,\n", 662 | " 1],\n", 663 | " [24, 3, 77, 10],\n", 664 | " [94,\n", 665 | " 53,\n", 666 | " 111,\n", 667 | " 8,\n", 668 | " 153,\n", 669 | " 8,\n", 670 | " 111,\n", 671 | " 154,\n", 672 | " 12,\n", 673 | " 127,\n", 674 | " 111,\n", 675 | " 236,\n", 676 | " 65,\n", 677 | " 44,\n", 678 | " 181,\n", 679 | " 137,\n", 680 | " 12,\n", 681 | " 4,\n", 682 | " 26,\n", 683 | " 65,\n", 684 | " 47],\n", 685 | " [135, 135, 53, 117, 219, 13],\n", 686 | " [42, 91],\n", 687 | " [160, 35, 26, 148],\n", 688 | " [190, 7],\n", 689 | " [211, 4, 27, 8, 58, 277, 5, 9, 10, 110, 2],\n", 690 | " [79, 25, 39, 79, 261, 25, 46, 5, 2, 176, 255],\n", 691 | " [1, 66, 175, 50],\n", 692 | " [80, 9, 77, 3, 26, 6, 214, 162],\n", 693 | " [44, 44, 1, 35, 23, 49],\n", 694 | " [32, 116, 114, 47, 5, 14, 59, 95, 55, 2, 27, 8, 39, 8, 40, 236],\n", 695 | " [68, 181, 1, 2, 1, 119, 10, 1, 4, 28, 38, 32, 206, 194],\n", 696 | " [135, 95, 12, 54, 16, 5, 144],\n", 697 | " [14, 18],\n", 698 | " [4, 39, 15, 178, 56, 128, 10, 275],\n", 699 | " [1, 58, 3, 24, 29, 3, 148, 5, 101],\n", 700 | " [183, 85, 32, 16, 5],\n", 701 | " [5, 268, 97, 9, 274, 14, 161],\n", 702 | " [155, 3, 2, 7, 95, 42, 6, 272, 2, 47, 8, 212, 176, 134, 106, 2],\n", 703 | " [35, 26, 188, 23, 10, 88, 173, 35, 47, 21, 148, 172],\n", 704 | " [135, 1, 7, 259, 22, 155],\n", 705 | " [68, 10],\n", 706 | " [5, 9, 6, 42, 1, 20],\n", 707 | " [1, 9, 238, 44, 99, 25, 55, 25],\n", 708 | " [64, 46, 134],\n", 709 | " [76, 212, 18, 120, 136, 76, 18, 14, 49, 2, 18, 276],\n", 710 | " [3,\n", 711 | " 24,\n", 712 | " 16,\n", 713 | " 5,\n", 714 | " 5,\n", 715 | " 208,\n", 716 | " 16,\n", 717 | " 7,\n", 718 | " 6,\n", 719 | " 54,\n", 720 | " 1,\n", 721 | " 7,\n", 722 | " 3,\n", 723 | " 24,\n", 724 | " 49,\n", 725 | " 22,\n", 726 | " 17,\n", 727 | " 1,\n", 728 | " 15,\n", 729 | " 7,\n", 730 | " 204,\n", 731 | " 3,\n", 732 | " 67,\n", 733 | " 7,\n", 734 | " 24,\n", 735 | " 17,\n", 736 | " 151,\n", 737 | " 4,\n", 738 | " 65,\n", 739 | " 15,\n", 740 | " 14,\n", 741 | " 12,\n", 742 | " 15,\n", 743 | " 1,\n", 744 | " 85,\n", 745 | " 28,\n", 746 | " 1,\n", 747 | " 38,\n", 748 | " 49,\n", 749 | " 3,\n", 750 | " 30,\n", 751 | " 38,\n", 752 | " 6,\n", 753 | " 6,\n", 754 | " 54,\n", 755 | " 7,\n", 756 | " 65,\n", 757 | " 118,\n", 758 | " 9,\n", 759 | " 3,\n", 760 | " 6,\n", 761 | " 1,\n", 762 | " 81],\n", 763 | " [24, 3, 34, 165],\n", 764 | " [42, 7, 31],\n", 765 | " [242,\n", 766 | " 7,\n", 767 | " 45,\n", 768 | " 61,\n", 769 | " 24,\n", 770 | " 3,\n", 771 | " 178,\n", 772 | " 147,\n", 773 | " 3,\n", 774 | " 39,\n", 775 | " 2,\n", 776 | " 22,\n", 777 | " 96,\n", 778 | " 24,\n", 779 | " 3,\n", 780 | " 3,\n", 781 | " 167,\n", 782 | " 24,\n", 783 | " 3,\n", 784 | " 4,\n", 785 | " 62,\n", 786 | " 36,\n", 787 | " 3,\n", 788 | " 124,\n", 789 | " 15,\n", 790 | " 12,\n", 791 | " 24,\n", 792 | " 3,\n", 793 | " 12],\n", 794 | " [3, 20, 4, 74, 14, 3, 48, 26, 31, 2],\n", 795 | " [3, 24, 4, 8, 20, 136, 25, 209, 37, 4, 56, 2, 4, 272, 25, 174],\n", 796 | " [222, 14, 12, 205, 1, 99, 3, 6, 1, 202, 3, 185, 6, 1, 262, 22, 3, 10, 173],\n", 797 | " [74, 6, 14, 7, 1, 20, 66, 74, 10],\n", 798 | " [42, 21, 10, 45, 40, 3, 42, 78, 1, 40, 3, 3, 100, 12, 21, 167],\n", 799 | " [148,\n", 800 | " 106,\n", 801 | " 9,\n", 802 | " 3,\n", 803 | " 2,\n", 804 | " 33,\n", 805 | " 103,\n", 806 | " 134,\n", 807 | " 183,\n", 808 | " 37,\n", 809 | " 44,\n", 810 | " 85,\n", 811 | " 103,\n", 812 | " 82,\n", 813 | " 8,\n", 814 | " 106,\n", 815 | " 93,\n", 816 | " 106,\n", 817 | " 2],\n", 818 | " [46, 9, 16, 5, 144, 8, 146, 4, 176, 25, 46, 27, 8, 36, 32, 16, 46, 141],\n", 819 | " [1, 49, 46, 16, 169, 185],\n", 820 | " [257, 43, 24, 2, 259, 3, 217, 22, 3, 20, 216, 4, 199, 26, 174, 66],\n", 821 | " [115, 277, 9, 156, 144, 2, 88],\n", 822 | " [143, 1, 5, 28, 103, 85, 3],\n", 823 | " [183, 13, 10, 17, 15, 179],\n", 824 | " [1, 99, 44, 6],\n", 825 | " [230, 68, 65, 2, 29, 55, 56, 59, 26, 8, 2],\n", 826 | " [61, 65, 3, 149],\n", 827 | " [265, 3, 7, 137, 8, 4, 69, 6, 40, 152],\n", 828 | " [154, 42, 254, 7, 31, 20, 4, 62, 164],\n", 829 | " [226, 12, 58, 54, 68, 5, 133, 21, 29, 100, 5, 26],\n", 830 | " [8, 92, 98, 2, 5],\n", 831 | " [17,\n", 832 | " 7,\n", 833 | " 276,\n", 834 | " 24,\n", 835 | " 14,\n", 836 | " 5,\n", 837 | " 6,\n", 838 | " 33,\n", 839 | " 101,\n", 840 | " 51,\n", 841 | " 52,\n", 842 | " 21,\n", 843 | " 251,\n", 844 | " 59,\n", 845 | " 2,\n", 846 | " 55,\n", 847 | " 6,\n", 848 | " 22,\n", 849 | " 51,\n", 850 | " 52],\n", 851 | " [95, 103, 27, 86, 134, 226, 12, 58, 21, 1, 29, 20, 103, 10],\n", 852 | " [115, 3, 30, 2, 206, 38, 2, 58, 27, 3, 241, 40, 5, 134, 59, 40, 183, 37, 44],\n", 853 | " [3, 7, 40, 5, 15, 133, 1, 60, 10, 99, 54, 5, 15, 5, 273, 6, 13, 7, 20, 4],\n", 854 | " [197, 44, 8, 29, 12],\n", 855 | " [64, 1, 60, 4, 6, 35, 3, 40, 6],\n", 856 | " [80, 35, 3, 131],\n", 857 | " [98, 16, 143],\n", 858 | " [242, 24, 3, 22, 32, 233, 101, 22, 14, 7, 31, 219, 80, 202, 12],\n", 859 | " [33, 77, 10, 4],\n", 860 | " [48, 26, 88, 16, 76, 3, 20, 216, 4, 209, 37, 199],\n", 861 | " [20, 3, 68, 27, 32, 1, 35, 39, 13, 31],\n", 862 | " [1, 91, 1, 55, 190, 28, 7, 132, 8, 54, 86, 135],\n", 863 | " [24, 3, 210, 17, 47, 82, 249, 231],\n", 864 | " [42,\n", 865 | " 105,\n", 866 | " 267,\n", 867 | " 5,\n", 868 | " 15,\n", 869 | " 150,\n", 870 | " 22,\n", 871 | " 108,\n", 872 | " 222,\n", 873 | " 10,\n", 874 | " 3,\n", 875 | " 4,\n", 876 | " 143,\n", 877 | " 2,\n", 878 | " 12,\n", 879 | " 3,\n", 880 | " 20,\n", 881 | " 136,\n", 882 | " 4,\n", 883 | " 34,\n", 884 | " 49,\n", 885 | " 208,\n", 886 | " 34,\n", 887 | " 143,\n", 888 | " 36,\n", 889 | " 20,\n", 890 | " 4,\n", 891 | " 143,\n", 892 | " 159],\n", 893 | " [115, 1, 5],\n", 894 | " [13, 35, 106, 16, 1, 86, 40, 247, 22, 35, 33, 2, 137, 14, 201],\n", 895 | " [53, 24, 3, 178, 153, 10, 14, 5, 74, 215, 30, 3, 4, 78],\n", 896 | " [275, 160, 4, 194, 78],\n", 897 | " [147, 8, 68, 22],\n", 898 | " [9, 18, 94, 21, 1, 214, 3, 34],\n", 899 | " [115,\n", 900 | " 69,\n", 901 | " 53,\n", 902 | " 9,\n", 903 | " 18,\n", 904 | " 1,\n", 905 | " 153,\n", 906 | " 1,\n", 907 | " 29,\n", 908 | " 85,\n", 909 | " 3,\n", 910 | " 193,\n", 911 | " 14,\n", 912 | " 4,\n", 913 | " 28,\n", 914 | " 1,\n", 915 | " 20,\n", 916 | " 2,\n", 917 | " 110,\n", 918 | " 101,\n", 919 | " 27,\n", 920 | " 8,\n", 921 | " 29],\n", 922 | " [13, 51, 52, 157, 3, 34],\n", 923 | " [1, 261, 3, 51, 52],\n", 924 | " [242, 31, 21, 110, 12, 54, 8, 27, 8, 29, 45],\n", 925 | " [18, 120, 136, 83, 51, 52, 18, 9, 51, 52, 18, 9, 51, 52],\n", 926 | " [],\n", 927 | " [8, 26, 12, 34, 64],\n", 928 | " [119, 182, 38, 1, 237],\n", 929 | " [76, 1, 7, 7, 198, 167, 1, 86, 12, 56, 188, 86, 12, 2, 103, 43, 77],\n", 930 | " [],\n", 931 | " [3, 48, 137, 161, 96, 228, 51, 52, 37, 5],\n", 932 | " [1, 21, 39],\n", 933 | " [41, 153, 3, 166, 4, 143, 36, 20, 4],\n", 934 | " [91, 21, 43, 29, 269],\n", 935 | " [135, 135, 62, 154],\n", 936 | " [53, 119],\n", 937 | " [143, 24, 3, 91, 31],\n", 938 | " [5, 76, 18],\n", 939 | " [1, 154, 5],\n", 940 | " [68, 69, 62],\n", 941 | " [1, 20, 2, 107, 40, 129],\n", 942 | " [203,\n", 943 | " 3,\n", 944 | " 146,\n", 945 | " 1,\n", 946 | " 124,\n", 947 | " 3,\n", 948 | " 29,\n", 949 | " 18,\n", 950 | " 52,\n", 951 | " 31,\n", 952 | " 2,\n", 953 | " 32,\n", 954 | " 230,\n", 955 | " 28,\n", 956 | " 27,\n", 957 | " 1,\n", 958 | " 29,\n", 959 | " 177,\n", 960 | " 226,\n", 961 | " 12,\n", 962 | " 58,\n", 963 | " 28,\n", 964 | " 54,\n", 965 | " 3,\n", 966 | " 36,\n", 967 | " 33,\n", 968 | " 230,\n", 969 | " 3,\n", 970 | " 24],\n", 971 | " [64, 44, 107, 46, 65],\n", 972 | " [77, 9, 221, 277, 35, 10, 3, 29, 22, 2, 5, 10, 6, 137, 13, 2],\n", 973 | " [105, 112, 26, 149],\n", 974 | " [8, 182, 15, 32, 182, 206, 4, 66, 126, 1, 169, 32, 21, 194],\n", 975 | " [74, 47, 55, 110, 252, 2, 44, 96, 47, 66, 82, 56],\n", 976 | " [142, 140, 27, 3, 26, 12, 30, 99, 247, 2, 2],\n", 977 | " [35,\n", 978 | " 8,\n", 979 | " 214,\n", 980 | " 46,\n", 981 | " 245,\n", 982 | " 9,\n", 983 | " 46,\n", 984 | " 223,\n", 985 | " 25,\n", 986 | " 4,\n", 987 | " 266,\n", 988 | " 25,\n", 989 | " 210,\n", 990 | " 17,\n", 991 | " 59,\n", 992 | " 110,\n", 993 | " 83,\n", 994 | " 46,\n", 995 | " 169],\n", 996 | " [94],\n", 997 | " [173, 9, 114, 84, 67, 28, 173, 190, 84, 67, 167, 220],\n", 998 | " [160, 62, 220, 31, 66, 1, 60, 41],\n", 999 | " [39, 10, 6, 2, 170, 51, 52, 6, 34, 190, 170],\n", 1000 | " [160, 43, 24, 98, 2, 88],\n", 1001 | " [105, 203, 42, 118],\n", 1002 | " [183, 118, 9, 269, 10, 165],\n", 1003 | " [95,\n", 1004 | " 214,\n", 1005 | " 247,\n", 1006 | " 96,\n", 1007 | " 8,\n", 1008 | " 29,\n", 1009 | " 210,\n", 1010 | " 4,\n", 1011 | " 37,\n", 1012 | " 208,\n", 1013 | " 69,\n", 1014 | " 41,\n", 1015 | " 2,\n", 1016 | " 8,\n", 1017 | " 56,\n", 1018 | " 30,\n", 1019 | " 134,\n", 1020 | " 40,\n", 1021 | " 268,\n", 1022 | " 176],\n", 1023 | " [1, 20, 13, 163, 21, 51, 52, 71],\n", 1024 | " [37, 33, 4, 38, 34, 5, 106, 16, 5],\n", 1025 | " [157, 24, 3, 54, 3, 118],\n", 1026 | " [74, 128, 28, 5, 21, 108, 40, 46, 276, 30, 191, 84, 182, 42, 269],\n", 1027 | " [8,\n", 1028 | " 20,\n", 1029 | " 4,\n", 1030 | " 97,\n", 1031 | " 9,\n", 1032 | " 25,\n", 1033 | " 100,\n", 1034 | " 259,\n", 1035 | " 40,\n", 1036 | " 8,\n", 1037 | " 210,\n", 1038 | " 17,\n", 1039 | " 97,\n", 1040 | " 113,\n", 1041 | " 111,\n", 1042 | " 97,\n", 1043 | " 46,\n", 1044 | " 21,\n", 1045 | " 26,\n", 1046 | " 16],\n", 1047 | " [16, 7, 21, 1, 265],\n", 1048 | " [12, 206],\n", 1049 | " [44, 44, 30, 16, 22, 63, 2, 33, 28, 22],\n", 1050 | " [1, 8, 42, 31, 28, 1, 140, 38, 169, 192, 8, 238, 175, 8, 56, 96, 42],\n", 1051 | " [8, 121, 22, 243],\n", 1052 | " [151, 1, 198, 1, 20, 5, 1, 1, 20, 37, 108, 20, 5],\n", 1053 | " [1, 3, 2, 26, 162, 31, 64],\n", 1054 | " [10],\n", 1055 | " [13,\n", 1056 | " 165,\n", 1057 | " 236,\n", 1058 | " 163,\n", 1059 | " 64,\n", 1060 | " 67,\n", 1061 | " 1,\n", 1062 | " 6,\n", 1063 | " 20,\n", 1064 | " 13,\n", 1065 | " 83,\n", 1066 | " 5,\n", 1067 | " 65,\n", 1068 | " 3,\n", 1069 | " 41,\n", 1070 | " 3,\n", 1071 | " 24,\n", 1072 | " 172,\n", 1073 | " 20,\n", 1074 | " 4,\n", 1075 | " 62,\n", 1076 | " 164],\n", 1077 | " [46, 15, 37, 59, 25, 110, 109, 2, 82],\n", 1078 | " [6],\n", 1079 | " [46, 8, 107, 13, 9, 128, 123, 144, 15, 239, 123, 20, 194, 78, 130],\n", 1080 | " [61, 3, 178, 53, 24, 3],\n", 1081 | " [277,\n", 1082 | " 9,\n", 1083 | " 179,\n", 1084 | " 6,\n", 1085 | " 5,\n", 1086 | " 22,\n", 1087 | " 5,\n", 1088 | " 278,\n", 1089 | " 144,\n", 1090 | " 9,\n", 1091 | " 277,\n", 1092 | " 4,\n", 1093 | " 159,\n", 1094 | " 28,\n", 1095 | " 54,\n", 1096 | " 13,\n", 1097 | " 2,\n", 1098 | " 3,\n", 1099 | " 20,\n", 1100 | " 2,\n", 1101 | " 2,\n", 1102 | " 39,\n", 1103 | " 18],\n", 1104 | " [42, 101, 58, 54],\n", 1105 | " [121, 13, 2, 33, 228, 3, 39, 101, 205, 42, 30, 31, 17],\n", 1106 | " [21, 227, 194, 2, 5],\n", 1107 | " [157, 24, 3, 1, 99, 3],\n", 1108 | " [43, 2, 259, 3, 18, 134, 2, 88, 15, 4, 57, 95, 134, 37, 26, 31],\n", 1109 | " [246, 2, 4, 54, 24, 3, 10, 96, 36, 3, 124],\n", 1110 | " [],\n", 1111 | " [42, 98, 16, 7, 31, 238, 7, 32, 8],\n", 1112 | " [7, 44, 10, 12, 27, 46, 263],\n", 1113 | " [94, 1, 60, 140, 79, 2, 37, 85, 12, 95, 2, 95, 34, 2, 95, 106],\n", 1114 | " [155, 3, 71, 40, 161],\n", 1115 | " [4, 67],\n", 1116 | " [32, 230, 92, 2, 39, 4, 15, 162],\n", 1117 | " [46, 120, 59, 55, 2, 50, 2, 31, 106, 110, 106, 2, 255],\n", 1118 | " [5, 1, 30, 166, 2],\n", 1119 | " [39, 5, 231, 16, 18, 141, 159, 6, 116, 11, 186, 9, 59, 15],\n", 1120 | " [71, 2, 17, 88],\n", 1121 | " [164, 120, 14, 78, 220, 120, 71, 10, 4, 144, 3, 38, 5, 6, 18, 34, 5],\n", 1122 | " [15, 2, 33, 216, 30, 56, 31, 93, 2, 114, 82, 50],\n", 1123 | " [1, 76, 154, 107, 90],\n", 1124 | " [44, 7, 32],\n", 1125 | " [],\n", 1126 | " [132, 2, 225, 10, 5],\n", 1127 | " [112, 85, 3, 10, 4],\n", 1128 | " [30, 261, 13, 21, 61, 15, 36, 3, 38],\n", 1129 | " [49, 49, 10, 10],\n", 1130 | " [3, 68, 221, 4],\n", 1131 | " [8, 202, 247, 5, 9, 14, 8, 28, 27, 5, 9, 21, 155, 2, 202, 191, 30, 222, 10],\n", 1132 | " [64, 1, 14, 133, 53],\n", 1133 | " [],\n", 1134 | " [203, 1, 124, 7, 92, 17, 47, 217, 164, 27, 3, 39, 15, 226, 12, 58, 6, 112],\n", 1135 | " [135, 1, 71, 83, 67, 27, 7, 274, 17],\n", 1136 | " [64],\n", 1137 | " [115,\n", 1138 | " 138,\n", 1139 | " 40,\n", 1140 | " 7,\n", 1141 | " 61,\n", 1142 | " 111,\n", 1143 | " 8,\n", 1144 | " 41,\n", 1145 | " 25,\n", 1146 | " 137,\n", 1147 | " 12,\n", 1148 | " 4,\n", 1149 | " 26,\n", 1150 | " 10,\n", 1151 | " 6,\n", 1152 | " 34,\n", 1153 | " 91,\n", 1154 | " 27,\n", 1155 | " 37,\n", 1156 | " 12,\n", 1157 | " 16,\n", 1158 | " 11,\n", 1159 | " 31,\n", 1160 | " 45],\n", 1161 | " [7,\n", 1162 | " 173,\n", 1163 | " 4,\n", 1164 | " 2,\n", 1165 | " 12,\n", 1166 | " 32,\n", 1167 | " 205,\n", 1168 | " 1,\n", 1169 | " 45,\n", 1170 | " 7,\n", 1171 | " 173,\n", 1172 | " 28,\n", 1173 | " 205,\n", 1174 | " 1,\n", 1175 | " 45,\n", 1176 | " 5,\n", 1177 | " 150,\n", 1178 | " 10,\n", 1179 | " 7,\n", 1180 | " 173,\n", 1181 | " 5,\n", 1182 | " 204,\n", 1183 | " 191,\n", 1184 | " 276,\n", 1185 | " 1,\n", 1186 | " 26,\n", 1187 | " 191,\n", 1188 | " 7,\n", 1189 | " 204],\n", 1190 | " [160, 10, 5, 3, 24, 64, 28, 4, 62, 81, 10],\n", 1191 | " [94, 3, 18, 268, 2],\n", 1192 | " [8, 162, 1, 251, 21, 130, 206, 63],\n", 1193 | " [56, 68, 22],\n", 1194 | " [24, 3, 11, 117],\n", 1195 | " [1, 5, 186, 48],\n", 1196 | " [104, 141, 3, 31, 174, 18, 59, 158, 4, 55, 14, 18, 26, 16, 104],\n", 1197 | " [175, 4, 157, 3, 55, 142, 33, 114],\n", 1198 | " [12,\n", 1199 | " 12,\n", 1200 | " 100,\n", 1201 | " 12,\n", 1202 | " 28,\n", 1203 | " 10,\n", 1204 | " 5,\n", 1205 | " 15,\n", 1206 | " 7,\n", 1207 | " 173,\n", 1208 | " 54,\n", 1209 | " 1,\n", 1210 | " 222,\n", 1211 | " 81,\n", 1212 | " 16,\n", 1213 | " 7,\n", 1214 | " 6,\n", 1215 | " 182,\n", 1216 | " 1,\n", 1217 | " 202,\n", 1218 | " 8,\n", 1219 | " 20,\n", 1220 | " 4,\n", 1221 | " 194,\n", 1222 | " 78],\n", 1223 | " [1, 265, 256, 5, 158, 170, 31, 148, 93, 4, 186],\n", 1224 | " [99, 4, 279, 175, 22, 65, 15, 159, 185],\n", 1225 | " [1, 5, 217, 65, 43, 68, 14, 5, 190, 65, 40, 206],\n", 1226 | " [22,\n", 1227 | " 9,\n", 1228 | " 140,\n", 1229 | " 6,\n", 1230 | " 265,\n", 1231 | " 14,\n", 1232 | " 4,\n", 1233 | " 41,\n", 1234 | " 14,\n", 1235 | " 164,\n", 1236 | " 17,\n", 1237 | " 36,\n", 1238 | " 8,\n", 1239 | " 124,\n", 1240 | " 77,\n", 1241 | " 9,\n", 1242 | " 1,\n", 1243 | " 171,\n", 1244 | " 14,\n", 1245 | " 164,\n", 1246 | " 16],\n", 1247 | " [163, 6, 83, 5, 144, 3, 36, 20, 114, 10, 18, 79, 2, 55, 17, 14, 4],\n", 1248 | " [80, 9, 4],\n", 1249 | " [9, 152, 47, 23, 162, 17, 122, 56, 44, 93],\n", 1250 | " [47, 61, 1, 1, 124, 146, 33, 29],\n", 1251 | " [200, 27, 8, 214, 41],\n", 1252 | " [197, 183, 88, 9, 16, 4, 8, 237],\n", 1253 | " [23, 17, 88, 15, 6, 222, 18, 141, 6, 95, 2],\n", 1254 | " [157, 24, 5, 113, 16, 5],\n", 1255 | " [96, 9, 78, 8, 12, 76, 44],\n", 1256 | " [124, 46, 211, 11, 159, 10, 88, 95, 2, 31, 104, 159],\n", 1257 | " [80, 137, 12, 4, 26, 54, 225, 68, 5, 133, 28, 22, 228, 5, 15, 5, 159],\n", 1258 | " [115,\n", 1259 | " 5,\n", 1260 | " 144,\n", 1261 | " 1,\n", 1262 | " 63,\n", 1263 | " 40,\n", 1264 | " 8,\n", 1265 | " 9,\n", 1266 | " 5,\n", 1267 | " 144,\n", 1268 | " 11,\n", 1269 | " 9,\n", 1270 | " 5,\n", 1271 | " 12,\n", 1272 | " 46,\n", 1273 | " 1,\n", 1274 | " 153,\n", 1275 | " 1,\n", 1276 | " 58,\n", 1277 | " 8,\n", 1278 | " 56,\n", 1279 | " 5,\n", 1280 | " 15,\n", 1281 | " 153,\n", 1282 | " 8,\n", 1283 | " 210,\n", 1284 | " 63],\n", 1285 | " [3, 7, 78, 36, 20, 4, 143, 78, 151],\n", 1286 | " [135, 135, 167],\n", 1287 | " [43, 29, 55, 56, 123, 43, 29, 68],\n", 1288 | " [32, 140, 20, 44, 276, 42],\n", 1289 | " [66, 166, 18, 141, 3, 24, 2, 2, 5, 141, 14, 59, 26, 5, 141, 249, 59, 16],\n", 1290 | " [1],\n", 1291 | " [2, 3, 151, 227, 1, 45],\n", 1292 | " [94, 155, 108, 43, 30, 55, 192, 6, 20],\n", 1293 | " [8, 132, 138, 213, 4, 238, 25, 238, 113, 241, 138, 92, 56, 90],\n", 1294 | " [22,\n", 1295 | " 142,\n", 1296 | " 33,\n", 1297 | " 143,\n", 1298 | " 33,\n", 1299 | " 34,\n", 1300 | " 5,\n", 1301 | " 171,\n", 1302 | " 214,\n", 1303 | " 16,\n", 1304 | " 37,\n", 1305 | " 35,\n", 1306 | " 39,\n", 1307 | " 10,\n", 1308 | " 168,\n", 1309 | " 88,\n", 1310 | " 107,\n", 1311 | " 20,\n", 1312 | " 4,\n", 1313 | " 62,\n", 1314 | " 159],\n", 1315 | " [44, 53, 24, 3, 178],\n", 1316 | " [44],\n", 1317 | " [115, 130, 53, 9, 5, 274],\n", 1318 | " [182, 4, 62, 28, 154, 3, 58, 7, 34],\n", 1319 | " [258, 95, 12, 54],\n", 1320 | " [42, 5, 95, 1, 30, 261, 3, 69, 2, 33, 4, 21, 13, 10, 22],\n", 1321 | " [135, 135, 135, 62],\n", 1322 | " [1, 171, 39, 17, 67, 13, 37, 235],\n", 1323 | " [26, 14, 66, 90, 212, 26, 47, 4, 189, 44],\n", 1324 | " [116,\n", 1325 | " 232,\n", 1326 | " 3,\n", 1327 | " 20,\n", 1328 | " 166,\n", 1329 | " 40,\n", 1330 | " 12,\n", 1331 | " 76,\n", 1332 | " 245,\n", 1333 | " 76,\n", 1334 | " 3,\n", 1335 | " 7,\n", 1336 | " 83,\n", 1337 | " 7,\n", 1338 | " 158,\n", 1339 | " 189,\n", 1340 | " 47,\n", 1341 | " 18,\n", 1342 | " 32,\n", 1343 | " 258,\n", 1344 | " 34,\n", 1345 | " 49,\n", 1346 | " 48,\n", 1347 | " 36,\n", 1348 | " 32,\n", 1349 | " 259,\n", 1350 | " 12,\n", 1351 | " 236,\n", 1352 | " 37,\n", 1353 | " 1,\n", 1354 | " 35,\n", 1355 | " 3,\n", 1356 | " 2,\n", 1357 | " 18],\n", 1358 | " [78, 211, 168, 10, 88, 6, 107, 18, 16, 5, 15, 4, 93, 55, 2, 31, 255, 176],\n", 1359 | " [1, 60, 91, 227, 24, 3, 92, 41],\n", 1360 | " [258, 21, 53, 71, 3, 136, 6, 228],\n", 1361 | " [30, 6],\n", 1362 | " [105, 112, 26, 149],\n", 1363 | " [8, 12, 170, 26, 7, 158],\n", 1364 | " [64, 143, 4],\n", 1365 | " [1,\n", 1366 | " 107,\n", 1367 | " 13,\n", 1368 | " 5,\n", 1369 | " 120,\n", 1370 | " 71,\n", 1371 | " 67,\n", 1372 | " 3,\n", 1373 | " 20,\n", 1374 | " 15,\n", 1375 | " 31,\n", 1376 | " 167,\n", 1377 | " 7,\n", 1378 | " 81,\n", 1379 | " 47,\n", 1380 | " 242,\n", 1381 | " 34,\n", 1382 | " 5,\n", 1383 | " 9,\n", 1384 | " 7,\n", 1385 | " 162],\n", 1386 | " [157, 8, 136],\n", 1387 | " [60, 32, 2, 36, 38, 22],\n", 1388 | " [7, 10],\n", 1389 | " [98, 16],\n", 1390 | " [9, 1, 46, 10, 261, 8, 7, 9, 7],\n", 1391 | " [81, 31],\n", 1392 | " [4, 1, 36, 50, 110, 2, 90, 212, 176, 16],\n", 1393 | " [30, 10, 16, 3, 140, 36, 202, 36, 20, 4, 143, 273],\n", 1394 | " [279, 177, 3, 77, 267, 166, 127],\n", 1395 | " [27, 32, 10, 7, 10, 127, 6, 4, 42, 98],\n", 1396 | " [96,\n", 1397 | " 9,\n", 1398 | " 105,\n", 1399 | " 78,\n", 1400 | " 27,\n", 1401 | " 271,\n", 1402 | " 1,\n", 1403 | " 63,\n", 1404 | " 40,\n", 1405 | " 3,\n", 1406 | " 27,\n", 1407 | " 271,\n", 1408 | " 1,\n", 1409 | " 37,\n", 1410 | " 3,\n", 1411 | " 30,\n", 1412 | " 69,\n", 1413 | " 46,\n", 1414 | " 42,\n", 1415 | " 62],\n", 1416 | " [3, 131, 271, 17, 53, 117, 43, 99, 14, 6, 1, 24, 2, 17, 53, 117, 43, 29, 16],\n", 1417 | " [51, 52, 63, 218],\n", 1418 | " [195, 3, 14, 2, 182, 167, 2, 3, 1, 60, 118, 6, 3, 54, 1, 127, 214, 3, 10, 97],\n", 1419 | " [46, 15, 37, 59, 25, 110, 109, 2, 82],\n", 1420 | " [46, 209, 9, 2, 46, 209, 10, 31, 93, 209, 2, 66, 255, 176],\n", 1421 | " [42, 127, 54, 1, 165, 1, 165, 10, 5, 6, 42, 34, 5, 1, 269, 54, 201, 78, 9],\n", 1422 | " [242, 30, 68, 118, 69, 4, 144, 69, 1, 35, 222, 3],\n", 1423 | " [258, 258],\n", 1424 | " [163, 64, 44],\n", 1425 | " [23, 170, 31],\n", 1426 | " [118, 2, 14, 74, 215, 1, 60, 2, 3],\n", 1427 | " [62,\n", 1428 | " 53,\n", 1429 | " 22,\n", 1430 | " 78,\n", 1431 | " 24,\n", 1432 | " 43,\n", 1433 | " 6,\n", 1434 | " 167,\n", 1435 | " 2,\n", 1436 | " 33,\n", 1437 | " 36,\n", 1438 | " 43,\n", 1439 | " 10,\n", 1440 | " 5,\n", 1441 | " 6,\n", 1442 | " 1,\n", 1443 | " 124,\n", 1444 | " 15,\n", 1445 | " 3,\n", 1446 | " 7,\n", 1447 | " 45,\n", 1448 | " 76,\n", 1449 | " 269],\n", 1450 | " [154, 1, 58, 35, 107, 239, 15, 12, 21, 44],\n", 1451 | " [31, 252, 59, 110, 16, 26, 16, 37],\n", 1452 | " [118, 9, 18, 2, 106, 134, 106, 82, 249, 231],\n", 1453 | " [187, 10, 157, 39],\n", 1454 | " [258, 95, 12, 54],\n", 1455 | " [242,\n", 1456 | " 7,\n", 1457 | " 1,\n", 1458 | " 202,\n", 1459 | " 3,\n", 1460 | " 185,\n", 1461 | " 6,\n", 1462 | " 1,\n", 1463 | " 30,\n", 1464 | " 41,\n", 1465 | " 1,\n", 1466 | " 3,\n", 1467 | " 241,\n", 1468 | " 118,\n", 1469 | " 10,\n", 1470 | " 40,\n", 1471 | " 12,\n", 1472 | " 12,\n", 1473 | " 1,\n", 1474 | " 45,\n", 1475 | " 3],\n", 1476 | " [1, 35, 3, 10, 76, 154],\n", 1477 | " [42, 98, 14, 35, 176, 3, 246, 51, 52, 260],\n", 1478 | " [1,\n", 1479 | " 265,\n", 1480 | " 222,\n", 1481 | " 2,\n", 1482 | " 150,\n", 1483 | " 27,\n", 1484 | " 60,\n", 1485 | " 32,\n", 1486 | " 230,\n", 1487 | " 1,\n", 1488 | " 29,\n", 1489 | " 191,\n", 1490 | " 27,\n", 1491 | " 113,\n", 1492 | " 2,\n", 1493 | " 21,\n", 1494 | " 148,\n", 1495 | " 132,\n", 1496 | " 12,\n", 1497 | " 61,\n", 1498 | " 3,\n", 1499 | " 79,\n", 1500 | " 2,\n", 1501 | " 140,\n", 1502 | " 237,\n", 1503 | " 6,\n", 1504 | " 53,\n", 1505 | " 117,\n", 1506 | " 3,\n", 1507 | " 24,\n", 1508 | " 2],\n", 1509 | " [145, 14, 18, 3, 35, 33, 56, 212, 159, 3, 29, 34, 83, 16],\n", 1510 | " [29, 3, 182, 61],\n", 1511 | " [3, 171, 20, 12, 1, 3],\n", 1512 | " [154, 32, 4, 15, 10, 16, 74, 125, 10, 6, 5, 120, 235, 98],\n", 1513 | " [222, 7, 77, 27],\n", 1514 | " [1, 22, 221, 12, 21, 66, 1, 38, 22, 89, 96, 21, 66, 108, 12],\n", 1515 | " [1,\n", 1516 | " 155,\n", 1517 | " 3,\n", 1518 | " 3,\n", 1519 | " 58,\n", 1520 | " 22,\n", 1521 | " 4,\n", 1522 | " 144,\n", 1523 | " 5,\n", 1524 | " 6,\n", 1525 | " 42,\n", 1526 | " 230,\n", 1527 | " 3,\n", 1528 | " 107,\n", 1529 | " 13,\n", 1530 | " 190,\n", 1531 | " 5,\n", 1532 | " 113,\n", 1533 | " 35,\n", 1534 | " 54,\n", 1535 | " 18,\n", 1536 | " 9,\n", 1537 | " 67,\n", 1538 | " 30,\n", 1539 | " 198,\n", 1540 | " 9,\n", 1541 | " 4,\n", 1542 | " 2,\n", 1543 | " 28,\n", 1544 | " 1,\n", 1545 | " 222,\n", 1546 | " 16,\n", 1547 | " 3,\n", 1548 | " 41],\n", 1549 | " [203, 230, 137, 12, 4, 2, 7],\n", 1550 | " [94, 250, 13, 32, 4, 107, 239],\n", 1551 | " [94, 1, 35, 33, 214, 3, 34],\n", 1552 | " [6, 56, 59, 16, 16, 252, 26, 16, 37],\n", 1553 | " [13, 129],\n", 1554 | " [1, 35, 26, 3],\n", 1555 | " [22, 65, 3, 108, 38],\n", 1556 | " [56, 59, 166, 18, 158, 26, 59, 16, 2, 31],\n", 1557 | " [7, 31, 8, 185],\n", 1558 | " [21],\n", 1559 | " [94, 21, 11, 24, 43, 98, 14, 5, 66, 37, 5, 151],\n", 1560 | " [220, 66, 1, 29, 64],\n", 1561 | " [183, 1, 124, 21, 1, 60, 10, 28, 7, 9, 10, 1, 124, 16, 14, 5, 217, 1, 22],\n", 1562 | " [256, 3, 41, 61, 65, 24, 6, 22, 98],\n", 1563 | " [47, 118, 188, 5, 9, 201, 273, 32, 14, 81, 273],\n", 1564 | " [63, 6, 92, 54, 8, 26, 101, 21, 4, 95, 9, 3, 35, 93, 8, 4, 95, 1],\n", 1565 | " [3,\n", 1566 | " 24,\n", 1567 | " 269,\n", 1568 | " 18,\n", 1569 | " 17,\n", 1570 | " 77,\n", 1571 | " 3,\n", 1572 | " 15,\n", 1573 | " 18,\n", 1574 | " 16,\n", 1575 | " 248,\n", 1576 | " 3,\n", 1577 | " 24,\n", 1578 | " 81,\n", 1579 | " 15,\n", 1580 | " 5,\n", 1581 | " 150,\n", 1582 | " 267,\n", 1583 | " 271,\n", 1584 | " 155,\n", 1585 | " 142,\n", 1586 | " 1,\n", 1587 | " 124,\n", 1588 | " 4,\n", 1589 | " 15,\n", 1590 | " 18,\n", 1591 | " 142,\n", 1592 | " 3,\n", 1593 | " 100,\n", 1594 | " 3,\n", 1595 | " 251],\n", 1596 | " [62, 4, 167, 83, 5, 15, 1, 68, 127, 47, 6, 1, 153, 3, 24, 214, 3, 47],\n", 1597 | " [135, 28, 1, 79, 2, 5, 130, 1, 39, 37],\n", 1598 | " [59, 95, 190, 2, 14, 4, 37, 95, 39, 2, 14, 4, 177, 188, 59, 24, 2, 110, 106],\n", 1599 | " [160, 53, 9, 147, 3, 2, 103],\n", 1600 | " [5, 120, 32, 136],\n", 1601 | " [15, 3, 39, 118],\n", 1602 | " [5, 143, 15, 51, 52, 10, 127],\n", 1603 | " [39, 2, 2, 1, 58, 4, 15],\n", 1604 | " [49,\n", 1605 | " 63,\n", 1606 | " 154,\n", 1607 | " 274,\n", 1608 | " 11,\n", 1609 | " 40,\n", 1610 | " 7,\n", 1611 | " 153,\n", 1612 | " 78,\n", 1613 | " 223,\n", 1614 | " 64,\n", 1615 | " 33,\n", 1616 | " 62,\n", 1617 | " 76,\n", 1618 | " 279,\n", 1619 | " 193,\n", 1620 | " 65,\n", 1621 | " 76,\n", 1622 | " 269],\n", 1623 | " [242, 62, 159, 4, 37, 235, 149],\n", 1624 | " [],\n", 1625 | " [186, 125, 95, 268, 189, 261, 8, 4, 9, 261, 50],\n", 1626 | " [71, 83, 88, 34, 125, 21, 43, 29, 17, 5, 14, 11],\n", 1627 | " [238, 1, 79, 13, 2, 33, 18, 244],\n", 1628 | " [112, 55, 151, 43, 29, 55, 55, 81],\n", 1629 | " [91, 125, 128],\n", 1630 | " [],\n", 1631 | " [77, 108, 8, 79, 2],\n", 1632 | " [1, 20, 4, 74, 31],\n", 1633 | " [59, 88, 30, 95, 5, 211, 2, 31, 104, 181, 82, 249, 231],\n", 1634 | " [112, 17, 10, 4, 95, 12, 157, 2, 214, 3],\n", 1635 | " [93, 4, 25, 46, 25, 83, 4, 110, 45, 45, 2, 56, 44, 255],\n", 1636 | " [183, 47, 217, 159, 42, 272, 26],\n", 1637 | " [247, 120, 88, 6, 18, 158, 205, 113, 3, 2, 210, 17, 97, 13, 9, 26, 47, 4],\n", 1638 | " [9, 10],\n", 1639 | " [257, 18, 141, 189, 120, 136, 40, 4, 199, 26, 47, 174, 66],\n", 1640 | " [93,\n", 1641 | " 11,\n", 1642 | " 2,\n", 1643 | " 46,\n", 1644 | " 276,\n", 1645 | " 6,\n", 1646 | " 235,\n", 1647 | " 89,\n", 1648 | " 46,\n", 1649 | " 53,\n", 1650 | " 9,\n", 1651 | " 7,\n", 1652 | " 90,\n", 1653 | " 25,\n", 1654 | " 129,\n", 1655 | " 56,\n", 1656 | " 218,\n", 1657 | " 15,\n", 1658 | " 51,\n", 1659 | " 52,\n", 1660 | " 51,\n", 1661 | " 52,\n", 1662 | " 134,\n", 1663 | " 12],\n", 1664 | " [64, 33, 64, 1],\n", 1665 | " [157, 24, 3, 160],\n", 1666 | " [116, 16, 116, 244],\n", 1667 | " [34, 36, 119, 12, 4, 238, 1, 68, 44, 96],\n", 1668 | " [1, 2, 237, 4, 69, 257, 28, 4, 15, 51, 52, 77, 9, 44, 2, 51, 52, 7],\n", 1669 | " [34, 91, 264, 126],\n", 1670 | " [219, 86, 107, 2, 2, 4, 183, 37, 44],\n", 1671 | " [252, 57, 158, 9, 18, 26, 26, 47],\n", 1672 | " [14],\n", 1673 | " [3, 31, 42, 38, 170, 263, 84, 51, 52],\n", 1674 | " [5, 186, 261, 9, 14, 51, 52, 1, 51, 52, 37, 51, 52],\n", 1675 | " [200, 37, 267, 5, 38, 185],\n", 1676 | " [53, 219, 107],\n", 1677 | " [115, 153, 8, 39, 11, 110, 136, 31, 89, 1, 124],\n", 1678 | " [28, 1, 20, 2, 1, 38, 2, 20, 45, 6],\n", 1679 | " [183, 80, 9, 140, 143, 156, 188, 10, 204, 172, 2, 39, 17],\n", 1680 | " [3, 241, 2, 12, 41, 52],\n", 1681 | " [1, 162, 151, 28, 1, 80, 181, 12, 1, 4],\n", 1682 | " [105, 112, 26, 149],\n", 1683 | " [94, 94, 182, 43, 4, 45],\n", 1684 | " [105, 7, 1, 29, 71, 83, 28, 42, 66, 233, 4, 14, 31, 18],\n", 1685 | " [154, 203, 1, 22, 9],\n", 1686 | " [1, 39, 160, 3, 58, 3, 24, 7, 6],\n", 1687 | " [197, 20, 3, 14, 74],\n", 1688 | " [260, 149, 135],\n", 1689 | " [],\n", 1690 | " [145, 14, 11, 153, 3, 166, 4, 62, 78, 96],\n", 1691 | " [135, 135, 61, 24, 3, 79, 2, 44],\n", 1692 | " [64, 1, 35, 132, 103, 2, 17, 203, 69, 136, 28, 43, 24, 35, 11, 273],\n", 1693 | " [14, 116, 196, 20, 3, 136, 43, 29, 92, 177, 26, 59, 37, 95, 101],\n", 1694 | " [1, 124, 55, 100],\n", 1695 | " [34, 4, 6, 1, 38, 8, 4, 1, 58, 8, 38, 12, 38, 22, 21],\n", 1696 | " [1, 153, 3, 5, 15, 6, 266, 162, 89, 6, 222, 18, 6, 49, 5, 156],\n", 1697 | " [90, 22, 26, 277, 1, 202, 99, 79, 45],\n", 1698 | " [98, 4, 172, 6, 41, 40, 5, 9, 5, 65, 35, 1],\n", 1699 | " [157, 147, 8, 55, 7, 158, 9, 254, 3, 20, 2, 10, 118],\n", 1700 | " [143, 136, 78, 208, 114, 2, 195],\n", 1701 | " [3, 31, 174, 18, 59, 158, 14, 18, 26, 31, 16, 104, 17],\n", 1702 | " [105, 112, 26, 149, 64],\n", 1703 | " [64, 1, 60, 16, 5, 144, 2],\n", 1704 | " [143, 1, 45, 6, 9, 7, 53, 89, 3, 1, 45, 51, 52, 212, 164],\n", 1705 | " [113, 121, 22, 16, 5, 2, 222, 13, 47, 233, 168, 77],\n", 1706 | " [54, 24, 3, 98, 2, 18],\n", 1707 | " [44, 99, 112, 270, 56, 169, 25, 106],\n", 1708 | " [77, 24, 224, 132, 12, 5],\n", 1709 | " [160, 11, 9, 18, 2, 18, 56, 37, 209, 26, 47],\n", 1710 | " [53, 120, 13, 136, 3],\n", 1711 | " [1,\n", 1712 | " 22,\n", 1713 | " 5,\n", 1714 | " 133,\n", 1715 | " 18,\n", 1716 | " 118,\n", 1717 | " 5,\n", 1718 | " 35,\n", 1719 | " 69,\n", 1720 | " 247,\n", 1721 | " 51,\n", 1722 | " 52,\n", 1723 | " 2,\n", 1724 | " 7,\n", 1725 | " 6,\n", 1726 | " 51,\n", 1727 | " 52,\n", 1728 | " 68,\n", 1729 | " 21,\n", 1730 | " 5,\n", 1731 | " 6,\n", 1732 | " 179,\n", 1733 | " 33,\n", 1734 | " 230,\n", 1735 | " 3,\n", 1736 | " 5,\n", 1737 | " 3,\n", 1738 | " 24,\n", 1739 | " 2,\n", 1740 | " 238],\n", 1741 | " [79, 25, 39, 79, 261, 25, 46, 5, 83, 2, 176, 255],\n", 1742 | " [194, 198, 83, 4, 121, 90, 114, 15, 12, 278, 236, 1, 8, 62],\n", 1743 | " [64, 42, 254, 41, 2, 10, 38],\n", 1744 | " [45, 3, 45, 8],\n", 1745 | " [61, 116],\n", 1746 | " [135, 29, 1, 256, 41, 54],\n", 1747 | " [3, 131, 233, 101, 198, 3, 241, 89, 32, 14],\n", 1748 | " [77, 85, 8, 10, 4],\n", 1749 | " [4, 276, 24, 185, 12, 89, 3, 3, 34, 49, 11],\n", 1750 | " [264, 126],\n", 1751 | " [195, 3, 1, 265, 270, 2, 5, 244],\n", 1752 | " [3, 146, 18, 2],\n", 1753 | " [27, 43, 211, 69, 140, 44, 90, 14, 65],\n", 1754 | " [59, 186, 18, 59, 95, 83, 2, 11, 186, 40, 5, 59, 14, 82, 50],\n", 1755 | " [160, 61, 2, 3],\n", 1756 | " [16, 27, 3, 79, 5, 1, 261, 67, 89, 27, 3, 79, 25],\n", 1757 | " [1, 124, 267, 13, 29, 3, 93, 4, 186],\n", 1758 | " [105, 7, 37, 1, 142, 27, 3, 79, 43, 171, 101, 37, 1, 171, 237, 125, 40, 7],\n", 1759 | " [90, 215, 14, 25, 9, 26, 31, 181, 206, 49, 56, 59, 108, 202, 17],\n", 1760 | " [105, 10, 112, 26, 149],\n", 1761 | " [61, 274, 15, 51, 52],\n", 1762 | " [24, 3, 59, 31, 29, 1, 26, 31],\n", 1763 | " [68, 54],\n", 1764 | " [124, 1, 35, 55, 14, 13, 16, 105, 1, 21],\n", 1765 | " [125, 15, 191, 9, 32, 9, 13],\n", 1766 | " [228, 170],\n", 1767 | " [160, 1, 20],\n", 1768 | " [40, 5, 204, 9, 8, 211, 37, 40, 97, 9, 2, 8, 9, 27, 8, 8, 27, 8, 211, 8, 92],\n", 1769 | " [54, 29, 119, 71, 17],\n", 1770 | " [23, 40],\n", 1771 | " [1, 47, 4, 2],\n", 1772 | " [10, 11, 8, 20, 216, 5, 199, 2, 174, 30, 26, 104, 106, 168, 66],\n", 1773 | " [44,\n", 1774 | " 175,\n", 1775 | " 10,\n", 1776 | " 169,\n", 1777 | " 187,\n", 1778 | " 238,\n", 1779 | " 270,\n", 1780 | " 68,\n", 1781 | " 25,\n", 1782 | " 36,\n", 1783 | " 34,\n", 1784 | " 91,\n", 1785 | " 29,\n", 1786 | " 36,\n", 1787 | " 7,\n", 1788 | " 37,\n", 1789 | " 192,\n", 1790 | " 187],\n", 1791 | " [37, 5, 7],\n", 1792 | " [3,\n", 1793 | " 146,\n", 1794 | " 58,\n", 1795 | " 31,\n", 1796 | " 21,\n", 1797 | " 24,\n", 1798 | " 3,\n", 1799 | " 133,\n", 1800 | " 267,\n", 1801 | " 2,\n", 1802 | " 6,\n", 1803 | " 6,\n", 1804 | " 38,\n", 1805 | " 22,\n", 1806 | " 155,\n", 1807 | " 1,\n", 1808 | " 99,\n", 1809 | " 18,\n", 1810 | " 177,\n", 1811 | " 4,\n", 1812 | " 10,\n", 1813 | " 99],\n", 1814 | " [5],\n", 1815 | " [18, 89, 12, 90, 168, 25, 129, 56, 218, 32, 148, 134],\n", 1816 | " [34, 5, 92, 77, 27, 3, 29, 41, 125, 6, 79, 2, 137, 5, 74, 4],\n", 1817 | " [42, 42],\n", 1818 | " [197, 64, 18],\n", 1819 | " [44, 66],\n", 1820 | " [3, 24, 5, 252, 158, 4, 37, 4, 199, 110, 2, 44, 255],\n", 1821 | " [139, 44, 14, 162],\n", 1822 | " [14, 255, 134, 37, 90, 25, 203, 129, 71, 40, 12, 37, 106, 56, 114, 110, 114],\n", 1823 | " [18, 20, 136, 41, 14, 122, 82, 50, 18, 9],\n", 1824 | " [22,\n", 1825 | " 144,\n", 1826 | " 9,\n", 1827 | " 16,\n", 1828 | " 164,\n", 1829 | " 83,\n", 1830 | " 5,\n", 1831 | " 144,\n", 1832 | " 27,\n", 1833 | " 8,\n", 1834 | " 79,\n", 1835 | " 2,\n", 1836 | " 200,\n", 1837 | " 123,\n", 1838 | " 2,\n", 1839 | " 7,\n", 1840 | " 251,\n", 1841 | " 59,\n", 1842 | " 28,\n", 1843 | " 99,\n", 1844 | " 2,\n", 1845 | " 58,\n", 1846 | " 76,\n", 1847 | " 16],\n", 1848 | " [5, 9, 10, 28, 10, 113, 30, 1, 26, 3, 31],\n", 1849 | " [28, 16, 13, 33],\n", 1850 | " [1, 71, 2, 39],\n", 1851 | " [241, 254, 55, 39, 125],\n", 1852 | " [172, 3, 16],\n", 1853 | " [257, 18, 141, 44, 63, 4, 196, 199, 16, 11, 9, 88, 2, 259, 3, 26],\n", 1854 | " [115, 1, 213, 56, 28, 36, 123],\n", 1855 | " [174, 46, 15, 95, 183, 2, 31, 141, 104, 134],\n", 1856 | " [183, 53, 9, 4, 38, 3],\n", 1857 | " [3, 35, 18, 5, 246, 14, 6, 48, 85, 102, 8],\n", 1858 | " [22, 4],\n", 1859 | " [18, 14, 139, 1, 152, 26],\n", 1860 | " [61, 96, 9, 21, 44, 165],\n", 1861 | " [98, 16],\n", 1862 | " [112, 33],\n", 1863 | " [267,\n", 1864 | " 32,\n", 1865 | " 221,\n", 1866 | " 3,\n", 1867 | " 10,\n", 1868 | " 4,\n", 1869 | " 11,\n", 1870 | " 9,\n", 1871 | " 13,\n", 1872 | " 63,\n", 1873 | " 6,\n", 1874 | " 22,\n", 1875 | " 3,\n", 1876 | " 58,\n", 1877 | " 22,\n", 1878 | " 43,\n", 1879 | " 202,\n", 1880 | " 3,\n", 1881 | " 131,\n", 1882 | " 1,\n", 1883 | " 202,\n", 1884 | " 21,\n", 1885 | " 148,\n", 1886 | " 137,\n", 1887 | " 103,\n", 1888 | " 7,\n", 1889 | " 45,\n", 1890 | " 20,\n", 1891 | " 4,\n", 1892 | " 143,\n", 1893 | " 78],\n", 1894 | " [62,\n", 1895 | " 7,\n", 1896 | " 45,\n", 1897 | " 53,\n", 1898 | " 22,\n", 1899 | " 78,\n", 1900 | " 1,\n", 1901 | " 153,\n", 1902 | " 3,\n", 1903 | " 68,\n", 1904 | " 125,\n", 1905 | " 16,\n", 1906 | " 4,\n", 1907 | " 1,\n", 1908 | " 124,\n", 1909 | " 15,\n", 1910 | " 3,\n", 1911 | " 6,\n", 1912 | " 93,\n", 1913 | " 3,\n", 1914 | " 4,\n", 1915 | " 47,\n", 1916 | " 5],\n", 1917 | " [254, 33, 118, 14, 4, 85, 3, 149, 51],\n", 1918 | " [37, 7, 30, 49, 6, 13, 58, 61, 2, 36],\n", 1919 | " [224, 224, 167, 15, 128, 78, 7, 160, 167, 160],\n", 1920 | " [1, 60, 10, 130, 3, 47, 26, 12],\n", 1921 | " [47, 82, 50, 176, 273, 104, 110, 106],\n", 1922 | " [4, 54, 3, 5, 2, 2, 18, 37, 13, 3, 24],\n", 1923 | " [28, 60, 98, 2, 61, 2, 36, 24, 71, 77, 13],\n", 1924 | " [56, 34, 30, 2, 17, 4],\n", 1925 | " [11, 219, 32, 10, 11, 99, 65, 17, 67, 33, 41, 10],\n", 1926 | " [67, 116, 77],\n", 1927 | " [1,\n", 1928 | " 58,\n", 1929 | " 28,\n", 1930 | " 3,\n", 1931 | " 99,\n", 1932 | " 2,\n", 1933 | " 39,\n", 1934 | " 31,\n", 1935 | " 1,\n", 1936 | " 30,\n", 1937 | " 68,\n", 1938 | " 7,\n", 1939 | " 28,\n", 1940 | " 1,\n", 1941 | " 166,\n", 1942 | " 2,\n", 1943 | " 9,\n", 1944 | " 2,\n", 1945 | " 14,\n", 1946 | " 12,\n", 1947 | " 2,\n", 1948 | " 71,\n", 1949 | " 2,\n", 1950 | " 125],\n", 1951 | " [105, 22, 21, 31],\n", 1952 | " [270, 51, 52, 260],\n", 1953 | " [64, 137, 12, 218, 1, 124, 1, 85, 103, 7, 3, 241, 7, 5, 65],\n", 1954 | " [3,\n", 1955 | " 39,\n", 1956 | " 2,\n", 1957 | " 22,\n", 1958 | " 188,\n", 1959 | " 1,\n", 1960 | " 20,\n", 1961 | " 3,\n", 1962 | " 18,\n", 1963 | " 208,\n", 1964 | " 3,\n", 1965 | " 12,\n", 1966 | " 14,\n", 1967 | " 4,\n", 1968 | " 228,\n", 1969 | " 1,\n", 1970 | " 28,\n", 1971 | " 179,\n", 1972 | " 5,\n", 1973 | " 251,\n", 1974 | " 15,\n", 1975 | " 22,\n", 1976 | " 16,\n", 1977 | " 18,\n", 1978 | " 83,\n", 1979 | " 5,\n", 1980 | " 3,\n", 1981 | " 269,\n", 1982 | " 97,\n", 1983 | " 3,\n", 1984 | " 7],\n", 1985 | " [41, 267, 136, 14, 38],\n", 1986 | " [230, 27, 1, 39, 127, 47, 3, 22, 175, 6, 2, 4],\n", 1987 | " [64,\n", 1988 | " 201,\n", 1989 | " 164,\n", 1990 | " 107,\n", 1991 | " 4,\n", 1992 | " 4,\n", 1993 | " 15,\n", 1994 | " 6,\n", 1995 | " 85,\n", 1996 | " 4,\n", 1997 | " 165,\n", 1998 | " 15,\n", 1999 | " 3,\n", 2000 | " 92,\n", 2001 | " 99,\n", 2002 | " 2,\n", 2003 | " 30,\n", 2004 | " 21,\n", 2005 | " 22,\n", 2006 | " 3,\n", 2007 | " 58],\n", 2008 | " [20, 4, 34, 5, 10, 37, 4, 44, 4, 2, 33, 4],\n", 2009 | " [154, 9, 38],\n", 2010 | " [3, 24, 32, 10, 155],\n", 2011 | " [1, 58, 22, 7, 185, 22],\n", 2012 | " [115, 195, 3, 14, 5, 3, 24, 172, 53, 24, 3],\n", 2013 | " [8, 269, 181, 88, 81, 1, 86, 134, 190, 65, 8, 134, 21, 21, 32, 68, 83, 46],\n", 2014 | " [115, 176, 12, 42, 10],\n", 2015 | " [56, 169, 175, 206, 194],\n", 2016 | " [1, 45, 3, 21, 117, 1, 29, 13],\n", 2017 | " [43, 24, 2, 259, 3, 217, 22, 3, 216, 4, 199, 26, 174, 66],\n", 2018 | " [227,\n", 2019 | " 1,\n", 2020 | " 202,\n", 2021 | " 3,\n", 2022 | " 185,\n", 2023 | " 3,\n", 2024 | " 58,\n", 2025 | " 279,\n", 2026 | " 3,\n", 2027 | " 226,\n", 2028 | " 12,\n", 2029 | " 93,\n", 2030 | " 3,\n", 2031 | " 125,\n", 2032 | " 133,\n", 2033 | " 18,\n", 2034 | " 1,\n", 2035 | " 99,\n", 2036 | " 3,\n", 2037 | " 1,\n", 2038 | " 79,\n", 2039 | " 3,\n", 2040 | " 1,\n", 2041 | " 3],\n", 2042 | " [26, 8, 34, 40, 7, 22, 106, 12, 25, 135],\n", 2043 | " [61, 24, 3, 15],\n", 2044 | " [21,\n", 2045 | " 3,\n", 2046 | " 29,\n", 2047 | " 30,\n", 2048 | " 55,\n", 2049 | " 2,\n", 2050 | " 18,\n", 2051 | " 37,\n", 2052 | " 7,\n", 2053 | " 45,\n", 2054 | " 1,\n", 2055 | " 153,\n", 2056 | " 18,\n", 2057 | " 64,\n", 2058 | " 6,\n", 2059 | " 4,\n", 2060 | " 62,\n", 2061 | " 78,\n", 2062 | " 227,\n", 2063 | " 1,\n", 2064 | " 202,\n", 2065 | " 3,\n", 2066 | " 21,\n", 2067 | " 117,\n", 2068 | " 185],\n", 2069 | " [45, 13, 35, 100, 3, 40, 1, 60, 98, 2, 18, 40, 7],\n", 2070 | " [8, 36, 67],\n", 2071 | " [126, 270, 56, 7, 25, 67, 20, 126, 1, 220, 34, 91, 7, 31, 7],\n", 2072 | " [36, 3, 58, 157, 7],\n", 2073 | " [29, 3, 5],\n", 2074 | " [14, 18, 26],\n", 2075 | " [1, 10, 56],\n", 2076 | " [3, 20, 216, 90, 196, 209, 37, 4, 25, 196, 199, 2, 174],\n", 2077 | " [42,\n", 2078 | " 15,\n", 2079 | " 40,\n", 2080 | " 3,\n", 2081 | " 89,\n", 2082 | " 11,\n", 2083 | " 159,\n", 2084 | " 188,\n", 2085 | " 159,\n", 2086 | " 36,\n", 2087 | " 61,\n", 2088 | " 3,\n", 2089 | " 79,\n", 2090 | " 6,\n", 2091 | " 47,\n", 2092 | " 31,\n", 2093 | " 16,\n", 2094 | " 112,\n", 2095 | " 36,\n", 2096 | " 5],\n", 2097 | " [119, 270, 56, 12, 10, 1, 218],\n", 2098 | " [88, 141, 189, 120, 216, 2, 174, 161, 101, 37, 5, 16],\n", 2099 | " [9, 8, 111, 4, 8, 45, 9, 10, 15, 128, 84, 12, 12],\n", 2100 | " [21, 67, 119],\n", 2101 | " [64, 44, 99, 2, 40, 61, 3, 198],\n", 2102 | " [43,\n", 2103 | " 2,\n", 2104 | " 259,\n", 2105 | " 3,\n", 2106 | " 18,\n", 2107 | " 134,\n", 2108 | " 2,\n", 2109 | " 88,\n", 2110 | " 15,\n", 2111 | " 4,\n", 2112 | " 74,\n", 2113 | " 57,\n", 2114 | " 158,\n", 2115 | " 26,\n", 2116 | " 31,\n", 2117 | " 37,\n", 2118 | " 134,\n", 2119 | " 14,\n", 2120 | " 59,\n", 2121 | " 193],\n", 2122 | " [7, 63, 32, 2, 20, 36, 3, 79, 81, 78],\n", 2123 | " [21, 153, 3, 24, 32, 168, 18, 107, 239, 272, 5],\n", 2124 | " [132, 191, 8, 20, 4, 6, 30, 79, 2, 90, 15, 65],\n", 2125 | " [1, 112, 29, 55, 29, 43, 29, 55, 214, 188, 88],\n", 2126 | " [29, 3, 48],\n", 2127 | " [],\n", 2128 | " [42, 10, 4, 26, 12, 149, 34],\n", 2129 | " [14, 46, 232, 2, 211, 4, 110, 2, 82, 110, 25, 50],\n", 2130 | " [3, 20, 136, 2, 4, 26, 228, 5, 104],\n", 2131 | " [18, 14, 139, 1, 152, 26],\n", 2132 | " [3, 92, 34],\n", 2133 | " [1, 3, 76, 4, 6, 3, 76, 7, 76, 76, 5, 204, 88, 33, 276, 275],\n", 2134 | " [1, 60, 143, 53, 24, 3],\n", 2135 | " [275, 160, 20, 4, 194, 78],\n", 2136 | " [3, 20, 127, 26, 31],\n", 2137 | " [35, 36, 63, 16, 11, 220, 151, 117, 6, 3, 154, 151],\n", 2138 | " [42, 98, 17, 2, 237],\n", 2139 | " [44, 114, 35, 47, 31, 16, 10, 128],\n", 2140 | " [27, 8, 103, 91, 190, 175, 64, 126, 42, 32],\n", 2141 | " [15, 219, 80, 20, 116, 209],\n", 2142 | " [33, 167, 77, 1, 35, 71, 188],\n", 2143 | " [214, 188],\n", 2144 | " [107, 239, 123, 39, 154, 245],\n", 2145 | " [218, 40, 47, 59, 25, 49],\n", 2146 | " [61, 1, 2, 182, 9, 265, 270, 2, 85, 8, 236, 233, 15, 11],\n", 2147 | " [175, 64],\n", 2148 | " [175, 39, 4, 37, 79, 12, 2, 71, 210, 3],\n", 2149 | " [2, 223, 14, 8, 35, 33, 41, 2, 40, 5, 6, 2, 33, 93, 39, 110, 106, 2],\n", 2150 | " [69,\n", 2151 | " 4,\n", 2152 | " 93,\n", 2153 | " 176,\n", 2154 | " 2,\n", 2155 | " 49,\n", 2156 | " 46,\n", 2157 | " 276,\n", 2158 | " 27,\n", 2159 | " 218,\n", 2160 | " 111,\n", 2161 | " 128,\n", 2162 | " 67,\n", 2163 | " 247,\n", 2164 | " 140,\n", 2165 | " 8,\n", 2166 | " 277,\n", 2167 | " 12,\n", 2168 | " 5,\n", 2169 | " 156,\n", 2170 | " 12],\n", 2171 | " [1, 20, 224],\n", 2172 | " [96,\n", 2173 | " 13,\n", 2174 | " 63,\n", 2175 | " 194,\n", 2176 | " 25,\n", 2177 | " 41,\n", 2178 | " 28,\n", 2179 | " 43,\n", 2180 | " 25,\n", 2181 | " 210,\n", 2182 | " 114,\n", 2183 | " 65,\n", 2184 | " 114,\n", 2185 | " 163,\n", 2186 | " 154,\n", 2187 | " 107,\n", 2188 | " 239,\n", 2189 | " 181,\n", 2190 | " 8,\n", 2191 | " 245,\n", 2192 | " 181],\n", 2193 | " [1, 221, 6, 198, 49, 2, 162, 67, 80, 20, 2, 11],\n", 2194 | " [167, 78, 1, 58, 69, 28, 1, 20, 15, 6, 2, 21, 1, 2, 223, 6],\n", 2195 | " [80, 38, 32, 206, 238, 9, 38, 179, 38, 49, 58, 80, 68, 200, 12, 46, 126],\n", 2196 | " [14, 7],\n", 2197 | " [1, 71, 123, 256, 119, 41, 71, 17, 46],\n", 2198 | " [226, 77, 33, 226, 77, 33, 11, 15, 21, 29],\n", 2199 | " [160, 43, 68, 51, 52, 115, 115],\n", 2200 | " [62, 28, 250, 8, 10, 224],\n", 2201 | " [100, 230, 225, 9, 168, 10, 76, 76],\n", 2202 | " [105, 44, 20, 68, 2, 36, 33, 10, 149],\n", 2203 | " [175, 27, 3, 29, 30, 37, 37, 235, 4, 114, 209],\n", 2204 | " [62, 2, 42, 6, 16, 5, 14, 127],\n", 2205 | " [53, 224, 219, 13, 107, 2, 39, 2, 5, 15, 4],\n", 2206 | " [1, 113, 111, 169, 198, 22, 35, 100, 7, 200, 12, 32, 25, 151],\n", 2207 | " [74, 25, 131, 10, 46, 56, 30, 59, 25, 37, 34, 50, 110, 81, 268, 2],\n", 2208 | " [40, 24, 2, 4, 4, 27, 18, 189, 26, 2, 18],\n", 2209 | " [48, 108, 182, 38, 22, 115, 115, 115],\n", 2210 | " [195, 8],\n", 2211 | " [163, 22, 63, 4, 186, 1, 3, 93, 22, 2, 12],\n", 2212 | " [68, 13, 14, 153, 64],\n", 2213 | " [160,\n", 2214 | " 25,\n", 2215 | " 174,\n", 2216 | " 11,\n", 2217 | " 34,\n", 2218 | " 18,\n", 2219 | " 55,\n", 2220 | " 2,\n", 2221 | " 122,\n", 2222 | " 82,\n", 2223 | " 169,\n", 2224 | " 249,\n", 2225 | " 231,\n", 2226 | " 25,\n", 2227 | " 106,\n", 2228 | " 110,\n", 2229 | " 106,\n", 2230 | " 2],\n", 2231 | " [12, 123, 162, 21],\n", 2232 | " [153, 3, 24, 32, 22, 15, 78, 20, 81, 40, 15, 2],\n", 2233 | " [54, 119, 65, 119, 91, 31],\n", 2234 | " [61, 35, 43, 36, 10, 5],\n", 2235 | " [1, 166, 8, 4, 125, 228, 69],\n", 2236 | " [154, 99, 2, 228, 112, 226, 3, 58, 54, 42, 17],\n", 2237 | " [198, 1, 279, 36, 5, 80, 9, 4, 80, 15, 97, 4, 2, 225, 78],\n", 2238 | " [254, 83, 10, 4],\n", 2239 | " [172, 194, 33, 16],\n", 2240 | " [43, 20, 5, 6, 16, 5, 6, 1, 10, 20, 4, 62, 15, 159],\n", 2241 | " [264, 109, 84, 34, 166, 2, 55, 84, 61, 89, 8],\n", 2242 | " [36, 3, 27, 1, 200, 61, 3, 108, 20, 2, 182, 27, 13, 9],\n", 2243 | " [18, 14, 139, 1, 152, 26],\n", 2244 | " [44, 1, 35, 93, 2, 18],\n", 2245 | " [3, 20, 216, 90, 196, 209, 37, 4, 25, 196, 199, 2, 174, 104, 181],\n", 2246 | " [258, 6, 6],\n", 2247 | " [42, 254, 182, 44, 105, 1, 142, 28, 76, 60, 2, 89, 65, 105, 236, 24, 3, 16],\n", 2248 | " [270, 36, 3, 58, 27, 10, 1, 86, 219],\n", 2249 | " [1, 202, 3, 172, 117],\n", 2250 | " [147, 8, 68, 22],\n", 2251 | " [132, 191, 5, 233],\n", 2252 | " [265,\n", 2253 | " 71,\n", 2254 | " 2,\n", 2255 | " 28,\n", 2256 | " 93,\n", 2257 | " 76,\n", 2258 | " 265,\n", 2259 | " 71,\n", 2260 | " 2,\n", 2261 | " 28,\n", 2262 | " 93,\n", 2263 | " 76,\n", 2264 | " 1,\n", 2265 | " 265,\n", 2266 | " 71,\n", 2267 | " 2,\n", 2268 | " 214,\n", 2269 | " 8,\n", 2270 | " 28,\n", 2271 | " 29,\n", 2272 | " 93,\n", 2273 | " 7,\n", 2274 | " 239,\n", 2275 | " 76,\n", 2276 | " 176,\n", 2277 | " 2,\n", 2278 | " 8,\n", 2279 | " 275],\n", 2280 | " [3, 35, 33, 10, 5, 15, 22],\n", 2281 | " [13, 100, 2, 107, 13, 77, 69, 59, 27, 3, 99, 2, 58, 114, 50],\n", 2282 | " [6, 24, 158, 26],\n", 2283 | " [5, 77, 4, 10, 5, 77, 9, 127, 10, 5, 77, 9, 4, 16, 5, 77, 24, 129],\n", 2284 | " [67, 53],\n", 2285 | " [105, 12, 98, 91, 190, 71, 119, 149],\n", 2286 | " [250, 13, 266, 14, 246],\n", 2287 | " [183, 43, 29, 49, 5, 15, 5],\n", 2288 | " [176, 67, 166],\n", 2289 | " [33, 118, 10, 4, 27, 3, 92, 99, 2, 237],\n", 2290 | " [11, 9, 51, 52],\n", 2291 | " [20, 4, 62],\n", 2292 | " [147, 8, 7, 176],\n", 2293 | " [85],\n", 2294 | " [242, 3, 258, 2, 182, 115, 115, 106, 93, 106, 2],\n", 2295 | " [39,\n", 2296 | " 46,\n", 2297 | " 59,\n", 2298 | " 31,\n", 2299 | " 134,\n", 2300 | " 2,\n", 2301 | " 11,\n", 2302 | " 176,\n", 2303 | " 40,\n", 2304 | " 2,\n", 2305 | " 18,\n", 2306 | " 158,\n", 2307 | " 201,\n", 2308 | " 159,\n", 2309 | " 30,\n", 2310 | " 212,\n", 2311 | " 25,\n", 2312 | " 17,\n", 2313 | " 93,\n", 2314 | " 106],\n", 2315 | " [6,\n", 2316 | " 3,\n", 2317 | " 20,\n", 2318 | " 2,\n", 2319 | " 89,\n", 2320 | " 12,\n", 2321 | " 234,\n", 2322 | " 2,\n", 2323 | " 3,\n", 2324 | " 38,\n", 2325 | " 1,\n", 2326 | " 198,\n", 2327 | " 217,\n", 2328 | " 164,\n", 2329 | " 3,\n", 2330 | " 36,\n", 2331 | " 3,\n", 2332 | " 79,\n", 2333 | " 6,\n", 2334 | " 112,\n", 2335 | " 36,\n", 2336 | " 5],\n", 2337 | " [267, 68, 51, 52, 116, 144, 1, 171, 256, 41],\n", 2338 | " [1, 108, 1, 30],\n", 2339 | " [182, 115, 2, 6, 210, 17, 27, 68, 225, 143, 37],\n", 2340 | " [111, 8, 1, 92, 42, 98, 56, 31],\n", 2341 | " [42, 32, 197],\n", 2342 | " [18, 26, 1, 63, 34, 202, 8, 279, 270, 14, 8, 2, 71, 91, 42, 21, 96],\n", 2343 | " [61, 9, 11, 3, 15],\n", 2344 | " [119, 223, 56, 187, 175],\n", 2345 | " [9, 98, 56, 169],\n", 2346 | " [115,\n", 2347 | " 42,\n", 2348 | " 1,\n", 2349 | " 60,\n", 2350 | " 243,\n", 2351 | " 6,\n", 2352 | " 165,\n", 2353 | " 76,\n", 2354 | " 4,\n", 2355 | " 1,\n", 2356 | " 45,\n", 2357 | " 95,\n", 2358 | " 12,\n", 2359 | " 272,\n", 2360 | " 42,\n", 2361 | " 1,\n", 2362 | " 7,\n", 2363 | " 31,\n", 2364 | " 95,\n", 2365 | " 2,\n", 2366 | " 83],\n", 2367 | " [1, 2, 200, 119, 2, 270, 56, 12, 2, 238, 7, 10, 127],\n", 2368 | " [20, 3, 165],\n", 2369 | " [201, 63, 4, 6, 201, 143, 63, 4, 32, 157, 8, 111, 96, 28, 157, 8, 275],\n", 2370 | " [160,\n", 2371 | " 12,\n", 2372 | " 34,\n", 2373 | " 10,\n", 2374 | " 8,\n", 2375 | " 111,\n", 2376 | " 148,\n", 2377 | " 26,\n", 2378 | " 8,\n", 2379 | " 266,\n", 2380 | " 1,\n", 2381 | " 179,\n", 2382 | " 37,\n", 2383 | " 132,\n", 2384 | " 12,\n", 2385 | " 277,\n", 2386 | " 78,\n", 2387 | " 8,\n", 2388 | " 111,\n", 2389 | " 1,\n", 2390 | " 60,\n", 2391 | " 69],\n", 2392 | " [145, 45, 28, 60, 1, 178, 37],\n", 2393 | " [47, 48, 26, 76, 77, 9, 127, 257, 186, 14, 3],\n", 2394 | " [63, 5],\n", 2395 | " [105, 2, 8, 236, 29, 237, 14, 7, 236, 49, 25, 90, 123],\n", 2396 | " [7, 10, 153, 3, 24, 4, 143, 273, 30, 94],\n", 2397 | " [35, 128, 96, 6, 2, 3, 36, 3, 20, 4, 189],\n", 2398 | " [38, 20, 2, 93, 10, 7, 2, 39, 13, 120, 4],\n", 2399 | " [62, 62, 1, 38],\n", 2400 | " [3, 83, 37, 92, 263],\n", 2401 | " [214, 3, 10, 3, 29, 85, 53, 7, 9],\n", 2402 | " [200, 119, 2, 237, 91],\n", 2403 | " [135, 8, 179, 108, 176, 37, 134, 2, 225, 176],\n", 2404 | " [53, 117, 111, 119, 2],\n", 2405 | " [105, 112, 26, 149],\n", 2406 | " [61, 9, 9, 22, 3, 83, 103],\n", 2407 | " [4, 208, 157, 9, 5, 36, 2, 33, 28, 62, 230, 113, 35, 33, 10],\n", 2408 | " [160, 1, 2, 6, 21, 21, 1, 3, 10, 125, 65],\n", 2409 | " [1, 121, 124, 1, 29, 39, 14, 4, 22, 40, 10, 105],\n", 2410 | " [21, 54, 36, 3],\n", 2411 | " [1, 213],\n", 2412 | " [2, 6, 222, 5, 252, 123, 40, 252, 55, 25, 82, 50, 47, 134, 40, 5, 17],\n", 2413 | " [56, 59, 166, 18, 158, 26, 59, 16, 2, 31, 104],\n", 2414 | " [15,\n", 2415 | " 49,\n", 2416 | " 5,\n", 2417 | " 84,\n", 2418 | " 113,\n", 2419 | " 25,\n", 2420 | " 10,\n", 2421 | " 127,\n", 2422 | " 113,\n", 2423 | " 113,\n", 2424 | " 5,\n", 2425 | " 83,\n", 2426 | " 49,\n", 2427 | " 17,\n", 2428 | " 15,\n", 2429 | " 128,\n", 2430 | " 66,\n", 2431 | " 90,\n", 2432 | " 80,\n", 2433 | " 198,\n", 2434 | " 27,\n", 2435 | " 13,\n", 2436 | " 9,\n", 2437 | " 83,\n", 2438 | " 7,\n", 2439 | " 11,\n", 2440 | " 208,\n", 2441 | " 266],\n", 2442 | " [13,\n", 2443 | " 30,\n", 2444 | " 38,\n", 2445 | " 22,\n", 2446 | " 5,\n", 2447 | " 164,\n", 2448 | " 22,\n", 2449 | " 49,\n", 2450 | " 3,\n", 2451 | " 6,\n", 2452 | " 79,\n", 2453 | " 9,\n", 2454 | " 14,\n", 2455 | " 12,\n", 2456 | " 2,\n", 2457 | " 71,\n", 2458 | " 9,\n", 2459 | " 5,\n", 2460 | " 78,\n", 2461 | " 76,\n", 2462 | " 54,\n", 2463 | " 4,\n", 2464 | " 9,\n", 2465 | " 2,\n", 2466 | " 12,\n", 2467 | " 269,\n", 2468 | " 168,\n", 2469 | " 6,\n", 2470 | " 262],\n", 2471 | " [],\n", 2472 | " [5, 27, 5, 120, 4, 30, 93, 18, 6, 5, 133, 35, 33, 261, 2, 3],\n", 2473 | " [80, 179, 89, 66, 130, 1, 58],\n", 2474 | " [54, 1, 20, 2, 1, 132, 3],\n", 2475 | " [257, 11, 9, 5, 2, 259, 8, 8, 20, 216, 26, 104],\n", 2476 | " [277, 67, 3, 176, 12, 1, 35, 26, 41, 188, 165, 37, 42, 98, 2, 39, 7, 9],\n", 2477 | " [3, 20, 216, 4, 209, 37, 4, 199, 2, 174, 199, 26, 88, 16],\n", 2478 | " [108,\n", 2479 | " 251,\n", 2480 | " 1,\n", 2481 | " 29,\n", 2482 | " 18,\n", 2483 | " 12,\n", 2484 | " 81,\n", 2485 | " 40,\n", 2486 | " 12,\n", 2487 | " 6,\n", 2488 | " 1,\n", 2489 | " 20,\n", 2490 | " 125,\n", 2491 | " 14,\n", 2492 | " 15,\n", 2493 | " 161,\n", 2494 | " 226,\n", 2495 | " 173,\n", 2496 | " 236,\n", 2497 | " 26,\n", 2498 | " 12],\n", 2499 | " [163, 9, 13, 93, 12, 5],\n", 2500 | " [49, 5, 156, 40, 13],\n", 2501 | " [22, 9],\n", 2502 | " [208, 20, 16, 191],\n", 2503 | " [5,\n", 2504 | " 204,\n", 2505 | " 9,\n", 2506 | " 6,\n", 2507 | " 1,\n", 2508 | " 60,\n", 2509 | " 92,\n", 2510 | " 49,\n", 2511 | " 24,\n", 2512 | " 5,\n", 2513 | " 21,\n", 2514 | " 33,\n", 2515 | " 13,\n", 2516 | " 37,\n", 2517 | " 1,\n", 2518 | " 20,\n", 2519 | " 2,\n", 2520 | " 1,\n", 2521 | " 60,\n", 2522 | " 67,\n", 2523 | " 157,\n", 2524 | " 9,\n", 2525 | " 5,\n", 2526 | " 37,\n", 2527 | " 226,\n", 2528 | " 12,\n", 2529 | " 26,\n", 2530 | " 11,\n", 2531 | " 9,\n", 2532 | " 173,\n", 2533 | " 6,\n", 2534 | " 222,\n", 2535 | " 40,\n", 2536 | " 5,\n", 2537 | " 204,\n", 2538 | " 33,\n", 2539 | " 8,\n", 2540 | " 111,\n", 2541 | " 179],\n", 2542 | " [68, 13, 13, 2, 3, 49, 164],\n", 2543 | " [15,\n", 2544 | " 238,\n", 2545 | " 29,\n", 2546 | " 42,\n", 2547 | " 32,\n", 2548 | " 21,\n", 2549 | " 64,\n", 2550 | " 90,\n", 2551 | " 126,\n", 2552 | " 8,\n", 2553 | " 200,\n", 2554 | " 157,\n", 2555 | " 43,\n", 2556 | " 55,\n", 2557 | " 1,\n", 2558 | " 198,\n", 2559 | " 8,\n", 2560 | " 142,\n", 2561 | " 200,\n", 2562 | " 16,\n", 2563 | " 28,\n", 2564 | " 80,\n", 2565 | " 198,\n", 2566 | " 8,\n", 2567 | " 35,\n", 2568 | " 200,\n", 2569 | " 96],\n", 2570 | " [7, 2, 4],\n", 2571 | " [53, 9, 103, 2, 37, 30],\n", 2572 | " [8, 200, 12],\n", 2573 | " [2, 26],\n", 2574 | " [44, 80, 9],\n", 2575 | " [197, 3, 251, 54, 1, 103, 133, 2, 107, 3, 17, 2, 4, 128],\n", 2576 | " [208, 8, 108, 39, 10, 30, 162, 37, 6, 30, 225, 108, 181, 6, 13, 30, 108, 134],\n", 2577 | " [2, 10, 15, 127, 49, 148, 12, 10, 46, 160],\n", 2578 | " [67, 155, 44, 81, 2, 12],\n", 2579 | " [145, 14, 17, 14, 12, 1, 140],\n", 2580 | " [115, 5, 74, 141, 47, 66, 34, 110, 266, 2, 44, 39, 31, 255],\n", 2581 | " [1, 241, 40, 3, 31],\n", 2582 | " [8, 58, 12, 154, 130, 15, 83, 247, 9, 126, 8, 55, 210, 81, 67, 49, 10, 88],\n", 2583 | " [183, 1, 35, 33, 77, 3, 13],\n", 2584 | " [36, 154, 49, 35, 14, 65, 244, 15, 62],\n", 2585 | " [30,\n", 2586 | " 68,\n", 2587 | " 41,\n", 2588 | " 20,\n", 2589 | " 2,\n", 2590 | " 33,\n", 2591 | " 17,\n", 2592 | " 15,\n", 2593 | " 5,\n", 2594 | " 172,\n", 2595 | " 245,\n", 2596 | " 1,\n", 2597 | " 5,\n", 2598 | " 101,\n", 2599 | " 34,\n", 2600 | " 1,\n", 2601 | " 34,\n", 2602 | " 262,\n", 2603 | " 2,\n", 2604 | " 39,\n", 2605 | " 41,\n", 2606 | " 6,\n", 2607 | " 67,\n", 2608 | " 13,\n", 2609 | " 63,\n", 2610 | " 10],\n", 2611 | " [64, 77, 33, 4, 59, 89],\n", 2612 | " [38, 41, 225],\n", 2613 | " [80, 182, 55, 65],\n", 2614 | " [1, 2, 107, 62, 239, 15, 3, 1, 20, 2, 31, 48, 93, 54, 3, 39, 4, 232],\n", 2615 | " [8, 24, 2, 5, 156, 141, 10, 5, 231, 14, 212, 3, 93, 106, 2],\n", 2616 | " [9, 77, 4, 32, 11, 215, 20, 4, 143, 159, 6, 49, 5, 156, 10, 18],\n", 2617 | " [83, 246, 159, 137, 12, 5],\n", 2618 | " [36, 3, 22, 10, 89, 20, 15, 243, 263, 40],\n", 2619 | " [3, 20, 127, 47],\n", 2620 | " [108, 22],\n", 2621 | " [54, 147, 3, 39, 2, 5],\n", 2622 | " [105, 1, 121, 11, 189, 6, 60, 31, 97, 111, 8, 48],\n", 2623 | " [21, 155, 3],\n", 2624 | " [265, 124, 15, 40, 223, 15, 7],\n", 2625 | " [153, 165, 45, 3, 20, 49, 11],\n", 2626 | " [8, 146, 20, 127],\n", 2627 | " [26, 12, 54, 3, 9, 24, 118, 7, 9, 41, 6, 1, 32],\n", 2628 | " [25, 25, 47, 31, 56, 246, 215, 26],\n", 2629 | " [43,\n", 2630 | " 24,\n", 2631 | " 34,\n", 2632 | " 163,\n", 2633 | " 160,\n", 2634 | " 8,\n", 2635 | " 92,\n", 2636 | " 1,\n", 2637 | " 11,\n", 2638 | " 220,\n", 2639 | " 28,\n", 2640 | " 1,\n", 2641 | " 124,\n", 2642 | " 1,\n", 2643 | " 60,\n", 2644 | " 30,\n", 2645 | " 164,\n", 2646 | " 67,\n", 2647 | " 43,\n", 2648 | " 250,\n", 2649 | " 16],\n", 2650 | " [257, 46, 9, 92, 26, 31],\n", 2651 | " [28, 43, 8, 142, 200, 238, 8, 28, 43, 17, 185, 21, 96, 32, 98, 17, 26, 126],\n", 2652 | " [3, 6, 18, 6, 167, 74, 215, 10],\n", 2653 | " [46, 4, 6, 171, 211, 4, 201, 110, 2],\n", 2654 | " [42, 68, 16, 113, 56, 126, 1, 97, 35, 55, 65],\n", 2655 | " [105, 112, 26, 149],\n", 2656 | " [1, 265, 256, 5, 158, 170, 31, 148, 93, 4, 186],\n", 2657 | " [197, 1, 58, 21, 185, 14, 193, 43, 279, 10, 5, 15, 241, 2, 39],\n", 2658 | " [32, 233, 40, 11, 168, 118],\n", 2659 | " [197, 8, 30, 178, 7, 34, 128, 203, 92, 41, 56, 5],\n", 2660 | " [39, 168, 118, 3, 24, 32, 18, 144, 17, 15, 11, 10, 4],\n", 2661 | " [1, 33, 77, 40, 10, 51, 52, 68, 116],\n", 2662 | " [30, 6],\n", 2663 | " [145, 14, 41, 5],\n", 2664 | " [155,\n", 2665 | " 121,\n", 2666 | " 3,\n", 2667 | " 55,\n", 2668 | " 132,\n", 2669 | " 18,\n", 2670 | " 32,\n", 2671 | " 230,\n", 2672 | " 3,\n", 2673 | " 79,\n", 2674 | " 2,\n", 2675 | " 272,\n", 2676 | " 40,\n", 2677 | " 162,\n", 2678 | " 205,\n", 2679 | " 80,\n", 2680 | " 151,\n", 2681 | " 117,\n", 2682 | " 67,\n", 2683 | " 162,\n", 2684 | " 2,\n", 2685 | " 71],\n", 2686 | " [115, 69, 13, 63, 2, 85, 3, 6, 158, 3, 193, 1, 68, 2, 6, 4, 12, 225],\n", 2687 | " [167,\n", 2688 | " 74,\n", 2689 | " 215,\n", 2690 | " 7,\n", 2691 | " 160,\n", 2692 | " 1,\n", 2693 | " 140,\n", 2694 | " 36,\n", 2695 | " 202,\n", 2696 | " 3,\n", 2697 | " 30,\n", 2698 | " 68,\n", 2699 | " 18,\n", 2700 | " 189,\n", 2701 | " 6,\n", 2702 | " 2,\n", 2703 | " 93,\n", 2704 | " 3,\n", 2705 | " 11,\n", 2706 | " 95,\n", 2707 | " 3,\n", 2708 | " 66],\n", 2709 | " [22, 39, 5],\n", 2710 | " [18, 89, 12, 90, 168, 25, 129, 56, 218, 32, 148, 134],\n", 2711 | " [1, 43, 198, 25, 32, 129, 3, 24, 53, 146, 1, 3],\n", 2712 | " [],\n", 2713 | " [3, 20, 127, 47, 26, 31],\n", 2714 | " [108, 124, 21, 13, 223, 38, 15],\n", 2715 | " [86, 63, 2, 33, 28, 100, 13, 92, 10],\n", 2716 | " [13, 219, 13, 16, 69, 15, 5, 65, 13, 7, 28, 13, 4, 55],\n", 2717 | " [271, 89, 4, 62, 173, 40, 4, 30, 110, 101, 268, 6, 2, 5, 141],\n", 2718 | " [218, 59, 26, 39, 4, 261, 201, 159, 30, 95, 2, 212],\n", 2719 | " [275, 160, 4, 194, 78],\n", 2720 | " [11,\n", 2721 | " 9,\n", 2722 | " 3,\n", 2723 | " 18,\n", 2724 | " 105,\n", 2725 | " 267,\n", 2726 | " 32,\n", 2727 | " 136,\n", 2728 | " 10,\n", 2729 | " 28,\n", 2730 | " 148,\n", 2731 | " 58,\n", 2732 | " 22,\n", 2733 | " 3,\n", 2734 | " 24,\n", 2735 | " 223,\n", 2736 | " 20,\n", 2737 | " 4,\n", 2738 | " 143,\n", 2739 | " 159],\n", 2740 | " [49, 169, 156, 56, 46],\n", 2741 | " [157, 8, 34, 69, 30, 38, 181],\n", 2742 | " [1, 79, 2, 1, 6, 1, 114],\n", 2743 | " [77, 81, 175, 127, 8, 10, 5, 15],\n", 2744 | " [175, 140, 233, 12, 30, 263],\n", 2745 | " [3, 31, 174, 18, 59, 158, 14, 18, 26, 31, 16, 104, 17],\n", 2746 | " [3, 12, 6, 49, 18, 10, 71, 27, 3],\n", 2747 | " [64, 1, 176, 8, 1, 250, 7],\n", 2748 | " [4, 63, 51, 52],\n", 2749 | " [217, 232, 174, 46, 15, 96, 95, 2, 31, 141, 104],\n", 2750 | " [9, 34, 51, 65, 52, 60, 32, 7, 8, 121, 1, 8],\n", 2751 | " [59,\n", 2752 | " 14,\n", 2753 | " 159,\n", 2754 | " 252,\n", 2755 | " 56,\n", 2756 | " 46,\n", 2757 | " 141,\n", 2758 | " 201,\n", 2759 | " 159,\n", 2760 | " 30,\n", 2761 | " 110,\n", 2762 | " 252,\n", 2763 | " 2,\n", 2764 | " 39,\n", 2765 | " 6,\n", 2766 | " 132,\n", 2767 | " 46,\n", 2768 | " 82,\n", 2769 | " 249,\n", 2770 | " 231],\n", 2771 | " [3, 20, 216, 4, 37, 208, 174, 46, 26, 59, 16, 25, 106, 16],\n", 2772 | " [135, 112, 33, 77, 228, 56],\n", 2773 | " [1, 69, 172],\n", 2774 | " [230, 28, 100, 230, 80, 43],\n", 2775 | " [3, 269, 165, 30],\n", 2776 | " [1, 60, 78, 250, 1, 60, 32, 154],\n", 2777 | " [1, 121, 39, 17, 15, 175, 21],\n", 2778 | " [139, 139, 51, 52],\n", 2779 | " [21, 4, 22, 40, 5, 131, 175, 77, 21, 113, 29],\n", 2780 | " [46, 15, 59, 25, 88, 110, 109, 2, 82],\n", 2781 | " [1, 46, 64],\n", 2782 | " [8, 241, 83, 16, 5, 25, 236, 25, 134, 17],\n", 2783 | " [7, 1, 202, 3, 61],\n", 2784 | " [80, 120, 15, 227, 28, 5, 177, 20, 2, 13, 168, 6, 13, 41],\n", 2785 | " [179, 24, 3, 37],\n", 2786 | " [67, 155, 3, 32],\n", 2787 | " [227, 8, 8, 25, 213, 16, 154, 153, 64, 107, 239, 15],\n", 2788 | " [62, 7, 219, 80, 12, 2, 12, 1, 202, 3, 227],\n", 2789 | " [16, 5, 21, 265, 110],\n", 2790 | " [14, 95, 148, 82, 40, 106, 44, 177],\n", 2791 | " [56, 10, 99, 70, 16, 46, 132, 46, 110, 2, 14, 37, 14, 25],\n", 2792 | " [20, 4, 62],\n", 2793 | " [6, 197],\n", 2794 | " [18, 160],\n", 2795 | " [94, 3, 68, 116],\n", 2796 | " [105, 1, 51, 52, 28, 80, 32, 33, 263],\n", 2797 | " [145, 14, 3, 20, 136, 153, 3, 5],\n", 2798 | " [8, 20, 4, 97, 8, 111, 21, 26, 2, 17, 134, 106, 90, 212, 176, 239],\n", 2799 | " [115, 69, 147, 8, 4, 194, 30, 4, 186, 129, 182, 242, 261, 8, 90, 10, 21, 223],\n", 2800 | " [160,\n", 2801 | " 2,\n", 2802 | " 174,\n", 2803 | " 11,\n", 2804 | " 34,\n", 2805 | " 3,\n", 2806 | " 48,\n", 2807 | " 55,\n", 2808 | " 2,\n", 2809 | " 122,\n", 2810 | " 82,\n", 2811 | " 169,\n", 2812 | " 249,\n", 2813 | " 231,\n", 2814 | " 2,\n", 2815 | " 106,\n", 2816 | " 110,\n", 2817 | " 106,\n", 2818 | " 2],\n", 2819 | " [195,\n", 2820 | " 3,\n", 2821 | " 21,\n", 2822 | " 117,\n", 2823 | " 54,\n", 2824 | " 43,\n", 2825 | " 6,\n", 2826 | " 43,\n", 2827 | " 39,\n", 2828 | " 5,\n", 2829 | " 15,\n", 2830 | " 18,\n", 2831 | " 153,\n", 2832 | " 3,\n", 2833 | " 24,\n", 2834 | " 62,\n", 2835 | " 3,\n", 2836 | " 163,\n", 2837 | " 43,\n", 2838 | " 24,\n", 2839 | " 2,\n", 2840 | " 11,\n", 2841 | " 9,\n", 2842 | " 5,\n", 2843 | " 186,\n", 2844 | " 1,\n", 2845 | " 261],\n", 2846 | " [35],\n", 2847 | " [62, 220, 7, 160, 20, 4, 143, 84, 78],\n", 2848 | " [36,\n", 2849 | " 3,\n", 2850 | " 79,\n", 2851 | " 116,\n", 2852 | " 95,\n", 2853 | " 6,\n", 2854 | " 4,\n", 2855 | " 74,\n", 2856 | " 57,\n", 2857 | " 158,\n", 2858 | " 14,\n", 2859 | " 66,\n", 2860 | " 212,\n", 2861 | " 159,\n", 2862 | " 26,\n", 2863 | " 37,\n", 2864 | " 134,\n", 2865 | " 14,\n", 2866 | " 193],\n", 2867 | " [1,\n", 2868 | " 20,\n", 2869 | " 136,\n", 2870 | " 10,\n", 2871 | " 14,\n", 2872 | " 5,\n", 2873 | " 6,\n", 2874 | " 166,\n", 2875 | " 2,\n", 2876 | " 4,\n", 2877 | " 51,\n", 2878 | " 52,\n", 2879 | " 1,\n", 2880 | " 13,\n", 2881 | " 142,\n", 2882 | " 33,\n", 2883 | " 15,\n", 2884 | " 12,\n", 2885 | " 2,\n", 2886 | " 89,\n", 2887 | " 235,\n", 2888 | " 3,\n", 2889 | " 137,\n", 2890 | " 34,\n", 2891 | " 143,\n", 2892 | " 2,\n", 2893 | " 6,\n", 2894 | " 155,\n", 2895 | " 1,\n", 2896 | " 41,\n", 2897 | " 1,\n", 2898 | " 60,\n", 2899 | " 10,\n", 2900 | " 4,\n", 2901 | " 6,\n", 2902 | " 33,\n", 2903 | " 2,\n", 2904 | " 5,\n", 2905 | " 11,\n", 2906 | " 273,\n", 2907 | " 7,\n", 2908 | " 154,\n", 2909 | " 15,\n", 2910 | " 29,\n", 2911 | " 3,\n", 2912 | " 48,\n", 2913 | " 177,\n", 2914 | " 145],\n", 2915 | " [43, 2, 259, 3, 88, 15, 74, 57, 158, 116, 26, 37, 134, 14],\n", 2916 | " [217, 232, 25, 174, 46, 15, 95, 183, 2, 31, 141, 104, 110, 37, 106],\n", 2917 | " [1, 8, 117, 8, 53, 8, 111, 25, 12, 8, 8],\n", 2918 | " [148, 93, 12, 4, 89, 97, 42, 54, 6, 53, 117],\n", 2919 | " [88, 217, 164, 14, 103, 6],\n", 2920 | " [257, 26, 47, 18, 18, 56, 37, 196, 209, 104],\n", 2921 | " [135, 135, 54, 24, 3, 98],\n", 2922 | " [10,\n", 2923 | " 5,\n", 2924 | " 2,\n", 2925 | " 137,\n", 2926 | " 161,\n", 2927 | " 51,\n", 2928 | " 52,\n", 2929 | " 15,\n", 2930 | " 22,\n", 2931 | " 63,\n", 2932 | " 168,\n", 2933 | " 6,\n", 2934 | " 9,\n", 2935 | " 2,\n", 2936 | " 103,\n", 2937 | " 37,\n", 2938 | " 125,\n", 2939 | " 179,\n", 2940 | " 1,\n", 2941 | " 121,\n", 2942 | " 124,\n", 2943 | " 1,\n", 2944 | " 121,\n", 2945 | " 272,\n", 2946 | " 118],\n", 2947 | " [7, 120, 136, 21, 117, 1, 1, 30, 279, 1],\n", 2948 | " [1, 60, 10, 5, 176, 12, 31, 1, 35, 26, 3, 34],\n", 2949 | " [203, 14, 5, 15, 161, 120, 151, 224, 105, 85, 3, 149],\n", 2950 | " [174, 46, 15, 95, 183, 2, 31, 141, 104, 134],\n", 2951 | " [8, 185, 8, 25, 55, 237, 190],\n", 2952 | " [1, 60, 1, 79, 2, 17, 18],\n", 2953 | " [44, 130, 27, 3, 22, 13, 5, 130],\n", 2954 | " [153, 15, 165, 94, 55, 25, 8, 15],\n", 2955 | " [106, 5, 267, 162, 267, 13, 6, 1, 146, 32, 13],\n", 2956 | " [100, 74, 276, 37, 10, 45, 10, 5, 95, 30, 95, 2, 6, 85, 97, 3, 171, 214],\n", 2957 | " [98, 2, 107, 18, 227, 17],\n", 2958 | " [60, 16, 220, 51, 52, 33, 77, 10, 67, 43, 55, 2, 134, 12, 188, 2, 91],\n", 2959 | " [13, 9, 67],\n", 2960 | " [147, 80, 30, 182, 9],\n", 2961 | " [10, 165, 31, 98, 20, 10, 260],\n", 2962 | " [18, 9, 4],\n", 2963 | " [105, 1, 1, 29, 39, 4, 15, 7, 127, 37, 112, 95, 3],\n", 2964 | " [147, 8, 210, 17, 61, 65, 5, 9, 34, 1, 99, 2, 125, 17],\n", 2965 | " [136, 4],\n", 2966 | " [46, 4, 15, 47, 37, 4, 26, 82],\n", 2967 | " [118, 28, 1, 6, 6, 30, 205, 1, 16, 28, 1, 18, 9, 22, 13, 121],\n", 2968 | " [18, 14, 139, 1, 152, 26],\n", 2969 | " [242, 43, 99, 125, 6, 2, 14, 29, 1, 3, 1, 99, 18, 6, 111],\n", 2970 | " [61,\n", 2971 | " 36,\n", 2972 | " 8,\n", 2973 | " 79,\n", 2974 | " 14,\n", 2975 | " 53,\n", 2976 | " 89,\n", 2977 | " 59,\n", 2978 | " 95,\n", 2979 | " 4,\n", 2980 | " 74,\n", 2981 | " 57,\n", 2982 | " 158,\n", 2983 | " 40,\n", 2984 | " 26,\n", 2985 | " 59,\n", 2986 | " 31,\n", 2987 | " 16,\n", 2988 | " 2,\n", 2989 | " 210,\n", 2990 | " 17,\n", 2991 | " 114],\n", 2992 | " [154, 60, 10, 4, 21, 27, 8, 26, 60, 34, 91, 2, 33],\n", 2993 | " [69, 98, 62, 44, 28, 92, 99, 2],\n", 2994 | " [112, 95, 3, 54, 1, 223],\n", 2995 | " [69, 136, 4, 78, 42, 30, 79, 2, 41, 6, 107, 4],\n", 2996 | " [40, 10, 4, 78, 3, 35, 202, 18, 156, 10, 11, 204, 51, 52],\n", 2997 | " [8, 9, 13, 3, 209, 37, 26, 31, 141],\n", 2998 | " [24, 3, 10, 3, 99, 2, 85, 235],\n", 2999 | " [211, 4, 27, 8, 58, 277, 10, 159, 110, 2],\n", 3000 | " [8,\n", 3001 | " 20,\n", 3002 | " 4,\n", 3003 | " 97,\n", 3004 | " 9,\n", 3005 | " 25,\n", 3006 | " 100,\n", 3007 | " 259,\n", 3008 | " 40,\n", 3009 | " 8,\n", 3010 | " 210,\n", 3011 | " 17,\n", 3012 | " 97,\n", 3013 | " 113,\n", 3014 | " 111,\n", 3015 | " 97,\n", 3016 | " 46,\n", 3017 | " 21,\n", 3018 | " 26,\n", 3019 | " 16],\n", 3020 | " [8,\n", 3021 | " 20,\n", 3022 | " 4,\n", 3023 | " 97,\n", 3024 | " 9,\n", 3025 | " 25,\n", 3026 | " 100,\n", 3027 | " 259,\n", 3028 | " 40,\n", 3029 | " 8,\n", 3030 | " 210,\n", 3031 | " 17,\n", 3032 | " 97,\n", 3033 | " 113,\n", 3034 | " 111,\n", 3035 | " 97,\n", 3036 | " 46,\n", 3037 | " 21,\n", 3038 | " 26,\n", 3039 | " 16],\n", 3040 | " [3, 20, 32, 5, 3, 20, 185, 14, 122, 2, 18],\n", 3041 | " [85,\n", 3042 | " 1,\n", 3043 | " 3,\n", 3044 | " 4,\n", 3045 | " 4,\n", 3046 | " 2,\n", 3047 | " 3,\n", 3048 | " 269,\n", 3049 | " 2,\n", 3050 | " 202,\n", 3051 | " 1,\n", 3052 | " 63,\n", 3053 | " 254,\n", 3054 | " 3,\n", 3055 | " 81,\n", 3056 | " 28,\n", 3057 | " 4,\n", 3058 | " 9,\n", 3059 | " 32,\n", 3060 | " 254,\n", 3061 | " 39,\n", 3062 | " 17,\n", 3063 | " 188,\n", 3064 | " 25,\n", 3065 | " 3,\n", 3066 | " 99,\n", 3067 | " 2,\n", 3068 | " 71,\n", 3069 | " 91,\n", 3070 | " 3,\n", 3071 | " 99,\n", 3072 | " 2,\n", 3073 | " 6,\n", 3074 | " 27,\n", 3075 | " 234,\n", 3076 | " 3,\n", 3077 | " 99,\n", 3078 | " 2,\n", 3079 | " 213],\n", 3080 | " [1, 45, 2, 137, 1, 15, 61, 9, 18],\n", 3081 | " [43, 146, 55, 236],\n", 3082 | " [8, 58, 53, 2, 14, 4, 10, 7],\n", 3083 | " [],\n", 3084 | " [1, 38, 2, 28, 60, 32, 2, 1, 108, 58],\n", 3085 | " [151, 8, 38, 86],\n", 3086 | " [3],\n", 3087 | " [53, 86, 5, 65, 15],\n", 3088 | " [155, 36, 3, 200],\n", 3089 | " [1, 60, 143, 61, 24, 3, 89, 12],\n", 3090 | " [3],\n", 3091 | " [175, 64, 1, 28, 42, 140, 151, 21, 1, 176, 8, 1, 187, 86, 56, 12, 81],\n", 3092 | " [20, 274, 193, 6, 33, 2, 34, 51, 52],\n", 3093 | " [33, 22, 8, 108, 20, 8, 79, 22, 8, 92, 20, 127, 2, 33, 193, 8, 24, 96],\n", 3094 | " [153, 3, 24, 4, 62, 159, 30, 10],\n", 3095 | " [42,\n", 3096 | " 2,\n", 3097 | " 13,\n", 3098 | " 1,\n", 3099 | " 30,\n", 3100 | " 153,\n", 3101 | " 7,\n", 3102 | " 121,\n", 3103 | " 12,\n", 3104 | " 267,\n", 3105 | " 66,\n", 3106 | " 4,\n", 3107 | " 11,\n", 3108 | " 215,\n", 3109 | " 11,\n", 3110 | " 12,\n", 3111 | " 10,\n", 3112 | " 191,\n", 3113 | " 10,\n", 3114 | " 63,\n", 3115 | " 127],\n", 3116 | " [164, 203, 230, 244, 165, 13, 17, 67],\n", 3117 | " [18, 59, 9, 2, 33, 95, 5, 2, 2, 39, 6],\n", 3118 | " [133, 24, 6, 1, 20, 14, 165, 1, 147, 6],\n", 3119 | " [53, 9, 13, 2, 3, 6, 157],\n", 3120 | " [1, 27, 18, 158, 1, 166, 2, 132, 3, 1, 45, 3, 227],\n", 3121 | " [16, 11, 6, 13],\n", 3122 | " [49, 233, 168, 118, 6, 20, 185, 5],\n", 3123 | " [94, 41, 105, 89, 5, 134],\n", 3124 | " [49, 5, 47, 6, 5, 211, 40, 37, 95, 2],\n", 3125 | " [1, 137, 103, 1, 20, 13, 86, 198, 3, 43],\n", 3126 | " [24, 10],\n", 3127 | " [31, 26, 47, 90, 260, 2, 260, 2, 106, 26, 260],\n", 3128 | " [7,\n", 3129 | " 45,\n", 3130 | " 53,\n", 3131 | " 71,\n", 3132 | " 13,\n", 3133 | " 3,\n", 3134 | " 21,\n", 3135 | " 2,\n", 3136 | " 250,\n", 3137 | " 14,\n", 3138 | " 1,\n", 3139 | " 68,\n", 3140 | " 18,\n", 3141 | " 16,\n", 3142 | " 6,\n", 3143 | " 63,\n", 3144 | " 167,\n", 3145 | " 2,\n", 3146 | " 85,\n", 3147 | " 191,\n", 3148 | " 28,\n", 3149 | " 63,\n", 3150 | " 3,\n", 3151 | " 166,\n", 3152 | " 1,\n", 3153 | " 202,\n", 3154 | " 3],\n", 3155 | " [1, 60, 105, 13, 3],\n", 3156 | " [279,\n", 3157 | " 1,\n", 3158 | " 251,\n", 3159 | " 42,\n", 3160 | " 21,\n", 3161 | " 1,\n", 3162 | " 116,\n", 3163 | " 49,\n", 3164 | " 159,\n", 3165 | " 96,\n", 3166 | " 1,\n", 3167 | " 63,\n", 3168 | " 2,\n", 3169 | " 17,\n", 3170 | " 1,\n", 3171 | " 63,\n", 3172 | " 49,\n", 3173 | " 159,\n", 3174 | " 6,\n", 3175 | " 31,\n", 3176 | " 42,\n", 3177 | " 32],\n", 3178 | " [64, 126, 28, 32, 151, 12, 92, 31],\n", 3179 | " [26, 12, 130, 1, 60, 14, 18, 26],\n", 3180 | " [1, 171, 200, 27, 43, 171, 39, 114, 27, 29, 10],\n", 3181 | " [63, 89, 2, 93, 3, 4, 96, 20, 4],\n", 3182 | " [54, 150, 85, 7, 113, 124, 2, 113, 24, 113, 58, 22, 2, 7, 276],\n", 3183 | " [94, 3, 191, 18, 54, 3, 14, 214, 34],\n", 3184 | " [108, 2, 162, 271, 64, 69, 7],\n", 3185 | " [54, 8, 85, 13, 67],\n", 3186 | " [16, 144, 2, 29, 3, 148, 93, 12, 189],\n", 3187 | " [13, 33, 1, 20, 31, 35],\n", 3188 | " [86, 2, 96, 28, 92, 91],\n", 3189 | " [1, 7, 243, 31, 1, 152, 34, 50],\n", 3190 | " [135, 270, 93, 51, 52],\n", 3191 | " [28, 42, 16, 4, 6, 1, 90, 151, 224, 15, 42, 269, 16, 4],\n", 3192 | " [135, 1, 35, 137, 7],\n", 3193 | " [163, 49, 20, 2, 71],\n", 3194 | " [133, 3, 111, 4, 25, 174, 18, 199, 95, 133, 25, 168, 2, 137, 95],\n", 3195 | " [42, 140, 105, 1, 213, 25, 36, 11, 153, 8, 29, 210, 127, 153, 98, 64],\n", 3196 | " [13, 6, 1, 3, 224, 167, 2, 6, 3, 55],\n", 3197 | " [21, 36, 3, 20],\n", 3198 | " [61, 65, 3, 124, 20, 13, 99, 2, 58, 54, 1, 146, 33],\n", 3199 | " [160, 48, 26, 47, 4, 18, 56, 37, 209, 104],\n", 3200 | " [67, 126],\n", 3201 | " [54, 277, 116, 116],\n", 3202 | " [135, 135, 24, 3, 10],\n", 3203 | " [257, 26, 47, 18, 56, 37, 196, 209, 104],\n", 3204 | " [41, 14, 6, 38, 4, 31, 1, 251, 28, 34, 69, 32, 15],\n", 3205 | " [44, 43, 13, 49, 21, 20, 27, 67, 88, 2, 247, 133, 101, 10, 173],\n", 3206 | " [178, 13, 2, 15, 66, 6, 24],\n", 3207 | " [53, 89, 233, 10, 40, 14, 30, 110, 101, 18, 268, 6, 2, 10, 5, 255],\n", 3208 | " [6, 179, 267, 162, 223, 4, 21, 32, 95, 162, 17, 15, 5, 14],\n", 3209 | " [1,\n", 3210 | " 261,\n", 3211 | " 7,\n", 3212 | " 2,\n", 3213 | " 6,\n", 3214 | " 1,\n", 3215 | " 166,\n", 3216 | " 2,\n", 3217 | " 36,\n", 3218 | " 14,\n", 3219 | " 4,\n", 3220 | " 1,\n", 3221 | " 124,\n", 3222 | " 27,\n", 3223 | " 3,\n", 3224 | " 24,\n", 3225 | " 15,\n", 3226 | " 36,\n", 3227 | " 4,\n", 3228 | " 16,\n", 3229 | " 179,\n", 3230 | " 259,\n", 3231 | " 103,\n", 3232 | " 9,\n", 3233 | " 81,\n", 3234 | " 12,\n", 3235 | " 5],\n", 3236 | " [1, 265, 270, 2, 85, 3, 53, 241, 5, 241],\n", 3237 | " [46, 209, 9, 2, 46, 209, 10, 31, 93, 55, 2, 66, 255, 176],\n", 3238 | " [94,\n", 3239 | " 1,\n", 3240 | " 5,\n", 3241 | " 16,\n", 3242 | " 185,\n", 3243 | " 61,\n", 3244 | " 278,\n", 3245 | " 24,\n", 3246 | " 43,\n", 3247 | " 98,\n", 3248 | " 14,\n", 3249 | " 222,\n", 3250 | " 18,\n", 3251 | " 164,\n", 3252 | " 59,\n", 3253 | " 43,\n", 3254 | " 99,\n", 3255 | " 2,\n", 3256 | " 214,\n", 3257 | " 6,\n", 3258 | " 88],\n", 3259 | " [10, 46],\n", 3260 | " [9, 22, 61, 65, 3, 79, 12, 2, 71],\n", 3261 | " [58, 263],\n", 3262 | " [213, 64, 126],\n", 3263 | " [88, 54, 247, 9, 10, 13, 28, 13, 172, 54, 247, 13, 62, 164],\n", 3264 | " [179, 2, 39, 47, 18],\n", 3265 | " [6, 14, 18],\n", 3266 | " [105,\n", 3267 | " 1,\n", 3268 | " 31,\n", 3269 | " 67,\n", 3270 | " 181,\n", 3271 | " 46,\n", 3272 | " 176,\n", 3273 | " 126,\n", 3274 | " 21,\n", 3275 | " 244,\n", 3276 | " 28,\n", 3277 | " 66,\n", 3278 | " 56,\n", 3279 | " 81,\n", 3280 | " 164,\n", 3281 | " 20,\n", 3282 | " 4,\n", 3283 | " 74,\n", 3284 | " 25,\n", 3285 | " 10],\n", 3286 | " [45, 4, 175, 4, 27, 43, 171, 97, 2, 45, 67, 173, 142, 33, 117, 28, 67],\n", 3287 | " [80],\n", 3288 | " [7, 9, 6, 44, 9, 5, 9, 29, 3, 134, 2, 267, 261, 11, 2, 5, 170],\n", 3289 | " [157],\n", 3290 | " [8, 230, 8, 279, 107, 116, 65],\n", 3291 | " [257, 43, 24, 2, 259, 8, 22, 3, 20, 216, 4, 199, 26, 47, 174, 66],\n", 3292 | " [264, 109, 84, 34, 166, 2, 55, 84, 61, 89, 8],\n", 3293 | " [277, 274, 36, 3, 107, 5, 274, 9],\n", 3294 | " [24, 3, 11, 117],\n", 3295 | " [37, 92, 29, 3, 103, 6, 226, 200, 103, 27, 86, 29, 51, 52, 14, 12],\n", 3296 | " [1, 60, 32, 230, 89, 164, 1, 58, 66, 89],\n", 3297 | " [61,\n", 3298 | " 36,\n", 3299 | " 8,\n", 3300 | " 79,\n", 3301 | " 54,\n", 3302 | " 1,\n", 3303 | " 71,\n", 3304 | " 101,\n", 3305 | " 4,\n", 3306 | " 76,\n", 3307 | " 4,\n", 3308 | " 15,\n", 3309 | " 7,\n", 3310 | " 14,\n", 3311 | " 3,\n", 3312 | " 61,\n", 3313 | " 1,\n", 3314 | " 35,\n", 3315 | " 137,\n", 3316 | " 28,\n", 3317 | " 66,\n", 3318 | " 2,\n", 3319 | " 7,\n", 3320 | " 15,\n", 3321 | " 7,\n", 3322 | " 33,\n", 3323 | " 22,\n", 3324 | " 6,\n", 3325 | " 85,\n", 3326 | " 44,\n", 3327 | " 81,\n", 3328 | " 29,\n", 3329 | " 137,\n", 3330 | " 3,\n", 3331 | " 22,\n", 3332 | " 108,\n", 3333 | " 26,\n", 3334 | " 12,\n", 3335 | " 1,\n", 3336 | " 35,\n", 3337 | " 270,\n", 3338 | " 1,\n", 3339 | " 71],\n", 3340 | " [24, 3, 2, 55, 14, 274],\n", 3341 | " [13, 213, 25, 76, 25, 17, 9, 22, 64],\n", 3342 | " [126, 80, 25, 55, 181, 96, 21, 126, 1, 8],\n", 3343 | " [101, 31, 67],\n", 3344 | " [1, 21, 169, 126],\n", 3345 | " [61, 9, 18, 189],\n", 3346 | " [8, 93],\n", 3347 | " [94, 44, 1, 4, 63, 25, 40, 12, 8, 28, 8, 270, 65],\n", 3348 | " [64, 1, 2, 162],\n", 3349 | " [108,\n", 3350 | " 3,\n", 3351 | " 58,\n", 3352 | " 11,\n", 3353 | " 9,\n", 3354 | " 5,\n", 3355 | " 65,\n", 3356 | " 86,\n", 3357 | " 120,\n", 3358 | " 166,\n", 3359 | " 38,\n", 3360 | " 22,\n", 3361 | " 21,\n", 3362 | " 222,\n", 3363 | " 1,\n", 3364 | " 15,\n", 3365 | " 61,\n", 3366 | " 86,\n", 3367 | " 6,\n", 3368 | " 147,\n", 3369 | " 5,\n", 3370 | " 78,\n", 3371 | " 228,\n", 3372 | " 37,\n", 3373 | " 27,\n", 3374 | " 234,\n", 3375 | " 5,\n", 3376 | " 78,\n", 3377 | " 228,\n", 3378 | " 21,\n", 3379 | " 22,\n", 3380 | " 43,\n", 3381 | " 29,\n", 3382 | " 33,\n", 3383 | " 230,\n", 3384 | " 69],\n", 3385 | " [94, 3, 29, 40, 66, 51, 52],\n", 3386 | " [273, 1, 99, 6],\n", 3387 | " [27, 80, 80, 35, 39, 10, 80, 20, 143, 6],\n", 3388 | " [99, 2, 33, 10, 83, 2, 47],\n", 3389 | " [25, 141, 111, 26, 31, 18, 109],\n", 3390 | " [34, 5, 65, 61, 5, 3, 124, 9, 41],\n", 3391 | " [61, 1, 30],\n", 3392 | " [33, 34, 10, 51, 52],\n", 3393 | " [42, 10, 31, 1, 35, 26, 3, 51, 52, 260],\n", 3394 | " [1,\n", 3395 | " 202,\n", 3396 | " 3,\n", 3397 | " 185,\n", 3398 | " 3,\n", 3399 | " 58,\n", 3400 | " 18,\n", 3401 | " 49,\n", 3402 | " 1,\n", 3403 | " 29,\n", 3404 | " 124,\n", 3405 | " 89,\n", 3406 | " 1,\n", 3407 | " 279,\n", 3408 | " 270,\n", 3409 | " 246,\n", 3410 | " 215,\n", 3411 | " 54,\n", 3412 | " 43,\n", 3413 | " 35,\n", 3414 | " 33],\n", 3415 | " [5, 81, 182, 27, 119, 26, 83, 193, 26, 14, 66, 68, 14],\n", 3416 | " [101, 2, 47, 7, 9],\n", 3417 | " [15],\n", 3418 | " [115,\n", 3419 | " 138,\n", 3420 | " 5,\n", 3421 | " 65,\n", 3422 | " 271,\n", 3423 | " 43,\n", 3424 | " 20,\n", 3425 | " 2,\n", 3426 | " 39,\n", 3427 | " 41,\n", 3428 | " 34,\n", 3429 | " 201,\n", 3430 | " 78,\n", 3431 | " 63,\n", 3432 | " 5,\n", 3433 | " 62,\n", 3434 | " 5,\n", 3435 | " 278,\n", 3436 | " 164,\n", 3437 | " 1,\n", 3438 | " 39,\n", 3439 | " 91,\n", 3440 | " 193,\n", 3441 | " 34],\n", 3442 | " [41, 2, 119, 119, 71, 67, 71, 126, 28, 1, 181, 116],\n", 3443 | " [5, 9, 5, 176, 9, 45, 5, 9, 4, 273, 84, 8],\n", 3444 | " [1, 279, 1, 121, 20, 103, 189],\n", 3445 | " [236, 175, 169, 81, 246, 2],\n", 3446 | " [42, 10, 274, 29, 3, 32, 16, 13, 2, 100, 13, 64, 148, 31],\n", 3447 | " [32,\n", 3448 | " 4,\n", 3449 | " 120,\n", 3450 | " 118,\n", 3451 | " 172,\n", 3452 | " 9,\n", 3453 | " 34,\n", 3454 | " 103,\n", 3455 | " 6,\n", 3456 | " 9,\n", 3457 | " 30,\n", 3458 | " 12,\n", 3459 | " 6,\n", 3460 | " 10,\n", 3461 | " 34,\n", 3462 | " 5,\n", 3463 | " 53,\n", 3464 | " 20,\n", 3465 | " 3,\n", 3466 | " 136],\n", 3467 | " [67,\n", 3468 | " 119,\n", 3469 | " 270,\n", 3470 | " 56,\n", 3471 | " 12,\n", 3472 | " 34,\n", 3473 | " 106,\n", 3474 | " 46,\n", 3475 | " 27,\n", 3476 | " 1,\n", 3477 | " 181,\n", 3478 | " 119,\n", 3479 | " 67,\n", 3480 | " 1,\n", 3481 | " 55,\n", 3482 | " 39,\n", 3483 | " 7,\n", 3484 | " 67,\n", 3485 | " 71,\n", 3486 | " 101,\n", 3487 | " 123,\n", 3488 | " 256,\n", 3489 | " 119],\n", 3490 | " ...]" 3491 | ] 3492 | }, 3493 | "execution_count": 33, 3494 | "metadata": {}, 3495 | "output_type": "execute_result" 3496 | } 3497 | ], 3498 | "source": [ 3499 | "tokenizer = Tokenizer(num_words=MAX_NUM_WORDS)\n", 3500 | "tokenizer.fit_on_texts(texts)\n", 3501 | "sequences = tokenizer.texts_to_sequences(texts)\n", 3502 | "sequences" 3503 | ] 3504 | }, 3505 | { 3506 | "cell_type": "code", 3507 | "execution_count": 38, 3508 | "id": "efb7ad67", 3509 | "metadata": {}, 3510 | "outputs": [ 3511 | { 3512 | "data": { 3513 | "text/plain": [ 3514 | "{'i': 1,\n", 3515 | " 'to': 2,\n", 3516 | " 'you': 3,\n", 3517 | " 'a': 4,\n", 3518 | " 'the': 5,\n", 3519 | " 'and': 6,\n", 3520 | " 'my': 7,\n", 3521 | " 'u': 8,\n", 3522 | " 'is': 9,\n", 3523 | " 'in': 10,\n", 3524 | " 'this': 11,\n", 3525 | " 'me': 12,\n", 3526 | " 'it': 13,\n", 3527 | " 'for': 14,\n", 3528 | " 'of': 15,\n", 3529 | " 'on': 16,\n", 3530 | " 'out': 17,\n", 3531 | " 'your': 18,\n", 3532 | " '\\ufeff': 19,\n", 3533 | " 'have': 20,\n", 3534 | " 'so': 21,\n", 3535 | " 'that': 22,\n", 3536 | " 'check': 23,\n", 3537 | " 'are': 24,\n", 3538 | " '2': 25,\n", 3539 | " 'call': 26,\n", 3540 | " 'if': 27,\n", 3541 | " 'but': 28,\n", 3542 | " 'can': 29,\n", 3543 | " 'just': 30,\n", 3544 | " 'now': 31,\n", 3545 | " 'not': 32,\n", 3546 | " 'be': 33,\n", 3547 | " 'at': 34,\n", 3548 | " 'will': 35,\n", 3549 | " 'do': 36,\n", 3550 | " 'or': 37,\n", 3551 | " 'like': 38,\n", 3552 | " 'get': 39,\n", 3553 | " 'with': 40,\n", 3554 | " 'up': 41,\n", 3555 | " \"i'm\": 42,\n", 3556 | " 'we': 43,\n", 3557 | " 'no': 44,\n", 3558 | " 'love': 45,\n", 3559 | " 'ur': 46,\n", 3560 | " 'from': 47,\n", 3561 | " 'please': 48,\n", 3562 | " 'all': 49,\n", 3563 | " 'com': 50,\n", 3564 | " 'lt': 51,\n", 3565 | " 'gt': 52,\n", 3566 | " 'how': 53,\n", 3567 | " 'when': 54,\n", 3568 | " 'go': 55,\n", 3569 | " '4': 56,\n", 3570 | " 'video': 57,\n", 3571 | " 'know': 58,\n", 3572 | " 'free': 59,\n", 3573 | " 'am': 60,\n", 3574 | " 'what': 61,\n", 3575 | " 'good': 62,\n", 3576 | " 'was': 63,\n", 3577 | " 'ok': 64,\n", 3578 | " 'time': 65,\n", 3579 | " 'only': 66,\n", 3580 | " 'then': 67,\n", 3581 | " 'got': 68,\n", 3582 | " 'its': 69,\n", 3583 | " 'song': 70,\n", 3584 | " 'come': 71,\n", 3585 | " '39': 72,\n", 3586 | " 'youtube': 73,\n", 3587 | " 'new': 74,\n", 3588 | " 'br': 75,\n", 3589 | " 'as': 76,\n", 3590 | " 'there': 77,\n", 3591 | " 'day': 78,\n", 3592 | " 'want': 79,\n", 3593 | " 'he': 80,\n", 3594 | " 'one': 81,\n", 3595 | " 'www': 82,\n", 3596 | " 'by': 83,\n", 3597 | " 'amp': 84,\n", 3598 | " 'see': 85,\n", 3599 | " 'she': 86,\n", 3600 | " 'subscribe': 87,\n", 3601 | " 'our': 88,\n", 3602 | " 'about': 89,\n", 3603 | " '1': 90,\n", 3604 | " 'home': 91,\n", 3605 | " 'still': 92,\n", 3606 | " 'send': 93,\n", 3607 | " 'hey': 94,\n", 3608 | " 'text': 95,\n", 3609 | " 'today': 96,\n", 3610 | " 'who': 97,\n", 3611 | " 'going': 98,\n", 3612 | " 'need': 99,\n", 3613 | " 'make': 100,\n", 3614 | " 'back': 101,\n", 3615 | " 'channel': 102,\n", 3616 | " 'her': 103,\n", 3617 | " 't': 104,\n", 3618 | " 'sorry': 105,\n", 3619 | " 'stop': 106,\n", 3620 | " 'take': 107,\n", 3621 | " 'dont': 108,\n", 3622 | " 'music': 109,\n", 3623 | " 'txt': 110,\n", 3624 | " 'r': 111,\n", 3625 | " \"i'll\": 112,\n", 3626 | " 'they': 113,\n", 3627 | " 'more': 114,\n", 3628 | " 'hi': 115,\n", 3629 | " 'any': 116,\n", 3630 | " 'much': 117,\n", 3631 | " 'here': 118,\n", 3632 | " 'ü': 119,\n", 3633 | " 'has': 120,\n", 3634 | " \"don't\": 121,\n", 3635 | " 'http': 122,\n", 3636 | " 'n': 123,\n", 3637 | " 'think': 124,\n", 3638 | " 'some': 125,\n", 3639 | " 'lor': 126,\n", 3640 | " 'an': 127,\n", 3641 | " 'd': 128,\n", 3642 | " '3': 129,\n", 3643 | " 'da': 130,\n", 3644 | " 'guys': 131,\n", 3645 | " 'tell': 132,\n", 3646 | " 'money': 133,\n", 3647 | " 'reply': 134,\n", 3648 | " 'k': 135,\n", 3649 | " 'been': 136,\n", 3650 | " 'give': 137,\n", 3651 | " 'im': 138,\n", 3652 | " 's': 139,\n", 3653 | " 'really': 140,\n", 3654 | " 'mobile': 141,\n", 3655 | " 'would': 142,\n", 3656 | " 'great': 143,\n", 3657 | " 'way': 144,\n", 3658 | " 'thanks': 145,\n", 3659 | " 'should': 146,\n", 3660 | " 'did': 147,\n", 3661 | " 'pls': 148,\n", 3662 | " 'later': 149,\n", 3663 | " 'people': 150,\n", 3664 | " 'too': 151,\n", 3665 | " 'm': 152,\n", 3666 | " 'hope': 153,\n", 3667 | " 'well': 154,\n", 3668 | " 'why': 155,\n", 3669 | " 'best': 156,\n", 3670 | " 'where': 157,\n", 3671 | " 'phone': 158,\n", 3672 | " 'week': 159,\n", 3673 | " 'dear': 160,\n", 3674 | " 'us': 161,\n", 3675 | " 'him': 162,\n", 3676 | " 'oh': 163,\n", 3677 | " 'night': 164,\n", 3678 | " 'work': 165,\n", 3679 | " 'had': 166,\n", 3680 | " 'happy': 167,\n", 3681 | " 'over': 168,\n", 3682 | " 'e': 169,\n", 3683 | " 'right': 170,\n", 3684 | " 'could': 171,\n", 3685 | " 'very': 172,\n", 3686 | " 'life': 173,\n", 3687 | " 'claim': 174,\n", 3688 | " \"it's\": 175,\n", 3689 | " 'msg': 176,\n", 3690 | " 'help': 177,\n", 3691 | " 'doing': 178,\n", 3692 | " 'also': 179,\n", 3693 | " 'https': 180,\n", 3694 | " 'c': 181,\n", 3695 | " 'say': 182,\n", 3696 | " 'yes': 183,\n", 3697 | " 'views': 184,\n", 3698 | " 'already': 185,\n", 3699 | " 'message': 186,\n", 3700 | " 'wat': 187,\n", 3701 | " 'after': 188,\n", 3702 | " 'number': 189,\n", 3703 | " 'first': 190,\n", 3704 | " 'them': 191,\n", 3705 | " 'watch': 192,\n", 3706 | " 'tomorrow': 193,\n", 3707 | " 'nice': 194,\n", 3708 | " 'thank': 195,\n", 3709 | " '000': 196,\n", 3710 | " 'lol': 197,\n", 3711 | " 'said': 198,\n", 3712 | " 'prize': 199,\n", 3713 | " 'ask': 200,\n", 3714 | " 'every': 201,\n", 3715 | " 'miss': 202,\n", 3716 | " 'yeah': 203,\n", 3717 | " 'world': 204,\n", 3718 | " 'because': 205,\n", 3719 | " 'v': 206,\n", 3720 | " 'quot': 207,\n", 3721 | " 'even': 208,\n", 3722 | " 'cash': 209,\n", 3723 | " 'find': 210,\n", 3724 | " 'win': 211,\n", 3725 | " 'per': 212,\n", 3726 | " 'b': 213,\n", 3727 | " 'meet': 214,\n", 3728 | " 'year': 215,\n", 3729 | " 'won': 216,\n", 3730 | " 'last': 217,\n", 3731 | " '5': 218,\n", 3732 | " 'does': 219,\n", 3733 | " 'morning': 220,\n", 3734 | " 'called': 221,\n", 3735 | " 'keep': 222,\n", 3736 | " 'off': 223,\n", 3737 | " 'many': 224,\n", 3738 | " 'his': 225,\n", 3739 | " 'let': 226,\n", 3740 | " 'babe': 227,\n", 3741 | " 'before': 228,\n", 3742 | " 'katy': 229,\n", 3743 | " 'sure': 230,\n", 3744 | " 'uk': 231,\n", 3745 | " 'chance': 232,\n", 3746 | " 'getting': 233,\n", 3747 | " 'anything': 234,\n", 3748 | " 'something': 235,\n", 3749 | " 'again': 236,\n", 3750 | " 'buy': 237,\n", 3751 | " 'cos': 238,\n", 3752 | " 'care': 239,\n", 3753 | " 'comment': 240,\n", 3754 | " 'were': 241,\n", 3755 | " 'hello': 242,\n", 3756 | " 'old': 243,\n", 3757 | " 'thing': 244,\n", 3758 | " 'soon': 245,\n", 3759 | " 'next': 246,\n", 3760 | " 'someone': 247,\n", 3761 | " 'facebook': 248,\n", 3762 | " 'co': 249,\n", 3763 | " 'leave': 250,\n", 3764 | " 'feel': 251,\n", 3765 | " 'nokia': 252,\n", 3766 | " 'videos': 253,\n", 3767 | " 'gonna': 254,\n", 3768 | " '150p': 255,\n", 3769 | " 'pick': 256,\n", 3770 | " 'urgent': 257,\n", 3771 | " 'cool': 258,\n", 3772 | " 'contact': 259,\n", 3773 | " 'min': 260,\n", 3774 | " 'sent': 261,\n", 3775 | " 'everyone': 262,\n", 3776 | " 'around': 263,\n", 3777 | " 'watching': 264,\n", 3778 | " 'cant': 265,\n", 3779 | " 'start': 266,\n", 3780 | " \"i've\": 267,\n", 3781 | " 'name': 268,\n", 3782 | " 'always': 269,\n", 3783 | " 'wait': 270,\n", 3784 | " 'ever': 271,\n", 3785 | " 'live': 272,\n", 3786 | " 'month': 273,\n", 3787 | " 'class': 274,\n", 3788 | " 'gud': 275,\n", 3789 | " 'friends': 276,\n", 3790 | " 'which': 277,\n", 3791 | " 'other': 278,\n", 3792 | " \"can't\": 279,\n", 3793 | " 'place': 280,\n", 3794 | " 'real': 281,\n", 3795 | " 'working': 282,\n", 3796 | " 'visit': 283,\n", 3797 | " '50': 284,\n", 3798 | " 'tonight': 285,\n", 3799 | " 'x': 286,\n", 3800 | " 'went': 287,\n", 3801 | " 'being': 288,\n", 3802 | " 'things': 289,\n", 3803 | " 'coming': 290,\n", 3804 | " '7': 291,\n", 3805 | " 'look': 292,\n", 3806 | " 'most': 293,\n", 3807 | " 'never': 294,\n", 3808 | " 'same': 295,\n", 3809 | " 'than': 296,\n", 3810 | " 'may': 297,\n", 3811 | " 'down': 298,\n", 3812 | " 'service': 299,\n", 3813 | " 'ya': 300,\n", 3814 | " 'sleep': 301,\n", 3815 | " 'wish': 302,\n", 3816 | " 'tone': 303,\n", 3817 | " '16': 304,\n", 3818 | " 'done': 305,\n", 3819 | " 'special': 306,\n", 3820 | " 'hear': 307,\n", 3821 | " 'late': 308,\n", 3822 | " \"you're\": 309,\n", 3823 | " 'making': 310,\n", 3824 | " 'few': 311,\n", 3825 | " 'customer': 312,\n", 3826 | " 'try': 313,\n", 3827 | " \"that's\": 314,\n", 3828 | " 'man': 315,\n", 3829 | " 'better': 316,\n", 3830 | " 'chat': 317,\n", 3831 | " 'person': 318,\n", 3832 | " 'told': 319,\n", 3833 | " 'shit': 320,\n", 3834 | " 'online': 321,\n", 3835 | " 'wanna': 322,\n", 3836 | " 'years': 323,\n", 3837 | " 'friend': 324,\n", 3838 | " 'god': 325,\n", 3839 | " 'trying': 326,\n", 3840 | " 'sms': 327,\n", 3841 | " 'play': 328,\n", 3842 | " '6': 329,\n", 3843 | " 'lot': 330,\n", 3844 | " 'haha': 331,\n", 3845 | " 'girl': 332,\n", 3846 | " 'made': 333,\n", 3847 | " 'wan': 334,\n", 3848 | " 'dun': 335,\n", 3849 | " 'yet': 336,\n", 3850 | " 'those': 337,\n", 3851 | " 'awesome': 338,\n", 3852 | " 'don': 339,\n", 3853 | " '18': 340,\n", 3854 | " 'nothing': 341,\n", 3855 | " 'enjoy': 342,\n", 3856 | " 'use': 343,\n", 3857 | " 'bit': 344,\n", 3858 | " 'waiting': 345,\n", 3859 | " 'share': 346,\n", 3860 | " 'eminem': 347,\n", 3861 | " 'stuff': 348,\n", 3862 | " 'fine': 349,\n", 3863 | " 'y': 350,\n", 3864 | " 'ill': 351,\n", 3865 | " 'days': 352,\n", 3866 | " 'mind': 353,\n", 3867 | " 'billion': 354,\n", 3868 | " 'thought': 355,\n", 3869 | " 'guaranteed': 356,\n", 3870 | " 'thk': 357,\n", 3871 | " 'house': 358,\n", 3872 | " 'big': 359,\n", 3873 | " 'heart': 360,\n", 3874 | " 'these': 361,\n", 3875 | " 'perry': 362,\n", 3876 | " 'mins': 363,\n", 3877 | " 'songs': 364,\n", 3878 | " 'mixtape': 365,\n", 3879 | " 'latest': 366,\n", 3880 | " 'talk': 367,\n", 3881 | " 'part': 368,\n", 3882 | " 'thats': 369,\n", 3883 | " 'job': 370,\n", 3884 | " 'smile': 371,\n", 3885 | " 'birthday': 372,\n", 3886 | " 'thumbs': 373,\n", 3887 | " \"didn't\": 374,\n", 3888 | " 'half': 375,\n", 3889 | " 'holiday': 376,\n", 3890 | " 'beautiful': 377,\n", 3891 | " 'probably': 378,\n", 3892 | " 'plus': 379,\n", 3893 | " 'lunch': 380,\n", 3894 | " 'maybe': 381,\n", 3895 | " 'end': 382,\n", 3896 | " 'yo': 383,\n", 3897 | " 'll': 384,\n", 3898 | " 'boy': 385,\n", 3899 | " 'reach': 386,\n", 3900 | " 'finish': 387,\n", 3901 | " 'long': 388,\n", 3902 | " 'account': 389,\n", 3903 | " 'ready': 390,\n", 3904 | " 'into': 391,\n", 3905 | " 'plz': 392,\n", 3906 | " 'cs': 393,\n", 3907 | " 'line': 394,\n", 3908 | " 'remember': 395,\n", 3909 | " 'draw': 396,\n", 3910 | " 'having': 397,\n", 3911 | " 'word': 398,\n", 3912 | " 'car': 399,\n", 3913 | " 'yup': 400,\n", 3914 | " 'meeting': 401,\n", 3915 | " '10': 402,\n", 3916 | " 'started': 403,\n", 3917 | " 'little': 404,\n", 3918 | " 'tv': 405,\n", 3919 | " 'website': 406,\n", 3920 | " 'true': 407,\n", 3921 | " 'guy': 408,\n", 3922 | " 'dream': 409,\n", 3923 | " 'might': 410,\n", 3924 | " 'actually': 411,\n", 3925 | " 'fuck': 412,\n", 3926 | " 'href': 413,\n", 3927 | " 'shakira': 414,\n", 3928 | " 'camera': 415,\n", 3929 | " 'wont': 416,\n", 3930 | " 'left': 417,\n", 3931 | " 'box': 418,\n", 3932 | " 'wk': 419,\n", 3933 | " 'guess': 420,\n", 3934 | " 'read': 421,\n", 3935 | " 'put': 422,\n", 3936 | " 'bad': 423,\n", 3937 | " 'while': 424,\n", 3938 | " 'google': 425,\n", 3939 | " '£1': 426,\n", 3940 | " 'another': 427,\n", 3941 | " 'luv': 428,\n", 3942 | " 'pray': 429,\n", 3943 | " 'dat': 430,\n", 3944 | " 'quite': 431,\n", 3945 | " 'listen': 432,\n", 3946 | " 'rapper': 433,\n", 3947 | " 'receive': 434,\n", 3948 | " 'eat': 435,\n", 3949 | " 'join': 436,\n", 3950 | " 'sexy': 437,\n", 3951 | " 'problem': 438,\n", 3952 | " 'minutes': 439,\n", 3953 | " 'lar': 440,\n", 3954 | " 'awarded': 441,\n", 3955 | " 'came': 442,\n", 3956 | " 'mean': 443,\n", 3957 | " 'type': 444,\n", 3958 | " 'sir': 445,\n", 3959 | " 'face': 446,\n", 3960 | " 'hot': 447,\n", 3961 | " 'hour': 448,\n", 3962 | " '1st': 449,\n", 3963 | " 'anyone': 450,\n", 3964 | " 'party': 451,\n", 3965 | " 'playlist': 452,\n", 3966 | " '9': 453,\n", 3967 | " 'pay': 454,\n", 3968 | " 'wanted': 455,\n", 3969 | " 'sweet': 456,\n", 3970 | " 'ah': 457,\n", 3971 | " 'bt': 458,\n", 3972 | " 'without': 459,\n", 3973 | " 'liao': 460,\n", 3974 | " 'believe': 461,\n", 3975 | " 'id': 462,\n", 3976 | " 'g': 463,\n", 3977 | " 'baby': 464,\n", 3978 | " 'two': 465,\n", 3979 | " '8': 466,\n", 3980 | " 'fun': 467,\n", 3981 | " 'dinner': 468,\n", 3982 | " 'once': 469,\n", 3983 | " 'po': 470,\n", 3984 | " 'shows': 471,\n", 3985 | " 'jus': 472,\n", 3986 | " 'easy': 473,\n", 3987 | " 'appreciate': 474,\n", 3988 | " 'everything': 475,\n", 3989 | " 'makes': 476,\n", 3990 | " 'gift': 477,\n", 3991 | " 'moneygq': 478,\n", 3992 | " 'xxx': 479,\n", 3993 | " 'code': 480,\n", 3994 | " 'cost': 481,\n", 3995 | " 'room': 482,\n", 3996 | " 're': 483,\n", 3997 | " '£1000': 484,\n", 3998 | " 'must': 485,\n", 3999 | " 'offer': 486,\n", 4000 | " 'covers': 487,\n", 4001 | " 'rate': 488,\n", 4002 | " 'wow': 489,\n", 4003 | " 'looking': 490,\n", 4004 | " 'forgot': 491,\n", 4005 | " '150ppm': 492,\n", 4006 | " 'school': 493,\n", 4007 | " 'landline': 494,\n", 4008 | " 'thanx': 495,\n", 4009 | " 'details': 496,\n", 4010 | " 'follow': 497,\n", 4011 | " 'until': 498,\n", 4012 | " 'early': 499,\n", 4013 | " 'speak': 500,\n", 4014 | " 'network': 501,\n", 4015 | " 'enough': 502,\n", 4016 | " 'click': 503,\n", 4017 | " 'between': 504,\n", 4018 | " 'aight': 505,\n", 4019 | " 'plan': 506,\n", 4020 | " 'shall': 507,\n", 4021 | " 'fucking': 508,\n", 4022 | " 'town': 509,\n", 4023 | " 'away': 510,\n", 4024 | " 'support': 511,\n", 4025 | " 'subscribers': 512,\n", 4026 | " 'zonepa': 513,\n", 4027 | " 'apply': 514,\n", 4028 | " \"there's\": 515,\n", 4029 | " '2nd': 516,\n", 4030 | " 'weekend': 517,\n", 4031 | " 'since': 518,\n", 4032 | " 'dis': 519,\n", 4033 | " 'pa': 520,\n", 4034 | " 'bed': 521,\n", 4035 | " 'else': 522,\n", 4036 | " 'price': 523,\n", 4037 | " 'top': 524,\n", 4038 | " 'hard': 525,\n", 4039 | " 'dunno': 526,\n", 4040 | " 'reading': 527,\n", 4041 | " 'sat': 528,\n", 4042 | " 'den': 529,\n", 4043 | " 'princess': 530,\n", 4044 | " 'heard': 531,\n", 4045 | " 'song\\ufeff': 532,\n", 4046 | " 'times': 533,\n", 4047 | " 'ringtone': 534,\n", 4048 | " \"he's\": 535,\n", 4049 | " 'hair': 536,\n", 4050 | " 'comes': 537,\n", 4051 | " 'means': 538,\n", 4052 | " 'hit': 539,\n", 4053 | " 'anyway': 540,\n", 4054 | " 'didnt': 541,\n", 4055 | " 'shopping': 542,\n", 4056 | " 'post': 543,\n", 4057 | " 'orange': 544,\n", 4058 | " 'office': 545,\n", 4059 | " 'simple': 546,\n", 4060 | " 'kiss': 547,\n", 4061 | " 'wife': 548,\n", 4062 | " 'dad': 549,\n", 4063 | " '100': 550,\n", 4064 | " 'news': 551,\n", 4065 | " 'bus': 552,\n", 4066 | " 'saw': 553,\n", 4067 | " 'yourself': 554,\n", 4068 | " 'okay': 555,\n", 4069 | " 'missing': 556,\n", 4070 | " 'leh': 557,\n", 4071 | " 'book': 558,\n", 4072 | " 'selected': 559,\n", 4073 | " \"how's\": 560,\n", 4074 | " 'girls': 561,\n", 4075 | " 'show': 562,\n", 4076 | " 'says': 563,\n", 4077 | " 'award': 564,\n", 4078 | " 'found': 565,\n", 4079 | " '500': 566,\n", 4080 | " 'asked': 567,\n", 4081 | " 'wake': 568,\n", 4082 | " 'rock': 569,\n", 4083 | " 'bring': 570,\n", 4084 | " 'o': 571,\n", 4085 | " 'comments': 572,\n", 4086 | " 'rihanna': 573,\n", 4087 | " 'goes': 574,\n", 4088 | " 'though': 575,\n", 4089 | " 'calls': 576,\n", 4090 | " 'yesterday': 577,\n", 4091 | " 'afternoon': 578,\n", 4092 | " 'mail': 579,\n", 4093 | " 'able': 580,\n", 4094 | " 'tmr': 581,\n", 4095 | " 'evening': 582,\n", 4096 | " 'important': 583,\n", 4097 | " 'collect': 584,\n", 4098 | " 'texts': 585,\n", 4099 | " 'change': 586,\n", 4100 | " 'funny': 587,\n", 4101 | " 'sub': 588,\n", 4102 | " 'game': 589,\n", 4103 | " 'collection': 590,\n", 4104 | " 'sad': 591,\n", 4105 | " 'wif': 592,\n", 4106 | " 'update': 593,\n", 4107 | " 'net': 594,\n", 4108 | " 'pain': 595,\n", 4109 | " 'their': 596,\n", 4110 | " 'xmas': 597,\n", 4111 | " 'hav': 598,\n", 4112 | " 'style': 599,\n", 4113 | " 'bored': 600,\n", 4114 | " 'family': 601,\n", 4115 | " 'de': 602,\n", 4116 | " '\\xa0': 603,\n", 4117 | " 'rap': 604,\n", 4118 | " 'crazy': 605,\n", 4119 | " 'entry': 606,\n", 4120 | " 'words': 607,\n", 4121 | " 'tried': 608,\n", 4122 | " 'messages': 609,\n", 4123 | " 'abt': 610,\n", 4124 | " 'search': 611,\n", 4125 | " 'page': 612,\n", 4126 | " 'lots': 613,\n", 4127 | " 'shop': 614,\n", 4128 | " 'tones': 615,\n", 4129 | " 'wot': 616,\n", 4130 | " 'ago': 617,\n", 4131 | " 'stay': 618,\n", 4132 | " 'saying': 619,\n", 4133 | " 'dreams': 620,\n", 4134 | " 'ref': 621,\n", 4135 | " '2015': 622,\n", 4136 | " 'extraordinary': 623,\n", 4137 | " 'link': 624,\n", 4138 | " 'alright': 625,\n", 4139 | " 'missed': 626,\n", 4140 | " 'almost': 627,\n", 4141 | " 'second': 628,\n", 4142 | " 'took': 629,\n", 4143 | " 'mob': 630,\n", 4144 | " 'bonus': 631,\n", 4145 | " 'download': 632,\n", 4146 | " 'wen': 633,\n", 4147 | " 'movie': 634,\n", 4148 | " 'worry': 635,\n", 4149 | " 'juz': 636,\n", 4150 | " 'story': 637,\n", 4151 | " 'decimal': 638,\n", 4152 | " 'lets': 639,\n", 4153 | " 'weekly': 640,\n", 4154 | " 'dude': 641,\n", 4155 | " 'feeling': 642,\n", 4156 | " 'wants': 643,\n", 4157 | " 'understand': 644,\n", 4158 | " 'drop': 645,\n", 4159 | " 'cover': 646,\n", 4160 | " '0': 647,\n", 4161 | " 'hate': 648,\n", 4162 | " 'ru': 649,\n", 4163 | " 'million': 650,\n", 4164 | " 'waka': 651,\n", 4165 | " 'set': 652,\n", 4166 | " 'valid': 653,\n", 4167 | " 'hours': 654,\n", 4168 | " 'colour': 655,\n", 4169 | " '£100': 656,\n", 4170 | " \"we're\": 657,\n", 4171 | " 'till': 658,\n", 4172 | " 'yours': 659,\n", 4173 | " 'havent': 660,\n", 4174 | " 'food': 661,\n", 4175 | " 'answer': 662,\n", 4176 | " 'order': 663,\n", 4177 | " '10p': 664,\n", 4178 | " 'far': 665,\n", 4179 | " 'hurt': 666,\n", 4180 | " 'either': 667,\n", 4181 | " 'attempt': 668,\n", 4182 | " 'fast': 669,\n", 4183 | " 'together': 670,\n", 4184 | " 'paid': 671,\n", 4185 | " \"she's\": 672,\n", 4186 | " 'omg': 673,\n", 4187 | " 'dance': 674,\n", 4188 | " 'vote': 675,\n", 4189 | " 'national': 676,\n", 4190 | " \"won't\": 677,\n", 4191 | " 'forget': 678,\n", 4192 | " 'gets': 679,\n", 4193 | " 'double': 680,\n", 4194 | " 'close': 681,\n", 4195 | " 'run': 682,\n", 4196 | " 'driving': 683,\n", 4197 | " 'test': 684,\n", 4198 | " 'haf': 685,\n", 4199 | " 'til': 686,\n", 4200 | " 'minute': 687,\n", 4201 | " 'oso': 688,\n", 4202 | " \"what's\": 689,\n", 4203 | " 'sounds': 690,\n", 4204 | " 'happen': 691,\n", 4205 | " 'nite': 692,\n", 4206 | " 'takes': 693,\n", 4207 | " 'own': 694,\n", 4208 | " 'full': 695,\n", 4209 | " 'games': 696,\n", 4210 | " 'huh': 697,\n", 4211 | " 'head': 698,\n", 4212 | " 'voice': 699,\n", 4213 | " 'kind': 700,\n", 4214 | " 'pretty': 701,\n", 4215 | " 'pub': 702,\n", 4216 | " 'mother': 703,\n", 4217 | " 'lei': 704,\n", 4218 | " 'everyday': 705,\n", 4219 | " 'd\\ufeff': 706,\n", 4220 | " 'question': 707,\n", 4221 | " 'brother': 708,\n", 4222 | " 'press': 709,\n", 4223 | " 'ard': 710,\n", 4224 | " 'delivery': 711,\n", 4225 | " 'whole': 712,\n", 4226 | " \"haven't\": 713,\n", 4227 | " 'address': 714,\n", 4228 | " 'coz': 715,\n", 4229 | " 'company': 716,\n", 4230 | " 'vouchers': 717,\n", 4231 | " 'card': 718,\n", 4232 | " 'friendship': 719,\n", 4233 | " 'moment': 720,\n", 4234 | " 'lose': 721,\n", 4235 | " 'mine': 722,\n", 4236 | " 'sch': 723,\n", 4237 | " 'email': 724,\n", 4238 | " 'goin': 725,\n", 4239 | " 'twitter': 726,\n", 4240 | " '11': 727,\n", 4241 | " 'date': 728,\n", 4242 | " 'trip': 729,\n", 4243 | " '£5000': 730,\n", 4244 | " 'cause': 731,\n", 4245 | " 'busy': 732,\n", 4246 | " \"''\": 733,\n", 4247 | " 'todays': 734,\n", 4248 | " 'taking': 735,\n", 4249 | " 'sleeping': 736,\n", 4250 | " 'both': 737,\n", 4251 | " 'walk': 738,\n", 4252 | " 'wid': 739,\n", 4253 | " 'ring': 740,\n", 4254 | " 'club': 741,\n", 4255 | " 'stupid': 742,\n", 4256 | " 'lost': 743,\n", 4257 | " 'calling': 744,\n", 4258 | " 'reason': 745,\n", 4259 | " 'eve': 746,\n", 4260 | " 'tot': 747,\n", 4261 | " 'sae': 748,\n", 4262 | " 'store': 749,\n", 4263 | " '8007': 750,\n", 4264 | " 'least': 751,\n", 4265 | " 'loving': 752,\n", 4266 | " 'alone': 753,\n", 4267 | " 'ha': 754,\n", 4268 | " 'congrats': 755,\n", 4269 | " 'used': 756,\n", 4270 | " 'smiling': 757,\n", 4271 | " 'points': 758,\n", 4272 | " '£2000': 759,\n", 4273 | " 'open': 760,\n", 4274 | " 'leaving': 761,\n", 4275 | " 'noe': 762,\n", 4276 | " 'wil': 763,\n", 4277 | " 'secret': 764,\n", 4278 | " 'charge': 765,\n", 4279 | " 'w': 766,\n", 4280 | " 'sister': 767,\n", 4281 | " \"we'll\": 768,\n", 4282 | " 'chikku': 769,\n", 4283 | " '£500': 770,\n", 4284 | " 'drive': 771,\n", 4285 | " 'await': 772,\n", 4286 | " 'pic': 773,\n", 4287 | " 'others': 774,\n", 4288 | " 'amazing': 775,\n", 4289 | " '3\\ufeff': 776,\n", 4290 | " 'remix': 777,\n", 4291 | " 'image2you': 778,\n", 4292 | " '48051': 779,\n", 4293 | " 'available': 780,\n", 4294 | " 'final': 781,\n", 4295 | " 'pounds': 782,\n", 4296 | " 'aft': 783,\n", 4297 | " 'tomo': 784,\n", 4298 | " 'pass': 785,\n", 4299 | " 'finished': 786,\n", 4300 | " 'xx': 787,\n", 4301 | " 'private': 788,\n", 4302 | " 'player': 789,\n", 4303 | " 'whats': 790,\n", 4304 | " 'smoke': 791,\n", 4305 | " 'worth': 792,\n", 4306 | " 'gr8': 793,\n", 4307 | " 'touch': 794,\n", 4308 | " 'case': 795,\n", 4309 | " 'angry': 796,\n", 4310 | " '750': 797,\n", 4311 | " '86688': 798,\n", 4312 | " 'okie': 799,\n", 4313 | " 'row': 800,\n", 4314 | " 'bout': 801,\n", 4315 | " 'ass': 802,\n", 4316 | " 'poly': 803,\n", 4317 | " 'pm': 804,\n", 4318 | " 'drink': 805,\n", 4319 | " 'land': 806,\n", 4320 | " 'thinking': 807,\n", 4321 | " 'pics': 808,\n", 4322 | " 'whatever': 809,\n", 4323 | " 'rite': 810,\n", 4324 | " '15': 811,\n", 4325 | " 'p': 812,\n", 4326 | " 'spam': 813,\n", 4327 | " 'psy': 814,\n", 4328 | " 'roar': 815,\n", 4329 | " \"c's\": 816,\n", 4330 | " \"'\": 817,\n", 4331 | " 'months': 818,\n", 4332 | " '20': 819,\n", 4333 | " 'info': 820,\n", 4334 | " 'promise': 821,\n", 4335 | " 'tho': 822,\n", 4336 | " \"doesn't\": 823,\n", 4337 | " 'decided': 824,\n", 4338 | " 'lucky': 825,\n", 4339 | " 'gone': 826,\n", 4340 | " 'mom': 827,\n", 4341 | " 'statement': 828,\n", 4342 | " \"you'll\": 829,\n", 4343 | " 'services': 830,\n", 4344 | " 'hand': 831,\n", 4345 | " 'content': 832,\n", 4346 | " 'finally': 833,\n", 4347 | " 'college': 834,\n", 4348 | " 'break': 835,\n", 4349 | " 'unsubscribe': 836,\n", 4350 | " 'currently': 837,\n", 4351 | " 'gd': 838,\n", 4352 | " 'welcome': 839,\n", 4353 | " '00': 840,\n", 4354 | " 'neva': 841,\n", 4355 | " 'regret': 842,\n", 4356 | " 'auction': 843,\n", 4357 | " 'lie': 844,\n", 4358 | " 'fans': 845,\n", 4359 | " 'singer': 846,\n", 4360 | " 'cup': 847,\n", 4361 | " 'wonderful': 848,\n", 4362 | " 'myself': 849,\n", 4363 | " 'lesson': 850,\n", 4364 | " 'saturday': 851,\n", 4365 | " 'checking': 852,\n", 4366 | " '12hrs': 853,\n", 4367 | " 'happened': 854,\n", 4368 | " 'expires': 855,\n", 4369 | " 'msgs': 856,\n", 4370 | " 'each': 857,\n", 4371 | " 'f': 858,\n", 4372 | " 'sis': 859,\n", 4373 | " 'choose': 860,\n", 4374 | " 'christmas': 861,\n", 4375 | " 'small': 862,\n", 4376 | " 'project': 863,\n", 4377 | " 'dating': 864,\n", 4378 | " 'opt': 865,\n", 4379 | " 'fb': 866,\n", 4380 | " 'mum': 867,\n", 4381 | " 'voucher': 868,\n", 4382 | " 'sun': 869,\n", 4383 | " 'earth': 870,\n", 4384 | " 'knw': 871,\n", 4385 | " 'lovely': 872,\n", 4386 | " 'mates': 873,\n", 4387 | " 'wrong': 874,\n", 4388 | " 'enter': 875,\n", 4389 | " 'write': 876,\n", 4390 | " 'loved': 877,\n", 4391 | " 'likes': 878,\n", 4392 | " 'queen': 879,\n", 4393 | " '30': 880,\n", 4394 | " 'such': 881,\n", 4395 | " 'lyrics': 882,\n", 4396 | " 'treat': 883,\n", 4397 | " 'winner': 884,\n", 4398 | " 'pobox': 885,\n", 4399 | " 'smth': 886,\n", 4400 | " '08000930705': 887,\n", 4401 | " 'loves': 888,\n", 4402 | " 'prob': 889,\n", 4403 | " 'identifier': 890,\n", 4404 | " 'nt': 891,\n", 4405 | " 'age': 892,\n", 4406 | " 'ni8': 893,\n", 4407 | " 'ltd': 894,\n", 4408 | " 'frnd': 895,\n", 4409 | " 'needs': 896,\n", 4410 | " 'carlos': 897,\n", 4411 | " 'boytoy': 898,\n", 4412 | " '25': 899,\n", 4413 | " 'congratulations': 900,\n", 4414 | " 'anytime': 901,\n", 4415 | " 'blue': 902,\n", 4416 | " 'die': 903,\n", 4417 | " 'mobileupd8': 904,\n", 4418 | " 'seen': 905,\n", 4419 | " 'water': 906,\n", 4420 | " '800': 907,\n", 4421 | " 'un': 908,\n", 4422 | " 'em': 909,\n", 4423 | " 'successful': 910,\n", 4424 | " 'site': 911,\n", 4425 | " 'j': 912,\n", 4426 | " 'hows': 913,\n", 4427 | " 'view': 914,\n", 4428 | " 'gangnam': 915,\n", 4429 | " 'credit': 916,\n", 4430 | " 'knows': 917,\n", 4431 | " 'camcorder': 918,\n", 4432 | " 'seeing': 919,\n", 4433 | " 'telling': 920,\n", 4434 | " 'men': 921,\n", 4435 | " 'operator': 922,\n", 4436 | " 'friday': 923,\n", 4437 | " 'hmm': 924,\n", 4438 | " 'quiz': 925,\n", 4439 | " 'yr': 926,\n", 4440 | " 'become': 927,\n", 4441 | " 'parents': 928,\n", 4442 | " 'wit': 929,\n", 4443 | " 'completely': 930,\n", 4444 | " \"you've\": 931,\n", 4445 | " 'course': 932,\n", 4446 | " 'darlin': 933,\n", 4447 | " 'rs': 934,\n", 4448 | " 'goodmorning': 935,\n", 4449 | " 'oredi': 936,\n", 4450 | " 'tel': 937,\n", 4451 | " 'fr': 938,\n", 4452 | " 'hold': 939,\n", 4453 | " 'track': 940,\n", 4454 | " 'light': 941,\n", 4455 | " 'immediately': 942,\n", 4456 | " 'suite342': 943,\n", 4457 | " '2lands': 944,\n", 4458 | " '08000839402': 945,\n", 4459 | " 'talking': 946,\n", 4460 | " 'nope': 947,\n", 4461 | " 'outside': 948,\n", 4462 | " 'opinion': 949,\n", 4463 | " 'fri': 950,\n", 4464 | " '£3': 951,\n", 4465 | " 'within': 952,\n", 4466 | " 'sea': 953,\n", 4467 | " 'self': 954,\n", 4468 | " 'weeks': 955,\n", 4469 | " 'sound': 956,\n", 4470 | " 'laugh': 957,\n", 4471 | " 'sex': 958,\n", 4472 | " 'looks': 959,\n", 4473 | " '…': 960,\n", 4474 | " 'extra': 961,\n", 4475 | " 'mate': 962,\n", 4476 | " 'seconds': 963,\n", 4477 | " 'user': 964,\n", 4478 | " 'knew': 965,\n", 4479 | " 'photo': 966,\n", 4480 | " 'against': 967,\n", 4481 | " 'nyt': 968,\n", 4482 | " 'cute': 969,\n", 4483 | " 'chennai': 970,\n", 4484 | " 'original': 971,\n", 4485 | " 'football': 972,\n", 4486 | " 'youtu': 973,\n", 4487 | " 'point': 974,\n", 4488 | " 'wkly': 975,\n", 4489 | " 'freemsg': 976,\n", 4490 | " 'sunday': 977,\n", 4491 | " 'hungry': 978,\n", 4492 | " 'etc': 979,\n", 4493 | " 'frnds': 980,\n", 4494 | " 'gotta': 981,\n", 4495 | " 'computer': 982,\n", 4496 | " 'mah': 983,\n", 4497 | " 'felt': 984,\n", 4498 | " 'uncle': 985,\n", 4499 | " 'numbers': 986,\n", 4500 | " 'mu': 987,\n", 4501 | " 'fancy': 988,\n", 4502 | " 'bank': 989,\n", 4503 | " 'log': 990,\n", 4504 | " 'mrng': 991,\n", 4505 | " 'tc': 992,\n", 4506 | " 'sign': 993,\n", 4507 | " 'thinks': 994,\n", 4508 | " 'meant': 995,\n", 4509 | " 'unlimited': 996,\n", 4510 | " 'fone': 997,\n", 4511 | " 'ends': 998,\n", 4512 | " 'forward': 999,\n", 4513 | " 'couple': 1000,\n", 4514 | " ...}" 4515 | ] 4516 | }, 4517 | "execution_count": 38, 4518 | "metadata": {}, 4519 | "output_type": "execute_result" 4520 | } 4521 | ], 4522 | "source": [ 4523 | "word_index = tokenizer.word_index\n", 4524 | "word_index" 4525 | ] 4526 | }, 4527 | { 4528 | "cell_type": "code", 4529 | "execution_count": 37, 4530 | "id": "67ae5c25", 4531 | "metadata": {}, 4532 | "outputs": [], 4533 | "source": [ 4534 | "from tensorflow.keras.preprocessing.sequence import pad_sequences" 4535 | ] 4536 | }, 4537 | { 4538 | "cell_type": "code", 4539 | "execution_count": 39, 4540 | "id": "685b0e07", 4541 | "metadata": {}, 4542 | "outputs": [], 4543 | "source": [ 4544 | "MAX_SEQ_LENGTH = 300" 4545 | ] 4546 | }, 4547 | { 4548 | "cell_type": "code", 4549 | "execution_count": 40, 4550 | "id": "11da526e", 4551 | "metadata": {}, 4552 | "outputs": [], 4553 | "source": [ 4554 | "X = pad_sequences(sequences, maxlen=MAX_SEQ_LENGTH)" 4555 | ] 4556 | }, 4557 | { 4558 | "cell_type": "code", 4559 | "execution_count": 44, 4560 | "id": "224ebddf", 4561 | "metadata": {}, 4562 | "outputs": [], 4563 | "source": [ 4564 | "import numpy as np\n", 4565 | "from tensorflow.keras.utils import to_categorical" 4566 | ] 4567 | }, 4568 | { 4569 | "cell_type": "code", 4570 | "execution_count": 45, 4571 | "id": "94b059bd", 4572 | "metadata": {}, 4573 | "outputs": [ 4574 | { 4575 | "data": { 4576 | "text/plain": [ 4577 | "array([0, 0, 1, ..., 1, 1, 0])" 4578 | ] 4579 | }, 4580 | "execution_count": 45, 4581 | "metadata": {}, 4582 | "output_type": "execute_result" 4583 | } 4584 | ], 4585 | "source": [ 4586 | "labels_as_int_array = np.asarray(labels_as_int)\n", 4587 | "labels_as_int_array" 4588 | ] 4589 | }, 4590 | { 4591 | "cell_type": "code", 4592 | "execution_count": 46, 4593 | "id": "1c942d83", 4594 | "metadata": {}, 4595 | "outputs": [], 4596 | "source": [ 4597 | "y = to_categorical(labels_as_int_array)" 4598 | ] 4599 | }, 4600 | { 4601 | "cell_type": "code", 4602 | "execution_count": 47, 4603 | "id": "05e359a4", 4604 | "metadata": {}, 4605 | "outputs": [ 4606 | { 4607 | "data": { 4608 | "text/plain": [ 4609 | "array([[1., 0.],\n", 4610 | " [1., 0.],\n", 4611 | " [0., 1.],\n", 4612 | " ...,\n", 4613 | " [0., 1.],\n", 4614 | " [0., 1.],\n", 4615 | " [1., 0.]], dtype=float32)" 4616 | ] 4617 | }, 4618 | "execution_count": 47, 4619 | "metadata": {}, 4620 | "output_type": "execute_result" 4621 | } 4622 | ], 4623 | "source": [ 4624 | "y" 4625 | ] 4626 | }, 4627 | { 4628 | "cell_type": "code", 4629 | "execution_count": 48, 4630 | "id": "1448b76e", 4631 | "metadata": {}, 4632 | "outputs": [ 4633 | { 4634 | "data": { 4635 | "text/plain": [ 4636 | "[[1, 0], [1, 0], [0, 1]]" 4637 | ] 4638 | }, 4639 | "execution_count": 48, 4640 | "metadata": {}, 4641 | "output_type": "execute_result" 4642 | } 4643 | ], 4644 | "source": [ 4645 | "[0, 0, 1]\n", 4646 | "['ham', 'ham', 'spam']\n", 4647 | "['ham', 'spam']\n", 4648 | "\n", 4649 | "[[1, 0], [1,0], [0, 1]]" 4650 | ] 4651 | }, 4652 | { 4653 | "cell_type": "code", 4654 | "execution_count": null, 4655 | "id": "e27e225b", 4656 | "metadata": {}, 4657 | "outputs": [], 4658 | "source": [] 4659 | } 4660 | ], 4661 | "metadata": { 4662 | "kernelspec": { 4663 | "display_name": "Python 3 (ipykernel)", 4664 | "language": "python", 4665 | "name": "python3" 4666 | }, 4667 | "language_info": { 4668 | "codemirror_mode": { 4669 | "name": "ipython", 4670 | "version": 3 4671 | }, 4672 | "file_extension": ".py", 4673 | "mimetype": "text/x-python", 4674 | "name": "python", 4675 | "nbconvert_exporter": "python", 4676 | "pygments_lexer": "ipython3", 4677 | "version": "3.9.7" 4678 | } 4679 | }, 4680 | "nbformat": 4, 4681 | "nbformat_minor": 5 4682 | } 4683 | --------------------------------------------------------------------------------