{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "QkFgjTNf3auo"
},
"source": [
"# TripAdvisor Recommendation Challenge\n",
"In this project, we will build a recommendation system based on *TripAdvisor* reviews. Our goal is to implement a BM25 baseline and a custom recommendation model that can outperform BM25 using user reviews only, without access to explicit ratings during the recommendation phase."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"executionInfo": {
"elapsed": 12626,
"status": "ok",
"timestamp": 1730740246182,
"user": {
"displayName": "Joyce Lapilus",
"userId": "10669185642835107674"
},
"user_tz": -60
},
"id": "Rbrrcses54qP",
"outputId": "1594b83f-c6dc-4438-a3c0-1e50d2371fcb"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: rank_bm25 in c:\\users\\joyce\\anaconda3\\envs\\ml-nlp\\lib\\site-packages (0.2.2)\n",
"Requirement already satisfied: numpy in c:\\users\\joyce\\anaconda3\\envs\\ml-nlp\\lib\\site-packages (from rank_bm25) (1.26.4)\n"
]
}
],
"source": [
"!pip install rank_bm25"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"executionInfo": {
"elapsed": 74043,
"status": "ok",
"timestamp": 1730740320222,
"user": {
"displayName": "Joyce Lapilus",
"userId": "10669185642835107674"
},
"user_tz": -60
},
"id": "CSHZJjvc3EJG",
"outputId": "9e617a95-b25e-43eb-8582-c22157b682d3"
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"c:\\Users\\Joyce\\anaconda3\\envs\\ml-nlp\\lib\\site-packages\\sentence_transformers\\cross_encoder\\CrossEncoder.py:13: TqdmExperimentalWarning: Using `tqdm.autonotebook.tqdm` in notebook mode. Use `tqdm.tqdm` instead to force console mode (e.g. in jupyter console)\n",
" from tqdm.autonotebook import tqdm, trange\n",
"[nltk_data] Downloading package punkt to\n",
"[nltk_data] C:\\Users\\Joyce\\AppData\\Roaming\\nltk_data...\n",
"[nltk_data] Package punkt is already up-to-date!\n",
"[nltk_data] Downloading package stopwords to\n",
"[nltk_data] C:\\Users\\Joyce\\AppData\\Roaming\\nltk_data...\n",
"[nltk_data] Package stopwords is already up-to-date!\n",
"[nltk_data] Downloading package wordnet to\n",
"[nltk_data] C:\\Users\\Joyce\\AppData\\Roaming\\nltk_data...\n",
"[nltk_data] Package wordnet is already up-to-date!\n"
]
}
],
"source": [
"import pandas as pd # For data management\n",
"import json # For manipulating JSON-like formatted strings/documents\n",
"import numpy as np # To use \"argsort\" function\n",
"from rank_bm25 import BM25Okapi # For BM25 implementation\n",
"from collections import Counter # For counting occurrences of elements, used here for word frequency analysis\n",
"import matplotlib.pyplot as plt\n",
"from sentence_transformers import SentenceTransformer\n",
"\n",
"# Display progress bar\n",
"from tqdm import tqdm\n",
"\n",
"# ==== scikit-learn ====\n",
"from sklearn.metrics import root_mean_squared_error, ndcg_score\n",
"from sklearn.feature_extraction.text import TfidfVectorizer\n",
"from sklearn.metrics.pairwise import cosine_similarity\n",
"\n",
"# ==== NLTK for NLP ====\n",
"import nltk\n",
"\n",
"# For tokenizing text based on a regular expression pattern\n",
"nltk.download('punkt')\n",
"from nltk.tokenize import regexp_tokenize\n",
"\n",
"# For accessing stopwords, which are commonly removed from text data\n",
"nltk.download('stopwords')\n",
"from nltk.corpus import stopwords\n",
"stop_words = set(stopwords.words('english'))\n",
"\n",
"# For converting words to their base form (lemmatization)\n",
"nltk.download(\"wordnet\") # lemmatizer\n",
"from nltk.stem import WordNetLemmatizer"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"executionInfo": {
"elapsed": 2,
"status": "ok",
"timestamp": 1730740349661,
"user": {
"displayName": "Joyce Lapilus",
"userId": "10669185642835107674"
},
"user_tz": -60
},
"id": "Bm-9_Odu3glT"
},
"outputs": [],
"source": [
"# PROJECT_PATH = \"/content/drive/MyDrive/Ecole/ESILV/A5/Machine Learning for NLP/Project/\"\n",
"PROJECT_PATH = \"\""
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "EcN1_Y6t3cqd"
},
"source": [
"## Data Loading and Preprocessing\n",
"We will load the TripAdvisor dataset (downloadable from Kaggle), filter it based on specified aspects, and preprocess by concatenating reviews by place (`offering_id`)."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "sE7wBkkD30lc"
},
"source": [
"### Loading the dataset"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 293
},
"executionInfo": {
"elapsed": 42118,
"status": "ok",
"timestamp": 1730740391777,
"user": {
"displayName": "Joyce Lapilus",
"userId": "10669185642835107674"
},
"user_tz": -60
},
"id": "8CXyTmmH3x4R",
"outputId": "cb5a8728-09ab-4cb1-e200-c623a7eb8892"
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" ratings \n",
" title \n",
" text \n",
" author \n",
" date_stayed \n",
" offering_id \n",
" num_helpful_votes \n",
" date \n",
" id \n",
" via_mobile \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" {'service': 5.0, 'cleanliness': 5.0, 'overall'... \n",
" “Truly is \"Jewel of the Upper Wets Side\"” \n",
" Stayed in a king suite for 11 nights and yes i... \n",
" {'username': 'Papa_Panda', 'num_cities': 22, '... \n",
" December 2012 \n",
" 93338 \n",
" 0 \n",
" 2012-12-17 \n",
" 147643103 \n",
" False \n",
" \n",
" \n",
" 1 \n",
" {'service': 5.0, 'cleanliness': 5.0, 'overall'... \n",
" “My home away from home!” \n",
" On every visit to NYC, the Hotel Beacon is the... \n",
" {'username': 'Maureen V', 'num_reviews': 2, 'n... \n",
" December 2012 \n",
" 93338 \n",
" 0 \n",
" 2012-12-17 \n",
" 147639004 \n",
" False \n",
" \n",
" \n",
" 2 \n",
" {'service': 4.0, 'cleanliness': 5.0, 'overall'... \n",
" “Great Stay” \n",
" This is a great property in Midtown. We two di... \n",
" {'username': 'vuguru', 'num_cities': 12, 'num_... \n",
" December 2012 \n",
" 1762573 \n",
" 0 \n",
" 2012-12-18 \n",
" 147697954 \n",
" False \n",
" \n",
" \n",
" 3 \n",
" {'service': 5.0, 'cleanliness': 5.0, 'overall'... \n",
" “Modern Convenience” \n",
" The Andaz is a nice hotel in a central locatio... \n",
" {'username': 'Hotel-Designer', 'num_cities': 5... \n",
" August 2012 \n",
" 1762573 \n",
" 0 \n",
" 2012-12-17 \n",
" 147625723 \n",
" False \n",
" \n",
" \n",
" 4 \n",
" {'service': 4.0, 'cleanliness': 5.0, 'overall'... \n",
" “Its the best of the Andaz Brand in the US....” \n",
" I have stayed at each of the US Andaz properti... \n",
" {'username': 'JamesE339', 'num_cities': 34, 'n... \n",
" December 2012 \n",
" 1762573 \n",
" 0 \n",
" 2012-12-17 \n",
" 147612823 \n",
" False \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" ratings \\\n",
"0 {'service': 5.0, 'cleanliness': 5.0, 'overall'... \n",
"1 {'service': 5.0, 'cleanliness': 5.0, 'overall'... \n",
"2 {'service': 4.0, 'cleanliness': 5.0, 'overall'... \n",
"3 {'service': 5.0, 'cleanliness': 5.0, 'overall'... \n",
"4 {'service': 4.0, 'cleanliness': 5.0, 'overall'... \n",
"\n",
" title \\\n",
"0 “Truly is \"Jewel of the Upper Wets Side\"” \n",
"1 “My home away from home!” \n",
"2 “Great Stay” \n",
"3 “Modern Convenience” \n",
"4 “Its the best of the Andaz Brand in the US....” \n",
"\n",
" text \\\n",
"0 Stayed in a king suite for 11 nights and yes i... \n",
"1 On every visit to NYC, the Hotel Beacon is the... \n",
"2 This is a great property in Midtown. We two di... \n",
"3 The Andaz is a nice hotel in a central locatio... \n",
"4 I have stayed at each of the US Andaz properti... \n",
"\n",
" author date_stayed \\\n",
"0 {'username': 'Papa_Panda', 'num_cities': 22, '... December 2012 \n",
"1 {'username': 'Maureen V', 'num_reviews': 2, 'n... December 2012 \n",
"2 {'username': 'vuguru', 'num_cities': 12, 'num_... December 2012 \n",
"3 {'username': 'Hotel-Designer', 'num_cities': 5... August 2012 \n",
"4 {'username': 'JamesE339', 'num_cities': 34, 'n... December 2012 \n",
"\n",
" offering_id num_helpful_votes date id via_mobile \n",
"0 93338 0 2012-12-17 147643103 False \n",
"1 93338 0 2012-12-17 147639004 False \n",
"2 1762573 0 2012-12-18 147697954 False \n",
"3 1762573 0 2012-12-17 147625723 False \n",
"4 1762573 0 2012-12-17 147612823 False "
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Load dataset\n",
"df = pd.read_csv(PROJECT_PATH + 'data/reviews.csv')\n",
"df.head()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"executionInfo": {
"elapsed": 5,
"status": "ok",
"timestamp": 1730740391777,
"user": {
"displayName": "Joyce Lapilus",
"userId": "10669185642835107674"
},
"user_tz": -60
},
"id": "VnaDr8DY35M4",
"outputId": "1721ce9f-e802-4a9c-b5a4-c240f4932fbe"
},
"outputs": [
{
"data": {
"text/plain": [
"(878561, 10)"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.shape"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 398
},
"executionInfo": {
"elapsed": 3,
"status": "ok",
"timestamp": 1730740391777,
"user": {
"displayName": "Joyce Lapilus",
"userId": "10669185642835107674"
},
"user_tz": -60
},
"id": "oBi2bQCW35mv",
"outputId": "58f440b6-b66e-477c-e627-44382e10e266"
},
"outputs": [
{
"data": {
"text/plain": [
"ratings object\n",
"title object\n",
"text object\n",
"author object\n",
"date_stayed object\n",
"offering_id int64\n",
"num_helpful_votes int64\n",
"date object\n",
"id int64\n",
"via_mobile bool\n",
"dtype: object"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.dtypes"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 398
},
"executionInfo": {
"elapsed": 329,
"status": "ok",
"timestamp": 1730740392103,
"user": {
"displayName": "Joyce Lapilus",
"userId": "10669185642835107674"
},
"user_tz": -60
},
"id": "OAOW8_A23710",
"outputId": "8718b712-e5d2-428d-da49-6cfadde87b00"
},
"outputs": [
{
"data": {
"text/plain": [
"ratings 0\n",
"title 0\n",
"text 0\n",
"author 0\n",
"date_stayed 67594\n",
"offering_id 0\n",
"num_helpful_votes 0\n",
"date 0\n",
"id 0\n",
"via_mobile 0\n",
"dtype: int64"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.isnull().sum()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "BrfJM0ps39cB"
},
"source": [
"### Filtering reviews with specific aspects"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 310
},
"executionInfo": {
"elapsed": 1354,
"status": "ok",
"timestamp": 1730740393454,
"user": {
"displayName": "Joyce Lapilus",
"userId": "10669185642835107674"
},
"user_tz": -60
},
"id": "ZZE-h2qR3-K5",
"outputId": "1e7bcb2d-ff18-4d97-941d-37463484972f"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"New DataFrame's shape: (436391, 10)\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" ratings \n",
" title \n",
" text \n",
" author \n",
" date_stayed \n",
" offering_id \n",
" num_helpful_votes \n",
" date \n",
" id \n",
" via_mobile \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" {'service': 5.0, 'cleanliness': 5.0, 'overall'... \n",
" “Truly is \"Jewel of the Upper Wets Side\"” \n",
" Stayed in a king suite for 11 nights and yes i... \n",
" {'username': 'Papa_Panda', 'num_cities': 22, '... \n",
" December 2012 \n",
" 93338 \n",
" 0 \n",
" 2012-12-17 \n",
" 147643103 \n",
" False \n",
" \n",
" \n",
" 1 \n",
" {'service': 5.0, 'cleanliness': 5.0, 'overall'... \n",
" “My home away from home!” \n",
" On every visit to NYC, the Hotel Beacon is the... \n",
" {'username': 'Maureen V', 'num_reviews': 2, 'n... \n",
" December 2012 \n",
" 93338 \n",
" 0 \n",
" 2012-12-17 \n",
" 147639004 \n",
" False \n",
" \n",
" \n",
" 2 \n",
" {'service': 4.0, 'cleanliness': 5.0, 'overall'... \n",
" “Great Stay” \n",
" This is a great property in Midtown. We two di... \n",
" {'username': 'vuguru', 'num_cities': 12, 'num_... \n",
" December 2012 \n",
" 1762573 \n",
" 0 \n",
" 2012-12-18 \n",
" 147697954 \n",
" False \n",
" \n",
" \n",
" 3 \n",
" {'service': 5.0, 'cleanliness': 5.0, 'overall'... \n",
" “Modern Convenience” \n",
" The Andaz is a nice hotel in a central locatio... \n",
" {'username': 'Hotel-Designer', 'num_cities': 5... \n",
" August 2012 \n",
" 1762573 \n",
" 0 \n",
" 2012-12-17 \n",
" 147625723 \n",
" False \n",
" \n",
" \n",
" 4 \n",
" {'service': 4.0, 'cleanliness': 5.0, 'overall'... \n",
" “Its the best of the Andaz Brand in the US....” \n",
" I have stayed at each of the US Andaz properti... \n",
" {'username': 'JamesE339', 'num_cities': 34, 'n... \n",
" December 2012 \n",
" 1762573 \n",
" 0 \n",
" 2012-12-17 \n",
" 147612823 \n",
" False \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" ratings \\\n",
"0 {'service': 5.0, 'cleanliness': 5.0, 'overall'... \n",
"1 {'service': 5.0, 'cleanliness': 5.0, 'overall'... \n",
"2 {'service': 4.0, 'cleanliness': 5.0, 'overall'... \n",
"3 {'service': 5.0, 'cleanliness': 5.0, 'overall'... \n",
"4 {'service': 4.0, 'cleanliness': 5.0, 'overall'... \n",
"\n",
" title \\\n",
"0 “Truly is \"Jewel of the Upper Wets Side\"” \n",
"1 “My home away from home!” \n",
"2 “Great Stay” \n",
"3 “Modern Convenience” \n",
"4 “Its the best of the Andaz Brand in the US....” \n",
"\n",
" text \\\n",
"0 Stayed in a king suite for 11 nights and yes i... \n",
"1 On every visit to NYC, the Hotel Beacon is the... \n",
"2 This is a great property in Midtown. We two di... \n",
"3 The Andaz is a nice hotel in a central locatio... \n",
"4 I have stayed at each of the US Andaz properti... \n",
"\n",
" author date_stayed \\\n",
"0 {'username': 'Papa_Panda', 'num_cities': 22, '... December 2012 \n",
"1 {'username': 'Maureen V', 'num_reviews': 2, 'n... December 2012 \n",
"2 {'username': 'vuguru', 'num_cities': 12, 'num_... December 2012 \n",
"3 {'username': 'Hotel-Designer', 'num_cities': 5... August 2012 \n",
"4 {'username': 'JamesE339', 'num_cities': 34, 'n... December 2012 \n",
"\n",
" offering_id num_helpful_votes date id via_mobile \n",
"0 93338 0 2012-12-17 147643103 False \n",
"1 93338 0 2012-12-17 147639004 False \n",
"2 1762573 0 2012-12-18 147697954 False \n",
"3 1762573 0 2012-12-17 147625723 False \n",
"4 1762573 0 2012-12-17 147612823 False "
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Filter reviews with specific aspects\n",
"required_aspects = ['service', 'cleanliness', 'overall', 'value', 'location', 'sleep_quality', 'rooms']\n",
"\n",
"# Filter rows where all required aspects are in each 'ratings' entry\n",
"df = df[df[\"ratings\"].apply(lambda x: all(aspect in x for aspect in required_aspects))]\n",
"\n",
"print(f\"New DataFrame's shape: {df.shape}\")\n",
"df.head()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "R382jTpz4Cyj"
},
"source": [
"We went from **878,561** rows to **436,391 rows**; so about 450k rows didn't contain all the aspects we need to compare all places accurately."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "yZT6e3gm4EsC"
},
"source": [
"### Concatenating reviews from the same place"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"executionInfo": {
"elapsed": 3,
"status": "ok",
"timestamp": 1730740393454,
"user": {
"displayName": "Joyce Lapilus",
"userId": "10669185642835107674"
},
"user_tz": -60
},
"id": "gG_CzosV4CVg"
},
"outputs": [],
"source": [
"# Function to calculate average rating for each aspect\n",
"def get_avg_rating_aspects(ratings_str):\n",
" # Convert each string in the list to a dictionary\n",
" ratings_dicts = [json.loads(rating.replace(\"'\", \"\\\"\")) for rating in ratings_str]\n",
"\n",
" # Get the number of ratings to calculate the average\n",
" nb_ratings = len(ratings_dicts)\n",
"\n",
" # Initialize a dictionary to store average ratings per aspect\n",
" avg_ratings = {}\n",
"\n",
" # Iterate over each required aspect\n",
" for aspect in required_aspects:\n",
" # Initialize the sum for the current aspect\n",
" aspect_rating_sum = 0\n",
"\n",
" # Sum up the ratings for the current aspect from all dictionaries\n",
" for ratings in ratings_dicts:\n",
" aspect_rating_sum += ratings[aspect]\n",
"\n",
" # Calculate the average rating for the aspect, rounded to 1 decimal place\n",
" avg_ratings[aspect] = round(aspect_rating_sum / nb_ratings, 1)\n",
"\n",
" # Return the dictionary with average ratings for each aspect\n",
" return avg_ratings"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 224
},
"executionInfo": {
"elapsed": 6852,
"status": "ok",
"timestamp": 1730740400303,
"user": {
"displayName": "Joyce Lapilus",
"userId": "10669185642835107674"
},
"user_tz": -60
},
"id": "46TWi9GX3_10",
"outputId": "3cfa3af9-97f4-44e5-b299-1ed3a26c6941"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Grouped DataFrame's shape: (3754, 3)\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" offering_id \n",
" reviews \n",
" ratings \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 72572 \n",
" I had to make fast visit to seattle and I foun... \n",
" {'service': 4.6, 'cleanliness': 4.6, 'overall'... \n",
" \n",
" \n",
" 1 \n",
" 72579 \n",
" Great service, rooms were clean, could use som... \n",
" {'service': 4.2, 'cleanliness': 4.2, 'overall'... \n",
" \n",
" \n",
" 2 \n",
" 72586 \n",
" Beautiful views of the space needle - especial... \n",
" {'service': 4.2, 'cleanliness': 4.3, 'overall'... \n",
" \n",
" \n",
" 3 \n",
" 72598 \n",
" This hotel is in need of some serious updates.... \n",
" {'service': 3.2, 'cleanliness': 3.2, 'overall'... \n",
" \n",
" \n",
" 4 \n",
" 73236 \n",
" My experience at this days inn was perfect. th... \n",
" {'service': 4.3, 'cleanliness': 3.1, 'overall'... \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" offering_id reviews \\\n",
"0 72572 I had to make fast visit to seattle and I foun... \n",
"1 72579 Great service, rooms were clean, could use som... \n",
"2 72586 Beautiful views of the space needle - especial... \n",
"3 72598 This hotel is in need of some serious updates.... \n",
"4 73236 My experience at this days inn was perfect. th... \n",
"\n",
" ratings \n",
"0 {'service': 4.6, 'cleanliness': 4.6, 'overall'... \n",
"1 {'service': 4.2, 'cleanliness': 4.2, 'overall'... \n",
"2 {'service': 4.2, 'cleanliness': 4.3, 'overall'... \n",
"3 {'service': 3.2, 'cleanliness': 3.2, 'overall'... \n",
"4 {'service': 4.3, 'cleanliness': 3.1, 'overall'... "
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Call custom aggregate function on \"ratings\" column\n",
"df_grouped = df.groupby('offering_id').agg({'text': '\\n'.join, 'ratings': get_avg_rating_aspects}).reset_index()\n",
"\n",
"# Rename the 'text' column to be more explicit\n",
"df_grouped.rename(columns={\"text\": \"reviews\"}, inplace=True)\n",
"\n",
"print(f\"Grouped DataFrame's shape: {df_grouped.shape}\")\n",
"df_grouped.head()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "T_0Fabrt4JZS"
},
"source": [
"### Adding hotel info to `df`"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"*This step is merely to make the results more readable for us humans, so that instead of an ID we get an actual place name with some info (e.g., stars).*"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 206
},
"executionInfo": {
"elapsed": 520,
"status": "ok",
"timestamp": 1730740400819,
"user": {
"displayName": "Joyce Lapilus",
"userId": "10669185642835107674"
},
"user_tz": -60
},
"id": "McV2Mhx64J_N",
"outputId": "e5113272-1a77-4a45-df20-3586188967ec"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" hotel_class \n",
" region_id \n",
" url \n",
" phone \n",
" details \n",
" address \n",
" type \n",
" id \n",
" name \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 4.0 \n",
" 60763 \n",
" http://www.tripadvisor.com/Hotel_Review-g60763... \n",
" NaN \n",
" NaN \n",
" {'region': 'NY', 'street-address': '147 West 4... \n",
" hotel \n",
" 113317 \n",
" Casablanca Hotel Times Square \n",
" \n",
" \n",
" 1 \n",
" 5.0 \n",
" 32655 \n",
" http://www.tripadvisor.com/Hotel_Review-g32655... \n",
" NaN \n",
" NaN \n",
" {'region': 'CA', 'street-address': '300 S Dohe... \n",
" hotel \n",
" 76049 \n",
" Four Seasons Hotel Los Angeles at Beverly Hills \n",
" \n",
" \n",
" 2 \n",
" 3.5 \n",
" 60763 \n",
" http://www.tripadvisor.com/Hotel_Review-g60763... \n",
" NaN \n",
" NaN \n",
" {'region': 'NY', 'street-address': '790 Eighth... \n",
" hotel \n",
" 99352 \n",
" Hilton Garden Inn Times Square \n",
" \n",
" \n",
" 3 \n",
" 4.0 \n",
" 60763 \n",
" http://www.tripadvisor.com/Hotel_Review-g60763... \n",
" NaN \n",
" NaN \n",
" {'region': 'NY', 'street-address': '152 West 5... \n",
" hotel \n",
" 93589 \n",
" The Michelangelo Hotel \n",
" \n",
" \n",
" 4 \n",
" 4.0 \n",
" 60763 \n",
" http://www.tripadvisor.com/Hotel_Review-g60763... \n",
" NaN \n",
" NaN \n",
" {'region': 'NY', 'street-address': '130 West 4... \n",
" hotel \n",
" 217616 \n",
" The Muse Hotel New York \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" hotel_class region_id url \\\n",
"0 4.0 60763 http://www.tripadvisor.com/Hotel_Review-g60763... \n",
"1 5.0 32655 http://www.tripadvisor.com/Hotel_Review-g32655... \n",
"2 3.5 60763 http://www.tripadvisor.com/Hotel_Review-g60763... \n",
"3 4.0 60763 http://www.tripadvisor.com/Hotel_Review-g60763... \n",
"4 4.0 60763 http://www.tripadvisor.com/Hotel_Review-g60763... \n",
"\n",
" phone details address type \\\n",
"0 NaN NaN {'region': 'NY', 'street-address': '147 West 4... hotel \n",
"1 NaN NaN {'region': 'CA', 'street-address': '300 S Dohe... hotel \n",
"2 NaN NaN {'region': 'NY', 'street-address': '790 Eighth... hotel \n",
"3 NaN NaN {'region': 'NY', 'street-address': '152 West 5... hotel \n",
"4 NaN NaN {'region': 'NY', 'street-address': '130 West 4... hotel \n",
"\n",
" id name \n",
"0 113317 Casablanca Hotel Times Square \n",
"1 76049 Four Seasons Hotel Los Angeles at Beverly Hills \n",
"2 99352 Hilton Garden Inn Times Square \n",
"3 93589 The Michelangelo Hotel \n",
"4 217616 The Muse Hotel New York "
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Load hotels' information\n",
"offerings = pd.read_csv(PROJECT_PATH + \"data/offerings.csv\")\n",
"offerings.head()"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 81
},
"executionInfo": {
"elapsed": 8,
"status": "ok",
"timestamp": 1730740400819,
"user": {
"displayName": "Joyce Lapilus",
"userId": "10669185642835107674"
},
"user_tz": -60
},
"id": "qC2LilsW4Osf",
"outputId": "c73bbe15-f4b6-4bd7-b07a-7ff6c47185e1"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" hotel_class \n",
" id \n",
" name \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 4.0 \n",
" 113317 \n",
" Casablanca Hotel Times Square \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" hotel_class id name\n",
"0 4.0 113317 Casablanca Hotel Times Square"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Drop useless columns\n",
"offerings.drop(columns=[\"region_id\", \"url\", \"phone\", \"details\", \"address\", \"type\"], inplace=True)\n",
"offerings.head(1)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "l9BC8BSW4Qc_"
},
"source": [
"*Might remove `hotel_class` later if it turns out to be useless...*"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 178
},
"executionInfo": {
"elapsed": 7,
"status": "ok",
"timestamp": 1730740400819,
"user": {
"displayName": "Joyce Lapilus",
"userId": "10669185642835107674"
},
"user_tz": -60
},
"id": "L3LlwSWP4Ruy",
"outputId": "75a92ca7-05b4-4951-a429-6af6131e6667"
},
"outputs": [
{
"data": {
"text/plain": [
"hotel_class 1192\n",
"id 0\n",
"name 0\n",
"dtype: int64"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"offerings.isnull().sum()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "QvB_DG0H4TKN"
},
"source": [
"Let's store these null rows to check if the replacement has been done correctly when the time comes."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 424
},
"executionInfo": {
"elapsed": 6,
"status": "ok",
"timestamp": 1730740400819,
"user": {
"displayName": "Joyce Lapilus",
"userId": "10669185642835107674"
},
"user_tz": -60
},
"id": "rRQYVUGo4Tqe",
"outputId": "9299a0f9-134f-4fb6-ef0b-828638f804e2"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" hotel_class \n",
" id \n",
" name \n",
" \n",
" \n",
" \n",
" \n",
" 6 \n",
" NaN \n",
" 2643161 \n",
" The NoMad Hotel \n",
" \n",
" \n",
" 44 \n",
" NaN \n",
" 1630591 \n",
" Crowne Plaza \n",
" \n",
" \n",
" 49 \n",
" NaN \n",
" 585164 \n",
" Residence Inn Houston West/Energy Corridor \n",
" \n",
" \n",
" 52 \n",
" NaN \n",
" 258634 \n",
" Scottish Inn & Suites Reliant Park/Six Flags \n",
" \n",
" \n",
" 70 \n",
" NaN \n",
" 815515 \n",
" Scottish Inns & Suites - Willowbrook \n",
" \n",
" \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" \n",
" \n",
" 4253 \n",
" NaN \n",
" 1204691 \n",
" Quality Inn & Suites Laurel \n",
" \n",
" \n",
" 4259 \n",
" NaN \n",
" 1218625 \n",
" Wyndham \n",
" \n",
" \n",
" 4261 \n",
" NaN \n",
" 1515599 \n",
" Executive Apartments \n",
" \n",
" \n",
" 4262 \n",
" NaN \n",
" 84068 \n",
" Harrington Hotel \n",
" \n",
" \n",
" 4282 \n",
" NaN \n",
" 120566 \n",
" The Mansion on O Street \n",
" \n",
" \n",
"
\n",
"
1192 rows × 3 columns
\n",
"
"
],
"text/plain": [
" hotel_class id name\n",
"6 NaN 2643161 The NoMad Hotel\n",
"44 NaN 1630591 Crowne Plaza\n",
"49 NaN 585164 Residence Inn Houston West/Energy Corridor\n",
"52 NaN 258634 Scottish Inn & Suites Reliant Park/Six Flags\n",
"70 NaN 815515 Scottish Inns & Suites - Willowbrook\n",
"... ... ... ...\n",
"4253 NaN 1204691 Quality Inn & Suites Laurel\n",
"4259 NaN 1218625 Wyndham\n",
"4261 NaN 1515599 Executive Apartments\n",
"4262 NaN 84068 Harrington Hotel\n",
"4282 NaN 120566 The Mansion on O Street\n",
"\n",
"[1192 rows x 3 columns]"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"idx_null_class = offerings[offerings[\"hotel_class\"].isnull()].index\n",
"offerings.iloc[idx_null_class]"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "VTGiVqVo4YRy"
},
"source": [
"A hotel with a missing value in regards to its class basically means that the hotel has **0 stars**, so we can replace these `NaN` values with `0`."
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 424
},
"executionInfo": {
"elapsed": 7,
"status": "ok",
"timestamp": 1730740400820,
"user": {
"displayName": "Joyce Lapilus",
"userId": "10669185642835107674"
},
"user_tz": -60
},
"id": "KCw5XjVh4YrX",
"outputId": "3c8d1707-1525-437b-cb4f-14015b5c297e"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" hotel_class \n",
" id \n",
" name \n",
" \n",
" \n",
" \n",
" \n",
" 6 \n",
" 0.0 \n",
" 2643161 \n",
" The NoMad Hotel \n",
" \n",
" \n",
" 44 \n",
" 0.0 \n",
" 1630591 \n",
" Crowne Plaza \n",
" \n",
" \n",
" 49 \n",
" 0.0 \n",
" 585164 \n",
" Residence Inn Houston West/Energy Corridor \n",
" \n",
" \n",
" 52 \n",
" 0.0 \n",
" 258634 \n",
" Scottish Inn & Suites Reliant Park/Six Flags \n",
" \n",
" \n",
" 70 \n",
" 0.0 \n",
" 815515 \n",
" Scottish Inns & Suites - Willowbrook \n",
" \n",
" \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" \n",
" \n",
" 4253 \n",
" 0.0 \n",
" 1204691 \n",
" Quality Inn & Suites Laurel \n",
" \n",
" \n",
" 4259 \n",
" 0.0 \n",
" 1218625 \n",
" Wyndham \n",
" \n",
" \n",
" 4261 \n",
" 0.0 \n",
" 1515599 \n",
" Executive Apartments \n",
" \n",
" \n",
" 4262 \n",
" 0.0 \n",
" 84068 \n",
" Harrington Hotel \n",
" \n",
" \n",
" 4282 \n",
" 0.0 \n",
" 120566 \n",
" The Mansion on O Street \n",
" \n",
" \n",
"
\n",
"
1192 rows × 3 columns
\n",
"
"
],
"text/plain": [
" hotel_class id name\n",
"6 0.0 2643161 The NoMad Hotel\n",
"44 0.0 1630591 Crowne Plaza\n",
"49 0.0 585164 Residence Inn Houston West/Energy Corridor\n",
"52 0.0 258634 Scottish Inn & Suites Reliant Park/Six Flags\n",
"70 0.0 815515 Scottish Inns & Suites - Willowbrook\n",
"... ... ... ...\n",
"4253 0.0 1204691 Quality Inn & Suites Laurel\n",
"4259 0.0 1218625 Wyndham\n",
"4261 0.0 1515599 Executive Apartments\n",
"4262 0.0 84068 Harrington Hotel\n",
"4282 0.0 120566 The Mansion on O Street\n",
"\n",
"[1192 rows x 3 columns]"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"offerings[\"hotel_class\"] = offerings[\"hotel_class\"].fillna(0)\n",
"offerings.iloc[idx_null_class]"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "wfq_jBjw4au8"
},
"source": [
"The replacement has been done successfully; so now we can **merge** both of the DataFrames."
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 424
},
"executionInfo": {
"elapsed": 3626,
"status": "ok",
"timestamp": 1730740404441,
"user": {
"displayName": "Joyce Lapilus",
"userId": "10669185642835107674"
},
"user_tz": -60
},
"id": "ehz0gAoi4bPw",
"outputId": "b9725cff-8e7e-483d-ad3a-2cb04462fcf8"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" offering_id \n",
" name \n",
" hotel_class \n",
" ratings \n",
" reviews \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 72572 \n",
" BEST WESTERN PLUS Pioneer Square Hotel \n",
" 3.5 \n",
" {'service': 4.6, 'cleanliness': 4.6, 'overall'... \n",
" I had to make fast visit to seattle and I foun... \n",
" \n",
" \n",
" 1 \n",
" 72579 \n",
" BEST WESTERN Loyal Inn \n",
" 2.0 \n",
" {'service': 4.2, 'cleanliness': 4.2, 'overall'... \n",
" Great service, rooms were clean, could use som... \n",
" \n",
" \n",
" 2 \n",
" 72586 \n",
" BEST WESTERN PLUS Executive Inn \n",
" 3.0 \n",
" {'service': 4.2, 'cleanliness': 4.3, 'overall'... \n",
" Beautiful views of the space needle - especial... \n",
" \n",
" \n",
" 3 \n",
" 72598 \n",
" Comfort Inn & Suites Seattle \n",
" 2.5 \n",
" {'service': 3.2, 'cleanliness': 3.2, 'overall'... \n",
" This hotel is in need of some serious updates.... \n",
" \n",
" \n",
" 4 \n",
" 73236 \n",
" Days Inn San Antonio/Near Lackland AFB \n",
" 2.0 \n",
" {'service': 4.3, 'cleanliness': 3.1, 'overall'... \n",
" My experience at this days inn was perfect. th... \n",
" \n",
" \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" ... \n",
" \n",
" \n",
" 3749 \n",
" 3523356 \n",
" Hampton Inn & Suites Austin @ The University/C... \n",
" 2.5 \n",
" {'service': 4.9, 'cleanliness': 4.9, 'overall'... \n",
" I've stayed at plenty of Hampton Inns during m... \n",
" \n",
" \n",
" 3750 \n",
" 3541823 \n",
" New York Budget Inn \n",
" 0.0 \n",
" {'service': 4.3, 'cleanliness': 4.5, 'overall'... \n",
" Inn staff absolutely wonderful, helpful, knowl... \n",
" \n",
" \n",
" 3751 \n",
" 3572384 \n",
" Hyatt Place Chicago/River North \n",
" 0.0 \n",
" {'service': 3.0, 'cleanliness': 2.0, 'overall'... \n",
" Crowded, noisy, dirty. Service is poor, food i... \n",
" \n",
" \n",
" 3752 \n",
" 3572583 \n",
" Holiday Inn Express New York - Manhattan West ... \n",
" 3.0 \n",
" {'service': 1.0, 'cleanliness': 1.0, 'overall'... \n",
" El hotel estaba en medio de una remodelación. ... \n",
" \n",
" \n",
" 3753 \n",
" 3574675 \n",
" Days Inn Columbus Airport \n",
" 3.0 \n",
" {'service': 3.0, 'cleanliness': 2.8, 'overall'... \n",
" We were looking for a place to stay close to t... \n",
" \n",
" \n",
"
\n",
"
3754 rows × 5 columns
\n",
"
"
],
"text/plain": [
" offering_id name \\\n",
"0 72572 BEST WESTERN PLUS Pioneer Square Hotel \n",
"1 72579 BEST WESTERN Loyal Inn \n",
"2 72586 BEST WESTERN PLUS Executive Inn \n",
"3 72598 Comfort Inn & Suites Seattle \n",
"4 73236 Days Inn San Antonio/Near Lackland AFB \n",
"... ... ... \n",
"3749 3523356 Hampton Inn & Suites Austin @ The University/C... \n",
"3750 3541823 New York Budget Inn \n",
"3751 3572384 Hyatt Place Chicago/River North \n",
"3752 3572583 Holiday Inn Express New York - Manhattan West ... \n",
"3753 3574675 Days Inn Columbus Airport \n",
"\n",
" hotel_class ratings \\\n",
"0 3.5 {'service': 4.6, 'cleanliness': 4.6, 'overall'... \n",
"1 2.0 {'service': 4.2, 'cleanliness': 4.2, 'overall'... \n",
"2 3.0 {'service': 4.2, 'cleanliness': 4.3, 'overall'... \n",
"3 2.5 {'service': 3.2, 'cleanliness': 3.2, 'overall'... \n",
"4 2.0 {'service': 4.3, 'cleanliness': 3.1, 'overall'... \n",
"... ... ... \n",
"3749 2.5 {'service': 4.9, 'cleanliness': 4.9, 'overall'... \n",
"3750 0.0 {'service': 4.3, 'cleanliness': 4.5, 'overall'... \n",
"3751 0.0 {'service': 3.0, 'cleanliness': 2.0, 'overall'... \n",
"3752 3.0 {'service': 1.0, 'cleanliness': 1.0, 'overall'... \n",
"3753 3.0 {'service': 3.0, 'cleanliness': 2.8, 'overall'... \n",
"\n",
" reviews \n",
"0 I had to make fast visit to seattle and I foun... \n",
"1 Great service, rooms were clean, could use som... \n",
"2 Beautiful views of the space needle - especial... \n",
"3 This hotel is in need of some serious updates.... \n",
"4 My experience at this days inn was perfect. th... \n",
"... ... \n",
"3749 I've stayed at plenty of Hampton Inns during m... \n",
"3750 Inn staff absolutely wonderful, helpful, knowl... \n",
"3751 Crowded, noisy, dirty. Service is poor, food i... \n",
"3752 El hotel estaba en medio de una remodelación. ... \n",
"3753 We were looking for a place to stay close to t... \n",
"\n",
"[3754 rows x 5 columns]"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Rename \"id\" column for the merge to go through\n",
"offerings.rename(columns={\"id\": \"offering_id\"}, inplace=True)\n",
"\n",
"# Merge both DataFrames on \"offering_id\" column\n",
"final_df = df_grouped.merge(offerings, on=\"offering_id\")\n",
"\n",
"# Re-order the columns in a more logical order\n",
"final_df = final_df.iloc[:, [0, 4, 3, 2, 1]]\n",
"final_df"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "1gBbg7qW4eNc"
},
"source": [
"## Implementing BM25 Baseline\n",
"Using the [`rank_bm25`](github.com/dorianbrown/rank_bm25) library to implement a BM25 model. We will retrieve the most similar place for a given query based on BM25 scores."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "aXh-Y_Ue4hdr"
},
"source": [
"### Preprocessing"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"executionInfo": {
"elapsed": 3,
"status": "ok",
"timestamp": 1730740404441,
"user": {
"displayName": "Joyce Lapilus",
"userId": "10669185642835107674"
},
"user_tz": -60
},
"id": "-LRJdBP54i2T"
},
"outputs": [],
"source": [
"# Preprocess function to clean and prepare text\n",
"def preprocess(text, count=False):\n",
" stop_words = set(stopwords.words(\"english\"))\n",
"\n",
" # Tokenization\n",
" tokens = regexp_tokenize(text.lower(), r\"\\w+\")\n",
" tokens = [token for token in tokens if token.isalpha()] # Remove non-alphabetic tokens\n",
" tokens = [token for token in tokens if token not in stop_words] # Remove stopwords\n",
"\n",
" # Lemmatization\n",
" lemmatizer = WordNetLemmatizer()\n",
" tokens = [lemmatizer.lemmatize(token) for token in tokens]\n",
"\n",
" return Counter(tokens) if count else tokens # Returning tokens directly for use in BM25"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Showing the occurrences of each token."
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"executionInfo": {
"elapsed": 2210,
"status": "ok",
"timestamp": 1730740406649,
"user": {
"displayName": "Joyce Lapilus",
"userId": "10669185642835107674"
},
"user_tz": -60
},
"id": "hC1PSiZX4n0A",
"outputId": "0d469a6c-6d0a-458f-8ea7-a1f954ad0155"
},
"outputs": [
{
"data": {
"text/plain": [
"Counter({'hotel': 267,\n",
" 'room': 230,\n",
" 'needle': 129,\n",
" 'seattle': 125,\n",
" 'space': 124,\n",
" 'staff': 123,\n",
" 'great': 104,\n",
" 'breakfast': 88,\n",
" 'location': 86,\n",
" 'clean': 78,\n",
" 'good': 77,\n",
" 'stay': 77,\n",
" 'night': 74,\n",
" 'u': 70,\n",
" 'best': 69,\n",
" 'view': 66,\n",
" 'nice': 61,\n",
" 'monorail': 61,\n",
" 'would': 59,\n",
" 'western': 55,\n",
" 'one': 55,\n",
" 'place': 54,\n",
" 'parking': 53,\n",
" 'walk': 53,\n",
" 'downtown': 51,\n",
" 'service': 50,\n",
" 'desk': 48,\n",
" 'friendly': 48,\n",
" 'time': 46,\n",
" 'restaurant': 46,\n",
" 'center': 45,\n",
" 'stayed': 45,\n",
" 'price': 45,\n",
" 'day': 44,\n",
" 'bed': 44,\n",
" 'also': 44,\n",
" 'front': 43,\n",
" 'helpful': 43,\n",
" 'well': 38,\n",
" 'like': 36,\n",
" 'buffet': 36,\n",
" 'block': 34,\n",
" 'area': 34,\n",
" 'free': 33,\n",
" 'get': 33,\n",
" 'way': 33,\n",
" 'excellent': 32,\n",
" 'could': 31,\n",
" 'close': 31,\n",
" 'even': 31,\n",
" 'minute': 31,\n",
" 'next': 30,\n",
" 'two': 30,\n",
" 'away': 30,\n",
" 'comfortable': 30,\n",
" 'need': 30,\n",
" 'little': 30,\n",
" 'really': 29,\n",
" 'walking': 27,\n",
" 'plus': 24,\n",
" 'got': 24,\n",
" 'everything': 24,\n",
" 'back': 24,\n",
" 'inn': 23,\n",
" 'easy': 23,\n",
" 'pike': 23,\n",
" 'right': 23,\n",
" 'see': 22,\n",
" 'recommend': 22,\n",
" 'executive': 22,\n",
" 'check': 22,\n",
" 'market': 22,\n",
" 'go': 21,\n",
" 'thing': 21,\n",
" 'around': 21,\n",
" 'food': 21,\n",
" 'noise': 21,\n",
" 'near': 21,\n",
" 'tv': 20,\n",
" 'much': 19,\n",
" 'window': 19,\n",
" 'street': 19,\n",
" 'extra': 19,\n",
" 'da': 19,\n",
" 'lot': 18,\n",
" 'make': 18,\n",
" 'morning': 18,\n",
" 'car': 18,\n",
" 'big': 18,\n",
" 'first': 18,\n",
" 'asked': 18,\n",
" 'cruise': 18,\n",
" 'guest': 17,\n",
" 'bit': 17,\n",
" 'people': 17,\n",
" 'distance': 17,\n",
" 'find': 16,\n",
" 'went': 16,\n",
" 'better': 16,\n",
" 'package': 16,\n",
" 'take': 16,\n",
" 'attraction': 16,\n",
" 'perfect': 16,\n",
" 'always': 16,\n",
" 'lobby': 16,\n",
" 'although': 16,\n",
" 'wanted': 16,\n",
" 'bathroom': 16,\n",
" 'etc': 16,\n",
" 'family': 16,\n",
" 'trip': 16,\n",
" 'outside': 16,\n",
" 'feel': 15,\n",
" 'going': 15,\n",
" 'shower': 15,\n",
" 'choice': 15,\n",
" 'took': 15,\n",
" 'every': 15,\n",
" 'value': 15,\n",
" 'paid': 15,\n",
" 'spacious': 15,\n",
" 'used': 15,\n",
" 'und': 15,\n",
" 'want': 14,\n",
" 'many': 14,\n",
" 'building': 14,\n",
" 'review': 14,\n",
" 'bw': 14,\n",
" 'within': 14,\n",
" 'museum': 14,\n",
" 'pretty': 14,\n",
" 'side': 14,\n",
" 'bad': 14,\n",
" 'customer': 14,\n",
" 'ok': 14,\n",
" 'town': 14,\n",
" 'city': 14,\n",
" 'bus': 14,\n",
" 'booked': 14,\n",
" 'visit': 14,\n",
" 'door': 13,\n",
" 'came': 13,\n",
" 'made': 13,\n",
" 'arrived': 13,\n",
" 'fantastic': 13,\n",
" 'pay': 13,\n",
" 'overall': 13,\n",
" 'rate': 13,\n",
" 'travel': 13,\n",
" 'reservation': 13,\n",
" 'help': 13,\n",
" 'person': 12,\n",
" 'short': 12,\n",
" 'nothing': 12,\n",
" 'included': 12,\n",
" 'cost': 12,\n",
" 'however': 12,\n",
" 'small': 12,\n",
" 'look': 12,\n",
" 'say': 12,\n",
" 'nearby': 12,\n",
" 'microwave': 12,\n",
" 'across': 12,\n",
" 'needed': 12,\n",
" 'last': 12,\n",
" 'call': 11,\n",
" 'internet': 11,\n",
" 'science': 11,\n",
" 'enough': 11,\n",
" 'worked': 11,\n",
" 'quiet': 11,\n",
" 'experience': 11,\n",
" 'wonderful': 11,\n",
" 'part': 11,\n",
" 'fine': 11,\n",
" 'said': 11,\n",
" 'kind': 11,\n",
" 'phone': 11,\n",
" 'taking': 11,\n",
" 'kid': 11,\n",
" 'use': 11,\n",
" 'emp': 11,\n",
" 'extremely': 11,\n",
" 'war': 11,\n",
" 'called': 10,\n",
" 'loud': 10,\n",
" 'happy': 10,\n",
" 'light': 10,\n",
" 'since': 10,\n",
" 'key': 10,\n",
" 'floor': 10,\n",
" 'water': 10,\n",
" 'though': 10,\n",
" 'fridge': 10,\n",
" 'felt': 10,\n",
" 'looked': 10,\n",
" 'walked': 10,\n",
" 'problem': 10,\n",
" 'expensive': 10,\n",
" 'park': 10,\n",
" 'work': 10,\n",
" 'deal': 10,\n",
" 'new': 10,\n",
" 'centre': 10,\n",
" 'airport': 10,\n",
" 'die': 10,\n",
" 'issue': 9,\n",
" 'king': 9,\n",
" 'group': 9,\n",
" 'home': 9,\n",
" 'decent': 9,\n",
" 'another': 9,\n",
" 'full': 9,\n",
" 'husband': 9,\n",
" 'queen': 9,\n",
" 'told': 9,\n",
" 'eat': 9,\n",
" 'manager': 9,\n",
" 'staying': 9,\n",
" 'put': 9,\n",
" 'definitely': 9,\n",
" 'reasonable': 9,\n",
" 'management': 9,\n",
" 'provided': 9,\n",
" 'everyone': 9,\n",
" 'ride': 9,\n",
" 'access': 9,\n",
" 'computer': 9,\n",
" 'party': 9,\n",
" 'woman': 9,\n",
" 'far': 9,\n",
" 'charge': 9,\n",
" 'huge': 9,\n",
" 'coffee': 9,\n",
" 'found': 9,\n",
" 'courteous': 9,\n",
" 'secure': 8,\n",
" 'inside': 8,\n",
" 'hallway': 8,\n",
" 'may': 8,\n",
" 'evening': 8,\n",
" 'traffic': 8,\n",
" 'sure': 8,\n",
" 'old': 8,\n",
" 'available': 8,\n",
" 'never': 8,\n",
" 'star': 8,\n",
" 'convenient': 8,\n",
" 'high': 8,\n",
" 'name': 8,\n",
" 'quality': 8,\n",
" 'screen': 8,\n",
" 'still': 8,\n",
" 'pier': 8,\n",
" 'green': 8,\n",
" 'able': 8,\n",
" 'vancouver': 8,\n",
" 'lounge': 8,\n",
" 'business': 8,\n",
" 'zimmer': 8,\n",
" 'der': 8,\n",
" 'man': 7,\n",
" 'seemed': 7,\n",
" 'safe': 7,\n",
" 'pleased': 7,\n",
" 'top': 7,\n",
" 'hot': 7,\n",
" 'left': 7,\n",
" 'end': 7,\n",
" 'offer': 7,\n",
" 'plan': 7,\n",
" 'hour': 7,\n",
" 'wall': 7,\n",
" 'thanks': 7,\n",
" 'wifi': 7,\n",
" 'arena': 7,\n",
" 'elevator': 7,\n",
" 'least': 7,\n",
" 'bar': 7,\n",
" 'checked': 7,\n",
" 'stop': 7,\n",
" 'note': 7,\n",
" 'super': 7,\n",
" 'enjoyed': 7,\n",
" 'without': 7,\n",
" 'closed': 7,\n",
" 'transportation': 7,\n",
" 'half': 7,\n",
" 'fee': 7,\n",
" 'chose': 7,\n",
" 'event': 7,\n",
" 'waterfront': 7,\n",
" 'question': 7,\n",
" 'probably': 7,\n",
" 'money': 7,\n",
" 'sleep': 7,\n",
" 'discount': 7,\n",
" 'fun': 7,\n",
" 'long': 7,\n",
" 'facility': 7,\n",
" 'fresh': 7,\n",
" 'negative': 7,\n",
" 'outstanding': 7,\n",
" 'amazing': 7,\n",
" 'liked': 7,\n",
" 'per': 7,\n",
" 'friend': 7,\n",
" 'hear': 7,\n",
" 'ist': 7,\n",
" 'wir': 7,\n",
" 'im': 7,\n",
" 'especially': 6,\n",
" 'ask': 6,\n",
" 'conference': 6,\n",
" 'pacific': 6,\n",
" 'getting': 6,\n",
" 'older': 6,\n",
" 'think': 6,\n",
" 'egg': 6,\n",
" 'spot': 6,\n",
" 'glass': 6,\n",
" 'year': 6,\n",
" 'thin': 6,\n",
" 'turn': 6,\n",
" 'awesome': 6,\n",
" 'delivered': 6,\n",
" 'noisy': 6,\n",
" 'pressure': 6,\n",
" 'plenty': 6,\n",
" 'child': 6,\n",
" 'rather': 6,\n",
" 'waiting': 6,\n",
" 'impressed': 6,\n",
" 'open': 6,\n",
" 'motel': 6,\n",
" 'try': 6,\n",
" 'know': 6,\n",
" 'variety': 6,\n",
" 'air': 6,\n",
" 'moment': 6,\n",
" 'highly': 6,\n",
" 'drive': 6,\n",
" 'hall': 6,\n",
" 'slept': 6,\n",
" 'card': 6,\n",
" 'shuttle': 6,\n",
" 'pick': 6,\n",
" 'thank': 6,\n",
" 'clearly': 6,\n",
" 'duck': 6,\n",
" 'dated': 6,\n",
" 'including': 6,\n",
" 'shopping': 6,\n",
" 'worth': 6,\n",
" 'lake': 6,\n",
" 'point': 6,\n",
" 'machine': 6,\n",
" 'flat': 6,\n",
" 'allowed': 6,\n",
" 'convention': 6,\n",
" 'wife': 6,\n",
" 'couple': 6,\n",
" 'wait': 6,\n",
" 'low': 6,\n",
" 'fast': 6,\n",
" 'dispenser': 6,\n",
" 'shampoo': 6,\n",
" 'actually': 6,\n",
" 'book': 6,\n",
" 'certainly': 6,\n",
" 'provide': 6,\n",
" 'looking': 6,\n",
" 'spent': 6,\n",
" 'garage': 6,\n",
" 'visiting': 6,\n",
" 'dinner': 6,\n",
" 'large': 6,\n",
" 'head': 6,\n",
" 'parent': 6,\n",
" 'sehr': 6,\n",
" 'für': 6,\n",
" 'mit': 6,\n",
" 'beautiful': 5,\n",
" 'local': 5,\n",
" 'come': 5,\n",
" 'line': 5,\n",
" 'due': 5,\n",
" 'underground': 5,\n",
" 'waffle': 5,\n",
" 'member': 5,\n",
" 'driving': 5,\n",
" 'limited': 5,\n",
" 'anything': 5,\n",
" 'quite': 5,\n",
" 'july': 5,\n",
" 'direction': 5,\n",
" 'property': 5,\n",
" 'son': 5,\n",
" 'ever': 5,\n",
" 'pillow': 5,\n",
" 'yes': 5,\n",
" 'working': 5,\n",
" 'request': 5,\n",
" 'ate': 5,\n",
" 'special': 5,\n",
" 'selection': 5,\n",
" 'online': 5,\n",
" 'gave': 5,\n",
" 'construction': 5,\n",
" 'thought': 5,\n",
" 'surprised': 5,\n",
" 'three': 5,\n",
" 'recommended': 5,\n",
" 'return': 5,\n",
" 'hard': 5,\n",
" 'beyond': 5,\n",
" 'helped': 5,\n",
" 'oh': 5,\n",
" 'afternoon': 5,\n",
" 'complaint': 5,\n",
" 'e': 5,\n",
" 'almost': 5,\n",
" 'carpet': 5,\n",
" 'game': 5,\n",
" 'number': 5,\n",
" 'taxi': 5,\n",
" 'voucher': 5,\n",
" 'station': 5,\n",
" 'dining': 5,\n",
" 'loved': 5,\n",
" 'enjoy': 5,\n",
" 'pool': 5,\n",
" 'homeless': 5,\n",
" 'early': 5,\n",
" 'hold': 5,\n",
" 'luggage': 5,\n",
" 'standard': 5,\n",
" 'five': 5,\n",
" 'located': 5,\n",
" 'expectation': 5,\n",
" 'addition': 5,\n",
" 'given': 5,\n",
" 'accommodating': 5,\n",
" 'upon': 5,\n",
" 'run': 5,\n",
" 'central': 5,\n",
" 'pizza': 5,\n",
" 'meal': 5,\n",
" 'quick': 5,\n",
" 'despite': 5,\n",
" 'comfy': 5,\n",
" 'daughter': 5,\n",
" 'ken': 5,\n",
" 'believe': 5,\n",
" 'decor': 5,\n",
" 'sky': 5,\n",
" 'four': 5,\n",
" 'cozy': 5,\n",
" 'wireless': 5,\n",
" 'christmas': 5,\n",
" 'employee': 5,\n",
" 'soap': 5,\n",
" 'terminal': 5,\n",
" 'wi': 4,\n",
" 'fi': 4,\n",
" 'dressed': 4,\n",
" 'keep': 4,\n",
" 'ticket': 4,\n",
" 'proximity': 4,\n",
" 'kept': 4,\n",
" 'furniture': 4,\n",
" 'brella': 4,\n",
" 'sorry': 4,\n",
" 'offering': 4,\n",
" 'different': 4,\n",
" 'weather': 4,\n",
" 'surprise': 4,\n",
" 'garden': 4,\n",
" 'accommodation': 4,\n",
" 'credit': 4,\n",
" 'concert': 4,\n",
" 'handy': 4,\n",
" 'set': 4,\n",
" 'lower': 4,\n",
" 'someone': 4,\n",
" 'talking': 4,\n",
" 'polite': 4,\n",
" 'suggestion': 4,\n",
" 'option': 4,\n",
" 'adequate': 4,\n",
" 'aware': 4,\n",
" 'fault': 4,\n",
" 'refrigerator': 4,\n",
" 'sign': 4,\n",
" 'leave': 4,\n",
" 'let': 4,\n",
" 'bacon': 4,\n",
" 'conditioning': 4,\n",
" 'safeco': 4,\n",
" 'drop': 4,\n",
" 'company': 4,\n",
" 'reached': 4,\n",
" 'truly': 4,\n",
" 'com': 4,\n",
" 'completely': 4,\n",
" 'job': 4,\n",
" 'menu': 4,\n",
" 'twice': 4,\n",
" 'making': 4,\n",
" 'fancy': 4,\n",
" 'yummy': 4,\n",
" 'cooky': 4,\n",
" 'whole': 4,\n",
" 'pleasant': 4,\n",
" 'site': 4,\n",
" 'connectivity': 4,\n",
" 'neighborhood': 4,\n",
" 'higher': 4,\n",
" 'expected': 4,\n",
" 'mcdonald': 4,\n",
" 'less': 4,\n",
" 'expect': 4,\n",
" 'cheap': 4,\n",
" 'sink': 4,\n",
" 'positive': 4,\n",
" 'union': 4,\n",
" 'checking': 4,\n",
" 'answer': 4,\n",
" 'important': 4,\n",
" 'direct': 4,\n",
" 'email': 4,\n",
" 'tax': 4,\n",
" 'level': 4,\n",
" 'normally': 4,\n",
" 'start': 4,\n",
" 'using': 4,\n",
" 'meeting': 4,\n",
" 'requested': 4,\n",
" 'attendee': 4,\n",
" 'clerk': 4,\n",
" 'deserves': 4,\n",
" 'tom': 4,\n",
" 'dana': 4,\n",
" 'age': 4,\n",
" 'previous': 4,\n",
" 'sightseeing': 4,\n",
" 'saved': 4,\n",
" 'rail': 4,\n",
" 'fitness': 4,\n",
" 'anyone': 4,\n",
" 'travelling': 4,\n",
" 'spectacular': 4,\n",
" 'music': 4,\n",
" 'reception': 4,\n",
" 'considering': 4,\n",
" 'chair': 4,\n",
" 'information': 4,\n",
" 'catering': 4,\n",
" 'prepared': 4,\n",
" 'easily': 4,\n",
" 'several': 4,\n",
" 'road': 4,\n",
" 'disappointed': 4,\n",
" 'major': 4,\n",
" 'picked': 4,\n",
" 'idea': 4,\n",
" 'decorated': 4,\n",
" 'towel': 4,\n",
" 'ten': 4,\n",
" 'care': 4,\n",
" 'min': 4,\n",
" 'amenity': 4,\n",
" 'choose': 4,\n",
" 'step': 4,\n",
" 'speed': 4,\n",
" 'frühstück': 4,\n",
" 'einen': 4,\n",
" 'zu': 4,\n",
" 'nicht': 4,\n",
" 'den': 4,\n",
" 'ein': 4,\n",
" 'var': 4,\n",
" 'duty': 3,\n",
" 'give': 3,\n",
" 'tried': 3,\n",
" 'downstairs': 3,\n",
" 'decided': 3,\n",
" 'updated': 3,\n",
" 'sound': 3,\n",
" 'efficient': 3,\n",
" 'paying': 3,\n",
" 'added': 3,\n",
" 'saw': 3,\n",
" 'dark': 3,\n",
" 'otherwise': 3,\n",
" 'suggested': 3,\n",
" 'sleeping': 3,\n",
" 'blanket': 3,\n",
" 'saturday': 3,\n",
" 'others': 3,\n",
" 'relaxing': 3,\n",
" 'definately': 3,\n",
" 'traveling': 3,\n",
" 'favorite': 3,\n",
" 'giving': 3,\n",
" 'average': 3,\n",
" 'complain': 3,\n",
" 'either': 3,\n",
" 'coming': 3,\n",
" 'finding': 3,\n",
" 'understand': 3,\n",
" 'connecting': 3,\n",
" 'future': 3,\n",
" 'cleaned': 3,\n",
" 'wash': 3,\n",
" 'whether': 3,\n",
" 'includes': 3,\n",
" 'tut': 3,\n",
" 'parked': 3,\n",
" 'spend': 3,\n",
" 'non': 3,\n",
" 'second': 3,\n",
" 'tiny': 3,\n",
" 'toilet': 3,\n",
" 'maid': 3,\n",
" 'respect': 3,\n",
" 'trying': 3,\n",
" 'goodness': 3,\n",
" 'replaced': 3,\n",
" 'spring': 3,\n",
" 'response': 3,\n",
" 'field': 3,\n",
" 'mariner': 3,\n",
" 'answered': 3,\n",
" 'driver': 3,\n",
" 'apparently': 3,\n",
" 'julian': 3,\n",
" 'accomodations': 3,\n",
" 'tip': 3,\n",
" 'item': 3,\n",
" 'table': 3,\n",
" 'fabulous': 3,\n",
" 'patricia': 3,\n",
" 'decision': 3,\n",
" 'corner': 3,\n",
" 'swimming': 3,\n",
" 'spa': 3,\n",
" 'dont': 3,\n",
" 'police': 3,\n",
" 'matter': 3,\n",
" 'already': 3,\n",
" 'mentioned': 3,\n",
" 'seems': 3,\n",
" 'love': 3,\n",
" 'basic': 3,\n",
" 'snack': 3,\n",
" 'cut': 3,\n",
" 'week': 3,\n",
" 'flight': 3,\n",
" 'real': 3,\n",
" 'slow': 3,\n",
" 'relatively': 3,\n",
" 'store': 3,\n",
" 'district': 3,\n",
" 'managed': 3,\n",
" 'onto': 3,\n",
" 'reason': 3,\n",
" 'might': 3,\n",
" 'save': 3,\n",
" 'size': 3,\n",
" 'updating': 3,\n",
" 'fan': 3,\n",
" 'lotion': 3,\n",
" 'weak': 3,\n",
" 'turned': 3,\n",
" 'touch': 3,\n",
" 'recently': 3,\n",
" 'tourism': 3,\n",
" 'maybe': 3,\n",
" 'tourist': 3,\n",
" 'frustrating': 3,\n",
" 'checkout': 3,\n",
" 'mattress': 3,\n",
" 'alternative': 3,\n",
" 'cereal': 3,\n",
" 'juice': 3,\n",
" 'p': 3,\n",
" 'bonus': 3,\n",
" 'ton': 3,\n",
" 'complimentary': 3,\n",
" 'equipped': 3,\n",
" 'presentation': 3,\n",
" 'factor': 3,\n",
" 'budget': 3,\n",
" 'late': 3,\n",
" 'busy': 3,\n",
" 'happen': 3,\n",
" 'sat': 3,\n",
" 'justin': 3,\n",
" 'ago': 3,\n",
" 'supposed': 3,\n",
" 'conditioner': 3,\n",
" 'c': 3,\n",
" 'encountered': 3,\n",
" 'tour': 3,\n",
" 'show': 3,\n",
" 'sufficient': 3,\n",
" 'mini': 3,\n",
" 'attractive': 3,\n",
" 'continental': 3,\n",
" 'additional': 3,\n",
" 'offered': 3,\n",
" 'strength': 3,\n",
" 'throughout': 3,\n",
" 'rental': 3,\n",
" 'worry': 3,\n",
" 'bartender': 3,\n",
" 'cheryl': 3,\n",
" 'judge': 3,\n",
" 'cover': 3,\n",
" 'appreciated': 3,\n",
" 'josh': 3,\n",
" 'true': 3,\n",
" 'incredibly': 3,\n",
" 'ideal': 3,\n",
" 'lovely': 3,\n",
" 'treat': 3,\n",
" 'effort': 3,\n",
" 'met': 3,\n",
" 'warm': 3,\n",
" 'heart': 3,\n",
" 'adjacent': 3,\n",
" 'entertainment': 3,\n",
" 'affordable': 3,\n",
" 'column': 3,\n",
" 'lunch': 3,\n",
" 'quickly': 3,\n",
" 'must': 3,\n",
" 'pas': 3,\n",
" 'fireplace': 3,\n",
" 'exterior': 3,\n",
" 'curtain': 3,\n",
" 'treated': 3,\n",
" 'nicely': 3,\n",
" 'greeted': 3,\n",
" 'purpose': 3,\n",
" 'hop': 3,\n",
" 'held': 3,\n",
" 'vacation': 3,\n",
" 'choosing': 3,\n",
" 'beat': 3,\n",
" 'neighbor': 3,\n",
" 'handicapped': 3,\n",
" 'men': 3,\n",
" 'ended': 3,\n",
" 'ready': 3,\n",
" 'ice': 3,\n",
" 'promised': 3,\n",
" 'bottle': 3,\n",
" 'westlake': 3,\n",
" 'personal': 3,\n",
" 'von': 3,\n",
" 'entfernt': 3,\n",
" 'dem': 3,\n",
" 'auch': 3,\n",
" 'nur': 3,\n",
" 'unser': 3,\n",
" 'usd': 3,\n",
" 'nach': 3,\n",
" 'aber': 3,\n",
" 'hotellet': 3,\n",
" 'av': 3,\n",
" 'password': 2,\n",
" 'policy': 2,\n",
" 'ridiculous': 2,\n",
" 'anyway': 2,\n",
" 'spoke': 2,\n",
" 'shocked': 2,\n",
" 'leaf': 2,\n",
" 'vip': 2,\n",
" 'specific': 2,\n",
" 'opted': 2,\n",
" 'dissapointed': 2,\n",
" 'wise': 2,\n",
" 'adjoining': 2,\n",
" 'sausage': 2,\n",
" 'slimy': 2,\n",
" 'chihuly': 2,\n",
" 'exhibit': 2,\n",
" 'experienced': 2,\n",
" 'v': 2,\n",
" 'compared': 2,\n",
" 'lodging': 2,\n",
" 'counter': 2,\n",
" 'unless': 2,\n",
" 'stocked': 2,\n",
" 'marketing': 2,\n",
" 'reserved': 2,\n",
" 'adult': 2,\n",
" 'housekeeper': 2,\n",
" 'bring': 2,\n",
" 'setting': 2,\n",
" 'heard': 2,\n",
" 'main': 2,\n",
" 'seen': 2,\n",
" 'comment': 2,\n",
" 'disposable': 2,\n",
" 'advising': 2,\n",
" 'particularly': 2,\n",
" 'locally': 2,\n",
" 'tap': 2,\n",
" 'advantage': 2,\n",
" 'literally': 2,\n",
" 'entire': 2,\n",
" 'watch': 2,\n",
" 'earlier': 2,\n",
" 'garbage': 2,\n",
" 'truck': 2,\n",
" 'sit': 2,\n",
" 'privacy': 2,\n",
" 'telling': 2,\n",
" 'serviced': 2,\n",
" 'cleanliness': 2,\n",
" 'comfort': 2,\n",
" 'nite': 2,\n",
" 'lucky': 2,\n",
" 'uncomfortable': 2,\n",
" 'broken': 2,\n",
" 'change': 2,\n",
" 'worried': 2,\n",
" 'portland': 2,\n",
" 'ferry': 2,\n",
" 'stain': 2,\n",
" 'missing': 2,\n",
" 'informed': 2,\n",
" 'jerk': 2,\n",
" 'indeed': 2,\n",
" 'ticked': 2,\n",
" 'lodge': 2,\n",
" 'sending': 2,\n",
" 'letter': 2,\n",
" 'showed': 2,\n",
" 'confirmation': 2,\n",
" 'solve': 2,\n",
" 'fully': 2,\n",
" 'worse': 2,\n",
" 'collection': 2,\n",
" 'beside': 2,\n",
" 'priced': 2,\n",
" 'following': 2,\n",
" 'mcdonalds': 2,\n",
" 'round': 2,\n",
" 'something': 2,\n",
" 'ive': 2,\n",
" 'rating': 2,\n",
" 'bothered': 2,\n",
" 'stone': 2,\n",
" 'throw': 2,\n",
" 'milk': 2,\n",
" 'later': 2,\n",
" 'solid': 2,\n",
" 'mile': 2,\n",
" 'abit': 2,\n",
" 'bath': 2,\n",
" 'attend': 2,\n",
" 'definite': 2,\n",
" 'attending': 2,\n",
" 'responsive': 2,\n",
" 'month': 2,\n",
" 'accomodating': 2,\n",
" 'particular': 2,\n",
" 'enjoyable': 2,\n",
" 'perfectly': 2,\n",
" 'honest': 2,\n",
" 'spray': 2,\n",
" 'covering': 2,\n",
" 'advertising': 2,\n",
" 'stocking': 2,\n",
" 'possible': 2,\n",
" 'regular': 2,\n",
" 'yakima': 2,\n",
" 'condition': 2,\n",
" 'amount': 2,\n",
" 'poor': 2,\n",
" 'notice': 2,\n",
" 'brought': 2,\n",
" 'attention': 2,\n",
" 'rough': 2,\n",
" 'term': 2,\n",
" 'outdated': 2,\n",
" 'worst': 2,\n",
" 'system': 2,\n",
" 'cool': 2,\n",
" 'disappointing': 2,\n",
" 'extensive': 2,\n",
" 'bright': 2,\n",
" 'denny': 2,\n",
" 'anne': 2,\n",
" 'alaskan': 2,\n",
" 'checkin': 2,\n",
" 'industry': 2,\n",
" 'conversation': 2,\n",
" 'stuff': 2,\n",
" 'knowledge': 2,\n",
" 'map': 2,\n",
" 'training': 2,\n",
" 'confirm': 2,\n",
" 'happened': 2,\n",
" 'calling': 2,\n",
" 'simply': 2,\n",
" 'cheese': 2,\n",
" 'maker': 2,\n",
" 'fruit': 2,\n",
" 'potato': 2,\n",
" 'clown': 2,\n",
" 'sleeper': 2,\n",
" 'banquet': 2,\n",
" 'west': 2,\n",
" 'separation': 2,\n",
" 'stair': 2,\n",
" 'solved': 2,\n",
" 'speaker': 2,\n",
" 'minor': 2,\n",
" 'play': 2,\n",
" 'delicious': 2,\n",
" 'wide': 2,\n",
" 'host': 2,\n",
" 'respond': 2,\n",
" 'hesitate': 2,\n",
" 'emergency': 2,\n",
" 'gentleman': 2,\n",
" 'concerned': 2,\n",
" 'attentive': 2,\n",
" 'unhelpful': 2,\n",
" 'sour': 2,\n",
" 'smile': 2,\n",
" 'fifteenth': 2,\n",
" 'seated': 2,\n",
" 'waitress': 2,\n",
" 'young': 2,\n",
" 'assume': 2,\n",
" 'chain': 2,\n",
" 'bin': 2,\n",
" 'rug': 2,\n",
" 'hidden': 2,\n",
" 'housekeeping': 2,\n",
" 'stuck': 2,\n",
" 'surroundings': 2,\n",
" 'feature': 2,\n",
" 'changed': 2,\n",
" 'proved': 2,\n",
" 'ship': 2,\n",
" 'sized': 2,\n",
" 'ground': 2,\n",
" 'coupon': 2,\n",
" 'wake': 2,\n",
" 'rode': 2,\n",
" 'unsafe': 2,\n",
" 'talk': 2,\n",
" 'fire': 2,\n",
" 'victoria': 2,\n",
" 'funky': 2,\n",
" 'dropped': 2,\n",
" 'newer': 2,\n",
" 'lived': 2,\n",
" 'cold': 2,\n",
" 'virtually': 2,\n",
" 'maintained': 2,\n",
" 'linen': 2,\n",
" 'freeway': 2,\n",
" 'tasty': 2,\n",
" 'wish': 2,\n",
" 'hawaii': 2,\n",
" 'remember': 2,\n",
" 'rest': 2,\n",
" 'opinion': 2,\n",
" 'smell': 2,\n",
" 'inviting': 2,\n",
" 'attended': 2,\n",
" 'patient': 2,\n",
" 'concern': 2,\n",
" 'firm': 2,\n",
" 'demolition': 2,\n",
" 'empty': 2,\n",
" 'arrangement': 2,\n",
" 'middle': 2,\n",
" 'behind': 2,\n",
" 'poster': 2,\n",
" 'drink': 2,\n",
" 'complimented': 2,\n",
" 'kitchen': 2,\n",
" 'hub': 2,\n",
" 'reachable': 2,\n",
" 'efficiency': 2,\n",
" 'past': 2,\n",
" 'self': 2,\n",
" 'actual': 2,\n",
" 'downside': 2,\n",
" 'exceptional': 2,\n",
" 'advisor': 2,\n",
" ...})"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"preprocess(final_df[\"reviews\"][2], True)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Getting only tokens."
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"executionInfo": {
"elapsed": 4,
"status": "ok",
"timestamp": 1730740406649,
"user": {
"displayName": "Joyce Lapilus",
"userId": "10669185642835107674"
},
"user_tz": -60
},
"id": "BGLnrN144qeV",
"outputId": "d560a949-43a7-46df-cecb-25aa490b67cd"
},
"outputs": [
{
"data": {
"text/plain": [
"['beautiful',\n",
" 'view',\n",
" 'space',\n",
" 'needle',\n",
" 'especially',\n",
" 'night',\n",
" 'like',\n",
" 'photography',\n",
" 'ask',\n",
" 'room',\n",
" 'view',\n",
" 'staff',\n",
" 'great',\n",
" 'local',\n",
" 'restuarant',\n",
" 'excellent',\n",
" 'secure',\n",
" 'parking',\n",
" 'plus',\n",
" 'free',\n",
" 'wi',\n",
" 'fi',\n",
" 'issue',\n",
" 'waking',\n",
" 'conference',\n",
" 'call',\n",
" 'could',\n",
" 'find',\n",
" 'internet',\n",
" 'password',\n",
" 'called',\n",
" 'front',\n",
" 'desk',\n",
" 'man',\n",
" 'duty',\n",
" 'would',\n",
" 'give',\n",
" 'insisited',\n",
" 'come',\n",
" 'get',\n",
" 'person',\n",
" 'tried',\n",
" 'convince',\n",
" 'dressed',\n",
" 'claimed',\n",
" 'policy',\n",
" 'guest',\n",
" 'come',\n",
" 'collect',\n",
" 'password',\n",
" 'desk',\n",
" 'got',\n",
" 'dressed',\n",
" 'went',\n",
" 'downstairs',\n",
" 'get',\n",
" 'ridiculous',\n",
" 'seriously',\n",
" 'irritated',\n",
" 'anyway',\n",
" 'spoke',\n",
" 'day',\n",
" 'staff',\n",
" 'seemed',\n",
" 'shocked',\n",
" 'hotel',\n",
" 'policy',\n",
" 'keep',\n",
" 'code',\n",
" 'safe',\n",
" 'intending',\n",
" 'see',\n",
" 'king',\n",
" 'tutankhamen',\n",
" 'treasure',\n",
" 'pacific',\n",
" 'science',\n",
" 'center',\n",
" 'leaf',\n",
" 'january',\n",
" 'time',\n",
" 'getting',\n",
" 'short',\n",
" 'decided',\n",
" 'better',\n",
" 'purchase',\n",
" 'vip',\n",
" 'ticket',\n",
" 'go',\n",
" 'specific',\n",
" 'time',\n",
" 'stand',\n",
" 'line',\n",
" 'opted',\n",
" 'hotel',\n",
" 'due',\n",
" 'proximity',\n",
" 'seattle',\n",
" 'center',\n",
" 'dissapointed',\n",
" 'secure',\n",
" 'underground',\n",
" 'parking',\n",
" 'space',\n",
" 'needle',\n",
" 'view',\n",
" 'king',\n",
" 'room',\n",
" 'pleased',\n",
" 'hotel',\n",
" 'bit',\n",
" 'older',\n",
" 'well',\n",
" 'kept',\n",
" 'updated',\n",
" 'furniture',\n",
" 'wise',\n",
" 'well',\n",
" 'room',\n",
" 'adjoining',\n",
" 'room',\n",
" 'group',\n",
" 'next',\n",
" 'door',\n",
" 'bit',\n",
" 'loud',\n",
" 'think',\n",
" 'door',\n",
" 'thick',\n",
" 'enough',\n",
" 'sound',\n",
" 'proof',\n",
" 'enough',\n",
" 'two',\n",
" 'room',\n",
" 'hotel',\n",
" 'staff',\n",
" 'efficient',\n",
" 'helpful',\n",
" 'package',\n",
" 'came',\n",
" 'free',\n",
" 'breakfast',\n",
" 'brella',\n",
" 'restaurant',\n",
" 'inside',\n",
" 'hotel',\n",
" 'passed',\n",
" 'breakfast',\n",
" 'nothing',\n",
" 'write',\n",
" 'home',\n",
" 'much',\n",
" 'better',\n",
" 'breakfast',\n",
" 'hotel',\n",
" 'included',\n",
" 'cost',\n",
" 'room',\n",
" 'feel',\n",
" 'sorry',\n",
" 'people',\n",
" 'paying',\n",
" 'breakfast',\n",
" 'top',\n",
" 'cost',\n",
" 'room',\n",
" 'offering',\n",
" 'much',\n",
" 'different',\n",
" 'hotel',\n",
" 'good',\n",
" 'sausage',\n",
" 'slimy',\n",
" 'egg',\n",
" 'stiff',\n",
" 'dry',\n",
" 'hash',\n",
" 'brown',\n",
" 'slimy',\n",
" 'good',\n",
" 'thing',\n",
" 'waffle',\n",
" 'made',\n",
" 'hot',\n",
" 'spot',\n",
" 'blessed',\n",
" 'decent',\n",
" 'weather',\n",
" 'another',\n",
" 'surprise',\n",
" 'seattle',\n",
" 'center',\n",
" 'dale',\n",
" 'chihuly',\n",
" 'garden',\n",
" 'glass',\n",
" 'exhibit',\n",
" 'added',\n",
" 'year',\n",
" 'arrived',\n",
" 'saw',\n",
" 'garden',\n",
" 'bit',\n",
" 'sunlight',\n",
" 'left',\n",
" 'experienced',\n",
" 'dark',\n",
" 'fantastic',\n",
" 'hotel',\n",
" 'excellent',\n",
" 'location',\n",
" 'would',\n",
" 'recommend',\n",
" 'space',\n",
" 'needle',\n",
" 'view',\n",
" 'however',\n",
" 'end',\n",
" 'hallway',\n",
" 'get',\n",
" 'small',\n",
" 'window',\n",
" 'offer',\n",
" 'free',\n",
" 'breakfast',\n",
" 'buffet',\n",
" 'best',\n",
" 'western',\n",
" 'member',\n",
" 'otherwise',\n",
" 'pay',\n",
" 'good',\n",
" 'buffet',\n",
" 'excellent',\n",
" 'seating',\n",
" 'v',\n",
" 'best',\n",
" 'western',\n",
" 'room',\n",
" 'nice',\n",
" 'pay',\n",
" 'resonable',\n",
" 'compared',\n",
" 'lodging',\n",
" 'closer',\n",
" 'downtown',\n",
" 'walking',\n",
" 'distant',\n",
" 'monorail',\n",
" 'take',\n",
" 'downtown',\n",
" 'however',\n",
" 'plan',\n",
" 'driving',\n",
" 'around',\n",
" 'may',\n",
" 'want',\n",
" 'look',\n",
" 'another',\n",
" 'location',\n",
" 'parking',\n",
" 'limited',\n",
" 'anything',\n",
" 'going',\n",
" 'seattle',\n",
" 'may',\n",
" 'find',\n",
" 'street',\n",
" 'parking',\n",
" 'block',\n",
" 'away',\n",
" 'left',\n",
" 'one',\n",
" 'night',\n",
" 'parking',\n",
" 'full',\n",
" 'counter',\n",
" 'personnel',\n",
" 'suggested',\n",
" 'lot',\n",
" 'two',\n",
" 'block',\n",
" 'charged',\n",
" 'hour',\n",
" 'happy',\n",
" 'camper',\n",
" 'walking',\n",
" 'issue',\n",
" 'defiantly',\n",
" 'would',\n",
" 'worked',\n",
" 'well',\n",
" 'accommodation',\n",
" 'wall',\n",
" 'thin',\n",
" 'unless',\n",
" 'turn',\n",
" 'heater',\n",
" 'feel',\n",
" 'like',\n",
" 'sleeping',\n",
" 'sheet',\n",
" 'light',\n",
" 'blanket',\n",
" 'pull',\n",
" 'closet',\n",
" 'suggest',\n",
" 'hotel',\n",
" 'restaurant',\n",
" 'front',\n",
" 'desk',\n",
" 'steered',\n",
" 'u',\n",
" 'better',\n",
" 'food',\n",
" 'husband',\n",
" 'stayed',\n",
" 'saturday',\n",
" 'would',\n",
" 'recommend',\n",
" 'others',\n",
" 'staff',\n",
" 'friendly',\n",
" 'quiet',\n",
" 'relaxing',\n",
" 'room',\n",
" 'clean',\n",
" 'bed',\n",
" 'comfortable',\n",
" 'good',\n",
" 'price',\n",
" 'close',\n",
" 'space',\n",
" 'needle',\n",
" 'would',\n",
" 'definately',\n",
" 'stay',\n",
" 'next',\n",
" 'time',\n",
" 'go',\n",
" 'seattle',\n",
" 'overall',\n",
" 'great',\n",
" 'hotel',\n",
" 'dong',\n",
" 'quite',\n",
" 'bit',\n",
" 'traveling',\n",
" 'since',\n",
" 'retired',\n",
" 'end',\n",
" 'july',\n",
" 'best',\n",
" 'wester',\n",
" 'plus',\n",
" 'executive',\n",
" 'inn',\n",
" 'one',\n",
" 'favorite',\n",
" 'staff',\n",
" 'attitude',\n",
" 'make',\n",
" 'stay',\n",
" 'great',\n",
" 'experience',\n",
" 'wonderful',\n",
" 'time',\n",
" 'thanks',\n",
" 'helpful',\n",
" 'staff',\n",
" 'te',\n",
" 'great',\n",
" 'giving',\n",
" 'u',\n",
" 'direction',\n",
" 'advise',\n",
" 'go',\n",
" 'get',\n",
" 'seattle',\n",
" 'awesome',\n",
" 'location',\n",
" 'great',\n",
" 'view',\n",
" 'room',\n",
" 'clean',\n",
" 'well',\n",
" 'stocked',\n",
" 'wifi',\n",
" 'flawless',\n",
" 'short',\n",
" 'one',\n",
" 'night',\n",
" 'stay',\n",
" 'average',\n",
" 'nothing',\n",
" 'complain',\n",
" 'nothing',\n",
" 'brag',\n",
" 'either',\n",
" 'feel',\n",
" 'plus',\n",
" 'status',\n",
" 'hotel',\n",
" 'marketing',\n",
" 'stretch',\n",
" 'give',\n",
" 'credit',\n",
" 'property',\n",
" 'location',\n",
" 'location',\n",
" 'location',\n",
" 'easy',\n",
" 'walk',\n",
" 'many',\n",
" 'seattle',\n",
" 'attraction',\n",
" 'around',\n",
" 'space',\n",
" 'needle',\n",
" 'reserved',\n",
" 'july',\n",
" 'occupancy',\n",
" 'room',\n",
" 'queen',\n",
" 'bed',\n",
" 'traveling',\n",
" 'adult',\n",
" 'son',\n",
" 'november',\n",
" 'concert',\n",
" 'key',\n",
" 'arena',\n",
" 'good',\n",
" 'thing',\n",
" 'say',\n",
" 'close',\n",
" 'handy',\n",
" 'concert',\n",
" 'arrived',\n",
" 'check',\n",
" 'told',\n",
" 'room',\n",
" 'bed',\n",
" 'roll',\n",
" 'away',\n",
" 'sent',\n",
" 'saddest',\n",
" 'bed',\n",
" 'ever',\n",
" 'saw',\n",
" 'delivered',\n",
" 'rude',\n",
" 'housekeeper',\n",
" 'acted',\n",
" 'mad',\n",
" 'bring',\n",
" 'u',\n",
" 'bed',\n",
" 'extra',\n",
" 'blanket',\n",
" 'pillow',\n",
" 'even',\n",
" 'offer',\n",
" 'set',\n",
" 'bed',\n",
" 'room',\n",
" 'floor',\n",
" 'elevator',\n",
" 'noisy',\n",
" 'setting',\n",
" 'heard',\n",
" 'guest',\n",
" 'housekeeper',\n",
" 'coming',\n",
" 'going',\n",
" 'view',\n",
" 'roof',\n",
" 'top',\n",
" 'neighboring',\n",
" 'building',\n",
" 'lower',\n",
" 'parking',\n",
" 'area',\n",
" 'good',\n",
" 'place',\n",
" 'nearby',\n",
" 'eat',\n",
" 'nice',\n",
" 'shower',\n",
" 'lot',\n",
" 'water',\n",
" 'pressure',\n",
" 'though',\n",
" 'tub',\n",
" 'drain',\n",
" 'stayed',\n",
" 'night',\n",
" 'went',\n",
" 'rush',\n",
" 'concert',\n",
" 'key',\n",
" 'arena',\n",
" 'excellent',\n",
" 'concert',\n",
" 'way',\n",
" 'location',\n",
" 'perfect',\n",
" 'contrary',\n",
" 'review',\n",
" 'trouble',\n",
" 'finding',\n",
" 'excellent',\n",
" 'view',\n",
" 'space',\n",
" 'needle',\n",
" 'floor',\n",
" 'room',\n",
" 'yes',\n",
" 'older',\n",
" 'hotel',\n",
" 'need',\n",
" 'reno',\n",
" 'understand',\n",
" 'working',\n",
" 'room',\n",
" 'plenty',\n",
" 'space',\n",
" 'everything',\n",
" 'worked',\n",
" 'well',\n",
" 'main',\n",
" 'issue',\n",
" 'noise',\n",
" 'coming',\n",
" 'guest',\n",
" 'next',\n",
" 'door',\n",
" 'one',\n",
" 'night',\n",
" 'child',\n",
" 'loud',\n",
" 'next',\n",
" 'someone',\n",
" 'talking',\n",
" 'loud',\n",
" 'morning',\n",
" 'may',\n",
" 'adjoining',\n",
" 'room',\n",
" 'next',\n",
" 'time',\n",
" 'would',\n",
" 'request',\n",
" 'room',\n",
" 'connecting',\n",
" 'door',\n",
" 'lesson',\n",
" 'learned',\n",
" 'breakfast',\n",
" 'better',\n",
" 'many',\n",
" 'get',\n",
" 'best',\n",
" 'western',\n",
" 'plenty',\n",
" 'choice',\n",
" 'get',\n",
" 'bored',\n",
" 'day',\n",
" 'stay',\n",
" 'food',\n",
" 'restaurant',\n",
" 'evening',\n",
" 'rather',\n",
" 'bland',\n",
" 'ate',\n",
" 'nice',\n",
" 'fridge',\n",
" 'microwave',\n",
" 'room',\n",
" 'always',\n",
" 'ask',\n",
" 'fridge',\n",
" 'least',\n",
" 'staff',\n",
" 'hotel',\n",
" 'always',\n",
" 'polite',\n",
" 'friendly',\n",
" 'even',\n",
" 'line',\n",
" 'guest',\n",
" 'waiting',\n",
" 'seen',\n",
" 'also',\n",
" 'impressed',\n",
" 'manager',\n",
" 'see',\n",
" 'responds',\n",
" 'review',\n",
" 'doubt',\n",
" 'comment',\n",
" 'suggestion',\n",
" 'future',\n",
" 'bw',\n",
" 'plus',\n",
" 'proper',\n",
" 'glass',\n",
" 'mug',\n",
" 'well',\n",
" 'disposable',\n",
" 'option',\n",
" 'seen',\n",
" 'report',\n",
" 'cleaned',\n",
" 'place',\n",
" 'guest',\n",
" 'wash',\n",
" 'also',\n",
" 'think',\n",
" 'advising',\n",
" 'guest',\n",
" 'room',\n",
" 'connecting',\n",
" 'door',\n",
" 'next',\n",
" 'room',\n",
" 'decide',\n",
" 'whether',\n",
" 'stay',\n",
" 'room',\n",
" 'hotel',\n",
" 'great',\n",
" 'location',\n",
" 'view',\n",
" 'space',\n",
" 'needle',\n",
" 'within',\n",
" 'easy',\n",
" 'walking',\n",
" 'distance',\n",
" 'monorail',\n",
" 'downtown',\n",
" 'service',\n",
" 'patchy',\n",
" 'however',\n",
" 'lobby',\n",
" 'room',\n",
" 'little',\n",
" 'dingy',\n",
" 'need',\n",
" 'modernization',\n",
" 'particularly',\n",
" 'view',\n",
" 'price',\n",
" 'parking',\n",
" 'extra',\n",
" 'also',\n",
" 'get',\n",
" 'rate',\n",
" 'includes',\n",
" 'breakfast',\n",
" 'although',\n",
" 'breakfast',\n",
" 'nothing',\n",
" 'special',\n",
" 'bar',\n",
" 'nice',\n",
" 'selection',\n",
" 'locally',\n",
" 'brewed',\n",
" 'ale',\n",
" 'tap',\n",
" 'wanted',\n",
" 'place',\n",
" 'close',\n",
" 'museum',\n",
" 'attraction',\n",
" 'near',\n",
" 'space',\n",
" 'needle',\n",
" 'took',\n",
" 'advantage',\n",
" 'hotel',\n",
" 'king',\n",
" 'tut',\n",
" 'package',\n",
" 'hotel',\n",
" 'literally',\n",
" 'two',\n",
" 'block',\n",
" 'everything',\n",
" 'price',\n",
" 'better',\n",
" 'others',\n",
" 'checked',\n",
" 'online',\n",
" 'parked',\n",
" 'car',\n",
" 'hotel',\n",
" 'move',\n",
" 'entire',\n",
" 'time',\n",
" 'night',\n",
" 'one',\n",
" 'big',\n",
" 'advantage',\n",
" 'staying',\n",
" 'king',\n",
" 'tut',\n",
" 'package',\n",
" 'gave',\n",
" 'u',\n",
" 'vip',\n",
" 'ticket',\n",
" 'meant',\n",
" 'could',\n",
" 'go',\n",
" 'see',\n",
" 'exhibit',\n",
" 'time',\n",
" 'open',\n",
" 'rather',\n",
" 'date',\n",
" 'time',\n",
" 'specific',\n",
" 'ticket',\n",
" 'motel',\n",
" 'room',\n",
" 'clean',\n",
" 'adequate',\n",
" 'spend',\n",
" 'much',\n",
" 'time',\n",
" 'view',\n",
" 'room',\n",
" 'pretty',\n",
" 'blah',\n",
" 'overlooking',\n",
" 'parking',\n",
" 'lot',\n",
" 'except',\n",
" 'get',\n",
" 'watch',\n",
" 'one',\n",
" 'really',\n",
" 'big',\n",
" 'building',\n",
" 'crane',\n",
" 'operation',\n",
" 'aware',\n",
" 'least',\n",
" 'part',\n",
" 'seattle',\n",
" 'seemed',\n",
" 'construction',\n",
" 'mode',\n",
" 'hotel',\n",
" 'fault',\n",
" 'awakened',\n",
" 'one',\n",
" 'morning',\n",
" 'non',\n",
" 'stop',\n",
" 'jack',\n",
" 'hammering',\n",
" 'street',\n",
" 'even',\n",
" 'earlier',\n",
" 'second',\n",
" 'morning',\n",
" 'arrival',\n",
" 'garbage',\n",
" 'truck',\n",
" 'plus',\n",
" 'side',\n",
" 'room',\n",
" 'refrigerator',\n",
" 'microwave',\n",
" 'arm',\n",
" 'chairm',\n",
" 'bathroom',\n",
" 'tiny',\n",
" 'try',\n",
" 'sit',\n",
" 'toilet',\n",
" 'close',\n",
" 'door',\n",
" 'time',\n",
" 'comment',\n",
" 'maid',\n",
" 'service',\n",
" 'say',\n",
" 'respect',\n",
" 'privacy',\n",
" 'clean',\n",
" 'room',\n",
" 'since',\n",
" 'put',\n",
" 'disturb',\n",
" 'sign',\n",
" 'leave',\n",
" 'u',\n",
" 'note',\n",
" 'day',\n",
" 'telling',\n",
" 'u',\n",
" 'want',\n",
" 'anything',\n",
" 'serviced',\n",
" 'let',\n",
" 'front',\n",
" 'desk',\n",
" 'know',\n",
" 'thought',\n",
" 'nice',\n",
" 'way',\n",
" 'handle',\n",
" 'breakfast',\n",
" 'hotel',\n",
" 'restaurant',\n",
" 'morning',\n",
" 'convenience',\n",
" 'first',\n",
" 'day',\n",
" 'part',\n",
" 'package',\n",
" 'good',\n",
" 'variety',\n",
" 'make',\n",
" 'breakfast',\n",
" 'burrito',\n",
" 'waffle',\n",
" 'oatmeal',\n",
" 'bacon',\n",
" 'etc',\n",
" 'although',\n",
" 'exact',\n",
" 'choice',\n",
" 'day',\n",
" 'got',\n",
" 'little',\n",
" 'boring',\n",
" 'third',\n",
" 'morning',\n",
" 'breakfast',\n",
" 'family',\n",
" 'stay',\n",
" 'another',\n",
" 'hotel',\n",
" 'area',\n",
" 'earlier',\n",
" 'year',\n",
" 'surprised',\n",
" 'air',\n",
" 'conditioning',\n",
" 'hotel',\n",
" 'air',\n",
" 'conditioning',\n",
" 'worked',\n",
" 'fine',\n",
" 'definitely',\n",
" 'adequate',\n",
" 'place',\n",
" 'reasonable',\n",
" 'price',\n",
" 'seattle',\n",
" 'super',\n",
" 'location',\n",
" 'stayed',\n",
" 'three',\n",
" 'night',\n",
" 'enjoyed',\n",
" 'every',\n",
" 'moment',\n",
" 'room',\n",
" 'location',\n",
" 'helpful',\n",
" 'staff',\n",
" 'cleanliness',\n",
" 'value',\n",
" 'comfort',\n",
" 'everything',\n",
" 'spot',\n",
" 'staff',\n",
" 'friendly',\n",
" 'helpful',\n",
" 'highly',\n",
" 'recommended',\n",
" 'return',\n",
" 'wanted',\n",
" 'hotel',\n",
" 'near',\n",
" 'space',\n",
" 'needle',\n",
" 'knew',\n",
" 'traffic',\n",
" 'would',\n",
" 'nite',\n",
" 'mare',\n",
" 'trying',\n",
" 'find',\n",
" 'place',\n",
" 'hard',\n",
" 'check',\n",
" 'horrific',\n",
" 'person',\n",
" 'come',\n",
" 'really',\n",
" 'took',\n",
" 'minute',\n",
" 'hour',\n",
" 'drive',\n",
" 'beyond',\n",
" 'comprehension',\n",
" 'got',\n",
" 'lucky',\n",
" 'got',\n",
" 'room',\n",
" 'view',\n",
" 'without',\n",
" 'pay',\n",
" 'extra',\n",
" 'night',\n",
" 'helped',\n",
" 'little',\n",
" 'bit',\n",
" 'hall',\n",
" 'room',\n",
" 'dirty',\n",
" 'bed',\n",
" 'oh',\n",
" 'goodness',\n",
" 'horrible',\n",
" 'uncomfortable',\n",
" 'son',\n",
" 'said',\n",
" 'felt',\n",
" 'like',\n",
" 'really',\n",
" 'big',\n",
" 'person',\n",
" 'slept',\n",
" 'need',\n",
" 'replaced',\n",
" 'spring',\n",
" 'totally',\n",
" 'broken',\n",
" 'pleased',\n",
" 'breakfast',\n",
" 'day',\n",
" 'paid',\n",
" 'day',\n",
" 'change',\n",
" 'closed',\n",
" 'exactly',\n",
" 'exception',\n",
" 'mon',\n",
" 'afternoon',\n",
" 'thurs',\n",
" 'put',\n",
" 'complaint',\n",
" 'card',\n",
" 'got',\n",
" 'e',\n",
" 'mail',\n",
" 'response',\n",
" 'replied',\n",
" 'back',\n",
" 'nothing',\n",
" 'sure',\n",
" 'management',\n",
" 'anything',\n",
" 'night',\n",
" 'almost',\n",
" 'mortgage',\n",
" 'payment',\n",
" 'thought',\n",
" 'would',\n",
" 'better',\n",
" 'room',\n",
" 'ever',\n",
" 'worried',\n",
" 'next',\n",
" 'night',\n",
" 'best',\n",
" 'western',\n",
" 'portland',\n",
" 'let',\n",
" 'see',\n",
" 'checked',\n",
" 'best',\n",
" 'western',\n",
" 'executive',\n",
" 'part',\n",
" 'blackball',\n",
" 'ferry',\n",
" 'package',\n",
" 'hotel',\n",
" ...]"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"preprocess(final_df[\"reviews\"][2])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Application on all reviews"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we can apply the preprocessing to all the reviews to make our **corpus**."
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"output_embedded_package_id": "1uz0rISpNcAAou-Y97DrNwFCi5iVTMNJk"
},
"executionInfo": {
"elapsed": 217285,
"status": "ok",
"timestamp": 1730740623933,
"user": {
"displayName": "Joyce Lapilus",
"userId": "10669185642835107674"
},
"user_tz": -60
},
"id": "O1uV1hBv4r8_",
"outputId": "73340db7-9f8a-424c-fe58-38644bca2550"
},
"outputs": [
{
"data": {
"text/plain": [
"[['make',\n",
" 'fast',\n",
" 'visit',\n",
" 'seattle',\n",
" 'found',\n",
" 'pioneer',\n",
" 'regret',\n",
" 'hotel',\n",
" 'comfortable',\n",
" 'clean',\n",
" 'else',\n",
" 'mm',\n",
" 'nice',\n",
" 'area',\n",
" 'everything',\n",
" 'walking',\n",
" 'distance',\n",
" 'guess',\n",
" 'breakfast',\n",
" 'something',\n",
" 'else',\n",
" 'bread',\n",
" 'waffle',\n",
" 'fourth',\n",
" 'fifth',\n",
" 'time',\n",
" 'staying',\n",
" 'best',\n",
" 'western',\n",
" 'pioneer',\n",
" 'square',\n",
" 'like',\n",
" 'location',\n",
" 'within',\n",
" 'walking',\n",
" 'distance',\n",
" 'downtown',\n",
" 'waterfront',\n",
" 'ball',\n",
" 'field',\n",
" 'get',\n",
" 'town',\n",
" 'park',\n",
" 'available',\n",
" 'garage',\n",
" 'rest',\n",
" 'trip',\n",
" 'foot',\n",
" 'minute',\n",
" 'walk',\n",
" 'action',\n",
" 'downtown',\n",
" 'pike',\n",
" 'street',\n",
" 'shopping',\n",
" 'etc',\n",
" 'may',\n",
" 'far',\n",
" 'walk',\n",
" 'like',\n",
" 'dealing',\n",
" 'driving',\n",
" 'parking',\n",
" 'downtown',\n",
" 'place',\n",
" 'nothing',\n",
" 'fancy',\n",
" 'hotel',\n",
" 'room',\n",
" 'nice',\n",
" 'clean',\n",
" 'staff',\n",
" 'helpful',\n",
" 'friendly',\n",
" 'view',\n",
" 'room',\n",
" 'also',\n",
" 'leave',\n",
" 'much',\n",
" 'desired',\n",
" 'fact',\n",
" 'better',\n",
" 'worrying',\n",
" 'gazing',\n",
" 'window',\n",
" 'place',\n",
" 'location',\n",
" 'atmosphere',\n",
" 'old',\n",
" 'seattle',\n",
" 'continental',\n",
" 'breakfast',\n",
" 'taken',\n",
" 'advantage',\n",
" 'previous',\n",
" 'visit',\n",
" 'fine',\n",
" 'want',\n",
" 'quick',\n",
" 'bite',\n",
" 'morning',\n",
" 'make',\n",
" 'unplanned',\n",
" 'visit',\n",
" 'seattle',\n",
" 'due',\n",
" 'lost',\n",
" 'passport',\n",
" 'chose',\n",
" 'least',\n",
" 'expensive',\n",
" 'hotel',\n",
" 'near',\n",
" 'passport',\n",
" 'office',\n",
" 'expecting',\n",
" 'boring',\n",
" 'chain',\n",
" 'hotel',\n",
" 'delightful',\n",
" 'surprise',\n",
" 'best',\n",
" 'western',\n",
" 'like',\n",
" 'boutique',\n",
" 'hotel',\n",
" 'lobby',\n",
" 'lovely',\n",
" 'comfortable',\n",
" 'staff',\n",
" 'warm',\n",
" 'helpful',\n",
" 'room',\n",
" 'service',\n",
" 'food',\n",
" 'wonderful',\n",
" 'italian',\n",
" 'restaurant',\n",
" 'next',\n",
" 'door',\n",
" 'definitely',\n",
" 'back',\n",
" 'say',\n",
" 'rate',\n",
" 'seem',\n",
" 'fluctuate',\n",
" 'quite',\n",
" 'lot',\n",
" 'lowest',\n",
" 'best',\n",
" 'deal',\n",
" 'excluding',\n",
" 'priceline',\n",
" 'hotwire',\n",
" 'thing',\n",
" 'seattle',\n",
" 'going',\n",
" 'stayed',\n",
" 'many',\n",
" 'time',\n",
" 'every',\n",
" 'single',\n",
" 'stay',\n",
" 'fantastic',\n",
" 'value',\n",
" 'love',\n",
" 'building',\n",
" 'historic',\n",
" 'building',\n",
" 'really',\n",
" 'like',\n",
" 'big',\n",
" 'old',\n",
" 'stairway',\n",
" 'use',\n",
" 'rather',\n",
" 'small',\n",
" 'elevator',\n",
" 'crammed',\n",
" 'building',\n",
" 'later',\n",
" 'date',\n",
" 'place',\n",
" 'kept',\n",
" 'clean',\n",
" 'room',\n",
" 'range',\n",
" 'fairly',\n",
" 'small',\n",
" 'pretty',\n",
" 'big',\n",
" 'bed',\n",
" 'good',\n",
" 'bathroom',\n",
" 'good',\n",
" 'small',\n",
" 'maintenance',\n",
" 'property',\n",
" 'seems',\n",
" 'excellent',\n",
" 'location',\n",
" 'spectacular',\n",
" 'link',\n",
" 'light',\n",
" 'rail',\n",
" 'seattle',\n",
" 'fantastic',\n",
" 'rail',\n",
" 'system',\n",
" 'seatac',\n",
" 'westlake',\n",
" 'short',\n",
" 'walk',\n",
" 'hotel',\n",
" 'station',\n",
" 'name',\n",
" 'wait',\n",
" 'pioneer',\n",
" 'square',\n",
" 'kind',\n",
" 'easy',\n",
" 'remember',\n",
" 'given',\n",
" 'name',\n",
" 'hotel',\n",
" 'huh',\n",
" 'easy',\n",
" 'walking',\n",
" 'riding',\n",
" 'public',\n",
" 'transport',\n",
" 'downtown',\n",
" 'staff',\n",
" 'nice',\n",
" 'always',\n",
" 'greet',\n",
" 'kindly',\n",
" 'gentleman',\n",
" 'checking',\n",
" 'time',\n",
" 'even',\n",
" 'apologized',\n",
" 'noticed',\n",
" 'multiple',\n",
" 'time',\n",
" 'know',\n",
" 'name',\n",
" 'checking',\n",
" 'early',\n",
" 'asked',\n",
" 'day',\n",
" 'plan',\n",
" 'learning',\n",
" 'leaving',\n",
" 'late',\n",
" 'flight',\n",
" 'promptly',\n",
" 'offered',\n",
" 'check',\n",
" 'bag',\n",
" 'need',\n",
" 'great',\n",
" 'staff',\n",
" 'try',\n",
" 'anticipate',\n",
" 'need',\n",
" 'well',\n",
" 'managed',\n",
" 'location',\n",
" 'free',\n",
" 'breakfast',\n",
" 'typical',\n",
" 'hotel',\n",
" 'fare',\n",
" 'reasonable',\n",
" 'quality',\n",
" 'lot',\n",
" 'restaurant',\n",
" 'around',\n",
" 'want',\n",
" 'grab',\n",
" 'bite',\n",
" 'eat',\n",
" 'grab',\n",
" 'take',\n",
" 'away',\n",
" 'room',\n",
" 'really',\n",
" 'like',\n",
" 'inexpensive',\n",
" 'friendly',\n",
" 'asian',\n",
" 'restaurant',\n",
" 'right',\n",
" 'next',\n",
" 'door',\n",
" 'east',\n",
" 'side',\n",
" 'front',\n",
" 'building',\n",
" 'recall',\n",
" 'name',\n",
" 'would',\n",
" 'review',\n",
" 'highly',\n",
" 'recommend',\n",
" 'hotel',\n",
" 'particularly',\n",
" 'pay',\n",
" 'one',\n",
" 'low',\n",
" 'rate',\n",
" 'absolutely',\n",
" 'excellent',\n",
" 'value',\n",
" 'kudos',\n",
" 'management',\n",
" 'staff',\n",
" 'get',\n",
" 'know',\n",
" 'area',\n",
" 'get',\n",
" 'info',\n",
" 'staff',\n",
" 'take',\n",
" 'time',\n",
" 'enjoy',\n",
" 'seattle',\n",
" 'waterfront',\n",
" 'perhaps',\n",
" 'ride',\n",
" 'ferry',\n",
" 'boat',\n",
" 'two',\n",
" 'across',\n",
" 'sound',\n",
" 'ready',\n",
" 'ever',\n",
" 'changing',\n",
" 'weather',\n",
" 'part',\n",
" 'seattle',\n",
" 'charm',\n",
" 'time',\n",
" 'slowly',\n",
" 'walk',\n",
" 'around',\n",
" 'give',\n",
" 'depth',\n",
" 'picture',\n",
" 'seattle',\n",
" 'water',\n",
" 'front',\n",
" 'activity',\n",
" 'also',\n",
" 'always',\n",
" 'something',\n",
" 'stimulate',\n",
" 'everyones',\n",
" 'attention',\n",
" 'perfectly',\n",
" 'renovated',\n",
" 'historical',\n",
" 'hotel',\n",
" 'immaculate',\n",
" 'room',\n",
" 'comfortable',\n",
" 'hotel',\n",
" 'staff',\n",
" 'courteous',\n",
" 'knowledgeable',\n",
" 'location',\n",
" 'less',\n",
" 'block',\n",
" 'waterfront',\n",
" 'ferry',\n",
" 'pier',\n",
" 'two',\n",
" 'block',\n",
" 'light',\n",
" 'rail',\n",
" 'station',\n",
" 'fare',\n",
" 'seatac',\n",
" 'step',\n",
" 'back',\n",
" 'greeted',\n",
" 'historic',\n",
" 'ambiance',\n",
" 'rich',\n",
" 'dark',\n",
" 'wood',\n",
" 'welcoming',\n",
" 'fireplace',\n",
" 'sitting',\n",
" 'area',\n",
" 'original',\n",
" 'grand',\n",
" 'staircase',\n",
" 'period',\n",
" 'furnishing',\n",
" 'floor',\n",
" 'landing',\n",
" 'quiet',\n",
" 'room',\n",
" 'beautifully',\n",
" 'decorated',\n",
" 'heavy',\n",
" 'brocade',\n",
" 'drapery',\n",
" 'tapestry',\n",
" 'highback',\n",
" 'sitting',\n",
" 'chair',\n",
" 'loveseat',\n",
" 'setee',\n",
" 'besides',\n",
" 'two',\n",
" 'comfortable',\n",
" 'bed',\n",
" 'flat',\n",
" 'screen',\n",
" 'tv',\n",
" 'keurig',\n",
" 'coffeemaker',\n",
" 'paul',\n",
" 'newman',\n",
" 'coffee',\n",
" 'product',\n",
" 'writing',\n",
" 'desk',\n",
" 'chair',\n",
" 'plush',\n",
" 'bathroom',\n",
" 'towel',\n",
" 'sister',\n",
" 'sky',\n",
" 'toiletry',\n",
" 'expanded',\n",
" 'continental',\n",
" 'breakfast',\n",
" 'offered',\n",
" 'array',\n",
" 'cold',\n",
" 'hot',\n",
" 'cereal',\n",
" 'fresh',\n",
" 'fruit',\n",
" 'hot',\n",
" 'bacon',\n",
" 'egg',\n",
" 'cheese',\n",
" 'wrap',\n",
" 'juice',\n",
" 'hot',\n",
" 'beverage',\n",
" 'fresh',\n",
" 'belgian',\n",
" 'waffle',\n",
" 'pastry',\n",
" 'muffin',\n",
" 'bagel',\n",
" 'actual',\n",
" 'bagel',\n",
" 'slicer',\n",
" 'highly',\n",
" 'recommend',\n",
" 'room',\n",
" 'balcony',\n",
" 'step',\n",
" 'experience',\n",
" 'ambiance',\n",
" 'area',\n",
" 'seattle',\n",
" 'transportation',\n",
" 'system',\n",
" 'convenient',\n",
" 'taxi',\n",
" 'reasonable',\n",
" 'otherwise',\n",
" 'parking',\n",
" 'hard',\n",
" 'find',\n",
" 'expensive',\n",
" 'plan',\n",
" 'make',\n",
" 'trip',\n",
" 'seattle',\n",
" 'great',\n",
" 'place',\n",
" 'stay',\n",
" 'convenient',\n",
" 'transportation',\n",
" 'stayed',\n",
" 'nice',\n",
" 'hotel',\n",
" 'recently',\n",
" 'night',\n",
" 'great',\n",
" 'location',\n",
" 'walking',\n",
" 'distance',\n",
" 'football',\n",
" 'stadium',\n",
" 'football',\n",
" 'game',\n",
" 'shop',\n",
" 'restaurant',\n",
" 'plus',\n",
" 'pier',\n",
" 'pike',\n",
" 'market',\n",
" 'took',\n",
" 'light',\n",
" 'rail',\n",
" 'airport',\n",
" 'get',\n",
" 'hotel',\n",
" 'get',\n",
" 'pioneer',\n",
" 'square',\n",
" 'stop',\n",
" 'walk',\n",
" 'block',\n",
" 'hotel',\n",
" 'lot',\n",
" 'luggage',\n",
" 'may',\n",
" 'easy',\n",
" 'customer',\n",
" 'service',\n",
" 'hotel',\n",
" 'excellent',\n",
" 'staff',\n",
" 'encountered',\n",
" 'friendly',\n",
" 'helpful',\n",
" 'room',\n",
" 'clean',\n",
" 'comfortable',\n",
" 'everything',\n",
" 'needed',\n",
" 'used',\n",
" 'city',\n",
" 'noise',\n",
" 'might',\n",
" 'like',\n",
" 'location',\n",
" 'little',\n",
" 'noisy',\n",
" 'street',\n",
" 'surrounding',\n",
" 'hotel',\n",
" 'calm',\n",
" 'overnight',\n",
" 'bothered',\n",
" 'noise',\n",
" 'good',\n",
" 'night',\n",
" 'sleep',\n",
" 'every',\n",
" 'night',\n",
" 'morning',\n",
" 'breakfast',\n",
" 'good',\n",
" 'nothing',\n",
" 'fancy',\n",
" 'good',\n",
" 'selection',\n",
" 'pleasant',\n",
" 'stay',\n",
" 'stay',\n",
" 'next',\n",
" 'trip',\n",
" 'seattle',\n",
" 'train',\n",
" 'got',\n",
" 'u',\n",
" 'seattle',\n",
" 'morning',\n",
" 'hotel',\n",
" 'convenient',\n",
" 'station',\n",
" 'room',\n",
" 'ready',\n",
" 'u',\n",
" 'beautiful',\n",
" 'room',\n",
" 'great',\n",
" 'furnishing',\n",
" 'cooky',\n",
" 'milk',\n",
" 'delivered',\n",
" 'room',\n",
" 'check',\n",
" 'later',\n",
" 'checked',\n",
" 'see',\n",
" 'needed',\n",
" 'towel',\n",
" 'great',\n",
" 'staff',\n",
" 'great',\n",
" 'place',\n",
" 'liked',\n",
" 'way',\n",
" 'room',\n",
" 'set',\n",
" 'customer',\n",
" 'service',\n",
" 'excellent',\n",
" 'enjoyed',\n",
" 'close',\n",
" 'train',\n",
" 'station',\n",
" 'attraction',\n",
" 'saw',\n",
" 'breakfast',\n",
" 'great',\n",
" 'everyone',\n",
" 'lively',\n",
" 'friendly',\n",
" 'enjoyed',\n",
" 'stay',\n",
" 'thank',\n",
" 'train',\n",
" 'travel',\n",
" 'consultant',\n",
" 'ted',\n",
" 'sylvia',\n",
" 'blishak',\n",
" 'landing',\n",
" 'fine',\n",
" 'little',\n",
" 'hotel',\n",
" 'one',\n",
" 'best',\n",
" 'seen',\n",
" 'u',\n",
" 'convenient',\n",
" 'train',\n",
" 'station',\n",
" 'two',\n",
" 'night',\n",
" 'comfortable',\n",
" 'really',\n",
" 'helped',\n",
" 'u',\n",
" 'prepare',\n",
" 'canadian',\n",
" 'transcontinental',\n",
" 'train',\n",
" 'would',\n",
" 'board',\n",
" 'day',\n",
" 'ahead',\n",
" 'hotel',\n",
" 'almost',\n",
" 'tucked',\n",
" 'away',\n",
" 'side',\n",
" 'street',\n",
" 'cabbie',\n",
" 'bit',\n",
" 'challenge',\n",
" 'finding',\n",
" 'check',\n",
" 'flawless',\n",
" 'received',\n",
" 'large',\n",
" 'well',\n",
" 'appointed',\n",
" 'room',\n",
" 'top',\n",
" 'floor',\n",
" 'best',\n",
" 'western',\n",
" 'frequent',\n",
" 'guest',\n",
" 'card',\n",
" 'helped',\n",
" 'upgrade',\n",
" 'although',\n",
" 'considerable',\n",
" 'construction',\n",
" 'noise',\n",
" 'underground',\n",
" 'tunneling',\n",
" 'operation',\n",
" 'shut',\n",
" 'promptly',\n",
" 'sleepless',\n",
" 'seattle',\n",
" 'best',\n",
" 'western',\n",
" 'morning',\n",
" 'breakfast',\n",
" 'offering',\n",
" 'good',\n",
" 'providing',\n",
" 'enough',\n",
" 'tasty',\n",
" 'sustenance',\n",
" 'make',\n",
" 'lunch',\n",
" 'hand',\n",
" 'many',\n",
" 'trendy',\n",
" 'restaurant',\n",
" 'abound',\n",
" 'within',\n",
" 'neighboring',\n",
" 'block',\n",
" 'historic',\n",
" 'district',\n",
" 'choice',\n",
" 'hotel',\n",
" 'also',\n",
" 'relatively',\n",
" 'close',\n",
" 'sport',\n",
" 'stadium',\n",
" 'downtown',\n",
" 'shopping',\n",
" 'pike',\n",
" 'place',\n",
" 'market',\n",
" 'mile',\n",
" 'hike',\n",
" 'away',\n",
" 'caught',\n",
" 'vancouver',\n",
" 'bc',\n",
" 'train',\n",
" 'second',\n",
" 'morning',\n",
" 'advise',\n",
" 'allowing',\n",
" 'extra',\n",
" 'time',\n",
" 'get',\n",
" 'station',\n",
" 'due',\n",
" 'construction',\n",
" 'impediment',\n",
" 'drawback',\n",
" 'people',\n",
" 'coming',\n",
" 'car',\n",
" 'site',\n",
" 'parking',\n",
" 'inconvenient',\n",
" 'complicated',\n",
" 'expensive',\n",
" 'bottom',\n",
" 'line',\n",
" 'definitely',\n",
" 'best',\n",
" 'destination',\n",
" 'folk',\n",
" 'arriving',\n",
" 'rail',\n",
" 'also',\n",
" 'likely',\n",
" 'one',\n",
" 'best',\n",
" 'kept',\n",
" 'lodging',\n",
" 'secret',\n",
" 'seattle',\n",
" 'coming',\n",
" 'car',\n",
" 'parking',\n",
" 'situation',\n",
" 'causing',\n",
" 'nevertheless',\n",
" 'highly',\n",
" 'recommend',\n",
" 'pioneer',\n",
" 'square',\n",
" 'best',\n",
" 'western',\n",
" 'next',\n",
" 'visit',\n",
" 'seattle',\n",
" 'stayed',\n",
" 'june',\n",
" 'clean',\n",
" 'comfortable',\n",
" 'room',\n",
" 'great',\n",
" 'rate',\n",
" 'breakfast',\n",
" 'basic',\n",
" 'included',\n",
" 'best',\n",
" 'thing',\n",
" 'hotel',\n",
" 'service',\n",
" 'guest',\n",
" 'service',\n",
" 'associate',\n",
" 'incredibly',\n",
" 'helpful',\n",
" 'went',\n",
" 'way',\n",
" 'make',\n",
" 'sure',\n",
" 'accommodation',\n",
" 'suitable',\n",
" 'exceeded',\n",
" 'suitable',\n",
" 'great',\n",
" 'location',\n",
" 'city',\n",
" 'picked',\n",
" 'hotel',\n",
" 'simply',\n",
" 'location',\n",
" 'daughter',\n",
" 'apartment',\n",
" 'downtown',\n",
" 'would',\n",
" 'stay',\n",
" 'even',\n",
" 'live',\n",
" 'close',\n",
" 'people',\n",
" 'friendly',\n",
" 'even',\n",
" 'arrived',\n",
" 'midnight',\n",
" 'first',\n",
" 'thing',\n",
" 'morning',\n",
" 'room',\n",
" 'clean',\n",
" 'picky',\n",
" 'everyday',\n",
" 'returned',\n",
" 'breakfast',\n",
" 'norm',\n",
" 'dining',\n",
" 'area',\n",
" 'staffed',\n",
" 'sightseeing',\n",
" 'would',\n",
" 'say',\n",
" 'location',\n",
" 'excellent',\n",
" 'well',\n",
" 'back',\n",
" 'sure',\n",
" 'loved',\n",
" 'location',\n",
" 'public',\n",
" 'transportation',\n",
" 'good',\n",
" 'need',\n",
" 'car',\n",
" 'hotel',\n",
" 'lovely',\n",
" 'room',\n",
" 'quiet',\n",
" 'clean',\n",
" 'bathroom',\n",
" 'sparkled',\n",
" 'great',\n",
" 'shower',\n",
" 'king',\n",
" 'size',\n",
" 'bed',\n",
" 'comfortable',\n",
" 'ate',\n",
" 'complimentary',\n",
" 'breakfast',\n",
" 'every',\n",
" 'morning',\n",
" 'stay',\n",
" 'lot',\n",
" 'healthy',\n",
" 'choice',\n",
" 'fresh',\n",
" 'fruit',\n",
" 'liked',\n",
" 'staff',\n",
" 'friendly',\n",
" 'reccomended',\n",
" 'great',\n",
" 'restaurant',\n",
" 'ever',\n",
" 'wonder',\n",
" 'comment',\n",
" 'submit',\n",
" 'make',\n",
" 'hotel',\n",
" 'reservation',\n",
" 'read',\n",
" 'well',\n",
" 'hotel',\n",
" 'hotel',\n",
" 'great',\n",
" 'location',\n",
" 'walk',\n",
" 'everything',\n",
" 'along',\n",
" 'waterfront',\n",
" 'pike',\n",
" 'place',\n",
" 'market',\n",
" 'football',\n",
" 'baseball',\n",
" 'stadium',\n",
" 'many',\n",
" 'great',\n",
" 'place',\n",
" 'eat',\n",
" 'club',\n",
" 'go',\n",
" 'far',\n",
" 'time',\n",
" 'room',\n",
" 'lovely',\n",
" 'paid',\n",
" 'city',\n",
" 'view',\n",
" 'glad',\n",
" 'french',\n",
" 'door',\n",
" 'opened',\n",
" 'onto',\n",
" 'balcony',\n",
" 'wide',\n",
" 'ledge',\n",
" 'window',\n",
" 'view',\n",
" 'puget',\n",
" 'sound',\n",
" 'ferry',\n",
" 'coming',\n",
" 'going',\n",
" 'king',\n",
" 'bed',\n",
" 'comfy',\n",
" 'quiet',\n",
" 'high',\n",
" 'ceiling',\n",
" 'staff',\n",
" 'helpful',\n",
" 'parking',\n",
" 'ask',\n",
" 'stay',\n",
" 'great',\n",
" 'clean',\n",
" 'room',\n",
" 'frig',\n",
" 'close',\n",
" 'eveything',\n",
" 'downtown',\n",
" 'area',\n",
" 'came',\n",
" 'new',\n",
" 'car',\n",
" 'show',\n",
" 'quest',\n",
" 'feild',\n",
" 'ansd',\n",
" 'able',\n",
" 'walk',\n",
" 'every',\n",
" 'weekend',\n",
" 'great',\n",
" 'restaurant',\n",
" 'bar',\n",
" 'also',\n",
" 'within',\n",
" 'walking',\n",
" 'distance',\n",
" 'come',\n",
" 'city',\n",
" 'seattle',\n",
" 'time',\n",
" 'year',\n",
" 'stay',\n",
" 'location',\n",
" 'great',\n",
" 'bed',\n",
" 'good',\n",
" 'everything',\n",
" 'else',\n",
" 'alright',\n",
" 'could',\n",
" 'hear',\n",
" 'people',\n",
" 'room',\n",
" 'u',\n",
" 'fail',\n",
" 'minimally',\n",
" 'helpful',\n",
" 'staff',\n",
" ...],\n",
" ['great',\n",
" 'service',\n",
" 'room',\n",
" 'clean',\n",
" 'could',\n",
" 'use',\n",
" 'queen',\n",
" 'bed',\n",
" 'two',\n",
" 'bed',\n",
" 'room',\n",
" 'otherwise',\n",
" 'great',\n",
" 'great',\n",
" 'price',\n",
" 'location',\n",
" 'would',\n",
" 'definitely',\n",
" 'go',\n",
" 'back',\n",
" 'make',\n",
" 'sure',\n",
" 'try',\n",
" 'zeets',\n",
" 'pizza',\n",
" 'amazing',\n",
" 'give',\n",
" 'kid',\n",
" 'pizza',\n",
" 'dough',\n",
" 'play',\n",
" 'wait',\n",
" 'room',\n",
" 'clean',\n",
" 'hotel',\n",
" 'conveniently',\n",
" 'located',\n",
" 'close',\n",
" 'restaurant',\n",
" 'shop',\n",
" 'close',\n",
" 'downtown',\n",
" 'service',\n",
" 'good',\n",
" 'room',\n",
" 'rate',\n",
" 'good',\n",
" 'recommend',\n",
" 'friend',\n",
" 'breakfast',\n",
" 'alright',\n",
" 'nice',\n",
" 'location',\n",
" 'visiting',\n",
" 'seattle',\n",
" 'center',\n",
" 'downtown',\n",
" 'good',\n",
" 'breakfast',\n",
" 'nice',\n",
" 'staff',\n",
" 'room',\n",
" 'little',\n",
" 'small',\n",
" 'u',\n",
" 'clean',\n",
" 'cozy',\n",
" 'nice',\n",
" 'workout',\n",
" 'room',\n",
" 'whirlpool',\n",
" 'hot',\n",
" 'tub',\n",
" 'available',\n",
" 'completed',\n",
" 'stay',\n",
" 'best',\n",
" 'western',\n",
" 'loyal',\n",
" 'inn',\n",
" 'within',\n",
" 'seattle',\n",
" 'washington',\n",
" 'disappointeed',\n",
" 'due',\n",
" 'number',\n",
" 'factor',\n",
" 'majority',\n",
" 'began',\n",
" 'day',\n",
" 'first',\n",
" 'disclaimer',\n",
" 'staff',\n",
" 'hotel',\n",
" 'offer',\n",
" 'correct',\n",
" 'issue',\n",
" 'discus',\n",
" 'fact',\n",
" 'occurred',\n",
" 'first',\n",
" 'place',\n",
" 'present',\n",
" 'demonstrated',\n",
" 'paying',\n",
" 'attention',\n",
" 'room',\n",
" 'upkeep',\n",
" 'best',\n",
" 'western',\n",
" 'may',\n",
" 'better',\n",
" 'condition',\n",
" 'one',\n",
" 'certainly',\n",
" 'lacking',\n",
" 'price',\n",
" 'key',\n",
" 'selecting',\n",
" 'hotel',\n",
" 'well',\n",
" 'brand',\n",
" 'name',\n",
" 'make',\n",
" 'difference',\n",
" 'found',\n",
" 'year',\n",
" 'travel',\n",
" 'upon',\n",
" 'arrival',\n",
" 'told',\n",
" 'check',\n",
" 'pm',\n",
" 'also',\n",
" 'told',\n",
" 'reserved',\n",
" 'room',\n",
" 'paid',\n",
" 'would',\n",
" 'ready',\n",
" 'time',\n",
" 'common',\n",
" 'excuse',\n",
" 'took',\n",
" 'staff',\n",
" 'day',\n",
" 'prepare',\n",
" 'various',\n",
" 'room',\n",
" 'room',\n",
" 'unavailable',\n",
" 'late',\n",
" 'day',\n",
" 'becoming',\n",
" 'serious',\n",
" 'concern',\n",
" 'many',\n",
" 'hotel',\n",
" 'pm',\n",
" 'mean',\n",
" 'lost',\n",
" 'day',\n",
" 'without',\n",
" 'place',\n",
" 'stay',\n",
" 'even',\n",
" 'though',\n",
" 'paying',\n",
" 'day',\n",
" 'latest',\n",
" 'hour',\n",
" 'ever',\n",
" 'advised',\n",
" 'stayed',\n",
" 'countless',\n",
" 'hotel',\n",
" 'year',\n",
" 'road',\n",
" 'expressing',\n",
" 'thought',\n",
" 'desk',\n",
" 'switched',\n",
" 'different',\n",
" 'room',\n",
" 'ready',\n",
" 'checked',\n",
" 'bed',\n",
" 'layout',\n",
" 'originally',\n",
" 'reserved',\n",
" 'heat',\n",
" 'froze',\n",
" 'night',\n",
" 'got',\n",
" 'turned',\n",
" 'heater',\n",
" 'first',\n",
" 'rattled',\n",
" 'loudly',\n",
" 'proceeded',\n",
" 'blow',\n",
" 'nothing',\n",
" 'cold',\n",
" 'air',\n",
" 'regardless',\n",
" 'dial',\n",
" 'setting',\n",
" 'stripped',\n",
" 'bed',\n",
" 'cover',\n",
" 'keep',\n",
" 'warm',\n",
" 'night',\n",
" 'obtained',\n",
" 'blanket',\n",
" 'desk',\n",
" 'next',\n",
" 'day',\n",
" 'bedding',\n",
" 'consisted',\n",
" 'clean',\n",
" 'sheet',\n",
" 'thin',\n",
" 'pink',\n",
" 'blanket',\n",
" 'would',\n",
" 'keep',\n",
" 'corpse',\n",
" 'warm',\n",
" 'sink',\n",
" 'stopped',\n",
" 'day',\n",
" 'sink',\n",
" 'failed',\n",
" 'drain',\n",
" 'fill',\n",
" 'water',\n",
" 'would',\n",
" 'wait',\n",
" 'minute',\n",
" 'empty',\n",
" 'finishing',\n",
" 'washing',\n",
" 'staff',\n",
" 'notified',\n",
" 'wanted',\n",
" 'send',\n",
" 'repair',\n",
" 'people',\n",
" 'room',\n",
" 'gone',\n",
" 'declined',\n",
" 'offer',\n",
" 'stated',\n",
" 'staff',\n",
" 'try',\n",
" 'make',\n",
" 'thing',\n",
" 'right',\n",
" 'changing',\n",
" 'room',\n",
" 'stopping',\n",
" 'schedule',\n",
" 'multiple',\n",
" 'issue',\n",
" 'repaired',\n",
" 'something',\n",
" 'would',\n",
" 'like',\n",
" 'addressed',\n",
" 'arrival',\n",
" 'leave',\n",
" 'hour',\n",
" 'paying',\n",
" 'siren',\n",
" 'siren',\n",
" 'vehicle',\n",
" 'constant',\n",
" 'least',\n",
" 'passing',\n",
" 'window',\n",
" 'hour',\n",
" 'night',\n",
" 'back',\n",
" 'hotel',\n",
" 'night',\n",
" 'better',\n",
" 'siren',\n",
" 'night',\n",
" 'thru',\n",
" 'transient',\n",
" 'kid',\n",
" 'alley',\n",
" 'rear',\n",
" 'hotel',\n",
" 'several',\n",
" 'transient',\n",
" 'young',\n",
" 'people',\n",
" 'yelling',\n",
" 'pm',\n",
" 'unknown',\n",
" 'reason',\n",
" 'perhaps',\n",
" 'anger',\n",
" 'resident',\n",
" 'hotel',\n",
" 'good',\n",
" 'job',\n",
" 'night',\n",
" 'showed',\n",
" 'improvement',\n",
" 'raining',\n",
" 'one',\n",
" 'guy',\n",
" 'time',\n",
" 'singing',\n",
" 'loud',\n",
" 'directly',\n",
" 'n',\n",
" 'w',\n",
" 'breakfast',\n",
" 'let',\n",
" 'see',\n",
" 'egg',\n",
" 'fried',\n",
" 'hard',\n",
" 'perfect',\n",
" 'circle',\n",
" 'placed',\n",
" 'metal',\n",
" 'container',\n",
" 'clear',\n",
" 'plastic',\n",
" 'lid',\n",
" 'cold',\n",
" 'placed',\n",
" 'inside',\n",
" 'microwave',\n",
" 'heat',\n",
" 'meat',\n",
" 'sad',\n",
" 'stack',\n",
" 'packaged',\n",
" 'ham',\n",
" 'chunk',\n",
" 'pressed',\n",
" 'meat',\n",
" 'inside',\n",
" 'container',\n",
" 'clear',\n",
" 'plastic',\n",
" 'lid',\n",
" 'type',\n",
" 'meat',\n",
" 'present',\n",
" 'pressed',\n",
" 'ham',\n",
" 'bit',\n",
" 'made',\n",
" 'rectangular',\n",
" 'slice',\n",
" 'cereal',\n",
" 'dispenser',\n",
" 'mounted',\n",
" 'vertically',\n",
" 'bagel',\n",
" 'good',\n",
" 'white',\n",
" 'bread',\n",
" 'loaf',\n",
" 'bag',\n",
" 'milk',\n",
" 'cold',\n",
" 'tasty',\n",
" 'staff',\n",
" 'cleaning',\n",
" 'woman',\n",
" 'present',\n",
" 'kind',\n",
" 'helpful',\n",
" 'gave',\n",
" 'cash',\n",
" 'tip',\n",
" 'later',\n",
" 'left',\n",
" 'one',\n",
" 'room',\n",
" 'cleaning',\n",
" 'staff',\n",
" 'well',\n",
" 'issue',\n",
" 'discussed',\n",
" 'fault',\n",
" 'left',\n",
" 'breakfast',\n",
" 'room',\n",
" 'reflected',\n",
" 'bacon',\n",
" 'fresh',\n",
" 'egg',\n",
" 'everything',\n",
" 'pre',\n",
" 'cooked',\n",
" 'dumped',\n",
" 'container',\n",
" 'various',\n",
" 'cheese',\n",
" 'cold',\n",
" 'cut',\n",
" 'meat',\n",
" 'described',\n",
" 'bare',\n",
" 'basic',\n",
" 'food',\n",
" 'found',\n",
" 'motel',\n",
" 'sigh',\n",
" 'room',\n",
" 'clean',\n",
" 'enough',\n",
" 'issue',\n",
" 'modern',\n",
" 'date',\n",
" 'given',\n",
" 'price',\n",
" 'good',\n",
" 'condition',\n",
" 'clean',\n",
" 'towel',\n",
" 'shower',\n",
" 'fine',\n",
" 'adjusted',\n",
" 'water',\n",
" 'hot',\n",
" 'wi',\n",
" 'fi',\n",
" 'job',\n",
" 'day',\n",
" 'open',\n",
" 'parking',\n",
" 'lot',\n",
" 'alley',\n",
" 'street',\n",
" 'fencing',\n",
" 'security',\n",
" 'system',\n",
" 'secured',\n",
" 'parking',\n",
" 'structure',\n",
" 'lesson',\n",
" 'learned',\n",
" 'get',\n",
" 'pay',\n",
" 'used',\n",
" 'airline',\n",
" 'mile',\n",
" 'location',\n",
" 'night',\n",
" 'stayed',\n",
" 'hampton',\n",
" 'inn',\n",
" 'hilton',\n",
" 'usually',\n",
" 'even',\n",
" 'airline',\n",
" 'mile',\n",
" 'time',\n",
" 'around',\n",
" 'tried',\n",
" 'cut',\n",
" 'budget',\n",
" 'since',\n",
" 'seattle',\n",
" 'paid',\n",
" 'price',\n",
" 'happen',\n",
" 'best',\n",
" 'western',\n",
" 'jm',\n",
" 'oregon',\n",
" 'family',\n",
" 'stayed',\n",
" 'two',\n",
" 'night',\n",
" 'liked',\n",
" 'central',\n",
" 'location',\n",
" 'walked',\n",
" 'downtown',\n",
" 'next',\n",
" 'morning',\n",
" 'took',\n",
" 'cab',\n",
" 'ride',\n",
" 'pike',\n",
" 'place',\n",
" 'actually',\n",
" 'cheaper',\n",
" 'took',\n",
" 'bus',\n",
" 'staff',\n",
" 'friendly',\n",
" 'helpfull',\n",
" 'especially',\n",
" 'young',\n",
" 'man',\n",
" 'checked',\n",
" 'u',\n",
" 'thursday',\n",
" 'evening',\n",
" 'loved',\n",
" 'continental',\n",
" 'buffet',\n",
" 'breakfast',\n",
" 'included',\n",
" 'stay',\n",
" 'offer',\n",
" 'huge',\n",
" 'varriety',\n",
" 'choice',\n",
" 'fresh',\n",
" 'waffle',\n",
" 'fruit',\n",
" 'yogurt',\n",
" 'egg',\n",
" 'ham',\n",
" 'wife',\n",
" 'find',\n",
" 'convienant',\n",
" 'child',\n",
" 'love',\n",
" 'choice',\n",
" 'ok',\n",
" 'kind',\n",
" 'know',\n",
" 'getting',\n",
" 'pay',\n",
" 'little',\n",
" 'hotel',\n",
" 'location',\n",
" 'hotel',\n",
" 'central',\n",
" 'action',\n",
" 'best',\n",
" 'part',\n",
" 'hotel',\n",
" 'location',\n",
" 'walked',\n",
" 'pioneer',\n",
" 'square',\n",
" 'lake',\n",
" 'union',\n",
" 'westlake',\n",
" 'center',\n",
" 'freemont',\n",
" 'quite',\n",
" 'hike',\n",
" 'nice',\n",
" 'walk',\n",
" 'along',\n",
" 'lake',\n",
" 'along',\n",
" 'point',\n",
" 'reach',\n",
" 'seattle',\n",
" 'downtown',\n",
" 'hot',\n",
" 'spot',\n",
" 'easily',\n",
" 'love',\n",
" 'public',\n",
" 'transportation',\n",
" 'seattle',\n",
" 'particularly',\n",
" 'light',\n",
" 'rail',\n",
" 'airport',\n",
" 'downtown',\n",
" 'hotel',\n",
" 'take',\n",
" 'light',\n",
" 'rail',\n",
" 'sea',\n",
" 'last',\n",
" 'stop',\n",
" 'westlake',\n",
" 'still',\n",
" 'mile',\n",
" 'walk',\n",
" 'lot',\n",
" 'baggage',\n",
" 'biggest',\n",
" 'drawback',\n",
" 'location',\n",
" 'three',\n",
" 'option',\n",
" 'westlake',\n",
" 'used',\n",
" 'light',\n",
" 'rail',\n",
" 'get',\n",
" 'take',\n",
" 'taxi',\n",
" 'expensive',\n",
" 'since',\n",
" 'short',\n",
" 'hop',\n",
" 'may',\n",
" 'best',\n",
" 'lot',\n",
" 'bag',\n",
" 'hop',\n",
" 'south',\n",
" 'lake',\n",
" 'union',\n",
" 'transit',\n",
" 'street',\n",
" 'car',\n",
" 'south',\n",
" 'westlake',\n",
" 'get',\n",
" 'walk',\n",
" 'short',\n",
" 'way',\n",
" 'street',\n",
" 'hotel',\n",
" 'pack',\n",
" 'light',\n",
" 'walk',\n",
" 'westlake',\n",
" 'next',\n",
" 'best',\n",
" 'thing',\n",
" 'people',\n",
" 'staff',\n",
" 'nice',\n",
" 'attentive',\n",
" 'toilet',\n",
" 'broke',\n",
" 'day',\n",
" 'seven',\n",
" 'day',\n",
" 'stay',\n",
" 'fixed',\n",
" 'quickly',\n",
" 'room',\n",
" 'seemed',\n",
" 'cleaned',\n",
" 'reasonably',\n",
" 'well',\n",
" 'breakfast',\n",
" 'bar',\n",
" 'adequate',\n",
" 'typical',\n",
" 'free',\n",
" 'breakfast',\n",
" 'food',\n",
" 'open',\n",
" 'exactly',\n",
" 'time',\n",
" 'one',\n",
" 'minute',\n",
" 'early',\n",
" 'head',\n",
" 'bit',\n",
" 'early',\n",
" 'get',\n",
" 'jump',\n",
" 'thing',\n",
" 'hallway',\n",
" 'floor',\n",
" 'stank',\n",
" 'idea',\n",
" 'stench',\n",
" 'first',\n",
" 'arrived',\n",
" 'concerned',\n",
" 'room',\n",
" 'smelling',\n",
" 'like',\n",
" 'room',\n",
" 'smell',\n",
" 'hallway',\n",
" 'held',\n",
" 'breath',\n",
" 'went',\n",
" 'problem',\n",
" 'solved',\n",
" 'room',\n",
" 'noise',\n",
" 'fairly',\n",
" 'high',\n",
" 'needed',\n",
" 'use',\n",
" 'earplug',\n",
" 'wall',\n",
" 'seem',\n",
" 'thin',\n",
" 'outside',\n",
" 'room',\n",
" 'lot',\n",
" 'siren',\n",
" 'area',\n",
" 'night',\n",
" 'long',\n",
" 'know',\n",
" 'group',\n",
" 'young',\n",
" 'kid',\n",
" 'arrived',\n",
" 'partway',\n",
" 'week',\n",
" 'antic',\n",
" 'also',\n",
" 'added',\n",
" 'ambient',\n",
" 'noise',\n",
" 'inside',\n",
" 'temperature',\n",
" 'control',\n",
" 'room',\n",
" 'cooler',\n",
" 'heater',\n",
" 'seem',\n",
" 'hold',\n",
" 'steady',\n",
" 'temp',\n",
" 'wake',\n",
" 'night',\n",
" 'either',\n",
" 'roasting',\n",
" 'freezing',\n",
" 'setting',\n",
" 'light',\n",
" 'invasion',\n",
" 'hallway',\n",
" 'high',\n",
" 'door',\n",
" 'fit',\n",
" 'tightly',\n",
" 'frame',\n",
" 'allowed',\n",
" 'lot',\n",
" 'hallway',\n",
" 'light',\n",
" 'room',\n",
" 'thumb',\n",
" 'squarely',\n",
" 'middle',\n",
" 'know',\n",
" 'getting',\n",
" 'accept',\n",
" 'downside',\n",
" 'cheap',\n",
" 'downtown',\n",
" 'seattle',\n",
" 'room',\n",
" 'place',\n",
" 'good',\n",
" 'value',\n",
" 'set',\n",
" 'expectation',\n",
" 'appropriately',\n",
" 'hotel',\n",
" 'close',\n",
" 'seattle',\n",
" 'space',\n",
" 'needle',\n",
" 'walking',\n",
" 'distance',\n",
" 'many',\n",
" 'downtown',\n",
" 'seattle',\n",
" 'attraction',\n",
" 'offer',\n",
" 'free',\n",
" 'wifi',\n",
" 'breakfast',\n",
" 'make',\n",
" 'great',\n",
" 'deal',\n",
" 'breakfast',\n",
" 'better',\n",
" 'expected',\n",
" 'assortment',\n",
" 'cereal',\n",
" 'oatmeal',\n",
" 'waffle',\n",
" 'fruit',\n",
" 'various',\n",
" 'item',\n",
" 'however',\n",
" 'room',\n",
" 'less',\n",
" 'expected',\n",
" 'first',\n",
" 'room',\n",
" 'third',\n",
" 'floor',\n",
" 'horrible',\n",
" 'experience',\n",
" 'taking',\n",
" 'shower',\n",
" 'heat',\n",
" 'triggered',\n",
" 'smoke',\n",
" 'detector',\n",
" 'start',\n",
" 'ringing',\n",
" 'run',\n",
" 'shower',\n",
" 'throw',\n",
" 'clothes',\n",
" 'go',\n",
" 'front',\n",
" 'desk',\n",
" 'get',\n",
" 'new',\n",
" 'room',\n",
" 'oh',\n",
" 'soap',\n",
" 'shampoo',\n",
" 'conditioner',\n",
" 'come',\n",
" 'standard',\n",
" 'small',\n",
" 'bottle',\n",
" 'see',\n",
" 'hotel',\n",
" 'big',\n",
" 'dispenser',\n",
" 'attached',\n",
" 'shower',\n",
" 'know',\n",
" 'putting',\n",
" 'seem',\n",
" 'sanitary',\n",
" 'second',\n",
" 'room',\n",
" 'worked',\n",
" 'ok',\n",
" 'stay',\n",
" 'seattle',\n",
" 'would',\n",
" 'go',\n",
" 'somewhere',\n",
" 'else',\n",
" 'bit',\n",
" 'nicer',\n",
" 'pretty',\n",
" 'full',\n",
" 'breakfast',\n",
" 'bar',\n",
" 'quiet',\n",
" 'location',\n",
" 'denny',\n",
" 'way',\n",
" 'close',\n",
" 'jazz',\n",
" 'alley',\n",
" 'many',\n",
" 'good',\n",
" 'restaurant',\n",
" 'make',\n",
" 'hotel',\n",
" 'great',\n",
" 'plus',\n",
" 'three',\n",
" 'block',\n",
" 'whole',\n",
" 'food',\n",
" 'gallery',\n",
" 'honeychurch',\n",
" 'booked',\n",
" 'night',\n",
" 'hotel',\n",
" 'people',\n",
" 'friend',\n",
" 'room',\n",
" 'queen',\n",
" 'bed',\n",
" 'room',\n",
" 'bf',\n",
" 'queen',\n",
" 'bed',\n",
" 'sheet',\n",
" 'clean',\n",
" 'bed',\n",
" 'comfortable',\n",
" 'room',\n",
" 'tv',\n",
" 'c',\n",
" 'safety',\n",
" 'box',\n",
" 'hair',\n",
" 'dryer',\n",
" 'bathroom',\n",
" 'also',\n",
" 'clean',\n",
" 'soap',\n",
" 'shampoo',\n",
" 'dispenser',\n",
" 'room',\n",
" 'spacious',\n",
" 'getting',\n",
" 'ready',\n",
" 'freak',\n",
" 'night',\n",
" 'concert',\n",
" 'seattle',\n",
" 'mile',\n",
" 'wamu',\n",
" 'theater',\n",
" 'front',\n",
" 'desk',\n",
" 'person',\n",
" 'named',\n",
" 'chris',\n",
" 'helpful',\n",
" 'let',\n",
" 'u',\n",
" 'know',\n",
" 'go',\n",
" 'breakfast',\n",
" 'morning',\n",
" 'seemed',\n",
" 'nice',\n",
" 'helpful',\n",
" 'overall',\n",
" 'guest',\n",
" 'coming',\n",
" 'halloween',\n",
" 'weekend',\n",
" 'hotel',\n",
" 'also',\n",
" 'offer',\n",
" 'continental',\n",
" 'breakfast',\n",
" 'friend',\n",
" 'said',\n",
" 'waffle',\n",
" 'good',\n",
" 'parking',\n",
" 'per',\n",
" 'car',\n",
" 'felt',\n",
" 'safe',\n",
" 'knowing',\n",
" 'going',\n",
" 'get',\n",
" 'ticket',\n",
" 'felt',\n",
" 'like',\n",
" 'car',\n",
" 'get',\n",
" 'broken',\n",
" 'would',\n",
" 'recommend',\n",
" 'staying',\n",
" 'couple',\n",
" 'night',\n",
" 'need',\n",
" 'something',\n",
" 'basic',\n",
" 'expensive',\n",
" 'clean',\n",
" 'close',\n",
" 'restaurant',\n",
" 'etc',\n",
" 'also',\n",
" 'good',\n",
" 'party',\n",
" 'spot',\n",
" 'able',\n",
" 'get',\n",
" 'friend',\n",
" 'take',\n",
" 'room',\n",
" 'next',\n",
" 'lot',\n",
" 'fun',\n",
" 'thank',\n",
" 'best',\n",
" 'western',\n",
" 'loyal',\n",
" 'inn',\n",
" 'impressed',\n",
" 'hotel',\n",
" 'seattle',\n",
" 'probably',\n",
" 'look',\n",
" 'elsewhere',\n",
" 'return',\n",
" 'pro',\n",
" 'parking',\n",
" 'within',\n",
" 'walking',\n",
" 'distance',\n",
" 'downtown',\n",
" ...],\n",
" ['beautiful',\n",
" 'view',\n",
" 'space',\n",
" 'needle',\n",
" 'especially',\n",
" 'night',\n",
" 'like',\n",
" 'photography',\n",
" 'ask',\n",
" 'room',\n",
" 'view',\n",
" 'staff',\n",
" 'great',\n",
" 'local',\n",
" 'restuarant',\n",
" 'excellent',\n",
" 'secure',\n",
" 'parking',\n",
" 'plus',\n",
" 'free',\n",
" 'wi',\n",
" 'fi',\n",
" 'issue',\n",
" 'waking',\n",
" 'conference',\n",
" 'call',\n",
" 'could',\n",
" 'find',\n",
" 'internet',\n",
" 'password',\n",
" 'called',\n",
" 'front',\n",
" 'desk',\n",
" 'man',\n",
" 'duty',\n",
" 'would',\n",
" 'give',\n",
" 'insisited',\n",
" 'come',\n",
" 'get',\n",
" 'person',\n",
" 'tried',\n",
" 'convince',\n",
" 'dressed',\n",
" 'claimed',\n",
" 'policy',\n",
" 'guest',\n",
" 'come',\n",
" 'collect',\n",
" 'password',\n",
" 'desk',\n",
" 'got',\n",
" 'dressed',\n",
" 'went',\n",
" 'downstairs',\n",
" 'get',\n",
" 'ridiculous',\n",
" 'seriously',\n",
" 'irritated',\n",
" 'anyway',\n",
" 'spoke',\n",
" 'day',\n",
" 'staff',\n",
" 'seemed',\n",
" 'shocked',\n",
" 'hotel',\n",
" 'policy',\n",
" 'keep',\n",
" 'code',\n",
" 'safe',\n",
" 'intending',\n",
" 'see',\n",
" 'king',\n",
" 'tutankhamen',\n",
" 'treasure',\n",
" 'pacific',\n",
" 'science',\n",
" 'center',\n",
" 'leaf',\n",
" 'january',\n",
" 'time',\n",
" 'getting',\n",
" 'short',\n",
" 'decided',\n",
" 'better',\n",
" 'purchase',\n",
" 'vip',\n",
" 'ticket',\n",
" 'go',\n",
" 'specific',\n",
" 'time',\n",
" 'stand',\n",
" 'line',\n",
" 'opted',\n",
" 'hotel',\n",
" 'due',\n",
" 'proximity',\n",
" 'seattle',\n",
" 'center',\n",
" 'dissapointed',\n",
" 'secure',\n",
" 'underground',\n",
" 'parking',\n",
" 'space',\n",
" 'needle',\n",
" 'view',\n",
" 'king',\n",
" 'room',\n",
" 'pleased',\n",
" 'hotel',\n",
" 'bit',\n",
" 'older',\n",
" 'well',\n",
" 'kept',\n",
" 'updated',\n",
" 'furniture',\n",
" 'wise',\n",
" 'well',\n",
" 'room',\n",
" 'adjoining',\n",
" 'room',\n",
" 'group',\n",
" 'next',\n",
" 'door',\n",
" 'bit',\n",
" 'loud',\n",
" 'think',\n",
" 'door',\n",
" 'thick',\n",
" 'enough',\n",
" 'sound',\n",
" 'proof',\n",
" 'enough',\n",
" 'two',\n",
" 'room',\n",
" 'hotel',\n",
" 'staff',\n",
" 'efficient',\n",
" 'helpful',\n",
" 'package',\n",
" 'came',\n",
" 'free',\n",
" 'breakfast',\n",
" 'brella',\n",
" 'restaurant',\n",
" 'inside',\n",
" 'hotel',\n",
" 'passed',\n",
" 'breakfast',\n",
" 'nothing',\n",
" 'write',\n",
" 'home',\n",
" 'much',\n",
" 'better',\n",
" 'breakfast',\n",
" 'hotel',\n",
" 'included',\n",
" 'cost',\n",
" 'room',\n",
" 'feel',\n",
" 'sorry',\n",
" 'people',\n",
" 'paying',\n",
" 'breakfast',\n",
" 'top',\n",
" 'cost',\n",
" 'room',\n",
" 'offering',\n",
" 'much',\n",
" 'different',\n",
" 'hotel',\n",
" 'good',\n",
" 'sausage',\n",
" 'slimy',\n",
" 'egg',\n",
" 'stiff',\n",
" 'dry',\n",
" 'hash',\n",
" 'brown',\n",
" 'slimy',\n",
" 'good',\n",
" 'thing',\n",
" 'waffle',\n",
" 'made',\n",
" 'hot',\n",
" 'spot',\n",
" 'blessed',\n",
" 'decent',\n",
" 'weather',\n",
" 'another',\n",
" 'surprise',\n",
" 'seattle',\n",
" 'center',\n",
" 'dale',\n",
" 'chihuly',\n",
" 'garden',\n",
" 'glass',\n",
" 'exhibit',\n",
" 'added',\n",
" 'year',\n",
" 'arrived',\n",
" 'saw',\n",
" 'garden',\n",
" 'bit',\n",
" 'sunlight',\n",
" 'left',\n",
" 'experienced',\n",
" 'dark',\n",
" 'fantastic',\n",
" 'hotel',\n",
" 'excellent',\n",
" 'location',\n",
" 'would',\n",
" 'recommend',\n",
" 'space',\n",
" 'needle',\n",
" 'view',\n",
" 'however',\n",
" 'end',\n",
" 'hallway',\n",
" 'get',\n",
" 'small',\n",
" 'window',\n",
" 'offer',\n",
" 'free',\n",
" 'breakfast',\n",
" 'buffet',\n",
" 'best',\n",
" 'western',\n",
" 'member',\n",
" 'otherwise',\n",
" 'pay',\n",
" 'good',\n",
" 'buffet',\n",
" 'excellent',\n",
" 'seating',\n",
" 'v',\n",
" 'best',\n",
" 'western',\n",
" 'room',\n",
" 'nice',\n",
" 'pay',\n",
" 'resonable',\n",
" 'compared',\n",
" 'lodging',\n",
" 'closer',\n",
" 'downtown',\n",
" 'walking',\n",
" 'distant',\n",
" 'monorail',\n",
" 'take',\n",
" 'downtown',\n",
" 'however',\n",
" 'plan',\n",
" 'driving',\n",
" 'around',\n",
" 'may',\n",
" 'want',\n",
" 'look',\n",
" 'another',\n",
" 'location',\n",
" 'parking',\n",
" 'limited',\n",
" 'anything',\n",
" 'going',\n",
" 'seattle',\n",
" 'may',\n",
" 'find',\n",
" 'street',\n",
" 'parking',\n",
" 'block',\n",
" 'away',\n",
" 'left',\n",
" 'one',\n",
" 'night',\n",
" 'parking',\n",
" 'full',\n",
" 'counter',\n",
" 'personnel',\n",
" 'suggested',\n",
" 'lot',\n",
" 'two',\n",
" 'block',\n",
" 'charged',\n",
" 'hour',\n",
" 'happy',\n",
" 'camper',\n",
" 'walking',\n",
" 'issue',\n",
" 'defiantly',\n",
" 'would',\n",
" 'worked',\n",
" 'well',\n",
" 'accommodation',\n",
" 'wall',\n",
" 'thin',\n",
" 'unless',\n",
" 'turn',\n",
" 'heater',\n",
" 'feel',\n",
" 'like',\n",
" 'sleeping',\n",
" 'sheet',\n",
" 'light',\n",
" 'blanket',\n",
" 'pull',\n",
" 'closet',\n",
" 'suggest',\n",
" 'hotel',\n",
" 'restaurant',\n",
" 'front',\n",
" 'desk',\n",
" 'steered',\n",
" 'u',\n",
" 'better',\n",
" 'food',\n",
" 'husband',\n",
" 'stayed',\n",
" 'saturday',\n",
" 'would',\n",
" 'recommend',\n",
" 'others',\n",
" 'staff',\n",
" 'friendly',\n",
" 'quiet',\n",
" 'relaxing',\n",
" 'room',\n",
" 'clean',\n",
" 'bed',\n",
" 'comfortable',\n",
" 'good',\n",
" 'price',\n",
" 'close',\n",
" 'space',\n",
" 'needle',\n",
" 'would',\n",
" 'definately',\n",
" 'stay',\n",
" 'next',\n",
" 'time',\n",
" 'go',\n",
" 'seattle',\n",
" 'overall',\n",
" 'great',\n",
" 'hotel',\n",
" 'dong',\n",
" 'quite',\n",
" 'bit',\n",
" 'traveling',\n",
" 'since',\n",
" 'retired',\n",
" 'end',\n",
" 'july',\n",
" 'best',\n",
" 'wester',\n",
" 'plus',\n",
" 'executive',\n",
" 'inn',\n",
" 'one',\n",
" 'favorite',\n",
" 'staff',\n",
" 'attitude',\n",
" 'make',\n",
" 'stay',\n",
" 'great',\n",
" 'experience',\n",
" 'wonderful',\n",
" 'time',\n",
" 'thanks',\n",
" 'helpful',\n",
" 'staff',\n",
" 'te',\n",
" 'great',\n",
" 'giving',\n",
" 'u',\n",
" 'direction',\n",
" 'advise',\n",
" 'go',\n",
" 'get',\n",
" 'seattle',\n",
" 'awesome',\n",
" 'location',\n",
" 'great',\n",
" 'view',\n",
" 'room',\n",
" 'clean',\n",
" 'well',\n",
" 'stocked',\n",
" 'wifi',\n",
" 'flawless',\n",
" 'short',\n",
" 'one',\n",
" 'night',\n",
" 'stay',\n",
" 'average',\n",
" 'nothing',\n",
" 'complain',\n",
" 'nothing',\n",
" 'brag',\n",
" 'either',\n",
" 'feel',\n",
" 'plus',\n",
" 'status',\n",
" 'hotel',\n",
" 'marketing',\n",
" 'stretch',\n",
" 'give',\n",
" 'credit',\n",
" 'property',\n",
" 'location',\n",
" 'location',\n",
" 'location',\n",
" 'easy',\n",
" 'walk',\n",
" 'many',\n",
" 'seattle',\n",
" 'attraction',\n",
" 'around',\n",
" 'space',\n",
" 'needle',\n",
" 'reserved',\n",
" 'july',\n",
" 'occupancy',\n",
" 'room',\n",
" 'queen',\n",
" 'bed',\n",
" 'traveling',\n",
" 'adult',\n",
" 'son',\n",
" 'november',\n",
" 'concert',\n",
" 'key',\n",
" 'arena',\n",
" 'good',\n",
" 'thing',\n",
" 'say',\n",
" 'close',\n",
" 'handy',\n",
" 'concert',\n",
" 'arrived',\n",
" 'check',\n",
" 'told',\n",
" 'room',\n",
" 'bed',\n",
" 'roll',\n",
" 'away',\n",
" 'sent',\n",
" 'saddest',\n",
" 'bed',\n",
" 'ever',\n",
" 'saw',\n",
" 'delivered',\n",
" 'rude',\n",
" 'housekeeper',\n",
" 'acted',\n",
" 'mad',\n",
" 'bring',\n",
" 'u',\n",
" 'bed',\n",
" 'extra',\n",
" 'blanket',\n",
" 'pillow',\n",
" 'even',\n",
" 'offer',\n",
" 'set',\n",
" 'bed',\n",
" 'room',\n",
" 'floor',\n",
" 'elevator',\n",
" 'noisy',\n",
" 'setting',\n",
" 'heard',\n",
" 'guest',\n",
" 'housekeeper',\n",
" 'coming',\n",
" 'going',\n",
" 'view',\n",
" 'roof',\n",
" 'top',\n",
" 'neighboring',\n",
" 'building',\n",
" 'lower',\n",
" 'parking',\n",
" 'area',\n",
" 'good',\n",
" 'place',\n",
" 'nearby',\n",
" 'eat',\n",
" 'nice',\n",
" 'shower',\n",
" 'lot',\n",
" 'water',\n",
" 'pressure',\n",
" 'though',\n",
" 'tub',\n",
" 'drain',\n",
" 'stayed',\n",
" 'night',\n",
" 'went',\n",
" 'rush',\n",
" 'concert',\n",
" 'key',\n",
" 'arena',\n",
" 'excellent',\n",
" 'concert',\n",
" 'way',\n",
" 'location',\n",
" 'perfect',\n",
" 'contrary',\n",
" 'review',\n",
" 'trouble',\n",
" 'finding',\n",
" 'excellent',\n",
" 'view',\n",
" 'space',\n",
" 'needle',\n",
" 'floor',\n",
" 'room',\n",
" 'yes',\n",
" 'older',\n",
" 'hotel',\n",
" 'need',\n",
" 'reno',\n",
" 'understand',\n",
" 'working',\n",
" 'room',\n",
" 'plenty',\n",
" 'space',\n",
" 'everything',\n",
" 'worked',\n",
" 'well',\n",
" 'main',\n",
" 'issue',\n",
" 'noise',\n",
" 'coming',\n",
" 'guest',\n",
" 'next',\n",
" 'door',\n",
" 'one',\n",
" 'night',\n",
" 'child',\n",
" 'loud',\n",
" 'next',\n",
" 'someone',\n",
" 'talking',\n",
" 'loud',\n",
" 'morning',\n",
" 'may',\n",
" 'adjoining',\n",
" 'room',\n",
" 'next',\n",
" 'time',\n",
" 'would',\n",
" 'request',\n",
" 'room',\n",
" 'connecting',\n",
" 'door',\n",
" 'lesson',\n",
" 'learned',\n",
" 'breakfast',\n",
" 'better',\n",
" 'many',\n",
" 'get',\n",
" 'best',\n",
" 'western',\n",
" 'plenty',\n",
" 'choice',\n",
" 'get',\n",
" 'bored',\n",
" 'day',\n",
" 'stay',\n",
" 'food',\n",
" 'restaurant',\n",
" 'evening',\n",
" 'rather',\n",
" 'bland',\n",
" 'ate',\n",
" 'nice',\n",
" 'fridge',\n",
" 'microwave',\n",
" 'room',\n",
" 'always',\n",
" 'ask',\n",
" 'fridge',\n",
" 'least',\n",
" 'staff',\n",
" 'hotel',\n",
" 'always',\n",
" 'polite',\n",
" 'friendly',\n",
" 'even',\n",
" 'line',\n",
" 'guest',\n",
" 'waiting',\n",
" 'seen',\n",
" 'also',\n",
" 'impressed',\n",
" 'manager',\n",
" 'see',\n",
" 'responds',\n",
" 'review',\n",
" 'doubt',\n",
" 'comment',\n",
" 'suggestion',\n",
" 'future',\n",
" 'bw',\n",
" 'plus',\n",
" 'proper',\n",
" 'glass',\n",
" 'mug',\n",
" 'well',\n",
" 'disposable',\n",
" 'option',\n",
" 'seen',\n",
" 'report',\n",
" 'cleaned',\n",
" 'place',\n",
" 'guest',\n",
" 'wash',\n",
" 'also',\n",
" 'think',\n",
" 'advising',\n",
" 'guest',\n",
" 'room',\n",
" 'connecting',\n",
" 'door',\n",
" 'next',\n",
" 'room',\n",
" 'decide',\n",
" 'whether',\n",
" 'stay',\n",
" 'room',\n",
" 'hotel',\n",
" 'great',\n",
" 'location',\n",
" 'view',\n",
" 'space',\n",
" 'needle',\n",
" 'within',\n",
" 'easy',\n",
" 'walking',\n",
" 'distance',\n",
" 'monorail',\n",
" 'downtown',\n",
" 'service',\n",
" 'patchy',\n",
" 'however',\n",
" 'lobby',\n",
" 'room',\n",
" 'little',\n",
" 'dingy',\n",
" 'need',\n",
" 'modernization',\n",
" 'particularly',\n",
" 'view',\n",
" 'price',\n",
" 'parking',\n",
" 'extra',\n",
" 'also',\n",
" 'get',\n",
" 'rate',\n",
" 'includes',\n",
" 'breakfast',\n",
" 'although',\n",
" 'breakfast',\n",
" 'nothing',\n",
" 'special',\n",
" 'bar',\n",
" 'nice',\n",
" 'selection',\n",
" 'locally',\n",
" 'brewed',\n",
" 'ale',\n",
" 'tap',\n",
" 'wanted',\n",
" 'place',\n",
" 'close',\n",
" 'museum',\n",
" 'attraction',\n",
" 'near',\n",
" 'space',\n",
" 'needle',\n",
" 'took',\n",
" 'advantage',\n",
" 'hotel',\n",
" 'king',\n",
" 'tut',\n",
" 'package',\n",
" 'hotel',\n",
" 'literally',\n",
" 'two',\n",
" 'block',\n",
" 'everything',\n",
" 'price',\n",
" 'better',\n",
" 'others',\n",
" 'checked',\n",
" 'online',\n",
" 'parked',\n",
" 'car',\n",
" 'hotel',\n",
" 'move',\n",
" 'entire',\n",
" 'time',\n",
" 'night',\n",
" 'one',\n",
" 'big',\n",
" 'advantage',\n",
" 'staying',\n",
" 'king',\n",
" 'tut',\n",
" 'package',\n",
" 'gave',\n",
" 'u',\n",
" 'vip',\n",
" 'ticket',\n",
" 'meant',\n",
" 'could',\n",
" 'go',\n",
" 'see',\n",
" 'exhibit',\n",
" 'time',\n",
" 'open',\n",
" 'rather',\n",
" 'date',\n",
" 'time',\n",
" 'specific',\n",
" 'ticket',\n",
" 'motel',\n",
" 'room',\n",
" 'clean',\n",
" 'adequate',\n",
" 'spend',\n",
" 'much',\n",
" 'time',\n",
" 'view',\n",
" 'room',\n",
" 'pretty',\n",
" 'blah',\n",
" 'overlooking',\n",
" 'parking',\n",
" 'lot',\n",
" 'except',\n",
" 'get',\n",
" 'watch',\n",
" 'one',\n",
" 'really',\n",
" 'big',\n",
" 'building',\n",
" 'crane',\n",
" 'operation',\n",
" 'aware',\n",
" 'least',\n",
" 'part',\n",
" 'seattle',\n",
" 'seemed',\n",
" 'construction',\n",
" 'mode',\n",
" 'hotel',\n",
" 'fault',\n",
" 'awakened',\n",
" 'one',\n",
" 'morning',\n",
" 'non',\n",
" 'stop',\n",
" 'jack',\n",
" 'hammering',\n",
" 'street',\n",
" 'even',\n",
" 'earlier',\n",
" 'second',\n",
" 'morning',\n",
" 'arrival',\n",
" 'garbage',\n",
" 'truck',\n",
" 'plus',\n",
" 'side',\n",
" 'room',\n",
" 'refrigerator',\n",
" 'microwave',\n",
" 'arm',\n",
" 'chairm',\n",
" 'bathroom',\n",
" 'tiny',\n",
" 'try',\n",
" 'sit',\n",
" 'toilet',\n",
" 'close',\n",
" 'door',\n",
" 'time',\n",
" 'comment',\n",
" 'maid',\n",
" 'service',\n",
" 'say',\n",
" 'respect',\n",
" 'privacy',\n",
" 'clean',\n",
" 'room',\n",
" 'since',\n",
" 'put',\n",
" 'disturb',\n",
" 'sign',\n",
" 'leave',\n",
" 'u',\n",
" 'note',\n",
" 'day',\n",
" 'telling',\n",
" 'u',\n",
" 'want',\n",
" 'anything',\n",
" 'serviced',\n",
" 'let',\n",
" 'front',\n",
" 'desk',\n",
" 'know',\n",
" 'thought',\n",
" 'nice',\n",
" 'way',\n",
" 'handle',\n",
" 'breakfast',\n",
" 'hotel',\n",
" 'restaurant',\n",
" 'morning',\n",
" 'convenience',\n",
" 'first',\n",
" 'day',\n",
" 'part',\n",
" 'package',\n",
" 'good',\n",
" 'variety',\n",
" 'make',\n",
" 'breakfast',\n",
" 'burrito',\n",
" 'waffle',\n",
" 'oatmeal',\n",
" 'bacon',\n",
" 'etc',\n",
" 'although',\n",
" 'exact',\n",
" 'choice',\n",
" 'day',\n",
" 'got',\n",
" 'little',\n",
" 'boring',\n",
" 'third',\n",
" 'morning',\n",
" 'breakfast',\n",
" 'family',\n",
" 'stay',\n",
" 'another',\n",
" 'hotel',\n",
" 'area',\n",
" 'earlier',\n",
" 'year',\n",
" 'surprised',\n",
" 'air',\n",
" 'conditioning',\n",
" 'hotel',\n",
" 'air',\n",
" 'conditioning',\n",
" 'worked',\n",
" 'fine',\n",
" 'definitely',\n",
" 'adequate',\n",
" 'place',\n",
" 'reasonable',\n",
" 'price',\n",
" 'seattle',\n",
" 'super',\n",
" 'location',\n",
" 'stayed',\n",
" 'three',\n",
" 'night',\n",
" 'enjoyed',\n",
" 'every',\n",
" 'moment',\n",
" 'room',\n",
" 'location',\n",
" 'helpful',\n",
" 'staff',\n",
" 'cleanliness',\n",
" 'value',\n",
" 'comfort',\n",
" 'everything',\n",
" 'spot',\n",
" 'staff',\n",
" 'friendly',\n",
" 'helpful',\n",
" 'highly',\n",
" 'recommended',\n",
" 'return',\n",
" 'wanted',\n",
" 'hotel',\n",
" 'near',\n",
" 'space',\n",
" 'needle',\n",
" 'knew',\n",
" 'traffic',\n",
" 'would',\n",
" 'nite',\n",
" 'mare',\n",
" 'trying',\n",
" 'find',\n",
" 'place',\n",
" 'hard',\n",
" 'check',\n",
" 'horrific',\n",
" 'person',\n",
" 'come',\n",
" 'really',\n",
" 'took',\n",
" 'minute',\n",
" 'hour',\n",
" 'drive',\n",
" 'beyond',\n",
" 'comprehension',\n",
" 'got',\n",
" 'lucky',\n",
" 'got',\n",
" 'room',\n",
" 'view',\n",
" 'without',\n",
" 'pay',\n",
" 'extra',\n",
" 'night',\n",
" 'helped',\n",
" 'little',\n",
" 'bit',\n",
" 'hall',\n",
" 'room',\n",
" 'dirty',\n",
" 'bed',\n",
" 'oh',\n",
" 'goodness',\n",
" 'horrible',\n",
" 'uncomfortable',\n",
" 'son',\n",
" 'said',\n",
" 'felt',\n",
" 'like',\n",
" 'really',\n",
" 'big',\n",
" 'person',\n",
" 'slept',\n",
" 'need',\n",
" 'replaced',\n",
" 'spring',\n",
" 'totally',\n",
" 'broken',\n",
" 'pleased',\n",
" 'breakfast',\n",
" 'day',\n",
" 'paid',\n",
" 'day',\n",
" 'change',\n",
" 'closed',\n",
" 'exactly',\n",
" 'exception',\n",
" 'mon',\n",
" 'afternoon',\n",
" 'thurs',\n",
" 'put',\n",
" 'complaint',\n",
" 'card',\n",
" 'got',\n",
" 'e',\n",
" 'mail',\n",
" 'response',\n",
" 'replied',\n",
" 'back',\n",
" 'nothing',\n",
" 'sure',\n",
" 'management',\n",
" 'anything',\n",
" 'night',\n",
" 'almost',\n",
" 'mortgage',\n",
" 'payment',\n",
" 'thought',\n",
" 'would',\n",
" 'better',\n",
" 'room',\n",
" 'ever',\n",
" 'worried',\n",
" 'next',\n",
" 'night',\n",
" 'best',\n",
" 'western',\n",
" 'portland',\n",
" 'let',\n",
" 'see',\n",
" 'checked',\n",
" 'best',\n",
" 'western',\n",
" 'executive',\n",
" 'part',\n",
" 'blackball',\n",
" 'ferry',\n",
" 'package',\n",
" 'hotel',\n",
" ...],\n",
" ['hotel',\n",
" 'need',\n",
" 'serious',\n",
" 'update',\n",
" 'room',\n",
" 'big',\n",
" 'bed',\n",
" 'comfortable',\n",
" 'carpet',\n",
" 'worn',\n",
" 'hesitate',\n",
" 'walk',\n",
" 'bare',\n",
" 'foot',\n",
" 'wall',\n",
" 'paper',\n",
" 'peeling',\n",
" 'black',\n",
" 'mark',\n",
" 'wall',\n",
" 'door',\n",
" 'disappointing',\n",
" 'frustrating',\n",
" 'thing',\n",
" 'stay',\n",
" 'poor',\n",
" 'water',\n",
" 'pressure',\n",
" 'lukewarm',\n",
" 'water',\n",
" 'driving',\n",
" 'hr',\n",
" 'getting',\n",
" 'late',\n",
" 'looking',\n",
" 'forward',\n",
" 'nice',\n",
" 'hot',\n",
" 'shower',\n",
" 'happen',\n",
" 'glad',\n",
" 'staying',\n",
" 'night',\n",
" 'leaving',\n",
" 'morning',\n",
" 'would',\n",
" 'checked',\n",
" 'gone',\n",
" 'another',\n",
" 'hotel',\n",
" 'nosie',\n",
" 'level',\n",
" 'pretty',\n",
" 'high',\n",
" 'could',\n",
" 'hear',\n",
" 'people',\n",
" 'walking',\n",
" 'hall',\n",
" 'waking',\n",
" 'morning',\n",
" 'alaska',\n",
" 'airline',\n",
" 'provided',\n",
" 'voucher',\n",
" 'comfort',\n",
" 'inn',\n",
" 'delay',\n",
" 'caused',\n",
" 'u',\n",
" 'miss',\n",
" 'last',\n",
" 'leg',\n",
" 'flight',\n",
" 'disappointment',\n",
" 'place',\n",
" 'poor',\n",
" 'condition',\n",
" 'smell',\n",
" 'bad',\n",
" 'front',\n",
" 'lobby',\n",
" 'hallway',\n",
" 'guest',\n",
" 'room',\n",
" 'contacting',\n",
" 'let',\n",
" 'u',\n",
" 'know',\n",
" 'needed',\n",
" 'ride',\n",
" 'airport',\n",
" 'even',\n",
" 'though',\n",
" 'advertise',\n",
" 'pick',\n",
" 'ups',\n",
" 'every',\n",
" 'minute',\n",
" 'still',\n",
" 'took',\n",
" 'minute',\n",
" 'shuttle',\n",
" 'arrived',\n",
" 'place',\n",
" 'less',\n",
" 'minute',\n",
" 'airport',\n",
" 'switch',\n",
" 'room',\n",
" 'housekeeping',\n",
" 'somehow',\n",
" 'missed',\n",
" 'bed',\n",
" 'made',\n",
" 'looked',\n",
" 'like',\n",
" 'pit',\n",
" 'fruit',\n",
" 'bed',\n",
" 'sheet',\n",
" 'gross',\n",
" 'good',\n",
" 'bad',\n",
" 'thing',\n",
" 'hotel',\n",
" 'internet',\n",
" 'terrible',\n",
" 'towel',\n",
" 'good',\n",
" 'water',\n",
" 'pressure',\n",
" 'good',\n",
" 'room',\n",
" 'decent',\n",
" 'size',\n",
" 'nice',\n",
" 'dark',\n",
" 'bed',\n",
" 'comfortable',\n",
" 'staff',\n",
" 'friendly',\n",
" 'location',\n",
" 'convenient',\n",
" 'though',\n",
" 'neighborhood',\n",
" 'seem',\n",
" 'great',\n",
" 'problem',\n",
" 'regarding',\n",
" 'though',\n",
" 'stayed',\n",
" 'two',\n",
" 'night',\n",
" 'visiting',\n",
" 'seattle',\n",
" 'october',\n",
" 'little',\n",
" 'worried',\n",
" 'review',\n",
" 'mixed',\n",
" 'pleased',\n",
" 'found',\n",
" 'room',\n",
" 'large',\n",
" 'immaculate',\n",
" 'comfortable',\n",
" 'everything',\n",
" 'room',\n",
" 'entire',\n",
" 'hotel',\n",
" 'looked',\n",
" 'like',\n",
" 'well',\n",
" 'maintained',\n",
" 'even',\n",
" 'recently',\n",
" 'painted',\n",
" 'walking',\n",
" 'corridor',\n",
" 'room',\n",
" 'rug',\n",
" 'bit',\n",
" 'lint',\n",
" 'always',\n",
" 'hate',\n",
" 'rug',\n",
" 'clean',\n",
" 'wall',\n",
" 'dirty',\n",
" 'might',\n",
" 'well',\n",
" 'stay',\n",
" 'home',\n",
" 'case',\n",
" 'another',\n",
" 'reviewer',\n",
" 'mentioned',\n",
" 'area',\n",
" 'know',\n",
" 'expect',\n",
" 'found',\n",
" 'area',\n",
" 'fine',\n",
" 'busy',\n",
" 'street',\n",
" 'heart',\n",
" 'area',\n",
" 'seattle',\n",
" 'lot',\n",
" 'store',\n",
" 'shop',\n",
" 'along',\n",
" 'avenue',\n",
" 'find',\n",
" 'seedy',\n",
" 'fact',\n",
" 'needed',\n",
" 'use',\n",
" 'room',\n",
" 'key',\n",
" 'use',\n",
" 'elevator',\n",
" 'felt',\n",
" 'safe',\n",
" 'would',\n",
" 'recommend',\n",
" 'hotel',\n",
" 'mixed',\n",
" 'one',\n",
" 'night',\n",
" 'stay',\n",
" 'comfort',\n",
" 'inn',\n",
" 'check',\n",
" 'clerk',\n",
" 'friendly',\n",
" 'although',\n",
" 'next',\n",
" 'day',\n",
" 'clerk',\n",
" 'much',\n",
" 'room',\n",
" 'pretty',\n",
" 'large',\n",
" 'relatively',\n",
" 'clean',\n",
" 'good',\n",
" 'internet',\n",
" 'service',\n",
" 'breakfast',\n",
" 'quite',\n",
" 'offering',\n",
" 'bad',\n",
" 'thing',\n",
" 'location',\n",
" 'choose',\n",
" 'hotel',\n",
" 'visiting',\n",
" 'business',\n",
" 'hotel',\n",
" 'chosen',\n",
" 'neighborhood',\n",
" 'sketchy',\n",
" 'drive',\n",
" 'several',\n",
" 'mile',\n",
" 'nearby',\n",
" 'shopping',\n",
" 'mall',\n",
" 'find',\n",
" 'restaurant',\n",
" 'good',\n",
" 'option',\n",
" 'people',\n",
" 'traveling',\n",
" 'issue',\n",
" 'cleanliness',\n",
" 'room',\n",
" 'mine',\n",
" 'ok',\n",
" 'great',\n",
" 'thing',\n",
" 'seattle',\n",
" 'area',\n",
" 'fast',\n",
" 'neighborhood',\n",
" 'change',\n",
" 'one',\n",
" 'looking',\n",
" 'affordable',\n",
" 'place',\n",
" 'stay',\n",
" 'outside',\n",
" 'spendy',\n",
" 'area',\n",
" 'comfort',\n",
" 'suite',\n",
" 'work',\n",
" 'stayed',\n",
" 'suite',\n",
" 'less',\n",
" 'single',\n",
" 'double',\n",
" 'bed',\n",
" 'mile',\n",
" 'closer',\n",
" 'space',\n",
" 'needle',\n",
" 'work',\n",
" 'sure',\n",
" 'drive',\n",
" 'may',\n",
" 'leave',\n",
" 'wondering',\n",
" 'headed',\n",
" 'aurora',\n",
" 'ave',\n",
" 'rest',\n",
" 'assured',\n",
" 'get',\n",
" 'work',\n",
" 'nice',\n",
" 'stay',\n",
" 'ken',\n",
" 'arrived',\n",
" 'midnight',\n",
" 'greeted',\n",
" 'friendly',\n",
" 'welcoming',\n",
" 'smile',\n",
" 'although',\n",
" 'way',\n",
" 'past',\n",
" 'normal',\n",
" 'person',\n",
" 'bed',\n",
" 'time',\n",
" 'gentleman',\n",
" 'checking',\n",
" 'u',\n",
" 'took',\n",
" 'time',\n",
" 'help',\n",
" 'u',\n",
" 'rate',\n",
" 'since',\n",
" 'staying',\n",
" 'long',\n",
" 'period',\n",
" 'time',\n",
" 'also',\n",
" 'helpful',\n",
" 'giving',\n",
" 'u',\n",
" 'suggestion',\n",
" 'really',\n",
" 'late',\n",
" 'night',\n",
" 'bite',\n",
" 'eat',\n",
" 'retired',\n",
" 'night',\n",
" 'room',\n",
" 'little',\n",
" 'small',\n",
" 'fine',\n",
" 'husband',\n",
" 'able',\n",
" 'hear',\n",
" 'people',\n",
" 'u',\n",
" 'walking',\n",
" 'around',\n",
" 'disruptive',\n",
" 'time',\n",
" 'parking',\n",
" 'lot',\n",
" 'little',\n",
" 'small',\n",
" 'well',\n",
" 'fine',\n",
" 'full',\n",
" 'size',\n",
" 'rental',\n",
" 'car',\n",
" 'location',\n",
" 'good',\n",
" 'easy',\n",
" 'access',\n",
" 'direction',\n",
" 'short',\n",
" 'drive',\n",
" 'away',\n",
" 'main',\n",
" 'seattle',\n",
" 'attraction',\n",
" 'visited',\n",
" 'watch',\n",
" 'cousin',\n",
" 'play',\n",
" 'football',\n",
" 'uw',\n",
" 'frequented',\n",
" 'university',\n",
" 'district',\n",
" 'close',\n",
" 'distance',\n",
" 'well',\n",
" 'pleasant',\n",
" 'stay',\n",
" 'would',\n",
" 'given',\n",
" 'excellent',\n",
" 'rating',\n",
" 'noise',\n",
" 'people',\n",
" 'walking',\n",
" 'u',\n",
" 'husband',\n",
" 'definitely',\n",
" 'staying',\n",
" 'future',\n",
" 'visit',\n",
" 'seattle',\n",
" 'looking',\n",
" 'good',\n",
" 'hotel',\n",
" 'without',\n",
" 'paying',\n",
" 'arm',\n",
" 'leg',\n",
" 'chose',\n",
" 'comfort',\n",
" 'inn',\n",
" 'aurora',\n",
" 'ave',\n",
" 'night',\n",
" 'tax',\n",
" 'etc',\n",
" 'easy',\n",
" 'drive',\n",
" 'airport',\n",
" 'route',\n",
" 'fact',\n",
" 'took',\n",
" 'u',\n",
" 'minute',\n",
" 'get',\n",
" 'airport',\n",
" 'flight',\n",
" 'left',\n",
" 'front',\n",
" 'desk',\n",
" 'staff',\n",
" 'great',\n",
" 'quick',\n",
" 'check',\n",
" 'room',\n",
" 'better',\n",
" 'average',\n",
" 'room',\n",
" 'clean',\n",
" 'neat',\n",
" 'time',\n",
" 'stayed',\n",
" 'turn',\n",
" 'booked',\n",
" 'first',\n",
" 'last',\n",
" 'night',\n",
" 'wa',\n",
" 'also',\n",
" 'great',\n",
" 'breakfast',\n",
" 'buffet',\n",
" 'likely',\n",
" 'return',\n",
" 'visiting',\n",
" 'future',\n",
" 'wife',\n",
" 'booked',\n",
" 'hotel',\n",
" 'online',\n",
" 'website',\n",
" 'misleading',\n",
" 'hotel',\n",
" 'middle',\n",
" 'industrial',\n",
" 'area',\n",
" 'nowhere',\n",
" 'near',\n",
" 'site',\n",
" 'want',\n",
" 'see',\n",
" 'old',\n",
" 'run',\n",
" 'place',\n",
" 'poor',\n",
" 'condition',\n",
" 'fit',\n",
" 'anyone',\n",
" 'like',\n",
" 'comfortable',\n",
" 'area',\n",
" 'poor',\n",
" 'seedy',\n",
" 'want',\n",
" 'stay',\n",
" 'couple',\n",
" 'bring',\n",
" 'kid',\n",
" 'way',\n",
" 'stay',\n",
" 'away',\n",
" 'one',\n",
" 'worth',\n",
" 'time',\n",
" 'stayed',\n",
" 'one',\n",
" 'night',\n",
" 'staff',\n",
" 'reception',\n",
" 'welcome',\n",
" 'room',\n",
" 'less',\n",
" 'clean',\n",
" 'breafast',\n",
" 'guest',\n",
" 'talking',\n",
" 'tv',\n",
" 'loud',\n",
" 'background',\n",
" 'music',\n",
" 'hard',\n",
" 'chat',\n",
" 'couple',\n",
" 'gym',\n",
" 'closed',\n",
" 'nothing',\n",
" 'worked',\n",
" 'bit',\n",
" 'dirty',\n",
" 'complaint',\n",
" 'hotel',\n",
" 'check',\n",
" 'quick',\n",
" 'courteous',\n",
" 'paid',\n",
" 'including',\n",
" 'tax',\n",
" 'good',\n",
" 'sized',\n",
" 'room',\n",
" 'comfy',\n",
" 'king',\n",
" 'bed',\n",
" 'nice',\n",
" 'clean',\n",
" 'wi',\n",
" 'fi',\n",
" 'worked',\n",
" 'without',\n",
" 'hitch',\n",
" 'breakfast',\n",
" 'better',\n",
" 'hotel',\n",
" 'average',\n",
" 'egg',\n",
" 'sausage',\n",
" 'waffle',\n",
" 'located',\n",
" 'busy',\n",
" 'north',\n",
" 'aurora',\n",
" 'ave',\n",
" 'noise',\n",
" 'problem',\n",
" 'feel',\n",
" 'bad',\n",
" 'area',\n",
" 'typical',\n",
" 'busy',\n",
" 'commercial',\n",
" 'strip',\n",
" 'average',\n",
" 'looking',\n",
" 'residential',\n",
" 'area',\n",
" 'starting',\n",
" 'one',\n",
" 'block',\n",
" 'east',\n",
" 'west',\n",
" 'aurora',\n",
" 'wife',\n",
" 'walk',\n",
" 'three',\n",
" 'mile',\n",
" 'day',\n",
" 'exercise',\n",
" 'walked',\n",
" 'along',\n",
" 'street',\n",
" 'paralleling',\n",
" 'aurora',\n",
" 'roughly',\n",
" 'concern',\n",
" 'glitzy',\n",
" 'hotel',\n",
" 'served',\n",
" 'purpose',\n",
" 'would',\n",
" 'return',\n",
" 'wow',\n",
" 'start',\n",
" 'hotel',\n",
" 'stayed',\n",
" 'two',\n",
" 'night',\n",
" 'ago',\n",
" 'firstly',\n",
" 'area',\n",
" 'little',\n",
" 'rundown',\n",
" 'super',\n",
" 'unsafe',\n",
" 'per',\n",
" 'se',\n",
" 'prefer',\n",
" 'stay',\n",
" 'thing',\n",
" 'around',\n",
" 'though',\n",
" 'review',\n",
" 'would',\n",
" 'think',\n",
" 'check',\n",
" 'fine',\n",
" 'super',\n",
" 'friendly',\n",
" 'fine',\n",
" 'except',\n",
" 'two',\n",
" 'car',\n",
" 'asking',\n",
" 'another',\n",
" 'parking',\n",
" 'pas',\n",
" 'saying',\n",
" 'lot',\n",
" 'get',\n",
" 'full',\n",
" 'check',\n",
" 'gentleman',\n",
" 'basically',\n",
" 'ignored',\n",
" 'request',\n",
" 'second',\n",
" 'parking',\n",
" 'pas',\n",
" 'like',\n",
" 'social',\n",
" 'skill',\n",
" 'deal',\n",
" 'saying',\n",
" 'odd',\n",
" 'get',\n",
" 'room',\n",
" 'huge',\n",
" 'way',\n",
" 'probably',\n",
" 'good',\n",
" 'thing',\n",
" 'say',\n",
" 'hotel',\n",
" 'pubic',\n",
" 'head',\n",
" 'hair',\n",
" 'bathroom',\n",
" 'tub',\n",
" 'behind',\n",
" 'bathroom',\n",
" 'door',\n",
" 'like',\n",
" 'swept',\n",
" 'day',\n",
" 'hair',\n",
" 'bed',\n",
" 'old',\n",
" 'washed',\n",
" 'blood',\n",
" 'stain',\n",
" 'absolute',\n",
" 'worst',\n",
" 'yes',\n",
" 'worse',\n",
" 'someone',\n",
" 'else',\n",
" 'pubes',\n",
" 'turned',\n",
" 'shower',\n",
" 'water',\n",
" 'sprayed',\n",
" 'everywhere',\n",
" 'sprayed',\n",
" 'much',\n",
" 'upwards',\n",
" 'getting',\n",
" 'water',\n",
" 'part',\n",
" 'roof',\n",
" 'dripping',\n",
" 'entire',\n",
" 'bathroom',\n",
" 'soaking',\n",
" 'etc',\n",
" 'called',\n",
" 'front',\n",
" 'desk',\n",
" 'let',\n",
" 'know',\n",
" 'know',\n",
" 'anything',\n",
" 'ever',\n",
" 'done',\n",
" 'terrible',\n",
" 'even',\n",
" 'wash',\n",
" 'hair',\n",
" 'shower',\n",
" 'nightmare',\n",
" 'basically',\n",
" 'shower',\n",
" 'totally',\n",
" 'unusable',\n",
" 'paying',\n",
" 'awful',\n",
" 'hotel',\n",
" 'breakfast',\n",
" 'bad',\n",
" 'got',\n",
" 'rush',\n",
" 'min',\n",
" 'later',\n",
" 'never',\n",
" 'would',\n",
" 'got',\n",
" 'seat',\n",
" 'since',\n",
" 'definitely',\n",
" 'enough',\n",
" 'seating',\n",
" 'seem',\n",
" 'restocking',\n",
" 'food',\n",
" 'quickly',\n",
" 'free',\n",
" 'internet',\n",
" 'worked',\n",
" 'room',\n",
" 'small',\n",
" 'fitness',\n",
" 'room',\n",
" 'dinky',\n",
" 'hot',\n",
" 'tub',\n",
" 'honestly',\n",
" 'would',\n",
" 'never',\n",
" 'stay',\n",
" 'comfort',\n",
" 'inn',\n",
" 'good',\n",
" 'luck',\n",
" 'need',\n",
" 'pro',\n",
" 'large',\n",
" 'room',\n",
" 'queen',\n",
" 'lot',\n",
" 'space',\n",
" 'internet',\n",
" 'signal',\n",
" 'strong',\n",
" 'room',\n",
" 'con',\n",
" 'parking',\n",
" 'check',\n",
" 'late',\n",
" 'front',\n",
" 'desk',\n",
" 'clerk',\n",
" 'caring',\n",
" 'lot',\n",
" 'hair',\n",
" 'bathroom',\n",
" 'next',\n",
" 'tub',\n",
" 'tub',\n",
" 'budget',\n",
" 'half',\n",
" 'sized',\n",
" 'pillow',\n",
" 'never',\n",
" 'seen',\n",
" 'anything',\n",
" 'like',\n",
" 'alittle',\n",
" 'worried',\n",
" 'reading',\n",
" 'review',\n",
" 'booked',\n",
" 'king',\n",
" 'size',\n",
" 'suite',\n",
" 'sofa',\n",
" 'bed',\n",
" 'since',\n",
" 'four',\n",
" 'adult',\n",
" 'spending',\n",
" 'one',\n",
" 'night',\n",
" 'cruise',\n",
" 'hotel',\n",
" 'great',\n",
" 'value',\n",
" 'money',\n",
" 'since',\n",
" 'want',\n",
" 'spend',\n",
" 'one',\n",
" 'night',\n",
" 'post',\n",
" 'complaint',\n",
" 'thin',\n",
" 'wall',\n",
" 'problem',\n",
" 'hearing',\n",
" 'people',\n",
" 'breakfast',\n",
" 'menu',\n",
" 'several',\n",
" 'item',\n",
" 'food',\n",
" 'good',\n",
" 'several',\n",
" 'pizza',\n",
" 'place',\n",
" 'deliver',\n",
" 'room',\n",
" 'since',\n",
" 'restaruants',\n",
" 'walking',\n",
" 'distance',\n",
" 'negative',\n",
" 'linen',\n",
" 'room',\n",
" 'sofa',\n",
" 'bed',\n",
" 'called',\n",
" 'desk',\n",
" 'person',\n",
" 'said',\n",
" 'planning',\n",
" 'sleeping',\n",
" 'reservation',\n",
" 'four',\n",
" 'adult',\n",
" 'one',\n",
" 'night',\n",
" 'bring',\n",
" 'linen',\n",
" 'pillow',\n",
" 'opened',\n",
" 'bed',\n",
" 'bowed',\n",
" 'middle',\n",
" 'even',\n",
" 'know',\n",
" 'begin',\n",
" 'tell',\n",
" 'horrible',\n",
" 'stay',\n",
" 'u',\n",
" 'start',\n",
" 'saying',\n",
" 'arrived',\n",
" 'hotel',\n",
" 'around',\n",
" 'found',\n",
" 'first',\n",
" 'literally',\n",
" 'parking',\n",
" 'hotel',\n",
" 'questionable',\n",
" 'area',\n",
" 'park',\n",
" 'street',\n",
" 'nervous',\n",
" 'already',\n",
" 'leaving',\n",
" 'car',\n",
" 'area',\n",
" 'went',\n",
" 'got',\n",
" 'key',\n",
" 'already',\n",
" 'noticing',\n",
" 'run',\n",
" 'place',\n",
" 'went',\n",
" 'room',\n",
" 'smell',\n",
" 'hallway',\n",
" 'stinky',\n",
" 'fresh',\n",
" 'kind',\n",
" 'smelt',\n",
" 'like',\n",
" 'dog',\n",
" 'pee',\n",
" 'got',\n",
" 'room',\n",
" 'smell',\n",
" 'bed',\n",
" 'definitely',\n",
" 'smelt',\n",
" 'like',\n",
" 'dog',\n",
" 'pee',\n",
" 'sickened',\n",
" 'pet',\n",
" 'u',\n",
" 'enjoy',\n",
" 'smelling',\n",
" 'someone',\n",
" 'elses',\n",
" 'pet',\n",
" 'reluctantly',\n",
" 'called',\n",
" 'front',\n",
" 'desk',\n",
" 'asked',\n",
" 'room',\n",
" 'could',\n",
" 'switched',\n",
" 'cold',\n",
" 'rude',\n",
" 'finally',\n",
" 'said',\n",
" 'come',\n",
" 'another',\n",
" 'key',\n",
" 'went',\n",
" 'second',\n",
" 'room',\n",
" 'family',\n",
" 'never',\n",
" 'unpacks',\n",
" 'anything',\n",
" 'checking',\n",
" 'bed',\n",
" 'stuff',\n",
" 'room',\n",
" 'carefully',\n",
" 'bedbug',\n",
" 'went',\n",
" 'ahead',\n",
" 'room',\n",
" 'might',\n",
" 'mention',\n",
" 'also',\n",
" 'smelled',\n",
" 'moldy',\n",
" 'upon',\n",
" 'lifting',\n",
" 'mattress',\n",
" 'see',\n",
" 'underneath',\n",
" 'husband',\n",
" 'found',\n",
" 'bug',\n",
" 'moving',\n",
" 'freaked',\n",
" 'u',\n",
" 'never',\n",
" 'actually',\n",
" 'found',\n",
" 'bug',\n",
" 'went',\n",
" 'told',\n",
" 'desk',\n",
" 'clerk',\n",
" 'found',\n",
" 'denied',\n",
" 'made',\n",
" 'u',\n",
" 'feel',\n",
" ...],\n",
" ['experience',\n",
" 'day',\n",
" 'inn',\n",
" 'perfect',\n",
" 'staff',\n",
" 'great',\n",
" 'manager',\n",
" 'ted',\n",
" 'angel',\n",
" 'helpful',\n",
" 'complimentary',\n",
" 'breakfast',\n",
" 'always',\n",
" 'hot',\n",
" 'also',\n",
" 'provided',\n",
" 'bbq',\n",
" 'grill',\n",
" 'really',\n",
" 'recommend',\n",
" 'place',\n",
" 'others',\n",
" 'planning',\n",
" 'staying',\n",
" 'san',\n",
" 'antonio',\n",
" 'staff',\n",
" 'front',\n",
" 'desk',\n",
" 'extremely',\n",
" 'helpful',\n",
" 'went',\n",
" 'way',\n",
" 'ensure',\n",
" 'trip',\n",
" 'enjoyable',\n",
" 'attending',\n",
" 'nephew',\n",
" 'air',\n",
" 'force',\n",
" 'graduation',\n",
" 'staff',\n",
" 'gave',\n",
" 'u',\n",
" 'useful',\n",
" 'information',\n",
" 'make',\n",
" 'navigation',\n",
" 'base',\n",
" 'easier',\n",
" 'special',\n",
" 'thanks',\n",
" 'mr',\n",
" 'angel',\n",
" 'worked',\n",
" 'front',\n",
" 'desk',\n",
" 'morning',\n",
" 'departure',\n",
" 'location',\n",
" 'great',\n",
" 'close',\n",
" 'base',\n",
" 'however',\n",
" 'hotel',\n",
" 'disgusting',\n",
" 'dirty',\n",
" 'roach',\n",
" 'sure',\n",
" 'still',\n",
" 'open',\n",
" 'never',\n",
" 'ever',\n",
" 'stay',\n",
" 'location',\n",
" 'location',\n",
" 'risk',\n",
" 'deal',\n",
" 'environment',\n",
" 'wish',\n",
" 'people',\n",
" 'would',\n",
" 'mentioned',\n",
" 'review',\n",
" 'could',\n",
" 'selected',\n",
" 'different',\n",
" 'hotel',\n",
" 'happier',\n",
" 'note',\n",
" 'proud',\n",
" 'graduate',\n",
" 'congrats',\n",
" 'share',\n",
" 'feeling',\n",
" 'pride',\n",
" 'service',\n",
" 'great',\n",
" 'helpful',\n",
" 'front',\n",
" 'desk',\n",
" 'matter',\n",
" 'time',\n",
" 'day',\n",
" 'room',\n",
" 'ok',\n",
" 'bathroom',\n",
" 'need',\n",
" 'updating',\n",
" 'bed',\n",
" 'high',\n",
" 'short',\n",
" 'people',\n",
" 'comfortable',\n",
" 'would',\n",
" 'stay',\n",
" 'reserved',\n",
" 'king',\n",
" 'room',\n",
" 'none',\n",
" 'available',\n",
" 'check',\n",
" 'left',\n",
" 'pizza',\n",
" 'thrown',\n",
" 'away',\n",
" 'reason',\n",
" 'know',\n",
" 'son',\n",
" 'would',\n",
" 'enjoyed',\n",
" 'location',\n",
" 'location',\n",
" 'location',\n",
" 'get',\n",
" 'issue',\n",
" 'perfect',\n",
" 'location',\n",
" 'lackland',\n",
" 'air',\n",
" 'base',\n",
" 'staff',\n",
" 'outstanding',\n",
" 'helpful',\n",
" 'polite',\n",
" 'friendly',\n",
" 'staff',\n",
" 'room',\n",
" 'however',\n",
" 'damp',\n",
" 'feeling',\n",
" 'dark',\n",
" 'dingy',\n",
" 'carpet',\n",
" 'tub',\n",
" 'room',\n",
" 'needed',\n",
" 'replaced',\n",
" 'old',\n",
" 'building',\n",
" 'need',\n",
" 'work',\n",
" 'also',\n",
" 'feel',\n",
" 'safe',\n",
" 'sometimes',\n",
" 'although',\n",
" 'problem',\n",
" 'quiet',\n",
" 'room',\n",
" 'clean',\n",
" 'min',\n",
" 'downtown',\n",
" 'asked',\n",
" 'stair',\n",
" 'close',\n",
" 'parking',\n",
" 'problem',\n",
" 'tv',\n",
" 'line',\n",
" 'could',\n",
" 'use',\n",
" 'update',\n",
" 'cannot',\n",
" 'compliment',\n",
" 'enough',\n",
" 'employee',\n",
" 'front',\n",
" 'desk',\n",
" 'ted',\n",
" 'angel',\n",
" 'honestly',\n",
" 'went',\n",
" 'beyond',\n",
" 'came',\n",
" 'giving',\n",
" 'exact',\n",
" 'direction',\n",
" 'around',\n",
" 'city',\n",
" 'got',\n",
" 'lost',\n",
" 'airport',\n",
" 'almost',\n",
" 'hr',\n",
" 'could',\n",
" 'find',\n",
" 'hotel',\n",
" 'near',\n",
" 'tear',\n",
" 'point',\n",
" 'ted',\n",
" 'stayed',\n",
" 'phone',\n",
" 'u',\n",
" 'directed',\n",
" 'u',\n",
" 'right',\n",
" 'parking',\n",
" 'lot',\n",
" 'min',\n",
" 'away',\n",
" 'point',\n",
" 'helpful',\n",
" 'friendly',\n",
" 'trip',\n",
" 'let',\n",
" 'employee',\n",
" 'get',\n",
" 'away',\n",
" 'hard',\n",
" 'find',\n",
" 'hotel',\n",
" 'cab',\n",
" 'driver',\n",
" 'get',\n",
" 'parking',\n",
" 'lot',\n",
" 'room',\n",
" 'ready',\n",
" 'check',\n",
" 'booked',\n",
" 'online',\n",
" 'disappointed',\n",
" 'hotel',\n",
" 'far',\n",
" 'either',\n",
" 'airport',\n",
" 'conference',\n",
" 'centre',\n",
" 'staff',\n",
" 'met',\n",
" 'ground',\n",
" 'thorough',\n",
" 'courteous',\n",
" 'mind',\n",
" 'staying',\n",
" 'walking',\n",
" 'distance',\n",
" 'conference',\n",
" 'centre',\n",
" 'general',\n",
" 'manager',\n",
" 'ash',\n",
" 'day',\n",
" 'inn',\n",
" 'name',\n",
" 'jon',\n",
" 'family',\n",
" 'stayed',\n",
" 'day',\n",
" 'inn',\n",
" 'past',\n",
" 'weekend',\n",
" 'wanted',\n",
" 'compliment',\n",
" 'employee',\n",
" 'jacob',\n",
" 'thursday',\n",
" 'night',\n",
" 'checked',\n",
" 'helpful',\n",
" 'accommodating',\n",
" 'exemplified',\n",
" 'customer',\n",
" 'service',\n",
" 'seen',\n",
" 'quite',\n",
" 'say',\n",
" 'great',\n",
" 'employee',\n",
" 'worth',\n",
" 'favorable',\n",
" 'review',\n",
" 'express',\n",
" 'room',\n",
" 'nice',\n",
" 'clean',\n",
" 'bed',\n",
" 'comfortable',\n",
" 'except',\n",
" 'bit',\n",
" 'fresh',\n",
" 'paint',\n",
" 'top',\n",
" 'great',\n",
" 'room',\n",
" 'host',\n",
" 'enjoyed',\n",
" 'complimentary',\n",
" 'hot',\n",
" 'breakfast',\n",
" 'served',\n",
" 'btw',\n",
" 'never',\n",
" 'asked',\n",
" 'pay',\n",
" 'parking',\n",
" 'fee',\n",
" 'wanted',\n",
" 'say',\n",
" 'thank',\n",
" 'excellent',\n",
" 'experience',\n",
" 'sure',\n",
" 'pas',\n",
" 'recommendation',\n",
" 'friend',\n",
" 'regard',\n",
" 'jon',\n",
" 'place',\n",
" 'good',\n",
" 'far',\n",
" 'cost',\n",
" 'realize',\n",
" 'day',\n",
" 'park',\n",
" 'yes',\n",
" 'parking',\n",
" 'lot',\n",
" 'parking',\n",
" 'garage',\n",
" 'maybe',\n",
" 'old',\n",
" 'motel',\n",
" 'like',\n",
" 'parking',\n",
" 'situation',\n",
" 'guess',\n",
" 'lot',\n",
" 'going',\n",
" 'san',\n",
" 'antonio',\n",
" 'come',\n",
" 'put',\n",
" 'price',\n",
" 'room',\n",
" 'good',\n",
" 'time',\n",
" 'nice',\n",
" 'staff',\n",
" 'hot',\n",
" 'breakfast',\n",
" 'comfortable',\n",
" 'bed',\n",
" 'wifi',\n",
" 'cooling',\n",
" 'heat',\n",
" 'good',\n",
" 'hot',\n",
" 'shower',\n",
" 'know',\n",
" 'older',\n",
" 'hotel',\n",
" 'served',\n",
" 'purpose',\n",
" 'close',\n",
" 'lackland',\n",
" 'afb',\n",
" 'hard',\n",
" 'find',\n",
" 'several',\n",
" 'hotel',\n",
" 'nearby',\n",
" 'parking',\n",
" 'easy',\n",
" 'park',\n",
" 'far',\n",
" 'inner',\n",
" 'section',\n",
" 'pool',\n",
" 'use',\n",
" 'pool',\n",
" 'nice',\n",
" 'really',\n",
" 'impressed',\n",
" 'hot',\n",
" 'breakfast',\n",
" 'worry',\n",
" 'go',\n",
" 'eat',\n",
" 'graduate',\n",
" 'bmt',\n",
" 'nice',\n",
" 'close',\n",
" 'upon',\n",
" 'check',\n",
" 'evening',\n",
" 'receptionist',\n",
" 'friendly',\n",
" 'helpful',\n",
" 'although',\n",
" 'quite',\n",
" 'people',\n",
" 'checking',\n",
" 'ahead',\n",
" 'wait',\n",
" 'time',\n",
" 'minimal',\n",
" 'friendly',\n",
" 'courteous',\n",
" 'everyone',\n",
" 'room',\n",
" 'look',\n",
" 'attempted',\n",
" 'upgrade',\n",
" 'include',\n",
" 'hdtv',\n",
" 'refrigerator',\n",
" 'hair',\n",
" 'dryer',\n",
" 'ironing',\n",
" 'board',\n",
" 'iron',\n",
" 'bed',\n",
" 'comfortable',\n",
" 'room',\n",
" 'clean',\n",
" 'room',\n",
" 'faced',\n",
" 'pool',\n",
" 'little',\n",
" 'noisy',\n",
" 'kid',\n",
" 'playing',\n",
" 'overall',\n",
" 'value',\n",
" 'good',\n",
" 'family',\n",
" 'husband',\n",
" 'booked',\n",
" 'priceline',\n",
" 'day',\n",
" 'room',\n",
" 'double',\n",
" 'queen',\n",
" 'good',\n",
" 'rate',\n",
" 'staff',\n",
" 'welcoming',\n",
" 'friendly',\n",
" 'helpful',\n",
" 'liked',\n",
" 'room',\n",
" 'connected',\n",
" 'u',\n",
" 'family',\n",
" 'stick',\n",
" 'together',\n",
" 'room',\n",
" 'neatly',\n",
" 'updated',\n",
" 'hdtv',\n",
" 'comfortable',\n",
" 'bed',\n",
" 'breakfast',\n",
" 'area',\n",
" 'small',\n",
" 'great',\n",
" 'denny',\n",
" 'walking',\n",
" 'distance',\n",
" 'away',\n",
" 'would',\n",
" 'return',\n",
" 'budget',\n",
" 'oh',\n",
" 'plus',\n",
" 'got',\n",
" 'little',\n",
" 'gift',\n",
" 'bag',\n",
" 'appreciate',\n",
" 'made',\n",
" 'u',\n",
" 'feel',\n",
" 'welcome',\n",
" 'thanked',\n",
" 'guest',\n",
" 'housekeeping',\n",
" 'like',\n",
" 'barge',\n",
" 'letting',\n",
" 'otherwise',\n",
" 'totally',\n",
" 'banging',\n",
" 'door',\n",
" 'view',\n",
" 'window',\n",
" 'brick',\n",
" 'wall',\n",
" 'swimming',\n",
" 'pool',\n",
" 'look',\n",
" 'like',\n",
" 'cess',\n",
" 'pit',\n",
" 'room',\n",
" 'ugly',\n",
" 'clean',\n",
" 'location',\n",
" 'convenient',\n",
" 'slightest',\n",
" 'stayed',\n",
" 'hotel',\n",
" 'different',\n",
" 'time',\n",
" 'past',\n",
" 'month',\n",
" 'satisfied',\n",
" 'staff',\n",
" 'friendly',\n",
" 'helpfully',\n",
" 'clean',\n",
" 'room',\n",
" 'part',\n",
" 'think',\n",
" 'may',\n",
" 'upgrading',\n",
" 'room',\n",
" 'second',\n",
" 'room',\n",
" 'stayed',\n",
" 'nice',\n",
" 'nicer',\n",
" 'bathroom',\n",
" 'others',\n",
" 'others',\n",
" 'still',\n",
" 'nice',\n",
" 'convenient',\n",
" 'going',\n",
" 'visiting',\n",
" 'lackland',\n",
" 'afb',\n",
" 'base',\n",
" 'literally',\n",
" 'ther',\n",
" 'street',\n",
" 'clean',\n",
" 'pool',\n",
" 'want',\n",
" 'swim',\n",
" 'good',\n",
" 'breakfast',\n",
" 'even',\n",
" 'though',\n",
" 'went',\n",
" 'twice',\n",
" 'perfect',\n",
" 'hotel',\n",
" 'price',\n",
" 'range',\n",
" 'feel',\n",
" 'safe',\n",
" 'stay',\n",
" 'important',\n",
" 'complaint',\n",
" 'hojo',\n",
" 'staff',\n",
" 'reception',\n",
" 'pleasant',\n",
" 'request',\n",
" 'accomidated',\n",
" 'breakfast',\n",
" 'nice',\n",
" 'carbs',\n",
" 'one',\n",
" 'back',\n",
" 'room',\n",
" 'pleasantly',\n",
" 'large',\n",
" 'room',\n",
" 'fridge',\n",
" 'microwave',\n",
" 'know',\n",
" 'older',\n",
" 'facility',\n",
" 'show',\n",
" 'age',\n",
" 'noticable',\n",
" 'repair',\n",
" 'lieu',\n",
" 'upgrade',\n",
" 'like',\n",
" 'staying',\n",
" 'great',\n",
" 'aunt',\n",
" 'house',\n",
" 'whose',\n",
" 'failing',\n",
" 'vision',\n",
" 'see',\n",
" 'allow',\n",
" 'see',\n",
" 'dust',\n",
" 'grime',\n",
" 'sheet',\n",
" 'need',\n",
" 'good',\n",
" 'bleaching',\n",
" 'make',\n",
" 'bed',\n",
" 'nicely',\n",
" 'work',\n",
" 'hard',\n",
" 'welcome',\n",
" 'air',\n",
" 'heat',\n",
" 'could',\n",
" 'worked',\n",
" 'better',\n",
" 'interior',\n",
" 'pool',\n",
" 'looked',\n",
" 'wonderful',\n",
" 'lush',\n",
" 'though',\n",
" 'property',\n",
" 'surrounded',\n",
" 'side',\n",
" 'large',\n",
" 'wrought',\n",
" 'iron',\n",
" 'fencing',\n",
" 'back',\n",
" 'neighborhood',\n",
" 'looked',\n",
" 'fine',\n",
" 'felt',\n",
" 'comfortable',\n",
" 'immediate',\n",
" 'area']]"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Prepare corpus\n",
"corpus = [preprocess(doc) for doc in final_df['reviews']]\n",
"\n",
"# Show five first elements of corpus\n",
"corpus[:5]"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Xp_MVYTo4uA2"
},
"source": [
"### Implementation"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"executionInfo": {
"elapsed": 9128,
"status": "ok",
"timestamp": 1730740633059,
"user": {
"displayName": "Joyce Lapilus",
"userId": "10669185642835107674"
},
"user_tz": -60
},
"id": "pmXFXMer4vkh"
},
"outputs": [],
"source": [
"# Initialize BM25\n",
"bm25 = BM25Okapi(corpus)"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"executionInfo": {
"elapsed": 3,
"status": "ok",
"timestamp": 1730740633060,
"user": {
"displayName": "Joyce Lapilus",
"userId": "10669185642835107674"
},
"user_tz": -60
},
"id": "tLTrsx7x4wkR"
},
"outputs": [],
"source": [
"# Define function to retrieve most similar place\n",
"def retrieve_bm25(query, k=1):\n",
" query = preprocess(query)\n",
" scores = bm25.get_scores(query)\n",
"\n",
" # Returns the indices of scores sorted in descending order & selects the top k indices corresponding to the highest scores.\n",
" top_k_idx = np.argsort(scores)[::-1][:k]\n",
"\n",
" return final_df.iloc[top_k_idx][['offering_id', 'name', 'hotel_class', 'ratings', 'reviews']]"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "GE9DpR5P4yTs"
},
"source": [
"### Best hotel for different queries according to the ***BM25 model***"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 81
},
"executionInfo": {
"elapsed": 933,
"status": "ok",
"timestamp": 1730740633991,
"user": {
"displayName": "Joyce Lapilus",
"userId": "10669185642835107674"
},
"user_tz": -60
},
"id": "GuR02bXz4yIy",
"outputId": "c3ece997-6aea-43cc-8971-dba40530d821"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" offering_id \n",
" name \n",
" hotel_class \n",
" ratings \n",
" reviews \n",
" \n",
" \n",
" \n",
" \n",
" 2612 \n",
" 258705 \n",
" Hotel Commonwealth \n",
" 4.0 \n",
" {'service': 4.8, 'cleanliness': 4.9, 'overall'... \n",
" I was pleasantly surprised that this hotel was... \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" offering_id name hotel_class \\\n",
"2612 258705 Hotel Commonwealth 4.0 \n",
"\n",
" ratings \\\n",
"2612 {'service': 4.8, 'cleanliness': 4.9, 'overall'... \n",
"\n",
" reviews \n",
"2612 I was pleasantly surprised that this hotel was... "
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Example usage\n",
"query_service = 'excellent service and clean rooms'\n",
"retrieve_bm25(query_service)"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 81
},
"executionInfo": {
"elapsed": 490,
"status": "ok",
"timestamp": 1730740634478,
"user": {
"displayName": "Joyce Lapilus",
"userId": "10669185642835107674"
},
"user_tz": -60
},
"id": "9dirk0sH41Ad",
"outputId": "ee22dce2-de86-49cc-bd01-8c8fa2b9be92"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" offering_id \n",
" name \n",
" hotel_class \n",
" ratings \n",
" reviews \n",
" \n",
" \n",
" \n",
" \n",
" 166 \n",
" 79868 \n",
" Bay Club Hotel & Marina \n",
" 3.0 \n",
" {'service': 4.6, 'cleanliness': 4.5, 'overall'... \n",
" Great hopitality and a wonderful location. The... \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" offering_id name hotel_class \\\n",
"166 79868 Bay Club Hotel & Marina 3.0 \n",
"\n",
" ratings \\\n",
"166 {'service': 4.6, 'cleanliness': 4.5, 'overall'... \n",
"\n",
" reviews \n",
"166 Great hopitality and a wonderful location. The... "
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"query_food = 'delicious food and great view'\n",
"retrieve_bm25(query_food)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "lg089CyC42ug"
},
"source": [
"## Custom Recommendation Model\n",
"Here, we will experiment with different methods to improve on BM25. We'll start with TF-IDF and progress to embedding-based models using `sentence-transformers`. Finally, we may re-rank using a similarity metric to find the best match."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "qEsWtOPB44P_"
},
"source": [
"### TF-IDF-Based Custom Model"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "6QYJaO4K44kR"
},
"source": [
"Using **TF-IDF (Term Frequency - Inverse Document Frequency)**, we can create vector representations for each place's concatenated reviews. Then, we’ll compare a query with these vectors using cosine similarity."
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"executionInfo": {
"elapsed": 59531,
"status": "ok",
"timestamp": 1730740694007,
"user": {
"displayName": "Joyce Lapilus",
"userId": "10669185642835107674"
},
"user_tz": -60
},
"id": "TYicPEK646Ee"
},
"outputs": [],
"source": [
"# Instantiate TF-IDF Vectorizer\n",
"tfidf_vectorizer = TfidfVectorizer(stop_words='english')\n",
"\n",
"# Fit and transform reviews into TF-IDF vectors\n",
"tfidf_matrix = tfidf_vectorizer.fit_transform(final_df['reviews']) # 'reviews' column with concatenated reviews per place"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"executionInfo": {
"elapsed": 7,
"status": "ok",
"timestamp": 1730740694007,
"user": {
"displayName": "Joyce Lapilus",
"userId": "10669185642835107674"
},
"user_tz": -60
},
"id": "bEom928M47kP"
},
"outputs": [],
"source": [
"def retrieve_tfidf(query, k=5):\n",
" # Transform the query text into TF-IDF vector\n",
" query_vec = tfidf_vectorizer.transform([query])\n",
"\n",
" # Compute cosine similarity between the query vector and all document vectors\n",
" scores = cosine_similarity(query_vec, tfidf_matrix).flatten()\n",
"\n",
" # Get the indices of the top-k most similar places\n",
" top_k_idx = scores.argsort()[::-1][:k]\n",
"\n",
" # Return the top-k places based on similarity\n",
" return final_df.iloc[top_k_idx][['offering_id', 'name', 'hotel_class', 'ratings', 'reviews']]"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "p4F9amL949us"
},
"source": [
"#### Top 5 hotels for different queries according to the ***TF-IDF model***"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 206
},
"executionInfo": {
"elapsed": 360,
"status": "ok",
"timestamp": 1730740694360,
"user": {
"displayName": "Joyce Lapilus",
"userId": "10669185642835107674"
},
"user_tz": -60
},
"id": "i8qiCAoF4-xL",
"outputId": "cd15a791-370a-4875-e818-647c4da382d8"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" offering_id \n",
" name \n",
" hotel_class \n",
" ratings \n",
" reviews \n",
" \n",
" \n",
" \n",
" \n",
" 1091 \n",
" 98940 \n",
" Houston Inn and Suites \n",
" 0.0 \n",
" {'service': 3.0, 'cleanliness': 3.0, 'overall'... \n",
" I stay for a weekend, and the rooms were nice ... \n",
" \n",
" \n",
" 2570 \n",
" 249793 \n",
" BEST WESTERN Fort Worth Inn & Suites \n",
" 3.0 \n",
" {'service': 4.7, 'cleanliness': 4.8, 'overall'... \n",
" I was very impressed when as I was walking in ... \n",
" \n",
" \n",
" 1531 \n",
" 109101 \n",
" La Quinta Inn & Suites Fort Worth North \n",
" 2.5 \n",
" {'service': 4.4, 'cleanliness': 4.6, 'overall'... \n",
" Rolling into Fort Worth after a long day on th... \n",
" \n",
" \n",
" 90 \n",
" 74845 \n",
" Comfort Inn West \n",
" 2.0 \n",
" {'service': 4.5, 'cleanliness': 4.5, 'overall'... \n",
" We had a wonderful stay!! Beautiful redone roo... \n",
" \n",
" \n",
" 1973 \n",
" 124066 \n",
" Ramada Limited Addison \n",
" 0.0 \n",
" {'service': 4.0, 'cleanliness': 3.0, 'overall'... \n",
" Hotel based on a main road but within walking ... \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" offering_id name hotel_class \\\n",
"1091 98940 Houston Inn and Suites 0.0 \n",
"2570 249793 BEST WESTERN Fort Worth Inn & Suites 3.0 \n",
"1531 109101 La Quinta Inn & Suites Fort Worth North 2.5 \n",
"90 74845 Comfort Inn West 2.0 \n",
"1973 124066 Ramada Limited Addison 0.0 \n",
"\n",
" ratings \\\n",
"1091 {'service': 3.0, 'cleanliness': 3.0, 'overall'... \n",
"2570 {'service': 4.7, 'cleanliness': 4.8, 'overall'... \n",
"1531 {'service': 4.4, 'cleanliness': 4.6, 'overall'... \n",
"90 {'service': 4.5, 'cleanliness': 4.5, 'overall'... \n",
"1973 {'service': 4.0, 'cleanliness': 3.0, 'overall'... \n",
"\n",
" reviews \n",
"1091 I stay for a weekend, and the rooms were nice ... \n",
"2570 I was very impressed when as I was walking in ... \n",
"1531 Rolling into Fort Worth after a long day on th... \n",
"90 We had a wonderful stay!! Beautiful redone roo... \n",
"1973 Hotel based on a main road but within walking ... "
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"retrieve_tfidf(query_service)"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 206
},
"executionInfo": {
"elapsed": 1149,
"status": "ok",
"timestamp": 1730740695506,
"user": {
"displayName": "Joyce Lapilus",
"userId": "10669185642835107674"
},
"user_tz": -60
},
"id": "L_1PQ7YX4_EF",
"outputId": "814b0e36-aaca-4f28-812f-c81425bc7f65"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" offering_id \n",
" name \n",
" hotel_class \n",
" ratings \n",
" reviews \n",
" \n",
" \n",
" \n",
" \n",
" 1645 \n",
" 112136 \n",
" Penn's View Hotel \n",
" 3.0 \n",
" {'service': 4.5, 'cleanliness': 4.6, 'overall'... \n",
" This hotel is located in the old city and is c... \n",
" \n",
" \n",
" 603 \n",
" 87608 \n",
" Holiday Inn Chicago - Mart Plaza \n",
" 3.0 \n",
" {'service': 4.1, 'cleanliness': 4.3, 'overall'... \n",
" If your visiting Chicago, and are a little fle... \n",
" \n",
" \n",
" 1263 \n",
" 100567 \n",
" The Edgewater Hotel Seattle \n",
" 4.0 \n",
" {'service': 4.3, 'cleanliness': 4.3, 'overall'... \n",
" I have traveled to Seattle extremely often for... \n",
" \n",
" \n",
" 602 \n",
" 87603 \n",
" Hotel 71, Wyndham Affiliate \n",
" 3.5 \n",
" {'service': 4.4, 'cleanliness': 4.4, 'overall'... \n",
" Stayed there for 6 nights, Upon arrival shocke... \n",
" \n",
" \n",
" 703 \n",
" 89620 \n",
" Hyatt Harborside at Boston's Logan Internation... \n",
" 4.0 \n",
" {'service': 4.3, 'cleanliness': 4.5, 'overall'... \n",
" My boyfriend and I loved this hotel! Our room ... \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" offering_id name \\\n",
"1645 112136 Penn's View Hotel \n",
"603 87608 Holiday Inn Chicago - Mart Plaza \n",
"1263 100567 The Edgewater Hotel Seattle \n",
"602 87603 Hotel 71, Wyndham Affiliate \n",
"703 89620 Hyatt Harborside at Boston's Logan Internation... \n",
"\n",
" hotel_class ratings \\\n",
"1645 3.0 {'service': 4.5, 'cleanliness': 4.6, 'overall'... \n",
"603 3.0 {'service': 4.1, 'cleanliness': 4.3, 'overall'... \n",
"1263 4.0 {'service': 4.3, 'cleanliness': 4.3, 'overall'... \n",
"602 3.5 {'service': 4.4, 'cleanliness': 4.4, 'overall'... \n",
"703 4.0 {'service': 4.3, 'cleanliness': 4.5, 'overall'... \n",
"\n",
" reviews \n",
"1645 This hotel is located in the old city and is c... \n",
"603 If your visiting Chicago, and are a little fle... \n",
"1263 I have traveled to Seattle extremely often for... \n",
"602 Stayed there for 6 nights, Upon arrival shocke... \n",
"703 My boyfriend and I loved this hotel! Our room ... "
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"retrieve_tfidf(query_food)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "UXuc7wbI5MPk"
},
"source": [
"### Embedding-Based Custom Model with Sentence Transformers"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "iPjG0-aG5Ogp"
},
"source": [
"Using Sentence Transformers (like `all-MiniLM-L6-v2`), we can create dense embeddings of the review text, which generally capture semantic similarities better than TF-IDF."
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 560,
"referenced_widgets": [
"41aa5f25235d435ab2022deb265c1224",
"211c9255a5b841a6981f4bb90ef0cc08",
"f39607b761c34a09bfd9fac0ecaab5f4",
"bc6bc1c1abff40a8bc46bd40fcba011d",
"98e8d5ab089c4972b28de304327ef4b0",
"78cd919f72c24e349e35568be0834f8b",
"018a4edc5a514defa8f88b76c5d2051d",
"0288d54f62a44a51af1cc28cbffeb414",
"0d3fc9b5eb5343688db12952c9b79209",
"50e7bea3bda3449993f02204ab708c84",
"2c4d0395d3c9450c93cdf92534fb667e",
"d4933c6ee65f47638f514b25da3031ff",
"a8827aab24ad4f62a569ebc7c49e5e13",
"5f8eb46b969f499281890ad8feaf34e9",
"c12e263dd34e41e4a15390d05b99e937",
"25e00f5d82e448368c2d132f0274c089",
"40426b1e8b6d4b9f90bc8b6551e33dad",
"9f18e1e8a03544c7b43e8ad098385165",
"b9394cb942f44d248d070d2fa38a3a60",
"d339ebcb8350489ab8adc6ade4a3549f",
"0871e359a4754641b1001a7748790ef3",
"f8279f7457b54ea79871d8afffaa4c1a",
"eae753a0f03a4940811ce9b14f3c4fba",
"65cd6c2e7ea4417cbcbc49e9826da3a4",
"59c60af3e36e4afa94c9243a713c862e",
"01f0b4f9c8494b1d940f52e4ae2e052e",
"af6f78c572ec4876ae5e0b7440bea99c",
"b89dba8be52b44ab922ec32a2dbf0388",
"d73b0aa7b82a446287f1597560aa9f2e",
"014a132cc94240bca260251b30e80b1d",
"85f80f687da548c4be2a9aa4bc5f703a",
"3af1e1c748874d9dbe6db67ac60f59a6",
"f2bd0d7b25f64d21a0b101e300f5970f",
"2d731537db694de2abf5e50ff5315582",
"116d7e14b77e4f408e38ee2a9edd2589",
"4d1a8a8036184623b6d9a0bb60134c0b",
"75f9eb8825164ee0ab40ce3d35082182",
"09ad0f566d154ebaa5a1d407e95b1a3f",
"1bda7a65c51c4eda942daba2ba20763a",
"e753b149eebc4195a0c27d055d2c68c1",
"333ae2cfd578425c93552c57c4b7f8ae",
"eed1334d1cfb47b8b6568b754b36e591",
"d098812189de448cb80c14fc9f4b932e",
"b65a40471afa46f88b2a745df3b8164f",
"5760a67d10b342c7b802e0b14ef934b8",
"77a06f1ab92a437a93326ca36667ca87",
"e53714b59cb44cdfb55fe0768be6960d",
"d92024edce0c416c9bf5389c4763be3e",
"e4bff3bbc2c54c6aa9ffdb855c707def",
"643406402c1b45c798fc3a9b073084b7",
"1f54531a0f9249c79b3db2e715da96c2",
"51b607d567414be9806ba7eecd5b47f5",
"72b931a3238e4d229517d8762e64de4f",
"15df539a86084979a6998c9a8b1987f9",
"d5b2b751583a4eea83dd7d0dac3311df",
"eaa6b4ef21fd4de2b67e0afb28af35a7",
"72045a496fac4abba58f054c4f5dd289",
"829f7b18252f4452bc0c052707438553",
"3aad5b862e584581873e0fcf48dc645f",
"304275b18f514e7da443e0e85cb92ebf",
"77e1d1adc7f84c05830987cbcd9abf6b",
"33ea3f887ac34973aaa72cf28774e17a",
"414026345ea14ad3a1c46f3b48e08dad",
"520a8efd266645e98d64fe12e692fdd4",
"b47a4986321b4011857e43ec29af5930",
"70d1721ee8764008a378e86f8b4d1a40",
"6f315b8a29ec4dceb936f40dcf935ca9",
"3571d5e96c964209bf75196c768c4f16",
"21845b143b0b42a89b8c96371fcb7cfd",
"16ca2364890d4369bd76d528955d5c07",
"407bdd18f40942d4857674f5aef60f5a",
"cc1811b5165a462c80e33ea28c9b1cd5",
"d7aabc8485904970acc594cff1c2ecb1",
"36a5b49746ab413eb824189c5312a4a8",
"869ba914217346d79c3d5d73f5e00ea8",
"02ad14c4355e4b95ac857236b939f386",
"7efde21464b74b89b2b18d4d69bab5f4",
"e513eb3bf3f74a8b9f56f67be171e4c7",
"6a55cee63ed64d5c8bce9853553a152e",
"66e195b05b7d4007875cee4ca105bee5",
"d49c878e0999475c946d18ea7ad24e1b",
"177dad175ea045bbb434e60e5fa6a2d3",
"90b79c66e79f4cb3ac20515d1ee204ba",
"4073631f4ae04f6394e7ec7160c1b267",
"2e73e9f4f6d349deb946044f44f5bc6a",
"c1f08c978d8e40ec87a1d6b348331205",
"c064370aceca42d08529b26489e89d01",
"497a4539b1f44ac884b22c441a5cc0fb",
"62217ad84eee4d9ab223350440f31c40",
"97d56fd60344424dac5c0482ab9efabb",
"c8bd3f54301d4ebda35036a60c4aa5e7",
"d2c96a3539d64fa4b5ca319057ce1838",
"7fc87395d6664c579ad3b49c5d5f5af9",
"63c2cc0bb0d2470b9c663fb789bccbcc",
"4920dfa856c743c28d6b645bc6462d84",
"f9727f5d318f4c578c6f609da8514a03",
"dafa8bd7b78c4dcbaf8bc8bf1f38b441",
"ab3daf3afb14420e917d2ce4b70ed03a",
"e8cd452dbdfe4913b3f06060bdebbc0e",
"e6afaae6e36e46ae94a433b5437012b2",
"4a573eab972948139eb2acccc8171917",
"c92e52e2edf146058ff52be717bb11a1",
"d45e5d6905ad4b24b24b79b80758920c",
"b22240de5d414420ba2d74813e0cb059",
"97c9c08018ac4d98a5a73a4e4d4b4552",
"1e7db89680c144eb846ee878b37c7b78",
"72500bb48c964e91a308f763db191956",
"14c68438a1574435857fb6b5e8952de1",
"c7984758157f4bd885a29f3d13508f12",
"1f49e5943d254770a92ea4778733a86a",
"c410fd7c34974edba7625df2c5dda519",
"398becbbdc324b2d9033ffb2511ab612",
"cf6ba93b63214a79b705c74f9ab08470",
"7a0b0da7087a4830a5263f93a9835870",
"34c8ce56ae6047809e128507f7ec1333",
"f0596d60ee03456899a44a9f024c13e8",
"7705618bee1b436eb9cc7c954281b985",
"8aa2e9c7ecc8463d80969f8be0b8fa97",
"145978f0aad44da0b8cb60e65add585c",
"fab297d175304e86be07326a50074a96",
"3ecefd97e39949778d00bddddbcd93d5",
"75abb8d3b53341aabed11f3e3e789423",
"64c0d4f909914b66aca9fd86882d4759",
"a22f72bba00646fc8d424e84f9761d04",
"39b450fcf67e4eff80f0a94ce03c3d9a",
"419c59425958463e86e3c89e7897562d",
"ccd93edd28fd47dc8ed9b25fdff1273b",
"8ab8006e3d0c46c688e3f8f30f1076d3",
"c792016a2f1e421c9c63a4760529c6dd",
"9992af63e99a4d279c2a00b6e2609532",
"6988cc6bae8646baabc123c4a90eb1f2",
"0d79e7275de94b5b8744179614b31fdd"
]
},
"executionInfo": {
"elapsed": 102225,
"status": "ok",
"timestamp": 1730741587609,
"user": {
"displayName": "Joyce Lapilus",
"userId": "10669185642835107674"
},
"user_tz": -60
},
"id": "azjzZN-C5L2Y",
"outputId": "1b4e0ccb-f44c-4141-d0d8-610a8e3d28e9"
},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "2f06970571ed4c1ca631bdb54f2fd604",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Batches: 0%| | 0/118 [00:00, ?it/s]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Load a pre-trained Sentence Transformer model\n",
"model = SentenceTransformer('all-MiniLM-L6-v2')\n",
"\n",
"# Generate embeddings for each place's concatenated reviews\n",
"embeddings = model.encode(final_df['reviews'].tolist(), show_progress_bar=True)"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"executionInfo": {
"elapsed": 1,
"status": "ok",
"timestamp": 1730741587610,
"user": {
"displayName": "Joyce Lapilus",
"userId": "10669185642835107674"
},
"user_tz": -60
},
"id": "pAihREds5S0Z"
},
"outputs": [],
"source": [
"def retrieve_embeddings(query, k=5):\n",
" # Encode the query into an embedding vector\n",
" query_embedding = model.encode(query)\n",
"\n",
" # Compute cosine similarity between the query embedding and all document embeddings\n",
" scores = cosine_similarity([query_embedding], embeddings).flatten()\n",
"\n",
" # Get indices of the top-k most similar places\n",
" top_k_idx = np.argsort(scores)[::-1][:k]\n",
"\n",
" # Return the top-k most similar places\n",
" return final_df.iloc[top_k_idx][['offering_id', 'name', 'hotel_class', 'ratings', 'reviews']]"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "359xmFGB5UOa"
},
"source": [
"#### Top 5 hotels for different queries according to the ***Embedding-Based Custom model***"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 206
},
"executionInfo": {
"elapsed": 211,
"status": "ok",
"timestamp": 1730741587820,
"user": {
"displayName": "Joyce Lapilus",
"userId": "10669185642835107674"
},
"user_tz": -60
},
"id": "RHmcj0Z55Vnp",
"outputId": "2fa72a10-5c47-4fb5-dafb-dc9deda8b355"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" offering_id \n",
" name \n",
" hotel_class \n",
" ratings \n",
" reviews \n",
" \n",
" \n",
" \n",
" \n",
" 3301 \n",
" 1174784 \n",
" Holiday Inn Baltimore-Towson \n",
" 0.0 \n",
" {'service': 5.0, 'cleanliness': 5.0, 'overall'... \n",
" Found the room exceptionally clean, the staff ... \n",
" \n",
" \n",
" 3086 \n",
" 656554 \n",
" Charlotte Express Inn \n",
" 2.0 \n",
" {'service': 3.5, 'cleanliness': 2.5, 'overall'... \n",
" Very courteous, helpful and professional staff... \n",
" \n",
" \n",
" 1818 \n",
" 119997 \n",
" Belcaro Motel \n",
" 0.0 \n",
" {'service': 5.0, 'cleanliness': 5.0, 'overall'... \n",
" Perfectly clean. Some new bath renovations, bu... \n",
" \n",
" \n",
" 2823 \n",
" 497952 \n",
" Americas Best Value Inn - San Antonio / Lackla... \n",
" 2.0 \n",
" {'service': 2.8, 'cleanliness': 3.8, 'overall'... \n",
" Great clean rooms and great service.\\nHotel wa... \n",
" \n",
" \n",
" 2881 \n",
" 553345 \n",
" Americas Best Value Inn & Suites Granada Hills \n",
" 2.0 \n",
" {'service': 4.7, 'cleanliness': 4.4, 'overall'... \n",
" Rooms were clean,air conditioner worked well,t... \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" offering_id name \\\n",
"3301 1174784 Holiday Inn Baltimore-Towson \n",
"3086 656554 Charlotte Express Inn \n",
"1818 119997 Belcaro Motel \n",
"2823 497952 Americas Best Value Inn - San Antonio / Lackla... \n",
"2881 553345 Americas Best Value Inn & Suites Granada Hills \n",
"\n",
" hotel_class ratings \\\n",
"3301 0.0 {'service': 5.0, 'cleanliness': 5.0, 'overall'... \n",
"3086 2.0 {'service': 3.5, 'cleanliness': 2.5, 'overall'... \n",
"1818 0.0 {'service': 5.0, 'cleanliness': 5.0, 'overall'... \n",
"2823 2.0 {'service': 2.8, 'cleanliness': 3.8, 'overall'... \n",
"2881 2.0 {'service': 4.7, 'cleanliness': 4.4, 'overall'... \n",
"\n",
" reviews \n",
"3301 Found the room exceptionally clean, the staff ... \n",
"3086 Very courteous, helpful and professional staff... \n",
"1818 Perfectly clean. Some new bath renovations, bu... \n",
"2823 Great clean rooms and great service.\\nHotel wa... \n",
"2881 Rooms were clean,air conditioner worked well,t... "
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"retrieve_embeddings(query_service)"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 206
},
"executionInfo": {
"elapsed": 877,
"status": "ok",
"timestamp": 1730741588697,
"user": {
"displayName": "Joyce Lapilus",
"userId": "10669185642835107674"
},
"user_tz": -60
},
"id": "D2cE83Oo5WD_",
"outputId": "ae47ee1e-4660-4e93-b7f5-1c5a246efb42"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" offering_id \n",
" name \n",
" hotel_class \n",
" ratings \n",
" reviews \n",
" \n",
" \n",
" \n",
" \n",
" 3723 \n",
" 2627745 \n",
" Hotel Palomar Phoenix - a Kimpton Hotel \n",
" 4.0 \n",
" {'service': 4.9, 'cleanliness': 4.9, 'overall'... \n",
" We are big fans of Kimpton Hotels and have sta... \n",
" \n",
" \n",
" 2692 \n",
" 275455 \n",
" Scottish Inn Memphis Airport \n",
" 0.0 \n",
" {'service': 4.0, 'cleanliness': 4.0, 'overall'... \n",
" Very nice property located several long blocks... \n",
" \n",
" \n",
" 3691 \n",
" 2151571 \n",
" Hotel Americano \n",
" 0.0 \n",
" {'service': 3.9, 'cleanliness': 4.4, 'overall'... \n",
" I have just come back from a 9 day trip from t... \n",
" \n",
" \n",
" 1499 \n",
" 108980 \n",
" Hampton Inn Austin - Arboretum Northwest \n",
" 2.5 \n",
" {'service': 4.8, 'cleanliness': 4.7, 'overall'... \n",
" Everything about this hotel screams that they ... \n",
" \n",
" \n",
" 1629 \n",
" 111751 \n",
" Hotel Bel-Air \n",
" 5.0 \n",
" {'service': 4.7, 'cleanliness': 4.9, 'overall'... \n",
" Beautiful & classic high class hotel. The spac... \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" offering_id name hotel_class \\\n",
"3723 2627745 Hotel Palomar Phoenix - a Kimpton Hotel 4.0 \n",
"2692 275455 Scottish Inn Memphis Airport 0.0 \n",
"3691 2151571 Hotel Americano 0.0 \n",
"1499 108980 Hampton Inn Austin - Arboretum Northwest 2.5 \n",
"1629 111751 Hotel Bel-Air 5.0 \n",
"\n",
" ratings \\\n",
"3723 {'service': 4.9, 'cleanliness': 4.9, 'overall'... \n",
"2692 {'service': 4.0, 'cleanliness': 4.0, 'overall'... \n",
"3691 {'service': 3.9, 'cleanliness': 4.4, 'overall'... \n",
"1499 {'service': 4.8, 'cleanliness': 4.7, 'overall'... \n",
"1629 {'service': 4.7, 'cleanliness': 4.9, 'overall'... \n",
"\n",
" reviews \n",
"3723 We are big fans of Kimpton Hotels and have sta... \n",
"2692 Very nice property located several long blocks... \n",
"3691 I have just come back from a 9 day trip from t... \n",
"1499 Everything about this hotel screams that they ... \n",
"1629 Beautiful & classic high class hotel. The spac... "
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"retrieve_embeddings(query_food)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "pcjdwA7n5Zk8"
},
"source": [
"### Re-Ranking Using Hybrid Approach"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "ss1oXhzc5Z9N"
},
"source": [
"To combine the strengths of both models, we create a **hybrid model** where we:\n",
"1. Retrieve a larger set of similar places (e.g., top 10) using TF-IDF, and then\n",
"2. Re-rank these candidates with the embedding-based model."
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"executionInfo": {
"elapsed": 0,
"status": "ok",
"timestamp": 1730741588698,
"user": {
"displayName": "Joyce Lapilus",
"userId": "10669185642835107674"
},
"user_tz": -60
},
"id": "xDJjUrPw5cMU"
},
"outputs": [],
"source": [
"def retrieve_hybrid(query, initial_k=10, final_k=5):\n",
" # Step 1: Initial retrieval with TF-IDF or BM25 to get top-k candidates\n",
" initial_candidates = retrieve_tfidf(query, k=initial_k)\n",
"\n",
" # Step 2: Generate embeddings for the initial candidates' reviews\n",
" candidate_embeddings = model.encode(initial_candidates['reviews'].tolist())\n",
" query_embedding = model.encode(query)\n",
"\n",
" # Step 3: Re-rank candidates based on embedding similarity\n",
" scores = cosine_similarity([query_embedding], candidate_embeddings).flatten()\n",
" top_k_idx = np.argsort(scores)[::-1][:final_k]\n",
"\n",
" # Return final top-k ranked places\n",
" return initial_candidates.iloc[top_k_idx]"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "anmtGoRz5d1I"
},
"source": [
"#### Top 5 hotels for different queries according to the ***Hybrid model***"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 206
},
"executionInfo": {
"elapsed": 4915,
"status": "ok",
"timestamp": 1730741593613,
"user": {
"displayName": "Joyce Lapilus",
"userId": "10669185642835107674"
},
"user_tz": -60
},
"id": "ir_BGgS65fCA",
"outputId": "63f4708a-3b97-40c4-a326-344e4786ad9e"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" offering_id \n",
" name \n",
" hotel_class \n",
" ratings \n",
" reviews \n",
" \n",
" \n",
" \n",
" \n",
" 1091 \n",
" 98940 \n",
" Houston Inn and Suites \n",
" 0.0 \n",
" {'service': 3.0, 'cleanliness': 3.0, 'overall'... \n",
" I stay for a weekend, and the rooms were nice ... \n",
" \n",
" \n",
" 90 \n",
" 74845 \n",
" Comfort Inn West \n",
" 2.0 \n",
" {'service': 4.5, 'cleanliness': 4.5, 'overall'... \n",
" We had a wonderful stay!! Beautiful redone roo... \n",
" \n",
" \n",
" 2178 \n",
" 223171 \n",
" Super 8 Houston \n",
" 2.0 \n",
" {'service': 4.4, 'cleanliness': 4.2, 'overall'... \n",
" The hotel was very neat and good for the price... \n",
" \n",
" \n",
" 2570 \n",
" 249793 \n",
" BEST WESTERN Fort Worth Inn & Suites \n",
" 3.0 \n",
" {'service': 4.7, 'cleanliness': 4.8, 'overall'... \n",
" I was very impressed when as I was walking in ... \n",
" \n",
" \n",
" 3625 \n",
" 1846923 \n",
" Sleep Inn & Suites I-45 / Airtex \n",
" 2.0 \n",
" {'service': 4.8, 'cleanliness': 4.8, 'overall'... \n",
" I stay in many Choice Hotels during the year. ... \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" offering_id name hotel_class \\\n",
"1091 98940 Houston Inn and Suites 0.0 \n",
"90 74845 Comfort Inn West 2.0 \n",
"2178 223171 Super 8 Houston 2.0 \n",
"2570 249793 BEST WESTERN Fort Worth Inn & Suites 3.0 \n",
"3625 1846923 Sleep Inn & Suites I-45 / Airtex 2.0 \n",
"\n",
" ratings \\\n",
"1091 {'service': 3.0, 'cleanliness': 3.0, 'overall'... \n",
"90 {'service': 4.5, 'cleanliness': 4.5, 'overall'... \n",
"2178 {'service': 4.4, 'cleanliness': 4.2, 'overall'... \n",
"2570 {'service': 4.7, 'cleanliness': 4.8, 'overall'... \n",
"3625 {'service': 4.8, 'cleanliness': 4.8, 'overall'... \n",
"\n",
" reviews \n",
"1091 I stay for a weekend, and the rooms were nice ... \n",
"90 We had a wonderful stay!! Beautiful redone roo... \n",
"2178 The hotel was very neat and good for the price... \n",
"2570 I was very impressed when as I was walking in ... \n",
"3625 I stay in many Choice Hotels during the year. ... "
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"retrieve_hybrid(query_service)"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 206
},
"executionInfo": {
"elapsed": 4165,
"status": "ok",
"timestamp": 1730741597778,
"user": {
"displayName": "Joyce Lapilus",
"userId": "10669185642835107674"
},
"user_tz": -60
},
"id": "Vv_jq37x5fUd",
"outputId": "493b7f64-8b22-47d1-ef0d-0db59744f049"
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" offering_id \n",
" name \n",
" hotel_class \n",
" ratings \n",
" reviews \n",
" \n",
" \n",
" \n",
" \n",
" 166 \n",
" 79868 \n",
" Bay Club Hotel & Marina \n",
" 3.0 \n",
" {'service': 4.6, 'cleanliness': 4.5, 'overall'... \n",
" Great hopitality and a wonderful location. The... \n",
" \n",
" \n",
" 302 \n",
" 81126 \n",
" Mandarin Oriental, San Francisco \n",
" 5.0 \n",
" {'service': 4.8, 'cleanliness': 4.9, 'overall'... \n",
" The sweeping views from the 40 th floor are ju... \n",
" \n",
" \n",
" 2306 \n",
" 223983 \n",
" Baltimore Marriott Waterfront \n",
" 4.0 \n",
" {'service': 4.4, 'cleanliness': 4.6, 'overall'... \n",
" I had a reservation at a different hotel but a... \n",
" \n",
" \n",
" 1234 \n",
" 100507 \n",
" Inn at the Market \n",
" 4.0 \n",
" {'service': 4.8, 'cleanliness': 4.9, 'overall'... \n",
" My cousin and I went to Seattle to attend the ... \n",
" \n",
" \n",
" 1645 \n",
" 112136 \n",
" Penn's View Hotel \n",
" 3.0 \n",
" {'service': 4.5, 'cleanliness': 4.6, 'overall'... \n",
" This hotel is located in the old city and is c... \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" offering_id name hotel_class \\\n",
"166 79868 Bay Club Hotel & Marina 3.0 \n",
"302 81126 Mandarin Oriental, San Francisco 5.0 \n",
"2306 223983 Baltimore Marriott Waterfront 4.0 \n",
"1234 100507 Inn at the Market 4.0 \n",
"1645 112136 Penn's View Hotel 3.0 \n",
"\n",
" ratings \\\n",
"166 {'service': 4.6, 'cleanliness': 4.5, 'overall'... \n",
"302 {'service': 4.8, 'cleanliness': 4.9, 'overall'... \n",
"2306 {'service': 4.4, 'cleanliness': 4.6, 'overall'... \n",
"1234 {'service': 4.8, 'cleanliness': 4.9, 'overall'... \n",
"1645 {'service': 4.5, 'cleanliness': 4.6, 'overall'... \n",
"\n",
" reviews \n",
"166 Great hopitality and a wonderful location. The... \n",
"302 The sweeping views from the 40 th floor are ju... \n",
"2306 I had a reservation at a different hotel but a... \n",
"1234 My cousin and I went to Seattle to attend the ... \n",
"1645 This hotel is located in the old city and is c... "
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"retrieve_hybrid(query_food)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "13i6YgQ45hOp"
},
"source": [
"### Summary of Each Approach\n",
"- **TF-IDF**: Quick but mainly focuses on word overlap, which can miss out on semantic similarity.\n",
"- **Embedding-Based Model**: Captures semantic meaning and is more accurate but computationally heavier.\n",
"- **Hybrid Model**: Combines initial recall with TF-IDF followed by a fine-grained re-ranking using embeddings."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "F1qxWQ2Z5jLt"
},
"source": [
"## Evaluation Metrics\n",
"For evaluation, we will use Mean Squared Error (MSE) to calculate the error between ratings on each aspect for the recommended and actual places.\n",
"This score will be calculated across both BM25 and custom models to compare performance."
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"executionInfo": {
"elapsed": 1,
"status": "ok",
"timestamp": 1730741597778,
"user": {
"displayName": "Joyce Lapilus",
"userId": "10669185642835107674"
},
"user_tz": -60
},
"id": "DEnTAwaV5kpi"
},
"outputs": [],
"source": [
"# Calculate MSE for a single recommendation\n",
"def calculate_mse(actual_ratings, predicted_ratings):\n",
" return root_mean_squared_error(actual_ratings, predicted_ratings)"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {
"id": "JBERdcCtZK_5"
},
"outputs": [],
"source": [
"# Define the sample size of query places for evaluation\n",
"sample_size = 100\n",
"samples = final_df.sample(sample_size)\n",
"max_char = 280 # Max limit of characters for query, like an X post"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "2JwOiCB45k7Y"
},
"source": [
"## Results and Analysis"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### MSE scores for each model\n",
"We will run the BM25 and custom model to retrieve places for several test queries, then calculate the MSE for each model and compare the results."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"executionInfo": {
"elapsed": 194677,
"status": "ok",
"timestamp": 1730742280788,
"user": {
"displayName": "Joyce Lapilus",
"userId": "10669185642835107674"
},
"user_tz": -60
},
"id": "E9IsxBBQ5nSy",
"outputId": "194dd152-ccbb-4537-9c2a-1cd1098d9061"
},
"outputs": [],
"source": [
"# Store MSE scores for each model\n",
"bm25_mse_scores = []\n",
"custom_mse_scores = []\n",
"custom_embedding_mse_scores = []\n",
"custom_hybrid_mse_scores = []\n",
"\n",
"# Step 1: Loop over a sample of query places in the dataset\n",
"progress_bar = tqdm(samples.iterrows(), total=sample_size, desc=\"MSE Calculations\")\n",
"for _, query_place in progress_bar:\n",
" query_text = query_place['reviews'][:max_char] # Use the concatenated reviews for the place as the query\n",
" actual_ratings = query_place[\"ratings\"] # Actual ratings for MSE calculation\n",
"\n",
" # Step 2: Retrieve the most similar place using BM25\n",
" bm25_recommendation = retrieve_bm25(query_text, k=1)\n",
" bm25_predicted_ratings = bm25_recommendation[\"ratings\"].iloc[0]\n",
"\n",
" # Calculate MSE for BM25\n",
" bm25_mse = calculate_mse(list(actual_ratings.values()), list(bm25_predicted_ratings.values()))\n",
" bm25_mse_scores.append(bm25_mse)\n",
"\n",
" # Step 3: Retrieve the most similar place using the Custom Model\n",
" custom_recommendation = retrieve_tfidf(query_text, k=1)\n",
" custom_predicted_ratings = custom_recommendation[\"ratings\"].iloc[0]\n",
"\n",
" # Calculate MSE for the Custom Model\n",
" custom_mse = calculate_mse(list(actual_ratings.values()), list(custom_predicted_ratings.values()))\n",
" custom_mse_scores.append(custom_mse)\n",
"\n",
" # Step 4: Retrieve the most similar place using the Custom Model\n",
" custom_embedding_recommendation = retrieve_embeddings(query_text, k=1)\n",
" custom_embedding_predicted_ratings = custom_embedding_recommendation[\"ratings\"].iloc[0]\n",
"\n",
" # Calculate MSE for the Custom Model\n",
" custom_embedding_mse = calculate_mse(list(actual_ratings.values()), list(custom_embedding_predicted_ratings.values()))\n",
" custom_embedding_mse_scores.append(custom_embedding_mse)\n",
"\n",
" # Step 5: Retrieve the most similar place using the Custom Model\n",
" custom_hybrid_recommendation = retrieve_hybrid(query_text, final_k=1)\n",
" custom_hybrid_predicted_ratings = custom_hybrid_recommendation[\"ratings\"].iloc[0]\n",
"\n",
" # Calculate MSE for the Custom Model\n",
" custom_hybrid_mse = calculate_mse(list(actual_ratings.values()), list(custom_hybrid_predicted_ratings.values()))\n",
" custom_hybrid_mse_scores.append(custom_hybrid_mse)\n",
"\n",
"# Step 6: Compute the average MSE across all queries for each model\n",
"avg_bm25_mse = sum(bm25_mse_scores) / len(bm25_mse_scores)\n",
"avg_custom_mse = sum(custom_mse_scores) / len(custom_mse_scores)\n",
"avg_custom_embedding_mse = sum(custom_embedding_mse_scores) / len(custom_embedding_mse_scores)\n",
"avg_custom_hybrid_mse = sum(custom_hybrid_mse_scores) / len(custom_hybrid_mse_scores)\n",
"\n",
"print(f\"Average BM25 MSE: {(avg_bm25_mse * 100):.2f}%\")\n",
"print(f\"Average Custom Model MSE: {(avg_custom_mse * 100):.2f}%\")\n",
"print(f\"Average Embedding Model MSE: {(avg_custom_embedding_mse * 100):.2f}%\")\n",
"print(f\"Average Hybrid Model MSE: {(avg_custom_hybrid_mse * 100):.2f}%\")"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Average BM25 MSE: 29.91%\n",
"Average Custom Model MSE: 31.34%\n",
"Average Embedding Model MSE: 29.76%\n",
"Average Hybrid Model MSE: 22.13%\n"
]
}
],
"source": [
"print(f\"Average BM25 MSE: {(avg_bm25_mse * 100):.2f}%\")\n",
"print(f\"Average Custom Model MSE: {(avg_custom_mse * 100):.2f}%\")\n",
"print(f\"Average Embedding Model MSE: {(avg_custom_embedding_mse * 100):.2f}%\")\n",
"print(f\"Average Hybrid Model MSE: {(avg_custom_hybrid_mse * 100):.2f}%\")"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 718
},
"executionInfo": {
"elapsed": 647,
"status": "ok",
"timestamp": 1730742291056,
"user": {
"displayName": "Joyce Lapilus",
"userId": "10669185642835107674"
},
"user_tz": -60
},
"id": "kpzBRz4g5o8p",
"outputId": "7d20d00a-5291-4eaf-cecd-4bfc004d5cf7"
},
"outputs": [
{
"data": {
"image/png": "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xYtTLiYzWbhwIb73ve/he9/7Hq6++mrU1dVh5cqVVqlcOkIIfPOb38Szzz6Lyy+/HF//+tfx3nvvYfr06Vi4cCEWLlyIcDiMhQsX4je/+Q2ef/5563vK15GPjz/+GEA8i7Zt2zYceeSR+Oyzz3DFFVdg7733xvvvv4+rrroKixcvxjPPPANFUayvfeSRR/Dyyy/jqquuQmtrK1paWrBw4UJ861vfwm677YYbb7wRANDW1oYNGzbg0EMPRSQSwW9+8xvssssuePzxx3HppZfik08+wa233urYr1tuuQVf+9rXcOONN6KpqQkjRozAa6+9BgA4+eSTccopp+Dss8/GggULcMMNNyAajeKZZ57Bueeei0svvRR///vfMW3aNOy+++749re/DQDo6enBxo0bcemll2KnnXZCJBLBM888g29/+9uYPXs2Tj31VMc+PPHEE3jzzTdxzTXXoG/fvrjhhhvwrW99C8uWLcOuu+4KAHj33Xdx+OGHY8CAAbjmmmswYsQIdHZ2Yt68eYhEIgiHw1i7di3GjRsHVVVx1VVXYbfddsPChQtx7bXXYsWKFZg9e3bG39E555yDO+64A+effz5OOOEErFixAr/+9a/xwgsvYNGiRRgwYAAefvhh/OUvf8Gdd95pld/tvPPOWX//MpsnS/WuvPJKhMNhfPe737W2yeV319bWhvnz56O9vR1nnnkmzjrrLOt9Zfed73wH3/ve93DmmWdi8eLFuPzyywEAs2bNyrqvAPCNb3wDw4YNw6xZs3D99dcDAO68804cccQRGDFiRMr2y5Ytw6GHHoqBAwfilltuQf/+/TF37lxMnToV69atwy9/+UsA8YDuyCOPRDAYxK233opBgwbhnnvucc3mzp07F6eeeipOPPFE3HXXXQgGg7j99ttx3HHH4V//+heOOeYY133funUrJkyYgOHDh+Mvf/kLBg0ahLVr1+L5559PG6ARkccJIqIKmz17tgAg3nzzzbTbDBo0SIwaNcr6eI899hBjx44V0WjUsd0JJ5wg2trahK7rQgghHnjgAQFAPP/88xn3wTAMEY1GxcqVKwUA8eijj6bs3/Lly63HTjvtNDFs2DDr4xtvvFEAEF999VUOrzhh/vz5AoC44YYbHI/fd999AoC44447HM/Zp0+fnL6v3DYajYpoNCo2bNgg/vjHPwpFUcSBBx4ohBDiuuuuE6qqpvzc//nPfwoA4sknn7QeAyCam5vFxo0bU55r2LBh4vjjj3c8dtlllwkA4vXXX3c8fs455whFUcSyZcuEEEIsX75cABC77babiEQijm2nT58uAIibbrrJ8fi+++4rAIiHHnrIeiwajYodd9xRfPvb3077M4nFYiIajYozzzxTjB071vE5AGLQoEGiq6vLemzt2rVCVVVx3XXXWY8dffTRol+/fmL9+vVpn+fss88Wffv2FStXrnQ8Lt8j77//ftqvXbp0qQAgzj33XMfjr7/+ugAgrrjiCusx+fPZsGFD2u+XvG3yf01NTY6foxC5/+42bNggAIjp06enfb7k9/W5554r6urqhGEYGffX/l6fPn26aG1tFdFoVHzxxRciHA6LOXPmuD7/97//fREOh8WqVasc32/ixImioaHB+vucNm2aUBRFvPPOO47tJkyY4DhebN26VbS0tIjJkyc7ttN1Xeyzzz5i3Lhx1mPJx4m33npLABCPPPJIxtdKRP7BUj0i8gUhhPXvjz/+GB988AF+9KMfAQBisZj136RJk9DZ2eko7Uln/fr1+OlPf4ohQ4YgEAggGAxi2LBhAIClS5fmtX8HHngggHh25P7778fq1atz+jqZPUoucTrppJPQp0+fnMqB0tm6dSuCwSCCwSB23HFHXHTRRZg4cSIefvhhAMDjjz+OMWPGYN9993X8DI877jjXyWJHH300dthhh5xf1+jRozFu3DjH41OnToUQIiUTN2XKlLQZvhNOOMHx8ahRo6AoCiZOnGg9FggEsPvuu1sliNIDDzyAww47DH379rV+x3feeafr73f8+PFobGy0Ph40aBAGDhxofc9t27bhxRdfxMknn5yx5+3xxx/H+PHjMXjwYMfPVe7viy++mPZrn3/+eQCp74dx48Zh1KhRvXo/APGSszfffBNvvPEGHn/8cXzjG9/A97//fes9AeT/u8tkypQpjo/33ntvdHd35zUp8/TTT8e6devw1FNP4Z577kEoFLJKcJM999xzOOaYYzBkyJCUfd+2bRsWLlwIIP5z3nPPPbHPPvs4tvvhD3/o+PjVV1/Fxo0bcdpppzl+l4ZhoL29HW+++WZKWau0++67Y4cddsC0adMwc+ZMdHR05PyaicibWKpHRJ63detWfPHFF9hrr70AxMtsAODSSy/FpZde6vo12cYgG4aBY489FmvWrMGvf/1r7LXXXujTpw8Mw8DBBx+M7du357WPRxxxBB555BHccsstVr/LnnvuiV/96lf4wQ9+kPbrvvjiCwQCgZQLcUVR0Nraii+++CKv/bCrr6+3yhvD4TCGDRuGpqYm6/Pr1q3Dxx9/nDZgSf4Z5jMt74svvnCdYjh48GDr87l+75aWFsfHoVAIDQ0NqKurS3ncPmXtoYcewsknn4yTTjoJv/jFL9Da2opAIIDbbrvNtVSsf//+KY+Fw2HrvfDll19C1/WsJXHr1q3DY489lvPP1U7+XNx+HoMHD04JDPO1zz77WMMhgPjAkL322gvnnXcevvWtb1n7kM/vLpPkn6kc+JHP39ewYcNwzDHHYNasWVixYgW+//3vo6GhAdu2bUvZ9osvvkj7s7Pv+xdffIHhw4enbNfa2ur4WB5r7KWMyTZu3Ig+ffqkPN7c3IwXX3wRv/3tb3HFFVfgyy+/RFtbG3784x/jyiuvzKsUmIi8gYETEXneE088AV3XrZHH8sLv8ssvt/pZko0cOTLj91yyZAneffddzJkzB6eddpr1uOwBKsSJJ56IE088ET09PXjttddw3XXX4Yc//CF22WUXHHLIIa5f079/f8RiMWzYsMERPAkhsHbtWiuTVQhVVR1TCpMNGDAA9fX1aftN7BfYABz9Ttn0798fnZ2dKY+vWbOm1987V3PnzsXw4cNx3333Ob6/fYhDPlpaWqBpWtbG/gEDBmDvvffGb3/7W9fPy4t4NzLQ6OzsTAnQ1qxZk/Jz6y1VVbHnnnvigQcewPr16zFw4MC8f3flcMYZZ+CUU06BYRi47bbb0m6X6773798fa9euTdku+TG5/Z/+9CfHhEq7TJM+99prL9x7770QQuC9997DnDlzcM0116C+vh6XXXZZ2q8jIm9iqR4RedqqVatw6aWXorm5GWeffTaAeFA0YsQIvPvuuzjggANc/5MlV+nucMsL6eSR18mT+woRDodx5JFHWs3sb7/9dtptZWP53LlzHY8/+OCD2Lp1a9rG82I44YQT8Mknn6B///6uP8PeLPB7zDHHoKOjA4sWLXI8fvfdd0NRFIwfP76Xe5+doigIhUKOoGnt2rWuU/VyUV9fjyOPPBIPPPBAxqzRCSecgCVLlmC33XZz/blmCpyOPvpoAKnvhzfffBNLly4t+vtB13UsXrwY4XDYykbm+rsrJHtUqG9961v41re+hTPOOCNtAAPE9/25556zAiXp7rvvRkNDg/W148ePx/vvv493333Xsd3f//53x8eHHXYY+vXrh46OjrTHmlAolHX/FUXBPvvsg//93/9Fv379Un62ROQPzDgRkWcsWbLE6iFYv349Xn75ZcyePRuapuHhhx92ZGRuv/12TJw4EccddxymTp2KnXbaCRs3bsTSpUuxaNEiPPDAAwDia0MBwB133IHGxkbU1dVh+PDh2GOPPbDbbrvhsssugxACLS0teOyxx7BgwYKC9v2qq67CZ599hmOOOQY777wzvvrqK/zxj39EMBjEkUcemfbrJkyYgOOOOw7Tpk1DV1cXDjvsMGuq3tixY/H//t//K2h/cnHRRRfhwQcfxBFHHIGLL74Ye++9tzVt7emnn8bPf/5zHHTQQQV974svvhh33303jj/+eFxzzTUYNmwYnnjiCdx6660455xz8LWvfa3IrybVCSecgIceegjnnnsuvvvd7+LTTz/Fb37zG7S1teGjjz4q6HvKqYsHHXQQLrvsMuy+++5Yt24d5s2bh9tvvx2NjY245pprsGDBAhx66KG48MILMXLkSHR3d2PFihV48sknMXPmzLTlfiNHjsRPfvIT/OlPf4KqqtbaW7/+9a8xZMgQXHzxxb35keA///mPNYJ83bp1mDVrFj744ANcfPHFVuljrr+7xsZGDBs2DI8++iiOOeYYtLS0YMCAAb0KuNOpq6vDP//5z6zbTZ8+3eoxu+qqq9DS0oJ77rkHTzzxBG644QbrtV900UWYNWsWjj/+eFx77bXWVL0PPvjA8f369u2LP/3pTzjttNOwceNGfPe738XAgQOxYcMGvPvuu9iwYUPaDNjjjz+OW2+9Fd/85jex6667QgiBhx56CF999RUmTJjQ+x8KEZVfBQdTEBEJIRLTqOR/oVBIDBw4UBx55JHid7/7XdoJZu+++644+eSTxcCBA0UwGBStra3i6KOPFjNnznRsd/PNN4vhw4cLTdMEADF79mwhhBAdHR1iwoQJorGxUeywww7ipJNOEqtWrUqZ1JXLVL3HH39cTJw4Uey0007W/k+aNEm8/PLLWV//9u3bxbRp08SwYcNEMBgUbW1t4pxzzhFffvmlY7tCpupls2XLFnHllVeKkSNHilAoJJqbm8Vee+0lLr74YrF27VprOwDivPPOc/0eblP1hBBi5cqV4oc//KHo37+/CAaDYuTIkeIPf/iDNfFQiMRUvT/84Q8pX59ualy613bkkUeKPffc0/HY73//e7HLLruIcDgsRo0aJf76179a39cu3esbNmyYOO200xyPdXR0iJNOOkn0799fhEIhMXToUDF16lTR3d1tbbNhwwZx4YUXiuHDh4tgMChaWlrE/vvvL371q1+JLVu2pDyPna7r4vrrrxdf+9rXRDAYFAMGDBCnnHKK+PTTT3P6+bhxm6rX0tIiDjroIDFr1izH70SI3H53QgjxzDPPiLFjx4pwOCwAWD+rdPvm9rfkJpf3b7qpfosXLxaTJ08Wzc3NIhQKiX322cf6m7eTf/91dXWipaVFnHnmmeLRRx91ncL54osviuOPP160tLSIYDAodtppJ3H88ceLBx54IO1r++CDD8QPfvADsdtuu4n6+nrR3Nwsxo0bJ+bMmZPxdRGRdylC2EZVERERERERUQr2OBEREREREWXBwImIiIiIiCgLBk5ERERERERZMHAiIiIiIiLKgoETERERERFRFgyciIiIiIiIsqi5BXANw8CaNWvQ2NjoWE2eiIiIiIhqixACmzdvxuDBg6GqmXNKNRc4rVmzBkOGDKn0bhARERERkUd8+umn2HnnnTNuU3OBU2NjI4D4D6epqakszxmNRvH000/j2GOPRTAYLMtzkv/xfUOF4PuGCsX3DhWC7xsqhJfeN11dXRgyZIgVI2RSc4GTLM9ramoqa+DU0NCApqamir85yD/4vqFC8H1DheJ7hwrB9w0Vwovvm1xaeDgcgoiIiIiIKAsGTkRERERERFkwcCIiIiIiIsqi5nqciIiIKJUQAqqqoqenB7quV3p3yCei0SgCgQC6u7v5vqGclft9EwwGoWlar78PAyciIqIaF4lEsHr1arS1tWHVqlVc55ByJoRAa2srPv30U75vKGflft8oioKdd94Zffv27dX3YeBERERUwwzDwPLly6GqKgYPHozm5uai3Jml2mAYBrZs2YK+fftmXTyUSCrn+0YIgQ0bNuCzzz7DiBEjenV8Y+BERERUwyKRCAzDwE477YRYLIb6+npeAFPODMNAJBJBXV0d3zeUs3K/b3bccUesWLEC0Wi0V4ET3+FERETEi14iqlrFKgfkUZKIiIiIiCgLBk5ERERERERZsMeJiIiI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A/Dxxx9j+/btAOIBwrhx4/DMM89gzz33RCgUAhDPltx00024/fbbMXbsWMyaNQtTpkzB+++/jxEjRljfe/r06bj55psxdOhQnHHGGfjBD36ApqYm/PGPf0RDQwNOPvlkXHXVVbjtttty3l83Z5xxBmbMmIE333wTBx54IADgvffew9tvv40HHnjA2u7ZZ59FXV0dnn/+eaxYsQKnn346BgwYgN/+9rfWNnfddRfOOecc/Pvf/4ZwOT9v3boVJ5xwAo4++mjMnTsXn3zyCX72s59l3ceXXnoJBxxwQK9eZ6kcffTR2GefffDQQw/hrLPOqvTuZHTXXXfhl7/8Jd544w3cd999OOecc/DII4/gW9/6Fq644gr87//+L/7f//t/WLVqFRoaGqyv+8UvfoE//vGPaG1txRVXXIEpU6bgww8/RDAYxOLFi3HcccfhN7/5De68805s2LAB559/Ps4//3zrJsLUqVPx6aef4rnnnkMoFMKFF16I9evXW9/fMAx8+9vfxoABA/Daa6+hq6sr51LSX/3qV7jpppuw44474qc//SnOOOMM/Pvf/wYA3HPPPfjtb3+LW2+9FYcddhjuvfde3HTTTSkZx3HjxuHTTz/FypUrMWzYsF7+lNNjxokqxjCYcSIiovx9/PHHEEJgjz326PX3WrVqFcaOHYsDDjgAu+yyC77xjW9g8uTJAGBlGPr374/W1la0tMQXZ7/xxhsxbdo0fP/738fIkSNx/fXXY999901plL/00ktx3HHHYdSoUfjZz36GRYsW4de//jUOO+wwjB07FmeeeSaef/75rPt46KGHom/fvo7/Xn75ZevzO++8M4477jjrIheIl70deeSR2HXXXa3HQqEQZs2ahT333BPHH388rrnmGtxyyy2O/p7dd98dN9xwA0aOHOn6873nnnug67r1fU444QRccMEFWV/DihUrMHhwYcH4448/7njtJ510UkHfJ5M99tgDK1ascDw2bdo0x/PecsstRX9eu02bNqX8no899ljHNvvssw+uvPJKjBgxApdffjnq6+sxYMAA/PjHP8aIESNw1VVX4YsvvkjJAk6fPh0TJkzAXnvthbvuugvr1q3Dww8/DAD4wx/+gB/+8Ie46KKLMGLECBx66KG45ZZbcPfdd6O7uxsffvghnnrqKfzf//0fDjnkEOy///648847rRsMAPDMM89g6dKl+Nvf/oZ9990XRxxxBH73u9/l9Lp/+9vf4sgjj8To0aNx2WWX4dVXX0V3dzcA4E9/+hPOPPNMnH766fja176Gq666yjW7utNOOwFAyu+w2JhxooqRmSaDgRMRkbcEG+LZn2xWvgrc893s2/3on8CwQ3N73hzITIgcINAb55xzDr7zne9g0aJFOPbYY/HNb34Thx6afl+7urqwZs0aHHbYYY7HDzvsMLz77ruOx/bee2/r37Lkyn7RN2jQIMdd+3Tuu+8+jBo1yvHYj370I8fHP/7xj3HGGWfgf/7nf6BpGu655x7cdNNNjm322WcfRxbikEMOwZYtW/Dpp59ad+mzZYWWLl2a8n1kliuT7du3FzzoYPz48Y6snFuWsbeEECnvp1/84heYOnWq9fGAAQPSfv0999yDs88+2/q4p6cHiqLgxhtvtB67/fbbU35vdo2NjVi0aJHjsfr6esfH9veUpmno379/ynsKQMr76pBDDrH+3dLSgpEjR2Lp0qUAgP/85z/4+OOPHeV3QggYhoHly5fjww8/RCAQcLw39thjD0dmd+nSpRg6dKhjgIb9OTOxv6a2tjZr/4cOHYply5bh3HPPdWw/btw4PPfcc47H5M9p27ZtOT1noRg4UcXITFOMgRMRkbcoSk4lc9jtaKBpcHwQhGufkxL//G5HA2phPSluRowYAUVRsHTp0owjtlU1XlhjLzmLRqOObSZOnIiVK1fiiSeewDPPPINjjjkG5513nuOC103yRbbbhXcwGEzZPvmx5GluboYMGYLdd9/d8VjyBfXkyZMRDofx8MMPIxwOo6enB9/5zneyfu/k15ItKHEr38vFgAED8OWXXxb0tX369El5/cW2dOnSlPKvAQMG5Py8U6ZMwUEHHWR9PG3aNOy0006OMdn2fiU3qqpmfT77+weANSHQ/jGAnN5X9m3PPvts15HeMnixb+/G7X2R642NbPvv9reWbOPGjQBQ8j40lupRxcjAiePIiYh8StWA9uvND5IvksyP239f1KAJiN8xP+644/CXv/zF0cAuyTVr5EWUfUKb22jvHXfcEVOnTsXcuXNx880344477gAAq6dJ1xNrUjU1NWHw4MF45ZVXHN/j1VdfTckKlVMgEMBpp52G2bNnY/bs2fj+97/vyAoBwLvvvusor3rttdfQt2/fvMZsjx49OuX7vPXWW1m/buzYsejo6Mj5ecrpueeew+LFi3MONN00NjZi9913t/5rbGxES0tLymOVIgemAPGBKB9++KFVirnffvvh/fffd+yr/C8UCmHUqFGIxWKO3/OyZcsca0ONHj0aq1atwpo1iUz1woULe73fI0eOxBtvvOF4zO39tmTJEgSDQey55569fs5MGDhRxejscSIi8r/RU4CT7waa2pyPNw2OPz56Skme9tZbb4Wu6xg3bhwefPBBfPTRR1i6dCluueUWq0Sovr4eBx98MH7/+9+jo6MDL730Eq688krH97nqqqvw6KOP4uOPP8b777+Pxx9/3AqABg4ciPr6esyfPx/r1q3Dpk2bAMRLuK6//nrcd999WLZsGS677DK88847OQ1JKKWzzjoLzz33HJ566imcccYZKZ+PRCI488wzrWEY06dPx/nnn29l5nLxwx/+EKqqWt/nySefxJ///OesX3fcccdh4cKFjiC0Enp6erB27VqsXr0aixYtwu9+9zuceOKJOOGEE3DqqadWdN+EEFi7dm3Kf7lkj7K55ppr8Oyzz2LJkiWYOnUqBgwYYGVrp02bhoULF+K8887DO++8g48++gjz5s2zetdGjhyJ9vZ2/PjHP8brr7+O//znPzjrrLMcWc9vfOMbGDlyJE499VS8++67ePnll/GrX/2q1/t9wQUX4M4778Rdd92Fjz76CNdeey3ee++9lCzUyy+/bE2wLCUGTlQxXMeJiKhKjJ4CXLQEOO1x4Dt3xv9/0eKSBU1AfFT4okWLMH78ePz85z/HmDFjMGHCBDz77LOOfphZs2YhGo3igAMOwM9+9jNce+21ju8TCoVw+eWXY++998YRRxwBTdNw7733AohncW655RbcfvvtGDx4ME488UQAwIUXXoif//zn+PnPf4699toL8+fPx7x58xwT9SpBNvaPHDnSUTYmHXPMMRgxYgSOOOIInHzyyZg8eXLeaw317dsXjz32GDo6OjB27Fj8+te/zul7TJo0CcFgEM8880xez1ds8+fPR1tbG3bZZRe0t7fj+eefxy233IJHH3204BHnxdLV1YW2traU/3Lpg8vm97//PX72s59h//33R2dnJ+bNm2dlVPfee2+8+OKL+Oijj/D1r3/d+r3KfiMgPmxkyJAhOPLII/Htb38bP/nJTzBw4EDr86qq4uGHH0ZPTw/GjRuHs846yzGtsVA/+tGPcPnll+PSSy/Ffvvth+XLl2Pq1Kkp/XL/+Mc/8OMf/7jXz5eNIgotVvWprq4uNDc3Y9OmTWhqairLc0ajUTz55JPWQYPirnh4Mf7++ir0CWl4/5r2Su+O5/B9Q4Xg+4by1d3djeXLl2PYsGGIRCJoamrKKwNB3iEnDZ599tm45JJLyvKchmGgq6srp/fNrbfeikcffRT/+te/yrJv5F35vG+STZgwAa2trfjb3/4GAHjiiSfwi1/8Au+9917axXXlcW748OEpQVc+sQGHQ1DFWOPIayt2JyIiKrr169fjb3/7G1avXo3TTz+90rvj6ic/+Qm+/PJLbN68uaL9PuQf27Ztw8yZM3HcccdB0zT84x//wDPPPONYXHfr1q2YPXt22qCpmBg4UcVYwyF6X7pLRERU0wYNGoQBAwbgjjvuwA477FDp3XEVCASK0vcCxNffGj16dNrPd3R0YOjQoUV5LqocRVHw5JNP4tprr0VPTw9GjhyJBx98EN/4xjesbU4++eSy7Q8DJ6oYmWmKMXIiIiLqlRrrvMDgwYNdJyTaP0/+V19fX/G+ODsGTlQxiXHk7utfEBEREbkJBAIlX9uJKBm7P6li7NP0OFiPiKiyai1jQUS1o1jHNwZOVDH2hW85kpyIqDLk9MVt27ZVeE+IiEojEokAQK9HzrNUjyompjNwIiKqNE3T0K9fP2zYsAGNjY0IBoMVX8+G/MMwDEQiEXR3d3OMPeWsnO8bwzCwYcMGNDQ09HryHgMnqhhHxoklIkREFdPa2gpd19HZ2YnNmzez55RyJoTA9u3bUV9fz/cN5azc7xtVVTF06NBePxcDJ6oYe5aJGSciospRFAWDBg3CokWLcPTRR5dlPRSqDtFoFC+99BKOOOIILrpNOSv3+yYUChUls8UjI1WMrVLPWgyXiIgqRwiBcDjMC2DKmaZpiMViqKur4/uGcubX9w2LUalidNv6TTEGTkRERETkYQycqGKc48gZOBERERGRdzFwooqxJZzY40REREREnsbAiSpG5zpOREREROQTDJyoYmKcqkdEREREPsHAiSrGPkmP6zgRERERkZcxcKKKcQyHYMaJiIiIiDyMgRNVjH2SHjNORERERORlDJyoYuw9TjGdgRMREREReRcDJ6oYg+s4EREREZFPMHCiiuE4ciIiIiLyCwZOVDE6M05ERERE5BMMnKhidPY4EREREZFPMHCiitG5jhMRERER+QQDJ6oYe3meYVRwR4iIiIiIsmDgRBXDjBMRERER+QUDJ6oY+zpOOlNORERERORhDJyoYgxH4FTBHSEiIiIiyoKBE1UM13EiIiIiIr9g4EQVY6/O4zpORERERORlDJyoYmK2yCnGjBMREREReRgDJ6oIIQTssZLBwImIiIiIPIyBE1VEcpzEHiciIiIi8jIGTlQRyYES13EiIiIiIi9j4EQVkRI4MeNERERERB7GwIkqIjnDxMCJiIiIiLysooHTddddhwMPPBCNjY0YOHAgvvnNb2LZsmUZv+aFF16Aoigp/33wwQdl2msqhuRAiePIiYiIiMjLKho4vfjiizjvvPPw2muvYcGCBYjFYjj22GOxdevWrF+7bNkydHZ2Wv+NGDGiDHtMxZI8RY8ZJyIiIiLyskAln3z+/PmOj2fPno2BAwfiP//5D4444oiMXztw4ED069cv63P09PSgp6fH+rirqwsAEI1GEY1G89/pAsjnKdfz+UF3JOL4OBKN8eeThO8bKgTfN1QovneoEHzfUCG89L7JZx8qGjgl27RpEwCgpaUl67Zjx45Fd3c3Ro8ejSuvvBLjx4933e66667DjBkzUh5/+umn0dDQ0LsdztOCBQvK+nxetikC2N9+73csxZObOiq2P17G9w0Vgu8bKhTfO1QIvm+oEF5432zbti3nbRUhvNFcIoTAiSeeiC+//BIvv/xy2u2WLVuGl156Cfvvvz96enrwt7/9DTNnzsQLL7zgmqVyyzgNGTIEn3/+OZqamkryWpJFo1EsWLAAEyZMQDAYLMtzel3npm4cceNL1seXThiBs48YXsE98h6+b6gQfN9QofjeoULwfUOF8NL7pqurCwMGDMCmTZuyxgaeyTidf/75eO+99/DKK69k3G7kyJEYOXKk9fEhhxyCTz/9FDfeeKNr4BQOhxEOh1MeDwaDZf9FVeI5vUpRk9KiisKfTRp831Ah+L6hQvG9Q4Xg+4YK4YX3TT7P74lx5BdccAHmzZuH559/HjvvvHPeX3/wwQfjo48+KsGeUakkD4OIcTgEEREREXlYRTNOQghccMEFePjhh/HCCy9g+PDCSrXefvtttLW1FXnvqJSS13FKnrJHREREROQlFQ2czjvvPPz973/Ho48+isbGRqxduxYA0NzcjPr6egDA5ZdfjtWrV+Puu+8GANx8883YZZddsOeeeyISiWDu3Ll48MEH8eCDD1bsdVD+UsaRe6PVjoiIiIjIVUUDp9tuuw0AcNRRRzkenz17NqZOnQoA6OzsxKpVq6zPRSIRXHrppVi9ejXq6+ux55574oknnsCkSZPKtdtUBMmBkm5UaEeIiIiIiHJQ8VK9bObMmeP4+Je//CV++ctflmiPqFxienLgxMiJiIgKpxsCbyzfiPWbuzGwsQ7jhrdAU5VK7xYRVRHPTNWj2mIw40REREUyf0knZjzWgc5N3dZjbc11mD55NNrHsAeaiIrDE1P1qPYkT9VLDqSIiIhyMX9JJ86Zu8gRNAHA2k3dOGfuIsxf0lmhPSOiasPAiSoiNePEwImIiPKjGwIzHuuA2xlEPjbjsQ6eY4ioKBg4UUUk9zhxHSciIsrXG8s3pmSa7ASAzk3deGP5xvLtFBFVLQZOVBFcx4mIiHpr/eb0QVMh2xERZcLAiSoieYge13EiIqJ8DWysK+p2RESZMHCiimDGiYiIemvc8Ba0Ndch3dBxBfHpeuOGt5Rzt4ioSjFwoopIXreJPU5ERJQvTVUwffJoAEgJnuTH0yeP5npORFQUDJyoIpLXbWKpHhERFaJ9TBtuO2U/tDY7y/Fam+tw2yn71cw6TrohsPCTL/DoO6ux8JMvOEmQqAS4AC5VRMo6TjzAExFRgdrHtGHC6FYc+Yfn8NmX3Tjl4KGYMWVMzWSauAAwUXkw40QVwXWciIiomDRVQVDTAABDdmioqaCJCwATlQcDJ6qI5J4mBk5ERNRbUbMOvFb6ZrkAMFF5MXCiikguzWOPExER9ZYMnGql/JsLABOVFwMnqojku1+8G0ZERL0V0+PnklrJOHEBYKLyYuBEFZGyjhMzTkRE1EsRM+NUKzfjuAAwUXkxcKKKSD6pybuEREREhZLnklop/+YCwETlxcCJKiJlHHmNnOSIiKh0ojWWceICwETlxcCJKkIGSgHzYF4rJzkiIioNIYTV21RLVQxcAJiofBg4UUXIQCkUiL8Fa+gcR0REJWAfCKEbRgX3pPzax7ThlWlHY1RbIwDgO/vthFemHc2giajIGDhRRcjAKaiZgVONneSIiKi4ZJkeUDs9TnaaqqBvOAAAGNyvnuV5RCXAwIkqIiXjxLiJiIh6IarbM061FzgBiaxbrYxjJyo3Bk5UEfJuYMjMONXKYoVERFQa9oxTLfU42cmAsVYDR6JSY+BEFWGk9DjxIE9ERIWzB0u1ek5h4ERUWgycqCJiVo8Tp+oREVHvOXqcavScwsCJqLQYOFFFpGSceJAnIqJecJTq1eg5JdHjxMZholJg4EQVkdzjxMCJiIh6wzEcgj1OFd4TourEwIkqQt4YDDJwIiKiIqj1ceRAItNUq8MxiEqNgRNVhFy3icMhiIioGNjjBMgKPZ5TiUqDgRNVhDy/cRw5EREVg72vqXZ7nOIn11oNHIlKjYETVYQhOI6ciIiKx55xqtWbcToXwCUqKQZOVBG6NY7cDJxYj01ERL1gHw5Rq1PlZMDEcypRaTBwooqIJQdOzDgREVEvxNjjlJiqx3MqUUkwcKKK4DpORERUTFzHiePIiUqNgRNVhLwbFjYDJ4N3x4iIqBfspXq12uMUY48TUUkxcKKKMKxSPQUAD/JERNQ7zDjZM0612eNFVGoMnKgiknuchAAEs05ERFQg+6KvtViqJoRITNXjcAiikmDgRBWhJ40jB2rzREdERMURqfHhEPaXzPJ3otJg4EQVkTwcAuAUICIiKlytT9Wzj2Cv1VJFolJj4EQVIU9qIY0ZJyIi6j3nOk61dz6xn0N5PiUqDQZOVBHJC+DaHyMiIspX1Kj1jJMtcGSPE1FJMHCiinDrceIQICIiKlStD4fQa/z1E5UDAyeqCNdSPfY4ERFRgWp9HLn9HMrzKVFpMHCiipATfwLmOk6As7GViIgoH1FHxqX2zifscSIqPQZOVBGypEJVFGhqPHiqwfMcEREVSbTmp+rZh2PwhEpUCgycqCKsjJOaCJxYWkBERIWq9XHkjh4nDocgKgkGTlQR8qSmqgo0RWaceKAnIqLCRGp9HDl7nIhKjoETVYQ8v2m2Ur1aPNEREVFx1HzGqcbHsROVAwMnqgh5gNdUBWbcxAM9EREVzNHjVIMZF2ePU+29fqJyYOBEFSHPb5qqIGCOJDdq8ERHRETFEbUFC0LUXvl3jD1ORCXHwIkqQp7Q4hknczhEjZ3kiIioeOylekDtZV10ZpyISo6BE1WELKOIjyM3H+OBnoiIChRNyrLUWhUDh0MQlR4DJ6oI3ZZx0phxIiKiXooy4+T6byIqHgZOVBGOwEnjOk5ERNQ7yYFTrfX5OHqcDAHBcypR0TFwoopwyzjVWiMvEREVTywpUIoZRpotq1NylolZJ6LiY+BEFSFrzzVFgcp1nIiIqJdSMk41lnFJfr219vqJyoGBE1WEDJJUFcw4ERFRryUPh6i1jIuelGGrtddPVA4MnKgiZJAUUFVoKnuciIiod1KGQ9RwjxPAKg6iUmDgRBUhgyRNRSJw4kGeiIgKlBwo1Nw48uQepxoLHInKgYETVYQ8oMfXcWLgREREvROJ1fY48uTXW2uvn6gcGDhRRSQyTgpUruNERES9lDxFr9bOKckZtlrLuBGVAwMnqgj7OPKAmXHiQZ6IiAqV0uNTY6Vq7HEiKj0GTlQRhj3jZJXqVXKPiIjIzyJJJ5FauxnHHiei0mPgRBUh74RpSmIB3FpbrJCIiIqn1jMuqT1OPKcSFRsDJyo7IQTkjUBVTQyHqLW7g0REVDxyHHk4EL+0SV7XqNpxHSei0mPgRGVnP5gHVPtUvUrtERER+ZkQwsq41AU1ALV3Tkkp1ePNSKKiY+BEZWc/mDsyTrw7RkREBYjayvTqzcCp1krVUkr12ONEVHQMnKjs7HfFNCUxjrzW6tGJiKg47EFSXVCW6tXWOSUl41Rjr5+oHBg4Udk5AidVgWa+C1lWQEREhYjGEuePOivjVFvnFC6AS1R6DJyo7OzVE/F1nFTzcR7kiYgof1HbiUUOh6i1c0ry6+XAJaLiY+BEZWfPLGmKfR0nHuSJiCh/sp8nqCX6Zmst48IeJ6LSY+BEZWevRVdVBVr8HMfAiYiICiJHkQdU1apiqLVzCnuciEqPgROVnYyb5F1BK+PEsgIiIiqAFThp9iUuauucwgVwiUqPgROVnQyQ5MktUKMnOSIiKg45jjykqQhotXlO4QK4RKXHwInKTjawauYYcq7jREREvWHPONXqEhfJC/4ycCIqPgZOVHbyZGaV6tXoSY6IiIpDBk5BTbVVMdRWqRozTkSlx8CJyk4ezM1zWyLjxB4nIiIqgLzxFtRUW49TJfeo/LiOE1HpMXCispMBUsBc+bZWG3mJiKg4ojGZcbIPh6ityIlT9YhKj4ETlV0i42T2OCmcqkdERIWLmueVgKrW7DpODJyISo+BE5WdbvU4wfy/GThxsT4iIiqAlXEKqDU7qZWBE1HpMXCistOTpupxHSciIuoNuWZRUFWg1egCuOxxIio9Bk5UdtY6TppzHSeOIyciokLIdZziwyHij9Va4JCacaqtHi+icmDgRGWXvI6Tyh4nIiLqBfs6TrWbcTKSPq6t109UDgycqOzkwVyW6HGqHhER9UbMlnGq3R6n5I9r6/UTlQMDJyq75IwTAyciIuqNiO42jry2zilcAJeo9Bg4UdlZPU4pGaeK7RIREflYzCrVq91x5PL1hswmr1p7/UTlwMCJyi4xjty5jpPBHiciIiqAHA4RspXq1do5RZ5bw4Ha7PEiKgcGTlR2yYGTWqN3B4mIqDiiZplaQE2U6sVqbG1AeQ4NB5lxIioVBk5UdjJwktP0zKnkHEdOREQFicbM4RAB1Vb+XVv130ZSqR7PqUTFx8CJyk6WT8hyCk1jWQERERXOuQBubVYxWD1OAWaciEqlooHTddddhwMPPBCNjY0YOHAgvvnNb2LZsmVZv+7FF1/E/vvvj7q6Ouy6666YOXNmGfaWikUOgVCTepy4jhMRERUi6jKOvHZ7nDTz49rKuBGVQ0UDpxdffBHnnXceXnvtNSxYsACxWAzHHnsstm7dmvZrli9fjkmTJuHrX/863n77bVxxxRW48MIL8eCDD5Zxz6k35J3BxDjy+OPMOBERUSGijql6ZsaFPU6V3B2iqhSo5JPPnz/f8fHs2bMxcOBA/Oc//8ERRxzh+jUzZ87E0KFDcfPNNwMARo0ahbfeegs33ngjvvOd75R6l6kIjKRx5LLXiYETEREVIuZYxyn+WK2dU9jjRFR6FQ2ckm3atAkA0NLSknabhQsX4thjj3U8dtxxx+HOO+9ENBpFMBh0fK6npwc9PT3Wx11dXQCAaDSKaDRarF3PSD5PuZ7P6yLRGABAVQSi0SgUET/hxXSDPyMbvm+oEHzfUKH8/N7pjuoAABUCMG/ORXXdl6+lUFFb8AgAkVh5Xr+f3zdUOV563+SzD54JnIQQuOSSS3D44YdjzJgxabdbu3YtBg0a5Hhs0KBBiMVi+Pzzz9HW1ub43HXXXYcZM2akfJ+nn34aDQ0Nxdn5HC1YsKCsz+dV76xXAGj4fMMGPPnkk3jv8/jH682PyYnvGyoE3zdUKD++d1asVAGo+OTjDxFWAUDDZ6vX4MknP6vwnpVP1xYNgIJNGz8HoGLFylV48skVZXt+P75vqPK88L7Ztm1bztt6JnA6//zz8d577+GVV17Juq1ilnZJwry7lPw4AFx++eW45JJLrI+7urowZMgQHHvssWhqaurlXucmGo1iwYIFmDBhQkpGrBZ1vfkZ8EkH2loHYdKkscDitbj7o/fQr6U/Jk06sNK75xl831Ah+L6hQvn5vfPsA4uBDZ3Ya/QohIMaHlyxFDsOasWkSftWetfK5g9LXwK6u7Hz4FZ0fLUebTvtjEmT0t+ILhY/v2+ocrz0vpHVaLnwROB0wQUXYN68eXjppZew8847Z9y2tbUVa9eudTy2fv16BAIB9O/fP2X7cDiMcDic8ngwGCz7L6oSz+lJZuNuQFMRDAYRCsbfhkKAPx8XfN9QIfi+oUL58b2jm/8PBwMIB+NT5Qyh+O519IachVEfMs+pKO/r9+P7hirPC++bfJ6/olP1hBA4//zz8dBDD+G5557D8OHDs37NIYcckpLWe/rpp3HAAQdU/AdPuZENqwEzgLIWK6yx0bFERFQc0ZjZ32NbALdWx5GHuDYiUclUNHA677zzMHfuXPz9739HY2Mj1q5di7Vr12L79u3WNpdffjlOPfVU6+Of/vSnWLlyJS655BIsXboUs2bNwp133olLL720Ei+BCiAP5tY6Tiqn6hERUeHk6O2gmljHqdbGcetJC+DynEpUfBUNnG677TZs2rQJRx11FNra2qz/7rvvPmubzs5OrFq1yvp4+PDhePLJJ/HCCy9g3333xW9+8xvccsstHEXuI/Jgbg7+sQIoHuSJiKgQ1kS5gGK7GVdbC8DGkhbAjdXY6ycqh4r2OIkc0uhz5sxJeezII4/EokWLSrBHVA6yJM/KOHEdJyIi6gVrAVxVhZwTVWvnFD1pAdxae/1E5eCJ4RBUW3Srx0lx/L/W6tGJiKg4YrqACgODvngT4e71OFj9CkI/uNK7VVbscSIqPQZOVHZyOIQsp1BrtB6diIiKY/9tL+OW8EwMfmkjAODeEPD5hgFAx/8Co6dUeO/KI7nHiedUouKraI8T1SZ5MFcV53AIgwd5IiLKV8c8XLb5d2jFRsfDLcbnwP2nAh3zKrRj5SV7msIcDkFUMgycqOxkSZ6VcVI4jpyIiApg6MD8aQAA85RisS5w5l8W366KGYaAjJPkOlbMOBEVHwMnKjs9qVTP6nHiACAiIsrHyleBrjVQ0m4ggK7V8e2qmP3GIzNORKXDwInKTh7gtaRSPY5OJSKivGxZV9ztfMoeJDFwIiodBk5UdrqeplSPcRMREeWj76DibudT9iCJU/WISoeBE5WdntTjFNA4jpyIiAow7FCgaTDS33dTgKad4ttVMXs/k1zHiT1ORMXHwInKLmUcORfAJSKiQqga0H49ACD5FGIFU+2/j29XxZwZJ818jGUcRMXGwInKTmackseRM3AiIqK8jZ6Ci/RLsBYtjofXoz9w8t01sY6T7BFWFSCocW1EolJh4ERllzxVT2PGiYiIeuFJ/UAc3nML9D7xXqZ7YkdjinZbTQRNQGIqraYqXBuRqIQCld4Bqj0pgZPGdZyIiKgwQggzu6ICSvx+8BoxAFGRfkh5tZEZJ3vgxIwTUfEx40Rlp9vujAGJjBPvjhERUb6ieuLcoegRAEBQidVU4CBvSAZUFQGVU/WISoWBE5WdkbSOk3mMr6mTHBERFYd9DUBF7wEAaDBq6mZczFbJwYwTUekwcKKykwdzNSnjBDDrRERE+YnGbOcNmXGCXlOBg+ESOPF8SlR8DJyo7AyrpMBcx0lNvA3Z50RERPmIWhknYZXqBRCrqVI1ZpyIyoOBE5WdnpRxssVNNXWiIyKi3ouajbN9NN16TINRU4GDbrshGeASH0Qlw8CJyk5P6nGSd8cAHuiJiCg/MXM4RL2aCJyCiAGonXI194wTF8AlKjYGTlR2iXHk8Y9VW48TS/WIiCgfETPj1FeLWY8FEA+iaiXrpJtBUkBVENCYcSIqFQZOVHaJwCn+9guoHA5BRESFkRmnBlvGKaDEA4laCR7kMh+qqnBReaISYuBEZWeNIzfffSzVIyKiQskepwZbj1PALNWrlSqGmC3jZE3VE7wZSVRsDJyo7KzhEOZdMUVRIKv1GDgREVE+ZOBUr6aW6ul6bZxT7JUcnFRLVDoMnKjs7E2sklVawIM8ERHlQZ5T7MMhAjDMz9XGgISYbaqeprGKg6hUGDhR2SWv4wQkgige5ImIKB/RWGrGSU7Vq5VzimEIqDCwd2wxQksfwsFqB1QYNfP6icolUOkdoNojs0r2aXqJlc4rsktERORTUTM4qFNsgZMcDlEjVQwtq/6FV8LTMXjTRuAR4N4QsEa0AEv/B9j3W5XePaKqwcCJys7IUKpXK2UVRERUHFbGyTYcIqiY48hrocepYx72XXghBJyvtRUboTxyOhDSgNFTKrRzBTB0YOWrwJZ1QN9BwLBDAVWr9F4RAWDgRBUga7FVW+CkWlOAauAkR0RERSNvuNXBZThEtZeqGTowfxoAAdspFQCgKoiHUvMvA/Y43h/BR8e8+OvpWpN4rGkw0H69v4I/qlrscaKy0116nAJWj1NFdomIiHwqYmaV6uw9TmbGqepL9Va+CnStgZLm0woE0LU6vp3XdcwD7j/VGTQBQFdn/PGOeZXZLyIbBk5UdtY6Tkpqxqnq7w4SEVFRxcw7bmElaj0mp+pV/Tlly7riblcptsxZKvOx+ZfFtyOqIAZOVHa6S6keVzonIqJCyHWc6hRbjxNqpMep76DiblcpZuYsPR9lzqiqMXCistPdhkOoXMeJiIjyF5WlekrEeiyg1Mg48mGHAk2DIdIU6wkoQNNO8e28rFoyZ1T1GDhR2cngyDVwqvaTHBERFZUs1Qsp9uEQNTKOXNXigxMAJJ8+rY/bf+/9wRDVkjmjqsfAicpOThzX3NZxqvaTHBERFZXMOIUdU/VkxqkGJg6NnoLn974Ra9HieHgt+mP1hNv9MY3OzJwhw5gLX2TOqOoxcKKycyvVk/+s+np0IiIqqqgZHIVgHw5RIz1Opv/ueDQO77kFa4PDAAD/Ug7H4T1/xFe7tFd4z3Jky5ylBk/mx37InFHVY+BEZWet48SMExER9VI0Fj9v1GSpnilmCBhQEdPCAICNakv8Yz+Vv4+eApx8N9DU5ny8aXD8cT9kzqjqMXCispPBUUCzB07xtyJ7nIiIKB9yAdyQsGecamQ4hMmq5DBfd0iuY+W3UsXRU4CLlgBqMP7xEb8ALlrMoIk8g4ETlZ3umnEyP1cjdweJiKg4InpqqZ4mS/VqJHCSJYmaiL9uuQCwL0sVVQ0QZsDXshvL88hTGDhR2Rlu48jlOk5+PMgTEVHFyOAgaB8OIcyMU42cU6xptebrlutY+fJmpBCAGQDCiGbelqjMGDhR2ck7gPapeirXcSIiogLIBXCDLhmnWjmnyJI8Waonh2P4slRRj7r/m8gDGDhR2Vl3xmw9TgE5HMKPB3kiIqoYOY48KFwCpxo5p1g3JJNL9fz4+u1ZJiOWfjuiCmDgRGVnuGWcFGaciIgof3IB3IAtcFIhoMLwZ+BQAF1PU6rnx1JFZpzIwxg4UdnJ4Ei1vftkv1Ot3B0kIqLiiLoETkC8XK1WqhisZT7MjFPA1xknW5aJPU7kMQycqKwMQ0AmlTSXdZwYOBERUT6ihizV63E8HoDuz8ChAHKZD1U4e5x8uTaiI+PEUj3yFgZOVFb2UryALeXEwImIiAoRjZmDEVIyTjH/rWNUoESPkzNw8mXg6OhxYsaJvIWBE5WVPTBylOqZ2Sdf3h0jIqKKkcFBwEgOnGqvx0m1epzkAsA+DBzZ40QexsCJysoeGNnXcZLjyGvlJEdERMUhe5w0EXE8Xms9TioMKDAzT/DxArjscSIPY+BEZWUPjFQldQHcWjnJERFRcViBU9JFdhCxmrkZZwjhXADY/LcvqzjY40QeFqj0DlABDB1Y+SqwZR3QdxAw7FBA1Sq9VzmxB0YBW8ZJrunEHiciIsqHXMdJNZwZJ00xauacEjOE1dcEAAHBHieiUmDg5Dcd84D504CuNYnHmgYD7dcDo6dUbr9yZD+J2Uv1NGsdp7LvEhER+VjMyjg5A6cgYjUTOOmG4Qyc/LwAsD3LxB4n8hiW6vlJxzzg/lMh7EETANHVCdx/avzzHien6ikKoLiOI/dhIysREVVMJE3GqZbGkcd0YS16CwCaWarnzx4ne8aJpXrkLQyc/MLQgfnTICCgJH1KgYi3g86/LL6dh8m7X/Y1nIBEv5POuImIiPIgM06qnhw41U6pnm4Iq68JADTh54wTp+qRdzFw8ouVrwJda1KCJkmBALpWx7fzMCtwUp2vRPY7+bKRlYiIKiaeVRKJjFOgPv6/GhoOoQuBgGIv1YtZj/sOe5zIwxg4+YSxeW1Rt6sUWYmXHDipXACXiIgKEIkZjjI1hBoA1NY4ct1IKtUTMetx32GPE3kYAyefWLq5oajbVYq8+5VcqqeZ78RauTtIRETFETMMhGC7wA71AVBbC+DGdOdUPVmqxx4nouJi4OQTHzfshTWiBenOAYYA1oj++Lhhr/LuWJ7k8Ac1KePEdZyIiKgQUV0gbA+cgmbgpMRqZuBQPOOUCDJUWarnx9fPHifyMAZOPjGwqQ9mRE8FgJTgSX48I/r/MLCpT5n3LD9y+EMgOXBS429FX9ZjExFRxUR1W8ZJDQCBEAAgCL1mBg7pIjnj5OceJ1uWiT1O5DEMnHxi3PAWvNd4BM6NXoQv0ej43Fr0x7nRi/Be4xEYN7ylQnuYG1lvnZJxMt+JzDgREVE+orqBkGJebGvhePAEQIPuz4xLAZIXwJWBky9LFR0ZJ5bqkbdwAVyf0FQF0yePxjlzuxGNqrgz9D8AgB9FLsdrxp4woOK2yaNThi54Tdpx5OZ++/IgT0REFRPTRSLjFAgBajD+zxpax0k3DNSlBE4Cuu97nJhxIm9hxslH2se04bZT9kPfYOLX9h/jaxjY3IDbTtkP7WPaKrh3ubGGQ6TpcfLlBCAiolpl6MDyl4HF/4z/v8xrCQohEDMEwrBlnLR44BQv1auNc0pMFwgozuyM5tfhGOxxIg9jxsln2se0oeutRmBF/OM7T9kbB4/ezfOZJonrOBERVYmOecD8aUDXmsRjTYOB9uuB0VPKsgtRM6OSyDiFAVUDIEv1auOckjyOHIhn3Hz5+h09TizVI29hxsmHopHE6uj77NTXN0ETkAiMuI4TEZGPdcwD7j/VGTQBQFdn/PGOeWXZjZjZwxSSGadA2CrVCyo+DRwKkDwcAgCCiPlzOAQzTuRhDJx8qKenx/q3bgui/ECuKZEc67FUj4jIJww9nmmC2/HafGz+ZWUp24vGzIyTYl5g20r1aqvHKTVwCkBnjxNRkTFw8qFoNBE4xWz/9gNmnIiIfG7lq6mZJgcBdK2Ob1diUSvjZB8OEe9CCED3Z8alADHduY4TEO/x8mXgaJ+kx6l65DEMnHwoGrEHTv7KOCV6nJxvPdnjVCsnOSIi39qyrrjb9ULUXKipQTWzLbZx5L7NuBQgbcbJj+PYmXEiD2Pg5ENRW7Ckx3wWOFkZJ+fjMgPFdZyIiDyu76DibtcLsvy7TpU9TqGaLNWLGQIBJSlwUmL+fP3scSIPY+DkQ4Y9cPJZqZ68+5eyjpPCdZyIiHxh2KHx6XlIN5hIAZp2im9XYhEz41Sv2hfAtY8j92HGpQCGSJ2qF4Tuz0m1jql6DJzIWxg4+UwkZkDY7sD4NeOkJq/jxHHkRET+oGrxkeOuzGN7+++tseClJDNODYot42QfR14jp5SYbiCQ1OMUgG79fHzFkXFijxN5CwMnn9m0PYqgLR2vx/x1N0aW4gXSBE4cDkFE5AOjpwAn3w3UNTsfbxocf7xs6zjFM0p19h4nzT6OvDYyTm7rOPl2AWD2OJGHcQFcn+nqjjom5xh+K9WTGSeFgRMRka+NnhKfnjf/MiBQD/zogXh5XhkyTZIVOCn2BXBlj1PMnxmXAsRch0Owx4mo2Jhx8plN26OOg6PfMk6JqXpJgRPXcSIi8h/ZjyIMYPjXyxo0AUDUGg4hM072Uj2jZsq/DSGgJQVOvn399h4niLKsB0aUKwZOPrNpe1LGyW89TmkCJ2sdJx8e44mIapbMCOg9QAUu0mNmxilszzhpieEQvsy4FCCWplTPlxm35CwTs07kIQycfKYrJXDy1wElXeAU4DhyIiL/qXBZVdQ8Z4St4RDOUr1aqGIwDAEh4DqO3JevP7mviX1O5CEMnHymK6lUz28ZJ1k2kDKOXJXjyGujkZeIqCrYL2r18vfcRmNmxgn2ceRyAVzDnxmXPMmsmmvGyY/n1ORJesw4kYcwcPKZ5Kl6QvdX4CQP8CnjyBWZcSr7LhERUaHs56AKXODKwCBsH0euycDJp+sY5UlmldzGkVdHxokjyck7GDj5TFd3LCnj5K8DiizFS844aeY7Ua+BkxwRUdWwZwdi5c84RcyMUgjmxbZtAdyA4tOpcnmS583UqXq6P8+p7HEiD+M4cp/ZtM3Z4yQqUBrRG1aPk5YcOKmOzxMRkQ84Mk7lPx/J4RAh2HqczClsARg1cU7R9XSlej4dx56cYWKPE3kIAyefiU/Vs5Xq+SzjJI/haTNONXCSIyKqGvaL2gr03Mp1nMJWxikEmGV7tTIcQpYrumac/Pj6UzJO/rrOoerGwMln4us42TJOhr96nOQq7injyLmOExGR/+gVHg5hZVts48jNU2TQr4FDnuRrDKVM1fPp6+dUPfIwBk4+09WdVKrns6l65s1BK1CSZCBVC428RERVQ/dGxilkzziZpXoaDH9OlcuT7GMKKqlT9djjRFRcDJx8Jnmqnt+mzcjAKJA8VU9lxomIyHccPU7lD5xibhkn87wYrJVSPd09cAqwx4mo6DhVz2c2Ja3j5Lc7MXqWceS1cJIjIqoa9ovcSpTqmRmloLBP1UuMI6+Fc4pVqueyjpMvXz97nMjDGDj5iGEIbOmJOUr1KnGHrzfkaFgt6Z1nZZz8WFZARFSrKl2qF0vOOIWswElTjJoYR24tgJuScdL9+frZ40QexsDJRzZ3xyBE0shRn2Wc0q3jpLJUj4jIfyo9jlxOlLNnnLT4Ok61UqqnJwdOgfr4/6BbA5l8JTnD5LPrHKpuDJx8ZNP2+MHDzz1OMqMk122SZM+TUQMnOSKiqmFUegHcpMApYFsA16+lanmSr9Eq4w/GA6eg4tPAUWaYFPM6wWfXOVTdGDj5SFd3/GAStgVOis9K9Yw0pXpyyp4vywqIiGqVR4ZDBOTSHIEwoGrxf9bKArgy42TNYW8A4OPAUWaYgn2cHxN5AAMnH5EZJ/taDYrP7sTE0g2H4DhyIiL/cazjVLlx5JpLqV4AMcQMAVHl5xWrXFFxZpz82+MkA8B682MGTuQdDJx8pCpK9dL0OHEcORGRD1V6OITMOAn7cIhEqR4AVPtpJZFxSirV833Gqd75MZEHMHDykS4ZONmm6qmGz0r1uI4TEVHVELZswIr1X5b9GB7POAlo8lyYNI4cqP7zSiylx0mW6sV8mnGSgVOD+bG/bhBTdWPg5CMy42Rfx8lvpXpcx4mIqDrMX9KJzz7fZH18/2sf4/Drn8P8JZ1l24eYbiAAHQrMc0cgBGhm4KTURuBkpBsOITNufnr9QqSW6jHjRB5S0cDppZdewuTJkzF48GAoioJHHnkk4/YvvPACFEVJ+e+DDz4ozw5XmBU4iUSw5NfAKW2pXpXXohMRVYP5SzpxztxFUGwZp7ASw9pN3Thn7qKyBU9RXSBkX9tQS0zVk4FDzI8jufOQyDilDoewf94X7Nc0VsaJgRN5R0UDp61bt2KfffbBn//857y+btmyZejs7LT+GzFiRIn20FvkVD3NFjipwl8HlHQZJ9UaR172XSIiojzohsCMxzog4CwdDyEq8z6Y8VhHWTI9Ud1AGLaS9UBiOIRmZVxKvhsVlW4cuS8zbvbskpVx8tcNYqpugUo++cSJEzFx4sS8v27gwIHo169f8XfI4zZtjwEQUG2leqrfMk5pepwCzDgREfnCG8s3onNTNwBn6bgMogSAzk3deGP5RhyyW/+S7kvMsGWcFC0+ijypx6l2Mk7JpXox8/MGAK0Su5Y/wyVwYsaJPKSigVOhxo4di+7ubowePRpXXnklxo8fn3bbnp4e9PQkFuXr6uoCAESjUUSj5fljlM/T2+f7amtPYmqOSRHlex3FEIuZJzBhOPbbMO8o6YZAJBKBklTKV4uK9b6h2sL3DRUq1/dO51dbrX87M06xlO2i0aYi7mGqnqiOkBLfXxEIIxaNAgYQRKJUrzsSRTRavS3dkaizjF/X6qAhEUj1RKKoK2HcVNRjTs92BM1/GloYKgA92g2Dx7Oq46VzVT774KvAqa2tDXfccQf2339/9PT04G9/+xuOOeYYvPDCCzjiiCNcv+a6667DjBkzUh5/+umn0dDQUOpddliwYEGvvn7VWi1Rw2wyIt148skne/V9y+nT1SoAFR98sBRPbuqwHt8SBeTb8Yknn4LKuMnS2/cN1Sa+b6hQ2d47/92kQGYw7DfzQnBefPz3/Xfw5GdvF33/7NZtUK2ALWooeOrJJ1EX2YjjkAgcFjzzLHYIl3Q3KurtL+K/D1m6/99VazACidf/r6cXoG8w/dcXSzGOOeHoV2gHIKDg0871GAbgw6Ud+PBL/1znUH68cK7atm1bztv6KnAaOXIkRo4caX18yCGH4NNPP8WNN96YNnC6/PLLcckll1gfd3V1YciQITj22GPR1FTaO2FSNBrFggULMGHCBASDhR+9bv7wFQS3bHU8FtaASZMm9XYXy+aprneBL9Zh7zF7YtJBQ63Hu7ZH8au3ngcAHHtcO0KB6r07mKtivW+otvB9Q4XK9b2jGwL/vOklrOvqcWaclPi/FQCtzWGc/70jrME/pXLX6jfQvXkVACBY1yd+PtyyHnhfrnkocORR47HzDvUl3Y9K0t/rBD5cjCDiFR277jEGWP+EtebjUUcfg4GNpYsci3rM2fQZsASAFsLOw4YDX7yIr+0+HLsf4Z/rHMqNl85VshotF74KnNwcfPDBmDt3btrPh8NhhMOpB4xgMFj2X1Rvn7OrO5ZSqqchVvE3XD5kB1MwEHDsd9hInFy1QADBoE/qscugEu9V8j++b6hQ2d47QQBXT9kT5859CwEl0T8UQhTySD598p6oC4dKu6OIB3Ey46QE6+L7HU4ESRoMKKpW3X8LSvxGo2b+HLRwXwBAyLxeKNfrL8oxR41fJShaEFogfu2mwYBWzb+/GueFc1U+z+/72/pvv/022traKr0bJSeEwKbtUUcjLuCcsOcHunmOTb4LaR9P7qvRqURENah9TBtu+8HejsfCiKG1uQ63nbIf2seU57wc0UWiRFAzb5JqiYugAPSqP6fEX5+AZmacrOEQvpyqZ17TqIHE75HrOJGHVDTjtGXLFnz88cfWx8uXL8c777yDlpYWDB06FJdffjlWr16Nu+++GwBw8803Y5dddsGee+6JSCSCuXPn4sEHH8SDDz5YqZdQNtuj8YN/UHEGSv4LnOIH9uR1nFTVvo2PDvJERDXquD2cE/MOGNIXr5x1dMnL8+xiumGVCMLMUMipekA8cDKqfFqrYQhnNYq5/pF8zFfnVDlBTwsmfo8+mx5M1a2igdNbb73lmIgne5FOO+00zJkzB52dnVi1apX1+UgkgksvvRSrV69GfX099txzTzzxxBO+6vEplFz8tk5xjlX1XeBkHr+TT6wBW+Tkq1XOiYhqlR5xfLhDyEC5J/tEdcOWcTJLA9WkjJNe3eeUmCGsNasApKzj5KuMm8wuqUFmnMiTKho4HXXUURAZ7gTNmTPH8fEvf/lL/PKXvyzxXnmTDJz61SmALXbSkkr3vE4GRcmBk/1DruVEROQDSZkAoUdQ7oGoUd22jpOVcUr0yAah+yvjUgA9TcYp4MuMk/m71AKJAJjrOJGH+L7HqVZ0bY8fTJJHqgaFvw4o8gCuJgVOiqJYwZOvDvJERLUqKeMkYj1pNiwd14yTolhlXhr0mlgA17FUSbAu/j8/LgDsyDiZ9/Z1f1XWUHVj4OQTMuPUnBQ4+S3jJIOi5B4nIJGFYuBEROQDSSVUlQicYoZA2FwA18o4AVa2IqjURo+TNThK0awAUpbq+SlucvY4MeNE3sPAySdk4NRk3lAT5vjR5AVxvU6W4bk1DzNwIiLykeTekwplnMLJGSfA6o8JIFYTPU5WqZ6aKHHzf8aJPU7kPQycfKJLZpxC8ROACJhTc/w2HCJNjxOQyEJV+91BIqKqkJQJEEmle+UQL9VL6nECrD4nDUbV34zTDcPKLkFLlLjJG6u+ev2GfB0B21Q9Bk7kHXkFTjfccAO2b99uffzSSy+hpydxh2nz5s0499xzi7d3ZEnJONnXafBRoGFYGafUz8m+J19NACIiqlXJgVKs/IFTzG0dJ8CRdan2gUPxjJNt/SNVBk4+nKpnuGWc/HWDmKpbXoHT5Zdfjs2bN1sfn3DCCVi9erX18bZt23D77bcXb+/IIgOnvkHzAGhOzQGQuEPjA7JkQs3Q48Rx5EREPpB0Qavo5S3VE0IgZtin6qUp1avyc4pu73Gy9Qb5cqqezh4n8ra8Aqfk0eGZRolTcXV1xw8cjWbgJIJ9rM/pFagrL5TMONnXbZICsseJ7ysiIu8zM049Ip7hUMpcqhc1b8SFFLeMU7xULwADepX3ODkCJ1umJiD8WKpny5zJjBMXwCUPYY+TT3QlZ5xC9dbnopHyl0cUKjGOPPVzMgvlq4M8EVGtMjMB2xAff13+wCk+9MC9x6m2Mk7WcAhbb5Dm+4wTx5GT9zBw8glZqtfHXNdPsZXqxSpQV14oa6oex5ETEfmbeZG7VQZOQi9r6bgs/bZ6nOyBk1Y748gd6zjZM07mY74KHN16nFiqRx4SyPcL/u///g99+/YFAMRiMcyZMwcDBgwAAEf/ExWXFTgF4nfYlGAYulCgKQJ6xD+lepmm6jHjRETkI2bgtE2EAXlI1yOAWp/+a4ooYmWc3Er1ZNbF8FfgUADdEPFBUYCjN0iDAUBA9+M4ci0xVp3jyMlL8gqchg4dir/+9a/Wx62trfjb3/6Wsg0VX9f2+J2jBhk4aUFEEYCGKKI+6nHKFDgFNI4jJyLyDbM0bytsgVKsBwiWJ3CS6xPVqS7DIdTESG5fBQ4FiBlGUo9T4tIuCN1fgaNhz5xxHDl5T16B04oVK0q0G5SNzDg1aPEDoKKFEEUAYUShR/1zUDFyWMdJr+5zHBFRdTAvcrcLW8BSxj4nWapXp5gX25pLqR70qj+n6AZsU/VsmRrIwNFHgZPbVD32OJGHsMfJByIxA9uj8YNivZa4qxRDvOFJj/qvx8ltHHliHacqP8sREVUDM0iKIoAeYV7klrECQpbqhZX0Gaf4ArjVfU7RDcO2jpOtNwgycPRR4MQeJ/K4vAKn119/HU899ZTjsbvvvhvDhw/HwIED8ZOf/MSxIC4VhxxFDgBhxTwBaEHElHjgFIv652eeqVRPZpyq/BxHRLXC0IHlLwOL/xn/v4/W3MuJmR2IIIAeWcBSgYxTGC4ZJzNwCtbAVL1YmnWcgHgmylevX2aX2ONEHpVXqd7VV1+No446ChMnTgQALF68GGeeeSamTp2KUaNG4Q9/+AMGDx6Mq6++uhT7WrNkmV5jXQCqSKSxY4gfVAw/TdUz5DpOGabqsceJiPyuYx4wfxrQtSbxWNNgoP16YPSUyu1XMZmZgBg0RBAEsL2sGSc5jrxOiQICrlP1An7LuBTAuY5TIL7eh6ICwvDf63dknGSPE0v1yDvyyji98847OOaYY6yP7733Xhx00EH461//iksuuQS33HIL7r///qLvZK2TgVNTXTBxN8Zeqhfzz92YxDpO6QMnw08HeSKiZB3zgPtPdQZNANDVGX+8Y15l9qvYzExAFAFEK5BxstZxsnqc7KV6ZuCk+CxwKIBzHSczS6PKHq9q6HHyzzUOVb+8Aqcvv/wSgwYNsj5+8cUX0d7ebn184IEH4tNPPy3e3hGAxOK3zfXBxElJC0JX4icq3UelevL47baOU6LHKfNBXjcEFn7yBR59ZzUWfvKFv04KRFTdDD2eaYLbccl8bP5l1VG2ZwVOGiKiEoGTLNVzWcfJmqpXG4FTQLFN1QMSGTe/BY5WxinAHifypLxK9QYNGoTly5djyJAhiEQiWLRoEWbMmGF9fvPmzQgGgxm+AxVikz1wMmylekoAEIDho4yTHPzg3uMU/3+mg/z8JZ2Y8VgHOjd1W4+1Nddh+uTRaB/TVtydJSLK18pXUzNNDgLoWh3fbvjXy7ZbpWDEIlABREUAEaX8wyFi1jpOLhknLRE4+arHpwAxQySGQ8jyNtWnr9/qcQpar4FT9chL8so4tbe347LLLsPLL7+Myy+/HA0NDfj61xMH/vfeew+77bZb0Xey1smMU1N9wFGqZ5hxr596nOTgB9d1nNT42zHdOk7zl3TinLmLHEETAKzd1I1z5i7C/CWdxd1ZIqJ8bVlX3O08TDfPPfEeJ3mRW/6peiHXjFOt9jg5M07xqXo+mrjEjBN5XF6B07XXXgtN03DkkUfir3/9K+644w6EQok7PLNmzcKxxx5b9J2sdV3d8WApbamejwInOfjBLXAy4ybXk5xuCMx4rCNT8QtmPNZR9SdIIvK4voOyb5PPdh4ml8KIImAOhwBQxvORnKoXrPFSvZSpeoAtcPTZVEHdNhyCPU7kQXmV6u244454+eWXsWnTJvTt2xeapjk+/8ADD6CxsbGoO0hJpXq2g4oMnIRPSvWEEInhEC49TtZUPZeD/BvLN6ZkmhzfG0Dnpm68sXwjDtmtf3F2mIgoX8MOjU/P6+qEe5+TEv/8sEPLvWdFJ2/axQOn8mecoimlevapenIcuc9K1Qpg2IdDWBmnxOv31cAlw1ZyKINAoQNCAC7XDUTlllfgdMYZZ+S03axZswraGXK3aZttql5Xov7XMO+oiTI24/aG/djtmnFS0gdO6zenD5oK2Y6IqCRULT5y/P5TXT5pHvfafx/fzucMs5/JORyifDfyonJ5C5G+VE/zW6laAWKGgUBKj1OiVNFXgaMj4xRwPm5f4JioQvIKnObMmYNhw4Zh7NixEFxrp2zkArjNDUHgy0SpnqHIHid/ZJzsAZF7j1P6dZwGNtbl9By5bkdEVDKjpwAn3w08diGw/cvE402D40FTlazjJM89MUepXvmHQ1ileo5x5GapnqJje3XHTdU5VU8LJjJO1uMMnKqFbgi8vnwj/vO5gv7LN+KQ3Qe6Xhd6UV6B009/+lPce++9+O9//4szzjgDp5xyClpaWkq1b2RynaqnJgIn/2ScMgdOmdZxGje8BW3NdVi7qTtd8Qtam+swbjjfj0TkAaOnAN1fAfMuiH982mPAsMOqItMkycFEERFARKlcqV7QLeNkG46wpeozTpnXcfJnximQCALtj5PvOacja7j7o7d8NR05r+EQt956Kzo7OzFt2jQ89thjGDJkCE4++WT861//YgaqhFwXwNWC0M2DivDJAcWRcXJbx0lJv46TpiqYPnm06/eV32n65NG+uWNBRDXAfmwecnBVBU1A4twTn6pX/uEQUV1Agw4VclyrS8bJb6VqBTAcU/XMANY2jt2fPU7JGSeOJK8G1TAdOa/ACQDC4TB+8IMfYMGCBejo6MCee+6Jc889F8OGDcOWLVtKsY81zwqckqbqCdVf48jtJy/V5Z1nZZzSBOHtY9pw2yn7oaWPM13f2lyH207Zzxd3KoiohtirAcqYiSkXYR8OISqTcbJGkQNpp+r5KnAogHMdp+SMk88CR3uPk6IAiuZ8nHyrWqYj51Wql0xRFCiKAiEEjCpPhVdSV5pSPaH4a1Sn/eQVcImcMk3Vk9rHtKEhGMCps98AAMw8ZT9MGN3KTBMReY8jcPLHcTofMuMUhYYoyj8cIqYLhO2Bk5ZaqlcLGSfdENBk1i2px0nz2zh2e4+T/H9M51pOVaBapiPnnXHq6enBP/7xD0yYMAEjR47E4sWL8ec//xmrVq1C3759S7GPNc0wBDb32Ndxsk/V89ficPahD25xTi6BEwDERCJI33vnfgyaiMib7NUAZRyaUC6yvzaKAHoqMBwiohuJUeSKmpgoBzjWMfJV4FCA+DpOyVP17KWKPrqxLa9xVOd0wGq88VBrqmU6cl4Zp3PPPRf33nsvhg4ditNPPx333nsv+vf3blRYDTZ3xyDjjab6gONujLDGkfvjgCIzTqoSz1Ym0zKMI7eLxAzXfxMReYoj4+SPkuq8OHqcyl+qF9MFQoo8J4adnzT7yQIwaiLjlLqOU6JUz1eBY0rGyXxfscfJ96plOnJegdPMmTMxdOhQDB8+HC+++CJefPFF1+0eeuihouwcJUaR1wVVhANa4uSrBiF8didGnrzSZYjUDOPI7SJ64vNyqhIRkefYg4iqDJzirymmBCs0HMJIlOolr/FjG8dd7T1OznHkSes4+W0cub3Hyf5/n1znUHrVMh05r8Dp1FNPdc0UUOk4RpEDjlI9GTgpPjmg6FkCp0CGceR29ixTDzNORORV9mNzVQZO8fNRIBBCJFqB4RCGrVQvJePk03HcBXBknJIyNUHEsM1Pr99IKjnU/NWSQOnJ6cjnzF0EBXAET36ajpz3ArhUXo5R5IDr4nDCJylsOS3PbRQ5YMs4ZYmFHKV6zDgRkVfZ+32qsMcJRjwYDIRCiETLn3GK6SIxVS+QVN5jluppMPyVcSlAzDBSx5GrieEYvnr9KRknGZD74zqHMpPTkRPrOMW1+mgdp15N1aPS60rJOCVK9eQBRfHJnUx58FbT3E1I9DhlDobs5XlRZpyIyKuqvFRPMS9mg8GwbapeeUv1rIxTmlI93/X4FEB3DIdw9jj5bqqg21Q9++Pke+1j2nD0HoPwtSufAgDc+oN9cNxeO3k+0yQxcPK49KV6IQhzsT9F+ONOTLZSPS3XHqcCM066IfDG8o1Yv7kbAxvjdbR++UMlIh+q8lI9xcw4hUJh9FRgOEQ043CIxFQ9XwUOBYi5DYewreOk6z56/dZUPfY4VTP7zYxDduvvq2sxBk4e51j8FrDdjQlA8dkBRQZEgWyBU7ZSPT3/qXrzl3SmpIbbfJQaJiIfcpTqVWPgZGacwmF0VWg4RNqMk1mRES/Vq+7KhHjGKanHyZoqGMt6M9JTbNc4jv8z41RV7NduIS3vlZEqyl97W4PkVD3XUj3zgKL65IBileql6XGSgZORR8Ypl6l685d04py5i1IWXlu7qRvnzF2E+Us6s34PIqK8VXnGSZ57QqE6RIS5PEYZe7liupHocUrOOFnDEXxWqlYA16l6tqmCvipVZI9TTejRdevfQc0/2SaAgZPnpWScbKV6kKV6fhkOYcY4aceRmwFVLEtZgT3jlG2qnm4IzHisw3X0pXxsxmMd/jqxEJE/OHqcqm84hCwTrwuHrXHkRhkDp6guEE6bcZKBQyzrzTi/i5fqJfU42Ur1fBU4Jvc4qexxqkZRXQ4LE76b1s3AyeM2bY8fDJvqktLVWgCKeWDxS4+TXL08fcYp/v98Mk7ZSvXeWL4xJdNkJwB0burGG8s3Zvw+RER5q/JSPc08H4XDYWsB3HJmnKK6kaHHKb4/ARhZb8b5naNUz1oAV75+3V+lilaPU9I4cp+0JFBu5LVbwIdRiA93ubZkmqqnBOKP+aVUTwZEgTRpWU2Nvx2zZX8cU/WynBDXb04fNBWyHRFRroTtYu/jtRurLrOtmjftgqE6xKzAqVIL4CaX6iWGQ1Tbz91OCJG0jpNzHHnQb68/JeMkbxr74wYx5cYKnPyVbALAwMnzHFP1hLAtDhe0hkOowh+Bk4x30q3jZI0jzyvjpGfYEhjYWJfx8/luR0SUi/lLOrH0sw3Wx3NeWobDr3+uqnoq5bknEAxaU17LuV5VzLCt46S5D4cIQPfXcIQ8yZgoNeNUJes4MeNUlZhxopLpsvc42e+4aEEoZk23amQOHrwi6zpO5rsx2+jUfMaRjxvegrbmOqS7qaEgPl1v3PCWjN+HiChXciCNYrvYCyJWdQNpNDPjpAXDMGSpXBmHYERi9ql66Uv1fBU45EmWwKes42RbANc3PU6GDqv7mD1OVS1iDodgxomKzpFxsp+Q1KDV46T5JuMkmwHTDIfIdR2nPEr1NFXB9MmjASAleJIfT5882ldrCBCRd9kH0ljZEAAhxKpuII0MnAKBEIQVOHkk42Qr1avmHif5Pgoq7j1OQT9N1bNnldSkceTMOFWVSEwuT1PhHSmAD3e5dgghnOPI7QcOLQhVZpx8MhxCBkTpghS5vpOR5SBvzzhlm6oHxFepvu2U/TCoyXlHsrW5Dredsh/XcSKiorEPpLEmndn+XTUDaQwdqhkKaqEwFDnltYwZp5huIKSkyziZPT5+ChwKILNJgTQ9Tr4KHA3nNQ4AW8bJH9c5lBt5A9yPGScugOth26O6lVFprg8Csa2JT6r+C5xkQJR1HHkewyFyXQC3fUwbDt61P/a9ZgEA4IKjd8dF3/gaM01EVFT2QTPWRT2QmP7msp0v2QKkYDAEEQgDkfIGThHdlnFKGQ5hWwC3mnuckgMnlx4n34xjd2Sc2ONUzdjjRCUhy/Q0VUFDSEucqBQNUFWo5lS9gM9K9dL3OBVSqpf7mFX7Xcdh/fswaCKiorMPmkku1Uu3nS/ZLmQDwbB1Pip7xsnq7UnX4+SzqXJ5kjcaU9dx8uECwPaskqqZ/2ePUzXy81Q9Zpw8rMtcw6m5PhhfIEx3julUzdIITfhjOETM6nFy/7xWQKlerhknwBlw5fN1RES5kgNp1m7qToyIRiJwUhAvE/b9QBpH4BSCYmZ8VCMSnwBbhkUtM44jdywAW73Hez0l4+Rc/8hXU/XsE/Xk+8fqcfJHZY2DoQMrXwW2rAP6DgKGHZoICGucHA6hqT55b9owcPKwTclrOFmjyM2AKeizUj25jpPqnui0Mk7ZAidbvXZegVMeY8yJiAohB9KcM3dRUsYpWl0DacwMgC4UhEMhZ8ZHjwKBUJovLJ6oLhLlkCnDIRKlelUcN9kyTrLHydkbFETMP4Fj8hpOgH8zTh3zgPnTgK41iceaBgPt1wOjp1RuvzwiKodD+PAwyFI9D5OBU1Nd0lQZ846S7HEKwB+BU6JUz/3z1jpOeWSc8inVy2eMORFRodrHtOG2H41FWLEPh9CrayCNeT6KIYBQQIUStAdO5ZmsF9WN9D1OVqmajwKHAuTU4+SXly+zSqotcPJjj1PHPOD+U51BEwB0dcYf75hXmf3ykB7dvz1OzDh5mGMNJyDR4yTHkFs9Tv4InIwsU/VyHkduyxb15BEA9RRY4kdElK/2UQMcHx89ohnf/X9H+z/TJJnno4gZOKn2DFMsAoTTfF0RxceRp8k4qT4sVStAzBBQYUBVktc/Mnu8FB+VKloZJ9ulqSw99MtUPUOPZ5rg9p4TABRg/mXAHsfXdNmen3ucfBjr1Y7UUj3nehWaeYdPgz/KzuRIVDVN7XuuGadooaV67HEionJJGpLQUpf+ppEvmReyMWgIaSpCwSBiQq5iXqaMUyxDxklmXBQDsSquMNANwzH2PrnHKeinwNHe4yT5LeO08tXUTJODALpWx7erYZyqRyWxKSXjJNPYZu12MLFOgx/oVo9TmnWczKkR2UanFlqq1xPNb/0nIqKCJQVORrR8C8OWhfn6ombGKRTQEEFSdUSJRQ3bcIiUqXqJu/mKT6oyChEzRKJMD0jpcQog5qOpelXQ47RlXXG3q1LMOFFJOBa/BVxK9eKZp6BPTgo5r+OUZbG+QjNH9q9j4EREJRVzBkoiVm2BU/z8FIWGcEBFSFMRkdX/sfIETjFdJNbHSh5GYctaKH4p8ypATE8KnKweJzmOXYfulwVwk24OA7BN1fNJ4NR3UHG3q1LyprfmwyjEh7tcO7KV6gVC8XVAAj4p1ZMZp7SlempuGadooePIORyCiMolKesiyri+UVnIwEnIjJNqyziVPkgUQiT1OLmX6gHwT39MAQwhHGPvk9c/CkL3zwLAGTNOPvkdDjs0Pj0P6VIpCtC0U3y7GiavwZhxoqKyhkPUuZfqBczhEKoi4g2JHqfnmHHKVo/dU+ACuIWu/0RElLfkwKnKSvViZlYpZmacwoHyZpxkr2uixyk545TIWqh+ueguQLxUzzaNzlr/KDEcwzeletXQ46Rq8ZHjrszfTfvva3owBMAeJyoR+wK4AFJL9WzjX3UfnJSzBU4Ba6pe+u8hhHAEPfmU3MkF1wAGTkRUYskZJr9c+OUoFu0GkOhxCgdU9IjyZZzkTbO0GSdVgzAvVBUjBuGXrEuedEMgoCSt4QQkepwUHw2HsNaqtE/V81mPExBfp+nku4E+Ozofbxocf5zrOFnXbgHFJ+9NG44j97BspXrBUOIOWzTaAy3cUNb9y1e2wCmxAG76oCb5zlk+JXfMOBFR2ST3NJVp0ly5xCJyOIQ5VS+gImplnEr/WmUvbNjqcapL3UgLAnokvpaRADQflgVl4+hxcmRqbD1OhoAQAkqaMnnPcM04yR4nn2UNR08B6voBd0+OfzzpRuCAM2o+0yQx40QlkZiql3TgkAv72TJOsaj378ZYgVOag7e1jlOGmCY54OECuETkSckZpzINTCiXmFnlEEUAAS1pOEQZsmuR5IxTcqkekJhA66e1jPKk26fquWRq5Od8kXWqhql6dvZjwMBRDJps5N+vH29mMHDysGxT9QKBAAxhTqKLdJd9//JlDYdIl3EyAyojwwE+OXDKJ3PEBXCJqGxSSvWqLXCKn58MJX6xXu7hEDIQCqUbRw4kbjJCR5XGTdDtwyEc0+jkcIiYtZ3nWRmn1Nfhy1LX2Hbbv71/jVZOUWacqNi6ozq2ReIHww/XbY7fLTKcaWxNVRBF/A5GzAd3M2VAlG4dJ6tUL8MBPjnDxAVwiciTzGOyvLmlGN4/RudDZpxiZuAUDqiIiPKV6kVjcjhEhoyTY0BCdR7zdcNwL9VTE6V68e18EDhZPU6pr8M3U/XsorZgyQfXaOXk56l67HHyoPlLOnHVo+9bH//47v+grbkO/zf6C+wJWAcVRVEQRQBhxKD7olQv/v+0GSc1+1S95GEQ0TzWp3AMlWCpHhGVkplh2oI6NGE7lCrLOOlRMzC0Mk7lXQA3KjNOSvaMk+zzqUYxXVhZJUepnuYs1fPFZL1qmKpnx4xTWuxxoqKZv6QT58xdhPWbnXfs1m7qxoNvLI9/YLsbo8uMky+m6sma1nSBk9wuQ6leLzJO9qCrJ+r98e1E5GNmudpW1AMA1CrLOBnmHXRdiZ+PQo5x5OWZqqdBRwDmcT3gFjglgodqDZwcPU5qam+QLOPzxSK41dbjFLUFTlV246S3GDhRUeiGwIzHOuB2eBNI1CobtvpfWSYh7/55mSzB6806TrJUT8ZeEd3Iecwsh0MQUdmYd8i3iHjgpPjxwi8D3QychKPHSQ6HKP35KKaLRH8TYE2btVM02eMUq97ASaQZR64l1nlUYfikx8k5AAuAvzNOUWac0unxcakeAycPeWP5RnRuSv/HpZl3jjZsSxwA5fhX3Qd3M2Sskn4dp/jb0chwgJfBT99Q4sCaa7kex5ETUdnEZMYpPiZbM6KAHy5ec2SYN+t0MyMQdgyHKMcCuEaivwlIk3Eyp+rB8EepWgF0I81wCNu/fRM4umacfNzjFGOPUzrWcAgGTtQb6zdnviMhD47bYol3mm4GTkbE+3+URraMk/luzHSCkwFPn3DipJBr9oiBExGVjVmqt0XY1hfywQ2uXBnmaxGqLeNUzuEQjoyT4gwaJD8uApun+DpOLkMVbP+OD8fwweuvth4nR6me99spyskaDuHDKMSHu1y9Bja6LOBnE1TiB8e6cGI7XYn3OPkh4yQXLFTT9jjlMI5cl4FTYj2EXIMgx1Q9luoRUSmZF3qyxyn+mPeP07mSPU6GzDhp5c04xXQDYUVO1Asn6rftaqFUL22PUyKQDED3WY9T6npUvuxxcmScWKpnl+hx8sH7MgkDJw8ZN7wFbc11SJe5lBmnQTs0Wo/FzMZcI+b9g0oi4+T+eTk0IlMttvxjqwtq1ljzXBfBZcaJiMomqVQv/lj1BU5CrcxwiIhuZF7DCaiJUr2YvVTPrcQN8WsHX4xjt3qc7BmngPNzfhLdlvh3Ff3tF0OEpXpUDJqqYPrk0a6fU5AYK6oGUqfq6T74o5R3/DTV/W2Xyzhy+ccW1FQEzQgs1yCIC+ASUdmYGaduEURUmBnyKso4CdfAqZwZJ5F5DSfANlmuijNOwp5xsmVqlET5YgCxjL3DnlF1U/WYcUpHVv1oDJyot9rHtOG2U/ZDY52zXru1uQ7fGLlD/APb3Ri5hobhp6l6WUr1Mk/VMxc9DKgImcWxyWs7pWMvz4sZImNJIBFRr5g9DVEErCE+1dTnIKx+FLkArpZ4nWUaR25lnAJpyty1GhhHrhtWGb8j4AAcPV6+yLglvacA+LvHKcZx5OlEOY6ciql9TBt+csSuAICDh7fgHz8+GK9MOxrDms0DiG3sqizVEz44qMga63SlermMI4/o8TtrYVvglHupnnPtJvY5EVHJmBdKEQRtY7q9f5zOlTznCPN8FAqo6BHlG0ceNWzDIVxGkQOwZVyMqg2cYul6nAAr6AhCt3qMPc1wCQCtjJMfS/WYcUqnh8MhqNhkZmXEoEYcslv/eDbGSF0dXE40MvxQqmdmnNQ0U/Ws4RA59DgFNRWhPEv1krfLNVNFRJS3mAycAokStjJkYsrGDJwUrTKletGYgZB9OIQbW6maL3p8CuAYDqElTRa0Xr9PMm6uU/V8fNPBsY6T96/RykUIwR4nKr6eWCKzYpEnI9tBRZelej5IA8vSuEDadZxyyTiZpXpaIuOU8zjypO3Y50REpSJiiVK9SBWW6snzkZVx0hLDIUQZAsSYYWTPOGmJUjVfBA4F0IV9Had0GaeYPxbArbYepxjHkbuxr73JjBMVjbyoDzkCp9SThOxxEj6YqmdlnNL0OKlWxil+R8KN/eciM07RXIdDRJMzTnqaLYmIekc3g4eICCbWN/LjXfN0zNeimhe54WAi42SUaR2nMHLNOFVvqZ6ebh0nINHj5JuMk5yq59LjZMT8t4C0o1SPgZNkv4nNjBMVjSwjCwcS6xW5lerJNTT80OMUs6bqpSnVswVU6Q7yjql65l9cDzNOROQxMniI2IdDVNPFU1J2IKQlFsAV0TIPh8ja41S9U/WcPU5JpXpaolTPHz1Obhkn22vyW5+TPeNUTX/7vWS/9krX8+5lPtzl2iCzI+Fg5lI9YWWc/FOqly5wsvc+pSsrkIMg7BmnQnucOByCiEpFTjqNOEr1vH+DK1dKco+TploBYllK9XSBsCKn6qXJONmHI1Rp4KSnW8cJsI1j90vGya3HKZj6eb/gcAhX8jpOVTiOnIrIvcfJpVRP9c+oTj1L4GTvfUrXxxuxMnGFTNVjxomIykNYGadgVY4jV8zsgGKuoaSqCnQ1/u9y3MiLL4ArqzDSlerFz48adH/0+BQgZggElMw9TgHFJ8MxrIyTLctkf01+63OyL4Drgz70cnFtRfERf+51Dci1VE9O1fNDqZ6R4zpOANIe5GWWKKgpeS+Ay8CJiMrFGg4hqnOqnmKej9SA/UaeDJzKk3FKrOOUrlQvfv4MQLeWw6g2hsiUcYpfHwSh+2MBXKvHKV3GyW+lesw4uZHXtyE/1umBgZNn9dgyKxa3Uj1Z/2t4/26GLJVIN47cPjQiW8YpFFCtn02uAZDsheobDuT1dURE+RL2ceRVOBxCZpzsgZMVwJQhs+bscardUr2YfThESo9TYjiEf3ucNACK8/N+IERS4OT9a7RyYcaJSqInapbqBd1K9eyBkyzV8/6dGKtUL4eMU7qyCplxCmlaXqV69nUDZOCU61AJIqK82YZDVOM4clXIwMl+PjIDmDJcJEYNW6le2oyTWapXzePIDcO2jpPfp+q59DgBidflpxsPyRmmKvrb761E5ZA/QxB/7nUNSAQItl+Ry90Y4aM1DmSpQCBNN6A9EZV1ql4gUaqXy0K29nUD+tYx40REJWZe5EUQLOvCsOWiylI9+0Q7rXyvMxoTCClZMk62UrVq7nHKZR0nX2TcXNoRAPhzLSf74rdAVZXp9lbU7frWR/y51zUgMVXP1uOUaeKMD+7EyGAo3TpOiqJYWad0gZP9D86aqpdD5si+DUv1iKjk9MQCuIlx5FUUOIn4Ra4WTAROwpxup5Th7nrMkXFKV6qXGMet+2E4QgF0+zjylIDD/vp9EDilzTjJjK33K2ssDJzSSpTq+XCkHhg4eVbmqXqpPU6KD+7EZJuqByTK+NKW6rlN1YtlPyHYg6RGZpyIqNTM47Wu2BfArcLAyVYmJyfsleN8FNUNhJFlHLnqsx6fAuiGQEBxGaoA2Kbq+SRwcutxAvyZcUou1WPgZGGPE5WE63AII3UcufVvH2WcMgZO5ueMXBbAtTJOetbnTnydYk0qzKXEj4ioEDLrEgjVVWWpnmaej+wZJxnAqOUo1dNFDuPIExkXX0yVK0B1reOUeciFH65zLMkZJ/Y4WThVj0rCdRy520HFPDD6IuNkHrfTDYcAkLVUL6IXNlVPZvBCmv3rsgdcRESFUM1Jp8FwODEcooruOmtmxikQTAQtihnAKGWY8hqzT9VLNxzCVqrnix6fAsTspXopAYd8/X7pccqWcfJRqZ7MOAX7xP+vR9KPC64xHA5BJeE+Vc88GdkPKpos1fP+AcXIIeMkP5XuIG9P8co/umgOJRj2r5Pp4Vx6o4iICqGYd8eDoXrbVL3qyTjJEdiBkC1wkhknoQNGaW9MRXWBkJLbArhBv5SqFcDZ45Ruqp7hjx6vrD1O3r9BbJGL39b3SzxWRX//vRFlqR6VQq6leor5b0V4P3DKto4TYCvVyzKOPKglAqBcSu567IFTngvnEhHlS2acQuE6aziEUY0ZJ1u2R7WX7ZX4tUZzyTiZGRit2nuc0macZOAU80fgWE09TlEz41TXnHiMi+ACSDM12kf8uddVTgjhKEmzuJXqmQcY1QcHFJlxCmQMnOKvN+tUPXvmKIcAKFLg1xERFUIek+vq6hAR8eO0Hq2ewMkt46QF6xIblPjuumM4RA4L4FZrj5OzVC854PBZqWI19TjFzB6ncFPiMWacAHA4BJVAVBeQx3hnj1NqqZ7io8BJTspLN44cAOQNiGzrOIU1e6leDoGTrRnRylSxVI+ISkEIaOYCsaFwfSLjVI2Bky3LZJ+wV+qLxJghbBmn7MMhfBE4FEA3DNtwCPeAwzfDIdJmnMzX5YOWBIvMOAXrE4F9FWWceyPC4RBUbD22oQVWqZ4QrqV6qjX+1fsHlFx6nKxx5FkXwM0z42Td4dCYcSKi0rLdGQ+Gwogq8QtBo4rWcQqYpXpB23CIUEBDj5ldK/VFYiRm2Hqcspfq+SJwKEAs0zhyNTGO3BeBY9oeJx9nnIL1QMDMxDJwAgD3iiof8edeVzl7z44VONkbbd1K9XzU45TpJoPsf0q3jpMcBBHSVITzWQCXPU5EVC620cNasA6GeSEoquTCSRgGQkr8nBQMJYKWUEBFT5kGYeSUcfJbxqUAGceR++31yxvAKQv5+rHHyQycAnWJHjyOJAfgXB7Gjxg4eZB9kIEiy9rsJyGXUj1ZFuJliXWc0r/tAlnWcbL/bILmqtM5lerpiRI/ZpyIqKRsmSUtGIIwMyLVEjjFYonzTSic6GsKB9TEmlVlGA4RRraMU2I4gi8yLgXQc+px8slwiKxT9bx/g9gSdcs4cTgEwIxTr7z00kuYPHkyBg8eDEVR8Mgjj2T9mhdffBH7778/6urqsOuuu2LmzJml39Eys0aRu03UAxwnCc0a/+r9A4pszs20jpOabR0ns4wxqKkIabkvZGvPOIU5jpyISsm80RUTKoLBoJVxqpZSvUgkERSFQvZSPdXq5yr13fX4ArjZepzi54iA4pNx3AVwjiNPN1XPLxmnKpqqF7P3OJnXbFXy999b7HHqha1bt2KfffbBn//855y2X758OSZNmoSvf/3rePvtt3HFFVfgwgsvxIMPPljiPS2vjIvfAo67MUpAZpy8v5irbo0jT79Nth4nWaoXLrDHKZznwrlERHkzg4YoAghpGoQqL5yqI+MU7bEFTraMUyigIiLKs+ZOfBy5eV4M1LlvZAscqjXjFDMEgsjc4xT0w+s3DECY5+Rq6HFylOox42Tn96l6geyblM7EiRMxceLEnLefOXMmhg4diptvvhkAMGrUKLz11lu48cYb8Z3vfKdEe1l+Ebc1nGSpnqI6Ig814MdSvezrOKXrcbKneGV9bC6lenLghn0ceS6ZKiKivJkXeBEE4ouYayEgCn9d+GUQsU0HtE/SC5WxVC+mGwgpqQOTHGyleunKv/0u4wK4WmKqoOczbo6qmuQep0DqNl7nKNWTPU7MOAH+zzhVNHDK18KFC3Hsscc6HjvuuONw5513IhqNIhgMpnxNT08Pemx3x7q6ugAA0WgU0Wh5/gjl8+T6fFu7zYUTNSXxNZHtCAIQWggx+/dRzKlBIla211MoGTgJXU+7rzKmikRTX49uiEQmytChIf7vnmj67ydtj5ijc1VYX9ft8hxeku/7hgjg+8YTurciCCCCIDRF2Hqcuj39e8n1vbNt69b4dkIDYolqiIASDxYBINazDaKEr9WecYpCA1yeSxHxi5wADERi2c8TfhTTDQTMQR0xA46fuQoVGoCAEkO0hK+/KMecyDYZciNqwPH71BQNKuLroBk++R1qkW3xfVZDUNQQVJT+b8IvuqPxv1tViV+LeeHvMp998FXgtHbtWgwaNMjx2KBBgxCLxfD555+jra0t5Wuuu+46zJgxI+Xxp59+Gg0NDSXbVzcLFizIabsPvlIAaOjZvhVPPvkkAKBPzzp8A/EDo3wMALau/wj7AlCMqONxL+qJaAAUvPLyS/iw3n2bzV3xbV5/401s+ch5hzCiA/It+8Jzz6BzW/zjr7q2ZH3t761WoELBgE+fAb74CgerLdiwbqTnf2ZA7u8bIju+byqn39b/4kjEg4gPl3Ygtj1+M6x7yyY8XwXHnC2bNmAXADFoeNr2ej5aq+BA8/L3P2+8irXLSleatHmrhpAav9h54eVXsS38cco2Aza/j8MQz7j8978r8OST/y3Z/lTKV5s0a6rey6++jq6GTutzu67/EHshXqr3yfLSv/7eHHOCsa2YZP77qaefgVASl6f7rd2AIQCWLlmMTzZ4/+8HAPZf9Ql2BtDx0XK0btqMHQG889ZrWP1ff2ZZimnVZyoAFcs//hBD27xxrtq2bVvO2/oqcAKQmDJnEmZJV/Lj0uWXX45LLrnE+rirqwtDhgzBsccei6amJtevKbZoNIoFCxZgwoQJrlmxZOEP1gNL38GAlmZMmnRw/MENy4AOIBCux6RJk6xtP3z7ZWA1EFR0x+NedMV/ngV0HePHH4VhLe5B66xPX8enWzdh7H774xujBjo+17U9CrzxPADghIntWLZuM25e8jqCdfWYNOmIjM+tPPB/uGLdDRi8fSOwHfhuCPjcGIB+u94IsccJxXh5RZfv+4YI4PvGC5RPXwc+BCIigP323Rvvv7YW+BJoCAU8fZzO9b3z8QfvAP8FYorz9Wz9z2pEVscvK/bfdy+IUaV7rVe/+zxCZu/vUcccBzSl3jhVVvUDPgaCiGHnoUMxadLoku1Ppfzxo38jsDn+czj8yPHAjiOtz6lvdQKr/44AdOw8pHSvvyjHnK0bgMXxf06cNBmwXdNpjz0FfPkqRo3cHSMP9e7fj532wL3Al8DovfeD8uF6YEsH9t1rNPbZxx/7X0qPffk28MUG7LXnKGBjhyfOVbIaLRe+CpxaW1uxdu1ax2Pr169HIBBA//79Xb8mHA4jHE6duBMMBsv+i8r1OXURvyNRFwwktlfNAFF1fo9QOJ66CQi94m+8bGRzajjDzyFg1rwqqpqyjdGdqNFuqAuhoS5e/hLVjcyvvWMeJn94GZIr3FuMz6E+eDpw8t3A6Cl5vpryqcR7lfyP75tKimcAogigIRyEZi4SqxoRX/xOsr53zH6ZGAKO7RrCQWs4REDoQAlfq6HrCMq1pOr6uD9XKH5+1GBAQPHFzz5fhkj0OAXD9c6fg/m+C0Ivy+vv1TFHJmLUgGNtMABWj5AGA5pffofmgBgt3Nd6HwZEtKR/E34RNS/l6kPm8BIPnKvyeX5f5QwPOeSQlJTe008/jQMOOKDiP/RikoMMnMMh3Jtg1aA8oPhnHHkgw6Jn1nAIlz5WOQQipMXXt5KNhRmHPBg6MH8agET/lGT9dOdf5lxgmIioN6zhEMH4cdwcl634qbk9g5g5jlxXnPdeHcMhStwIrxi24ROBdMMh5DhyH0yVK1DMvgCumm4cuQ/WsUq3hhPg76l6wTpAM2/ecxw5AP9P1avoXm/ZsgXvvPMO3nnnHQDxcePvvPMOVq1aBSBeZnfqqada2//0pz/FypUrcckll2Dp0qWYNWsW7rzzTlx66aWV2P2SibiOI5eBk/PAGAjKcaPeD5ysqXoZ1nGyxpG7TNVL/mMLmoFTxql6K18FutYg/TMKoGt1fDsiomKwjyMPqFDNC3vVqI4Lp5h5AagnFa3EF8AtzzpOimNR+HTrOCXOj75Yx6gARqapetZUQd37UwUNuZixS+Dky3Wc5DhyLoCbTE5HDnKqXv7eeustjB8/3vpY9iKddtppmDNnDjo7O60gCgCGDx+OJ598EhdffDH+8pe/YPDgwbjllluqahQ5YF/HyWUB3KS7MXIB3IDH13ESQkAet9VcxpG7jE5N/LHFt8lpPaYt63LbwVy3IyLKxryoj5jrOClVlnHSzXHkMZeM0xZrHHnpgkTDEAg4xlenqTgxH9dgVG3gFNMNq2Qxdf2j+O8n6IeMm5Vxcrks1cqzNlhRRW0L4HIcuUPUtqyMH0PJigZORx11lDXcwc2cOXNSHjvyyCOxaNGiEu5V5eVTqqeZq7YHPJ5xsp+0MmWc1AyleskZJ/l/Q5gjWd3uXvQdlPqYm1y3IyLKxgwaekQQ9UEVmiyprpaMUzT+Ooyki9yQZl8At3QZp6hhIIT4OVFo4bTDoeRFeDVnnBTDdu5PWf8okXHy/OuXgXDGjJO3r3McYvZ1nGTGqToWwO4t+zpOfgyc/Jknq3I9ZudcOGjPOMk0dlKpnlwAVxGe7tOxl95pGXqcAmbg5FZWYF/8FnCmeaN6mpPCsEOBpsEpgyESFKBpp/h2RETFYC/V01QoZpO+JmLWYAU/M2SpnuK8yA0FVETl/dgSZpxiukBIMc+J6fqbACtwCkBHrAp+7q7swURKxsne4+Tx11+tPU6BusQNbwZOAOw3wdNfC3oZAycP6nHtcTJPQkkHlUAwUdute7jx0H7MzphxyqHHSQZM9sbCtOV6qga0Xx/fh6RvaX3c/nuriZiIqNfspXoBFWrAtnBdFZTr6TLj5FKq12MNhyjdRWJMF1bGKW1/E2ALHKq3VE8V9oyTe49TELprFYenpLk5DMCfPU6OUj3zPVrivj+/6LFlnPzIn3td5fIp1QsEEx9HI979o3RknDL2OMX/71aPbZ+qB8SzUzIG69EzZNtGT8GfBlyF9djB8fBa9Idx0l2eHkVORD5k3sSSwyE023G6Gu46y5t0RtKNvHBAsw2HKN2NvIhuICTL02UZlBsr41S9pXqOYCJNj1O8VM/jkVPGjJN8T/m1VE9O1SttYZpuCCz85As8+s5qLPzkC8++5zkcgorOfTiE+92YYChxty0W8+7dGN1WSqdmmqqXqVQv6eeiKAqCmopIzEhfqmd6NXQo/t6zI16ruwAAMDd2NK6KnYGOr01ChtMuEVH+rIxTfBy5vTKgYuVGhh6fHrplXbync9ihBWfaDfNcIxS3qXqlHw4Rs/U4KRlL9RKl7Hqmm2s+phoxQAOEokJRky5EbT1Onh8OkVOPk3evcRwMPXHjIFBflnHk85d0YsZjHejclAjO2prrMH3yaLSPSV0cupKiSW0XfsPAyYOsACGYvVQvGEh8HOvxbpudPeMUyJhxiv8hud0pSS7VA4CwGThlnKxnfm1YSRx0v0A/GFDREzNQF2SZHhEVj4j1QAEQEfGMUygYQFRo8elnlSjX6ZgXX8+ua03isabB8TLmAjLuwsyaJWecQoEyDYeI2XqcMpbqJS5xhJ8GC+RBSTNxF4AVhPhiOIbMJrlO1fNZj5M9sxSsK3nGaf6STpwzd1FKL/faTd04Z+4i3HbKfp4KnriOExWda/1nuql6mooe80QV83CPk/2gnXEcufkpw63HyeUuRSiXkeTm19Yh8fNpMGe5ZPs6IqJ8yeEJEQQQ1rSk9Y3KfJzumAfcf6ozaAKArs744x3z8v6WVsYpOXDSEhknI1raqXph2eOUw3AIAFD8VOaVIyEE1HSL39oe88UCwBkzTuZr80vwKwdDAOY6TrLHqfh/+7ohMOOxDtcBWPKxGY91eCpwjrDHiYrN6nFyTNVzXwAXAGKIZ0x0D5fqyUAoU38TkAiq3A7ybncpcloE1/xae+DUpJqBk+c7ZonIb+Q6RxEE4xmnMpWwpTD0eKYp02XV/MvynsgqzAvA5MApHExM1TNK2MsV1Y3chkPY988vZV550A2BoNnrJdwCDi0xHMLzC+BW01Q9GThpIUBVS7oA7hvLNzrK85IJAJ2buvHG8o1Ff+5CGIawru+YcaKiscaRuw2HcDmoxMwTVSzi3VI9+YeSaaKe/fOupXouDYXyD68nh1K9OiQOun2VHutxIqJiMsyJWlFoCAVUhO1justZqrfy1dRMk4MAulbHt8uDlXHSXNZxkoFTCTNO8al6cjhEpsDJtn9+yVbkIWYIBJBm8VvbY+xxKrOYbaIeYBtHXvybJus353bdl+t2pWa/Wc2MExWN+zhy91I9ILF6u6czTkZuGaeAln44RNQl45RzqV7MQL2SOJEzcCKiUpGlejEEoamKmXGqQKnelnXF3U6SryF5yqumImpm1kQJM04R3Vaq53JOtKgqhGKeL6owcNJtgZPiNsZbSwROXirVclVNPU7WGk5m4FTCceQDG3Mbb5XrdqVmv8kdyrCmp5cxcPIg13HkOZXqeb/HKWupXqZ1nMw7FWGtgFI93UDYVqrXV2GPExGVhsw4yeEJIU1LDE0o53G676DibmcSVgVE6vlINwMZUfIFcGWPU4aMExKT/xS/ZCvyEDMEgjLjlKE3KIiYzzNOPu1xCprBijUcoviB07jhLWhrrkO6KysF8el644a3FP25C2G/VvPrOHJ/7nWVszJOwdxK9XTzTqZclNCLZCCUJW6yAqtcp+rlmnHqSepx6iMDpyodUUtElSMzTjKIcPQ4lTPjNOzQ+PS8TJdVTTvFt8uDkibjBABClYFTqXuc5FS9DBknJPqwqnE4hG4IaJlK9cwgRIPh83WcfJZxiiVlnLTSBU6aqmD65NEAUv/K5cfTJ4/OetO6XBLXcUrGQWFexsDJgyIZS/VcAielCjNOrj1OqQ2FMvuUbchDvFQvdapett4oIqJ8yaBBBhHxHifzeF7CwCllAUyo8ZHjANJeVrX/Pu/1nORob8XlfCSsfo4yDYfIlnEyX5sQPrnozoNuiPiIewCK61Q9cziEokP3+iCkNGtVAvBfj1M0qcfJGg5Rmr+J9jFtuO2U/dDa7CzHa22u8+4ocp9mmwCu4+RJPW4z7o1MPU5BQACGlzNOVuCU+Y9FrvHkWqrnNlUvEN8+U6meECI+jlxN/HzqGTgRUYlYU+fMwKIcGaf0C2AeiPaT706zjtPvC1rHKVPPrVBDgI6SBoiO4RA5ZpzUPCcH+oG9x8m1xE3z0XCMjBkn2R/o8dcgyYyTFTiZ79ESDoZpH9OGCaNbcez/vohPNmzFXjs14ZHzDvdMpklyW1bGb/y751WsJ+rS45SpplxOMSr3+iB5SAROmbezSvV0l+EQblP1tOxT9aK6gBBwruMk4gc29jgRUdGZ2X9DtZXqCTmOvPgXT3IBzOSxxHIBzPnGgcBFS4DGwfFP7DoeuGhxYUETEv1CSsDtIrf0F4lR3ci9x8k8ZypVmHGKGQYCyDBUwTGO3eNBRzVN1ZMZJ5lpKuE4cjtNVazro3BA81zQBLi3XPiNf/e8imWeqpe+VM/wcKmetY5TlnHkap4Zp1x6nOQdDnupXp3YDkAwcCKi4pPBkexx0kpXqpfzAphQAXn8rWvKuzzPQQZObtkea4JY6S5yo4ZA2BpHnmVamAyc/JKtyIOebTiE7THPD8fIcHPYdz1O0W3x/5dhHHmy7eaNd/l/r2HGiUoiETjlVqqnK+ZK7R4eRy4n+mRrBpSBlds48ojLzyWXqXrW19kyThri42wZOBFR0elynaN4EFEXVNFTolK9vBbAlBd0cupXgVTz9aluF+tmWZJSyoxTzL4AbrZSPZ9NZMuDnuM6TgCgeP31Wz1OmTJOHn8NUixNxknvAVxuChdTtxkwdXs1cHJrRfEZ/+55FbPGkTum6qVPxxvmY6Uc/9pbMhAKZAucMmScEqV6ie+RU8bJ/FyD4vz5NKA761AJIqK86ckZJy2xAG6RS/XyWgBTBky9DJxk2ZsadAlazGBRLWWPk5H7cAh50a3BJxfdeXBmnNxK9RLrWKleDzpy6nHy7s1hh2iaHidhlDz42x6RgZM3r22qYTiEf/e8ShmGQNTs73GW6snxr6kHFUORPU7ePajouWacMowj79FT/+DCeQROfVTnz6eP0s2MExEVnaLLHiD7OPLSXPzlvABm31DiTrjMPBVINWTGKTVwUsxgSjFKFzhF8hgOkVgDyJt34HsjZghbj5NLwIHEcAzP9wdVU49TLGmqnmYL7ks4bRJIBEyeLdVzq6jyGf/ueZWyZ0CqqVRPz7HHKZd1nEK2gDKnUj1zrabkjFMfMHAiouKzggbzgikUUBE1F8A1inzhlPMCmDvXJx7sbcbJvGuuBVMvchWZcSph4BTLYziEzFZ4PuNSAN0QCCgZepwAK3BUhcdfvwxsM/Y4efw1SPLvK5C0AC5Q0sBJN4R1DSkzT14TcRny5Tf+3fMq1WNLr4ZynKpn1XD7Yqperus4pX7OtVRPTtXLEDjJnrF6JSnjxFI9IioBWaYmS9nCtnHkerS4k7VyXgBTtz1vLzNOmizVcwlaZJZNM6Il6+fIZwFcma3wfOBQgJi9VM8t4ICPMk6ZhkNYWUOPvwYpuVRP1RKvoYS9f/a+pu6YDlHifqpCRDkcgopN9jepSlI/UIaperJUT/igVC9b4CRfs1HMqXrpAielm+s4EVHRyYyTnDpnL9XTS7DeXk4LYNqzTL0M3mQQ4pZx0oK2fSjROSmqC4Rz7XEyz5lKFQZOWddxAqyMm+b1UsVMpXp+m6qXXKoHlGUkub08TwhvrlPpuk6pz/h3z6uUfRS5Yi9ry1CqZ5h3lLwcOFnjyLNlnMzPx0owVa9ecd7paWCpHhGVgGatcxS/qA+oijUcotgZJ6l9TBte+sV46+P+fYJ4ZdrR8aAJSAqceleqp8lSPbeMkyNwKs3d9fgCuPKcmDlwUvxSqlYAPYceJ/m459exyphxsmXNPJhFSWGV6tkCpzKMJE8uz/PiZD0Oh6Cic52oB+RYqufdA6OMa9RsPU7mp93GkbsugJvHOk72BXCBeKme/HkTERWLNTwhGL+oVxQFurkYbrF7nOzsN5y6umNw3Keyl+f1djiElXFKvZHneKxEF4nxBXDlOk5ZSvVsPU5eLF3qjZhhZF7HCUhMFRS663nVMzKNI7c/5vXMGWDLONluIthHkpdIcqDkxQERHEdORScnoqRMHMlQqiesjJOXe5zirytbxinjVD2XP7hcpurJvjGrtKOuHwCgQelhxomIik4TsscpceFkVQZES3fhZL9QiuoCX22z3UyzZ5mMaME32oRIZDm0YGq2JxgIIibMY3SJLhKjhpE4nmfLOJnnzAAMeDluKIRzHSf3Hie50HEAMddlPjwj0zhy+2vzQ5+TvDFhzzjJAL+EN06SR5B7cSQ5F8ClorOX6jlkKNWzmj89PHFGZpyyB07xt6TbAT7iMo48UaqX/oSQyDiZB6w+AwAAfbGdgRMRFZcQ0FwyMoaVcSrdDa5tEec5YP1m20VacpapwHK9qJ4InIIu2Z5wMDEIo1QXidGYbRx5loyTLNULKDpiRnUd73VDIJhlqp4MHIOK7npD0jNy6XECPF1ZY4m6ZJxkgF/CwCk5w+TFyXpRlupRsaWdcZ/L3RgP34nJfRy5uX2mUj2X4RCZmiCtn6l5Fxh9dgQANCicqkdERWbL/KsBe8YpfoEvSnrH2XmhtMEROCUFSgUGThHdQMjMcgTDqdmesGZfs6o0QaJjAdwsGSd50R1EzNuBQwFy6nGyMm4eD5zkjd9MPU5AyReQLYqYnKrXkHgsUIHAyYulesw4UbHJnpuUN5VVqufW42Q2f3r4ToyR9zjyDFP17D1O5r8zBUDW1wlnxqkPWKpHREVmuzCyZ5yEeQFbysBpe8R5PFu/2TaIInmaV6zAwClmWBfrAZdsT8g2er1UgVN8HLmcqpd5AWCZcdFgeDtwKEDMMVUvTameLXByG7rkGRkXwLVV4PghcJIZJ/t7UwZOJexx4nCI8vDvnlepnnQZp0ylevIxD2ec5AFbzbHHKdM4csdUPfPf0Uw9TnpS4NQgAyeW6hFRkdluYAVCqRknlHCh8uQ7zBtKUKoXiRkImoGT6tLjZB+9XrrhECLn4RCJHqfqzDgl1nFKU6qn+iTjlqmqRlESj3v4BrEllrSOE1CWceTJw668GDhxHDkVXdoepwwHFcW806R4OHCSGadAL4ZDyD6mYAEZJxWJu6SyVK8PS/WIqNjMO8pRoSEctGUBzBtcooR3nDP3OCWX6hU2Wa8npif6alzORyFNRY+QF7kl6nHScy/Vk+fHoNczLgWI5bCOk+LIOHn4fGdN1cucOfPyDWKLNY7c3uNU/nHkLNUrDf/ueZXqiWYZR+52UJGleh4+oMgep6zjyHNYxynfqXqRmOEcRS57nNDjyQXiiMjHzPK0KAKOY5VVGVDC6aeZe5yKn3Fyu1gPBzVrzapS9XPE13HKdThE9ZbqGTn1OJnDMaDDy3FTxoyT/XEPD8GyRCu/AC7gzeEQ8lotyFI9KpaspXpuBxW5MrqHDyi61eOUeTs5PCJ5vQkhhOudilwXwK2H7QTe0ALAzDgxcCKiYjLvKEeSAifFDJyUEgZOyRdOjh6nIg2H6IkZGbMcoTIMh4jkkXGSwwaCisdL1QoQs5fqpcvUWKV6Xs84ZehxAhKvz8M3iC2upXqlv3GS/PfvxVI9ea2Wco3rI/7d8yqVtVTPpcdJPubllcH1XIdDyFK9pB4n+7jx/BfA1RMZp0AdEG4CwB4nIioBW8bJfhwX5bhwModDNNbFLzIzT9UrrFQvotszTlmGQ5Qo46THYgjJcsFAblP1PD9VrgC6YSCQoWwSQOL1e30cec4ZJ+9e5wCI758sOwy4LIBb6+s4sceJii3rOHKXu0qKtTK6dw8oicAp81tO9kAlZ5zsvUjhAsaR1ym2wCnUB0C8VI89TkRUVGZfTw+CjslRipkZKWXGSfY4DesfH4OcucepsJKheKle+kVXQwEVEVHajJPj+7rdTLST6zjBqMoep2CWHicr44aYt19/tfQ42f/O7BknrRwL4Pqgx4lT9ajY0o4jz1CqJ5s/FQ+P6TSsdZwyb6em6XGyZ4aCjgVw49tnK9Wrk2UdwXog3BdAvFQveQoNEVGvmKV6UaE5S/XMjJNqlL7HaVhL/ObQ5u5Y4mKqWBmnWOaMU7jE48h1Q6Br85bEx2qugVP1lerp9uEQbusfASXPuOmGwOvLN+I/nyt4ffnGwp8ja8ZJBuPevc4B4OxhqvA4ck8GTlUwHCLNXxpVSiGletYJWXj3gKLnOo48zTpOMjDSVMVR7mcNh8gQOPXEDNTJHqdAHRCKB04NYI8TERWZLnucgkmBU/zCqZSVAfJCacfGMMIBFT0xAxs292BIS0PxhkNEYwgo5nHTrccpoGJLiYZDzF/SiRmPdSC66SvAvCY9/MZXMH3Knmgf0+b+RVVdqmcbDpE241S61y9/H52bugFouPujt9DWXIfpk0en/32kk7XHyWcZp0B9fIy6ZC2AW/rhEJqqQDeEJ4dD9HA4BBVbj1mT6piqZ+gAzAOey0FFTg3ycqmezCBpOU7VS17HKV16N6Rpjs+7cZTqBRusUr0+6EbEg3dkiMjH9MRwiLBbxqm3WRhDB5a/DCz+Z/z/RuIYJnuc6kMaBjbFL9Sscj0rUDKPwQVmnKIRe5mcy1S9QGmGQ8xf0olz5i5C56ZuazBEjwhgbVcPzpm7CPOXdLp/oV+GIxQgl3Wc5O8oWOTAyf77sFu7qTvz7yMdmUlKlznzS4+TDIyCSQszyyEmJRxHLrPLOzTEf1ZerKiJVkHGyb97XqXkG93R42Q/+bgcVJSg9zNO1jpOWWr10q3jlG7RtGAge6lej24bRx5M9DhpioCql+7uDxHVoDTjyDVzsVi1N0N8OuYBN48B7joBePDM+P9vHhN/HIk7zvVBDQMb4xduG+RkPRko1fczPy4s4xS13zF3XcdJK/pwCN0QmPFYh7x9iJAS/xlGELQem/FYh3tgoMZvrmlVmHHKZR0ne6lisXqckn8fdll/H+nkPFXPu9c5AJwZJ7syjCNPBE7xa0IvZpw4HIKKzrVUz36HxaVUTzUf0zwcOOW7jlO6Ur3k9G7IGkcuUgZKSPFx5HI4RD0Q7GN9LqAXdteViMiVGSxEEHTcANPMUh2t0MqAjnnA/acCXWucj3d1xh/vmIft5nCIhpCGHfsmZZzkBVtDf+fHedIjmQczlGI4xBvLNzoyG3INJ5nZEgA6N3XjjeUbU79YZly8PlWuALohbFP1svQ4KTr0ImXckn8fyTL+PtKplql6MnBKzjiVcRy5FTh5sKLGGoDGUj0qFtd1nOx3WFzuxqgBc4E/DwdOMqjJOo5ccR9Hnm7aoP2uRbo+J2epXj2gqhDB+NSpsLE9bcBFRLVBNwQWfvIFHn1nNRZ+8kXvLrBlqZ4IWKXEAKAGZeBUwIWToQPzpwGZ7vHPvwzdZlBTF0yU6lkjyWXGSQZOBZbqxaL2Cggt5fOlGA7hWI8KsEr1rOdJs118H6u7x8ka1JGlxC1eqlec53X9OfdiOwC2qXo+73Gy1nBqcD5ehnHkMsPUzyzV2+7FceRVUKrH4RAeE5GlekG3Uj3F9USlmgcUL5fqyRKBXDNOyTfG0v2x2TNQUd1AXTD15xOfqmcr1QMgQn2hRLfF+5x0A3UuP1ciqn7OBve4ghvcAWePk+04rprHHg16/ACXZWkGh5WvpmaaHATQtRpD694DMBj1QVvGqSupx8kKnAor1YtF498vpgQRcDmeh+w9TkW6SJRlh9ZzmMFCjwhm3A6AFVBo0L09jrsAMUNAQ/pBHfHH7a+/OBfSrj/nXmwHwJZxShcABpzbeZUc8x9I7nEqxzjy+O+3pU/I/Ni7GScOh6Ci6XEbgpBp8VvY7mR6OHCSGaRAloxTIF2pnvXH5vx6+88p3YCIiL3HSdYd2yfrcS0noppU9AZ3ALp54RRJWscpELIdv/PNxGxZl9NmfXo2AHAOh9iwJTlwajE/LizjpJvN7brifoFrXwBXFOkicdzwFrQ118mxFghbPU7xfVAQD3bHDW9J/WJNrmOkV111gW5kXlMr/njxh0Mk/z6SZfx9pJPzVD3vXucAsGWcknucSj+O3Opx8nDgxOEQVHSJqXq2DEiWA4rMOHk5cMq3VC/5zmBPmj82VVWsYCpjqR5spXoAlLA5WU/hSHKiWlSSBncAejTdcAjbHeh8A6e+g3LabK1oBhAPnHZslD1OycMhZOBUWMZJvr5MgVPUDGiMIgVOmqpg+uTRAOIX5Ykep6B18T598mj384utVK8aM05Zx5FrxX/99t9Hsqy/DzdCJAKiaulxSs44WePIS1iqZwZKLR4eDpFu0Jef+HfPq5T7VL3MKWzNnKpnHUA9SMY0WddxynMcOZBI+UZj6YdDOHqcAChmxqkP13IiqkklaXCHLeMknIFTwKwMiG+UZ+A07FCgaTCQ6R5/0054y9gDQPJUvXQZpwJL9cyMk5EmcAoHVPSYwyH0aPEuEtvHtOG2U/bDwKawrccpgNbmOtx2yn7pyyqtqXJV2OOk2xfAzbaOUwy6XrzXL38fzfXO5836+3Dj6OPOPOTC8z1O6YZDaOULnBI9Tt4LnDJdy/mFf/e8SrkOh8hSqmdNa/JwxklO88m+jpPcPrepekDizkVEdz9IOEv1zINZKJFx6mHgRFRzStLgDlvGSQk4SpNDwQAiwqwkyDdwUjWg/Xrzg+RjqPlx+++xLRb/d30wkXH6fEsEuq6nTtUrMHAyzNdnpLlQD2mJUr1iZZyk9jFteOicw6yM025t/fHKtKMzX6SXIOPiFbqwreOUpccpCD1l6FJvtf9/9v48zLarvg5Fx2p2V7WrP72aoxbBQZjOCIQBG0wjEyMnTi628wi+ie3vGcdxsD9fY8fOU+Trm5iXPIc494X32YlfjHmJ42s7tjBEgI1xAAHCIBkJISHEkYSOTlt97W518/0x52+uufq51l5VtavOHt8HR7Vr7V27W3PN8RvjN363n8Q/fuPN8ud/+86XFH8eaVBVpEwCSD1Ok7vPAaDMccoKh9i7OPLhhIVDMMakMyge9HWQcHCf+SFFahx5kVWvEV4YJhW0YBdJ95ZomI570fOy/6lykUWAInHkjZQepylxmmKKqw670uCOUHHyjSYMpVDUUixslarOZ+4G3vmhpG1v/hS//czd4RynpoWV2SYMgxeh1re2wuPHJU4FipNhGJJUsRoVJ8LQ89ES6/lCd7bYDkaK09UaR06K0y69fnVzftuxOX17ngpVRTroqXpZ4RC7HEceBEx+FpPa4+QFDMTdp1a9KWqDjN1u6Fv1bPvgWPUKiVNGj1NWHDmgWPUybAgjz09Y9SCteqMpcZpiiqsQu9LgDiAQZCGIrdfNOmK6z9wN/K8fDX9+5T8C3vsIvx1AX8xx6jQs2JaJFbGBWl3fDO8je5yqhUMEHr8esSxlAIBv8r9bVziEiv7IR9Ogvp5W/sHAobbqlelxauyS4tZzvNT/LgVVRTroPU6Z4RC7G0euFo4pVW/g+mA1q4zjQN1rTVP1pqgN1ONUJlWPJtLbE2zV0w6HIKse07fqEZnKIkAjL5AVyjBVj6x6g0yL3xRTTHF4EQ8cUFGpwV0gkKlz0fU6EtM9TtVZTeWaOy5HVKgV506T33ZUqGXrm4I4WS259lVVnJh47nnEie0mcXI82eMkq/h5iFj1DleRzPcVq16BxY0Tx/pfvxpAULmnhlQkw8yO6afep4lXnDLCIXY5jlx97xdF35kfsMyC8n7AVQK8porTFLWBqgZtVXEqsOqF4RCTSwDKznFC4ANnPwM88ofA2c/Acfl7kGrVKyBOUaueWMxaYTjEtMdpiimuTlCD+4mF6CanUoO7AJGFIFboalmqVW8M4uT0lP/ekf+prmOdBhEnXlTb2Nzgv2i0w96LqsRJQ3FiFhGn+m1JfceXPU5lFKcG/ETo0EGHz5RwiIJQBRtebQNwVfRG4b6jP6q4B5GumuzvVKg4TW6BGIASDpHR47RLceREnJqWidmWnbh9EkB7NMMoHk0zyZgOwJ0wyDhytcepyKpHPU5GUH6w4h4h0JzjZJkG3mY+iHsaHwJ+N0yz+qHWMTxo/n00rR9M3Ce06iWvCtSM2LaJOInFTFRdZ6ZWvSmmuKpx1+0n8ZYzJ/DaX/8LXNwa4ZZjs/j4e7+7Wq8GQrIQJxathskHthoYT3FSyJJKotQNEg0CPyaI0+bWNv9FYya0EFW26onXl2UNgyBOHnalut6rqDhZ8OFNUPW9DviBjuKkznGq/1rXj1j1xlSccr5TB6bHSYZDZPQ47ZLiRP1M7YaJhmXAMg34AcPI9YFOzvu6h1DnlBoFRfRJxuTtsK9iMMby48gzFpWGHVbd/F2o8NUB8pYXxZF3nvwoPtj4AE4gGgE8O7qEDzY+gJftfCZxH1Kc0pQjakaUPU4yVU8oTsZgSpymmOIqB99kiP82zMqkCVAUJzNm1bOsUHEap+ocUZySxKlph8+fFKedHSJOnZA4BW6l6j0LNBQnc/ca4fuOj9a0xwnA/s1xUqGSpX5V4kTfw6yAC/V3k97jJK16sR6nXY4jJ8tkp2nBMAypOk+U4nQIht8CU+I0UfACBlrX0lP1MnqclIn07i6kGNUBmaqXtx8JfMz+5a8AAOL7Fvrx+5//d9zGp4D6wdIG4BIpSlj1qMcJw8zBuVNMMcXVA6qcV25wF5CKk5XX4zTG5i+LOInnPdMMrx2kOPV3VMVJsRB55e16sm8pT3HaxQSx/khVnHSIEyku3qGLIw98D5YhXlNRj9MupeoNlPNl7B4nLcXpoFj14oqT+DlwuTOoZoSKkyX+5fuiiSJOh2CGEzAlThMFVTEpk6rXUAYrus6EEidfIxzimQdgbj+fIE0E0wAW3EvAMw9Ebm/YNAA3mzjJcAhp1RNx5MbUqjfFFFc7goDJannlqjlBqEnpxEls/sapOkeseuF/DxxRJGqExIkUp0FfHNfoCLIhFtkqfU5+gcIByOq6sQvEqaf2OOkQJ9H7YxnBoetxYioBL+hxasDbFaui2uPUG1VN1SvT4zThipOXoTipttJd6HOSowgkcRKK07jrWY1wD4niNO1xmiCoG/j0VL0Mq16jqRw6oVY9Occp54TZuaj3YLHjchUncVsny6o3neM0xRRXPdSqbOXNn4AkC/FwCNuEy3bfqqcSJ5pBNRwoVj3D4P+6/Wp9TuL1GTnEyRCbRGM3NoiOj3lSnEqGQxy2Hicj0I/xtncpHEPtcSpTdPADhgfPruHS9hA3DVfxEiCb/AEHp8eJ5jhlxZEDvA8q/vsxQYmaRJhoHZikIbh58zgPEqbEaYJA/U0Ny4j2AhVZ9SwTDrPQNHx4E9rjFMaR5xwUH+yoeVxeHHnSqheLI8dgatWbYoqrHKo9b+QF8PwAdlU7SQZxUq16zHMy50cVwumn/vcgZtUBQsXJHfS4v4Sq4JI4VVCcxPXIyLgeAZBKkBnshuLkKYqTRjiEJA7eoetxiipOWcSJfx92a45Tv0Ic+f2Pnse9H3kM5zc5yfhO43H8YQvoeQZms+4ke5wm3KrnZVj1TBtc6WXjpWpmIF44oZEEkzQEd2rVm6J2pCbqAYVWPQDwxAXZm1DFSSuO/PRrweZOIWttDxiw3ToOnH5t5PaGaJxKS9WT8e7xAbgUR26M5Ps+xeGGHzB8/qlV/OnD5/D5p1YP3SZqiuqIxyj3x9ls0JwjO5s4eVSVroJMq152j5Phx6rgMpK8vOJkSOKUozgJJcjclR4nH02jhOIkwxGCxHzAgw5DVV+y9gdKOMRurHkqcdJJ1bv/0fN4z4e/IkkTADQMfr9zWx7uf/R8+h0PmuIUt+oZxq5Gkg+dMFUPANr25IVDjKZWvSnqBm3yW/EvVYFVDwA8WOLQyexxCphGj5Npgd3168AfvBuM8XWGQMv9F2/7BbzZjBLLvFQ9ruKxzAG4M9NwiKsC8QonAJxcaOOed5ypNKtnisOFeCBEf+Rjvl0twtcQ67UZ29Q3rZA4+a7sdiqPIqueQpxmWzZmmxY6fqzHU0aSlydw9PqMHLXHFH23xi5scvuuXzIcgr8fhzFVjwn1JTDs7KKkorjVbVVkjEXOnX6BzdUPGO79yGOIPwuaReXBxr0feQxvOXMiuVc4KD1OWeEQAFdIvcGuJOvFz/92c/J6nEhxakwVpynqQmoUOVBo1QMAz6AL8mQuKn6gQZwAmC/+AfyU915sI1qtWbeO4j3ue3H+1FsS98kbgOt4AZrwYNJS3Yj2OHWNIUbuhEv/U4yFtAonAFzYHOI9H/5KdoVziqsG8d6McZL1pD0ttqlv2eEAXM8ZR3HKStWL9jgQjs610DHERq3Rif5bwaqnoziZ4rVbbBeI08hDC8XXxPDJ7B5x2G8QiWV5Md4UDmHUP8dp6AZQRbyiHqcHz64l1mEgJE4uLJzfHOLBs2uJY2T/06QrTtKqN5P83S5GksdT9TpCeRp6NRCnwAfOfgZ45A/5v0G1x5yGQ0xRO6Ti1Miy6uUpTuKCPKE9TrrECQD+nL0av+d/C//Yvo/f8Pf+M/63L53EXzyxiu9NqVTkDcB1vABtKItUTHECAOZUGwQ5xeQjq8IJcBXTALIrnFNcNdiJVcrHCYgge5oZU2QMw4Bn8NuCcZwBKnHyBnwTY1qp4RAAD4hob8asymNZ9TzACMlRGkhxMpkvn19d6I9GOIoN/sP608WPr1r1diEGej9hsFBxynwH1DlWNVsV+7ECQ5Et7NJ2esGgIXrWyDmTepxUnCa80CmtemmKk7htNxWnWDjE2IrTY/cB978P2Ho+vG3+FHDX+4Ezd5d6KCfLVXXAcLCf/SFD2OOUZdXL5rm+WHCCCe1xksRJY1q0aRqYUcnO8TNwAn6/hp28f67i5AdoU3XSsEK7Y2MGjNqz1Y3IFIcKWRVOAgOyK5xTXDWI9zj1RtU3GyYpMinEwjf4+jOWpVrtcQLk+kU9TnHidHSuhQ6tp0SYaANXQXGi12faOYqTkvRa6ybxsfvw7y/+KF5qneU/f/Y3gA/czjd3mU+GXzdNgyGY9BlAZSFej47itBsDcBNKbcF5QymPcYRWPSv7uIPQ48SYojilpObJ+Wa7R5zasTjyscIhHrsP+IN3R0kTAGyd57fnnXcpmIZDTFE7HL8Gq96kKk6i0mVqVPUtw0AXygV9tCPVuKaVrKu1CgbgRoIhiLgZBhyLbyIMdydxvykOB7IqnFWPm+JwItHjNI5VjwnFqZFCnETVPBhrjlMv9ee0HieAiFNsAHhFxYkxJlWOuKKmwlSr7XVtEsUmbiW4Er29aBOnkIpg0vtjSsIQtlCmMf+oAU/OU6wLyfMmf5N+x43LOLnQTiRKSqses3ByoY07blxO3vkg9Dj5LsDEPiRXcar/ekPhEIk5TpWHEvtcacr0awC4/xdL2facQ2LVO9jP/pCBFKfEl0rDqucL4hRMKHGiOHJbgzjZpoFZQ1lYnO3c/P8iq56stsYWMs/iFSEzXsGd4tAgq8JZ9bgpDifiTe066WBZsEShy0ohFoFJVr0x1uk42RE/ywG4KcQpLB7FwyHKKU6OH8go8Dzi1GiqilMN1yRlE5e8ghRs4pReLOYdMsXJ11GcQqvebitORQUHyzRwzzvOJG5vKOEQ97zjTLptWvY4TfBnqJ6baYoTFb93YZ9G85ro/A/jyCvaU595IKk0RcCArXP8OE0cljlOB/vZHzKEqXoZPU65Vr3JJk5lFCfTTCpORIooelxFXqoet+rFNg0CnlCczCpDIKc4EMiqcBIMILvCOcVVgzhRKkoHywMFIqQpToEofrFxKs4Jqx7/ObvHqZWcY0f/eiWJkxdIdcDOseo1bRsjRgpBDdekcTZxKqmYZJtXBZhC/csrqu7mAFyyuJJLRifG/67bT+KD73oFjnRDcm2LOPIz1y5np5weBMWJzmvDTHcI7WIcedyq1xlXcdq5WO9xCBWnaareFLWhjlS9SSVOlGak0+NkJRSnndxKRV6P08hTepxi8aBegwdEmN60x+mwQq1wxr959HNmhXOKqwbxSnktilMOcRprnc6y6uX0OLXjPU7SqleeOFEjfxoxJDRtEyPKnqqDOI2ziVOJ06QHC5SEUaLHaTcG4JJV76ggQX3HB9MgZ3fdfhK/+cMvlz9/zy2LAIBji93sOx2EHic6n+xOdJ4KgVTaXQyHkHOcKFWv6lrWPV7vcZgqTlPsAsJUvfJWvUD2OE3moqI1x0nANAzMQiFOo21ZqUhLYym06hnpVj3f5psHy5sqTocZVOE8Nh/d6J1YaOOD73rFdI7TFImm9sqKUxDAFsTCaibtn0xY9VgdPU6d5cjPWT1Ox+ba6MQHgI9h1aNhpWZOHDkf9it+X8cmcZxNnGHAN0R40iTbvCrAYMV7A/qdaTAENVsVqeBwRAxaZkzfGqYqIYu0NOe+DiLiE/wZkuKUNsMJ2NVUvWFWql5Vxen0a3l6Xp5fY/4afpwmpuEQU9SOMFWvvFWPiBObUMWpTBy5bRroGsoF3enBzRmcVjTHqZVh1QtsrjjZ7lRxOuy46/aT+JN//F3y57eeOY7Pvu9NU9I0BYAaFSdFXbFTFBk2bo+D74Wbs+4x/q+06okeh5xUPd+icAgiTuWKRiM3VJzyHBBNZWZVLbYksYlL63DiyN/EMXF9xIQWFqvCoB6nnL2Bum9gNdvcqMdpZbap3KZHbNQRAK4jzoccMn4wFCdxPtkp/U2A0uO0C+EQbno4ROVUPdPikeOpEOfhXb9eatTANI58itoxjlWP0prqXhjrAjkEdIiTZRqYQcyql5PGQu9XaqpepMcppjiJWU62P1Wcrgao8yy6LXtqz5tCgojSfJtvMiun6inEyUqpOhNxYlXta2qRRxInfptM1YopTsuzTak4bXpiEz2G4mRL4pS9yW3ZJhxGZKWGYp6yiUu6zYo3cVRYnOhNdwWEPU45xElVceomTkKpnW3aaJr8gylK1iOoxMmjsBQN5Wyie5xohlNaMAQQDsWuw74ag7TqxcIhKitOAJ/T9M4PAa356O3zp/jtZec4TVP1pqgbmWy8hFUvmNCKmicGD5pac5wQs+qpceQ5Vj0v6a0euUFoU4lVgZjocWqUbJCe4mBCtWNtj9H8fzXCDxg+/9Qq/vThc/j8U6tSQT4sIGveUWE5qjzHSVWcmtmKk1FVhSGbnmkDnaXIbVnhEJZpYMbg14U1R/xujB6npgiHKCROZNWrqxH+zN248LbfwmUsRm/X2MQdfuKkodQAAKt33aMep5mWBeLr8YjyzPsqa7Aco5KrnB0AxUnOcMqy6ok1YRcUp0E8jtwm4jTm0OczdwOv/snw5zf+MvDeR0qTJiDc4x70cIicb+kUe41RVuOcX7yoSCvCLqS11AEa2K4TR942fLQMZfF1tpVUvRSrnrhtlKo4+ZmKEwRxagZTq97VgO1ReMHtTYmTNu5/9Dzu/chjkUHCJxfauOcdZw6N1ZEUp2NzbTx1uTe24uQyC61GynpNroGqVXMiTs1ZoDkXuY2ec1xxAsCLRwy4MrJwC1BZcRp5iuKUs1lvWiacOsMhBK5c9zb8nLOGT7bex8nf3/8Dbs8rsAsx8XtWYubMQYBBryePcJg1WPUCnycW7lzkfWTiPSd1abZpoWUCO9AvOuwox3meTq/WAehxIsUp06pHxGn34shlqh7FkY8RdCOhWnpnj5ay56k4LIrTlDhNEDLjyIPiC1UgFpVgQheVMj1Okf4mABjt5Hpji3qcsuLImbDqNf2p4nQ1YGcYnhs7U+KkhfsfPY/3fPgriRGIFzaHeM+Hv3JowjWIdFCASOUeJ9H07cBO3RwYdk2KU7PLyZNy2zCjxwmATNW7PBTPqWKPk5qqV9TjFIZD1LdJ7DkeZighcOYIcOPrte5HipM5yTavCtAKhzAMBIbN1akqr/+x+/gMLTUOfv4UcNf70XduBADMNEPFaaBr1VPWYznX7KD3OGmHQ+xhj5NXA3EabYX/3b+SfVwBpuEQU9SOzB4nv7jHSc4H2QXvbB2Qc5w0rHpdI7qoBKNt6WuvMgBXDn+MpeoZLV6xbQZT4nQ1QLWQTIlTMfyA4d6PPJY3Nx73fuSxQ2Hbo16No92W+Lmq4sTXajeDOMmKcy2KU5Q4ZaXqIQjQYpxsXOyL52SPn6qXp3K0bEtRnOpzQfQdLyystXKiq2OguG42yZvuCrBEUdXIIxxQrIplC6uP3Qf8wbuTM7S2zgN/8G7cfPkvAfDvXEt8tapY9WSLgU6v1iST36JwCIoj38Uep0SqXh2K02g7/O9eDcTpgCtOB/vZHzLIVL14HLkMh8heHJlYVIwJXVTKKE6R/iYAbBQOfCydqhcJh4guZoa48LamxOmqQERxGk6JUxEePLsWsefFwQCc3xziwbNre/ekdglyHs3cmIqTT4pTI1UdN0SPgxlU3DgRcWrMAE2hoFOqnpPe46RWty8MxPpbNRyijOJUZziEQN/xw+HoovClA7KyG4csjtzUCOoAQuIoFSodBD5XmnJKJz9w4TdhIsBM00bLonAIzVQ95bjA11GcqE9tgj/DwnCI3YkjZ4wp4RDROU5jhUMQIsTpcuWHOSxWvYP97A8ZMq16fnE1hi4Mk5qqV86qF9usKQMfc1P1MgfgphMnUxCnDpsSp6sBqqd+2uNUjEvbenYS3eMmGVJxEsSpco+TIAkO7OQ6jtCqZ1atOAuSxK16QnFxeggCZeOUQ5zOUQ1KhkOUjCP3fNgUDpHX47Qb4RDgn1OXCmtliJN5ADbdFUDhEEaeVQ+hlb/U63/mgaTSFAHDsn8Zd5iP8x4n8bXTTtVTrXoaAVgHQnGS4RBFceT1EqeRF4DmDid6nGohTmHxeiziNLXqTVE3xrHqMarUTGiPUzCG4kTVDsNID5cotOoh3apntfmFtz0lTlcFdtRwCMeX38kp0nFsLsOnX/G4SQVjLKk4jZmq57B0q55JxKmqZSzDqjdSikYzcaueIEcjZuPijvi7tLEr2WsRVZw0wyFq3CT2Ila98sTJOGRWPZmqV6Q4Sateide/c1HrsGPYQKdhQQgdsghRhEjxSmNW5YHocZLhEAWpejWHeI2U5Ly4Vc/1GbyUvVG5P1CPVc+dKk5T1A2pOFWy6lFFabJ7nCyNHqcZYcVwGwv8BlFlbVgmjJT7F4VDyDjyWBXIagvFKU7UpjiUiG+Gdb34VyvuuHEZJxfaeSNHcXKhjTtuXN7Lp1U7Rl4geyjHVpwUq15aVdUUQ3FNNqZVL0acVDtOQnESdrwhmri8IzZsFRUnTpyK48ijilN9G93KVj1SKw5Rql4QMNiMv56iHidp5S+jOHWPax12CYuYaYWKk+66qvaZsjKKEwvCmN5JA51PRXOcag6HoPPfNg1ZSFbXgWHK3qgU6rLqTRWnKepGOKuoglVvwmVsT+xMTI1vHClOw/ZRAIAhNgutjJONiFN6HHm2VU8SJzacqg9XAbZjfU3TgIh8WKaBe95xJvV3RKbueceZAz9IWP0erMwScaqoSMpwCCtDceKVaLOqZUxa9WZDq54bEqembSY/D7GZG6CFS1sjMMbGGoCr0+MUGYBbczjEHClOzfI9ThOtVpSEFzBJYouJU4XXf/q1PD0vp3Ry0TiCB4MXYrZpy3CIKgNwtZQzVY2a1M/RK+hx2qU48rQZbi3bBNWZxw6IiKTqrVYuQGSO3DlgONjP/pBhlBW5rWHVk7+bUA83bUJsDeY0KyqKw/YRAIDpD2HBzzzZGhZfHVw/4JsCBVGrXnQxszv8wjtrDGTT4hSHF/G+pmmfUzHuuv0kPviuV8hzjHBioX14osiFEjnTtDDXDjdn/Qq9AYGw6mSFQ5BVz66qOFFFOxZHPqAZTilR5ESOBqyJkRfw4c+0sfOdUvZuxwtgU6peTiGvZZtwUX84RG/kowvxHlSw6lUmrBOIgDHZb2bYmuEQZV6/aQF3vT/jl3w9+DfGP0QAMxJHrqvWquuvTt9c5HcTWiCWhYjMVL3diSMnYtRSzn/DMOQQ3LH6nBgLCzYAV/wG65UeahoOMUXtGLn05S9v1cOEe7hlHLnGN46sesPWUXnbLAaZ06ZbQqFjLFS2CJE48thshUZnXjz2aEqcrgLEFaa4AjVFOu66/SSuXeQbgfm2jf/6E6/BZ9/3pkNBmoDQWjTTtNGyTZBgUyWS3BPEKSuO3GryNciqucdp4PD1K9HfBEiy5Zj8b1/aGkUr4p6+6jTyAjQ1U/VGwqpHZLIODBwfs0b5cIiwP+bwnPNewGAbenHk5Egxy6TqAcCZu4F3fkgOi5eYPwW880P4qPedAEQcOaXqafc4hceF9k+NHifgAChOWT1OuxNHTrOaOs3omlNLQIQ3DM8bUswq2vWmceRT1A5njFQ9WlQmMY48CJhMfNHqcRJhDaPmgrw4dzHMPNnU2+N9TtFUvegA3IYIh5gxRnCcyXvfpqgXceJUOQDgKsS2eK9cn+HOm1cOvD1PBVXIZ1sWDMPAbJOvs1UiyX03PxzCEj1OdtkNLEFa9WaUVL2dVKuOhCAuvsn/9uXtUbR5vYRdz/GCUB0o7HHi76NfdzhEhR4nmPx9kZawQwDfD616ZgFxChPpKrz+M3cDt31f+PM7Pwy89xEEL3yHtOXNNsNwCJ0ep5Hnh+qDZWoqTsr+Z0JDsELFqWgAbr3hEMOMUQRyltM4xEn2NxnA4nX8PysSJ9ef9jhNUTPqsOpNouLkK/Y5nQ0XxYM7VujjnzGyiZNqI4on6+Wl6pntcICiO9jBFIcbceKkpuxNkY/tIX+vBq6fml55kNGTVj2+MZsRXe5VrJzeiJOUUUY4hNXk5MWCX63BXSpO3bAQpFj1EsEQgFScAmEfurQ95BGlMiCinOKkRZysMByiTsWp7/hhj1OpAbgVwhEmHF4Qfha6PU5j99YBwLEXAaYlVQ6AK51l4sjVotXRuZZWUiMMIyRPE7jPARCeS3scR55VOCH30lg9TkScmt0wMKRist5UcZqidsg48gpWPVo4jQmsqPlBNeLkWjPy4tjFMNOqZ1uhvSauODl+gA4oSSq2mNlt+Izf0RtsY4rDDdoIL8/yi9fOVHHSguMFkbjrwzY8WCpOwtZCipNuk7sKUld8w05NAG2oFp4qdp00q17gYTjk5KSTatWLbuYub8fWw5KKk7Tq5agDtmXCE8SJVLg60I8oTvP6dyTiwA7POe8HTJs40d6hsuI2VMIBRpsAQvJjGEDbVuLItYgTEX0TC52GojjluGqAyZ/lVBQOQcXbmuPIB7LNYxcVp9YcMMv7zscmTlPFaYq6MM4AXMOiitLkLShBScWpzUTV1pyVyUmzxiC3SiGT9eLEyQvQNsR7EpfPDQN9gy9w3miqOB120Ib/+Hxb/Dx558okIqnUHS7iJBWnVkxxqhBJ7rtEnNLdAbZQnPhBFTZPacQJgCc2tuk9TpxomE2uMIXEqXwkueP7sDV6nADAF5tcVmN1ve/4MjyojFXPmPAe4CrwGdNTaoCwB7oqcVJT1cR3ra8EkpimEcaRa6wP1F/abdnotuwwcESTAE5sr1phOMTuKE5DMccpy6o3dMdwCUSIk+g7r9rjNA2HmKJuZEY1lrLqTd6CoipOpkaPU4eJZmarE1GcsuLIgewhuHk9TgAwAN9E+8Op4nSYwRjDjrjQn5gXQ07HjWi9SrAdI5hbh4xwxhUnsuzpNrmrCIg4ZagxjQhxqvA+yh6nLt9EimZtd8AJVZ5Vz2pxoiWJExWSSihOruvCMqhhNX+TG5j8mkTvSR3ojSoOwB1XcZlAeD4rrdRUJo4RxYn/d9ziKsMhdBQnRyFObTsMh8jrcQLC1znxilNGj5OMI98bq14t4RA1EacgYHB9/h2ZEqcpagFjTAmHqG7Vm8QLQ1mrXpt6nMyOrKrOYoCGnX1fes/i6XiO56OF9FQ9ABgIxWlKnA43+o4vA0pOLPDPfJqqp4f4+3TY3jci0LQBJAI1nuKUvlY3bRsOE5ubKpsnh+LIZyP/0vqVF0feaPPC0aUxrHoR210hcapfcRo4PuYqKU5kZT88xRI/YGiUVGoq9zgJex4ASaIGbhiqAqDUHCdS/2dbNmZbtqJi6ipOE0qcSL0tjCPfpXCImOJM7qV6rHpdxapXnjipe7OstouDgoP97A8RVItZhDgFPs/NB3KrMTQfZBKtehHipKE4tQO++AyVcIhZY5jri6XfxXucPN9DS0S2pi1mQ0GcguHUqneYQfYR0wCOdpuR26bIR1xhOmzEiWLHaQNIlr0qceTMowS7dHcAT5ujPo0xrXqAXB8DYTVOJU4ibrzZ5ve5tE1V8fJWvUCdyVSgDjDhgqiTOI1Gw9B6TamCOhBWdmsCHRlV4QVML40OGC9VkDElWQ0JxYm+c2XmOJHdl1v1rMPT4+QW9ThRHPnuKE7tWH88EamxwiGcNMWpfI+T6gZKm3F3kHCwn/0hQpQ4KRc/dYHIq8aIE9KaRMVJlPoNAzB1FKdAxJGbHVlVzIsjB4CGnW7VM9VBcymL2dDktzHakExxKLE9Ciucc21+Hh22Xp3dQlJxmtBNS0XEFafuGHHkgVBkWMZGVo3prmbVE+tUI6o4SeKU0+PUnuFraSIcosQwTt8roTjtQoKY6SoFrkqK0+E55/kA3HJKTaX9gbMTFm+BRI/TbIusehC3+3LgfRZ6EeKkWPUKXwel6k3o5+gVpOqpihPLf4/KYCiJU7zHie+L1ATE0pCK0/xYVj21qD0Nh5iiFlCinmFE47UjknTOomKaE2rVC3zYz3wOd5sP4LXm17mCVgCpOBkziuKUPQAXCE9ElYB6foAmUy70KbMVHCJOU6veoYZ6oaYL/ZQ46SGeonfoFKd4j5PYAepUzuNgopLsZ/SjtmwTLhGnsoSCMaXHiYgTV43YiBOqdOLE19P2DF9L1/suPvONy2DSqqevOBFxYjClipH5dMXcqLrUAccL0BJFNWZ3ijfZKqzDl6rnKXOcipSasaz8an8TIBWnviw4RK16QLE1bEcpZHGrnq5ydkAUp6w5TnJdYLW+hsweJwqHqCOOvDUHzFRP1SOrnm0aWgX0SUaBLjrFXmHkhv1NkRhb9eTKtepRRWmCFpTH7gPufx+Wt57Hb9J68YH/BNz1fj5ULw2MoSWI08iaARqCOBUoTvQ7taqhRpEzqwXDTN6fiBPcqVXvMGNHTXFq25HbpshHXGE6bIQznqonB+BWCYfwNBQn1gAMlN84eSOANv6xHiciVHk9Tr/1+fMAXgwA+Ae/8yB+a2Ybb1V+rwPf4885MBvIp00IN4k12ZIGjl9t+C3C1NlJdGRUhRpHXkQiSXGr1OM0ihEnQaR6cvgtf28bJi/8MibSD1vZ20tp1WvHU/WKrHoTPMeJMX3FCeDnhZ2fTKmLYQZxatcZR95UepxGm3w9slvZ94vhsMxwAqaK08SA2HhmFDmQW+Ej4jQxitNj9wF/8G5g6/no7Vvn+e2P3Zd+P9/hwyERU5wwzPXFhql6ofw9cgO0DQqGSF/IHCscIjnF4YVa4eyOETd9NSKuMB3WVL1ua3zFCZI4ZfQ4WapVryShUNeoWI+T6QrFKYU4XVxdBwBcGkbXz3WHH/uN5y5qPwUmX19xzdUQm0KjyryqFPQcD13woppRmjhN2PWxBqgDcAuVmloVJx4UQT2ApDgZBjDT0Dt3kla94tlgAEJi5U/g56haXgsVJ9RqYaUeprhVrx7iJIrKrTmgvRiS15KqExGngx4MAUyJ08SAFKcEG5eJek2+MmXAFMzfmgQrQuAD978PQJqHV9x2/y+m2/aUeUoDoy0ri4VWvQzFqQ3+/hkZxMkVxMmYEqdDDSJOc20b3ZbocZpgxckPGD7/1Cr+9OFz+PxTq5GAlb3GdkxhOmxWvXis8uwYPU5yqG2OVY+IE/NKEgqy6dmdsIhGBIrseDGrnh8wPHOBb3AGLPqcBuA/f+7r39b+fjGhOGURwwhE9HJdxKnv+EoUeYlgCKjEaQKujzXBDxSrXoFSY4zT41SgOFGhAQhJVJFaKwtZzZhVr3AeFf/94+fWJmJtjEBVbrMUJ9MMyWGNxInmNMXP/zCOfJw5TuLzb83x5092vX5J4nRIZjgBE0Cc/sN/+A+48cYb0W638cpXvhKf+cxnMo/99Kc/DcMwEv97/PHH9/AZ7w6oxymhqsjht/kLitXgFzJ7Eqx6zzyQVJoiYMDWOX5cHCLBpc9a8JkpNwZdaKbq+eGC7XgB2ojNLImBiBNVbKc4nOhFLtT8YjKplrP7Hz2P173/U/iR3/4C/unvP4wf+e0v4HXv/xTuf/T8vjwfsuotzTTEz5P5vlVF2OROc5xE1bzK94MUmUziZMkeJ9/VD2UAkEzUU/7b8jhxmolVnB88uwbD539niOhzGoITG2/Ux4Nn17SeAvPp9Wm4/O26iZOHLsR71povdV9p1cPh+e76AYNt6Ck1kjihAnEcbkZ/FhvpgROuqQQqPlBUeRZ2BLHqtsvNcVofcZL0bz/xtYlYGyMgxcm0C4K82tHja0BRj1M9ceTinKsYECGtelPFaTz8t//23/De974Xv/zLv4yHHnoIr3/96/F93/d9ePbZZ3Pv98QTT+D8+fPyf7feeusePePdwyhrhpMcfpt/oZI9TlUWxrqxo2n9SDtOKE49tHganxpHrtHj5HqKVc8rtup5Nt94TInTwUEVNWZb8dTPkeI0gcTp/kfP4z0f/grOb0Yvqhc2h3jPh7+yLxuELUGUTi3S/KsJKM7UiMQcp9Y4ipPoqczoXVDjyD2n5MaJQhwixImvj7YgTvFwiEvbQ3TEHDsiSgRSoNpwwojyApRSnOSIjJqseiO/0vBbADAsSp2dgOtjTYgqTnrEyUZx4l0CpDh0lvm/McVJ/c51NBWn0Kpn8R4nDeXs/kfP44nL/HvaUPY5+7k2RkCKU9YMJ4KMJK/nvACyiRPFk9cTDiFUXjnLqZpV76BHkQP7TJx+4zd+Az/2Yz+GH//xH8eLXvQifOADH8B1112HD37wg7n3O3bsGE6cOCH/Z1mFbaoTj5A4xV6LatXLgSWtehOwGewer36csKP0WIcv8C3qcdJM1VPiyLnilE+cfJsrTlSxnWKyUVWNiabqkQ/fnxybB/hG6N6PPJZncMW9H3lsz58zWRpPHtLBwaoaCah2o/Kvk9QVI2O95uEQ/O94btkep1iinvLfkjjFNk7H5toyICfLqtcxHByby+jJiENaEXV6nITiVFMj/8D1xgiHCK16rMYY6P1EmTlOhk3EyYNXdv2gHqeFa/m/lKo3SipOlExZ1OMUGYDbVAbgZrwOWhtdMTzaVojTfq6NERBxahScS7ugOA0z5jjVGg5B51xVxekQWfX2LVXPcRx8+ctfxi/+4i9Gbn/rW9+KBx5IsXApePnLX47hcIgzZ87gV37lV/DGN74x89jRaITRKLxAbW3xk951Xbju3lRO6e/k/b3+kF+QmrYRPW40QAO8GdfLe74G/zI24O3Z68rEqVfBnjsFbJ+HkbINZDCA+VPwTr0KiD1Xo78BG0APbTieD8/qwAa36tkGy3xtxKkGo/Bz7Y8cWW0NrBb8lPt6Ft8MWm5v/9+3GHS+N1cTPv61i/gnv/83iW8UVRz//Q+/FG97cTpp3+rz70GnYUCx5GOzN5BznfYbXzy7llCaVDAA5zeH+Pw3L+HVNy5nHlf392ZrwN+7E/N8o7092Lu1cy9ABKlp8vWFvh+9Ufm1VNrSrEbmfT2DX3ZHgz5aJR7f6G/CBhA0ZuRaZlptWABsnxOnhhldI19+7Rw2TP7zIKY4kXVvqeHi5dfORa6JWc+drHows1+fBLkgAqeW78tW38GcUJx8ewZBicdkokZsGx6GIwf2IbALjVxXEgiPGWA57wczQsIxHDkwmH6x2exvwAIQzF8D88JXwYZb8FwXO0J5btnh94XmBm318z9zUq07toG2FaApUvXcAIk9ARCujZ4gAg0jSsx018bdhDHcgQ0elZ+3V7OtJgxwi2zeZ1YGZJuMn/9NM/x91XPQHm3DAOBaHcB1YXaWYQHwty+WOgf7I36sbRqJdWYSridlnsO+EacrV67A930cPx7d6Bw/fhwXLlxIvc/JkyfxW7/1W3jlK1+J0WiE3/u938P3fu/34tOf/jTe8IY3pN7nX/2rf4V77703cfsnPvEJzMzMjP9CSuCTn/xk5u8eumIAsLCzuY6Pfexj8val3jfxBvAv3Z8rt8cx3DyPW8EVp4/lHLdXOHnk7+JV2/8eDDx5l8DE/39p5Qdx/v6PJ+53av1BvArADjp46ltn8T/7z+JNAGaMIZ568gl8rJfez3b5ggnAxKNfewwf2/gaAOCpLUir3uX1HXwh5X25sM6ruF5vbe/fNxZgZecJtN0NDBuLWO3eJgmwirzvzdWCgAH3fsUS359oSAp9p37ljx+G+7SPtBERT3yLfz+eO/tN/IXzJCzDgs8M3Pc/Pokl/UTVXcWXxRpQhE985otY/XpxZbWu7835KxYAA1vnnwZg4dLG9kSsMXWAMWBnxF/fFz77V3i8BTzXAwAba1u90q/z9j6vzl5e3cy876y47D726Fextqr/+NeuPYBXAriyNcDnxWPfcPksXgrAFuMUvvKlL2D169H7vcUcAgEwQLRAQIrTdc0BPn7//4j8Luu74ztDoAHsDEb4bMF7c+Ei75sy/FEt35cvXDRwq1CcvvXcJTxW4jGvu/AUXgFu8frY/7gfh6DojUfXDNwklJovPPjXWP169kiNW55/Bi8Gf/3/4+MfR7uESecl334ENwF4et3DTeCf5/1/9qd49nwLgIknH3sUn7z8CABga/0KABNfeuhv0Dr/cOZjXl7n59xXv/wgLrZ93CRu//hffBp+Ixn8QWujJ84dO6MlQXdt3A2sbH8drwO3gH8q57v5xoGDeQBf/Nz/xJW58vOQ0rC2yd/Ph770RawrW6THN/j7dml1o/I5+LdEMfvTn/8y+q3ncOuFVZwBcO6Jh/HQUP8x/2aVP5fednJtnIQ9Tr+v7zra9zlORiwpjjGWuI1w22234bbbbpM/33nnnfj2t7+Nf/Nv/k0mcfqlX/ol/NzP/Zz8eWtrC9dddx3e+ta3Yn6+XINpVbiui09+8pN4y1vegkYjvbo9euh54MlHcer4Ubz97a+UtxvPfh74BjDTXcDb3/72zL9x7ukngG/xBSXrOD9g+Otn1nFpe4Rjcy185+klWLs2iOzt8B9/Jaz//uPRKd/z18B/y/+Bl7/w+/HylHsZD68DTwM91sb1p0/j9a+/HXj8n6GLIb7j9hfj7a+5PvWvPfCnj+HBy8/hxltegLe/8WYAwOeeWsXa438JADh66vrU9+X/6q0D3wDm7CD3/a0bxuN/BusT/wzGdhiiweZOwX/rvwR74fcD0PveXC344tk1bHzhr3OOMLDhAEfPvCa14vhn/+Vh4PIlvPKlt+Ptd1yHf/E3f4n1vos7vusNuPVYuYSu3cLK2TV86Mm818jx1te/ulBxqvN78y+/9lfAYIQ3vvpluO/ZR+AZDbz97W8b+3EnASMvQPCFPwcAvOP73oK5dgPPrPbxr7/6WfimXfp1Xnni/wA84NipazPXk08/9B8AALfedANW3qi/5phfuQQ8Axw5eVo+tvHVbeC5D6EjCkRv/u434Nbj0e+z/WgABMBcdw5Q5nx7YobdLce7uFE8XtF35yNfehQA0F1YLlwvn/jTB4BHuQvi7d/3fbmpsDq4/PlnMPssJ043nXkZbvgu/ffO++LzwHl+ffzut75V9rMdZNiPXYR9lhOI13zX68CuvSP74M88Dlz877Dh43vf/BYsdPTXBetPPwJcAU6/5E7gU3yDe9cbX4v/9Py3gM1N3PmqV+J7bl3CJz/5Sdx47Sl8de0CbnzBC/H2192Y+Zj3fvUvgZGLN3/P63HjggnwWifu/J63YH5hKXE8rY0uklY9FUVr427C+GYT+CbQXTySe27Y5/8NcOEcXv3Kl4Hd8uZa/vb//singZGDN3336/HCE6GN9dgz6/jg17+ERmcWb3/768o/cODDfoi7IL7nrd8PzB7le7SP/l+4dqmFkyX2TP5XzwPfeATHjyzj7W9/FYDJ2uOQG00H+7Z6HDlyBJZlJdSlS5cuJVSoPLzmNa/Bhz/84czft1ottFrJknKj0djzDyrvb3qMX1RaDTt6jCFq7FYz9/m2O1w9s+GnHnf/o+dx70cei1iBTi60cc87zuCu20+Wfi1aeMnfAT7xzwBBDn6u/av4jff+NOy8ifMiAaqHNhgMNGYXAQAtw8VMA5nvAXl5fWbIYwIYaAmrntmcgZlyX6PNF5lG0N+778Nj9wF/9A8Rj2s3ts/D/qN/CLzzQ5EBwfvxXZ00rPb1+k1W+17qezUQcawLM/w8mm3ZWO+7GPrZ36m9xp23HMPJhTYubA5T+5wMACcW2rjzlmNaBY+6vjfUj3D9Eb4h7zkeLMs+8NPfAWDHCRu052fasC0T87P8etF3fNi2nVnIS4MlghCsZid7rTea/NQP3HKfj1gbzfZcuJZ1ePGvzTihmJtpRR+TMRkq8Yf/5M148LKNLz29it/45JPwTP46TW+YWBvTvjtBwGCKfiXTLv5u2a2wr7RhsrGHfY584ISw6lmdRVhl3rumSJ2FD8OyJ+acHwuGJQfH2s02kPOaWJP31diGB8O0yr1+0Vtnza4AzTnA2UbDH2Dg8DV1XvnOdYXteejlr6sUHrE420a3Ga7tI6R/r2ht9PrCqhcjTmXXxl0Bo9EnM/nvr+i3tuHnfmZlQHHjc53o+T/XacnfV/rOD0MVpjG7zJ/vPN+fm4PV1D1VFvysPS4mY49T5u/vm2DdbDbxyle+MiHRffKTn8RrX/ta7cd56KGHcPLkLm389xCFceQFzbh0EWkYPr9YKtjXpK7hhvzPs9aNuUN8Acg48h3W4Y2ezbB6OsOyJ9zLVL1YOERHhkNkNGyK5uqmv0fhEOPMuLqKodu8nnWcTNUTiXpdSk6boGQ9yzRwzzvOpP6OtgL3vOPMnm4M/IDJ9CwKh2AM2Dkkw4NpCHLLNmXfCzW7M1Z+/klILLL9n75ogPdLh0Nkx5G3GX+s+ABMtQHdas3gzptX8FPfcwvmWjbWXDtxTO6f98OBq1nhFypsdc2tIUGsN/IwVzEcwrJD4lQ6VW5CUWYAbpiqF5QPUJBzfOaBtnDpDDfRF5HjaXOc8qL8XT+QYVjdlh1xpPTc9LWN1kZPKk7hffZrbUxANxyCzp1dCYdIH4A79CruJ2iuptmQ4wXCcIjpHKd9wc/93M/hP/7H/4jf+Z3fwde//nX87M/+LJ599ln85E/+JABus3v3u98tj//ABz6AP/mTP8GTTz6Jr33ta/ilX/ol/NEf/RF++qd/er9eQm0YN1Wvocwp8pXBivua1OWNwghdAAuGRuS3OFH7aPPnZDVkfG8HxcRppAzAjcaRZ/SzCT91M8h+7Foxzoyrqxh33LiMkwttZF0WDXAF9Y4Mm4ZMThMXeSJOkzYE967bT+KD73pFooByYqGND77rFbunDmdAjWxf6TZleuVhSdbrC1JIEeRANJmuV5IgmqLqbDayiVMgNrlB2QGYqcSJr18zYr5RPI48MpRTxCTblolX37SCARPP0dUrGjl+gIbYsNL4izzYTeU9KDvsNwV1DMC14ZdPlZtQ+GqqXtHgWPn6x0jVa8+Hs3xGW+gL1UhN1aPvXz8nxU0tVs22bFkcDpiBbTf7ud11+0nccfNx8TrCx9+vtTEBj4hTQe88EZCa4shdP5CfaWKOk/g8BlXjyNVEPVLeZRz55USRPg9yjtMhIE77avT9oR/6IayuruJXf/VXcf78edx+++342Mc+htOnTwMAzp8/H5np5DgOfv7nfx7nzp1Dp9PBi1/8Ynz0ox/d096U3cJIVDZbjQzFqaCiZDdDYuU6I1jiwv2gZlLXg2fXcOfNK+WfeB4GG5EfF5DdvCohbAE7aPM5TgAGRgdN5qKTQ24acgBujDiR4pQxANcQF+AmcwDf04rZHQvjzLi6ikEVx/d8+CuJ3+lUHIkg0QynblsQpwlSnAh33X4SNx99Eo+d5xet//sbbsIv3PXCfammUvpV0zbRsi102zbWes7EEc6qoE3cjEI4TNPATNNC3/H55rDEHt0ShS4aSJ6GQMxAYmXJhCROyhMSJGrWEMQprjgRKbKakbXtu25ZwR8+Lp6jq1c0cryAOxoQRo3noWE34DETthHI+VbjgA/ArRhHboahApM0gmAcROY4FewPIF5/o8rrH4kBuK0FRXHaQs/hf1M9d2Y1FCdac5u2yTfR4pxxYRU6AK5dmQeeDq16L7lmHn/yj1+3v0oTgQZaZ+w1JGqOI1ejxtvN6P6xrRSUg4CVt1fHo8iBUHHyhnxN0ixikBvoMAzA3fcOyZ/6qZ/CT/3UT6X+7j//5/8c+fkXfuEX8Au/8At78Kz2HtlWvTDeNg+2cqF23RHo1NUdbKh7XCkoNj2gnOLUY21pqRgYHSywLXR0rHpellUvfY6ToZ70bg+wFoqf4zgYZ8bVVQ5SY/7p7z8cURZPaPTq7cQUJ1IYJpE4AcC5jfB8PNJt7dvGgJSleUE05wRxOixDcKXiFAsLmGna6Dt+acXJZkScsjdPpDixqlY9taItiNMM+IDwxPdE2oei69933XIEvydS9Zjbz1RyI3/eCxUno2ijjnDYr40Rdx+MiZ7jS4JYljhJxcU4rIpTwVZOUdxKE6cUxSkYbmLocnVfJU4UupE3PJr6m0j1p+KwB6u4IKN8jgAPF5sI0gQoilPBAFxp1atHcaLhtqaRJCWqAj30/PKhKNKmqZxvzVm+Brl9rjppEiepOB0C4nTwX8EhgZNp1RMLSQFxaijWEF9peB63N2QsDNYjPy4wfcWph468wPXBF6JWjuLUTFGcHNWql1EFshstOVRP+nl3E6dfC8yfQjxSO4QBzF/Dj5sigbtuP4mbjoRWpR9+1XX47PvelEuagoDJDTApTXMT2ONE2Bq62ByExGRjUN+E+bIg4kSzrubE+3dYrHpScWpF192uHJJc7nVaRJxyghCYUJyCslad1AG4YkC4McKMnbKmEHGyo5u5W491MTPLN0PM0VOcRl6gbw0DESfaHI//HR44PuYgFDSyjOlCEL3GoepxYoWDYyXMilZFxhTVIexxcnub8pCIzVXDGrYj5vlI4iT2OB6s4kKW8jkCwEZ/ggo4ZRWnGlRYIOzDbDcsGCwAzn4GeOQPgbOfQdtMHlcKtObECxXSrqff5zS16k1RO8Iep2pWPcsy4TILDcOH54YXKeoNKUrqyuoNKYIfMDx4dg2Xtoc4NscfR1aAYla9OR2r3ojCIdoIhFWvJ4lTthefTkZHVZz8QKbqZfmOmw0LPbSxiF5Y0d1NmBZw1/uBP3h3yi/F+3bXr/Pj/AoL3SEHYwzPrYcbvflOo7Di2Hd9acWmizVd7LcnkDg9txbdyO7n5oCUpTlJOPk6tHUVKE5AWB3XhVScmtmbJ0ako3KPk2rVC9e1pUbKdzlDcTIMA99x4wngScAMHB5GUxDc43gBmtAr5AH8Wkb9qbUoTkM3tOo1S/gnAfl8rcPU4+SHg2OLe5wqWvXcPsDE31AUJ7e/AYC3vbRsE5647pJVL0+p3aHeqJji5MIuLmRZZLnkx23096+olADZYosUJyqq1HBOAKFV7+32l4AP/Gykh9qcP4Xvb/ww/sz9zoilTxtpVj2A2/U2nuWKk+5DHaJwiClxmhCQVS/xpdK06gG8YtOAD085IcftDclDYcR5THGaL6k4WQERJ74JaeYRJ6taql7TNhXitAeKE8Cjxt/5IeCPfyLqc54/xUmTEkU+RRTrfTdCdnQunHQxNo2wB2QSU/UIz61Hv+cbg/0jKVQBnlOsesAhUpycZI8TEFo6SylOSsqZnUucqDm8hnAIuwMGAwYYlhsp3xO5mUsWjl55yzXAk3TcoNBy43j6KW5AXHEa/zvsO31YYjxHaaueGcZY+8HhKEj5vvLdNAu2cqQ4GR68Mq+fbHqGxb9DQnHy+1xxmm1G4/rDVL3icAhSdanHqYziRN/DraEHP2CTYdeja3khcaIep/qI09vMB/Gvgw8A8VFEW+fxm9ZvwPXfi4Hz3eUfPI84AaWI02FSnA7+KzgkyFScyKpXtDACMqrTd6ObSeoNWZqJXuzGSaPRijiP9Th1tcIh+Oagh7YUXHpMECcvWxFKS9VzIuEQ6YtZyzbRF4+/J4oT4czdwKlw0DH+1m8A731kSpoK8OxalFSsa6gxtMnvtsKL/KSm6gGQihrtBTb3UXHaUt47ILTsTWpvWFn049VvgUqKk2JHazSzwxOY7HEo+bmmESfThG9zUrRgpxGn7L6L17zgGvnfOzvFwx8d35c9TlpWPcvEiInj6rAliU0cgxF9D3SgbLgPjZCvklHNVD1uVSzxN0ZKf5NhRHqcgGTBYUZHcYqtKfBVq17B+WZFrXoAsLWPhaUIpC12b+PIB0MH9zQ+lPFbXmi4p/F7GI4qqHNEnOIKr5qspwkiTo1pj9MUdSFM1YvZJeQcp+K5Ga7BFyI/penwrttP4pfe/iLl5+OFvSFZ0I04D/prkd/N6ShOSjgEVQa3iTjlzFqSqXoxq14YR55OnLjiJDY5e6U4EYaKIrd4unjG1RQJ4qRDKsIKZ7g5DlP1Jm9eFhGnm4/yi9X+9jiRVS/e4zQhm5UxUavipJCDPMVJruVlyYSbYtUD4AnitGinfE9y7EPXLM1gKAIiHv5W8Sy/kZKqp9vj5JLiVEN13RTrc9BUopF1EbHqHQ7mFKjEqVSPUwXFiRQHQZyYIE7JgoNOjxMF9VCPk7DqseJUPSjpiIT1SbHraStO9caRt89/EaeMtcyuaRPAKWMVjee+UP7BCxUn/R4ncgMlxIEDiIP/Cg4Jxk3VAwBfXKQ8N/2EVDeZnYZdWd7WjTi/eJFHao+avH+qG+goTvxE7aENX7AwIk62huJU1qrXsk30mFjo9lJxAgCVWA7Wso+bQuLbgjidWuCfpw6poAs1kSVATdWbPALwbWHVe8k1POFxf3ucDrdVj3qculmKU5n5J8pGNk9xkj0OZe1raYoTAM/i69eClUac8mfL+OK+f3O2mDipqXo6hbyWbdUaDmG6/NoQlO1vAsaL455UqO+pZo9T6VQ9NYociMSRA8n4+/C8KY4jT6bq2cVKthVaDgn7aWUGeCH580+t4vwVfg0PrKJwCLE21KQ4GTsXtI5jmsdFoAaDqJiprjhNU/WmqA11WvUCN30hUSsza73qFzLd6HKvtwoA2Jm5DgDQZdv5d2BMKk47rCPTj7YDvtDYfjFxis9xahVY9ZqWhT6Ft++l4sRYlCz1p8RJB8+uClJxLb+Q61j1EhVOqKl6k6s4vVgQp/206mUrToeDOIVznKLrq848mgSEquIwC61G9nptCNJhBlXnOEVJkGMKq56VourIKnj6Zs4Uj/X1Z4rnxkV7nIqvR82awyEaHqUKVidOhymOnBSnAEaxW0Gm0ZUcgKtGkQNyA03q32wr3ao3dINMgpZwAFTocVKtevu5Pt7/6Hm87v2fwo/89hfwjec4ifi1T5zlrQpZoB7HmuLIt2y9+ZvbmsdFUGeP0yEKhzj4r+CQIDOOvIRVzzf4ouJlnJDqJnOcNBrd6PKusOZtz1zLfy5SnLyhTPDhPU4MQcCwFfC/Z+VMuG+mWfW8kla9vYgjJzi9aMVwqjhpgax633HtIgB+0WQF08sTnnpM9hwnCoe4/RTfpGyPvIiSupdIznFqiNsnT6mrApmqF98AtqooTvx8dtDI3xyIirNRRnEK/NB2FyMOjlCN5swUcpITDgEAzQ5Xry6ubeDydj65GZVWnEw4rB7FyfECdEQ4kNGeLzg6Bcoco72MI/c9D1/73Efx13/2W/ja5z4K36txvRG9QYGhkfFV9fXLOT7iPW8TceIb6njBQbW8ZtlcE4Us8Tp0BuCqr4OwX1bmeJ837TUu9o2wzzsNNceRPzf/MjzPllNbJwAgAPA8W8Hziy8v/+CSOGX1OF2dceQH/xUcEkjFqRFXnIg4aaTqGXzRYhnVPZUs6VTqs0AR5zmTiHByQSTVAdgWitNsUKA4KcSFiJMbBNgRceSWllUvXD4cXwmHyCNO+2HVixOlqeKkhZA4cTXG8QO5+c2CnOGk9jhNKHHaHLiSrJw5FW4Q96sBOk46SXHaOiSK006B4lQqdVGQAxd2rh3FrKI4qUWjmFVvZPCNWNdII075QzktoTh1jBEeeCp/ExS16ukPwAUwNnHqOx5mwTeoZhXipPTG7JXi9NDHfxdXfu0FePEn/z6+86//N7z4k38fV37tBXjo479by+MzUpx0iFNVxS1DcbKFbTJecGjZpgy1yepzSlj1SilOoeWSijn7YWVO6/Mmd8tA9A3e+5HH0lW3muPI+y5wr0vjTeK7MgMGgHvdf4BKS3bmHCehOPX1idNoGg4xRd2QPU7xL5Wc41S8OAbCTx5kpDWtR4hT9QsZRZwDaacpxz3vOANDpOptdbjiNFNEnEQVy7NmwGDCZwyOF8hUPdPNVoTSFKeR64c9ThlJNxRHzu+8h4pTnChNFadCOF6A85t8I3jb8Tn5mRd53LdTFKdJTdWjHq4j3Sbm2o1wc7BPxCk+AHdS37eqoKp40nJUQXEiqx7s3KqqIYaVlyJOVNQxzMRaNjI4KepWUJyIUHXg4HPfLCBOfhBapDRT9ZyawiH6jo+uIdIm2yWjyIEIcdqLHqeHPv67eOkDP4OjbDVy+1G2ipc+8DP1kCexN/BLKE6le7wyFCeyTXZillTDMORMtKxzpxfvOVXmOGn3OMHDjWIQ+n4Qp7Q+7zb48xiiKfu8Hzybcl2vOY585AX4eHAHfu+6XwPmY2Ff86fw2yfvxceDO6oNwB3FwkEIajiEZtiIO7XqTVE3MhWnElY9T1j10lL1AGC9Fy4w28Px7D8UcX58IXoRj0ScizlOm20ee9tkTlgBTYPYHPgNviD6ASdO1INk5ihCVMWIxpH7iuKUYVWxTPSFVY9NkOLkBwxfPLuGL18x8MWza4enoXkMPL8xQMCAdsPE0bkWFkW8fpHttJfS40QX7YE7Wc3i1N90zZJISpvh5/1+DXrcig/AJaveBIZqVAH1uCUUp1b5HiemKE4Jy7UC0ybiVOI9VIffxhLl+kJxmqmgONHtbYzwuW+u5tpeHS8Im/I15ji1GmZt4RB9x8McDb8tO8MJiFi8dvt89z0Ppz5/L4BwpACBfj75+XvHtu2xoIziFBKOOhSnRjCEDS9RcACAmVa+WptM1RNx5FqpeuHneIMgTpv7UFRK6/PugJ9/Q9bMPS6MI69pjpMgqN86+ibgp78c/sK0gX/6VTyx9EZ+3FgDcOPhEKJfivmJsTNZmIZDTFE7ZBx5/IJbwqpHC2iQ2eMUvX3cSs1dt5/Ex37m9fLntm2GEeeMyRNqq3USHhNftcFG9gMKqx4Rp4AxuD7DjiBORo4ilJaqF3gjmDQwMW8ArlC0gmGBIlYnchQnajh91+/8NT70pIV3/c5f43Xv/1R+w+lVALLpXb88A8MwFOKU/z2OD3EFogrDJNn1qL/p2iW+odV9jbuFeKre/CELh5CKU2IeTXE6WByewzdJI5bf42QJxckqpThRMEJyftFArI8zLGWTlhNHzm/nBL1rOji3McCz69mFLW7VI8WpuJDHFSf+/Q3c8TaJvVGoOKE52YrT41/8OI5jNUGa5FMxgBNYxeNf/Ph4f6iMVS9CHEsUTOOKk7KBnkM/UXAAwnMna6O+Ex+A6ytWvYJ1xRFb1obh4/QKPxf2I448rc+bepwo4j/ruDCOvL4BuADQblhREhN4gNtHp8nfs7yI+ExkzXGym0B7kf+3ZkCEM40jn6JuFMaR61j1qMcppemYMZbYfNVRxVarPUMvCImLsyMrSX1rHpsQF/zBevwhQojNAQ109Hyy6omLfk54A71vqlXPUNWtnAG4PdFDFexlOAS9D3On+L99/rPWYOGrFM8oxAkAFjukxugRJ1VxatmWrHyV6mPZZZDiRMRpobPfxCmeqkfhEF5hKMdBgFScWhmKU4nNhifIAVeccnqcyKrHyihOFAyRJE6kyM8ghfS4Yh3JWP+IUN2yxF//f/nitzNVbm7Vox4nzVQ9EQ7huymkrgT6jo/ZcRQnSmMzfHi7HLQyWD9X63GZoHAIjb1BNI69xN+IK06WDYjC5pwxSMw/A5QhuBnrKp1z3ZYoBtMcJ1joOfnhFX3PlK+D1sj9WBvT+rzJ3TJEU/Z533HjcvLONceRh8TJBPpRayj6qzIyflhJccrocQJKJ+tNwyGmqB2jzFQ9/RQjX1wc0hSnvuNLxn9sjp+44wREENZ6o9jP4m+TsmQ14RgtbDJxwc+TdUV1I1AUJ8f3peJEPVBpkANwlauCIRYmZpiZil3TMtFjZNXbhx6nlZv5v4M17cHCk2Qt20tQ/891RJyEGlNUcUxL1QPCzfEkKk7Xxa16+2BHYYzJ92Y+NsfJD1g168eEoVBxKvHdIMXJKQiHsBr8M7WrWPVSLMc7Yv1qpypOela95Rb/LH/ngWcyVe6RGkeuozjZquI0LnHyQsWpklUvPPeDsvOzSqKzdE2tx2VCfH9YmXCIsgNw44oTIEkUV5ySxIl6nLKKDmEhK644ifvlrCs7LqcqLTPA0j6ujWqfN4F6nEbCqnfPO86kz8qsOY6cCFGnYSVT7sYhTt4oVMWmxCmCg/8KDgmcGlL1SLJPU5yI0DRtE6cW+cWyDol7refGfibiJBSVzhJ8BmxCSL15Vj1SnBr8WN7jxLRS7+hk9AMmiQURJ9/qZE6aN00DI7NY0aodZM1buYX/6+zgS9+8oDVYOLXh9CoAzXA6HSNORR73tFQ9IOxz2jfiFPjA2c8Aj/wh/zfwE4rTolCcNvfBjtJ3fBBHp/dqpmlJC9JhsOtRA3tCcSrY/KXBc0hxasDMGS5uCduwhRLvn7TqJWcY7YhxDS2WpjgVhUPw25++kAyGiKvcI89Hk56zRo+TGg6R1Xeri57jj9fjZKrEaXe/ty989dtwESvIqm8FDLiAFbzw1W8b7w+RVU9HcbJCxc0vIzkNxQDc9kJ4myBR80Y/ouITOgWKExWy5qTixH/2xRzKPLvejljqW6Yfrv/71P9Jfd6zTQsmArQM/uTm5+fCPu80yHCIehQnSZyaVqri1BLEqXShS90PpRKncpHklHh8GFL1NM64KXYbnh/Ihs3xrHpEnJILCcnZSzMNLM/yisj6GENwCZmKEylL7UX4AQsVpzyrnjhRSXHyGYPjB2Hqne/wKo2drHaqVQzXD2CZFkyPX2hZRqIegQZI7mkcOSlOSzfwpCwWYGOteAgloD+A+LBB9jit8M9rSTM4IVNxau5jQtxj9wH3vw/Yel7exOZP4YWbP4LH8UpcuxQlh5GqauADzzwA7FwEuseB068tHoBZAUSMLNOQVUvDMNBt2dgaetgeejheIRl6UuD6gSxYJRSnggb3NJDiVJRyRsTJZhVS9VKsetsBPw9aQRpxylecAqsNEwjTRxUw8JTUez/yGN5y5kR0AK5GIc8wDPgmf27j9jgNHA9HarDqAdk9wHXBsm08f+c9OPrAz4CxaM2OyNT5O+/BCXvM7RcpTiWsegDgl1HcqihOreyNuqpUxxUnWA3AzS9kbZPiZASyqLRfiaMAJ08ff/QC7n/4W/K2P/u5t8Jq5wxppv3LmIEpBOpdajdSiFPvCjqNF/Djyqbq0WffmEm/vkjipKc4jQ5ROMSUOE0AVHtZQsYsYdULpFUvufCQurQ001QsTuMvOKsx8pWqOAUMG9Cw6omqKmuqipNCnOgYO+kbbljh1WnkBWg3LBi+sOpZBcTJ6gAMMNx9SNWbPcKbLAdrONHISRxUoDuA+DCBMSatetTjtKD5PU7rcQJC29me9zg9dh/wB+8G4qbMrfP4Dfy/MDDfi2uX7gKQ0uOUQrgwfwq46/3AmbtrfZrbSqKeoez+5toNQZwOdrKeqiYl5ziFihNjLPL6s+BTj5ORTyrsJrfqNEr1OBUTp6ZfXnE61wOuQ5gIFoeqcjtegAal6mkQJwAIjF0IhxgjVQ/YfaseALz8bT+KhwC84IFfkPOnAOCSsYLzd96Dl7/tR8f+G0ZQfgAugJCo6CDe4wRIEjWHQW44BPUyqVDDVmZjc5zoOeatx9sUkmv4aCuOgyBguSrvbmK174bpvQhno2Wi5jjySDjEdkqPkyC3pcMhsmY4EUpb9fjfn1r1pqgFI6USkGDjJax6svKUUskg4rQ409Cu1OtgbSf6GKvxHqfOIgKmqzhRj1NInFw/gA8LI0qqGaX3OanvGwVUWMKfy7L8/QKeCKMw9kNx6iwDM5wIvmTZ1xosnNpwesix0XexLS6oUo0pGQ6hpuoB4YV7ey+JU+Bz4pPSyWaI2+5t/h7aosAX6XEiwqWSJgDYOs9vf+y+Wp/q1jD9fZs7JMl61N/UsIzExZyq4V7AIoWtPBBx8guJE1n1Av590EGOVW/T50TMTiNOZAfKWAO3fP5cO0b+teDS9rB0qh6g9t2O3+MkCUgV4mSEn2+alX038PK3/SieXHit/PnLR96Bo7/yjVpIEwBFcdIgsRHFTfP1M5avOBn9hFILhOptPyWRktT9hmWE7hpRHDbMYuv0lsvXyKbhy/Wfsf1di1Z3RrK/yTMagFmwra45jpzmM6X3OF2RbgEKINOGjCKviThNU/WmqBMkYdqmATsxAJesejrEiaa0JxdG2lwuzzZDq14dxCn2GOspipMXMGxo9Thx4kKKUyAUJwAYGNTnlN6HZBhGYgiuSYpTgVXPtfhG3NxTxUm8PzPLnDwBsIbruOcdZ1LDIdTBwqkNp4ccZNM7Pt/ilTVw2ymgM8eJrCGxHqfWPihOzzyQJD4KKKoYzzwAIOxx2u4NMgmXvO3+X9TfiGtAKk6t6NozryTrHWRkzXCK39ZPqZynQRInM59UkOLED9Zcg3MUp01PhE34/eT9pFUvfQ2cmeGbonaG4kQ4q5AuVwAAkjNJREFUNteOpurpbNYBBOK9YO64c5x8zI2jOBmGDB9gusShBrQcpVDYnIM1rj1PASlOWlY9pfCqTRzdgew/Slec+oneQADo5PQHqjP1pIorCKBh8+eYS5xG/D42fDRtU5K0/YgkJ6z1HBlF7hgaBQXaj9QURx4JhyCrXvc4/7e/ytP2UEFxKiROZNVbTf99DNNwiClqRWYUOaBY9TTCIcTFLC8cYrFmqx497jUicGI1pccpCBi2dBQnadULe5yIVA41AhzIrkcnqC2Ik1GoOPG/ZwZObUk3hRgkFSf013DX7Sfx6hRFKTJY+CrEszGbHhBa9fI87kHAlLkh6crJnvY47ej1sdFxdK5e3/ubXMIFMGDrnCRcdUC+b5mK00G36qUn6gG8r4s2HLqznMiOFhQoTo2mQmJ0iRNZ7lKI07oviJOXRpzyrXqnT/BBlmk9TkBU5S7b4wQAjKrr/vhx5N1xepwQ9p7tdjiEihkvvN5ZA70mel2ExElHcbIQiPKbtlWR1CbDjCqdUnEalFeciDipxQrxfAzxXclbjzccXiSi7+F+po4C3EK+uuOEw2/RKrgHwjjywKul0DWQ4RBKHPkR3teE3qosNJYPh8iY4UQooTj5AZP9fYchHOLgv4JDABlF3khpwKtk1UtTnKjHKbTq1RMOwR/j1uNd8bOoosR7nJg4+XLjyKN2FLLqAcDQoACH7Ejy+BBcO9AjToGtbCr2QnXyvTCtSFGcMOB9BF8/zy9YdAH6idfdEA4WvkrxbCyKHFDDIbIvmmq0bWY4xF4qTlQJ1DyONgbtoeamS5eYaYAUpflDatXLmuFEKJusF3ikOBUQp4ayudIt1EirXpIArbv875mpxCk/HMIUj9eGk7AIx1VubtUr2eMkNsPjqjyD4RAzhri2VBmAi/w5h7uFOYU4NYd6lXldGLQ3MPSCYfLCo1JB/U2tuWjCRYsn7M2hL/tnVMxIJT953qTapsXrsITilFeo2Bjy3TclUoY9oPujOG2PPDh+EM5wYhqKk2pzrcGuR0pSy1YUp6O38X+VOPLyxCnFpqmiBHFS52tOFacpaoGMIk9VnPStenSMkTIfZF2m6jW159/oYFX0ON1ylIhTssfJZ0xzAG60wuErVr2RsNPlKU50Qo68AJ4foCl8x0XEyWy0MBKDGvckWU8lj+3FiOL0hW+tYmvo4Ui3hTe/6BgAfnG4Gu15KuLBEICSONd3Moex7ijJcO1Y1P++xJGffi0Pc8joZAsY0Guf4MchfI3POJqbRV1ipoH48Fv5J4g4TdD8qyrIU5yA8sl6zNOz6rWbVrje6Np1pFUvWv1ljGHN5X8vYTVmTCOOnK+NLz5q48RC1M4XV7lHEeKk1+PEyKo35gbRj0Qj5ySW5T0GEYy9Ik6BjwW2JX+ccXOufRVQSnGCkvaoq7jJjfNC5GZfEFfe45QsOuQpTr20oB7xfEyRNpe3Hm+Ir5HF+DG6Iyl2C7T/oSjyPtP4LNTWgRoiySNx5NTjdISI0xVJbkelU/U0wyGGG4UFoAhxmipOU9QBPatesY+ZFCeWSpxCq55OpV4X9Li3HIsTp7jiRMRpI/vBxInKWgpxEuqRTmS4OgTX8QMpnxvNfOLUskz0Kbmv7CynlFk8haBgiPYC/1w7S/znwRru/9oFAMBbX3wcR8Wg4nhy4dWIZ1ZTiJNoDvYCJufxxBFaQ6xEMhopUHtKnEyLJ+BlwADw9Kv+uYx/pYrqg8ELEXRP5TywAcxfIwlXHdjODIegHqeDbdWTM5xSNn9AecWJic1D0Ua2aVlyMOy4PU4jL0BP2IMMGtdAUDdlBQNwFxs+Pvu+N+Gfv51vuObbNj7zC2+MqNw8VU+8Fzp9NQitesaY/RxsyItqvtkMrU4lEVCP0x4Rp+HWFVhGWNDp+rtDnHT2BkAFxU3OcIoqDo7Nr8/z6MvigoqOJE5pilNKv6nYr9jU45SjZK8N+PtpxohTHXuZKiCHzVKDv65e0IBXFCZj2WFYSQ2R5DIcwlasekeFVa9fg1Uvizi1F0O1Mx6DHn8oP/zbagLyQcWUOE0AqBKQKmFKq15xhS+8SOWFQ4RznDYGbmalXgdD15eLY2jVy5jjJMMhinucTFHRClhou3NIccoIhwAUq57H57OQfG4WKE5N2wwjz8soTo/dB3zgduB3vx/4ox/j/37g9uJ0M7W/CZCKE+uv4RNf41aru158Ake6/HO6slNPE+lBRlqPU6dpyWJDlu00tIYkN7P7Eg4B8Njwd34oWnkUcGBj7obvlD83LBPdlo0AJnrXvj7jAcWF6K5fr3WeUzZxOhxWvb6sfmcoTgWDPOMgqx4rWKubtglXDPvUt+qlE6e+42OgjmtQVSdXSdmzs4iTOJ/cPizTwA+96jrYBsPW0MMza1Hr38gPYJdUnAxBIpv9i/qFpTSITZzXqKY2ASFxCIK9+d5uXjnH/x7j5+ci2wSCklX/HBhlUvUQKk7axCnDqjW0+HdwzhikqgdUcEgrZu3IwJlkj5PV4N+pvPNtfSSIU0BWvfqKwFVwRShOp8VbNEQzEZiVipoiyT1RJAaAmWAHYOI9px6n4SY6pgjYqhwO0YUfMHz+qVX86cPn8PmnVuEHjKcHas5yUoMhdEY7TDqmxGkCIHuc7JQLOC1yGoujkWPVSwuH8AMmI4ergJSQhmXI3pONgctPKkVxCpiiOA03si8epPaI4XFeEA6odKVVL6fHSVWcvEAm3ZgFcxVatokeI+KkqTiNEw0to8iXIv/urF/ClZ0R5ts2XnPTCo4Igru6c3UrTo4X4Pwm3wSqxAkotmr0cjbHMo58PwjAmbuBYy/m/33nT2PznX+MLwa3oWV4uObBX40cutBp4HbjW5j9xh/zG9pR6wzmT3EiVvscp3TSedgUp3jaIoFu11WcoKs42aZUnHzdjVNGHPnA9eHChsPE99tRyA4RJ7ORrUpQUUkc27JN3CAKzA+eXYs+BS9As0yP02P34Se2fhMA0O09o19YSoEpbNz+GMSJiIOxR8RpZ/U8AOA5cMu1jQCjnfr6nAxWTv0Lylr10mY4Aeib/Fq+YA5SN8GkQvVTCFB4zinrsfg87AZZ9bLPt7UB3w8YzAcYk8mq+5WqR9fmIy3Ri82aetfrmiLJh4oFru1u8P9oznHLtlC1Oj5XDgeuX65QLvZa39gAXvf+T+FHfvsL+Ke//zB+5Le/gNe9/1O4/9Hz2n1OziEafgtMidNEIN+qR4qTTuQoDZRLLlgbygDclm3Jauo4ARF03yXF/seY+FsDIfN3uOK0RT1OLMgOeBBVVUNIw0EQkkrX1lecHC/gQ3ApKUpDcZJWPR3ilDOLRysamhQn6m0SytNwi/uT3/yi42jaJo4Iq97lq1xxen5jgIAB7YYp7YuEItspbf7jwRBA2Kujm5pWO+hi8+K/g6fnXol/7v4jeLBgPfFR4OsfkxbQN9sP4/9s/CbMwAVe+P3A//Yt4KU/wu/7gruA9z5SO2kCQmIUf+/mD5nilGXVk4qT7veD5sZZ+Vaylm3CFT1O7kizxyFDcaIq8sBIUcxlMERO4UgqTqE6dfMcX8OSxMnXT9UThaVusBW9veLMMdMVNu5xFCeysu9RHPlgg9uuNxpH5RzDrSt5yZjlUFZxkuEQKYXVVGQoTgNDKE5ICSNBeD6lW/XSepyEVU8Sp/Tn53gBNtXtiu/ue4+TtOo1BXFCM3Td5KGmSPKhYr9rjpR9hWnJguwMESqE+yktiH3ahx9ax/nN6Dp1YXOI93z4K7jCRJUlPj8qBtcX87cOQTAEMCVOE4EwVa8eq54ZWxgdL5CVHqrQyGS9MSo1pDgtzzbRsEzZj7G2PQBGRJz4HKcRmnBNsVik9TkxJk9UQ1j1fBam6lFkeG44hBWm6qlJN2mWqMj9bBM7rIRVr2AWT2E0tDr8FpAEyhpyle5tt58AAKk4XalLcarSjzUBUG168Qonfeeyvsc9GamdbdXb0zhyAmPAzgXxRI7hufUBvsGuw5/N/B1+2x+8S1pA7925FzeYlzBqLgI/8H/yAsm1r+LHGWat9jwVh92qt1MQDiEtR7pWTipy2cVWPUf023iOruKUHkdOG6cBUubcyWCInMJRTHECgJsX+Cbni99ajVSotec4KYWlpB5RbeaYRRbEilHkgKK46BKHMeFuXQIADJvL2DC4Sry9dqG2x6eABEO7xyk7dTcVGYrTDjjZ7mYQJ50BuHMpPU4NadVL/15sDlw5i4vuFw5B3x/Fia7NCw3+uoZo6lnr7XoUJyqctBsmTCrIkn1uhv+rzhIbluhzor7CbZZcP2hV+MoV8XlMFacp9hrU47RbVj1aVEwjHF5ZR1MlVVtWRC/Oitjob64r1Yf2AgIR4O80xEUvrc/JHXA1CoDZTqbqSeKkoTiNYj1OhYqTVVJxKjmLJ4EMxWmO7aDTMPGGW7n8TT1OGwO3uOG0CFX7sSYAaf1NhMWCWU7hDKfkuRWGQ+wDgRxuhI3Bs8fw3Dp/jZsLIg2JRZ8TY0DT2eCEFwDmOLnGdn0bsTi2ReV3Pp6q1yoeVHkQ0C+IIw9T9TS/H1Q9LhqAaxpwxQbQVfuQ8kDrUiPZ4wQAw1zFKWf9o94nfySJzA1dBts08PzmEM+th8/PcX00KRwir5A3bmEpBQ2PbNzViRMr2+MzJvxtvpl0WkewbfPqf3+9vvNVpurpRsPLcSVlU/WixGlbEKcORqkkTMaRFwzAlRCP0RSDobPWlY2+Aw/KOu67WrP8dhNUPJ63BXHStuoJVXpcq15k+K3Yd82sRP61BqsykKFMQMTOFt+n7SB9/WAAnnPEelREnEQ4xFRxmqI2jPy8OHL9OU6GRcQpuvCsKYl6poi1poCIsRSnHVKcWpHH3NkQJ1FzDrAaECotRrbozUib5aQQFrMVbg4oMcanDUNOj5NM1RPEqWPoW/VKhUOUnMWTQIbi1DB83HXLjEwlWpxpwgADY9CT/7MwTj/WBODbKTOcCNKqVxAOkWrVk8RpHy66O7wajfYi0Gjj2+t9mAjwg6u/nXq4FNqoUt8VxKnGuU1xFCtOB73HSU9xSqucp8EQRJgVpL4ZhgFXDMn1RmXjyGNWPbERGtGA8AhxKogiB6JrI/U5WcDt1/DNsmrX81WLW57KMW5hKQbGGJoef11mTP0og1Bx2hvCb/b5dTCYOYJ+gxMnd7M+4kTJckZJq5624pahOEUUiJTrMZ1PjhgLErlvGnESn0ejmR9HvjFww1AVcb9F4TjY3KdwiFWhLs1b/DkP0MRqT0dxonCI8eLIBxHiJPrnhNKEWUGg1GS9EgERTBDnLOIEAFeY+G70r2QeA4SuqilxmqI2jNwcNl5iAC7Jv3Gr3nqP/0zVef7fRJyqLzhEupbJ/ieI02BLnMCdRQCQipPbECdZmuKkTKm2FOsRLQzS255DbMIBuKy0Va/PxGZHJ468YBZPYTR0XHFqdDAEf+/efku46bJMA13xkVXucxq3H2sCkKc4FVUcUz31AkSchm7yAr/roE2jINfPrQ9wh/k45pxLmXcxgLBSP3c8fJwak7pUZIdD8PdtnGCZSUCh4pSTDpYGSjM1NNZqIk5a4RCeE14HMnqcwnENyvpFm7JcxUlN5AvVpVed5ht9lTgFqrqQpziNW1iKwfEDzDC+BlhjKE6lFZcx0RADb43uUbgtvoklFaoOEHHSHUbMxHdOmzhlKE47nhFeLymyXIE6FLcfUzh6aQNwxfeqJRSnLGvsRt8Fgwmftq2+K/cx+6U4UUFz1uJ/X7/HSZw/Y8aRU2G53VBmONG+YiYkTjQEd1hillPL5+fcTopVj7AKUQwv6HEi51BjatWboi6EqXo5ipNGVckUVUC5oAqowRAEmUYzhpKx1osqTmTVc7ajxMkTGzunKU6ytB4nJTXKVN4GIpVScdIKh/AxclWrXn6qXtM2w6qKjlUvMosnTp40oqH7YeIgAHzz0g7WGCeGd56KPt48EaftisRpF2wze4084lQUDpHqqRdQyZS2HasubBNx4olbz60PcAwbevfduQjM8vsh8PIj/scAvXfdjDlOPIRlcgl3EQoVp5x0sDSQ4mRozBnyiTg5GhVndU3K6HFyrTzFKYc4mWZo1/NC4nTHjXxt+uLZMAWOqdHpedejcQtLMQwcH12DPze7U11xYjRzZo96nNoOJ52N+WPwhQpAKlQdCHucdtmqF0vx7I88bNP1ko5R0LRM2MLZ0h+lE6fI4FzxeTRbxVY9APARfo7qEHQq0O4lqMdpRgzAHaGp15NcUxw5FZbbDSt0ssR6nKrOcmr6fC3pZShOBoCgI8hZgVVvGg4xRe3IjCMPgrDXQcuql6E40QynjinDAW53H4GJoB6rnujFIaue26MBr4sAACrm5ytONKW6C1thTjKZR1r1isMh+ABcX8aRo5GvOLUsE/0y4RBAOIuHek0IOtHQMcXp41+7gA2RTtP1otaHuQZfcCoHRNRsm9lrMMbwbMrwWwJZNbKag1M99QJN25QL+c5eJ+spihNjDM+t93EJi3r37R7nFUuqKO7U3+c0dH05HyRu1VNtjwc5IKJfMAC3tOIUEHEqDvLxiDi5Guc1rUlWK3EdoNcgiRORJUCvx0n9vaI4vfL6RRgG8PRqHxe3hggCFrWA512PlMJScitbfuZYz/ExC/7czHgUfwnQgPi9iiOf9fh1rrV4AkaX963aw/riyM0SewNAff0lrXoxxann+NhmM9FjFBiGkZlIuT1KKcYIItduhYpTWmw2JeeFBNCV4UABCx97rxAETO6fqC2A9zhpkKGa4shJce40s3uc0LuiKE6axIkxGKPscAgqifzg618m/oZeOERrqjhNURcy48jVBU6HOJFVL9ZYvt538DbzQfzr58Kkrnc++pP4bOtncPrSX1R+3qQ4kdJExCmIKSqBWATd5iK/Pa/HKaY4Sateqxs9LgVhqh6LhkNkDX+k+9kmehBV4jIDcM/cDfzon0Vv+18/WhwNLSpDfnsJn39qFb//pWexzmhAcDQCeE587JWH4NZsm9lrbPRdeUG8dql8OETqhVrBviXrKcTpyo6DoRvgS+yFYHPZlfoAiFbqu7sXEEGEyDCAboxYWKYhVZqDTJzyZnypt+v2OFlivTYaxYpTIImTjuKU3t8EhOujnzauoTRxCknXXLuBMyfDPic1UY+ZttJ0lwFRWNppHoveXmHmWH/kYU4oTuOk6lFsN9sj4rQQbAAAussnYQtrbWu0lnOPcjBLpuoRcSpt1Yv1OA0cXwZEpClOgBJJnqE4dVNS9VqCOAUsXRkhVwFTetXaDUuSgr3uc9qkmZUAmoxfn4do7EsceXqPk6I4NUv2ODk9UNnjX/7wa9CO7U1PLLTxwXe9Ane+5IX8hiKr3jQcYoq6IVP14nHkqqdcx6pn82PiVr1jz30CH2x8AAtetCpwAmv4ifP3VA4HWItZAIk4GUSMhFWPFhe3maM40QW/NQdLuSjTwsBERHnuAFwlVa/sHKdeGaueil6sJ2XnUvpxBMYkOfp7v/s4fuS3v4Bvrw2wDk6cvv7U2cjhkjhVterVbJvZa5BN79hcK+KdJywWxOqnXqgVhAERe02cxPdk7rhM1Ds2PwPj+9ItoAETt6iVerXPqWbIGU5NWwbKqCC73r5EudeEIsUpjCPX22yQ0m/qWPXEeh7oKE4UxR0bfguE62NInEqGQwCpihMA3HEjV8QfPLuGkRegoZOop+LM3fgvr/0o/sq/nf/8ih+tNHOs7/joogbiJKx6e6E4BaMeZsFJ8cKRU2gt8nO169Vnqy1t1TPSw6Mykak4eaEKkaI4AcoQ3FjRgc6ltHCIVrMl+Xjaerwx4OdKQHshP9q7Tb/fK1AIxEKnAUsQoAFaeql6NcWRD6VVz1R6nEhxEr1O/VV0xN5yqGutpn2QYeItL70Jt50Iz7sfvfM0Pvu+N+Gu20+GA3Ddfm7R2ZmGQ0xRNzKtemrjoMbiaIoLmsUUwhX4eMszvwEguXU2DVFTqBgOIBWnmFXPGm3wA4TiRMTJa+X0OJEFrzkLy0wSJ0NVnDKmX8dT9XSJU8u2FKteSeIU7x/aLhhw6PTk5/rEVrgB2RCK0ye+/DifyC0w1ySrXsUFNtKPFUd528xeI6+/CQgvmlnVxrxUPSC8gO89caIZTsdl5PO1S53QAjp/MnL4Bazg542fj246SSXcRcUpbtMjHIZkPdrUZSlOWZu/LFiMn9eWjuJExEknVUsqTslzgCrIgewBVYmTRjiE+nvV5gfg1TfyDdiDZ9fgeOoMJz2FAwAadgOPspv4D3ar0jrTczzZ44RWkjzqQg6K3YMep61VvoaPWANLS8uYXeLnM6lQdaAscUJNilN/5GOrQHGaTRmCGwQsfT32w9dB6nZaQUb2scZex4K0a+/tWkT2+ZXZpiw6DFkT2yOv2BK3Xz1OuooTFahbc4Bh4OJW+DzbTSvcozVnQ0dPjl1vOsdpitrhZIVDqJUhjYuVIRQnS1WcnnkAi95lpBSN+cMClcIBPD+QCxURphUREtF0acFdBBASJ5+senmKU7MLwzDk86WFwaQ0pcDLXGzCVD0+AFfGkWuk6lWy6gEpEd/5xMnvcTl9xGz0EW6w1sFf3xK2ce9HHpPvGSlOlVP1gHAzHu8PqGCb2WtI4rSSTpyWlFSlNF98XqoeEIZGaA85rQukOInhtwBwHVkRz9wNvPdRbgP9u/8J6//LH+N1o3+H/z58RbQBurt7itOOTL9K35QdhmQ9Wf2uSXGyyihOBv/eMp2NU45Vr59LnHQVJ/H7mOL0qht44euJi9u4uDWEDVHE0lWcwNfWC0xUvgvWxiz0Rz66Qr0Zz6pHPT67H2iydYW/1jVjHg3bwsJRTpy66CNwNGd3FaAscaJ5T6aO4uQOw8JtTHHqu/k9TgBSe5zUhL00qx6shlyn0845SYzo9QrCVWTX3i2QsrTSbcoES0/McCu068kep3riyLuWDziC7MRT9XpX0BF7I+0eJyVR0fMDXNoOn+eFTeU5G0ZI1HLseo4Ih2hMFacp6gL1OCVkTDVRr8hTDsCySXFSFsZdCgdQFylq0F+a5f+2PXHSkeLEYopTWo+TEg4BQFY0BnHFCcgkN2Gq3hgDcHXiyFVsn4/+XLA5+No3nwYAbKALVQMkxWnR2MH5zaGMAQ6temPaEM7cDXznj4U/t5cq2Wb2Gt8uUJyo2ugHLLU5WCbDZSpOVuS4PYPS4/RtYdW7dkn5npoWcOPrgZf8PXRe8D0IYCYboHdxCK606mUqTo3IcQcNfsDk2jJTlKqnrTjx90JLcRIbp8DTOK81epwM+l1aj1NB4ShUnKKbuJVuC7ce4+vSZ795BU1SnHQVDtREnFzVqjdGqp5JVr3d/872xKDbLXMRALC0fBQuE32Ba/WcryaIOOkR2VLhGFJJMhIWUZ6qR4pTMo4cCM8pVXGi4pRpCGsZQdnn0HqTZ9WTRFF8josd/vo3xwi6qoI1YdVbmW3Jc63RnhW/K3guVFwZN45cvL8rJlnrLFmwlsQpcLFoCSuhNnEKx8Nc3hlBrded34yRPUmcporTFHuIQque5oXKTCNOuxQOQAvD4kwDtjgZSHGag7jQx+Y4BXlWPSc8UQHAFERx4JA3thFWRunYGJpiOjYRp1aJHic5q6Cq4rR4ffTnDOxscKVhnUUrpxQOsQi+AFKFJ0zVG0/SBxAlecONiZ7dRCiy6rUblrwIp9n1CnucqFdnLxUn3w0bebsnFKte9mtMbYDeRcVpS9uqdzAVJ3UDkaVGlk3Vs4k4NQuICpSgAi3FKVTj45AV5Gae4lRk1SPFqZ/4FfU5ffbJK7ArEKeWbeL82IqTatWrrjhRn7DBdp84jTb4Odlv8NfeathYMzjp27pyPvN+ZWCJECizpFVPizjJ/qY5RNKawFWkncIeJwqHCP/WtlLEMtRCcIrilEqc+rE5afEep/2y6nVDq15TEKfC63VNA3CHYu+4BPE5zKyERfbmjDy3V0y+Z9Ke4yQL2XNRhQnAxa04cRJ9TjrEaao4TVEXMuc4BeUuVGZDECcoi87p1+ICVpA14iBggNc9VTocQEaRz4bVrk6Tb/Bo80+Kkyd7nBb57Xk9TuLCSIrTUB0OTJuDDFVIteq5rouWId4HjVQ9aZur2uN0zXfyf+MKVAxHTL6x2UB0EyStegZf4I7N8YWVFKe1vjP+kNbN55QfWHE/1gSgiDgBoV0vHhARBExuerNT9YTitJfEiS4wpg10lmQ4RERxiiG1AXpXFSc9q95BJU59pfqdOj8PoVXP8QK4GuceKU62huLELLLqjak4OaTIE3FKiyMvsOrRJs5NWshefZPoc3p6Telx0idODdPABcYfg+1c1Itfj6E38kLFKYU86mIvrXreNi+QDZsr8rYtk18Pe+v1ECebrHq2bhx5CeJISlKKwtd3/Nw5TkA4G62Xojglilg0V8q05XqcZp2mopEZU5xoCPr6HhOnVak4NeUMtM4MPw8LAyKkVW88xYnO/0UiTqT+EESf0xL4vqK04qQQp2NzfF07vzmM2uIlccqz6mUkRx9QHI5XccBBQ14zU/U0L1S2VJzCk8OHiX/h/gMAyZkatBV4/jX3lG7ajUeRE5Znm1gwxIVeSMYUR86ox8bZjiYGAomqatyq17DM8KKZQW5IBh75AQJ1E1Awx6lpm+iVneNEIKJ0zSv5vwVV1Vvm+Psm48cFyKq3ZOzg5EJbVnq7DRHiwcIUw8rYOhf9efNc+nETAtcP8PwG/xzziFNWc7Dqry9K1dvTHiciOrPHEMAIe5zKvkapOBUkOVZ5isKCl604kVJ3MK16tKGbbcaq3wrUFMe+hurUkIqTPnHS2jhpWPXMtHEN2nHkOYrTDXwdciqk6t3/6Hn88p88ilXMwWEWDDD83X/9x5HwGx04w174t8dSnPZwjpMojnidkDj1bE6chhv1KMQWyipOJXqcSElqZxGnoh4nCocI/1bmTD1FcaL1OG67dv1A3maJAjERrrDPdY9T9aTi1JI215lZ/v0kUpWJmuLI6fxfCBTFSYXod1oEJ8JVwiHImvey6xYB8LUgQlJ1epymitMUdaM2q16DH9dQFKetgYv7/TvwHve9ierRFeMI3uO+F88ef3Pp5xyPIicszzYTihMFHQRNJZxgGPNGZ/Q4yTkJthkmKmUoTg2lxynSgFugOLUsJY48cPWTboIgJE7XKopTRuofAJgiGGODxRWn0Kp3zzvOyNdvGqGqd7lqJDnAnxORugWyFU42cXp+Y4CA8SrV0bnszagaEKGCVCTbNLJVhYwL9a5CCYa4sjOC4wUwDT4bIwupDdCkOLm93Jj+KihM1WsdbMWJNnEzGYl6gBiQLIoxOn1ODZDipGPVo83feFY92ghZRCjUwo+nqThlxJED/Dt5WgSzyOuKxtyg+x89j/d8+CtY77tgMHFR2PWsbX57GfLkDZXv9hiKkyQObPe/sxYNI6VqPIBhi78H3tb4xIkxJq2TOgOX+ZOq0OOUpjiNvDAcInOOU7LHKXOmnlIgns0oZG0p6x71coc9TvnJqruFVTVVWFjuZme7kd9loqY4ciJOc4HYT8WJkyA1RKzKh0N0cUFY865fnsGRLqlOylpBf/Pcl4Gzn0ltASDi1LCKe/UPAqbEaQJQmKqnqThZVtKqR/alzzVeC+P2HwwPPnIb/snx38XHgzsyZ+DkYU319yo43mFoG2IBi81xsmwbkH1OsWS9uOIUqwK3bBOgWU6ZPU6hVY8Jy4pnNBMe7cT9bBNDKO/xN/9Cr/+nd5l/RoYJnHwpv813wv6VNIgZTq9+8S2R2HXqeeoaQ9z1wujid0QQpys68yGy0F8N/dRE8iLWvcmDatPLUgUA1eMefX/UCmfW/fdFcaKepLkT+LZQm04udGScfhpSG6Cbs+E5sV1vnxOFZcxlpREedKueojjlYUZahwrWg8CHJTR8W0NxCpvDNTZ7ZL9LIUBSke+Q4qT2OFUfgKuCVCdK1dt2Tbmmp8EPGO79yGMRh8N58Mc4YfD1T00OLUIw4Ju4kTVbuJbnogxxGBOtEb8GWHMhcfLalHKW3Quii4CFn4eladUrRRxzFKeeo8aRp1+LZ2WPk4ZVLwgJeVbKKRWM5tt2do/TnqfqcdKz3LHkeXez/y2YCIqtejXFkZNbqetv8BsSihP/mYiVNnGSczXnpeJ0YqGNk6K4J/ueHrsP+My/5f/97S8Av/v9wAduT8wGpVS9pjWZY0/KYkqcJgCUqpcgTn4oYeuAKp22YtUjUrQ024hulIcbWJrlF8z4hlMHlCizHLPqXdvmtweGJatVkjgZhiRTiT6nGHGKD91sWMWKk5qqx4R07lnFm5gj3/44/qr1s+ENv/8jqSd/AtQjNHuMbz6ouphn1xOzFm68/npQ8eX/8f1n8P/58TeBGeLzj5HKFVHlqTwEFwg/+9ljwPKN4nlOtuL0zGpxfxOQ3Ry8XZCop/5uT1P1IlHk/DVek9PfBISJlYkG6O4x8Zj19jltj8iql9XjxG/fOqCpemTjzFOcAHUeTcH3Q0nHajYLiAog13RDS3EqturZ7RTFqWw4REajOqkHpDg9fnmA173/U5mq0YNn1xLJW5Ssd8JYBQMiyaFFYGIT71rJ118KZNXbA8WpIwbdNufD0CU2w68P5iDb0qQLLwiUePhy4RBaxClPcdIZgJsSRy4LWfFiRYriFC/I0B5lcaapzHHixyyIolKVfcw4WO05eJv5IF71J98NiD3XXV//RXy29TO44dKf59+55jjyWV8oThk9Tl3x+2o9TrwAc2KhjePzfI95fnPI90d/8G5gGCuCb53ntyv7p6lVb4raMcr6UgXliJOVYtVb7/HHWJppAhvfDg/euYijHf53qzRVkhS9PBslJidafCEYWl2Z7kJx5JapEqfYyRaz6tkx4sTDIVKqquoxygBcqrb6ZoFt5rH7cPov3oMTiF3EU07+BLbExmH+VPTfPOIkFKdtcw6Oz2AawLtecxp33nIUBsWIDqLP5UiXFKcxiBORpIVrgPlr+H9PcI+THzB88Vu8amtbRm51ejEjHIJUglzilBN/u2tIGX57XUaiHkFuDuJV1V0KiNAfgHswFafMTVwMtAEs/H4oxMluFRdrDKE4aUVjy6JSdjhEY2YuPJaswqUVp6RV7/5Hz+N3P/8MP0xs1D1m48LmMNNyp858IZyXxGk997hUiGuD1xiXOJXo8RkT894GAGBmORxkbc7zIkdzqEcY8+AHTH4eZkmr3jg9TjwohSlx5DVY9VLnOMWJk6IuZShOm3uoOHl+gFcPP4cPNj4Auxc9B05gDf/48q/m7x1qiiOn87/jivMqo8dpVnwfB9qpeskep5OK4nRxowfc/z4kO+cR3nb/L0rnjuNPidMUNaOwx0nXqkfEyfDBAiJFolLTaQAbz0aOv87iJ1vhzIEU0OMuz0af2zGbX3x7ZtjES3HknDjxvqfELKe44mSkECfZAJ1h1VNS9eDzk923cohT4MuTPzkgOHnyJ0BkhAjTnPg3L61OKE6Xfb4JODHfDhcTGlzX3w3iJJ7T/DXAwrXR5z9huP/R83jd+z+Fj3yVX5A+/rWLuRXuLI87BRdkJeoByI2/3TUIq14wewxffoY+a1ZADrMUp92JJN8qSNXbF8JZI8hClBVFTphJsRylQgl5aGnEkdPsHUNn4yQVp5QeJ0odnaENLgsJ0JhWPbLcEUjhcGHJ7VKa5Y4SQVVQj9NJYy33uFQ4fHPuN8bobwKUOPJdTtULAiwwXuGfU4gTqU8zbj3EiXqcTE2rHn3nxlGcaKMue5ycndTrY144RHT4bQAwsZk3G7Ig03PSidNCpxHuhwQBVNfGtCHou4G1nQHuaXwIgDqNkcM0xO4hb+9QUxw5EaG2s8FvyOhx6gjiNCwZDhE0ujJ+/MRCR/bhds4/WBCExfj+4pkHAABO1qzSA4rD8SoOOLJT9crFkTeVC7bv8YWGFpzrWj3RLGwAyzcDAK7BJXFMeeIUxpFHq6tHbH7x3VbitklxMk0jHM6WqThF48gJDUsZxFdg1Rt5AQyxCfDzrHrPPABsPZ9Y+EJET/4EKBhiTlwc58W/W+kbfABSTXp+xDcr16o2tM5y5BgCNWSO1eNEVr2Fa0PFaQKJEzWVJ6w+ORXu7HCI4s3x3L4QJ37e/bNPXsanHuf9Dn/0lXN65DCeHLVrilN+qt78AR+AK616GcNvCbMplqNUCAI0YjaajWIffznFqTiOvDPTTR4vrXrVwiHilruGGO/ggn8nsix3d9y4jJML7ci6GipOazCASHJoEUyXv56gOVdwZD4MobhYu2zV629dgW2I+TrHQuI0s8TP1TnqRxkDnDhRj5Om4lTGqpehONF5MFRtkymqUzg8Wu1x8iO/AxCqTQBg2VIBTlj1BqQuNcNwktgAXC9ge7aOD775WZwy1lIKrhwmkL93qCmOnPaOTSdLceI/t8Xvh1454rSDDlyfwTB4HDkpTkHB2BUJUdALB+BOwyGmqAnZc5zKWvXCBdRzuTpB6Xc3WCKwYO4kcORWAMDxQAxjrWDVy4wjF3OK1lm4sPq+2uMkFCe1x4mxzDhyQsuyCuPIqbne8QMYopIT5ClOulX6rOOqWPX6fAF7dsifV2R2T4HiNFaqnlTHruF2PYAHRqTYc/YLaU3lhLwKdzjHI3oR2qHNfw5xyrKG7Cb6a/z78Y1edEObRw4Xs2aV7JLidNitetrhELJynr/h8By+3riwtWaVGDRzL6geR84Yk4pTu6kMCHeJOAnSUzGOPG6la0jFyc49zjIN3POOMwDCavyFmOKkJocWwXL5es/GSdQDQqvaLhOnzct8rd1gs5jthO99d5kTp8VgIzd5VQeeatXT3B9QL5Se4pQ+x4nOg0azHaomKX1OnUZyXQ17TpXnq4aj5KTqbcoUX0VxEoXlTtOS59xeDcEdrGkWHbPW5ZrjyBsjQZwyepyIWJWNI1/zeIHnaLeFhmVKxelbA81zUVyfXAqHmCpOU9QBxlhtVj1bqTy5YtAgqUnXQCT5LF7P/wdgxb0QOabMcw5DJ6LEaQH8or0WhJvCwh4npwe5NW6lEyedOHLVqmcKqx7LiyKnTWcRso4ra9XzPXlBOtvjC9K1S8WK00odVj3qZ1q4hqt+1C9QMHdqL5HWVK4iq8KdZdWTs3pyAgC6exyr7fsBzB6/mF7GQuR3ueQwqwF6lxSnMFUvPxyi7/jjD2beB+jEkQPhd6eIWLti/IEDW2tzYAol3NQiTulx5HTdAMTMKSJWTo9vzMdUnOJWOuqd9WDlHgcAd91+Eh981yvkRosUp+PGOj74f3sp7rr9ZOI+mU9PECcjJaigDIg47LZVb2eNFz42zcVImufiUX59aBg+htvj2fX8gME2KByiOB4egCzAailuUnGKrlFkvZtthuFPeYrTIHUAbpbipFj1YtZYqTh1lB4n5b573ed0BUt6B2btHWqMIzcQwKa+uQzFqTFak8drQRCnyw5/nqQ0nVzga8UnejeDzZ9C0qhIMHiR9vRrAaiK0zRVb4oaQEwcGN+q11BicD1BnCgc4jgTSV6L1wEL1wEA5h2+2SqrOG2PPPm844pTl4kTzlOIk7i+Z/Y4ybAHQ17k43HkEatewQBcxwtgeUScchSn068F5k+BaZ78CZS16ilk8cktfoG4TkdxmiWr3jiKk7DqzV/DQzuI7E1QJLlus3j8OCLvccUptcIZAxGnkRfw3rhdxpe/8Sza4M/zCltI/D6THGZtDHZhCK7rB+F8kALFCTiYfU71K0783HRhy3UoD6ZIQDV1rHpEgGKKk/qcOo0YcfJGkFQ8bw0EFOIUPa/iljvqqXGE4lRkubvr9pP47PvehB9+1XW4jEUEMGHDx103aG70BZoevz6Y7XF7nPbGqjcQA253rMXI7fPdrkyj27gynk3aU3qcdAur5RSn9B4nIjQzLTu08aUoTnTe9FTi5KSEQ/jKczHtzJ5T2eM001QUJ4U4ycLS3hCnJ9svwfNsOdUdAfC4eGf2ZPbeoaY48oHjYw79sBiQ0eNkO9uw4ZWY48T3cReH/POgAsgJkaq34zAMvvdfioPj+yfx812/DpicKI2m4RBT1ImR4jkd26pnWfAYfwxfXMhliINQl1TFaabPF+/1kuEQNMNppmmhHfPzz/ic1FzxO/K1BarilNbjpFZUBWFS48hNA7AtM5wanzE7Qo0jDxWnnE2DaQF3vV88x/gvkyd/AtKqd0303ywVh5Sk9gKe3eDvYVRxWooeJ0BWvbWeoz37JIIgSD5XsutNUJ+TbrN4/Liw/8eVQSSAUuHUCIdQj99NbK3y93ubdTBA9uuNk8PMBmhSnGqMI1ej2bPeu4Zloi0KPQfRrqerOFF1vKjHyRVWPQcNvlYVwCSrHivT4xRVjmQwhG3ytVUtLKm2u4pWvbjlrilT9Sy5VSqy3FmmgTe84Ch8WFgzxfpWcs1pBESc6lGcdtuq525y4tRvRjexhmFg3VwEAOysjne+BopVT3d/QK/fHqPHqa/2BmooTmo4BK0TkWIF7XFMGzAMeb4liFNEcYrGkQOhXXsj3gO6S7jS93Cv++7U31H57esv/WfZewdrfMUpCLhbacUQ+6HmXJjWR2gv8jmTAJawjWHJVL1zA/6+EmHqNC15LXruxJuBd34oLBgT5k/x28/cLW+axpFPUStUu0WiUlnSqgeENgrPI6ueqNSMxMZZIU6tHa42cAVJv9oeRpEnm1KbLreibbKu7IMiK4+Z1eMkoy/DiqL6VsiTTTOO3PUZLPIOF20aztwN450fwkXEqqYpJ38Ew60w3Y8WDlKeRpvpz1GQRdZZxjmKoV5OU5yiwRlLMw0YBid3VRIQ0bvEL1CGqahjIllvgiLJ05rKVWRVuOmiGbAw8hYIL77dnM1x0zbl92svlJMTJt9kXGKLucclyWHYAK1WcaXiNFgfu3pJoA1Op2HlDuUlJe8gEqfSilNBqp4rFSfdflT++VpFilMQZKbqyWAIKl6pihPZ7sxG8caaiksp/Y6q5Y4UDhc2Tiy08cF3vULLcnfDCn9e5wNx3pawBzPG0PY5obNnkgptGRh2CavaGAh2uC3ebSWVuG2LX/8GG+MRJ08Jh5BzjQpAr38cxYnOm5mmla84iR4n12dy05yaqqfMcOK/a8hj1QJROMepkaE4ZaSO7hLWeg4+HtyBj73o/5nYn61bR/Ee9714YumN2Q9QQ48T7R2XIPYhsyvJg0xTtgAsG9sYuH5x8qDviSAx4Ns9vracWAj3KSfUWU5n7gbe+yjwNqE+dU8A730ksW+SqXoaRaWDgMPxKg4w1BlORsyeVtaqB4SNu2TVo3AIUpc4cToNADB3LqBlRNP3dLCeQ5wMYcHbxKzc5JMIYGf2OCU9/JYyIV5u3lrd6PExqIqTHYiKfV6PE+HM3XgL+3/jXc4vhra9H/vzbNIEhDa91kK4YWnPh68hza4nLHhuaxGOH8AyDbkIAcjscbItU1oiKwVEEDnqngirdVJxmhyrnlrhjiOvwt2yLZmOpvYAhcQp//zZy2S9M3N8E3gF6ZvALHLYboQEL9Ln1FkKq5c1BURsFSTqEeZlQMTBS9bTTtXTVJwoHMIz9DaxFORjFylO3gDSchez6pHtJpc4FfU3qcfEFCcCWe5+6BVc3XzTi6/BZ9/3Ju0+pdMr/PG/7ZPipJnIBR70Mwv+WuyZMRUnmSq3uz1ORp8Tp4AGoisYNPh74GyMd676QVBacTLFOmFB4/UXKE6zTTtXceoo5xUR/J00B0AQ3ePQ+eYFLFJUTp3jtJ89TsJ1s3H6bSEJesuvAj/6Z/j12/4AHw/uwJVezrWalKExil2kOK8Y4v2P2/QI4vZlYxt+wCLtIalQxr08vcOvOdTjBIS2PRqMC9MCXvx3+H/3Lofx8grCcIhpqt4UNUBGkadJmCWtekB44fY9B4wxscliaPaIOJ3myoa4WN7W5gpRmYCItRziRIRoQ1Gc/KI5TrHhtwCgplbK94Y2BhnhEGqqniWsemhqECcAtm3js8F3wJ3nahzWv5V/BzkX6VT0dpmsl6LkCEI0sPim+eRCO2rryehxAtRI8goLrTr8Vj7PAlvhPoEq3HFyVFThTqs4kuUsLxyC/37vkvXMHu9FupyiOOWRQ8Mw0quqhhGqTtv1EKfUDU4KDnKynvYcJ03FyReFKs/QVJzE6IhC4qT2f8aKQLRxkptUSZx2ZMW4UHFXj8lJ2LRMA9fO8/fi5PK8diIewN/jo3MtmaxXxqrXH/noghO6Zmc84iSJwy4rTo0hT7A14glnAJw238QGY/YkegELCZB2j5MmcfRGoRKS0ePUiShOm4mHaNqmVBeo6EDrymyq4sRvUxVgtZBF+5OFTjNU2FTFiYagV3FkVMCquA6ftLc50TBM4NU/Cdz4eizPdcQxOc+lBqsenf9HLbEfmkl+3wDIPqdloUwVBkSQA8hq4dw2P/aEQpyIREWCnOZO8j0l84H1ZxIPOQ2HmKJWZCbqAZWser6w6vmug57jw/UZlrANk6qJFA4g7Hq3tjjRKRMQkWfVIwveJptNEKfEHCeSjFMVp/DCLOVdmuNRMAAXgOxxMnUqrsrfGC3cxG9Y/Wb+HSRxim3kyQqXNudAEKJNg7+O65Zizy1DcQJqIk7zCnEiEjVBVj3C977ouPxu/Iu7z+C//sRrCivc8sKpFADogl2knBQl6/kBw+efWsWfPnwOn39qtVqfGUGoQrffdmtiBkgROaR5VdkBEfX0OW0XDL8l0O+3R1PFyRfBCp6mVc8WFedi4kRr4yy33Sgg25TsM5VW5r7+8FsgVJz8UfbATiCxyS2DG1ZmcIGR4qRfrOk5HroGfy1WZ0yrHqXK6SguY6Dt8PW7MZ9MVAs6fBNr9K+M9Td8P5CzorR7nESSmwyVyIJqvaO+YgHadHPFSXweKYoTEBL6vsNtd+kDcKPFYdM0wtlp4ng/YHIg91JEcQpfh+wB3SPFifZAJz3h2Fi8XqpIFOa0mnetVq16FaPpSXE+JolTluLE9xVHTL5vGmkSJ9aaw3mhKkUUp3m+plxQiZNhAMti77T2VOIhnUMWDlF+BZyiVmTOcAIqWfU8hIoTVV9utMUMp+4JQHjrsXg9cPlx3NRYBXBrqd6ZNSFBxxP1AISKE7qy4kJx5LZpAC1x8fQdfnFvzig9TuEirRKnBr03ahw5YzJIgqC+h7Y/BCzA0FSc6IQezN2AOQC48mT+HbazFKccJUcQorWAv47IDCcgVJxUUilwZJxIcnX4rXye4r8nyKpHeHatD5/xTe27X3NDJCgkC2lWjZ20ZuQUdKXilLyg3P/oedz7kcci1bWTC23c844zpSKVwyfFK82nrr0BwaP8pn/1g7fjhpUu7rhxObeSvzCTojgBtUeSk/Vu/jArTk5JxakgVc8Xc/N8zSJXo8XX4QY0Faec4beS/BEBcnpKFHkJxQkAvJxkS7nJ1Ry4quD0yiwuPCs2diWI08Dx0YV4TrFNfFmYssdpd4lT1+PXwPbiicTvjC6379nD8YhToA5O1SSylqX5+okINecS4QaRUJWcHieAR5ZvDlz0HR8D15eW/bweJ4Cfkz3Hl+vKlrKmL3Syepz2NlWPArKOjL7Nb1i5Rf6Oxoes5u2p1KHFvpMMddAAnf9HzR2eSJHW4wRIJeqoqas4cSIWNLsyTOL4fIHiBHDidPFRYDWFOE3DIaaoE/SFSkSRA+NZ9VxXLiK3tUU/kVCZ1P++3uQLeDmrHn/c+AwnBIG04G2yWVn9l4qTYYjKqVg4qc9JW3ESv2d+6gVebWRvishnS5M4Eenqzd3Ib0g5+SOgi/9cnDidjP5ehVCcLomo9msTipMglYGXqOKFilMFK0Ke4jTczLQ+7heeusSfz01HZ7VIExCqMRGrnqbljH6/E1NO7n/0PN7z4a8kLhB5g2oLIcjNxYBXa490m/iRO07jzptXCu1P0qoXT46qeQhu0fBb+Wf3eAZWnZAbwCLFiWKVC2ycAREnTaueTVa9ouq/kx5FDuT1OO2UU5zU5NG8gdjkgChxPSLceGRWznIqY9XrOb5UnMYlTtTfaRW952NiIeDWtdnlZGHFFipUezTmHCcvOv9IBxQOUaw4CetdSophJFQlp8cJEJHl4AUpWosNI3bOyR6ncK3pxqzTpCLNtWxubZepemk9Trtv1Ru6vgwhmu89zW9cuVX+npw4uVY99ZyraNej839FEKKiHidSpnSteq7N91vLs81IenLY4xTbg63czP9NU5ymxGmKOkGR3bVZ9QRxCryRDIa4iRSnFOJ0SgzGLWPVy1ScnG3ZGLiJWaz2nEg8tGUafOWM9zlRVVXpcTIVNSmRqgekbvYt05Cbz5YgTqa24sTf/+3ZG/gNqwWKk4z3LmHVE4rTuRFfeCKJegDf5FAfQ6zP6egcJ05jhUOo6lhrLrzwTVAkOQA8dZl/H24+qj+3hdSY9dRwCD0CsKMoTn7AcO9HHkud05E3qLYQQnF61uGvrcxrXNxjxSlr+K38s2TVq0qcAh84+xngkT/k/+bZxGqGdqqejFUuUpz4JkJXcQqJU5D/uqmo1EhRnNwsq15Pf/gtwC2Acq5MHnEq74AgnF6ZwXlKLt16Xtue1B956KIe4mTJHqfd+575zkD2ZC0cOZX4fXuBE6dZbz3xuzIIVOKk+Z0zdV9/RqIeEJKZTkGqHgBpues7nlTzZ5t2NAQrRXGiQhbZY2V/k1j/QsVJsertYaoeuXMaloHmpuiFJtKAsMi5mhcOoaq2FYkTnf/Uu1TY42QK4lSwltHnPzD52hEJsEKoOF3YiitO4j2IFZ0ZY9Kq17D0eyMnGVOr3j5j5OYwcb+84uSDiJMrF5zrrRTiJIbgHvX5Rq5aOERMXhb9TZ7ZwghNrO048FTiRAtme5Gnr5DiRFY9paoaseqRkmSafAPh9sSGIpla1LRMDAJfDhm1mhobB4Tv/+YMTxzE+tP8/c9674VVz++ewoNPreLS9hDH5tq4Y+4U7zJLIyMiZvyZAV94EooTwO16W+c4yZoLrXX1hENcG719/hrg8ha38h29rfzj7hKeuswX+FKkInbh9AMmN7tFxEkOXVQIwINn15JWBAXqoNo7b86o9KVBqEJP9vh3/ZZjZYhTUY9TPUNwdRWnuXFS9R67D7j/fVFldv4Un6uWl2ZZAxhjYY9TUXCItOoVKE7COuWbeja2RlPZjPgOYGYUeHKsevT9ToZD9MJhtjqKEx3nDfUUpxKFPMINK7O4RD1O/ogXhrKsRQr6Qwddg4J+xiNOMo58F3ucNi4/jxUADrOwuJR8fTPLvMixEGyM9Xd81aqnm6qnKE6MsWSKLyEjUQ8A+rLHKX+OExB+L3uOL9fWxFqc4qqhc47WoUiinnqsojgt7GGPkxqOZVwRvdBHQsVpRZm7mPk+GwZgtfi5UDGSnGx0S9BL1VsRxxXOchL7sT742qEGQ6g/cxumJ+3MWYqTmuLXOiThEFPitM/I7XEKylf4SHHy/bDH6RTEhmrxuvBAEUm+JAbjrpchTjRUdzb2vAQRcpsLQJ8vHIFSWbSo2hCf5SSteuGF0TZTFCeAq1KSOCXRsAwMXKBDxKmlR5xagpxtNY7yKq3bBzaejVSSIhAbvn/4R8/hf26HF+LvmTuH/wykR+4Kxelsjy+siR4ngAdEbJ1LzHI6UlVx8r1Q/VKtegC3613++gQqTuWJU2jV45+72sxf1McyF6twAskBtFnQPQ4AVxZEU/hXN9sA3FLEaUGSwyyrXk2K026n6j12H/AH7wbiet7WeX573vy0GjB0Ayl4FM9xokb1/M02E1Vjpkkqmi2l6OSNsglODnEiq85Mahx5iR4ngK95g/XMSHIAY/U4Xb8yAwcNXGbzOGps8TVHgziNBtlBBWVhCotXoVVtDGyvcuK0bizgeIqLhFSoefQQuCOYjfK9LQBkUdWHGRYkCxASJ95vlFn8lz3HKcRJ9jjZGooTf78Hjqck6sXeE1KNlD6t2VjPKVmTqY8ptceJikpiQHgmKawBVLw8OmMD62f5jUqPE1n1XJ+HWtC6nYAtiNOYitM8E+9/SoojAEmcFoUyNSyy6om91VbACVKcOM21G+i2bOyMPFzYHOImuk6T4rT5HH9Nom/LUWaETq16U9SC0KqXozhVsOoxz5H2O1KV0qx63dElNODJviUdUGNkQnES1jsm0nbW+k7EyiQX+Pgsp5Q4ctWqF3lvCiLJyXLXNvhztDWJk5wBFbBwAcgKiPAcrpgBeHQ7uqH5mviZ7VyMLOwApP3uStBFwzIiDZcSM0Qqo1a9MByipId75wK3T5o20D0W/R0RqQlK1mOMyR6nm48lN4tZiFccyVLSsIz0c0tBvMIJJAfQZkH3OP6krvDPwjDx1VX+Pb31mP5mcFHaEeNWvXrjyHVT9ealVa9ElTfwudKUZ4K8/xd31banEuROo0BxEpu4gevn2jIDsfkJNBWnZjNcO1nexklN1YthkFCclDl3ZeY4AZJgGXnhENIBUb7eOt9uYGW2qUSS6wVEuH2+KfRgV2qgV2HKVLld/G6t8eLFlrmY+vullWPwmHA3XKnQIyngi8/CK1H7ptffgA8vyFEdRtmKU69ij1Nqoh6QqjjNxXpOSXGSVj3Z45S06jl+UGirHRfUu/TC9hp/DnYn0uvcsi05GzA3WW/MSPKheJ3UU1ekOC0wfpxuj9OGIE4nU/YpqX1O3WN8DWIBd+wION6UOE1RM7TiyEtcqALZ4+QKFYlh2RGVaKEyAeDVCbsDAwwnjVVtq97Q9eXimYgjJyIkNv9rPUcm6gFKmm6ixyk/HEINfYhsDlJAm+SqVj3HC4AjonqUEUnuCzVpxGysIbrxvYJ5uMyCAQZ/S1EAGJNkaIN1cWqxkx4GQJHk8R4nYdVb643K9dUQKZo7lUhIkta9CUrWu7LjYGvowTC4vUcX8XCIcIaTXVh9lJ56JQDgjhuXcXKhjax7Zg2qzYVQhNjsUZxd5xfLUla9TlhVjaArepx6l2ohHNuaA3ArKU7PPFCwaWZcjXjmAf3HLAk1GKIofERtZM+z6zFhnQp0FaeGhRHjx46cHLIiFafk9yTZ4yTOF1eJI7c1ib3GLKeQOJVXnADe53SBic3dth5x8oXiNLRmEimqZWEqceSsYgR0EUabvHjRa6SvCw3bxprBC4tbq9WJE33ffEPf+mQRcTTyiwBSQUpRnCJJju2F6PExqD1OmUE9qal6/H7UcyqteqTcpChOM01L9s/stl2PepdeYIvr+8otiVEBesl61FdYwrWgYOD6aMFBm4lzNos4CSVqPtgCwDR6nDhxWnX5niOuOAEZyXpqJLnS50TESe1BP+iYEqd9hhyAm5qqR1Y9/QtVYBJx4orTAnpoBsJ+ofa4GIa07l1rXNa26pG/1zaNZFyxsN5Zgjit9x24SrUh0uME5CtOaal6QGjXIDtBDLR4EnEyNK0q9DccLwhl94yAiK8/8TgA4CJbAmJbawYTF8Ff/2NPPBH+wulJIryOuXSbHqBEkkeJ0/JsE4YBBAylouNTh98SJnAILtn0rluaiST5FCEMTuDvzbZmMAQ/hi7U4cbYMg3c844zufdLG1SbC9GDNGofgR8wdFs2js/rV9HDWSWxz3/2KACDV/p648UcAyERKooj71YhTrrJfzUlBKahpzn8FuCFGPqM8yrZ0qqnuVY3LROOUAtcLeKU0+MkiVNaHLmm4mTrEKfqPU4AcEMkWa8ccXJM/SJKFizFqjbWLLYceNviHG9lF1RIjeqtVydOFA7hl1Kcwh4nL+/15ypOSholEStnO7VgE+lxIqte3Bqb1uMUS9Wjnk4qjqX1OBmGIe16Zfq1q4DI0A0Qn1+KnX+FAiJyk/XE6/GrPd+h62OJgiFMOySycQhCZcPDHAYYenrhEJcd/j6fXEjuVcgtkwiIoL3TWpI4HZZgCGBKnPYd5P+sz6pH1RgHG30H1xrcUobu8aTfXdj1rjGuaKfR0KZ9abaZrOQLItTo8hOVxTb5cpOZ6HGicAiNHqcCxYmOJauenFtVALrfKEKc+MkfH4DaX+WzGy4g/eJ4UTRBD8Rx/AdOhDyjgT5ayeG3hAzFybZMLM9UmOWUFkVOmMAhuGF/U7mNUhjVHbXq6REnft+dWOT0XbefxAff9QppuyDMd+zcQbWZEGRgy+Kf8c3HuqW8+AtZyVGWLcgTaulzChUnvVS9+PsWQTw5r6MZpEF9W7sAUo5mC6LIAb4hm4kN5EyF2MgyTateyw6JkzfKs+pp9DjlWvVKhEMABT1O1VP1AK4glx2CGwg1w7XHJ05qj08ucRgHwsLttTP6TQD0bP4eDDeqFwcY9TgZ+sTJUqx6Qa7iJKxfqT1OStFBJVYp1+OwxynHqpfS4zQXC+shIiTDIejYmBWergEJRb5mEBm6xhfXTSUYgiAjyfOS9aTiVL3HadlQosizriWNjkzlXDK2NRQn/lleGPL3M19xihVaiESqihMNv7UOD92YhkPsMyhVL9+qp3+hYlJx4lY9SZwWrkseLIjTtcZlbAxcBAErtK4QEUodfiusd2ZnCfNtG1tDD5fFJp8nkWf0OKXEkasNrxGrnjoENwXNmFVPt+IqrXp+EM5kuPJk6gDUn+58FXcAoV8/BqqqHmWr4Y2CCPWseQBGacUJ4Ml6qz2nHHEiUpSqOJFV71zqQOH9wFOXykeRA9HEOT9g2SlOKZDWkBTl5K7bT+K+h5/Hxx69gE7DxMAN8NYXHa84/JZvlC5jEQBwS+nXGJLDRAP03HFu1du+CBzJV8oKn6bme0dWva2sHqe05LxC65jB0/VOv1b36ZZGT9qN9C5/s00b20Mvv3eCkrE0FSfDMGR/Sq7i5BYPwG2npep5ZYmTWCfdAYCMNXOMOU4At+r9VdlZTg7NlKlDcQp7nIJdsupZIvwls1EfQo1yAH+rBuIEfVWerIo2fAy1FKekgkGKU6dp8Z4zSoZL6XOixMreKMeql6M47VAcuSiGyZAFqThF1+vFPUrWo76lI05y+C2BepJzFacxe5wSxCkPMyvAZg8r2CoOhyCrnpdt1cuc5UT94SmKUzNtj3tAcXgo4AFF3al6gVCcWOBiveeGxEkNhiAoxMkPmJblRo3iTICIUGdJStWUAhexNMV7nIgEKZsDs6LiRCSLUvV0Pf6RHieqmuxcwM9/+HOJWOoFl7+nWcTporj9dGMzvFEQoU3RE3XdcjnFCQCOzFVRnET/EpEkFTTXydkJq4z7DKk4lej9AcKLKmNcMQlTnIo3x2mpeioefZ5vCn7oVddHfi4NEd5wzuWV2jL9TUBIDh0vSEbKUp9TLYpTuTjynZGXrGBTcl5cWYj4+eNEXfx8168n+/FqRD8r4SsD6gYwE4JUMFvfVu2Af2c9p5riNMgcgNsbIxxi93qcbliZxXmIDZ6m4mSIa4PfGHP4LaLEYbcUp9aIF8usuWOZx3ht4cgQ6lQVVFGcDPH6G0VWxYweJ8bC/hhpuctJ1ptpWDAR4JqNL+OG8x/Da8zH0G3GzvnUHqeoVS+MI89O1QOAhU5yCPpugKx6C/2n+Q0rScVpZZasehqKU9U4csdXZjgVECeRYLlkbGuHQ2yzDubadmoBLbXHCVAUp2/Jm3JdVQcUh+eVHFDUnapHPU7wHKE4iQpYDnE6bfJjdPqcVhWrXgJkvessYklUf4g4qSl5iR6ntHCIrFQ96nHKsupZJgCmKE56FdeWSpw6i2DC+nTaSG5ETxic1FxkS6nhAWTVM3cUDzsl6vl8c1NVcQKAK9slPNFpw28JzZmQxE5IJHmVKHKAE19a4Df6bnaFMwVpc5wIG30Hz65x+9IP38FV2ycv7RRX7dIgFKenBuVnOAHcWhY2QMe+AzUl6wUBk5Ve3VQ9xmKkMzc5T6CznBwePX9q16PIgfKKE32v8hQnQ6ox+qTCE5ter2KPU5I4ie+TNwx7QEsrThqpeqb+Zl0Ft+rx9Y1tntMagmsKxSlICccoC6uhEAd/d4jTjMuvac2FbKspXVukOlUBssepBHGCJI7VepwcP5D3k/PPBLkyUhSnW9f+Ep9t/Qzee+5n8XfP/gv8fvPX8J6H/jYvqoQvRDy3Ela9lB4n9feJtbFmrO44mMEQ7YFIK165KXFMaNXT6HEaS3EqmOFEoFlOxhYGjt4cpx46kiDFcWKerysXs4bgbj0HOPy6GSpOh4duHJ5XckCRqziNYdXzXAd9x88nTgukOOkTp/U8q56iOFFUOREnO01xGmwAQRCSIGVOh2WpVj3lvoVx5Caa8GAa4sKgGw6hEicA27M8gfBmI9nAe9zgr/M8W04QyHbDxNtf90r+g1pVFe/NJUmcihSn5GR5Sta7XKXHKc2qB4RK1AT0OQ0cH+c2eMW7bI8TEKpO630n9NRrbI5pY5zWq/PoOX5hun55Brcdn8ORbhN+wPDY+QqqkwiHeGKHfydvLUmcDMPIrqrKWU7jEacdx5P72SLFqWWb8tyMqNWFyXnghYEf+CDwox+R/nv8L7+766QJUHqcdBUn2eSerTgRcTJKRGZ7wh3g5xKnZFGJEMaRi2uHSq4oJKTWHqfxFKeFmQYGba7EGG4vM8ZaheXy189qIE5qqp6/S1a9OX8DANBZyrbymkKNao6SxTFtVFCcqABrGQx+XkBAhuLUV2aZydlhRK7in+Vj9+G1X/45nED0NXady1yJJvKUozjRekzWuzBVj3qcYla9rB7QGsEYw2pvhBtpXzBzJNzPKFjRseqN2eM0dAMskVUvxxoKgD9PAEvYLg6HEMWKHdZJH5mCUHG6suPI4j//O8uhxVPMuJqGQ0xRO2SPU1qCWAWrHg1gHIqG49Cqdzp5sCBTR7EGG57WgrOaZ9Uj6117URIr2eMUIU6L/N/BeujhBzIVp1LhEJaJNpSFyNZUnChVT8jK623+3tyYQpxOiovBBbaMf/63XoT/+hOvwU+/kfuclzoNvOyM6DFRN49CcVoLZtG0TUmCEshTnOZIcdJcaD1HbtZTrXpASKgmIJL87JUeGOOVw9TvVwFUj7vuEFcgJE4jL4DrR6txj5zjFsaXXLMAwzDwkmv4ReHRcxWsjYLUnPMW0LTNbLtmDsL0wIxI8jGtekSAmpZZmGpoGIZ87yLESZe89a8AN74BOH0n//n5h0o/3yqgVL0yPU5AdOMYhylIhVHCqucZ/Fgvd46TjuIkXofVDDeV/bLEiTZxGql6FXucAODEkRVsMPFaNOx6tpssqlUFWdVsI4DvF1TdK4AFARbFrJyFlWziRGpUx61OnJj4vgWlFKfwWD8vyS1DcaLCQdM2YVPfcdosJ0VxjrdMG/FZbXmpeg63AFOq3oKu4rSLqXp9x8fQDXAT7QtSgiGA0B2SGw4he5yqx5GvoJzitGxsy/lPmSCrXo7itDjTkMX+S1vKazSMUHUSARF0TZ0qTlPUhrqtekScBsMhAIZrTVKcUsIhuscAuw0LAU4Ya1qK05pYCNIVpw3+b2cJy6Likt/jtBlWtwwzcpG3InHkygZOIxyijXCquu5FPq440YJ4kxknTgzHhOJ0kS3hxEIHd968gp96480wDeD81giXKW1v+3xoR6EZTpjDtYud7BAOem+cnURM6ZGyitP28wAYb+DNqkhN0BBc1aZXZfL7khJH2yvR46QeE+9jIYJ0uyBMRJweea46cbqMBdx0ZLbSTAuZHLVLVj1K1NMhnICarKdsYnQT8ei4a76T/3vur/XuNybKpOoByiDPPMUpEIqTpa84kVrgV+1xig/ANYzwOKk46fY4qeEQWU94vFQ9ALhhZaZUJLnt89dvtMcnTqrF0PPq31z3ttbQMPhnsng0mzjNLPLvPalTVUA9TkGJOU7qPiLIe/0ZilPY36T8TUGujKEyHkQoztmrmzKrLcX+KXsnhx62h6ECTnPssnqcFmcy1PgaQT3et9pinU2JIgdCxSl3dAip0+PEkctwiALFSfQ4LaOgx4kxSZx2WAcnUqLIAV40K+xzEgER5Ko6TKl6h+eVHFDkx5FXqPCJBWg0GmIePcyBZjilECfDkLdfZ1zWmg+03hMzFQp6nCg6WxKntB4nME4uAB5Frhyj9kQ1bNWqRz1O6XOcmrYpo8hdo6mdFBeJIwdw7S0vAZBUnJaxjZbhIWAGzPkTcgDqTNPGC0/wi8iX15XBdmRfFIrTOuvimqz+JoC/N4b4Lgyidj1K6rmSJ/+roI3J/Kns90EqTvs/y6lqFDlhQVFjyB8fjxJPQ8My5fkXD0hRFScgJFCPlFWcRjtSJb3MFkuHXxB2W3Ha0QyGIITJesr7dvq1oqcuZ3zw/DXwr7sTn39qFZ93bgAAsOf2hjhJxUnjuwGogzw1FKdGBateRcVpGO9xAkLbIynyJa16xi7OcQKA00qfk86a0/L59cvMmlFTBsp1NHDr31xvXuaq/RabwcxM9hrWXeb9pkvBhlafVyqqWPWU1+9nESffDVXHhOKUotS2xOeiKk5lZrWluGrCcAhf9ivNNq1QsSDlbB9S9SiY6YWSOKUrTuSYWOs52UEc48aROz5WJHEqGMQuFaetfOLkDeX72kM7U3ECwmS9RCR5THFyporTFHUjN468SqqeuKg5zijsb5o9Gg5HjEMZgqtn1eMnecJK5bshmeksyd+nKk52M7zAbzzL/21FN5K2pSpO+nHkDcuUwRCOoZeop/4NOeX66AsAQEjy4cJ3UgRDrGIev3z3SyOv6xWnFwEAXz7XD6Vz2hxIxambb9EyzWR4hoAMh9BVnGQUeYZND1AiyfffqvfU5WpR5IQllTiJzbG+cpJUFTb7rgyGuP0avol4ybV8o1A6IKLHLZOO0UYP7dJR5ATZ4xTfHKiK0xj9G7qJevLPpg3BNS3grvcjPRyCny8Pvfh9eN2//iv8yG9/Ae/5S36bsfYU/uIrX6/83HVRWnFqRlO+0mAKxckqYdWjtTpwNYhTI7kRTwzABZIEq3Q4xO71OAHADUfKKU4toThZneRModJQVA3fr39zvbPGi2ybZj7JWzrGiVPT8NDfTvay6oAUJ1aqx0l5/VnEUU3Ha0ZVvtQ0SjmQXrlfGcU5xVVD9l/HD3BJ7B9kop56bGKOkxhJsYuKE/Us3UhOlJQocgCycBywHOvgmHHkQ08ZgKvZ47RsbOdft5R9VQ/t1ChywgkagpupOPFkvWkc+RS1Y5SXOFLBqkfHOiMnP4qcoAzB1bPqUThErLKqxlm3F6RVb008ZsKWRH1Om2LDHmv+NbNS9TQG4HZEj5OrOYyS34+f1PR5YOkGwDDRNYY4aYav7bggTs2laxKzfF5+HbfZfeXZDWBOpNiRoiYVp7nsRD2CqB4ZsT6nY3NhxGlunCxBRpFnBEMAEzUE96lL1RL1CIsyOMGR1jEdq556nJqsR6rSdcsdeeE+Md+WARFfLxMQIXrNVs0lAEbpRD0CVVUT5yopTv5orGh5msk019Jbc8iqtx2f5XTmbuDl/yB5h/lTeOjOf4cf/Msj0uKxgTmcDfhm60N/+N9x/6PJvsI6UXqOU6tYcbIEqTBLKE6+WJ+0iFOMEDHGwh6nZh5xKhdHnttvIePIx1OcLpaY5dQJOJFrzNRBnDStahUxEANtt6386v/sbBc7jL/fm1eqKf2G+L75ZRIODQOemPvEsojjSKwdjdlITxSgEHX1vEkLhxCKMytQnHH6tek9Tsr3+dw6VzPkDCf12H1I1eOFY4Zrc4bfAnxgPRXyMpP1xowjHzjlU/W4VS+nv098jjvogMEsUJz4dzhh1YsrTlOr3hR1I7/HqbxVjxpgjcDNT9QjyFlOVwoVJz9gstKdUJxIHWktAKYle6Co+G3GrWLUyyOJU/SCr55jqQNwaUMRAw+H4M/RNfQ3MZEBuAD3H4v35nrGN3K/9rdvxy+/fhEAsHD8hsRjvOI0f02PnNtEMCdIFW0OBqFVLzNRj5CRrLc824Rh8CqWDsnNHX5LIFJFQ3D3CUHA8K0r1WY4EVSrBtmxdKx6QFjl3B4lidN3XLMobzMMo5pdb5tb6M771WY4EWSPU/xcbbTDNKMxkvVqUZwINKfmFT8K/N3/BPzon8H/ma/ip75ybUKLeojxDcjLjG/i3o88plcYqIjSc5w0FCdLKE5miVQ9qThlVZx9N9xUxdZHWeBBnDjFvleac+z0epzGJ058lhNf3/yCYg1jDG3GiVNzpgarnmnyvlfsjuLkbvLiyKCZT5wMw8CGUKW2V6sVCSopToAkTpnEkRSndpKo9tKU2rQ48hzFWd5Cs9qob04hgLZlot3gnxOlrMoockBRnKLn48IepOqt9hwcxSY6rM8t9Us3ZB5Lsywzk/XGjCMfOR6WIArIhT1OiuKUFw6hzHACgJPz2UXek1lDcCmefecCMNpRwiGmqXpT1AQZR96oZwAuU2Y1SMUprb+JINL2rtXocdroO2Gj5kzsOcn+Jn5BWJqJEquE4kR2NCJOMateYapeXjiE6HHyzBJWPRkOoSwqKxQQ8TxedHIe73rNadzcEpvluZPxh8ANKzNYmmnA8QKsWWIh2yLFiZOgDXRxnabiFE/W41WsEkNwibTlKU4038kbpg7d3Ss8vznA0A3QsIzi9ycDpAqt98sNwFWPUzfH8WAIQqWACKE4XfAXYBrAjUeq9XFl9jgBUnUyaiFOmoqTTNWLPR/fBZ7+LP/v7/xHwEv+HnDj6/HgM5vJCiWAhwNepXyZ+U2c3xziwbO7912kDWCtihMrrzgFIlWPZW1i1eJQjBANlOfSjqyPFRUnIli73OO0NNPAVoPPMfLW8+3BIy9AF/z5NGdrIE6AJE40B6lOBOIcd9sF/SYAdqxFAEB/vVpPoiFIQ1Dys/CJOGUqTunBEED4/Z9JU5ziA3DP3A122/cnH7+1EJ3VlqI4AUBXKN7PrXPiHNlvyB6ndMVp5AWR86NOrO44YaLe4vVhwEMKwllOGdfqMXucbHcLtiEKKJo9TvNGH27e+AOa4cTa6DQszHey10jZ4xSf5dRZCou/a9+aKk5T1I/cHqcqVj1lOvg1OorTQtjjVKRiELFa6DSiKhAQmeEEhKkyBDvTqid6nGJ+assMHz89jnw7VSFR48i9EglX8R4nANK/fKNxAW+4NUaE4sM7wSuJL7+ev/5nXXGh336eV8aEBYJb9fQUJ2OQ9L/LgAidIbhESvOIk93iPXDAvvY5UX/TDSuzYdRtSYRqjBMOwNUkTvGhi0AyGILwkiqKEyXqsQVcvzxTGPWdhQVKjkqzo3T5fBj0qhMnsjjqK04iVS+uOD33JW6nnVkBTnyHvPnSdvpF++GAn2svNZ8CwDKPqwO0ASytOOWk6hFxspv6pD+wiDhlbJyIOJmNsDot0Bc2vaZlRs+Xyj1OBeEQQQAwsRkdo8fJMAxYi7yv0tzOV1v6jo+uwZ9Pe3ax8t9U4YF/lmwXiJMhIuCDouo/gH6Dr/HuVrVzleLIyypOFCaRGY6RpziNqOCQVJzkwGUF5uYzAIB/7/4A/sh7Hb/x1Mujs9oy9jhdcW4+J616xT1O3ZYt9xm7Zddb3Rkp/U3pNj3CkaJZTmPGkXe8DQBA0JzLJXAAgPYimAidark51y3RArGDDk4stHPTbUlxuphSCFOT9abhEFPUjt2y6jUML3+GE0GQqhNYw3Yv/wRezRt+q8xwAvhmo62oaIn47XiPU1xxKrLqsSC1OsrjyPnz9EsoTqT4Ocp8DyaI003G83gdEadtSqpLJyMvv24RAPD1viCCW89HQh5GjTm5oGYib5ZTmYCIouG3hAmIJB+3vwkAlmZDqx5t5HWJU3zoYlowBKFSQIQkTouVbXpAwZDHuToVpzGtek/9Jf/3pu/hgScCx+bSz8mvs9MYsQaWjR2cNi5mHlcHwg1gyVS9nDlODUGcrEYJUkEbwCLipBNFThg3HMLLCIdQq/tWuc16HDNH+DWn4W4CTnYYRd/xpOJk1RFHjlBx2Q2rXmPIiZPRPVp4rNvmCkCwfanS3zKEG4WZ5QowxT1O2YrTIK3g0E6x6gHcmnzhEQQw8P/1vw//wf8BftyzD0SVVKk4Rb9TtB5Tj9NSRHFSepyU4qlhGPmKfA1Y7Tlh0m5GMASB+sCze5yqx5EzxjAriBPrFCucME0EbV7UnfFyAkkUq96JjOG3BFKcLm0P4cXnoil9Trl9/AcUh+eVHFCQwpGfqlfmYsyPteHrhUN0j4OZTdhGgOYg3zZAilN6FHlUcQLCZBkgFkeuHkf3i4dDmBlWPTVdKiUgomGZaBuicVbX3w9lAK6iOD1vc0Jxk3kBr7ohlgSVYtUDwj6nL6+Jv711XhKgTTaDk0tzxTOKxHuTrjiJWU5FQ3DdAdBf5f+dpzgBYeqeRrP2boGiyG+qGEUOhFXJ1R1HNs7rpurRcUScHn0+GQxBqBQQIWw8l1A9ihwILbCbaZG7lGa1p8SJb1S2EsTpU/zfm94YufmOG5dTG45d2Pga4wWe75l9Rsb87wak4qRJnHTmOFmM/85q6K85jBSnrE0srW/xviVkRJEDUeJkNvSLbkSwshQn9TmOoTgBwImjR7HDxPuUozoNBn20DPGe1zAAF1CsarugOLVHfJ2354tT5XyhSpFKVRaGHIBb0qpHilPWdy63xykvjjymOH3zLwAATxg3Yw3zeIqdwvM4yknC059TnhD1OMUVJ0GcUnuclL8fRIsZu93nFLHqHcknTtKql1XkHMOqN/IC/UQ9gaDDyfqMIFzpDxyGQ+QFQwDAkdkWbNNAwFJmSyrJeqFVb5qqN0VNyO1xShkOVwRSnFawjQVDVPPSht8STBNM2PWO+ZdyvcFEnBLBEEBkhhNhWVFWEopTezH6c06PU0tVnExT6XNK2gPUVL3AqtLjFBKnz63z53i9cQltU9wurXrpZOQ7rl2AYQCPbIvnuP18uUQ9IFdxOjqnqTgRwWvMRMhsKqTitJ9WvfEVJ7q47ih9Srp2rG6sxyktGIKgBkQ8qmvXE/OVLrPFylHkQEGPUy2KE1n1dFP1UnqcBuvA81/h/31zlDhZpoF73nEm9bHIrvePblitNBxYF1Jx0vxu6MxxaohAmkZT3x7MiuKIKRo8ZZREaqIeECVOuv1N6rFZtiFVcRqjxwkATh/pKrOcsos1gx3l3KqJOHmCOGSS1THQFQNtOwsnig8W9mh7uFrtj0nFqaRVTypOGSpHbo9TSjhEWqoeAHzzzwEAX26+Utxg4K9t8d/f/GR4XGaPk5hHKa7Hi6pVTz020edEhaVdsur1RiFxKlCc9K165YnT0PWxLGY4GbMFiXoChuhzWgi2kgoRgXqchFUvD6Zp4Ph8xhDcZREQsfqU3FM1puEQU9SF3KnKGYtKHkybH3va5Bs1r72cavVQYSxRst5lGR+ehrU8q16a4qRElid7nGKb+USPkzoAN/be5ESSq1a9cYnTJ5410Wct2PCB9Wd4IAXFtab0OAF8w3nb8TlcZIqiJjYHPBhCYzND0nue4lRInJRgiCKFawKG4MoZTjXY2AhNy0xXclPQjVn1KPghHgxBoD6nr+oGRAjF6TJbGMuqR0N+B66ftAnKIbjVidNWHVa9s5/hVtojL0idIfbGFx5DJ6VQ9KjBewZOD3ZvlhNjTFbOtRWnZvS7kYaQOJWwGIq+JSNrE5tj1SMSl+iVixCnEs+Fji1UnAyehjYGbtSc5eT2+Lk1QHvsv0mQxGEXFKeFYAMAMLuSfm1Q0RCqFKlUZWFQql5Z4kTEMev10yiDFMUpNY5c7XFi4trpe1JxfqTzKnnoVzvfyf9DkCp+bHpxOB7qs5CWqqfeXyDXyjwmGGPY6vVxvSHslQU9TjJVrygcokIc+dANsCwUJ5N6lAtgdLkytWRsY+jlE6dtVqw4AXnJemGPE6XqtabhEFPUBdnjFN9IMBZa9SqEQ5wS84bYQo5NT8BQhuCu5yTr5SpOsR4nIEqwMnucCIk48owBuEBuJHnTMmSqHith1SPiRETW8QI8cHYdTzOxGV39Zmgrac7lVkBffv0StjADh3qsLn4NAEWR6ytO8TlOgBIOkVXFIuhEkRPUSPJ9wObAldbDcax6tmVG4sd11SZ+LG2O+fmYFQxBKBVJHgRgkjiNZ9Wba9ny3NjKGIJbR4+TdqhGO4VUfIv6m96Ycg/g009cxsANcLTbxP/vx1+NX377iwAAX/ZElfLCI5WTpoow8gIZda6tOFGqXh5xEla9MoqTrDhnEqdsq57scYpfN9RjdfubAKk4Gd4w3ACrUKPIiwoxBTi9MisVJzcnWc/pC+JkllDOClBoVasI1xliHvx6tKBBnNoL/Fydzes3yQFZ9cqqf36R4iYVp+S6JxWntB4nMNiBOGef/wrfD7QXcW4mVJefmn0lf75r35IzfrKSg+MW68W0OU7q/QUWlJEUdWNr6OF4cAkNwwdrzGTa9QkrMlWv/jjygavOcNKzNZvC0rdibGU7i0ZqOETx+iGT9bJmOfUuwxBkbNrjNEUt8AMG1+cX8URlPOIpLxEOEUtfspZzgiEIi6HilFepybfqJRWnpUiPU+z4uOKUCIfI6HECQpKVEknOFSfh/7b1Nw7xVL2Hnl1H3/HxnCVIxeqTYXWUIrwz8PLrFwEYuGIICZ2IEzQS9YB8xYmsekU9TnL4bbLinwCpAvtk1fuWsOkdm2thXtMiloXFWWUCvaZqAqipem5uMASBCJVWQMRgDQbzETAD1tzRsV6jYRihjz++OahBcQpT9cYYgEv9TTenE6f7Hubn0Q+87Bp81y1H8BNvuAkvuWYBz7BjGDaWOJG48EjFV5AP1W5XVnHquz6CtPlSgS9jge1WCZVHpH4aQXnFib5ziYCLyla9cK20gpRrgAwqGq+/CeAbylUxrqF35dnM4/wB3xgOayROgVEQjlARm5f5d9plFhaXixWA2RV+ri4E1YgTEYagtFVvjB6nUcp3zm5L8mb7wlpKitLNb0S7FRYSrM48cP1rxDF/IZ5QVqpejDipfaamBdBw3YTiRCMp6rfqre6ENj1j+eZI6E0aVoqsemP0OPHht6JVQSPFEQAMQZyWsJ19zRIkZ0dTcaIAiQubMaW6PS/tqAsDfo5PidMUtUC1hSVS9YJqxMmyo8eaS8WKE6XuXWNcyV1wyvY4qZHkmXOcCPFwCKWqmYg+J1ufk9LjZFkyjlx7+CMUxUnIyp/9poiWlekwiuKUYdMjvIIiyb1FfoMgThusi+uWy/Q4rSci14/qWvUqKU7P89jhPYa06Y3R+0NQvfC6G2NAnePk5wZDEE4ulAiIEMNv1zCHm44X9JtpINOOQorTaBtWUE2xIcVpvoJVjzEGrJ0F1p/m1psbXpfy+C7+/Ouc2P3tl4ffzR942SkAhrTr4bm/rvT8i0D9Te2Gqd1HRRV2xoChl9xwBG74Xpex6hkiVcvIDIfISdVzdax6JRQnWyVOKd8d6X4YL1EP4OTfm+XEwV3LLtYQcRqZ1VXoxGMWpcpVxOYqJ04bxjxMjSb4+RVefFvEDjyn/LlqUDR8yc8joPjyIEM91ehxisSRG4YkWQ1fbJ6fFD1Mt7w5ok51WxZwy5v5D0SuMtoR4mt3Ym6kmqyXclxiQHgNiCTqFQRDAGGq3ubAjY45IYzR4zRwfSyDFCe9Hic6bsXYlutHHIEgzj20C3ucgBzFCZCq09Lw2wCmc5ymqAkj5SKcIE6qfaOEHG/EK4IaVr2o4pRNnFZLKk7qcYlNSkJxilrf1J6oxHtD6lSK4tSwDNnjVIU4OV4Axhg+8yQnTkvXcRsRrnwztLLN5StONx2ZxXzbxvOBeI1C/eFWPX3FyQg82EG0kkPhEGs9J736TZA9TvnPFYAIFTD4Rah3ufj4mkGK083Hxt8gqRdY3T4dIFSntkdeoU0PKBkQocxwGqe/iSDtKPFztTUvv/Mtd6P04zLGyg/AFcd5AcPQDUKb3rV3pNpZ73/0AkZegJuOzuLFp8LN2TteegqGAfxVT6xX53aHOJVN1AN4ch3VcXopkeSOMlCy1dYnK+QOMDMVJ7LqlYkjV616JZQa05TfHYulPJ8aFScAsITKbWxn9zj5YhPn2jUSp10Kh+iv8eLIpqVXGFlcOQ6f8S/V5mp5hZiseqykVU8qbpk9TtmKUzgAN/adaxFx6gO9K8DzD/Hbb3lz5Nhu2w6J09OfAdyhkqoXPR/jboGFWP9q1iynpV2MI+eKk0geLgiGAPhzpn1PakF6jB6nketjiRQnzVQ9UqbyFCdpjzVmIqnIWTgp7HyJHidA9jktC+KU6FU/wDg8r+QAgqoQlmkkh376SkVoDKtebhQ5QaTqnTTWsL6TPTl+TTQ5rsym+PhTepzyidNi9GfdOHL12KxwCNHjlJZGlYWWUiW8suPgq89tAABuftHL+I2r31QS9fLJiGnyQbgyOUqgZ81H51FkodGWm56mF32N9J76Acu3I5DipGPVsxoykW0/huDWkahHUBWieINxHmjgYi9CnBZz76M9CLem/iZCpuJkGDKSvJ035DADA9eX/T+6pHO2GZKK7aEbzm/Ksun9Dd8o/+2XXROJ5T8+38Zrb17Bw0xsSJ77UunnrwOKFNftbwI4SSai1U+JJHcV4tRs6Pc4ScWp0KqX0uPkZvU4VVSclOOttOfjpysDVdE5wq857bwRGMI2VCdxIuJQd4/TaJOTn76tR5xs28a6wdePrdXyoTxmlf5nlOlxyiZOiXVVkCzbH8A4+2kADDj+EmDuRMTWN9uygeMv5r1Bbh949oGcVL3w/Ow0rKSyaqUrZ7kDwsfEak+JIi8IhgD4PoDaFVLtejTHqcIA3IHrY4XiyLUVJ74fWc7pcfKEymvPLCT70lOQrzjxntWjDt9TTBWnKWqBjCJPY+Ky+dMu1Ywbt+ppEae5E/ANGw3Dh7+ZvogzxrDe489pabYR/2Wh4mTGX0NrAdKnDOTGkSesejmKE48j54uUUWLjoJKzv/rGZQQMuOVYF0eufzG/cecCcOUJ/t8FVj2A9zldYNGLqD17pHiGE0GoTnHi1LBMSb5yAyKIAOlY9YB9HYJbr1VP6XEqRZzCKHNK1MtTnAA1IKLAqkeKE8aLIics5m0OBAGuojiR2mQaKVXlDBiGId/nrf4IOPtX/BcpwRCXtof4nLDAcmteFD/w0mvwN4Gwxq4/zavXNYOG2JZRnIDw/UhVnIZ80zBidqmqqikVpwKrXopyNEibqRM/toTizo/fO+K0ePIGAEDXW8+2Kgni5DXGP2cI0qrmJwnwOPC2uVI/aunPH9sy+frRW8ufn5gGQ4SRsJLDiGVPVKUepxSrHhBRnMynRO/SLd8LIBpd3m2KvYz4Hb75F5k9Tio5S9j01OP3MFVvdcfBjaZeFDlBRpKnJetJq155kjdQFSdd4iSUqeUcqx4T51y7m3/tI5xUhuAmHDBCcTrq8j3FtMdpilpAVr3ULxRZI0pWlMyE4pQzw0neycJOm5MBK0Nx2Bl5cET/T0Jxcgfh81XnOOUpTqYJtJWTM1ZVzQ+HIMUprccpjCM3SsTxqn/jU4/zje7rbjnCXw/FfX77Qf5vgVUP4H1OF2OKU3Nec4EDgBlOupp+khxSJHnmLKfRThgrWzT8liAjyfeWOLl+gGdWx48iJ6iKXhniRF78jb5TGAxBIGL1jYs5zbYAPKFUXmaL9Vj18jYHpDjlDTnMAAU8dFu2PsEHZNhFcO4r/HvXXgBOvTxx3Ef+5jwCxosKp1eSKsJdLzmBoT2HpwJRmDj35dKvoQi9tD4NDdBGLlVxcjlxctEo9b6ZQp1KJSoA4NAcpzI9ThWteoCiOKX1OFVLccvCqRPXYMTEY22nEwdTrO+sRuIkFZesHp+q6HFV2Wtr2qYA9IQ6NdosT5xMVk1xCopef47ilEnWxXW84fdgkFX31rcAiEaXS/ud2uckFaeYVU9ZuxM2PaC4x2kXUvW2N9dwwhAFYorbLkBuQMQ4Vr1BH11DqDwle5yWsI1hxjBvOudm5vSU06NzLZgG4PosmR4oepxOeHxPkSoQHFAcnldyADF0cxQnqoiV9JRbCnHqWwvagwOHs3zj3OqlEycKhug0rKSvntQm045cuNU48sQcJyDa55RHnBKKE4VDpMSRK1Y9s4RVzzIN+Rz/5zd4pfv1t4qLIFWXSFLX6Bt66XWL4awSgdnFY9rPJ0txApRZTlnJepT+15pPrRymgix9e0ycvr3Wh+szdBoWTs6XrJCnYEGx6pUhTnNCcaKiWV4wBOHkQhsrs8UBET1hxdm2l2UFchws5kXuCsWpilWvbH+T/JNiQ9R8RqhNN74hsRECgPse5t+tH3hp+vkz327ge194TLHr1d/nFEYqV1ScUiwu1NzvGuUe0yLixLIUp5w4cmnVqykcApBEK11xoh6neojTDUdm5fqYFUluunx9D1Jef1XsVqqe3RfqaFefOI1afCPrbV0q/ffMjBjvIoSKW4aqSEOX21HFgc8/SxmAC0iSdWTncRj9Kzy86bpX82MVy5085256I2BYwOXHgY1vixeUnaqXrzhFCQCFA+2G4mRtnAUADJrLyVaDDFCROTWSfIw4cgz44GQfVuKzyoQgTk3Dl5a8xFMS59z8gh5xalim7LtO9DkJq94828I8dqaK0xT1ILTqpVQ/MyoxRbAa4cZsu11sKSN4c3zj3B2kW/VygyHU/ial4jrfDpsjE1Y9ILr45MSRN+JZ5oVx5EScym0c6MTeGXmwTQOvvklUcuLVJQ3itNBpYGYl2l+0eOS4/pOZySZOtFBlKk4yilxTbQJCxWmPrXpk07vp6KyWp7oIqlWvzOY4PvOpyKYH6AdEOKKibM+fKKVIZIF886nJUbLHaaP0426XHH5LoOPnnv8MvyHFpnf2Sg9/89wmLNPA92cQJ4Bb+B4KOHFiu0CcwkjlkooT9TilzHLynFBxKgMiTnaRVS83HCKvx6mq4pS2qa62Uc/C0bkWLolxDWsXnk49xqa1T7P4p4OQONS7sW6KQbZWV7845rX562cVAnnIqmeUTdWj49MUp5Hi4Ii95yMvkEWlmYwep+ObD/Ofb/pu+T1R1SlJhjqLwLViMC7tHeKpeipx6qTsOWSPU/RzzB0QPiZmtzhx6s/doH0f2i+tpl2rx4gjN3qcOPWsBf1WjkYHQ4P/TZZmgw4CtAJOnBcW9d0xNO/pfDySvNWVIzJuNC6gqZE2eVAwJU77CDn8tkarntrjRCqSFoSlb2F0PvXX6yUT9QBqjuTPJzX6l443rIQfn4hW0zKTm82ccIiGpRKnchsHtSLyitNL4UKvNoKaDe25CadP3wCPhY955GgJ4iTem0aOVS8zkrxMFDlhn4bg1hkMAUT778oQANsy0VYa7W/XIE4A8B3XFgdEmMLGM7OskXCogVBx2p0ep7JzpubaDcxigMXVh/kNKcEQf/IQ/1697pYj8vubhu+57RiebNwGAPCf++va4/Gl4lS2x6mVrTi5lYkTpdiNQ5zy5jhVDYdIWVcqXo+yYBgGdpqcZGxfeib96Yjqt7ZqroFCq1pFzLicODUX9Nd4JizgVj9lE1uAqooTM9J7gwCENr3GTOJxe0rBIKFyCsXJpjRGsuIh1uOkEi7lGABjKE7R1zHXskFbjbrtegsD/j31FvX6mwClxynNqkduIuaX7rkzhOLUa5Qbb9GzF/l/9FeTv1T2UyvL+sSJnCIXtrKT9W4wLiQL4AcYU+K0jxgOHbzGfAzfNfg0vva5j8L3lJOHZoP4LnD2M0CgWT1R7CJDD9HHzIEpiNML3CcSz8X3PFz4m0/ibvMBfIf71ehjBj7wzAPib5uJ50nE6fzmEJ9/alWmdgEIp5PbTeDpz0buS6eYYSB5P9ocrD6VeG8sFmABfAHYePZr2q/fDxig/InvullZOJZuCv+7s4TIgTl4+en/f3t3Hx/Tlf8B/HMnjyIPSCpPQqS7bWhKiWXjcbUrsbRYdrv6FNvd9Wq0VKS7VPVX1W43FS/aRbG2tVW6y+pi1U+RbQlpYmmEIrGKiIpEfkElFZJM5vz+GJmYzH2YuTOTGdvP+/UaL5l7z7nn3PM9586Ze+feCFTDXMcmYYBUUWx3eVruTtj5+mlI5db7JryjAT80lCDo5BbZtqo+br7O/Ep9s/Uyk0Dhmcv455EKm33afOu5Kg1VJ2XzPPH5/+KL7att41Rjudayqyc+xThDAXrdPGobV2X7gWMf2ca/yrJgP/O+GWcoQMCFArvzbDYaMdinFOMMBfihoQRJkcF2pUuKDYMBJtz8Kk+xjkG37hwW3lxtf/uraHlYb3lNvW07djBP6gPqK3DywCcOtcWVW21x740jtuVU2Qch/kC6zy74CCMaA7uiObT1hjTmmKvBXw+aH4I4rq/6WfBAPx8k3DcIN4UvfBtrcfwff3A4ptSWGc/swzhDAaKvHrI/3gB09AV+aCjBzeKNNvk23TR/S+uPBtn+oUQymD9UBptqZct646r57H/56RKbftzy7W7F1RvWYyMAGG59IPv2kv3HDcByc4iIb0/ajDmWb8VvXnPseKSisYN54tT01R7Z+oc2mOtvvHrBJf2m2WiEf9OtycGlUpeOY12azWeNbl7+2v7273jrNyd1jo25zUYjOjaaJ1vGmrP2H+OMRvg2mL/kNFz+yrb+182Tv0b42Gyz5UsVPx8JB8uutDmOt/nS67Yzzrd/KVxWc7013ffbTJwuHbOKqdsnZ9cbjdbbMzW3/i7oYrFVOmFqxgj/kxhnKEBJgWuPVfc0mB/KXddosnufd771RfOJi9dsx+rbPquV5P/TobJ0uHgAANBksv8zHgDUG8yT3A5fbbfNt94cG0YhQbpw0O58u4aavwjbd+r/bOpo6hwPABjtcwjXSj+zGXOl8nzEXim0HW+8nCSEsO9ToJusWLECixYtQmVlJe677z68/fbbGDZsmOL6eXl5yMrKwokTJxATE4PZs2cjIyPD7u3V1tYiLCwM165dQ2io677JUtPU1IQdO3ZgzJgx8PMzTySKd61FdOECRKF15n8J4biYMh/94joD22cBt38TFRoDjF4I9B6nuJ3iXWsRV/gKIvCNbZ5pU1TT9Sh8ufWBarelA4CYwgWIVCrnzjmtv6lpU86dxyvx/N+K0djcGmLRYYGY/0hvjDYcArZkAC3fKt6WdqfpB5i7+Riu3nYpklW6j2cCN67YpCv++qpyWVXqv/N4JRZ8XGJ1S83wjv5446dJ5u397wuWH/+2raOaf21+F8OPzoa/1Dog2FMelGwD/vlc6zeAbeqoFDeAcltdik21qWPLPo2s2I1uhfNxF646lGe/tCko3rVWcblaWtV81eIKUFym2v4qeepNh97jsO+f7+F7h3+PGOmKTVoAiC18FV1hu0y1/VXsPF6JeVuOW10zf3s7di/8H4Sj9eyX022RNsUcjyr7LqrgVUTL1F8u5iJDA7Bg3H0YnaQ8gfp4wyqkls5DgNR6kHW2Hqp11Gjj4l1rFesIQHHs1Bpz9bSVWj8ebTikWg9VJduAzVOtb418e5/7+PnWKwscyVdB8a61uLvgRYRK9TZ1BDTiUef22n0c02j/+MJ56Iw6m3Tu2p5W/eMLX0ZnmTi+FJuKl7cet7qLq1XMbZvReskdYHUcVxqrRksHgY9+CQiTbLpXt5VYncGwJ8a1jv/t3cY7j1cqfo6JrNjdrmUBzDHQu+AFBEit5bk93+6FryDcwc+OO49X4ncffWmZWLet4/cKX0QIbPu41pjrCY7MDTw6cdq4cSOeeuoprFixAkOGDMGf/vQnvPvuuygpKUH37ra30S4rK0NSUhKmTp2KZ555Bp9//jmeffZZ/O1vf8OkSZPs2qY3TJyKd61F34LnAQC3X8HWMlGXJKsbdd9y651HP5ANLK08jw5eKtsBNMsC8/kVR8tZnPJHTNwTYXNuRgKQZjiIlf5/hCSzVACY1jgTO00DHUxnPmOkVFal+u88Xolp6w87XE4Aim0BtO5XCdaXIGuVByXbgL+nw/aslnYd1dpqWlMmdsns01TDQaz0exvQkee/o5/AoMoPdaXVF1dKQ5Ud+0YhT73pAODsPb9C/H/eA3TUUbH9VajFqjPtqLbs3L2/RsKpNdATj0oxBwArn+wvO3nS6je6Y0ptmZNt3JJH22VaY66eOirtU2fGKrUxR63PaearwJn66+k3Wsc4d41j7mh/Z7anVL+W+iuVR0/M6T+Ou+f4395t7ImxWq1v2BNzUFjmTB0Vt6fjM6673TETp0GDBqF///5YuXKl5b1evXphwoQJyM7Otll/zpw52LZtG0pLSy3vZWRk4OjRoygsLLRrm56eOBkkCTW/vwd3ictWwd9CCACyQQXzgtAYIPMYYGg9ld1sNKrmaRJAtRSOu14+BR9fX7vTiduC3JFyCki4hC4YfPOPMLW5GtQAE/IDnkeUdEX2OlETgCoRjqEN1mm10olb/8iVVbH+JoGhCz+TfXib1vaU2gLQ3x4wNQNvJ1l/C2NnHdXayiSAKqjsU1zR1f4mSDBAOFwevXGlRnPfKMaq/nQCEiTheP0V21+FXbGqsx3VlglJggTh8L5TijnAvD+jwgKRP+dBq98+Oj0e6V3Wjm3sTB01+7GOsUprzFGnkq8CZ+vvcL+xY3vuGMfcdsx1w/bU6q835vQex91x/G/3NvbAWK3WN9zR55yuo4OfcduDI3MDj/3GqbGxEUVFRUhNTbV6PzU1FQUFBbJpCgsLbdZPS0vDF198gaYm+R8CNjQ0oLa21uoFmCcz7flq2WZJ4Q5EQj6AAaWZeAsB1FbAeHafVd5aeRokIAqXUVK4w6F0kiTfmbTKKUEgCpcx0HDSZtlAw0nEKB7gzQEZI9mm1UrX9psNqzwV6l94ulr+idd2bE+pLZxpD+PZfaofYNTqqNZWBkljn+psfx9J/kBkT1o9caVGc9+4IZ3SgdiS1sH2V3vZFatuaAuDwqQJ0O5zcjEHmD/kVF67icLT1a4dj1w+jrm+jZ2po2Y/VqiH2lilNeaoU85X6eVs/R3tN/Zszx3jmNuOuW7Ynlr99cac3uO4O47/7d3Gnhir1fqGO/qc03WUXwQ9Y4qrP6fbw7FbC7lQTU0NmpubERlpfReayMhIVFXJPxCuqqpKdn2j0YiamhpER9te+pGdnY0FCxbYvL97924EBTl4u1Yn5ebmorH8AO53Mp8j+3eh4kTrtcj25nmyuBBnr7SeYHRFWdR0ve16WbX37Elrbzo1betfVCMBkP9Ww97ttW0LQH97xF4pxAC7tqqPO/Yp6de2/dW4IlY9Qa1su/f/G5dL22888gR3jLl6+7HcWOWKMUcuXyWuqL8j/cbTMdXex1x3bU9vzLV3Ok9wx+cKV5UFcE+fc3cdHRlTXKW+vl57pVs8NnFq0fZW00II1WedyK0v936LuXPnIisry/J3bW0t4uLikJqa2q6X6uXm5mLUqFE4UyQBn65wKr8HhqWhb4+hlr9PHrAvz8R+KUj84U8cTqdXNTrZ9Z49ae1Np6Zt/cPLruCDr+SfFWPv9tq2BaC/PaTyUKB8pUoK57hjn5J+bdtfjSti1RPUypY6bBAG9Wx9SLS7xyNPcMeYq7cfy41Vrhhz5PJV4or6O9JvPB1T7X3Mddf29MZce6fzBHd8rnBVWQD39Dl319GRMcVVWq5Gs4fHLtWLiIiAj4+Pzdml6upqm7NKLaKiomTX9/X1RXi4/H3nAwICEBoaavUCAD8/v3Z9tWyzd8oYXEK45UdybQmhdrNrCQiNhW/CcKu8tfJsuU65d8oYh9IJ0Xr9qyPlFJBQhXAcMiXaLDtoSsRF0QVKT2cxAbgownGwTVqtdALKZVWqf8r3uiI6LFD2tLHW9pTawpn28E0YfuvhuvJfAqjVUa2tTEJjn+rMs1kY9MeOrvhXprlv3JCuGfrqr9T+ai+7YtXFbWES5joqXayn1efkYg4wR3d0WCBSvtfVteORy8cx17exM3XU7McK9VAbq7TGHHXK+Sq9nK2/o/3GnrHYHeOY2465Lt6eVv31xpze47i7jv/t2caeGquV+oY7+pzTdZRfBD1jiqs/p9vDYxMnf39/JCcnIzc31+r93NxcDB48WDZNSkqKzfq7d+/GgAEDHKq0J/n4+lpu/9g2sExWAdU2JG/9PfpNmx/NaeUJAJUp821+NGhvWRwtp3RreyYYbJYKGPBaU/qtteTSSnit6SmINqGpla5tfdv+LVt/g4T5j/SWrYVd25NpC0B/e8Dg03r7XwfrqNZWALBAYZ8uaErXnefB6Md0pdUbV/L/t/5bb56Ox7iE8nue1kzrUPur0IpVve2oVc7ye56+tT3H+5xczLWkmv9Ib5uHYrtiPHLtOOb6NnamjoByP9Y7Vtk75jicrwJn6+9wv7FjLHbHOKZUVnfFuN7tAer1B/TFnN7juLuO/+3axh4aq5X6hjv6nCvq6KoxxRM8+gDcrKwsvPvuu1izZg1KS0sxa9YsnD9/3vJcprlz5yI9Pd2yfkZGBsrLy5GVlYXS0lKsWbMG7733Hn772996qgq69EubgqODl+L/JOuzZNVSOI4OXgrp0XVAaJvfa4XGqN6mUStPpdtUaqU7orOc/dKmYOWT/REVFmi1OCosEBMez4D06AeyaaVHP8CExzN0pFunWlal+o9OitZVTq1bZuptD/QeZ85bRx3Vlv1UYZ/+9PEM3e2fkrFCd1p9cbXO/NKxb5Ty1JsOj36AhMeX6K6/nufRqMWqM+2otizh8SW641Ep5pRuRQ44Nx65Pt7c08bO1FFpnzozVqmNOWp9Tu9tg52pv55+o7U9d41j7mh/d2xPq/56Yk7/cdw9x//2bmNPjNVqfcMdfc6ZOur5jOtNvOIBuDk5OaisrERSUhLeeustDB8+HADwy1/+EufOncPevXst6+fl5WHWrFmWB+DOmTPnjnwALmC+TeTJf+/CjasV6NA5FomD0lpn9qZmoLzA/PT34Eigx2C7ZuGqeepM50w5m00CB8uuoLruJrqGBGJgzy6t3zSrpNWdTm/9dW7Pmf2qytQM49l9OLJ/Fx4Ylma+pMaOOqouU6mj7vZ3pjx640pv+7shnbP7Tg+tdiwp3IGTxYVI7JeC3iljnG8LJ/adar9Sq6MbYsrb2tgd/diZsUptzHEqXxfX3x3bc6Y87d7+btie5jY1Yk7xWOVlx/923+duOOY60ze8qY6q440H3DHPcfIEb5o4Ealh3JAejBvSi7FDejBuSA9vips74jlOREREREREdwpOnIiIiIiIiDRw4kRERERERKSBEyciIiIiIiINnDgRERERERFp4MSJiIiIiIhIAydOREREREREGjhxIiIiIiIi0sCJExERERERkQZOnIiIiIiIiDRw4kRERERERKSBEyciIiIiIiINnDgRERERERFp4MSJiIiIiIhIAydOREREREREGjhxIiIiIiIi0sCJExERERERkQZOnIiIiIiIiDRw4kRERERERKSBEyciIiIiIiINvp4uQHsTQgAAamtr222bTU1NqK+vR21tLfz8/Nptu3RnY9yQHowb0ouxQ3owbkgPb4qbljlByxxBzXdu4lRXVwcAiIuL83BJiIiIiIjIG9TV1SEsLEx1HUnYM736L2IymXDx4kWEhIRAkqR22WZtbS3i4uLw9ddfIzQ0tF22SXc+xg3pwbgh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Zs6cKbp37y4CAwNFQkKCmDdvnmhoaLCsw7ihPXv2yH6mmTJlihDCvhi5ceOGmD59uujSpYvo0KGDePjhh8X58+c9UBt5khBCeOZcFxERERER0Z2Bv3EiIiIiIiLSwIkTERERERGRBk6ciIiIiIiINHDiREREREREpIETJyIiIiIiIg2cOBEREREREWngxImIiIiIiEgDJ05EREREREQaOHEiIiLSQZIkbN261dPFICKidsKJExERea3q6mo888wz6N69OwICAhAVFYW0tDQUFhZ6umhERPQd4+vpAhARESmZNGkSmpqasHbtWiQkJODSpUv49NNPceXKFU8XjYiIvmN4xomIiLzSN998g/z8fCxcuBAjR45Ejx49MHDgQMydOxdjx44FACxZsgT3338/OnbsiLi4ODz77LP49ttvLXm8//776NSpE7Zv3457770XQUFB+NnPfobr169j7dq1iI+PR+fOnTFjxgw0Nzdb0sXHx+P111/H448/juDgYMTExGDZsmWq5a2oqMAvfvELdO7cGeHh4Rg/fjzOnTvnln1DRETtjxMnIiLySsHBwQgODsbWrVvR0NAgu47BYMDSpUtx/PhxrF27Fp999hlmz55ttU59fT2WLl2KDRs2YOfOndi7dy8mTpyIHTt2YMeOHVi3bh1Wr16Njz76yCrdokWL0KdPHxw+fBhz587FrFmzkJubK1uO+vp6jBw5EsHBwdi3bx/y8/MRHByM0aNHo7Gx0TU7hIiIPEoSQghPF4KIiEjOP/7xD0ydOhU3btxA//79MWLECEyePBl9+vSRXX/Tpk2YNm0aampqAJjPOD399NM4ffo07r77bgBARkYG1q1bh0uXLiE4OBgAMHr0aMTHx2PVqlUAzGecevXqhU8++cSS9+TJk1FbW4sdO3YAMN8cYsuWLZgwYQLWrFmDnJwclJaWQpIkAEBjYyM6deqErVu3IjU11T07iIiI2g3POBERkdeaNGkSLl68iG3btiEtLQ179+5F//798f777wMA9uzZg1GjRiE2NhYhISFIT0/H5cuXcf36dUseQUFBlkkTAERGRiI+Pt4yaWp5r7q62mrbKSkpNn+XlpbKlrOoqAinT59GSEiI5UxZly5dcPPmTZw5c8bZ3UBERF6AN4cgIiKvFhgYiFGjRmHUqFF45ZVX8Jvf/Abz58/HyJEjMWbMGGRkZOD1119Hly5dkJ+fj1//+tdoamqypPfz87PKT5Ik2fdMJpNmWVrOJrVlMpmQnJyMDz/80GbZXXfdZU81iYjIy3HiREREd5TevXtj69at+OKLL2A0GrF48WIYDOYLKP7+97+7bDsHDhyw+TsxMVF23f79+2Pjxo3o2rUrQkNDXVYGIiLyHrxUj4iIvNLly5fx4IMPYv369fjyyy9RVlaGTZs2IScnB+PHj8fdd98No9GIZcuW4ezZs1i3bp3lN0qu8PnnnyMnJwenTp3CO++8g02bNmHmzJmy6z7xxBOIiIjA+PHjsX//fpSVlSEvLw8zZ87EhQsXXFYmIiLyHJ5xIiIirxQcHIxBgwbhrbfewpkzZ9DU1IS4uDhMnToVL730Ejp06IAlS5Zg4cKFmDt3LoYPH47s7Gykp6e7ZPsvvPACioqKsGDBAoSEhGDx4sVIS0uTXTcoKAj79u3DnDlzMHHiRNTV1SE2NhYPPfQQz0AREf2X4F31iIiI2oiPj0dmZiYyMzM9XRQiIvISvFSPiIiIiIhIAydOREREREREGnipHhERERERkQaecSIiIiIiItLAiRMREREREZEGTpyIiIiIiIg0cOJERERERESkgRMnIiIiIiIiDZw4ERERERERaeDEiYiIiIiISAMnTkRERERERBr+H9TEj5Ck0DxtAAAAAElFTkSuQmCC",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(10, 8)) # Set the figure size\n",
"\n",
"plt.plot(range(1, sample_size + 1), bm25_mse_scores, marker='o', label=f'BM25')\n",
"# plt.plot(range(1, sample_size + 1), custom_mse_scores, label=f'Custom (TF-IDF)')\n",
"# plt.plot(range(1, sample_size + 1), custom_embedding_mse_scores, label=f'Custom Embedding')\n",
"plt.plot(range(1, sample_size + 1), custom_hybrid_mse_scores, marker='o', label=f'Custom Hybrid (TF_IDF + Embedding)')\n",
"\n",
"# Set titles and labels\n",
"plt.title(\"Details of Performance of Both Models\")\n",
"plt.xlabel(\"Sample\")\n",
"plt.ylabel(\"MSE\")\n",
"plt.grid(True)\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Qyo1S3o15q5r"
},
"source": [
"1. **Hybrid Model** (22.13% MSE):\\\n",
"The Hybrid model, combining the initial ranking of TF-IDF with re-ranking by embeddings, performs best, with an 26.45% MSE. This likely indicates that embeddings add value when used to refine results within a more relevant subset, offering a good balance between term-based and semantic similarity.\n",
"\n",
"2. **Embedding Model** (29.76% MSE):\\\n",
"This model has a much higher MSE. This could happen if embeddings aren’t fine-tuned on similar hotel review data, making the model potentially less aligned with the dataset’s vocabulary or context.\n",
"\n",
"3. **BM25 Model** (29.91% MSE):\\\n",
"BM25 achieves a slightly higher MSE, likely due to its inability to consistently capture the full semantic similarity, despite its strong ability to retrieve similar documents based on term frequency and document frequency.\n",
"\n",
"4. **Custom Model with TF-IDF** (31.34% MSE):\\\n",
"TF-IDF relies on term frequency but might miss some contextual relevance, especially in cases where semantic meaning is important which might explain its poor performance compared to the other models.\n",
"\n",
"It looks like the ***hybrid model*** is a strong candidate here, with room for further improvements to potentially outperform BM25 by an even wider margin."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "u8VwcdT0MS92"
},
"source": [
"### NDCG Scores for each models"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"executionInfo": {
"elapsed": 3248441,
"status": "ok",
"timestamp": 1730747890528,
"user": {
"displayName": "Joyce Lapilus",
"userId": "10669185642835107674"
},
"user_tz": -60
},
"id": "tUD61lbSWGvG",
"outputId": "16fdffbd-5d92-45a0-d62c-75289886c183"
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"NDCG Calculations: 100%|██████████| 100/100.0 [02:07<00:00, 1.28s/it]"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Average BM25 NDCG: 0.9933\n",
"Average Custom Model NDCG: 0.9933\n",
"Average Embedding Model NDCG: 0.9917\n",
"Average Hybrid Model NDCG: 0.9949\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"\n"
]
}
],
"source": [
"# Store NDCG scores for each model\n",
"bm25_ndcg_scores = []\n",
"custom_ndcg_scores = []\n",
"custom_embedding_ndcg_scores = []\n",
"custom_hybrid_ndcg_scores = []\n",
"\n",
"# Loop over a sample of query places in the dataset\n",
"for _, query_place in tqdm(samples.iterrows(), total=float(sample_size), desc=\"NDCG Calculations\"):\n",
" query_text = query_place['reviews'][:max_char] # Use the concatenated reviews for the place as the query\n",
" actual_ratings = query_place[\"ratings\"] # Actual ratings\n",
"\n",
" # Convert actual ratings to relevance scores and ensure it's a list\n",
" actual_relevance = [list(actual_ratings.values())]\n",
"\n",
" # Step 1: Retrieve the most similar place using BM25\n",
" bm25_recommendation = retrieve_bm25(query_text, k=1)\n",
" bm25_predicted_ratings = bm25_recommendation[\"ratings\"].iloc[0]\n",
" bm25_relevance = [list(bm25_predicted_ratings.values())]\n",
"\n",
" # Calculate NDCG for BM25\n",
" bm25_ndcg = ndcg_score(actual_relevance, bm25_relevance)\n",
" bm25_ndcg_scores.append(bm25_ndcg)\n",
"\n",
" # Step 2: Retrieve the most similar place using the Custom Model (TF-IDF)\n",
" custom_recommendation = retrieve_tfidf(query_text, k=1)\n",
" custom_predicted_ratings = custom_recommendation[\"ratings\"].iloc[0]\n",
" custom_relevance = [list(custom_predicted_ratings.values())]\n",
"\n",
" # Calculate NDCG for the Custom Model\n",
" custom_ndcg = ndcg_score(actual_relevance, custom_relevance)\n",
" custom_ndcg_scores.append(custom_ndcg)\n",
"\n",
" # Step 3: Retrieve the most similar place using the Embedding Model\n",
" custom_embedding_recommendation = retrieve_embeddings(query_text, k=1)\n",
" custom_embedding_predicted_ratings = custom_embedding_recommendation[\"ratings\"].iloc[0]\n",
" custom_embedding_relevance = [list(custom_embedding_predicted_ratings.values())]\n",
"\n",
" # Calculate NDCG for the Embedding Model\n",
" custom_embedding_ndcg = ndcg_score(actual_relevance, custom_embedding_relevance)\n",
" custom_embedding_ndcg_scores.append(custom_embedding_ndcg)\n",
"\n",
" # Step 4: Retrieve the most similar place using the Hybrid Model\n",
" custom_hybrid_recommendation = retrieve_hybrid(query_text, final_k=1)\n",
" custom_hybrid_predicted_ratings = custom_hybrid_recommendation[\"ratings\"].iloc[0]\n",
" custom_hybrid_relevance = [list(custom_hybrid_predicted_ratings.values())]\n",
"\n",
" # Calculate NDCG for the Hybrid Model\n",
" custom_hybrid_ndcg = ndcg_score(actual_relevance, custom_hybrid_relevance)\n",
" custom_hybrid_ndcg_scores.append(custom_hybrid_ndcg)\n",
"\n",
"# Compute the average NDCG across all queries for each model\n",
"avg_bm25_ndcg = np.mean(bm25_ndcg_scores)\n",
"avg_custom_ndcg = np.mean(custom_ndcg_scores)\n",
"avg_custom_embedding_ndcg = np.mean(custom_embedding_ndcg_scores)\n",
"avg_custom_hybrid_ndcg = np.mean(custom_hybrid_ndcg_scores)\n",
"\n",
"# Print average NDCG results\n",
"print(f\"Average BM25 NDCG: {avg_bm25_ndcg:.4f}\")\n",
"print(f\"Average Custom Model NDCG: {avg_custom_ndcg:.4f}\")\n",
"print(f\"Average Embedding Model NDCG: {avg_custom_embedding_ndcg:.4f}\")\n",
"print(f\"Average Hybrid Model NDCG: {avg_custom_hybrid_ndcg:.4f}\")"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 564
},
"executionInfo": {
"elapsed": 878,
"status": "ok",
"timestamp": 1730744057730,
"user": {
"displayName": "Joyce Lapilus",
"userId": "10669185642835107674"
},
"user_tz": -60
},
"id": "swTFFpqlMN54",
"outputId": "d1ec139a-fa6e-499a-bd1d-5ee41ca3553e"
},
"outputs": [
{
"data": {
"image/png": "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+vVmx44dxhhjVq5caTw8PMxjjz1m5s6da5YuXWrat2+f7Jt3x/+/UKFC5uWXXzY//PCD+eabb8zVq1fN0KFDjc1mMx06dDCLFy828+fPNxEREcbb29u5HWNcj8FRo0aZFStWmPfee8/YbDYzaNAgY4wxly9fNkuXLjWSTMeOHZ3P2969e1N9XlK7ArZ9+3bnc+EQFxdnAgMDTVBQkJk4caJZsWKFGTJkiPH09DTt27d31ktMTDSRkZEme/bspkePHmbJkiXmu+++M//5z3/M7NmzjTHXr0bXqVPHZM+e3fTv398sX77cjBo1ynkF+8b/dVBQkClcuLApU6aMmT17tlmyZImpWrWqcXd3N++9956pUaOGmT9/vlmwYIHzPeDSpUspPne38/pN6347nsvg4GBTt25ds3DhQrNw4UJTtmxZkzt3bper8o5jokmTJmbRokXm888/N8WKFXNu50bt27c3U6dONVFRUSYqKsoMGTLE2O125//dGGO2bNliihYtaipUqOD8v2/ZssWlXTcek6tWrTLu7u6mUqVKZu7cuWbhwoWmdu3axmazmTlz5iRrZ9GiRc2bb75pli1bZqZMmWJy585tIiMjUz2uHBzvRSdPnjSPPfaYef75553zevXqZYKDg01SUlKyK2BpeZ8w5vqV5PDwcOPr62s+/fRTs2zZMvPWW2+ZIkWKJNvntL5eU7oCFhYWZooVK2Y+++wzs3r1ajNv3jzzzjvvcJUM9xQCGHAPuzGAJSQkmKJFi5rKlSs7u0PdTgAbP368SxetunXrGkm3PGF2OH78uJFkWrZsmWze1atXTWJionP6ty5bXl5eplq1av+6TWOMOXPmjLHb7cnCRWxsrPH09DStWrVylrVr185Icum+mJiYaPLmzWskOU90jDHm9OnTxs3NzXTv3t1Z5njOmzVr5rKtX375xUgy77//foptTEpKMomJiebQoUNGkvn222+d8xwnNu+9916y5W4OYN98842RlKy76Y0mTJhgJJmvvvrKpXz48OFGklm+fLmzTJLJnz+/iY+Pd5YdP37cZMuWzQwbNizVbRjz/0Fo48aNLuWvvvqqsdlsZteuXc6yfzvubpTeY9SxHzd21UstjDhOyL7++muX8pIlS5oKFSqYxMREl/KGDRuagIAAZ3crx///5u58sbGxJnv27C4hxxhjzp8/bwoUKOBysuo4Bm/+/9SvX9+EhYU5H99uF8Thw4ebxMREc/nyZbNt2zYTERFhAgICzIEDB5x1X3nlFZMzZ05z6NAhl3WMGjXKSHIGxlmzZhlJZvLkyalu1xEUR4wY4VI+d+5cI8lMmjTJWRYUFGTsdrs5cuSIs2zbtm1GkgkICHDpertw4UIjyXz33XfOsjt9/aZ1vx3PZdmyZc3Vq1ed9aKjo40kZ/i8du2aKViwoKlYsaLLe9rBgweNu7v7LbsgXrt2zSQmJprBgwcbPz8/l+VT64KYUgCrVq2ayZcvnzl//ryz7OrVq6ZMmTKmcOHCzvU6jt3XXnvNZZ0jRowwkkxcXFyqbTXGNYBNnz7deHp6mtOnT5urV6+agIAAM3DgQGOMSRbA0vo+4Xhd3/jeaIwxnTt3TrbPaX293hzATp06ZSSZMWPG3HJfgbuNLojAfcLDw0Pvv/++Nm3alKZuGKkxN3SFyUiVKlWSu7u7c/roo48ybN3r16/XP//8k6x7VmBgoJ566in9+OOPLuU2m03169d3Ps6ePbuKFSumgIAAVahQwVmeJ08e5cuXL8URJl988UWXx9WrV1dQUJB++uknZ5lj0JLAwEBlz55d7u7uCgoKkqRkXSMlqXnz5v+6r+XLl5eHh4defvllzZw5M8XRyFauXClvb289++yzLuWO5+fm5yMyMlK5cuVyPs6fP3+q+33zdkqVKqUqVaok244xRitXrvzX/bkdGX2M7t27V3/++afzf3r16lXnVL9+fcXFxWnXrl0uy9z8v1q2bJmuXr2qtm3buizv5eWlJ554ItkobDabTY0aNXIpe/jhh//1OU+LXr16yd3dXV5eXipfvry2b9+uRYsWuYzIt3jxYkVGRqpgwYIu7a1Xr54kafXq1ZKkH374QV5eXql2LZPk/D/f/Pp77rnn5O3tnex4K1++vAoVKuR8HB4eLun6QCOOrsw3lt/8nNzJ6zet++3QoEEDubm5OR8//PDDLm3atWuXjh07platWrl0FQ4KClL16tVTfK5q1qwpX19fubm5yd3dXe+9955Onz6tEydOJKv/by5evKiNGzfq2WefVc6cOZ3lbm5uatOmjY4cOZLs2G3cuLHL45v3KS2ee+45eXh46IsvvtCSJUt0/PjxVLvHpvV94qefflKuXLmSta9Vq1Yuj2/n9eqQJ08ehYaGauTIkRo9erS2bt2arBskcC8ggAH3kZYtW6pixYrq27evEhMTb2sdjg9hx2+0ihQpIkk6cODAvy7r7+8vu92e4gf5l19+qV9//VXfffddmtpRpEiRNG1Tkk6fPi1JKY6sV7BgQed8hxw5csjLy8ulzMPDQ3ny5Em2vIeHh8tvjRwKFCiQYpljW0lJSapdu7bmz5+vd999Vz/++KOio6Odvx/5559/ki3/byMDSlJoaKhWrFihfPny6fXXX1doaKhCQ0P1ySefOOucPn1aBQoUSPbbsXz58il79uzJng8/P79k2/H09EyxjTc6ffp0qs+5Y35muPkYvVOO30b16NHD5UsCd3d3vfbaa5KU7Hd7N++3Yx2PPPJIsnXMnTs32fIpHYOenp4pHmvp1bVrV/36669au3atRo0apcTERDVp0sTl//HXX39p0aJFydpaunRpl/09efKkChYsqGzZUj8dOH36tLJnz+78zZqDzWZzeU043Pw6c/xWNLXym5+TO3n9pnW/HW5+bXh6ekr6/9evY99Sez+4UXR0tGrXri1Jmjx5sn755Rf9+uuv6tu3r8s60+PMmTMyxqTrdfhv+5QW3t7eatGihaZNm6apU6eqZs2azi+XbpbW94nTp08rf/78yerd/DzezuvVwWaz6ccff1SdOnU0YsQIVaxYUXnz5tVbb72l8+fPp3HvgczHMPTAfcRms2n48OGqVauWJk2alO7ljTFatGiRvL29nT/cr1OnjiZNmqSFCxeqd+/et1zezc1NTz31lJYvX664uDiXD91SpUpJUpoHX6hTp44+/fRTbdiwQdWqVbtlXccJRVxcXLJ5x44dk7+/f5q2mR4p/TD8+PHjKlasmCRp+/bt+u233zRjxgy1a9fOWWfv3r2prjOt9/t67LHH9Nhjj+natWvatGmTPv30U3Xr1k358+dXy5Yt5efnp40bN8oY47LOEydO6OrVqxn2fPj5+aX6nEvKlOc9pWP0Tjna2adPn2QDuziEhYW5PL75f+VYxzfffJPqiahVChcu7HxuatSooQIFCqh169YaMGCA/ve//0m63t6HH35YQ4cOTXEdjpPjvHnzau3atUpKSko1hPn5+enq1as6efKkSwgzxuj48eN65JFHMnL37kha9zutHO89qb0f3GjOnDlyd3fX4sWLXQKk4/50tyN37tzKli2b5a9D6fpgHFOmTNHvv/+uL774ItV6aX2f8PPzU3R0dLJ6Nz+Pt/N6vVFQUJCmTp0q6frgIV999ZUGDhyoK1euaMKECakuB1iJK2DAfaZmzZqqVauWBg8erAsXLqRr2UGDBmnnzp3q2rWr8wShSZMmKlu2rIYNG6bt27enuNyyZcucI/D16dNH165dU5cuXW77Kpx0/b5R3t7eeu2113Tu3Llk840xWrBggSQpIiJCdrtdn3/+uUudI0eOaOXKlXr66advux2pufmEY926dTp06JBzVD3HCbrj22WHiRMnZlgb3NzcVLVqVY0dO1aSnDfEfvrpp3XhwoVkJ3aOkdky6vl4+umntXPnzmQ34p41a5ZsNpsiIyMzZDs3SukYvVNhYWEqXry4fvvtN1WuXDnF6cYumimpU6eOsmfPrn379qW6jvS6nSsTKXnxxRf15JNPavLkyc6rhw0bNtT27dsVGhqaYlsdQaRevXq6fPnyLW+C6ziebn79zZs3TxcvXsyU19/tSut+p1VYWJgCAgI0e/Zsl66xhw4dchklUrr+npA9e3aXLo3//PNPivdvTMsVaOn6laiqVatq/vz5LvWTkpL0+eefq3Dhwpl2n7uIiAh16NBBzZo1U7NmzVKtl9b3icjISJ0/fz5ZL4kvv/zS5XFGvF4dSpQooX79+qls2bLJ2gfcTVwBA+5Dw4cPV6VKlXTixAln15obnT171tkV7uLFi86b3K5Zs0bPP/+88+av0vWT/AULFqh27dqKiIjQq6++qsjISHl7e+vQoUP65ptvtGjRIp05c0bS9W/cx44dqzfffFMVK1bUyy+/rNKlSzu/pZ03b54kycfH55b7EBISojlz5qhFixYqX76880bMkrRz505NmzZNxhg1a9ZMDz30kPr376///Oc/atu2rV544QWdPn1agwYNkpeXlwYMGJAhz+uNNm3apE6dOum5557T4cOH1bdvXxUqVMjZBaZkyZIKDQ1V7969ZYxRnjx5tGjRIpehm2/HhAkTtHLlSjVo0EBFihTR5cuXNW3aNEnXw7cktW3bVmPHjlW7du108OBBlS1bVmvXrtUHH3yg+vXrO+vdqbfffluzZs1SgwYNNHjwYAUFBen777/XuHHj9Oqrr97RiV96jtGMMHHiRNWrV0916tRR+/btVahQIf3999+KiYnRli1b9PXXX99y+eDgYA0ePFh9+/bV/v37VbduXeXOnVt//fWXoqOj5e3tne4258qVS0FBQfr222/19NNPK0+ePPL393f5LVdaDR8+XFWrVtWQIUM0ZcoUDR48WFFRUapevbreeusthYWF6fLlyzp48KCWLFmiCRMmqHDhwnrhhRc0ffp0denSRbt27VJkZKSSkpK0ceNGhYeHq2XLlqpVq5bq1KmjXr16KT4+XjVq1NDvv/+uAQMGqEKFCmrTpk2625tZ0rrfaZUtWzYNGTJEnTp1UrNmzdS5c2edPXtWAwcOTNZ1rkGDBho9erRatWqll19+WadPn9aoUaOSfUkjSWXLltWcOXM0d+5cFS1aVF5eXipbtmyKbRg2bJhq1aqlyMhI9ejRQx4eHho3bpy2b9+u2bNnp/nK+u1wXEm6lbS+T7Rt21Yff/yx2rZtq6FDh6p48eJasmSJli1blmydt/t6/f333/XGG2/oueeeU/HixeXh4aGVK1fq999//9ceHoCl7srQHwDS5MZREG/WqlUrIynFURAlGUnGZrOZnDlzmrCwMNOmTRuzbNmyVLd19uxZM2TIEFOxYkWTM2dO4+7ubooUKWJat25tfvnll2T1t23bZl566SUTEhJiPD09jZeXlylWrJhp27aty1D5/2bfvn3mtddeM8WKFTOenp7GbrebUqVKme7du7uM6maMMVOmTDEPP/yw8fDwML6+vqZJkyYuw38bc30UNW9v72TbSWnESGOSj8jneM6XL19u2rRpYx566CHnCIx79uxxWXbnzp2mVq1aJleuXCZ37tzmueeeM7GxsclGtrtxdLGb3TwK4vr1602zZs1MUFCQ8fT0NH5+fuaJJ55wGSnOmOsjwHXp0sUEBASY7Nmzm6CgINOnT59ko1lKMq+//nqK+52Wm6keOnTItGrVyvj5+Rl3d3cTFhZmRo4cmewmrekdBTG9x+jNz2l6R0E0xpjffvvNPP/88yZfvnzG3d3dFChQwDz11FNmwoQJzjq3es0Zc33kvsjISOPj42M8PT1NUFCQefbZZ82KFSucdVI7Bm/+XxtjzIoVK0yFChWMp6enkXTL/0lq++zw3HPPmezZszuHsj958qR56623TEhIiHF3dzd58uQxlSpVMn379jUXLlxwLvfPP/+Y9957zxQvXtx4eHgYPz8/89RTT5l169a51OnVq5cJCgoy7u7uJiAgwLz66qsut2UwJvXjIKXj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1mnXrp3mzJmjf/75x1k2bdq0ZO/HdevW1fTp01W7dm0VLVpUjRs3Vo8ePVyONYeHHnrIud0CBQrIbrdn3k4iw9143Dim3LlzO+fbbDZNnDhRDRs2VI4cORQeHq7169dr7969evLJJ+Xt7a2IiAjt27cv2bonTpyowMBA5ciRQ88991yyHjzTp09XeHi4vLy8VLJkSY0bN85lfnR0tCpUqCAvLy9Vrlw5xfezJUuWqESJErLb7YqMjEz2pdrNvQ4c5zefffaZgoOD5evrq5YtW7qcN50/f14vvviivL29FRAQoI8//jhNvR2yZ8+uVq1auZzzHDlyRKtWrVKrVq2S1R8/frxCQ0Pl4eGhsLAwffbZZy7z9+zZo8cff1xeXl4qVaqUoqKikq3j6NGjatGihXLnzi0/Pz81adLknvxi0SoEMGQqb29vtWzZMtk3mdOnT9ezzz6rXLlyOct69uypd955R1u3blX16tXVuHFjnT592mW5d999V8OGDVNMTIwefvjhZNv76KOPNG3aNE2dOlVr167V33//neyqVmratGmjNWvWOG/+PW/ePAUHB6tixYou9TZv3qznn39eLVu21B9//KGBAweqf//+mjFjhrNO+/btdfDgQa1cuVLffPONxo0bpxMnTjjnG2PUoEEDHT9+XEuWLNHmzZtVsWJFPf300/r777/T1N4HwWuvvSabzabo6Gg9++yzKlGihEqXLq3u3bs7uyeldAXr7NmzLt2Uzpw5oxdffFF58+aV3W5X8eLFncdkSEiIJKlChQouV2mSkpI0ePBgFS5cWJ6enipfvryWLl3q3IZju1999ZUee+wx2e12PfLII9q9e7d+/fVXVa5cWTlz5lTdunVdTixT065du2SvkxkzZqT4BcDq1atVpUoVeXp6KiAgQL1799bVq1ed8y9evKi2bdsqZ86cCggISPYFgSRduXJF7777rgoVKiRvb29VrVrV5UuPtJgzZ44aN27sfJw3b17niVGePHkkSfny5UtWJl2/4nzjiVTevHnTtW3p/0+og4ODVbt2bX3zzTd68cUX9cYbb+jMmTMudW9sR4ECBVyupDRu3FjR0dHav39/utuAO3PhwgV98cUXKlasmEtvhkqVKikkJMQZ5A8fPqyff/5Zbdq0+dd1njt3zuVYc3jjjTfk7++vRx55RBMmTKDbaRY0ZMgQtW3bVtu2bVPJkiXVqlUrvfLKK+rTp482bdok6fpxcKO9e/fqq6++0qJFi7R06VJt27bN5Qu+yZMnq2/fvho6dKhiYmL0wQcfqH///po5c6ak6++3DRs2VFhYmDZv3qyBAweqR48eLts4fPiwnnnmGdWvX1/btm1Tp06dXL4ESs2+ffu0cOFCLV68WIsXL9bq1av14YcfOud3795dv/zyi7777jtFRUVpzZo12rJlS5qeq44dO2ru3Lm6dOmSpOufN3Xr1lX+/Pld6i1YsEBdu3bVO++8o+3bt+uVV17RSy+9pJ9++knS9c/KZ555Rm5ubtqwYYMmTJigXr16uazj0qVLioyMVM6cOfXzzz9r7dq1zs/Hm7sLPzAMcJvatWtn3NzcjLe3t8vk5eVlJJkzZ84YY4zZuHGjcXNzM0ePHjXGGHPy5Enj7u5uVq1aZYwx5sCBA0aS+fDDD53rTkxMNIULFzbDhw83xhjz008/GUlm4cKFLm0YMGCAKVeunPNxQEBAiutp0qRJqvvhWPeZM2dM06ZNzaBBg4wxxkRGRppPPvnELFiwwNz4UmnVqpWpVauWyzp69uxpSpUqZYwxZteuXUaS2bBhg3N+TEyMkWQ+/vhjY4wxP/74o/Hx8TGXL192WU9oaKiZOHFiivv2oDl9+rSx2Wzmgw8+uGU9x/GzdetWZ9mZM2eMJPPTTz8ZY4x5/fXXTfny5c2vv/5qDhw4YKKiosx3331njDEmOjraSDIrVqwwcXFx5vTp08YYY0aPHm18fHzM7NmzzZ9//mneffdd4+7ubnbv3u2y3ZIlS5qlS5eanTt3mmrVqpmKFSuaJ5980qxdu9Zs2bLFFCtWzHTp0uVf2x8dHW38/f3NmjVrjDHGrFmzxuTNm9fZvgMHDhhjjDly5IjJkSOHee2110xMTIxZsGCB8ff3NwMGDHCu89VXXzWFCxc2y5cvN7///rtp2LChyZkzp+natauzTqtWrUz16tXNzz//bPbu3WtGjhxpPD09nfs3ffp04+vre8vn/qGHHjJz5sxJcd6Nr6ubBQUFOV8LaSXJLFiwINXHDlu3bjWSzNy5c/+1HTfKly+fmTFjRrrahPS7+XNDkgkICDCbN2921nH8b8eMGWMiIyONMcYMGjTINGvWLNlr+2Z79+41Pj4+ZvLkyS7lQ4YMMevWrTNbt241o0aNMjly5DBDhgzJtP1ExkrtfGPw4MHOOpJMv379nI/Xr19vJJmpU6c6y2bPnm28vLycjwcMGGDc3NzM4cOHnWU//PCDyZYtm4mLizPGGBMYGGi+/PJLl/YMGTLEREREGGOMmThxosmTJ4+5ePGic/748eNdPpf69OljwsPDTVJSkrNOr169XN6bbn7PHTBggMmRI4eJj493lvXs2dNUrVrVGGNMfHy8cXd3N19//bVz/tmzZ02OHDlc3utvduN2ypcvb2bOnGmSkpJMaGio+fbbb83HH39sgoKCnPWrV69uOnfu7LKO5557ztSvX98YY8yyZctSfA5vfI+eOnWqCQsLc9n/hIQEY7fbzbJly4wx1//HtzpXy2q4AoY7EhkZqW3btrlMU6ZMcalTpUoVlS5d2tkt6LPPPlORIkX0+OOPu9SLiIhw/p09e3ZVrlxZMTExLnUqV66calvOnTunuLi4FNeTVh06dNCMGTO0f/9+rV+/Xi+++GKyOjExMapRo4ZLWY0aNbRnzx5du3ZNMTExybZbsmRJl64Fmzdv1oULF+Tn56ecOXM6pwMHDqTYPeJBtHfvXhljVLJkyTteV2xsrCpUqKDKlSsrODhYNWvWVKNGjSTJeeXFz8/P5SrNqFGj1KtXL7Vs2VJhYWEaPny4ypcvn2wkyx49eqhOnToKDw9X165dtWXLFvXv3181atRQhQoV1LFjR+c3hbfi7u6u1q1bO7uETJs2Ta1bt5a7u7tLvXHjxikwMFD/+9//VLJkSTVt2lSDBg3SRx99pKSkJF24cEFTp07VqFGjVKtWLZUtW1YzZ87UtWvXnOvYt2+fZs+era+//lqPPfaYQkND1aNHDz366KPJrsKl5uzZszp79qwKFiyYpvo369Wrl8ux/9///ve21nMzx/Fyc9eWwoULu2zv5qvrhQoVeqC7w1jpxs+NjRs3qnbt2qpXr54OHTrkUq9169Zav3699u/frxkzZqhDhw63XO+xY8dUt25dPffcc+rUqZPLvH79+ikiIkLly5fXO++8o8GDB2vkyJEZvm/IPCmdb9zcFf3GnjGOKzlly5Z1Kbt8+bLi4+OdZUWKFHH5DWpERISSkpK0a9cunTx5UocPH1bHjh1d3j/ef/9952d1TEyMypUrpxw5cris40YxMTGqVq2ay4BeN9dJSXBwsEtPoYCAAGdvmv379ysxMVFVqlRxzvf19VVYWNi/rtehQ4cOmj59ulavXq0LFy6ofv36yeqkds7jOD+LiYlJ8Tm80ebNm7V3717lypXL+RzmyZNHly9ffmDPebLf7Qbg/ubt7a1ixYq5lB05ciRZvU6dOul///ufevfurenTp+ull15K08iCN9fx9va+swb/i/r16+uVV15Rx44d1ahRoxQH+DDGJGuXueF3Zo6/b7V/SUlJCggISLHLV1YahvZOpOV5TKtXX31VzZs315YtW1S7dm01bdpU1atXT7V+fHy8jh07luKHzs2/00vLB/6N3U9vpWPHjoqIiNAHH3ygr7/+WuvXr3fpWihd/7CLiIhweV5q1KihCxcu6MiRIzpz5oyuXLni8gGYJ08elw/lLVu2yBijEiVKuKzbMcpcWjh+m+Pl5ZWm+jfr2bOn2rdv73zs7+8vSerSpYs+//xzZ/mFCxfStd7Ujps1a9a4nMjc+NsR6foP4B1dcZC5bv7cqFSpknx9fTV58mS9//77znI/Pz81bNhQHTt21OXLl1WvXj2X37/c6NixY4qMjFRERIQmTZr0r22oVq2a4uPj9ddffyXrcoV7U0rnGze78Qsrx3tASmW36n7qqGOz2Zz1Jk+erKpVq7rUc3Nzk6Q0/c48LXVScvMXcDe2KbX3uvRs68UXX9S7776rgQMHqm3btsqePeVYkNI2HGUpbe/m+klJSapUqVKKv4e/ne7nWQFXwGCJ1q1bKzY2Vv/973+1Y8eOFH/XcuOQw1evXtXmzZvTdfXD19dXAQEBKa4nrdzc3NSmTRutWrUq1W9bS5UqpbVr17qUrVu3TiVKlJCbm5vCw8N19epVZ39z6foAADf+qLdixYo6fvy4smfPrmLFirlMjhPRB13x4sVls9mSXQW9WbZs19/GbvwQSExMdKnj+Ha9W7duOnbsmJ5++ulkffRTcqsPHYe0fOCn9bcmZcqUUcmSJfXCCy8oPDxcZcqUSVbnVl8A2Gy2NH34JiUlyc3NTZs3b3b5NjkmJkaffPJJmtrqGA785t9apZW/v7/Lce/44mHw4MEubUovx/Hi+G2fQ0hIiMv2HMeNw99///3AngjcbTabTdmyZXMZcMOhQ4cOWrVqldq2bes84b3Z0aNH9eSTT6pixYqaPn16sv9tSrZu3SovLy++8IJiY2N17Ngx5+P169crW7ZsKlGihPLnz69ChQpp//79yT6rHe8xpUqV0m+//eZy/N58C4VSpUolK7v5cXqFhobK3d1d0dHRzrL4+Hjt2bMnzevIkyePGjdurNWrV6d6zhMeHp7iOY9jGPtSpUql+BzeqGLFitqzZ4/y5cuX7Hn09fVNc3uzEgIYLJE7d24988wz6tmzp2rXrp3ikNNjx47VggUL9Oeff+r111/XmTNn/rXLyc26du2qDz/80Lme1157Ld33IxsyZIhOnjypOnXqpDj/nXfe0Y8//qghQ4Zo9+7dmjlzpv73v/85T+jDwsJUt25dde7cWRs3btTmzZvVqVMnlxG3atasqYiICDVt2lTLli3TwYMHtW7dOvXr188luD3I8uTJozp16mjs2LG6ePFisvmO/6vjpDkuLs45L6UT97x586p9+/b6/PPPNWbMGOe35B4eHpLk0kXPx8dHBQsWvOWHTmZxnHDe6guAdevWuQStdevWKVeuXCpUqJCKFSsmd3d3lw/3M2fOuNxfpkKFCrp27ZpOnDiR7MOwQIECaWqnh4eHSpUqpZ07d97mnqbs5g/o9BozZox8fHxUs2bNNC/j6AZToUKFdG8P6ZeQkKDjx4/r+PHjiomJ0ZtvvqkLFy44uwXfyDGIzeDBg1Nc17Fjx/Tkk08qMDBQo0aN0smTJ53rdli0aJEmT56s7du3a9++fZoyZYr69u2rl19+WZ6enpm2n8hYNx43junUqVN3vF4vLy+1a9dOv/32m9asWaO33npLzz//vPO9cODAgRo2bJg++eQT7d69W3/88YemT5+u0aNHS5JatWqlbNmyqWPHjtq5c6eWLFmiUaNGuWyjS5cu2rdvn7p3765du3bpyy+/dBm463bkypVL7dq1U8+ePfXTTz9px44d6tChg7Jly5auniMzZszQqVOnUv3Cu2fPnpoxY4YmTJigPXv2aPTo0Zo/f77znKdmzZoKCwtT27Ztnc9h3759Xdbx4osvyt/fX02aNNGaNWt04MABrV69Wl27dk2x19SDgAAGy3Ts2FFXrlxJ9cTyww8/1PDhw1WuXDmtWbNG3377bbqvBr3zzjtq27at2rdvr4iICOXKlUvNmjVL1zo8PDzk7++f6htYxYoV9dVXX2nOnDkqU6aM3nvvPQ0ePNilO9X06dMVGBioJ554Qs8884xzuHkHm82mJUuW6PHHH1eHDh1UokQJtWzZUgcPHqQ7zA3GjRuna9euqUqVKpo3b5727NmjmJgY/fe//3V2sbPb7apWrZo+/PBD7dy5Uz///LPzHk8O7733nr799lvt3btXO3bs0OLFi51BKl++fLLb7Vq6dKn++usvnTt3TtL1D53hw4dr7ty52rVrl3r37q1t27apa9eumbrPnTt31smTJ5P9hsXhtdde0+HDh/Xmm2/qzz//1LfffqsBAwaoe/fuypYtm3LmzKmOHTuqZ8+e+vHHH7V9+3a1b9/e5apAiRIl9OKLL6pt27aaP3++Dhw4oF9//VXDhw/XkiVL0tzWOnXqJAupVjp79qyOHz+uQ4cOKSoqSs8++6y+/PJLjR8/Pl1XNjZs2CBPT880/SYDd27p0qUKCAhQQECAqlatql9//VVff/21cwTSG9lsNvn7+zu/KLnZ8uXLtXfvXq1cuVKFCxd2rjcgIMBZx93dXePGjVNERIQefvhhffLJJxo8eHCKo4Pi3nXjceOYHn300Tteb7FixZwjFNauXVtlypRxGWa+U6dOmjJlimbMmKGyZcvqiSee0IwZM5xXwHLmzKlFixZp586dqlChgvr27avhw4e7bKNIkSKaN2+eFi1apHLlymnChAn64IMP7rjto0ePVkREhBo2bKiaNWuqRo0azuHy08put9+y63nTpk31ySefaOTIkSpdurQmTpyo6dOnO1+v2bJl04IFC5SQkKAqVaqoU6dOGjp0qMs6cuTIoZ9//llFihTRM888o/DwcHXo0EH//POPfHx8bmvf73sWD/qBB9jnn39u/Pz8TEJCwt1uCu4jx44dM6+//roJCgoyHh4eplChQqZx48Yuo6A5RiC02+2mfPnyZvny5S4jpQ0ZMsSEh4cbu91u8uTJY5o0aWL279/vXH7y5MkmMDDQZMuWzTzxxBPGGGOuXbtmBg0aZAoVKmTc3d1NuXLlzA8//OBcJqXRF1Mace/fRhNMaT03cozq5xgF0RhjVq1aZR555BHj4eFhChQoYHr16mUSExOd88+fP29at25tcuTIYfLnz29GjBhhnnjiCZeRsa5cuWLee+89ExwcbNzd3U2BAgVMs2bNzO+//56mdhtzfXRPu91uzp49m2yeFaMgOiYvLy8TGhpq2rVr5zKa3r+1w+Hll182r7zySrraAwD3mgsXLhhfX18zZcqUu90U/AubMbf5y0AgjS5duqQDBw6oRYsWatKkSbJvRgDcv55//nlVqFBBffr0udtNuS0nT55UyZIltWnTpmS/GwOAe9nWrVv1559/qkqVKjp37pwGDx6sVatWae/evfye/B5HF0RkuhEjRqh8+fLKnz//fXuSBiBlI0eOdLmp8f3mwIEDGjduHOELwH1p1KhRKleunGrWrKmLFy9qzZo1hK/7AFfAAAAAAMAiXAEDAAAAAIsQwAAAAADAIgQwAAAAALAIAQwAAAAALEIAAwAAAACLEMAAAMhgq1atks1m09mzZ9O8THBwsMaMGZNpbQIA3BsIYACAB0779u1ls9nUpUuXZPNee+012Ww2tW/f3vqGAQCyPAIYAOCBFBgYqDlz5uiff/5xll2+fFmzZ89WkSJF7mLLAABZGQEMAPBAqlixoooUKaL58+c7y+bPn6/AwEBVqFDBWZaQkKC33npL+fLlk5eXlx599FH9+uuvLutasmSJSpQoIbvdrsjISB08eDDZ9tatW6fHH39cdrtdgYGBeuutt3Tx4sVM2z8AwL2JAAYAeGC99NJLmj59uvPxtGnT1KFDB5c67777rubNm6eZM2dqy5YtKlasmOrUqaO///5bknT48GE988wzql+/vrZt26ZOnTqpd+/eLuv4448/VKdOHT3zzDP6/fffNXfuXK1du1ZvvPFG5u8kAOCeQgADADyw2rRpo7Vr1+rgwYM6dOiQfvnlF7Vu3do5/+LFixo/frxGjhypevXqqVSpUpo8ebLsdrumTp0qSRo/fryKFi2qjz/+WGFhYXrxxReT/X5s5MiRatWqlbp166bixYurevXq+u9//6tZs2bp8uXLVu4yAOAuy363GwAAwN3i7++vBg0aaObMmTLGqEGDBvL393fO37dvnxITE1WjRg1nmbu7u6pUqaKYmBhJUkxMjKpVqyabzeasExER4bKdzZs3a+/evfriiy+cZcYYJSUl6cCBAwoPD8+sXQQA3GMIYACAB1qHDh2cXQHHjh3rMs8YI0ku4cpR7ihz1LmVpKQkvfLKK3rrrbeSzWPADwB4sNAFEQDwQKtbt66uXLmiK1euqE6dOi7zihUrJg8PD61du9ZZlpiYqE2bNjmvWpUqVUobNmxwWe7mxxUrVtSOHTtUrFixZJOHh0cm7RkA4F5EAAMAPNDc3NwUExOjmJgYubm5uczz9vbWq6++qp49e2rp0qXauXOnOnfurEuXLqljx46SpC5dumjfvn3q3r27du3apS+//FIzZsxwWU+vXr20fv16vf7669q2bZv27Nmj7777Tm+++aZVuwkAuEcQwAAADzwfHx/5+PikOO/DDz9U8+bN1aZNG1WsWFF79+7VsmXLlDt3bknXuxDOmzdPixYtUrly5TRhwgR98MEHLut4+OGHtXr1au3Zs0ePPfaYKlSooP79+ysgICDT9w0AcG+xmbR0XgcAAAAA3DGugAEAAACARQhgAAAAAGARAhgAAAAAWIQABgAAAAAWIYABAAAAgEUIYAAAAABgEQIYAAAAAFiEAAYAAAAAFiGAAQAAAIBFCGAAAAAAYBECGAAAAABY5P8AQjRS5vXKN58AAAAASUVORK5CYII=",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Models for plots\n",
"models = ['BM25', 'Custom Model (TF-IDF)', 'Embedding Model', 'Hybrid Model']\n",
"ndcg_scores = [avg_bm25_ndcg, avg_custom_ndcg, avg_custom_embedding_ndcg, avg_custom_hybrid_ndcg]\n",
"\n",
"# Sorting results for display\n",
"sorted_data = sorted(zip(models, ndcg_scores), key=lambda x: x[1], reverse=True)\n",
"sorted_models, sorted_scores = zip(*sorted_data) # Unpack the sorted data\n",
"\n",
"# Plots\n",
"plt.figure(figsize=(10, 6))\n",
"plt.bar(sorted_models, sorted_scores, color=['blue', 'orange', 'green', 'red'])\n",
"plt.title('NDCG Comparison of Different Recommendation Models')\n",
"plt.xlabel('Model')\n",
"plt.ylabel('Average NDCG Score')\n",
"plt.ylim(.975, 1) # NDCG scores between 0.975 and 1\n",
"plt.show()"
]
}
],
"metadata": {
"colab": {
"authorship_tag": "ABX9TyM/mgbFAsjxw+7MUp8ESy8P",
"provenance": [],
"toc_visible": true
},
"kernelspec": {
"display_name": "ml-nlp",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.20"
},
"widgets": {
"application/vnd.jupyter.widget-state+json": {
"014a132cc94240bca260251b30e80b1d": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"018a4edc5a514defa8f88b76c5d2051d": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"01f0b4f9c8494b1d940f52e4ae2e052e": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_3af1e1c748874d9dbe6db67ac60f59a6",
"placeholder": "",
"style": "IPY_MODEL_f2bd0d7b25f64d21a0b101e300f5970f",
"value": " 10.7k/10.7k [00:00<00:00, 378kB/s]"
}
},
"0288d54f62a44a51af1cc28cbffeb414": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"02ad14c4355e4b95ac857236b939f386": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"0871e359a4754641b1001a7748790ef3": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"09ad0f566d154ebaa5a1d407e95b1a3f": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"0d3fc9b5eb5343688db12952c9b79209": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "ProgressStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": ""
}
},
"0d79e7275de94b5b8744179614b31fdd": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"116d7e14b77e4f408e38ee2a9edd2589": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_1bda7a65c51c4eda942daba2ba20763a",
"placeholder": "",
"style": "IPY_MODEL_e753b149eebc4195a0c27d055d2c68c1",
"value": "sentence_bert_config.json: 100%"
}
},
"145978f0aad44da0b8cb60e65add585c": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "ProgressStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": ""
}
},
"14c68438a1574435857fb6b5e8952de1": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "ProgressStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": ""
}
},
"15df539a86084979a6998c9a8b1987f9": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"16ca2364890d4369bd76d528955d5c07": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_02ad14c4355e4b95ac857236b939f386",
"placeholder": "",
"style": "IPY_MODEL_7efde21464b74b89b2b18d4d69bab5f4",
"value": " 350/350 [00:00<00:00, 18.2kB/s]"
}
},
"177dad175ea045bbb434e60e5fa6a2d3": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"1bda7a65c51c4eda942daba2ba20763a": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"1e7db89680c144eb846ee878b37c7b78": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"1f49e5943d254770a92ea4778733a86a": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"1f54531a0f9249c79b3db2e715da96c2": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"211c9255a5b841a6981f4bb90ef0cc08": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_78cd919f72c24e349e35568be0834f8b",
"placeholder": "",
"style": "IPY_MODEL_018a4edc5a514defa8f88b76c5d2051d",
"value": "modules.json: 100%"
}
},
"21845b143b0b42a89b8c96371fcb7cfd": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "FloatProgressModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "success",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_36a5b49746ab413eb824189c5312a4a8",
"max": 350,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_869ba914217346d79c3d5d73f5e00ea8",
"value": 350
}
},
"25e00f5d82e448368c2d132f0274c089": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"2c4d0395d3c9450c93cdf92534fb667e": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"2d731537db694de2abf5e50ff5315582": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HBoxModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_116d7e14b77e4f408e38ee2a9edd2589",
"IPY_MODEL_4d1a8a8036184623b6d9a0bb60134c0b",
"IPY_MODEL_75f9eb8825164ee0ab40ce3d35082182"
],
"layout": "IPY_MODEL_09ad0f566d154ebaa5a1d407e95b1a3f"
}
},
"2e73e9f4f6d349deb946044f44f5bc6a": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"304275b18f514e7da443e0e85cb92ebf": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"333ae2cfd578425c93552c57c4b7f8ae": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"33ea3f887ac34973aaa72cf28774e17a": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"34c8ce56ae6047809e128507f7ec1333": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"3571d5e96c964209bf75196c768c4f16": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_cc1811b5165a462c80e33ea28c9b1cd5",
"placeholder": "",
"style": "IPY_MODEL_d7aabc8485904970acc594cff1c2ecb1",
"value": "tokenizer_config.json: 100%"
}
},
"36a5b49746ab413eb824189c5312a4a8": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"398becbbdc324b2d9033ffb2511ab612": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_f0596d60ee03456899a44a9f024c13e8",
"placeholder": "",
"style": "IPY_MODEL_7705618bee1b436eb9cc7c954281b985",
"value": "1_Pooling/config.json: 100%"
}
},
"39b450fcf67e4eff80f0a94ce03c3d9a": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_6988cc6bae8646baabc123c4a90eb1f2",
"placeholder": "",
"style": "IPY_MODEL_0d79e7275de94b5b8744179614b31fdd",
"value": " 118/118 [14:18<00:00, 2.44s/it]"
}
},
"3aad5b862e584581873e0fcf48dc645f": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_b47a4986321b4011857e43ec29af5930",
"placeholder": "",
"style": "IPY_MODEL_70d1721ee8764008a378e86f8b4d1a40",
"value": " 90.9M/90.9M [00:00<00:00, 119MB/s]"
}
},
"3af1e1c748874d9dbe6db67ac60f59a6": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"3ecefd97e39949778d00bddddbcd93d5": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"40426b1e8b6d4b9f90bc8b6551e33dad": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"4073631f4ae04f6394e7ec7160c1b267": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"407bdd18f40942d4857674f5aef60f5a": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"414026345ea14ad3a1c46f3b48e08dad": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"419c59425958463e86e3c89e7897562d": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"41aa5f25235d435ab2022deb265c1224": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HBoxModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_211c9255a5b841a6981f4bb90ef0cc08",
"IPY_MODEL_f39607b761c34a09bfd9fac0ecaab5f4",
"IPY_MODEL_bc6bc1c1abff40a8bc46bd40fcba011d"
],
"layout": "IPY_MODEL_98e8d5ab089c4972b28de304327ef4b0"
}
},
"4920dfa856c743c28d6b645bc6462d84": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"497a4539b1f44ac884b22c441a5cc0fb": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"4a573eab972948139eb2acccc8171917": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_97c9c08018ac4d98a5a73a4e4d4b4552",
"placeholder": "",
"style": "IPY_MODEL_1e7db89680c144eb846ee878b37c7b78",
"value": "special_tokens_map.json: 100%"
}
},
"4d1a8a8036184623b6d9a0bb60134c0b": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "FloatProgressModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "success",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_333ae2cfd578425c93552c57c4b7f8ae",
"max": 53,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_eed1334d1cfb47b8b6568b754b36e591",
"value": 53
}
},
"50e7bea3bda3449993f02204ab708c84": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"51b607d567414be9806ba7eecd5b47f5": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"520a8efd266645e98d64fe12e692fdd4": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "ProgressStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": ""
}
},
"5760a67d10b342c7b802e0b14ef934b8": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HBoxModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_77a06f1ab92a437a93326ca36667ca87",
"IPY_MODEL_e53714b59cb44cdfb55fe0768be6960d",
"IPY_MODEL_d92024edce0c416c9bf5389c4763be3e"
],
"layout": "IPY_MODEL_e4bff3bbc2c54c6aa9ffdb855c707def"
}
},
"59c60af3e36e4afa94c9243a713c862e": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "FloatProgressModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "success",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_014a132cc94240bca260251b30e80b1d",
"max": 10659,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_85f80f687da548c4be2a9aa4bc5f703a",
"value": 10659
}
},
"5f8eb46b969f499281890ad8feaf34e9": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "FloatProgressModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "success",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_b9394cb942f44d248d070d2fa38a3a60",
"max": 116,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_d339ebcb8350489ab8adc6ade4a3549f",
"value": 116
}
},
"62217ad84eee4d9ab223350440f31c40": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HBoxModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_97d56fd60344424dac5c0482ab9efabb",
"IPY_MODEL_c8bd3f54301d4ebda35036a60c4aa5e7",
"IPY_MODEL_d2c96a3539d64fa4b5ca319057ce1838"
],
"layout": "IPY_MODEL_7fc87395d6664c579ad3b49c5d5f5af9"
}
},
"63c2cc0bb0d2470b9c663fb789bccbcc": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"643406402c1b45c798fc3a9b073084b7": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"64c0d4f909914b66aca9fd86882d4759": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_ccd93edd28fd47dc8ed9b25fdff1273b",
"placeholder": "",
"style": "IPY_MODEL_8ab8006e3d0c46c688e3f8f30f1076d3",
"value": "Batches: 100%"
}
},
"65cd6c2e7ea4417cbcbc49e9826da3a4": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_b89dba8be52b44ab922ec32a2dbf0388",
"placeholder": "",
"style": "IPY_MODEL_d73b0aa7b82a446287f1597560aa9f2e",
"value": "README.md: 100%"
}
},
"66e195b05b7d4007875cee4ca105bee5": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "FloatProgressModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "success",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_2e73e9f4f6d349deb946044f44f5bc6a",
"max": 231508,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_c1f08c978d8e40ec87a1d6b348331205",
"value": 231508
}
},
"6988cc6bae8646baabc123c4a90eb1f2": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"6a55cee63ed64d5c8bce9853553a152e": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_90b79c66e79f4cb3ac20515d1ee204ba",
"placeholder": "",
"style": "IPY_MODEL_4073631f4ae04f6394e7ec7160c1b267",
"value": "vocab.txt: 100%"
}
},
"6f315b8a29ec4dceb936f40dcf935ca9": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HBoxModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_3571d5e96c964209bf75196c768c4f16",
"IPY_MODEL_21845b143b0b42a89b8c96371fcb7cfd",
"IPY_MODEL_16ca2364890d4369bd76d528955d5c07"
],
"layout": "IPY_MODEL_407bdd18f40942d4857674f5aef60f5a"
}
},
"70d1721ee8764008a378e86f8b4d1a40": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"72045a496fac4abba58f054c4f5dd289": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_77e1d1adc7f84c05830987cbcd9abf6b",
"placeholder": "",
"style": "IPY_MODEL_33ea3f887ac34973aaa72cf28774e17a",
"value": "model.safetensors: 100%"
}
},
"72500bb48c964e91a308f763db191956": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"72b931a3238e4d229517d8762e64de4f": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "ProgressStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": ""
}
},
"75abb8d3b53341aabed11f3e3e789423": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HBoxModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_64c0d4f909914b66aca9fd86882d4759",
"IPY_MODEL_a22f72bba00646fc8d424e84f9761d04",
"IPY_MODEL_39b450fcf67e4eff80f0a94ce03c3d9a"
],
"layout": "IPY_MODEL_419c59425958463e86e3c89e7897562d"
}
},
"75f9eb8825164ee0ab40ce3d35082182": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_d098812189de448cb80c14fc9f4b932e",
"placeholder": "",
"style": "IPY_MODEL_b65a40471afa46f88b2a745df3b8164f",
"value": " 53.0/53.0 [00:00<00:00, 1.61kB/s]"
}
},
"7705618bee1b436eb9cc7c954281b985": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"77a06f1ab92a437a93326ca36667ca87": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_643406402c1b45c798fc3a9b073084b7",
"placeholder": "",
"style": "IPY_MODEL_1f54531a0f9249c79b3db2e715da96c2",
"value": "config.json: 100%"
}
},
"77e1d1adc7f84c05830987cbcd9abf6b": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"78cd919f72c24e349e35568be0834f8b": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"7a0b0da7087a4830a5263f93a9835870": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_fab297d175304e86be07326a50074a96",
"placeholder": "",
"style": "IPY_MODEL_3ecefd97e39949778d00bddddbcd93d5",
"value": " 190/190 [00:00<00:00, 8.52kB/s]"
}
},
"7efde21464b74b89b2b18d4d69bab5f4": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"7fc87395d6664c579ad3b49c5d5f5af9": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"829f7b18252f4452bc0c052707438553": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "FloatProgressModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "success",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_414026345ea14ad3a1c46f3b48e08dad",
"max": 90868376,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_520a8efd266645e98d64fe12e692fdd4",
"value": 90868376
}
},
"85f80f687da548c4be2a9aa4bc5f703a": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "ProgressStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": ""
}
},
"869ba914217346d79c3d5d73f5e00ea8": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "ProgressStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": ""
}
},
"8aa2e9c7ecc8463d80969f8be0b8fa97": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"8ab8006e3d0c46c688e3f8f30f1076d3": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"90b79c66e79f4cb3ac20515d1ee204ba": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"97c9c08018ac4d98a5a73a4e4d4b4552": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"97d56fd60344424dac5c0482ab9efabb": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_63c2cc0bb0d2470b9c663fb789bccbcc",
"placeholder": "",
"style": "IPY_MODEL_4920dfa856c743c28d6b645bc6462d84",
"value": "tokenizer.json: 100%"
}
},
"98e8d5ab089c4972b28de304327ef4b0": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"9992af63e99a4d279c2a00b6e2609532": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "ProgressStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": ""
}
},
"9f18e1e8a03544c7b43e8ad098385165": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"a22f72bba00646fc8d424e84f9761d04": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "FloatProgressModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "success",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_c792016a2f1e421c9c63a4760529c6dd",
"max": 118,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_9992af63e99a4d279c2a00b6e2609532",
"value": 118
}
},
"a8827aab24ad4f62a569ebc7c49e5e13": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_40426b1e8b6d4b9f90bc8b6551e33dad",
"placeholder": "",
"style": "IPY_MODEL_9f18e1e8a03544c7b43e8ad098385165",
"value": "config_sentence_transformers.json: 100%"
}
},
"ab3daf3afb14420e917d2ce4b70ed03a": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"af6f78c572ec4876ae5e0b7440bea99c": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"b22240de5d414420ba2d74813e0cb059": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"b47a4986321b4011857e43ec29af5930": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"b65a40471afa46f88b2a745df3b8164f": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"b89dba8be52b44ab922ec32a2dbf0388": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"b9394cb942f44d248d070d2fa38a3a60": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"bc6bc1c1abff40a8bc46bd40fcba011d": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_50e7bea3bda3449993f02204ab708c84",
"placeholder": "",
"style": "IPY_MODEL_2c4d0395d3c9450c93cdf92534fb667e",
"value": " 349/349 [00:00<00:00, 11.2kB/s]"
}
},
"c064370aceca42d08529b26489e89d01": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"c12e263dd34e41e4a15390d05b99e937": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_0871e359a4754641b1001a7748790ef3",
"placeholder": "",
"style": "IPY_MODEL_f8279f7457b54ea79871d8afffaa4c1a",
"value": " 116/116 [00:00<00:00, 3.40kB/s]"
}
},
"c1f08c978d8e40ec87a1d6b348331205": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "ProgressStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": ""
}
},
"c410fd7c34974edba7625df2c5dda519": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HBoxModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_398becbbdc324b2d9033ffb2511ab612",
"IPY_MODEL_cf6ba93b63214a79b705c74f9ab08470",
"IPY_MODEL_7a0b0da7087a4830a5263f93a9835870"
],
"layout": "IPY_MODEL_34c8ce56ae6047809e128507f7ec1333"
}
},
"c792016a2f1e421c9c63a4760529c6dd": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"c7984758157f4bd885a29f3d13508f12": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"c8bd3f54301d4ebda35036a60c4aa5e7": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "FloatProgressModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "success",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_f9727f5d318f4c578c6f609da8514a03",
"max": 466247,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_dafa8bd7b78c4dcbaf8bc8bf1f38b441",
"value": 466247
}
},
"c92e52e2edf146058ff52be717bb11a1": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "FloatProgressModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "success",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_72500bb48c964e91a308f763db191956",
"max": 112,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_14c68438a1574435857fb6b5e8952de1",
"value": 112
}
},
"cc1811b5165a462c80e33ea28c9b1cd5": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"ccd93edd28fd47dc8ed9b25fdff1273b": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"cf6ba93b63214a79b705c74f9ab08470": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "FloatProgressModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "success",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_8aa2e9c7ecc8463d80969f8be0b8fa97",
"max": 190,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_145978f0aad44da0b8cb60e65add585c",
"value": 190
}
},
"d098812189de448cb80c14fc9f4b932e": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"d2c96a3539d64fa4b5ca319057ce1838": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_ab3daf3afb14420e917d2ce4b70ed03a",
"placeholder": "",
"style": "IPY_MODEL_e8cd452dbdfe4913b3f06060bdebbc0e",
"value": " 466k/466k [00:00<00:00, 6.13MB/s]"
}
},
"d339ebcb8350489ab8adc6ade4a3549f": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "ProgressStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": ""
}
},
"d45e5d6905ad4b24b24b79b80758920c": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_c7984758157f4bd885a29f3d13508f12",
"placeholder": "",
"style": "IPY_MODEL_1f49e5943d254770a92ea4778733a86a",
"value": " 112/112 [00:00<00:00, 5.89kB/s]"
}
},
"d4933c6ee65f47638f514b25da3031ff": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HBoxModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_a8827aab24ad4f62a569ebc7c49e5e13",
"IPY_MODEL_5f8eb46b969f499281890ad8feaf34e9",
"IPY_MODEL_c12e263dd34e41e4a15390d05b99e937"
],
"layout": "IPY_MODEL_25e00f5d82e448368c2d132f0274c089"
}
},
"d49c878e0999475c946d18ea7ad24e1b": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_c064370aceca42d08529b26489e89d01",
"placeholder": "",
"style": "IPY_MODEL_497a4539b1f44ac884b22c441a5cc0fb",
"value": " 232k/232k [00:00<00:00, 4.87MB/s]"
}
},
"d5b2b751583a4eea83dd7d0dac3311df": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"d73b0aa7b82a446287f1597560aa9f2e": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"d7aabc8485904970acc594cff1c2ecb1": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"d92024edce0c416c9bf5389c4763be3e": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HTMLModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HTMLModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HTMLView",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_15df539a86084979a6998c9a8b1987f9",
"placeholder": "",
"style": "IPY_MODEL_d5b2b751583a4eea83dd7d0dac3311df",
"value": " 612/612 [00:00<00:00, 14.2kB/s]"
}
},
"dafa8bd7b78c4dcbaf8bc8bf1f38b441": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "ProgressStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": ""
}
},
"e4bff3bbc2c54c6aa9ffdb855c707def": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"e513eb3bf3f74a8b9f56f67be171e4c7": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HBoxModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_6a55cee63ed64d5c8bce9853553a152e",
"IPY_MODEL_66e195b05b7d4007875cee4ca105bee5",
"IPY_MODEL_d49c878e0999475c946d18ea7ad24e1b"
],
"layout": "IPY_MODEL_177dad175ea045bbb434e60e5fa6a2d3"
}
},
"e53714b59cb44cdfb55fe0768be6960d": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "FloatProgressModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "success",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_51b607d567414be9806ba7eecd5b47f5",
"max": 612,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_72b931a3238e4d229517d8762e64de4f",
"value": 612
}
},
"e6afaae6e36e46ae94a433b5437012b2": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HBoxModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_4a573eab972948139eb2acccc8171917",
"IPY_MODEL_c92e52e2edf146058ff52be717bb11a1",
"IPY_MODEL_d45e5d6905ad4b24b24b79b80758920c"
],
"layout": "IPY_MODEL_b22240de5d414420ba2d74813e0cb059"
}
},
"e753b149eebc4195a0c27d055d2c68c1": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"e8cd452dbdfe4913b3f06060bdebbc0e": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"eaa6b4ef21fd4de2b67e0afb28af35a7": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HBoxModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_72045a496fac4abba58f054c4f5dd289",
"IPY_MODEL_829f7b18252f4452bc0c052707438553",
"IPY_MODEL_3aad5b862e584581873e0fcf48dc645f"
],
"layout": "IPY_MODEL_304275b18f514e7da443e0e85cb92ebf"
}
},
"eae753a0f03a4940811ce9b14f3c4fba": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "HBoxModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "HBoxModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "HBoxView",
"box_style": "",
"children": [
"IPY_MODEL_65cd6c2e7ea4417cbcbc49e9826da3a4",
"IPY_MODEL_59c60af3e36e4afa94c9243a713c862e",
"IPY_MODEL_01f0b4f9c8494b1d940f52e4ae2e052e"
],
"layout": "IPY_MODEL_af6f78c572ec4876ae5e0b7440bea99c"
}
},
"eed1334d1cfb47b8b6568b754b36e591": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "ProgressStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "ProgressStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"bar_color": null,
"description_width": ""
}
},
"f0596d60ee03456899a44a9f024c13e8": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"f2bd0d7b25f64d21a0b101e300f5970f": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"f39607b761c34a09bfd9fac0ecaab5f4": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "FloatProgressModel",
"state": {
"_dom_classes": [],
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "FloatProgressModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/controls",
"_view_module_version": "1.5.0",
"_view_name": "ProgressView",
"bar_style": "success",
"description": "",
"description_tooltip": null,
"layout": "IPY_MODEL_0288d54f62a44a51af1cc28cbffeb414",
"max": 349,
"min": 0,
"orientation": "horizontal",
"style": "IPY_MODEL_0d3fc9b5eb5343688db12952c9b79209",
"value": 349
}
},
"f8279f7457b54ea79871d8afffaa4c1a": {
"model_module": "@jupyter-widgets/controls",
"model_module_version": "1.5.0",
"model_name": "DescriptionStyleModel",
"state": {
"_model_module": "@jupyter-widgets/controls",
"_model_module_version": "1.5.0",
"_model_name": "DescriptionStyleModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "StyleView",
"description_width": ""
}
},
"f9727f5d318f4c578c6f609da8514a03": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
},
"fab297d175304e86be07326a50074a96": {
"model_module": "@jupyter-widgets/base",
"model_module_version": "1.2.0",
"model_name": "LayoutModel",
"state": {
"_model_module": "@jupyter-widgets/base",
"_model_module_version": "1.2.0",
"_model_name": "LayoutModel",
"_view_count": null,
"_view_module": "@jupyter-widgets/base",
"_view_module_version": "1.2.0",
"_view_name": "LayoutView",
"align_content": null,
"align_items": null,
"align_self": null,
"border": null,
"bottom": null,
"display": null,
"flex": null,
"flex_flow": null,
"grid_area": null,
"grid_auto_columns": null,
"grid_auto_flow": null,
"grid_auto_rows": null,
"grid_column": null,
"grid_gap": null,
"grid_row": null,
"grid_template_areas": null,
"grid_template_columns": null,
"grid_template_rows": null,
"height": null,
"justify_content": null,
"justify_items": null,
"left": null,
"margin": null,
"max_height": null,
"max_width": null,
"min_height": null,
"min_width": null,
"object_fit": null,
"object_position": null,
"order": null,
"overflow": null,
"overflow_x": null,
"overflow_y": null,
"padding": null,
"right": null,
"top": null,
"visibility": null,
"width": null
}
}
}
}
},
"nbformat": 4,
"nbformat_minor": 0
}