mirror of
https://github.com/soconnor0919/f1-race-prediction.git
synced 2026-02-05 08:16:36 -05:00
1577 lines
196 KiB
Plaintext
1577 lines
196 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# Formula One Project: Data Preparation and EDA\n",
|
||
"\n",
|
||
"DUE: November 22nd, 2024 (Fri) \n",
|
||
"Name(s): Sean O'Connor, Connor Coles \n",
|
||
"Class: CSCI 349 - Intro to Data Mining \n",
|
||
"Semester: Fall 2024 \n",
|
||
"Instructor: Brian King "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Assignment Description\n",
|
||
"Create your first notebook file, DataPrep_EDA.ipynb. Use both markdown and code cells to convey the following:\n",
|
||
"- What problem are you working on? Summarize in a single cell.\n",
|
||
"- What data are you using to understand the problem? Describe the data in a very general sense. Where did it come from? You should understand what every observation in the data represents, and what each variable represents.\n",
|
||
"- Remember that the key to achieving good machine learning outcomes is understanding how each real-world entity in your data will be represented as a fixed length vector of attributes in your dataset! Preprocessing your data will be a big part of this challenge. If you do not expect to spend quality time cleaning and prepping your data, you will not get good results. Once you have established how each data object is represented in a form ready for a data mining algorithm, and the data are clean, you will have a substantial part of your battle toward modeling solved.\n",
|
||
"- Strive to generate good summary statistics, show what the data looks like, and include good EDA and visualizations with boxplots, barcharts, density plots for key variables, or whatever other plots you want that are specific to your data and problem to help the reader understand basic distributions of important variables. Visualizations can help you convey general info about your data and are extremely helpful.\n",
|
||
"- In your final cells, discuss the modeling methods you expect to use. Start by clearly explaining if this is a classification, regression, clustering, or association rule mining problem? Justify. You have much of the framework to apply most algorithms, even those beyond what we covered in class. Feel free to explore different methods if you have good justification for doing so. If there are any papers of significance that have been published with these data, then discuss the ones most interesting/relevant to the team.\n",
|
||
"- Finally, what is your overarching aim with this project? What are you hoping to learn? Or, what hypothesis are you using the data to confirm or disprove? What challenges do you foresee on this project? Discuss your concerns. How will you get your work done? Give a reasonable list of milestones to reach to arrive at the final deadline for the project."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Problem Summary\n",
|
||
"We are conducting a data mining project focused on analyzing driver performance in Formula One. Our goal is to correlate driver performance with track and weather conditions, and to predict future race results using these correlations. We will apply various data mining techniques learned throughout the course to extract meaningful insights from the dataset."
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 1,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2024-11-20T02:14:34.811557Z",
|
||
"start_time": "2024-11-20T02:14:34.804489Z"
|
||
}
|
||
},
|
||
"outputs": [],
|
||
"source": [
|
||
"# Importing Libraries\n",
|
||
"import pandas as pd\n",
|
||
"import numpy as np\n",
|
||
"import matplotlib.pyplot as plt\n",
|
||
"import seaborn as sns\n",
|
||
"import os\n",
|
||
"\n",
|
||
"from fastf1.ergast.structure import FastestLap"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 2,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2024-11-20T02:14:38.532179Z",
|
||
"start_time": "2024-11-20T02:14:36.799495Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"req WARNING \tDEFAULT CACHE ENABLED! (188.1 MB) /Users/soconnor/Library/Caches/fastf1\n",
|
||
"core INFO \tLoading data for Italian Grand Prix - Qualifying [v3.4.4]\n",
|
||
"req INFO \tUsing cached data for session_info\n",
|
||
"req INFO \tUsing cached data for driver_info\n",
|
||
"req INFO \tUsing cached data for session_status_data\n",
|
||
"req INFO \tUsing cached data for track_status_data\n",
|
||
"req INFO \tUsing cached data for _extended_timing_data\n",
|
||
"req INFO \tUsing cached data for timing_app_data\n",
|
||
"core INFO \tProcessing timing data...\n",
|
||
"req INFO \tUsing cached data for car_data\n",
|
||
"req INFO \tUsing cached data for position_data\n",
|
||
"req INFO \tUsing cached data for weather_data\n",
|
||
"req INFO \tUsing cached data for race_control_messages\n",
|
||
"core INFO \tFinished loading data for 20 drivers: ['16', '44', '77', '5', '3', '27', '55', '23', '18', '7', '99', '20', '26', '4', '10', '8', '11', '63', '88', '33']\n"
|
||
]
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAkAAAAHFCAYAAAAaD0bAAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAACLvUlEQVR4nO3dd3wUdf4/8Nf29N5JCKGXUJSOBZAieIAnd+Kp56FiVxTFs96dWLmvd1Y88HfKiR3b4VlAAWkioBBAegkkkN6zm8323fn9MTuTLGlbZndnZt/PxyOPB9lsdmdCsvue9+f9eb8VDMMwIIQQQgiJIMpwHwAhhBBCSKhRAEQIIYSQiEMBECGEEEIiDgVAhBBCCIk4FAARQgghJOJQAEQIIYSQiEMBECGEEEIiDgVAhBBCCIk4FAARQgghJOJQAEQIEcyaNWugUCiwb9++kD2nQqHAsmXLQvZ83SktLYVCocCaNWvCfSiEkB6ow30AhBAiF9nZ2di9ezf69esX7kMhhPSAAiBCCHFzOp1wOBzQ6XR+fb9Op8OECRMEPipCSDDQEhghJOROnz6NG264ARkZGdDpdBgyZAj+9a9/dbhfc3Mzli5dir59+0Kn0yEjIwNXXXUVTpw40e3jV1dX484770Rubi60Wi0KCgrw9NNPw+Fw8PfhlqtefPFFPPfccygoKIBOp8PWrVsBAD///DPmzp2L1NRUREVFoV+/fliyZEm3z9vZElhdXR3uuOMO5OXlQafTIT09HZdccgk2b97s/Q+MECI4ygARQkLq2LFjmDRpEnr37o2XXnoJWVlZ+P7773H//fejvr4eTz31FACgpaUFl156KUpLS/Hoo49i/PjxMBqN2LFjB6qqqjB48OBOH7+6uhrjxo2DUqnE3/72N/Tr1w+7d+/Gc889h9LSUrzzzjse93/99dcxcOBA/POf/0RCQgIGDBiA77//HnPnzsWQIUPw8ssvo3fv3igtLcXGjRt9Pt+bbroJ+/fvx/PPP4+BAweiubkZ+/fvR0NDg+8/PEKIYCgAIoSE1EMPPYT4+Hjs3LkTCQkJAIAZM2bAarXi73//O+6//34kJyfj1VdfxdGjR7Fp0yZMnz6d//758+d3+/jLli1DU1MTjh49it69ewMApk2bhujoaDz88MP485//jKFDh/L3j4qKwvfffw+NRsPfNn36dPTu3Rs///wzoqKi+NtvueUWn8/3p59+wm233Ybbb7+dv+3qq6/2+XEIIcKiJTBCSMhYLBb88MMPuOaaaxATEwOHw8F/XHXVVbBYLNizZw8AYMOGDRg4cKBH8OONb775BlOnTkVOTo7H48+ePRsAsH37do/7z5s3zyP4OXXqFM6cOYNFixZ5BD/+GjduHNasWYPnnnsOe/bsgd1uD/gxCSGBowCIEBIyDQ0NcDgcWLFiBTQajcfHVVddBQCor68HwNbO5Obm+vwcNTU1+Prrrzs8/rBhwzwen5Odne3xeV1dHQD49dyd+eSTT7Bw4UK8/fbbmDhxIlJSUvCnP/0J1dXVgjw+IcQ/tARGCAmZ5ORkqFQq3HTTTbj33ns7vU9BQQEAID09HeXl5T4/R1paGkaMGIHnn3++06/n5OR4fK5QKDw+T09PBwC/nrur43n11Vfx6quv4vz58/jqq6/w2GOPoba2Ft99950gz0EI8R0FQISQkImJicHUqVNx4MABjBgxAlqttsv7zp49G3/729+wZcsWXHHFFV4/x5w5c7B+/Xr069cPycnJPh/jwIED0a9fP/znP//BQw895PeW+M707t0b9913H3744Qf89NNPgj0uIcR3FAARQgS3ZcsWlJaWdrj9qquuwmuvvYZLL70Ul112Ge6++2706dMHLS0tKC4uxtdff40tW7YAAJYsWYJPPvkEV199NR577DGMGzcOZrMZ27dvx5w5czB16tROn/uZZ57Bpk2bMGnSJNx///0YNGgQLBYLSktLsX79erz55ps9Lm/961//wty5czFhwgQ8+OCD6N27N86fP4/vv/8eH374odc/B71ej6lTp+KGG27A4MGDER8fj7179+K7777rsZibEBJcFAARQgT36KOPdnp7SUkJhg4div379+PZZ5/FX/7yF9TW1iIpKQkDBgzg64AA8DvFli1bhn//+994+umnkZycjLFjx+KOO+7o8rmzs7Oxb98+PPvss/jHP/6B8vJyxMfHo6CgALNmzfIqK3TllVdix44deOaZZ3D//ffDYrEgNzcX8+bN8+nnEBUVhfHjx+P9999HaWkp7HY7evfujUcffRSPPPKIT49FCBGWgmEYJtwHQQghhBASSrQLjBBCCCERhwIgQgghhEQcCoAIIYQQEnEoACKEEEJIxKEAiBBCCCERhwIgQgghhEQc6gMEwOVy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",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"# FastF1 Example\n",
|
||
"import fastf1\n",
|
||
"import fastf1.plotting\n",
|
||
"\n",
|
||
"fastf1.plotting.setup_mpl(misc_mpl_mods=False, color_scheme=None)\n",
|
||
"\n",
|
||
"session = fastf1.get_session(2019, 'Monza', 'Q')\n",
|
||
"session.load()\n",
|
||
"\n",
|
||
"fast_leclerc = session.laps.pick_drivers('LEC').pick_fastest()\n",
|
||
"lec_car_data = fast_leclerc.get_car_data()\n",
|
||
"t = lec_car_data['Time']\n",
|
||
"vCar = lec_car_data['Speed']\n",
|
||
"\n",
|
||
"# The rest is just plotting\n",
|
||
"fig, ax = plt.subplots()\n",
|
||
"ax.plot(t, vCar, label='Fast')\n",
|
||
"ax.set_xlabel('Time')\n",
|
||
"ax.set_ylabel('Speed [Km/h]')\n",
|
||
"ax.set_title('Leclerc is')\n",
|
||
"ax.legend()\n",
|
||
"plt.show()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 3,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2024-11-20T03:31:25.964278Z",
|
||
"start_time": "2024-11-20T03:29:39.724591Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"events WARNING \tCorrecting user input 'Bahrain' to 'Bahrain Grand Prix'\n",
|
||
"core INFO \tLoading data for Bahrain Grand Prix - Qualifying [v3.4.4]\n",
|
||
"req INFO \tUsing cached data for session_info\n",
|
||
"req INFO \tUsing cached data for driver_info\n",
|
||
"req INFO \tUsing cached data for session_status_data\n",
|
||
"req INFO \tUsing cached data for track_status_data\n",
|
||
"req INFO \tUsing cached data for _extended_timing_data\n",
|
||
"req INFO \tUsing cached data for timing_app_data\n",
|
||
"core INFO \tProcessing timing data...\n",
|
||
"req INFO \tUsing cached data for car_data\n",
|
||
"req INFO \tUsing cached data for position_data\n",
|
||
"req INFO \tUsing cached data for weather_data\n",
|
||
"req INFO \tUsing cached data for race_control_messages\n",
|
||
"core INFO \tFinished loading data for 20 drivers: ['44', '77', '33', '23', '11', '3', '31', '10', '4', '26', '5', '16', '18', '63', '55', '99', '7', '20', '8', '6']\n",
|
||
"events WARNING \tCorrecting user input 'Bahrain' to 'Bahrain Grand Prix'\n",
|
||
"core INFO \tLoading data for Bahrain Grand Prix - Race [v3.4.4]\n",
|
||
"req INFO \tUsing cached data for session_info\n",
|
||
"req INFO \tUsing cached data for driver_info\n",
|
||
"Request for URL https://ergast.com/api/f1/2020/15/results.json failed; using cached response\n",
|
||
"Traceback (most recent call last):\n",
|
||
" File \"/opt/homebrew/Caskroom/miniconda/base/envs/csci349/lib/python3.10/site-packages/urllib3/connectionpool.py\", line 536, in _make_request\n",
|
||
" response = conn.getresponse()\n",
|
||
" File \"/opt/homebrew/Caskroom/miniconda/base/envs/csci349/lib/python3.10/site-packages/urllib3/connection.py\", line 507, in getresponse\n",
|
||
" httplib_response = super().getresponse()\n",
|
||
" File \"/opt/homebrew/Caskroom/miniconda/base/envs/csci349/lib/python3.10/http/client.py\", line 1375, in getresponse\n",
|
||
" response.begin()\n",
|
||
" File \"/opt/homebrew/Caskroom/miniconda/base/envs/csci349/lib/python3.10/http/client.py\", line 318, in begin\n",
|
||
" version, status, reason = self._read_status()\n",
|
||
" File \"/opt/homebrew/Caskroom/miniconda/base/envs/csci349/lib/python3.10/http/client.py\", line 279, in _read_status\n",
|
||
" line = str(self.fp.readline(_MAXLINE + 1), \"iso-8859-1\")\n",
|
||
" File \"/opt/homebrew/Caskroom/miniconda/base/envs/csci349/lib/python3.10/socket.py\", line 705, in readinto\n",
|
||
" return self._sock.recv_into(b)\n",
|
||
" File \"/opt/homebrew/Caskroom/miniconda/base/envs/csci349/lib/python3.10/ssl.py\", line 1307, in recv_into\n",
|
||
" return self.read(nbytes, buffer)\n",
|
||
" File \"/opt/homebrew/Caskroom/miniconda/base/envs/csci349/lib/python3.10/ssl.py\", line 1163, in read\n",
|
||
" return self._sslobj.read(len, buffer)\n",
|
||
"TimeoutError: The read operation timed out\n",
|
||
"\n",
|
||
"The above exception was the direct cause of the following exception:\n",
|
||
"\n",
|
||
"Traceback (most recent call last):\n",
|
||
" File \"/opt/homebrew/Caskroom/miniconda/base/envs/csci349/lib/python3.10/site-packages/requests/adapters.py\", line 667, in send\n",
|
||
" resp = conn.urlopen(\n",
|
||
" File \"/opt/homebrew/Caskroom/miniconda/base/envs/csci349/lib/python3.10/site-packages/urllib3/connectionpool.py\", line 843, in urlopen\n",
|
||
" retries = retries.increment(\n",
|
||
" File \"/opt/homebrew/Caskroom/miniconda/base/envs/csci349/lib/python3.10/site-packages/urllib3/util/retry.py\", line 474, in increment\n",
|
||
" raise reraise(type(error), error, _stacktrace)\n",
|
||
" File \"/opt/homebrew/Caskroom/miniconda/base/envs/csci349/lib/python3.10/site-packages/urllib3/util/util.py\", line 39, in reraise\n",
|
||
" raise value\n",
|
||
" File \"/opt/homebrew/Caskroom/miniconda/base/envs/csci349/lib/python3.10/site-packages/urllib3/connectionpool.py\", line 789, in urlopen\n",
|
||
" response = self._make_request(\n",
|
||
" File \"/opt/homebrew/Caskroom/miniconda/base/envs/csci349/lib/python3.10/site-packages/urllib3/connectionpool.py\", line 538, in _make_request\n",
|
||
" self._raise_timeout(err=e, url=url, timeout_value=read_timeout)\n",
|
||
" File \"/opt/homebrew/Caskroom/miniconda/base/envs/csci349/lib/python3.10/site-packages/urllib3/connectionpool.py\", line 369, in _raise_timeout\n",
|
||
" raise ReadTimeoutError(\n",
|
||
"urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='ergast.com', port=443): Read timed out. (read timeout=5.0)\n",
|
||
"\n",
|
||
"During handling of the above exception, another exception occurred:\n",
|
||
"\n",
|
||
"Traceback (most recent call last):\n",
|
||
" File \"/opt/homebrew/Caskroom/miniconda/base/envs/csci349/lib/python3.10/site-packages/requests_cache/session.py\", line 286, in _resend\n",
|
||
" response = self._send_and_cache(request, actions, cached_response, **kwargs)\n",
|
||
" File \"/opt/homebrew/Caskroom/miniconda/base/envs/csci349/lib/python3.10/site-packages/requests_cache/session.py\", line 254, in _send_and_cache\n",
|
||
" response = super().send(request, **kwargs)\n",
|
||
" File \"/opt/homebrew/Caskroom/miniconda/base/envs/csci349/lib/python3.10/site-packages/fastf1/req.py\", line 136, in send\n",
|
||
" return super().send(request, **kwargs)\n",
|
||
" File \"/opt/homebrew/Caskroom/miniconda/base/envs/csci349/lib/python3.10/site-packages/requests/sessions.py\", line 703, in send\n",
|
||
" r = adapter.send(request, **kwargs)\n",
|
||
" File \"/opt/homebrew/Caskroom/miniconda/base/envs/csci349/lib/python3.10/site-packages/requests/adapters.py\", line 713, in send\n",
|
||
" raise ReadTimeout(e, request=request)\n",
|
||
"requests.exceptions.ReadTimeout: HTTPSConnectionPool(host='ergast.com', port=443): Read timed out. (read timeout=5.0)\n",
|
||
"req INFO \tUsing cached data for session_status_data\n",
|
||
"req INFO \tUsing cached data for lap_count\n",
|
||
"req INFO \tUsing cached data for track_status_data\n",
|
||
"req INFO \tUsing cached data for _extended_timing_data\n",
|
||
"req INFO \tUsing cached data for timing_app_data\n",
|
||
"core INFO \tProcessing timing data...\n",
|
||
"req INFO \tUsing cached data for car_data\n",
|
||
"req INFO \tUsing cached data for position_data\n",
|
||
"req INFO \tUsing cached data for weather_data\n",
|
||
"req INFO \tUsing cached data for race_control_messages\n",
|
||
"core INFO \tFinished loading data for 20 drivers: ['44', '33', '23', '4', '55', '10', '3', '77', '31', '16', '26', '63', '5', '6', '7', '99', '20', '11', '18', '8']\n",
|
||
"core INFO \tLoading data for Bahrain Grand Prix - Qualifying [v3.4.4]\n",
|
||
"req INFO \tUsing cached data for session_info\n",
|
||
"req INFO \tUsing cached data for driver_info\n",
|
||
"req INFO \tUsing cached data for session_status_data\n",
|
||
"req INFO \tUsing cached data for track_status_data\n",
|
||
"req INFO \tUsing cached data for _extended_timing_data\n",
|
||
"req INFO \tUsing cached data for timing_app_data\n",
|
||
"core INFO \tProcessing timing data...\n",
|
||
"req INFO \tUsing cached data for car_data\n",
|
||
"req INFO \tUsing cached data for position_data\n",
|
||
"req INFO \tUsing cached data for weather_data\n",
|
||
"req INFO \tUsing cached data for race_control_messages\n",
|
||
"core INFO \tFinished loading data for 20 drivers: ['33', '44', '77', '16', '10', '3', '4', '55', '14', '18', '11', '99', '22', '7', '63', '31', '6', '5', '47', '9']\n",
|
||
"core INFO \tLoading data for Bahrain Grand Prix - Race [v3.4.4]\n",
|
||
"req INFO \tUsing cached data for session_info\n",
|
||
"req INFO \tUsing cached data for driver_info\n",
|
||
"req INFO \tUsing cached data for session_status_data\n",
|
||
"req INFO \tUsing cached data for lap_count\n",
|
||
"req INFO \tUsing cached data for track_status_data\n",
|
||
"req INFO \tUsing cached data for _extended_timing_data\n",
|
||
"req INFO \tUsing cached data for timing_app_data\n",
|
||
"core INFO \tProcessing timing data...\n",
|
||
"req INFO \tUsing cached data for car_data\n",
|
||
"req INFO \tUsing cached data for position_data\n",
|
||
"req INFO \tUsing cached data for weather_data\n",
|
||
"req INFO \tUsing cached data for race_control_messages\n",
|
||
"core INFO \tFinished loading data for 20 drivers: ['44', '33', '77', '4', '11', '16', '3', '55', '22', '18', '7', '99', '31', '63', '5', '47', '10', '6', '14', '9']\n",
|
||
"core INFO \tLoading data for Bahrain Grand Prix - Qualifying [v3.4.4]\n",
|
||
"req INFO \tUsing cached data for session_info\n",
|
||
"req INFO \tUsing cached data for driver_info\n",
|
||
"req INFO \tUsing cached data for session_status_data\n",
|
||
"req INFO \tUsing cached data for track_status_data\n",
|
||
"req INFO \tUsing cached data for _extended_timing_data\n",
|
||
"req INFO \tUsing cached data for timing_app_data\n",
|
||
"core INFO \tProcessing timing data...\n",
|
||
"req INFO \tUsing cached data for car_data\n",
|
||
"req INFO \tUsing cached data for position_data\n",
|
||
"req INFO \tUsing cached data for weather_data\n",
|
||
"req INFO \tUsing cached data for race_control_messages\n",
|
||
"core INFO \tFinished loading data for 20 drivers: ['16', '1', '55', '11', '44', '77', '20', '14', '63', '10', '31', '47', '4', '23', '24', '22', '27', '3', '18', '6']\n",
|
||
"core INFO \tLoading data for Bahrain Grand Prix - Race [v3.4.4]\n",
|
||
"req INFO \tUsing cached data for session_info\n",
|
||
"req INFO \tUsing cached data for driver_info\n",
|
||
"req INFO \tUsing cached data for session_status_data\n",
|
||
"req INFO \tUsing cached data for lap_count\n",
|
||
"req INFO \tUsing cached data for track_status_data\n",
|
||
"req INFO \tUsing cached data for _extended_timing_data\n",
|
||
"req INFO \tUsing cached data for timing_app_data\n",
|
||
"core INFO \tProcessing timing data...\n",
|
||
"req INFO \tUsing cached data for car_data\n",
|
||
"req INFO \tUsing cached data for position_data\n",
|
||
"req INFO \tUsing cached data for weather_data\n",
|
||
"req INFO \tUsing cached data for race_control_messages\n",
|
||
"core INFO \tFinished loading data for 20 drivers: ['16', '55', '44', '63', '20', '77', '31', '22', '14', '24', '47', '18', '23', '3', '4', '6', '27', '11', '1', '10']\n",
|
||
"core INFO \tLoading data for Bahrain Grand Prix - Qualifying [v3.4.4]\n",
|
||
"req INFO \tUsing cached data for session_info\n",
|
||
"req INFO \tUsing cached data for driver_info\n",
|
||
"req INFO \tUsing cached data for session_status_data\n",
|
||
"req INFO \tUsing cached data for track_status_data\n",
|
||
"req INFO \tUsing cached data for _extended_timing_data\n",
|
||
"req INFO \tUsing cached data for timing_app_data\n",
|
||
"core INFO \tProcessing timing data...\n",
|
||
"req INFO \tUsing cached data for car_data\n",
|
||
"req INFO \tUsing cached data for position_data\n",
|
||
"req INFO \tUsing cached data for weather_data\n",
|
||
"req INFO \tUsing cached data for race_control_messages\n",
|
||
"core INFO \tFinished loading data for 20 drivers: ['1', '11', '16', '55', '14', '63', '44', '18', '31', '27', '4', '77', '24', '22', '23', '2', '20', '81', '21', '10']\n",
|
||
"core INFO \tLoading data for Bahrain Grand Prix - Race [v3.4.4]\n",
|
||
"req INFO \tUsing cached data for session_info\n",
|
||
"req INFO \tUsing cached data for driver_info\n",
|
||
"req INFO \tUsing cached data for session_status_data\n",
|
||
"req INFO \tUsing cached data for lap_count\n",
|
||
"req INFO \tUsing cached data for track_status_data\n",
|
||
"req INFO \tUsing cached data for _extended_timing_data\n",
|
||
"req INFO \tUsing cached data for timing_app_data\n",
|
||
"core INFO \tProcessing timing data...\n",
|
||
"req INFO \tUsing cached data for car_data\n",
|
||
"req INFO \tUsing cached data for position_data\n",
|
||
"req INFO \tUsing cached data for weather_data\n",
|
||
"req INFO \tUsing cached data for race_control_messages\n",
|
||
"core INFO \tFinished loading data for 20 drivers: ['1', '11', '14', '55', '44', '18', '63', '77', '10', '23', '22', '2', '20', '21', '27', '24', '4', '31', '16', '81']\n",
|
||
"core INFO \tLoading data for Bahrain Grand Prix - Qualifying [v3.4.4]\n",
|
||
"req INFO \tUsing cached data for session_info\n",
|
||
"req INFO \tUsing cached data for driver_info\n",
|
||
"req INFO \tUsing cached data for session_status_data\n",
|
||
"req INFO \tUsing cached data for track_status_data\n",
|
||
"req INFO \tUsing cached data for _extended_timing_data\n",
|
||
"req INFO \tUsing cached data for timing_app_data\n",
|
||
"core INFO \tProcessing timing data...\n",
|
||
"req INFO \tUsing cached data for car_data\n",
|
||
"req INFO \tUsing cached data for position_data\n",
|
||
"req INFO \tUsing cached data for weather_data\n",
|
||
"req INFO \tUsing cached data for race_control_messages\n",
|
||
"core INFO \tFinished loading data for 20 drivers: ['1', '16', '63', '55', '11', '14', '4', '81', '44', '27', '22', '18', '23', '3', '20', '77', '24', '2', '31', '10']\n",
|
||
"core INFO \tLoading data for Bahrain Grand Prix - Race [v3.4.4]\n",
|
||
"req INFO \tUsing cached data for session_info\n",
|
||
"req INFO \tUsing cached data for driver_info\n",
|
||
"req INFO \tUsing cached data for session_status_data\n",
|
||
"req INFO \tUsing cached data for lap_count\n",
|
||
"req INFO \tUsing cached data for track_status_data\n",
|
||
"req INFO \tUsing cached data for _extended_timing_data\n",
|
||
"req INFO \tUsing cached data for timing_app_data\n",
|
||
"core INFO \tProcessing timing data...\n",
|
||
"req INFO \tUsing cached data for car_data\n",
|
||
"req INFO \tUsing cached data for position_data\n",
|
||
"req INFO \tUsing cached data for weather_data\n",
|
||
"req INFO \tUsing cached data for race_control_messages\n",
|
||
"core INFO \tFinished loading data for 20 drivers: ['1', '11', '55', '16', '63', '4', '44', '81', '14', '18', '24', '20', '3', '22', '23', '27', '31', '10', '77', '2']\n"
|
||
]
|
||
},
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Weather Data:\n",
|
||
" Time AirTemp Humidity Pressure Rainfall TrackTemp \\\n",
|
||
"0 0 days 00:00:33.157000 26.9 52.6 1015.9 False 28.7 \n",
|
||
"1 0 days 00:01:33.168000 26.9 52.7 1016.0 False 28.6 \n",
|
||
"2 0 days 00:02:33.172000 26.8 52.8 1015.9 False 28.5 \n",
|
||
"3 0 days 00:03:33.168000 26.8 53.0 1015.9 False 28.5 \n",
|
||
"4 0 days 00:04:33.155000 26.7 53.2 1016.0 False 28.5 \n",
|
||
"\n",
|
||
" WindDirection WindSpeed Year Session \n",
|
||
"0 305 0.6 2020 Q \n",
|
||
"1 40 0.8 2020 Q \n",
|
||
"2 341 0.8 2020 Q \n",
|
||
"3 295 0.4 2020 Q \n",
|
||
"4 347 0.5 2020 Q \n",
|
||
"Lap Data:\n",
|
||
" Time Driver DriverNumber LapTime \\\n",
|
||
"0 0 days 00:23:28.426000 HAM 44 NaT \n",
|
||
"1 0 days 00:24:56.769000 HAM 44 0 days 00:01:28.343000 \n",
|
||
"2 0 days 00:26:46.183000 HAM 44 0 days 00:01:49.414000 \n",
|
||
"3 0 days 00:32:41.745000 HAM 44 NaT \n",
|
||
"4 0 days 00:34:21.973000 HAM 44 0 days 00:01:40.228000 \n",
|
||
"\n",
|
||
" LapNumber Stint PitOutTime PitInTime \\\n",
|
||
"0 1.0 1.0 0 days 00:21:22.161000 NaT \n",
|
||
"1 2.0 1.0 NaT NaT \n",
|
||
"2 3.0 1.0 NaT 0 days 00:26:44.401000 \n",
|
||
"3 4.0 2.0 0 days 00:30:17.211000 NaT \n",
|
||
"4 5.0 2.0 NaT 0 days 00:34:20.228000 \n",
|
||
"\n",
|
||
" Sector1Time Sector2Time ... LapStartTime \\\n",
|
||
"0 NaT 0 days 00:00:57.104000 ... 0 days 00:21:22.161000 \n",
|
||
"1 0 days 00:00:28.083000 0 days 00:00:38.020000 ... 0 days 00:23:28.426000 \n",
|
||
"2 0 days 00:00:34.081000 0 days 00:00:45.383000 ... 0 days 00:24:56.769000 \n",
|
||
"3 NaT 0 days 00:01:06.133000 ... 0 days 00:26:46.183000 \n",
|
||
"4 0 days 00:00:28.239000 0 days 00:00:45.630000 ... 0 days 00:32:41.745000 \n",
|
||
"\n",
|
||
" LapStartDate TrackStatus Position Deleted DeletedReason \\\n",
|
||
"0 2020-11-28 14:06:22.193 1 NaN False \n",
|
||
"1 2020-11-28 14:08:28.458 1 NaN False \n",
|
||
"2 2020-11-28 14:09:56.801 1 NaN False \n",
|
||
"3 2020-11-28 14:11:46.215 1 NaN False \n",
|
||
"4 2020-11-28 14:17:41.777 1 NaN False \n",
|
||
"\n",
|
||
" FastF1Generated IsAccurate Year Session \n",
|
||
"0 False False 2020 Q \n",
|
||
"1 False True 2020 Q \n",
|
||
"2 False False 2020 Q \n",
|
||
"3 False False 2020 Q \n",
|
||
"4 False False 2020 Q \n",
|
||
"\n",
|
||
"[5 rows x 33 columns]\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"# Define the cache directory\n",
|
||
"cache_dir = '../data/cache'\n",
|
||
"if not os.path.exists(cache_dir):\n",
|
||
" os.makedirs(cache_dir)\n",
|
||
"\n",
|
||
"fastf1.Cache.enable_cache(cache_dir)\n",
|
||
"\n",
|
||
"# Years and sessions of interest\n",
|
||
"years = [2020, 2021, 2022, 2023, 2024]\n",
|
||
"sessions = ['Q', 'Race'] # Qualifying and Race sessions\n",
|
||
"event_name = 'Bahrain' # Example event name\n",
|
||
"\n",
|
||
"# Data holders\n",
|
||
"weather_data_list = []\n",
|
||
"lap_data_list = []\n",
|
||
"\n",
|
||
"# Loop through years and sessions\n",
|
||
"for year in years:\n",
|
||
" for session_name in sessions:\n",
|
||
" try:\n",
|
||
" # Load the session\n",
|
||
" session = fastf1.get_session(year, event_name, session_name)\n",
|
||
" session.load()\n",
|
||
" \n",
|
||
" # Process weather data\n",
|
||
" weather_data = session.weather_data\n",
|
||
" weather_df = pd.DataFrame(weather_data)\n",
|
||
" weather_df['Year'] = year\n",
|
||
" weather_df['Session'] = session_name\n",
|
||
" weather_data_list.append(weather_df)\n",
|
||
"\n",
|
||
" # Process lap data\n",
|
||
" lap_data = session.laps\n",
|
||
" lap_df = pd.DataFrame(lap_data)\n",
|
||
" lap_df['Year'] = year\n",
|
||
" lap_df['Session'] = session_name\n",
|
||
" lap_data_list.append(lap_df)\n",
|
||
" \n",
|
||
" except Exception as e:\n",
|
||
" print(f\"Error with {event_name} {session_name} ({year}): {e}\")\n",
|
||
"\n",
|
||
"# Combine weather and lap data into separate DataFrames\n",
|
||
"if weather_data_list:\n",
|
||
" weather_data_combined = pd.concat(weather_data_list, ignore_index=True)\n",
|
||
" print(\"Weather Data:\")\n",
|
||
" print(weather_data_combined.head())\n",
|
||
"\n",
|
||
"if lap_data_list:\n",
|
||
" lap_data_combined = pd.concat(lap_data_list, ignore_index=True)\n",
|
||
" print(\"Lap Data:\")\n",
|
||
" print(lap_data_combined.head())"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 4,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2024-11-20T03:39:01.456623Z",
|
||
"start_time": "2024-11-20T03:39:01.428009Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>Time</th>\n",
|
||
" <th>AirTemp</th>\n",
|
||
" <th>Humidity</th>\n",
|
||
" <th>Pressure</th>\n",
|
||
" <th>Rainfall</th>\n",
|
||
" <th>TrackTemp</th>\n",
|
||
" <th>WindDirection</th>\n",
|
||
" <th>WindSpeed</th>\n",
|
||
" <th>Year</th>\n",
|
||
" <th>Session</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>0 days 00:00:33.157000</td>\n",
|
||
" <td>26.9</td>\n",
|
||
" <td>52.6</td>\n",
|
||
" <td>1015.9</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>28.7</td>\n",
|
||
" <td>305</td>\n",
|
||
" <td>0.6</td>\n",
|
||
" <td>2020</td>\n",
|
||
" <td>Q</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>0 days 00:01:33.168000</td>\n",
|
||
" <td>26.9</td>\n",
|
||
" <td>52.7</td>\n",
|
||
" <td>1016.0</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>28.6</td>\n",
|
||
" <td>40</td>\n",
|
||
" <td>0.8</td>\n",
|
||
" <td>2020</td>\n",
|
||
" <td>Q</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>0 days 00:02:33.172000</td>\n",
|
||
" <td>26.8</td>\n",
|
||
" <td>52.8</td>\n",
|
||
" <td>1015.9</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>28.5</td>\n",
|
||
" <td>341</td>\n",
|
||
" <td>0.8</td>\n",
|
||
" <td>2020</td>\n",
|
||
" <td>Q</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>0 days 00:03:33.168000</td>\n",
|
||
" <td>26.8</td>\n",
|
||
" <td>53.0</td>\n",
|
||
" <td>1015.9</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>28.5</td>\n",
|
||
" <td>295</td>\n",
|
||
" <td>0.4</td>\n",
|
||
" <td>2020</td>\n",
|
||
" <td>Q</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>0 days 00:04:33.155000</td>\n",
|
||
" <td>26.7</td>\n",
|
||
" <td>53.2</td>\n",
|
||
" <td>1016.0</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>28.5</td>\n",
|
||
" <td>347</td>\n",
|
||
" <td>0.5</td>\n",
|
||
" <td>2020</td>\n",
|
||
" <td>Q</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" Time AirTemp Humidity Pressure Rainfall TrackTemp \\\n",
|
||
"0 0 days 00:00:33.157000 26.9 52.6 1015.9 False 28.7 \n",
|
||
"1 0 days 00:01:33.168000 26.9 52.7 1016.0 False 28.6 \n",
|
||
"2 0 days 00:02:33.172000 26.8 52.8 1015.9 False 28.5 \n",
|
||
"3 0 days 00:03:33.168000 26.8 53.0 1015.9 False 28.5 \n",
|
||
"4 0 days 00:04:33.155000 26.7 53.2 1016.0 False 28.5 \n",
|
||
"\n",
|
||
" WindDirection WindSpeed Year Session \n",
|
||
"0 305 0.6 2020 Q \n",
|
||
"1 40 0.8 2020 Q \n",
|
||
"2 341 0.8 2020 Q \n",
|
||
"3 295 0.4 2020 Q \n",
|
||
"4 347 0.5 2020 Q "
|
||
]
|
||
},
|
||
"execution_count": 4,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"# Display data\n",
|
||
"weather_data_combined.head(5)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 5,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2024-11-20T04:00:16.003135Z",
|
||
"start_time": "2024-11-20T04:00:15.970644Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>Time</th>\n",
|
||
" <th>Driver</th>\n",
|
||
" <th>DriverNumber</th>\n",
|
||
" <th>LapTime</th>\n",
|
||
" <th>LapNumber</th>\n",
|
||
" <th>Stint</th>\n",
|
||
" <th>PitOutTime</th>\n",
|
||
" <th>PitInTime</th>\n",
|
||
" <th>Sector1Time</th>\n",
|
||
" <th>Sector2Time</th>\n",
|
||
" <th>...</th>\n",
|
||
" <th>LapStartTime</th>\n",
|
||
" <th>LapStartDate</th>\n",
|
||
" <th>TrackStatus</th>\n",
|
||
" <th>Position</th>\n",
|
||
" <th>Deleted</th>\n",
|
||
" <th>DeletedReason</th>\n",
|
||
" <th>FastF1Generated</th>\n",
|
||
" <th>IsAccurate</th>\n",
|
||
" <th>Year</th>\n",
|
||
" <th>Session</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>0 days 00:23:28.426000</td>\n",
|
||
" <td>HAM</td>\n",
|
||
" <td>44</td>\n",
|
||
" <td>NaT</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>0 days 00:21:22.161000</td>\n",
|
||
" <td>NaT</td>\n",
|
||
" <td>NaT</td>\n",
|
||
" <td>0 days 00:00:57.104000</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0 days 00:21:22.161000</td>\n",
|
||
" <td>2020-11-28 14:06:22.193</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td></td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>2020</td>\n",
|
||
" <td>Q</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>0 days 00:24:56.769000</td>\n",
|
||
" <td>HAM</td>\n",
|
||
" <td>44</td>\n",
|
||
" <td>0 days 00:01:28.343000</td>\n",
|
||
" <td>2.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>NaT</td>\n",
|
||
" <td>NaT</td>\n",
|
||
" <td>0 days 00:00:28.083000</td>\n",
|
||
" <td>0 days 00:00:38.020000</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0 days 00:23:28.426000</td>\n",
|
||
" <td>2020-11-28 14:08:28.458</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td></td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>True</td>\n",
|
||
" <td>2020</td>\n",
|
||
" <td>Q</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>0 days 00:26:46.183000</td>\n",
|
||
" <td>HAM</td>\n",
|
||
" <td>44</td>\n",
|
||
" <td>0 days 00:01:49.414000</td>\n",
|
||
" <td>3.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>NaT</td>\n",
|
||
" <td>0 days 00:26:44.401000</td>\n",
|
||
" <td>0 days 00:00:34.081000</td>\n",
|
||
" <td>0 days 00:00:45.383000</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0 days 00:24:56.769000</td>\n",
|
||
" <td>2020-11-28 14:09:56.801</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td></td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>2020</td>\n",
|
||
" <td>Q</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>0 days 00:32:41.745000</td>\n",
|
||
" <td>HAM</td>\n",
|
||
" <td>44</td>\n",
|
||
" <td>NaT</td>\n",
|
||
" <td>4.0</td>\n",
|
||
" <td>2.0</td>\n",
|
||
" <td>0 days 00:30:17.211000</td>\n",
|
||
" <td>NaT</td>\n",
|
||
" <td>NaT</td>\n",
|
||
" <td>0 days 00:01:06.133000</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0 days 00:26:46.183000</td>\n",
|
||
" <td>2020-11-28 14:11:46.215</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td></td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>2020</td>\n",
|
||
" <td>Q</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>0 days 00:34:21.973000</td>\n",
|
||
" <td>HAM</td>\n",
|
||
" <td>44</td>\n",
|
||
" <td>0 days 00:01:40.228000</td>\n",
|
||
" <td>5.0</td>\n",
|
||
" <td>2.0</td>\n",
|
||
" <td>NaT</td>\n",
|
||
" <td>0 days 00:34:20.228000</td>\n",
|
||
" <td>0 days 00:00:28.239000</td>\n",
|
||
" <td>0 days 00:00:45.630000</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0 days 00:32:41.745000</td>\n",
|
||
" <td>2020-11-28 14:17:41.777</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td></td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>False</td>\n",
|
||
" <td>2020</td>\n",
|
||
" <td>Q</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>5 rows × 33 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" Time Driver DriverNumber LapTime \\\n",
|
||
"0 0 days 00:23:28.426000 HAM 44 NaT \n",
|
||
"1 0 days 00:24:56.769000 HAM 44 0 days 00:01:28.343000 \n",
|
||
"2 0 days 00:26:46.183000 HAM 44 0 days 00:01:49.414000 \n",
|
||
"3 0 days 00:32:41.745000 HAM 44 NaT \n",
|
||
"4 0 days 00:34:21.973000 HAM 44 0 days 00:01:40.228000 \n",
|
||
"\n",
|
||
" LapNumber Stint PitOutTime PitInTime \\\n",
|
||
"0 1.0 1.0 0 days 00:21:22.161000 NaT \n",
|
||
"1 2.0 1.0 NaT NaT \n",
|
||
"2 3.0 1.0 NaT 0 days 00:26:44.401000 \n",
|
||
"3 4.0 2.0 0 days 00:30:17.211000 NaT \n",
|
||
"4 5.0 2.0 NaT 0 days 00:34:20.228000 \n",
|
||
"\n",
|
||
" Sector1Time Sector2Time ... LapStartTime \\\n",
|
||
"0 NaT 0 days 00:00:57.104000 ... 0 days 00:21:22.161000 \n",
|
||
"1 0 days 00:00:28.083000 0 days 00:00:38.020000 ... 0 days 00:23:28.426000 \n",
|
||
"2 0 days 00:00:34.081000 0 days 00:00:45.383000 ... 0 days 00:24:56.769000 \n",
|
||
"3 NaT 0 days 00:01:06.133000 ... 0 days 00:26:46.183000 \n",
|
||
"4 0 days 00:00:28.239000 0 days 00:00:45.630000 ... 0 days 00:32:41.745000 \n",
|
||
"\n",
|
||
" LapStartDate TrackStatus Position Deleted DeletedReason \\\n",
|
||
"0 2020-11-28 14:06:22.193 1 NaN False \n",
|
||
"1 2020-11-28 14:08:28.458 1 NaN False \n",
|
||
"2 2020-11-28 14:09:56.801 1 NaN False \n",
|
||
"3 2020-11-28 14:11:46.215 1 NaN False \n",
|
||
"4 2020-11-28 14:17:41.777 1 NaN False \n",
|
||
"\n",
|
||
" FastF1Generated IsAccurate Year Session \n",
|
||
"0 False False 2020 Q \n",
|
||
"1 False True 2020 Q \n",
|
||
"2 False False 2020 Q \n",
|
||
"3 False False 2020 Q \n",
|
||
"4 False False 2020 Q \n",
|
||
"\n",
|
||
"[5 rows x 33 columns]"
|
||
]
|
||
},
|
||
"execution_count": 5,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"lap_data_combined.head(5)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 6,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2024-11-20T03:42:50.147348Z",
|
||
"start_time": "2024-11-20T03:42:50.070096Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"<class 'pandas.core.frame.DataFrame'>\n",
|
||
"RangeIndex: 1244 entries, 0 to 1243\n",
|
||
"Data columns (total 10 columns):\n",
|
||
" # Column Non-Null Count Dtype \n",
|
||
"--- ------ -------------- ----- \n",
|
||
" 0 Time 1244 non-null timedelta64[ns]\n",
|
||
" 1 AirTemp 1244 non-null float64 \n",
|
||
" 2 Humidity 1244 non-null float64 \n",
|
||
" 3 Pressure 1244 non-null float64 \n",
|
||
" 4 Rainfall 1244 non-null bool \n",
|
||
" 5 TrackTemp 1244 non-null float64 \n",
|
||
" 6 WindDirection 1244 non-null int64 \n",
|
||
" 7 WindSpeed 1244 non-null float64 \n",
|
||
" 8 Year 1244 non-null int64 \n",
|
||
" 9 Session 1244 non-null object \n",
|
||
"dtypes: bool(1), float64(5), int64(2), object(1), timedelta64[ns](1)\n",
|
||
"memory usage: 88.8+ KB\n",
|
||
"<class 'pandas.core.frame.DataFrame'>\n",
|
||
"RangeIndex: 6628 entries, 0 to 6627\n",
|
||
"Data columns (total 33 columns):\n",
|
||
" # Column Non-Null Count Dtype \n",
|
||
"--- ------ -------------- ----- \n",
|
||
" 0 Time 6628 non-null timedelta64[ns]\n",
|
||
" 1 Driver 6628 non-null object \n",
|
||
" 2 DriverNumber 6628 non-null object \n",
|
||
" 3 LapTime 6058 non-null timedelta64[ns]\n",
|
||
" 4 LapNumber 6628 non-null float64 \n",
|
||
" 5 Stint 6628 non-null float64 \n",
|
||
" 6 PitOutTime 689 non-null timedelta64[ns]\n",
|
||
" 7 PitInTime 694 non-null timedelta64[ns]\n",
|
||
" 8 Sector1Time 6056 non-null timedelta64[ns]\n",
|
||
" 9 Sector2Time 6599 non-null timedelta64[ns]\n",
|
||
" 10 Sector3Time 6566 non-null timedelta64[ns]\n",
|
||
" 11 Sector1SessionTime 6048 non-null timedelta64[ns]\n",
|
||
" 12 Sector2SessionTime 6599 non-null timedelta64[ns]\n",
|
||
" 13 Sector3SessionTime 6566 non-null timedelta64[ns]\n",
|
||
" 14 SpeedI1 5394 non-null float64 \n",
|
||
" 15 SpeedI2 6601 non-null float64 \n",
|
||
" 16 SpeedFL 5926 non-null float64 \n",
|
||
" 17 SpeedST 5944 non-null float64 \n",
|
||
" 18 IsPersonalBest 6622 non-null object \n",
|
||
" 19 Compound 6628 non-null object \n",
|
||
" 20 TyreLife 6628 non-null float64 \n",
|
||
" 21 FreshTyre 6628 non-null bool \n",
|
||
" 22 Team 6628 non-null object \n",
|
||
" 23 LapStartTime 6628 non-null timedelta64[ns]\n",
|
||
" 24 LapStartDate 6622 non-null datetime64[ns] \n",
|
||
" 25 TrackStatus 6628 non-null object \n",
|
||
" 26 Position 5349 non-null float64 \n",
|
||
" 27 Deleted 6628 non-null bool \n",
|
||
" 28 DeletedReason 6622 non-null object \n",
|
||
" 29 FastF1Generated 6628 non-null bool \n",
|
||
" 30 IsAccurate 6628 non-null bool \n",
|
||
" 31 Year 6628 non-null int64 \n",
|
||
" 32 Session 6628 non-null object \n",
|
||
"dtypes: bool(4), datetime64[ns](1), float64(8), int64(1), object(8), timedelta64[ns](11)\n",
|
||
"memory usage: 1.5+ MB\n",
|
||
"Time 1244\n",
|
||
"AirTemp 107\n",
|
||
"Humidity 240\n",
|
||
"Pressure 62\n",
|
||
"Rainfall 1\n",
|
||
"TrackTemp 144\n",
|
||
"WindDirection 301\n",
|
||
"WindSpeed 31\n",
|
||
"Year 5\n",
|
||
"Session 2\n",
|
||
"dtype: int64\n",
|
||
"Time 6622\n",
|
||
"Driver 29\n",
|
||
"DriverNumber 30\n",
|
||
"LapTime 4811\n",
|
||
"LapNumber 57\n",
|
||
"Stint 7\n",
|
||
"PitOutTime 689\n",
|
||
"PitInTime 694\n",
|
||
"Sector1Time 3257\n",
|
||
"Sector2Time 4280\n",
|
||
"Sector3Time 3395\n",
|
||
"Sector1SessionTime 6043\n",
|
||
"Sector2SessionTime 6598\n",
|
||
"Sector3SessionTime 6558\n",
|
||
"SpeedI1 175\n",
|
||
"SpeedI2 204\n",
|
||
"SpeedFL 171\n",
|
||
"SpeedST 288\n",
|
||
"IsPersonalBest 2\n",
|
||
"Compound 3\n",
|
||
"TyreLife 37\n",
|
||
"FreshTyre 2\n",
|
||
"Team 15\n",
|
||
"LapStartTime 6511\n",
|
||
"LapStartDate 6509\n",
|
||
"TrackStatus 18\n",
|
||
"Position 20\n",
|
||
"Deleted 2\n",
|
||
"DeletedReason 38\n",
|
||
"FastF1Generated 2\n",
|
||
"IsAccurate 2\n",
|
||
"Year 5\n",
|
||
"Session 2\n",
|
||
"dtype: int64\n",
|
||
"Time 0\n",
|
||
"AirTemp 0\n",
|
||
"Humidity 0\n",
|
||
"Pressure 0\n",
|
||
"Rainfall 0\n",
|
||
"TrackTemp 0\n",
|
||
"WindDirection 0\n",
|
||
"WindSpeed 0\n",
|
||
"Year 0\n",
|
||
"Session 0\n",
|
||
"dtype: int64\n",
|
||
"Time 0\n",
|
||
"Driver 0\n",
|
||
"DriverNumber 0\n",
|
||
"LapTime 570\n",
|
||
"LapNumber 0\n",
|
||
"Stint 0\n",
|
||
"PitOutTime 5939\n",
|
||
"PitInTime 5934\n",
|
||
"Sector1Time 572\n",
|
||
"Sector2Time 29\n",
|
||
"Sector3Time 62\n",
|
||
"Sector1SessionTime 580\n",
|
||
"Sector2SessionTime 29\n",
|
||
"Sector3SessionTime 62\n",
|
||
"SpeedI1 1234\n",
|
||
"SpeedI2 27\n",
|
||
"SpeedFL 702\n",
|
||
"SpeedST 684\n",
|
||
"IsPersonalBest 6\n",
|
||
"Compound 0\n",
|
||
"TyreLife 0\n",
|
||
"FreshTyre 0\n",
|
||
"Team 0\n",
|
||
"LapStartTime 0\n",
|
||
"LapStartDate 6\n",
|
||
"TrackStatus 0\n",
|
||
"Position 1279\n",
|
||
"Deleted 0\n",
|
||
"DeletedReason 6\n",
|
||
"FastF1Generated 0\n",
|
||
"IsAccurate 0\n",
|
||
"Year 0\n",
|
||
"Session 0\n",
|
||
"dtype: int64\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"#What does our data look like?\n",
|
||
"weather_data_combined.info()\n",
|
||
"lap_data_combined.info()\n",
|
||
"\n",
|
||
"#How many unique values do we have?\n",
|
||
"print(weather_data_combined.nunique())\n",
|
||
"print(lap_data_combined.nunique())\n",
|
||
"\n",
|
||
"#Are there any missing values?\n",
|
||
"print(weather_data_combined.isnull().sum())\n",
|
||
"print(lap_data_combined.isnull().sum())"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 7,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2024-11-20T03:38:18.767017Z",
|
||
"start_time": "2024-11-20T03:38:18.692890Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>Time</th>\n",
|
||
" <th>AirTemp</th>\n",
|
||
" <th>Humidity</th>\n",
|
||
" <th>Pressure</th>\n",
|
||
" <th>TrackTemp</th>\n",
|
||
" <th>WindDirection</th>\n",
|
||
" <th>WindSpeed</th>\n",
|
||
" <th>Year</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>count</th>\n",
|
||
" <td>1244</td>\n",
|
||
" <td>1244.000000</td>\n",
|
||
" <td>1244.000000</td>\n",
|
||
" <td>1244.000000</td>\n",
|
||
" <td>1244.000000</td>\n",
|
||
" <td>1244.000000</td>\n",
|
||
" <td>1244.000000</td>\n",
|
||
" <td>1244.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>mean</th>\n",
|
||
" <td>0 days 01:10:54.298340032</td>\n",
|
||
" <td>23.295579</td>\n",
|
||
" <td>45.302331</td>\n",
|
||
" <td>1015.170096</td>\n",
|
||
" <td>27.604582</td>\n",
|
||
" <td>152.864148</td>\n",
|
||
" <td>0.776367</td>\n",
|
||
" <td>2021.926849</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>std</th>\n",
|
||
" <td>0 days 00:49:12.934930673</td>\n",
|
||
" <td>3.554556</td>\n",
|
||
" <td>16.844089</td>\n",
|
||
" <td>2.753137</td>\n",
|
||
" <td>3.205810</td>\n",
|
||
" <td>132.617082</td>\n",
|
||
" <td>0.498481</td>\n",
|
||
" <td>1.447483</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>min</th>\n",
|
||
" <td>0 days 00:00:14.093000</td>\n",
|
||
" <td>17.600000</td>\n",
|
||
" <td>15.000000</td>\n",
|
||
" <td>1008.400000</td>\n",
|
||
" <td>20.800000</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>2020.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>25%</th>\n",
|
||
" <td>0 days 00:31:15.284250</td>\n",
|
||
" <td>19.700000</td>\n",
|
||
" <td>33.000000</td>\n",
|
||
" <td>1013.700000</td>\n",
|
||
" <td>26.200000</td>\n",
|
||
" <td>15.000000</td>\n",
|
||
" <td>0.500000</td>\n",
|
||
" <td>2021.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>50%</th>\n",
|
||
" <td>0 days 01:02:24.641500</td>\n",
|
||
" <td>24.300000</td>\n",
|
||
" <td>49.000000</td>\n",
|
||
" <td>1016.100000</td>\n",
|
||
" <td>27.600000</td>\n",
|
||
" <td>161.000000</td>\n",
|
||
" <td>0.700000</td>\n",
|
||
" <td>2022.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>75%</th>\n",
|
||
" <td>0 days 01:43:50.269000</td>\n",
|
||
" <td>26.100000</td>\n",
|
||
" <td>56.125000</td>\n",
|
||
" <td>1017.000000</td>\n",
|
||
" <td>29.300000</td>\n",
|
||
" <td>294.000000</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>2023.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>max</th>\n",
|
||
" <td>0 days 03:35:39.278000</td>\n",
|
||
" <td>30.400000</td>\n",
|
||
" <td>75.500000</td>\n",
|
||
" <td>1019.300000</td>\n",
|
||
" <td>35.600000</td>\n",
|
||
" <td>359.000000</td>\n",
|
||
" <td>3.100000</td>\n",
|
||
" <td>2024.000000</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" Time AirTemp Humidity Pressure \\\n",
|
||
"count 1244 1244.000000 1244.000000 1244.000000 \n",
|
||
"mean 0 days 01:10:54.298340032 23.295579 45.302331 1015.170096 \n",
|
||
"std 0 days 00:49:12.934930673 3.554556 16.844089 2.753137 \n",
|
||
"min 0 days 00:00:14.093000 17.600000 15.000000 1008.400000 \n",
|
||
"25% 0 days 00:31:15.284250 19.700000 33.000000 1013.700000 \n",
|
||
"50% 0 days 01:02:24.641500 24.300000 49.000000 1016.100000 \n",
|
||
"75% 0 days 01:43:50.269000 26.100000 56.125000 1017.000000 \n",
|
||
"max 0 days 03:35:39.278000 30.400000 75.500000 1019.300000 \n",
|
||
"\n",
|
||
" TrackTemp WindDirection WindSpeed Year \n",
|
||
"count 1244.000000 1244.000000 1244.000000 1244.000000 \n",
|
||
"mean 27.604582 152.864148 0.776367 2021.926849 \n",
|
||
"std 3.205810 132.617082 0.498481 1.447483 \n",
|
||
"min 20.800000 0.000000 0.000000 2020.000000 \n",
|
||
"25% 26.200000 15.000000 0.500000 2021.000000 \n",
|
||
"50% 27.600000 161.000000 0.700000 2022.000000 \n",
|
||
"75% 29.300000 294.000000 1.000000 2023.000000 \n",
|
||
"max 35.600000 359.000000 3.100000 2024.000000 "
|
||
]
|
||
},
|
||
"execution_count": 7,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"#Describe the data\n",
|
||
"weather_data_combined.describe()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 8,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2024-11-20T03:39:18.917017Z",
|
||
"start_time": "2024-11-20T03:39:18.855681Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>Time</th>\n",
|
||
" <th>LapTime</th>\n",
|
||
" <th>LapNumber</th>\n",
|
||
" <th>Stint</th>\n",
|
||
" <th>PitOutTime</th>\n",
|
||
" <th>PitInTime</th>\n",
|
||
" <th>Sector1Time</th>\n",
|
||
" <th>Sector2Time</th>\n",
|
||
" <th>Sector3Time</th>\n",
|
||
" <th>Sector1SessionTime</th>\n",
|
||
" <th>...</th>\n",
|
||
" <th>Sector3SessionTime</th>\n",
|
||
" <th>SpeedI1</th>\n",
|
||
" <th>SpeedI2</th>\n",
|
||
" <th>SpeedFL</th>\n",
|
||
" <th>SpeedST</th>\n",
|
||
" <th>TyreLife</th>\n",
|
||
" <th>LapStartTime</th>\n",
|
||
" <th>LapStartDate</th>\n",
|
||
" <th>Position</th>\n",
|
||
" <th>Year</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>count</th>\n",
|
||
" <td>6628</td>\n",
|
||
" <td>6058</td>\n",
|
||
" <td>6628.000000</td>\n",
|
||
" <td>6628.000000</td>\n",
|
||
" <td>689</td>\n",
|
||
" <td>694</td>\n",
|
||
" <td>6056</td>\n",
|
||
" <td>6599</td>\n",
|
||
" <td>6566</td>\n",
|
||
" <td>6048</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>6566</td>\n",
|
||
" <td>5394.000000</td>\n",
|
||
" <td>6601.000000</td>\n",
|
||
" <td>5926.000000</td>\n",
|
||
" <td>5944.000000</td>\n",
|
||
" <td>6628.000000</td>\n",
|
||
" <td>6628</td>\n",
|
||
" <td>6622</td>\n",
|
||
" <td>5349.000000</td>\n",
|
||
" <td>6628.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>mean</th>\n",
|
||
" <td>0 days 01:42:02.192371303</td>\n",
|
||
" <td>0 days 00:01:41.117758666</td>\n",
|
||
" <td>24.366777</td>\n",
|
||
" <td>2.545866</td>\n",
|
||
" <td>0 days 01:07:15.479603773</td>\n",
|
||
" <td>0 days 01:08:51.778342939</td>\n",
|
||
" <td>0 days 00:00:32.801727873</td>\n",
|
||
" <td>0 days 00:00:44.382851038</td>\n",
|
||
" <td>0 days 00:00:25.863896740</td>\n",
|
||
" <td>0 days 01:45:48.699285218</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0 days 01:42:19.752332013</td>\n",
|
||
" <td>221.138673</td>\n",
|
||
" <td>240.172095</td>\n",
|
||
" <td>277.101249</td>\n",
|
||
" <td>276.023890</td>\n",
|
||
" <td>8.922299</td>\n",
|
||
" <td>0 days 01:40:00.888514634</td>\n",
|
||
" <td>2022-05-19 11:52:27.328777728</td>\n",
|
||
" <td>9.980183</td>\n",
|
||
" <td>2022.045112</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>min</th>\n",
|
||
" <td>0 days 00:15:27.765000</td>\n",
|
||
" <td>0 days 00:01:27.264000</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>0 days 00:13:35.553000</td>\n",
|
||
" <td>0 days 00:18:28.415000</td>\n",
|
||
" <td>0 days 00:00:27.669000</td>\n",
|
||
" <td>0 days 00:00:37.715000</td>\n",
|
||
" <td>0 days 00:00:21.853000</td>\n",
|
||
" <td>0 days 00:15:57.525000</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0 days 00:15:28.005000</td>\n",
|
||
" <td>54.000000</td>\n",
|
||
" <td>44.000000</td>\n",
|
||
" <td>42.000000</td>\n",
|
||
" <td>31.000000</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>0 days 00:13:35.553000</td>\n",
|
||
" <td>2020-11-28 14:00:03.421000</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>2020.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>25%</th>\n",
|
||
" <td>0 days 01:09:17.505500</td>\n",
|
||
" <td>0 days 00:01:36.219250</td>\n",
|
||
" <td>9.000000</td>\n",
|
||
" <td>2.000000</td>\n",
|
||
" <td>0 days 00:29:59.107000</td>\n",
|
||
" <td>0 days 00:35:37.662250</td>\n",
|
||
" <td>0 days 00:00:30.732750</td>\n",
|
||
" <td>0 days 00:00:41.676500</td>\n",
|
||
" <td>0 days 00:00:23.736000</td>\n",
|
||
" <td>0 days 01:14:22.595250</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0 days 01:09:21.996000</td>\n",
|
||
" <td>225.000000</td>\n",
|
||
" <td>241.000000</td>\n",
|
||
" <td>277.000000</td>\n",
|
||
" <td>280.000000</td>\n",
|
||
" <td>3.000000</td>\n",
|
||
" <td>0 days 01:06:55.995500</td>\n",
|
||
" <td>2021-03-28 15:21:05.414749952</td>\n",
|
||
" <td>5.000000</td>\n",
|
||
" <td>2021.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>50%</th>\n",
|
||
" <td>0 days 01:39:58.302000</td>\n",
|
||
" <td>0 days 00:01:37.865500</td>\n",
|
||
" <td>22.000000</td>\n",
|
||
" <td>2.000000</td>\n",
|
||
" <td>0 days 00:59:30.380000</td>\n",
|
||
" <td>0 days 00:58:21.241500</td>\n",
|
||
" <td>0 days 00:00:31.148000</td>\n",
|
||
" <td>0 days 00:00:42.582000</td>\n",
|
||
" <td>0 days 00:00:24.126000</td>\n",
|
||
" <td>0 days 01:44:32.815000</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0 days 01:40:39.423500</td>\n",
|
||
" <td>231.000000</td>\n",
|
||
" <td>250.000000</td>\n",
|
||
" <td>281.000000</td>\n",
|
||
" <td>295.000000</td>\n",
|
||
" <td>8.000000</td>\n",
|
||
" <td>0 days 01:38:20.161000</td>\n",
|
||
" <td>2022-03-20 15:46:26.377999872</td>\n",
|
||
" <td>10.000000</td>\n",
|
||
" <td>2022.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>75%</th>\n",
|
||
" <td>0 days 02:13:43.248500</td>\n",
|
||
" <td>0 days 00:01:40.391500</td>\n",
|
||
" <td>39.000000</td>\n",
|
||
" <td>3.000000</td>\n",
|
||
" <td>0 days 01:28:09.343000</td>\n",
|
||
" <td>0 days 01:25:50.796000</td>\n",
|
||
" <td>0 days 00:00:31.792000</td>\n",
|
||
" <td>0 days 00:00:43.779500</td>\n",
|
||
" <td>0 days 00:00:24.901750</td>\n",
|
||
" <td>0 days 02:15:42.518250</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0 days 02:14:05.441000</td>\n",
|
||
" <td>235.000000</td>\n",
|
||
" <td>257.000000</td>\n",
|
||
" <td>284.000000</td>\n",
|
||
" <td>303.000000</td>\n",
|
||
" <td>13.000000</td>\n",
|
||
" <td>0 days 02:12:04.575250</td>\n",
|
||
" <td>2023-03-05 16:12:27.612000</td>\n",
|
||
" <td>15.000000</td>\n",
|
||
" <td>2023.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>max</th>\n",
|
||
" <td>0 days 03:33:47.428000</td>\n",
|
||
" <td>0 days 00:03:05.092000</td>\n",
|
||
" <td>57.000000</td>\n",
|
||
" <td>7.000000</td>\n",
|
||
" <td>0 days 03:28:04.389000</td>\n",
|
||
" <td>0 days 03:27:38.638000</td>\n",
|
||
" <td>0 days 00:01:39.160000</td>\n",
|
||
" <td>0 days 00:01:27.340000</td>\n",
|
||
" <td>0 days 00:01:10.478000</td>\n",
|
||
" <td>0 days 03:32:33.946000</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0 days 03:33:47.428000</td>\n",
|
||
" <td>248.000000</td>\n",
|
||
" <td>274.000000</td>\n",
|
||
" <td>302.000000</td>\n",
|
||
" <td>333.000000</td>\n",
|
||
" <td>37.000000</td>\n",
|
||
" <td>0 days 03:32:00.121000</td>\n",
|
||
" <td>2024-03-02 16:35:23.280000</td>\n",
|
||
" <td>20.000000</td>\n",
|
||
" <td>2024.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>std</th>\n",
|
||
" <td>0 days 00:44:32.891277624</td>\n",
|
||
" <td>0 days 00:00:10.575132207</td>\n",
|
||
" <td>16.860094</td>\n",
|
||
" <td>1.155031</td>\n",
|
||
" <td>0 days 00:41:40.584927846</td>\n",
|
||
" <td>0 days 00:39:18.227030052</td>\n",
|
||
" <td>0 days 00:00:05.843587609</td>\n",
|
||
" <td>0 days 00:00:06.025195453</td>\n",
|
||
" <td>0 days 00:00:04.862155415</td>\n",
|
||
" <td>0 days 00:42:50.934311129</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0 days 00:44:32.425629872</td>\n",
|
||
" <td>28.861242</td>\n",
|
||
" <td>32.657155</td>\n",
|
||
" <td>22.133798</td>\n",
|
||
" <td>52.878471</td>\n",
|
||
" <td>6.475231</td>\n",
|
||
" <td>0 days 00:44:57.137961013</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>5.511766</td>\n",
|
||
" <td>1.411731</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>8 rows × 21 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" Time LapTime LapNumber \\\n",
|
||
"count 6628 6058 6628.000000 \n",
|
||
"mean 0 days 01:42:02.192371303 0 days 00:01:41.117758666 24.366777 \n",
|
||
"min 0 days 00:15:27.765000 0 days 00:01:27.264000 1.000000 \n",
|
||
"25% 0 days 01:09:17.505500 0 days 00:01:36.219250 9.000000 \n",
|
||
"50% 0 days 01:39:58.302000 0 days 00:01:37.865500 22.000000 \n",
|
||
"75% 0 days 02:13:43.248500 0 days 00:01:40.391500 39.000000 \n",
|
||
"max 0 days 03:33:47.428000 0 days 00:03:05.092000 57.000000 \n",
|
||
"std 0 days 00:44:32.891277624 0 days 00:00:10.575132207 16.860094 \n",
|
||
"\n",
|
||
" Stint PitOutTime PitInTime \\\n",
|
||
"count 6628.000000 689 694 \n",
|
||
"mean 2.545866 0 days 01:07:15.479603773 0 days 01:08:51.778342939 \n",
|
||
"min 1.000000 0 days 00:13:35.553000 0 days 00:18:28.415000 \n",
|
||
"25% 2.000000 0 days 00:29:59.107000 0 days 00:35:37.662250 \n",
|
||
"50% 2.000000 0 days 00:59:30.380000 0 days 00:58:21.241500 \n",
|
||
"75% 3.000000 0 days 01:28:09.343000 0 days 01:25:50.796000 \n",
|
||
"max 7.000000 0 days 03:28:04.389000 0 days 03:27:38.638000 \n",
|
||
"std 1.155031 0 days 00:41:40.584927846 0 days 00:39:18.227030052 \n",
|
||
"\n",
|
||
" Sector1Time Sector2Time \\\n",
|
||
"count 6056 6599 \n",
|
||
"mean 0 days 00:00:32.801727873 0 days 00:00:44.382851038 \n",
|
||
"min 0 days 00:00:27.669000 0 days 00:00:37.715000 \n",
|
||
"25% 0 days 00:00:30.732750 0 days 00:00:41.676500 \n",
|
||
"50% 0 days 00:00:31.148000 0 days 00:00:42.582000 \n",
|
||
"75% 0 days 00:00:31.792000 0 days 00:00:43.779500 \n",
|
||
"max 0 days 00:01:39.160000 0 days 00:01:27.340000 \n",
|
||
"std 0 days 00:00:05.843587609 0 days 00:00:06.025195453 \n",
|
||
"\n",
|
||
" Sector3Time Sector1SessionTime ... \\\n",
|
||
"count 6566 6048 ... \n",
|
||
"mean 0 days 00:00:25.863896740 0 days 01:45:48.699285218 ... \n",
|
||
"min 0 days 00:00:21.853000 0 days 00:15:57.525000 ... \n",
|
||
"25% 0 days 00:00:23.736000 0 days 01:14:22.595250 ... \n",
|
||
"50% 0 days 00:00:24.126000 0 days 01:44:32.815000 ... \n",
|
||
"75% 0 days 00:00:24.901750 0 days 02:15:42.518250 ... \n",
|
||
"max 0 days 00:01:10.478000 0 days 03:32:33.946000 ... \n",
|
||
"std 0 days 00:00:04.862155415 0 days 00:42:50.934311129 ... \n",
|
||
"\n",
|
||
" Sector3SessionTime SpeedI1 SpeedI2 SpeedFL \\\n",
|
||
"count 6566 5394.000000 6601.000000 5926.000000 \n",
|
||
"mean 0 days 01:42:19.752332013 221.138673 240.172095 277.101249 \n",
|
||
"min 0 days 00:15:28.005000 54.000000 44.000000 42.000000 \n",
|
||
"25% 0 days 01:09:21.996000 225.000000 241.000000 277.000000 \n",
|
||
"50% 0 days 01:40:39.423500 231.000000 250.000000 281.000000 \n",
|
||
"75% 0 days 02:14:05.441000 235.000000 257.000000 284.000000 \n",
|
||
"max 0 days 03:33:47.428000 248.000000 274.000000 302.000000 \n",
|
||
"std 0 days 00:44:32.425629872 28.861242 32.657155 22.133798 \n",
|
||
"\n",
|
||
" SpeedST TyreLife LapStartTime \\\n",
|
||
"count 5944.000000 6628.000000 6628 \n",
|
||
"mean 276.023890 8.922299 0 days 01:40:00.888514634 \n",
|
||
"min 31.000000 1.000000 0 days 00:13:35.553000 \n",
|
||
"25% 280.000000 3.000000 0 days 01:06:55.995500 \n",
|
||
"50% 295.000000 8.000000 0 days 01:38:20.161000 \n",
|
||
"75% 303.000000 13.000000 0 days 02:12:04.575250 \n",
|
||
"max 333.000000 37.000000 0 days 03:32:00.121000 \n",
|
||
"std 52.878471 6.475231 0 days 00:44:57.137961013 \n",
|
||
"\n",
|
||
" LapStartDate Position Year \n",
|
||
"count 6622 5349.000000 6628.000000 \n",
|
||
"mean 2022-05-19 11:52:27.328777728 9.980183 2022.045112 \n",
|
||
"min 2020-11-28 14:00:03.421000 1.000000 2020.000000 \n",
|
||
"25% 2021-03-28 15:21:05.414749952 5.000000 2021.000000 \n",
|
||
"50% 2022-03-20 15:46:26.377999872 10.000000 2022.000000 \n",
|
||
"75% 2023-03-05 16:12:27.612000 15.000000 2023.000000 \n",
|
||
"max 2024-03-02 16:35:23.280000 20.000000 2024.000000 \n",
|
||
"std NaN 5.511766 1.411731 \n",
|
||
"\n",
|
||
"[8 rows x 21 columns]"
|
||
]
|
||
},
|
||
"execution_count": 8,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"lap_data_combined.describe()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 9,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2024-11-20T03:40:23.364581Z",
|
||
"start_time": "2024-11-20T03:40:23.214723Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA0oAAAIhCAYAAABwnkrAAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAABKjElEQVR4nO3deXwU9eH/8feGJJuQYyEcCUgSQBruQwtiEDnkvj2oBTSASBEFRFBB4EuBlghoPdDKkaKoCFIQECqYSksSioKCgCBasAgJCgQLZROOHCTz+8NH9udOAmYx2Qmb1/Px2Efc2U9m3pMdMG9m5rM2wzAMAQAAAABc/KwOAAAAAAAVDUUJAAAAAEwoSgAAAABgQlECAAAAABOKEgAAAACYUJQAAAAAwISiBAAAAAAmFCUAAAAAMKEoAQAAAIAJRQmAT7DZbKV6pKamWh3VMlu2bNHs2bOtjlGiN9980+19CgoKUlRUlLp27ap58+bpzJkzxb5n9uzZstlsHm3n0qVLmj17tsfHQUnbql+/vvr37+/Ren7OqlWr9PLLL5f4ms1ms+T9K9r3//73v+Wy/vPnz6tevXpq3769CgoKir2+Y8cOValSRdOmTSuX7QPA1VCUAPiEnTt3uj369u2r4ODgYstvvfVWq6NaZsuWLZozZ47VMa5p+fLl2rlzp7Zu3arXXntNbdq00YIFC9S0aVP94x//cBs7evRo7dy506P1X7p0SXPmzPG4KF3Ptq7HtYrSzp07NXr06HLP4G3VqlXTG2+8oc8++0wLFixwe+3SpUt66KGH1Lx58wp/7ALwPf5WBwCAsnD77be7Pa9Vq5b8/PyKLfclly5dUtWqVa2OUaY5WrRoobZt27qe33fffZo0aZI6duyoe++9V998840iIyMlSfXq1VO9evXKZLtXU7Rv3tjWz/HlY7lnz5569NFHNWfOHA0YMEAtW7aUJD3zzDNKT0/X7t27FRgYWO45Ll++rKCgII/PVALwTZxRAlBp5OXlae7cuWrSpInsdrtq1aqlhx56SD/88IPbuKJLqj744APdcsstCg4OVtOmTfXBBx9I+vEysaZNmyokJES33Xab9uzZ4/b9I0eOVGhoqA4dOqRu3bopJCREtWrV0vjx43Xp0iW3sYZhaNGiRWrTpo2Cg4NVvXp1DR48WN9++63buC5duqhFixbavn27OnTooKpVq2rUqFGSpL/+9a/q2bOn6tSp48r6zDPP6OLFi26ZXnvtNUnulykeP35cx48fl81m05tvvlnsZ2a+3KvoMqy9e/dq8ODBql69um6++WaP9sVTMTExeuGFF5Sdna2lS5cWy/JT27ZtU5cuXVSjRg0FBwcrJiZG9913ny5duqTjx4+rVq1akqQ5c+a4fgYjR4782X271mV+GzZsUKtWrRQUFKSGDRvqlVdecXu96LLC48ePuy1PTU11uxy0S5cu2rx5s9LT093eoyIlXXr35ZdfatCgQapevbqCgoLUpk0bvfXWWyVu591339WMGTNUt25dhYeHq3v37jp8+PDVf/AmJ06c0L333qvw8HA5HA49+OCDbn92Hn74YUVERBQ7xiXprrvuUvPmza+5/ueff17R0dEaMWKE8vPztX37dv35z3/W7Nmz1bp1a0k/Huvx8fEKCQlRaGioevXqpX379rmtZ8+ePRoyZIjq16+v4OBg1a9fX0OHDlV6errbuKL35aOPPtKoUaNUq1YtVa1aVbm5uaX+mQDwbRQlAJVCYWGhBg0apPnz52vYsGHavHmz5s+fr61bt6pLly66fPmy2/gvvvhC06ZN09SpU7V+/Xo5HA7de++9mjVrlpYtW6Znn31WK1eulNPpVP/+/Yt9f35+vvr27atu3brp/fff1/jx47V06VL99re/dRv3yCOP6IknnlD37t31/vvva9GiRTp06JA6dOigzMxMt7GnTp3Sgw8+qGHDhmnLli167LHHJEnffPON+vbtq9dff13Jycl64okntGbNGg0YMMD1vTNnztTgwYMluV+mWKdOnev6ed57771q1KiR1q5dqyVLlni8L57q27evqlSpou3bt191zPHjx9WvXz8FBgbqjTfeUHJysubPn6+QkBDl5eWpTp06Sk5OlvTjL/VFP4OZM2f+7L5dzf79+/XEE09o0qRJ2rBhgzp06KCJEyfqT3/6k8f7uGjRIt1xxx2Kiopye4+u5vDhw+rQoYMOHTqkV155RevXr1ezZs00cuRIPffcc8XGT58+Xenp6Vq2bJmSkpL0zTffaMCAASXeF1SSe+65R40aNdJ7772n2bNn6/3331evXr2Un58vSZo4caL+97//adWqVW7f99VXXyklJUXjxo275vpDQkL01ltv6YsvvtD06dP10EMP6bbbbtPUqVMlSc8+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PXvUqVMnhYSE6NSpU9qxY4datmypRx999Jrb6dChg6pXr66xY8dq1qxZCggI0MqVK/XFF18UG1t02dqCBQvUp08fValSRa1atVJgYKAefPBBvfHGG7r55pvVunVrffbZZ8VmL7uWstgX6cfprovuPzlz5oz+9a9/afny5apSpYo2bNjgmt67JEuWLNG2bdvUr18/xcTEKCcnR2+88YYkqXv37pJ+PHMYGxurjRs3qlu3boqIiFDNmjVdZcZTdevW1cCBAzV79mzVqVNH77zzjrZu3aoFCxa47mVr166dGjdurKeeekpXrlxR9erVtWHDBu3YsaPY+lq2bKn169dr8eLF+vWvfy0/Pz+3z5X6qVmzZumDDz5Q165d9fvf/14RERFauXKlNm/erOeee04Oh+O69ulq1q9fL39/f/Xo0UOHDh3SzJkz1bp162LFuFq1aho+fLgWL16s2NhYt9kXr1f9+vX1hz/8QTNmzNC3336r3r17q3r16srMzNRnn32mkJAQzZkzR+Hh4erUqZOef/551/ualpam119/XdWqVfvFOQBUMtbOJQEA5cM8651hGEZ+fr7xpz/9yWjdurURFBRkhIaGGk2aNDEeeeQR45tvvnGNi42NNfr161dsnZKMcePGuS0rmjHu+eefL7btAwcOGF26dDGCg4ONiIgI49FHHzUuXLhQbL1vvPGG0b59eyMkJMQIDg42br75ZmP48OHGnj17XGM6d+5sNG/evMR9/eSTT4z4+HijatWqRq1atYzRo0cbe/fuLTaTXW5urjF69GijVq1ahs1mc5uJzel0GqNHjzYiIyONkJAQY8CAAcbx48evOuvdDz/8UGKW0uxLSYpmICt6BAYGGrVr1zY6d+5sPPvss8aZM2eKfY95JrqdO3ca99xzjxEbG2vY7XajRo0aRufOnd1mJDQMw/jHP/5h3HLLLYbdbjckGSNGjPjZfbvarHf9+vUz3nvvPaN58+ZGYGCgUb9+fePFF18s9v1HjhwxevbsaYSHhxu1atUyJkyYYGzevLnYrHfnzp0zBg8ebFSrVs31HhUxvxeGYRgHDx40BgwYYDgcDiMwMNBo3bp1sdkLi2a9W7t2rdvya812WNK+f/7558aAAQOM0NBQIywszBg6dKiRmZlZ4vekpqYakoz58+dfc91XU9KfNcP4cZbJrl27GuHh4Ybdbjdi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",
|
||
"text/plain": [
|
||
"<Figure size 1000x600 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"#Visualizations\n",
|
||
"# Boxplot of Weather Data\n",
|
||
"plt.figure(figsize=(10, 6))\n",
|
||
"sns.boxplot(x='Year', y='TrackTemp', data=weather_data_combined)\n",
|
||
"plt.title('Temperature Distribution by Year')\n",
|
||
"plt.show()\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 10,
|
||
"metadata": {
|
||
"ExecuteTime": {
|
||
"end_time": "2024-11-20T04:00:21.344518Z",
|
||
"start_time": "2024-11-20T04:00:21.181130Z"
|
||
}
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA1cAAAIhCAYAAACizkCYAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAAChSUlEQVR4nOzdeXxU9b0//teZ7cy+ZM8kgSAg+ypocQOkiGu1bhXaW6m2bqBtY29/0lqL3lbaammt2+23vYXeK+6C1dZaEVS0oqxhV2QJWSfrLJl9O78/JhmSkEDmJGEyyev5eEQzZ84585ksZN7zOu/PR5AkSQIRERERERH1iSLdAyAiIiIiIhoKWFwRERERERH1AxZXRERERERE/YDFFRERERERUT9gcUVERERERNQPWFwRERERERH1AxZXRERERERE/YDFFRERERERUT9gcUVERERERNQPWFwREaXB2rVrIQhCtx8/+tGP+vWxPvnkE6xcuRIul6tfz9vVs88+i7Vr1/Z6/9LSUlxzzTUDN6BeqKio6PH70PWjoqIC8+bNw7x589I65lQtXboURqNxwM5//PhxmEwm3Hjjjd3e/8ILL0AQBPzxj38csDEQEQ0WqnQPgIhoOFuzZg3Gjx/faZvdbu/Xx/jkk0/wyCOPYOnSpbBarf167o6effZZ5OTkYOnSpQP2GP2tsLAQW7du7bTt3nvvhdvtxrp1607Z99lnnz2bw8sIo0aNwurVq3HnnXfihRdewJIlS5L3ORwO3HfffVi0aBHuuuuuNI6SiOjsYHFFRJRGkydPxqxZs9I9jGFLFEV85Stf6bTNbDYjHA6fsh0AJk6ceLaGllG+973vYcOGDbjvvvswf/58FBYWAgDuuusuSJKE//mf/zkr4/D7/dDr9WflsYiIusPLAomIBqEjR47gO9/5DsaOHQu9Xo+ioiJce+212LdvX6f94vE4fvGLX2DcuHHQ6XSwWq2YOnUqnnzySQDAypUr8Z//+Z8AEglD+yVuH3zwQfIcL7/8MubMmQODwQCj0YhFixZh9+7dnR7n2LFjuPXWW2G32yGKIvLz87FgwQKUl5cDSFzid+DAAXz44YfJxygtLe3z12Hjxo247rrrUFxcDK1WizFjxuCuu+5CU1NTp/1WrlwJQRCwe/du3HDDDTCbzbBYLPjWt76FxsbGPo+jXdfLAtsvK3z88cfx61//GqWlpdDpdJg3bx4OHz6MSCSCBx98EHa7HRaLBV//+tfR0NBwynn743twJgcOHMCCBQtgMBiQm5uL5cuXw+/3J+9fsGABxo8fD0mSOh0nSRLGjBmDq6+++rTnby+g7rzzTgDA//3f/+HNN9/E008/jaKiIkiShGeffRbTp0+HTqeDzWbDTTfdhGPHjnU6T6rf8127duGmm26CzWbD6NGje/W1ICIaKEyuiIjSKBaLIRqNdtqmUqlQW1uL7Oxs/OpXv0Jubi5aWlrw17/+FRdccAF2796NcePGAQB+85vfYOXKlXjooYdw6aWXIhKJ4PPPP0/2V333u99FS0sLnnrqKaxfvz6ZKLQnMI899hgeeughfOc738FDDz2EcDiMxx9/HJdccgm2bduW3O+qq65CLBbDb37zG4wYMQJNTU345JNPko+zYcMG3HTTTbBYLMlL50RR7PPX5+jRo5gzZw6++93vwmKxoKKiAqtXr8bFF1+Mffv2Qa1Wd9r/61//Om655RbcfffdOHDgAH72s5/h4MGD+Oyzz07Ztz8988wzmDp1Kp555hm4XC488MADuPbaa3HBBRdArVbjL3/5C06cOIEf/ehH+O53v4s333wzeWx/fQ9OJxKJ4KqrrsJdd92FBx98EJ988gl+8Ytf4MSJE3jrrbcAAN///vdx3XXXYdOmTfjqV7+aPPaf//wnjh49ij/84Q+nfYzCwkI888wzWLx4MVatWoXHH38cN954Y/Iywbvuugtr167F/fffj1//+tdoaWnBo48+igsvvBB79uxBfn4+gNS/5zfccANuvfVW3H333fD5fGf+ZhERDSSJiIjOujVr1kgAuv2IRCKn7B+NRqVwOCyNHTtW+uEPf5jcfs0110jTp08/7WM9/vjjEgDp+PHjnbZXVlZKKpVKuu+++zptb21tlQoKCqRbbrlFkiRJampqkgBIv//970/7OJMmTZLmzp172n06GjlypHT11Vf3ev94PC5FIhHpxIkTEgDpb3/7W/K+n//85xKATl8bSZKkdevWSQCk559/vtePM3fuXGnSpEk93tfxOR4/flwCIE2bNk2KxWLJ7b///e8lANLXvva1Tsf/4Ac/kABIbrdbkqT+/x5057bbbpMASE8++WSn7b/85S8lANLHH38sSZIkxWIx6ZxzzpGuu+66TvtdeeWV0ujRo6V4PN6rx7vlllskAFJ+fr7U2NgoSZIkbd26VQIg/fa3v+20b1VVlaTT6aQf//jH3Z6rN9/zhx9+uFfjIiI6G3hZIBFRGv3v//4vtm/f3ulDpVIhGo3isccew8SJE6HRaKBSqaDRaPDll1/i0KFDyePPP/987NmzB/feey/+9a9/wePx9Pqx//WvfyEajeLb3/42otFo8kOr1WLu3LnJSwezsrIwevRoPP7441i9ejV2796NeDze31+KbjU0NODuu+9GSUkJVCoV1Go1Ro4cCQCdvg7tvvnNb3a6fcstt0ClUuH9998f0HFeddVVUChO/kmdMGECAJxyKV379srKSgBn93vQ9WvTnii1f20UCgWWL1+Ov//978nxHT16FO+88w7uvfdeCILQq8d59NFHAQD3338/cnJyAAB///vfIQgCvvWtb3V6ngUFBZg2bVqny1RT/Z73NEshEVE6sLgiIkqjCRMmYNasWZ0+AKCsrAw/+9nPcP311+Ott97CZ599hu3bt2PatGkIBALJ41esWIEnnngCn376Ka688kpkZ2djwYIF2LFjxxkfu76+HgAwe/ZsqNXqTh8vv/xyssdFEARs2rQJixYtwm9+8xvMnDkTubm5uP/++9Ha2joAX5WEeDyOyy+/HOvXr8ePf/xjbNq0Cdu2bcOnn34KAJ2+Du0KCgo63VapVMjOzkZzc/OAjRNIFD8daTSa024PBoMAzt73oP3r0FH716rj1+b222+HTqfDf//3fwNIXO6o0+lw++239+4LgZOXg7Y/1/bnKUkS8vPzT3men376afJ5yvmet1/qSkQ0GLDniohoEHr++efx7W9/G4899lin7U1NTZ2mU1epVCgrK0NZWRlcLhfee+89/OQnP8GiRYtQVVV12pnT2lOF1157LZkM9GTkyJHJCQsOHz6MV155BStXrkQ4HE6+EO9v+/fvx549e7B27Vrcdtttye1Hjhzp8RiHw4GioqLk7Wg0iubm5lMKi8HibH0Puvs6OBwOAOi0zWKx4LbbbsOf//xn/OhHP8KaNWuwZMmSPk/hn5OTA0EQ8NFHH3Xbi9e+Tc73vLeJGhHR2cDiiohoEBIE4ZQXof/4xz9QU1ODMWPGdHuM1WrFTTfdhJqaGvzgBz9ARUUFJk6cmDxP13f9Fy1aBJVKhaNHj6Z0adW5556Lhx56CK+//jp27dqV3C6KYrfJglztL5q7fh1OtxjtunXrcN555yVvv/LKK4hGo4N24d/+/h6czrp163D//fcnb7/wwgsAcMrX5v7778ezzz6Lm266CS6XC8uXL+/1uHpyzTXX4Fe/+hVqampwyy239LifnO85EdFgwuKKiGgQuuaaa7B27VqMHz8eU6dOxc6dO/H444+juLi4037XXnttcq2s3NxcnDhxAr///e8xcuRIjB07FgAwZcoUAMCTTz6J2267DWq1GuPGjUNpaSkeffRR/PSnP8WxY8dwxRVXwGazob6+Htu2bYPBYMAjjzyCvXv3Yvny5bj55psxduxYaDQabN68GXv37sWDDz6YHMuUKVPw0ksv4eWXX8Y555wDrVabfOyeOBwOvPbaa6dsLy0txbRp0zB69Gg8+OCDkCQJWVlZeOutt7Bx48Yez7d+/XqoVCosXLgwOVvgtGnTTvuCPp36+3vQE41Gg9/+9rfwer2YPXt2crbAK6+8EhdffHGnfc8991xcccUV+Oc//4mLL74Y06ZN6/PzvOiii3DnnXfiO9/5Dnbs2IFLL70UBoMBdXV1+PjjjzFlyhTcc889GD9+fMrfcyKiQSXNE2oQEQ1L7bMFbt++vdv7nU6ndMcdd0h5eXmSXq+XLr74Yumjjz46Zba63/72t9KFF14o5eTkSBqNRhoxYoR0xx13SBUVFZ3Ot2LFCslut0sKhUICIL3//vvJ+9544w1p/vz5ktlslkRRlEaOHCnddNNN0nvvvSdJkiTV19dLS5culcaPHy8ZDAbJaDRKU6dOlX73u99J0Wg0eZ6Kigrp8ssvl0wmkwRAGjly5Gm/BiNHjuxxxsTbbrtNkiRJOnjwoLRw4ULJZDJJNptNuvnmm6XKykoJgPTzn/88ea72meN27twpXXvttZLRaJRMJpO0ePFiqb6+/szfkA7kzBb4+OOPd9rv/ffflwBIr776aqftPX3f++t70J3bbrtNMhgM0t69e6V58+ZJOp1OysrKku655x7J6/V2e8zatWslANJLL7102nN3p6eviSRJ0l/+8hfpggsukAwGg6TT6aTRo0dL3/72t6UdO3Yk90n1e94+IyER0WAgSFKX1QKJiIgyzMqVK/HII4+gsbEx2cdE8t1444349NNPUVFRMaDrgxERDTW8LJCIiIgQCoWwa9cubNu2DRs2bMDq1atZWBERpYjFFREREaGurg4XXnghzGYz7rrrLtx3333pHhIRUcbhZYFERERERET9gIsIExERERER9QMWV0RERERERP2AxRUREREREVE/4IQWPYjH46itrYXJZEquGE9ERERERMOPJElobW2F3W6HQtFzPsXiqge1tbUoKSlJ9zCIiIiIiGiQqKqqQnFxcY/3s7jqgclkApD4AprN5jSPhoiIiIiI0sXj8aCkpCRZI/SExVUP2i8FNJvNLK6IiIiIiOiM7UKc0IKIiIiIiKgfsLgiIiIiIiLqByyuiIiIiIiI+gGLKyIiIiIion7A4oqIiIiIiKgfsLgiIiIiIiLqByyuiIiIiIiI+gGLKyIiIiIion7A4oqIiIiIiKgfsLgiIiIiIiLqByyuiIiIiIiI+gGLKyIiIiIion7A4oqIiIiIiKgfsLgiIiIiIiLqByyuiIiIiIiI+gGLKyIiIiIion6Q1uJqy5YtuPbaa2G32yEIAt54443T7r9nzx4sXrwYJSUl0Ol0mDBhAp588slT9tu3bx/mzp0LnU6HoqIiPProo5AkaYCeBREREREREaBK54P7fD5MmzYN3/nOd3DjjTeecf+dO3ciNzcXzz//PEpKSvDJJ5/gzjvvhFKpxPLlywEAHo8HCxcuxPz587F9+3YcPnwYS5cuhcFgwAMPPDDQT4mIuojHJbgDEVh0aigUQrqHQ0RERDRgBGmQRDqCIGDDhg24/vrrUzpu2bJlOHToEDZv3gwAeO6557BixQrU19dDFEUAwK9+9Ss89dRTqK6uhiD07sWdx+OBxWKB2+2G2WxOaUxEdJLDHcTnDg+yDBqU5hhg1qrTPSQiIiKilPS2NhjUPVcrV65EaWnpafdxu93IyspK3t66dSvmzp2bLKwAYNGiRaitrUVFRUWP5wmFQvB4PJ0+iKhvorE4qpx+xGIS6txB7K50oqLJi3A0nu6hEREREfW7QV1c5eTkYPTo0T3ev3XrVrzyyiu46667ktscDgfy8/M77dd+2+Fw9HiuVatWwWKxJD9KSkr6OHoiavSG0OILI9sowm7RQaNQ4nNHK/ZUu9DYGmIvJBEREQ0pg7q4Wr58OTZt2tTtfQcOHMB1112Hhx9+GAsXLux0X9dL/9pfwJ3uksAVK1bA7XYnP6qqqvo4eqLhLRKLo6rFD1GpgLKt18qoVaHArIMnEMGeKhc+d3jgD0fTPFIiIiKi/pHWCS3kOnjwIC677DJ873vfw0MPPdTpvoKCglMSqoaGBgA4JdHqSBTFTpcSElHfNHlDaPFFUGDWdtquVAjIM2kRjMRQ0exHsy+CUTkGFJi1ySKMiIiIKBMN6uSqOwcOHMD8+fNx22234Ze//OUp98+ZMwdbtmxBOBxObnv33Xdht9vP2L9FRP2jPbXSqZU9FkxatRJFFh2kuIT9NW7sq3bB5Q93uy8RERFRJkhrceX1elFeXo7y8nIAwPHjx1FeXo7KykoAwNNPP40FCxYk928vrBYuXIiysjI4HA44HA40NjYm91myZAlEUcTSpUuxf/9+bNiwAY899hjKysp6PVMgEfVNY2sitbLoTj8zoCAIsOo1yDOKaPKGUV7pwpGGVgQjsbM0UiIiIqL+k9biaseOHZgxYwZmzJgBACgrK8OMGTPw8MMPAwCamppw9OjR5P6vvvoqGhsbsW7dOhQWFiY/Zs+endzHYrFg48aNqK6uxqxZs3DvvfeirKwMZWVlZ/fJEQ1TkVgclWdIrbpSKRXIN2uhVStxpMGL8ioX6j1BxOOc8IKIiIgyx6BZ52qw4TpXRPLUugLYV+NCvkknq4cqLklw+sKIxOMotOgwMlsPE9fGIiIiojTqbW2QkRNaENHgFI62pVYqlezJKRSCgGyjiHA0jhpnAC2+MEqz9Si06qBWZlybKBEREQ0jfKVCRP2m0RuCOxCG+Qy9Vr2hUSlgt+qgFAQcrPNgb7ULzV6ujUVERESDF4srIuoX4WjbDIF9SK26Y9apUWDWweWLYHeVC4frWxEIc8ILIiIiGnxYXBFRv2hoDcLlD8Oi7//+KKVCQJ5ZC7OoxvFGH3ZVOlHrCiDGCS+IiIhoEGFxRUR9ForGUN0SgF6jgmIAlzzQaZSwW3WIxSXsq3Zhf40bbn9kwB6PiIiIKBWc0IKI+qyxNdFrVWDRDfhjCYIAm14Do6hCQ2sQTn8YI7L0KLLpIKqUA/74RERERD1hckVEfXK2Uquu1EoFCsyJgupwvRd7qlxoaA1ywgsiIiJKGxZXRNQnDZ4gXP00Q6AcRlGFQosWvlAMe6rcOFTngTcUTctYiIiIaHjjZYFEJFsoGkNVSwCGs5xadaUQBOQYRYSiMVS2+NHcvjaWRQcV18YiIiKis4SvOohItgZPEJ5gJG2pVVeiSokiqx4CBByo9WBfjRstvnC6h0VERETDBJMrIpIlGImhsiUAo6hOa2rVHYtODaOoQpM3BKc/jBKbHiVZemjVnPCCiIiIBg6TKyKSpcETRGswCrN2cL5Ho1QIyDdrYdCocLTRi/JKFxzuIOJcG4uIiIgGCIsrIkpZMBJDlTMAo6iCMMhSq670GhXsFh1C0Tj2Vruwv9YNT5BrYxEREVH/G5xvORPRoFbfllrZLdp0D6VXBEFAlkGDSCyOOncQTl8YI7P1sFv10Kj4HhMRERH1D76qIKKUZFJq1ZVaqYDdooNGqcTnjlbsqXahsTXEtbGIiIioX7C4IqKU1HuC8AYjg7bXqjeMWhUKzDq0BqLYU+XC5w4P/GGujUVERER9k7mvjojorGtPrUyiOuNSq66UCgG5JhHBSAwVzX40+yLJtbGUisx+bkRERJQeTK6IqNcc7gC8wQhMGZxadaVVK1Fk0QESsL/Gg33VLrj8XBuLiIiIUjd0XiER0YAKhGOoHiKpVVeCIMCiU8OgUaLJG06sjZWlR7GNa2MRERFR7zG5IqJecbgDaA1Gh1Rq1ZVKqUC+WQu9RoUjDV6UV7lQ7+HaWERERNQ7Q/dVEhH1m0A4hmpXABZdaqmVLxTFI28dgKhW4nuXnIMRWfoBHGX/0WtU0KqVcPrC2FPlgt2qw8hsPUxadbqHRkRERIMYkysiOqM6dwC+UBRGMbX3Y97aW4tDjlaUV7nw/Zd248VtlYjE4gM0yv6lEARkG0VkG0TUOAPYVenEiWZfxoyfiIiIzj4WV0R0Wv5wFDWuAMza1FIrfziKv5XXAgBKs/WIxiW8sK0SP3i5HJ/XeQZquP1Oo1LAbtVBrVDgUJ0He6pcaPJybSwiIiI6FYsrIjqtOldQVmr197118IaiKLbp8PtvzMB/Xj4OFp0alS1+/Pj1vfjjlqMZtbaUSatGgVkHdyCC8ioXvnC0IhCOpXtYRERENIiwuCKiHrWnVhatJuXU6o3dNQCAb8wqgVIh4NJzc/Hskpm4bHweJCSKr2Uv7MaOipYBGn3/UyoE5Jm0sGjVqGjyYVelE7WuAGKc8IKIiIjA4oqITqPOFYQ/FIUxxRkC397nQGsoCrtFi0vG5ia3m3Vq/PCr5+LRr01CvllEkzeER/5+EI//6wu4A5H+Hv6A0aqVsFt1iMUl7Kt2YX+NG25/5oyfiIiIBgaLKyLqli/UllrpNSkdFwjHsGF3NQDgG7MTqVVXM0bY8PTimbh+ehEUArDly0bcs24nNn/ekDG9TIIgwKbXINekRUNrELsrnTja4EUoyksFiYiIhisWV0TUrTp3IJFapdhr9c/9dfAEoyi0aDH33Lwe99Oqlbjj4lF44qZpKM3WozUYxe/eO4yfv3kADk+wr8M/a9RKBQrMOmjVSnzZtjZWgyeYMUUiERER9R8WV0R0Cq/M1CoYiWF9W6/VLed1n1p1NTbfhN/dMh3f/spIqJUCdle5sPyFXXijvCajepkMogqFFi0CoRj2VLtxqM4DbyhzJuwgIiKivmNxRUSnqHMFEAjHU06t3tnvgDsQQb5ZxLxxuWc+oI1KqcDNs0rw1K0zMdluRigax/98fBz/+doeHG/ypTr8tGlfG8umT8yKuLvSiaoWH6JcG4uIiGhYYHFFRJ14Q1HUugKw6tQpHReMxPB6W6/VLbNKoFKm/s9LkU2HX359CpbPHwODJnGZ3Q9fKcf/bq1AOJo5BYqoUqLIqocAAQfrPNhT7UKLL5zuYREREdEAY3FFRJ3UuQIIRGIwpJhavXvQAZc/gjyTiPnjeu61OhOFIGDRpAI8s2Qm5pyTjVhcwqs7q3H/S7uxv8Yt+7zpYNGpkW/SwemLYHeVE4cdrQhGOOEFERHRUMXiioiSWoORttQqtV6rcDSO13cmeq1uPq8EahmpVVfZRhE/uWoCVlw5Hll6DWpcAazYsA/PvH8EvgzqZVIqBOSbtTBqVDjW5MXuSifq3AHEM6ifjIiIiHqHxRURJdW5grJSq38dcKDFH0aOUcSCCfJTq+5cODoHz3xzJhZNzAcAvHPAgXtf2IWtx5r79XEGml6jgt2iQyQqYV+1G/tr3Rm1thcRERGdGYsrIgLQllq5A7ClOENgOBrHa7sSvVY3n1fcL6lVV0ZRheWXjcVj10+G3aJFiy+Mx94+hFX/PJRRvUyCIMBm0CDHKMLhDqK80omKJm9G9ZMRERFRz9JaXG3ZsgXXXnst7HY7BEHAG2+8cdr9m5ubccUVV8But0MURZSUlGD58uXweDyd9tu3bx/mzp0LnU6HoqIiPProo1xzhugMal0BhKIx6DWppVYbD9WjxRdGjlGDhW3p0kCZUmzFHxbPwM3nFUMhAJ8cbca9L+zEuwcdGfU7rlYqUGjRQaNU4nNHK/ZUu9DYGsqo50BERESnSmtx5fP5MG3aNDz99NO92l+hUOC6667Dm2++icOHD2Pt2rV47733cPfddyf38Xg8WLhwIex2O7Zv346nnnoKTzzxBFavXj1QT4Mo43mCEdS5gyn3WkVicby2swoAcNPMgUmtuhJVSnx7Til+/43pGJNrhC8Uw1Obj+ChN/aj1hUY8MfvT0atCgVmHVoDUeypcuGQw5NR/WRERETUmSANkrdKBUHAhg0bcP3116d03B/+8Ac8/vjjqKpKvMB77rnnsGLFCtTX10MURQDAr371Kzz11FOorq6GIHS/qGkoFEIoFEre9ng8KCkpgdvthtlslvekiDLE53UeVDT7UGTVp3TcP/fX4dkPjiLLoMGf/mMWNKqz+35NLC7hrT21+L/PTiAcjUOjVGDx+SNw/XS7rKng0ykYiaHZF4JRVKE0x4ACszbjngMREdFQ5fF4YLFYzlgbDOq/3CtXrkRpaWmP99fW1mL9+vWYO3ductvWrVsxd+7cZGEFAIsWLUJtbS0qKip6PNeqVatgsViSHyUlJf3xFIgGPXcgAoc7mHKvVSQWx6s7E71WN84sPuuFFZCYie/6GUV4ZvFMTC+xIhyL469bK/DAq3twpMF71sfTF1q1EnaLDoCA/TUe7Ktxw5lB/WREREQ0yIurnJwcjB49+pTtixcvhl6vR1FREcxmM/785z8n73M4HMjP79z30X7b4XD0+FgrVqyA2+1OfrQnYURDXZ0rgFA0nnKv1ebPG9DYGoJNr8aiSQPba3UmBRYtHv3aJPxgwVgYRRWONfnwwKvl+Mu/j2fUulKCILStjSWiyRtGeZUTRxq4NhYREVGmGNTF1fLly7Fp06ZTtv/ud7/Drl278MYbb+Do0aMoKyvrdH/XS//ar3zs6ZJAABBFEWazudMH0VDnDkRQJ2OGwGgsjld2JN6AuHFmMUSVciCGlxJBELBgQj6e/eZMXDo2B3EJ2LC7Bve9uBvlVa50Dy8lKqUCBWYt9BoVvqz3orzKBYc7yLWxiIiIBrlBXVz1pKCgAOPHj8d1112HP/7xj3juuedQV1eXvK9rQtXQ0AAApyRaRMNdjcuPcFSCTpNacfT+Fw1oaA3Bqldj0aSCARqdPDa9Bv+5aDx+dvVE5Bg1cHiC+Nnf9uPJTYfRGsysdaX0GhXsVh1CkTj2VrtwsM6Tcc+BiIhoOMnI4qqj9lSqfTKKOXPmYMuWLQiHT/YqvPvuu7Db7aft3yIabtz+COpl9FolUqtEr9UNM4qgVac/terO+aOy8MySmbhmSiEEAO8dasC963bhoy8bM2rKc4UgIMugQbZBRI0zgF2VTpxo9iES49pYREREg01aiyuv14vy8nKUl5cDAI4fP47y8nJUVlYCAJ5++mksWLAguf/bb7+NNWvWYP/+/aioqMDbb7+Ne+65BxdddFGycFqyZAlEUcTSpUuxf/9+bNiwAY899hjKyspOe1kg0XBT4/YjHEs9tfrgcCMcniAsOjWunFw4QKPrH3qNCnfNHY1f3zgVJTYdXIEIfvOvL/CLfxxCkzd05hMMIhqVAnarDmqFAofqPNhT5UKTl2tjERERDSZpLa527NiBGTNmYMaMGQCAsrIyzJgxAw8//DAAoKmpCUePHk3ur9Pp8Kc//QkXX3wxJkyYgB/84Ae45ppr8Pe//z25j8ViwcaNG1FdXY1Zs2bh3nvvRVlZ2Sl9WUTDmdufmCEwK8XUKhaXkr1WXx/EqVVXEwrNePLWGVg8uwQqhYBtFS24d90u/GNfHeIZVpyYtGoUmHVwByIor3LhC0cr/GGujUVERDQYDJp1rgab3s5lT5RpJEnCoToPqp0BFFp0KR27+fMG/O69wzBrVfjzt2ennHoNBieafXhq8xF8Ud8KIFF43Td/DEqyUlvjazBIrI0Vhkl7cm0spYIJPRERUX8bEutcEVH/cwcicHhS77XqmFpdP6MoIwsrABiZbcCvb5yKuy49Bzq1EofqPLj/pd14aXtlxvUxJdbG0iIel7Cv2oX9NW64/Fwbi4iIKF1YXBENI5IkocYZQDQmpXxJ30dfNqLGFYBJVOHqKYO71+pMlAoB10y14+klMzBrpA3RuIR1n1XiBy+X43OHJ93DS4kgCLDqNcgzadHYGkJ5pQtHG7wIRbk2FhER0dnG4opoGHH5I3C0ykutXm5Lra6bUZTygsODVZ5Ji4evmYgfXT4OFp0alS1+/Pi1vfh/W44iEM6s4kStVCDfrIVWrcThhlbsrnShwRPkhBdERERnEYsromFCkiTUuAKIx1NPrf59pAnVzgAMohLXTs3s1KorQRAw99xcPLtkJi4blwcJwFt767DsxV3YcaIl3cNLmUFUwW7RIRiOYU+1CwdrPfCGOOEFERHR2cDiimiYcPkTvVZWXWqpVVyS8FJ7ajVt6KRWXZl1avxw4bl45GuTkGcS0dgawiNvHcQT734BdyCzFu5VCAKyjSJseg2qnH7sOuFEJdfGIiIiGnAsroiGAUmSUO3yQ5JST60+OdqMqhY/DBolrp1mT/mx/eEoKlv8GVOgzBxhwzNLZuL66XYoBODDw424Z91OvP9FQ8ZdYieqlCiy6qEUBBys82BvtQvNGba+FxERUSZhcUU0DDj9EdR7Qin3WsUlCS9tSyzq/bVpdhjF1FMrpz+MEVk6SJBQ6wpkRHqiVStxx8Xn4PGbpqE0W4/WYBSrNx7GyrcOoN4TTPfwUmbWJdbGcvkiKK924bCjFcFIZvWUERERZQIWV0RDnCRJqHb6ASmRZKTi02PNONHih16jxNemFaX82P5wFFq1EiNzDJgxwoYimw5N3hCc/nBGpEDn5pvwu1um4z++MhJqpYBdlS4se2EX/lZeg1h88I+/I6VCQJ5ZC5NGjWONXuyudKLOHci450FERDSYsbgiGuKc/ggaPCFY9eqUjotLEl7anui1unaqHUZt6qmVyx9BgVkLs1YNo6jCxEIzphRboFQIqHUHMmK6cJVSgVtmleAPt87AJLsZoWgcf/74OP7ztT043uRL9/BSptMoYbfqEIlK2FuVWBsrUy7ZJCIiGuxYXBENYe2plYTUU6vPjrfgeJMPOrUS101PvdcqEI5BVClQaNUltykUAgotOswYYcWILD2c/jCavaGMSLGKbXo89vUpWDZvDPQaJb5s8OKHr5Tj/z49gXB08F/q2JEgCLAZNMg1aVHvCWJ3pRPHGr0Z9zyIiIgGGxZXRENYiy+MBk8IWSn2WkmShJe2J3qtrplaCJM2tdQLAJyBMPItIiy6U4/Va1SYUGjG1GIrtGolal2BjOgBUggCrphcgGeXzMRXzslCLC7hlR1VuP+l3ThQ60738FKmVipQaNFBVClxuN6L8ionGlq5NhYREZFcLK6Ihqh4XEK1MwAJgEaV2q/69ooWHGv0QatW4LrpqfdaBSMxaJQC7BZ9j/sIgoB8sxbTR1hRmmOAOxBBkzeEeAa8sM82ivjpVROx4srxsOnVqHEF8OD6fXj2gyPwZeCaUkZRhUKLFr5QDHur3Djk8GTk8yAiIko3FldEQ1SLP4zGVnmp1YvbEr1WV0+xd5s8nYnTH0a+WQtLL/q8tGolxhWYMK3ECr2oRJ07AH84M17YXzg6B88uOQ+LJuYDAP6534F7X9iFT481p3lkqVMIAnKMiaSxstmP3ZVOVLX4Ec2A2R2JiIgGCxZXRENQPC6hxhkAkHpqteOEE0cavRBVCnx9hrzUSqUUYO/Qa3UmgiAg1yRieokVo3ON8IajaPAEM2ImO6NWheWXjcUvr5+MQosWLb4wfvn2Ifzqn4fg9IXTPbyUadWJtbEAAQdqPdhX487I50FERJQOLK6IhqAWfxgNrSFkGeT3Wl01pVBWauUKhJFv0so6VlQpMTbfhOnFVlj0atS5AxlzedrUYiueWjwDN80shkIA/n20Gfe8sBPvHnRkZA+TRadGvklEkzeM3VVOfFnPtbGIiIjOhMUV0RDTnloJSExYkIpdlS4crvdC04fUSqFIpFaCIKR8fLtso4ipxVaMKzAhGImhPkNSLFGlxG0XluJ3t0zHmFwjfKEYntp8BA+9sR+1rkC6h5cylVKBArMWBo0KRxu9KK90weEOIp4B3wsiIqJ0YHFFNMQ0++SnVi9ua0utJhfAlmKvFgC4AxHkm7Qpr6nVHY1KgXNyjZg+wopsowYOTwCtwcxYj+mcXCOeuHkabr+oFBqVAntr3Ljvxd14fVd1RhSJXek1KtgtOoSiceytdmF/rRueDPleEBERnU0sroiGkERq5YcCqadW5VUufFHfCo1SgRtmFKf82KFoDBDQ59SqK6tegylFFkwoNCMSi6POHciISRaUCgFfn1GMZxbPxPQSK8KxONZ+UoGyV8txpMGb7uGlTBAEZBk0yDGKqHMn1saqaOLaWERERB2xuCIaQpp9YTR6Q7DJSa22J2YIvGJyQcrHA4DLH0GeSYStH1KrrlRKBUZmGzB9hA35Zi3qW0NwBzIjOSmwaPHo1ybh+wvGwiiqcKzRhwdeLceafx/PyB4mtVIBu0UHjUKJzx2t2FPtQlOGLARNREQ00FhcEQ0RiXWt/FAIQsqp1d5qNw7VeaBWCrhBRq9Ve3pR1M+pVVcWnRqTiyyYZDdDgoRaVwCRDEixBEHAVyfk49lvzsQlY3MQl4D1u2tw/0u7safale7hyWLUqlBg1qE1EEV5pQtfOFozZgp9IiKigcLiimiIaPKF0OQNyeqVerFthsBFEwuQbRRTPt7pDyPXJKbc5yWHUiGgJEuPGSNssNu0aPKG4PSHMyI5sek1+PGi8fjZ1ROQY9Sgzh3EQ2/sxx82fZkx/WQdKRWJKfQtOjWON/uwq9KFGlcgI/vKiIiI+gOLK6IhINY2Q6Cc1GpftQsHaj1QKQTceF7qvVbtyVGRbWBTq66MogqTCi2YXGSBQiGg1h1I9H1lgPNHZeOZJTNx9ZRCAMDGQ/W494Vd+PhIU0YUiV1p1UoUWXSQ4hL217ixv8YNl59rYxER0fDD4opoCGj2htDYKje1SvRaXT6pADlyUitfW2ol47H7qn3a95kjrBiRpYfTH0aLLzNSLL1Ghbvnjsavb5yKEpsOLn8Ev37nc/zy7UNo8obSPbyUCYIAq16DPKOIxtYQyitdONLAtbGIiGh4YXFFlOFicQlVTj9UCkXKqdX+Gjf21bgTqdXM1HutIrE44kjMEKhQnL3Uqiu9RoUJhWZMLbZCVClQ6wpkzIv6iYVmPHnrDNw6uwQqhYDPjrfg3nW78Pa+OsQzoEjsSqVUIN+shU6jxJEGL8qrXKj3cG0sIiIaHlhcEWW4Zm8Izd6wrFn6XmrrtfrqhHzkmbQpH+/0h5Fj1CD7LPRanYkgCMg3azF9hBWlOQa4AxE0eUMZUaColQp884KR+P03pmNcvgmBSAzPfXgUD67fhyqnP93Dk0WvUaHQokMwHMPeahcO1nkysq+MiIgoFSyuiDJYx9RKlWJqdbDOgz3VbigVAm6W2WsVlyQU2dKbWnWlVSsxrsCEqSUW6EUl6tyBjJnFbmS2Ab++cSruvOQcaNUKHKrz4P4Xd+Pl7ZUZMStiVwpBQLZRRJZeRI0zgN2VLlQ2+zLyuRAREfUGiyuiDNbUl9RqWyK1WjA+D3nm1FMrlz+CHKOIbEPqfVoDTRAE5Jm0mFZsxehcI7zhKBpagxkxi51SIeDaaXY8s2QmzhtpQzQu4fnPKvHDl8vxhaM13cOTRaNSwG7VQSkIOFjnwd5qF5q5NhYREQ1BLK6IMlQ0FkdVix9qZeqp1ecOD3ZXuRKp1awSWY8di8dRZNVBOYhSq660aiXG5pswvdgKi06NOncAvlBmpFh5Ji1+fs1E/OjycTBrVTjR4sd/vrYHf/roGALhzOgn68qsU6PArIPLF8HuKhcO17dm7HMhIiLqDosrogzV7AujWe66VtsSMwReNi4PBXJSq0AEWUaNrDWx0iHbKGJqsRXn5psQjMTg8GRGiiUIAuaem4tnv3ke5o/LhQTgzT21WPbiLuw84Uz38GRRKgTkmbUwi2ocb/RhV6UTtVwbi4iIhggWV0QZKBqLo7LFD1GlTDk5Olzfil2VTigE4OZZqfdaxeISwtEYim36QZ1adaVRKTA6z4hpJVbkGDVweAIZM8GCRadG2cJxeOTaScgzJaY6X/nWAfz23S/gDmTGc+hKp1HCbtUhFpewr9qF/TVuuP2Z+VyIiIjasbgiykBN3kRqZZWVWiV6reaNy0OhRZfy8S5/GNlGcVDMECiHzaDB5CILJhSaEYnF4fAEEM2QCRZmjrTh6cUzcd00OxQC8MHhRty7bic++KIhI/uXBEGATa9BrkmLhtYgdlc5cazRmzGLQRMREXXF4ooow0RjcVQ5/dDKSK2+rG/FjhOJ1OobMnqtYnEJwbbUKtU+r8FErVRgZLYB00fYkGfSor41lDEJkE6jxHcvOQeP3zQNpdl6eIJR/HbjYax86yAaPMF0D08WtVKBArMOokqJw/Ve7KlyoaE1mJEFIxERDW+Z++qIaJhq9IbQ4gvLSq1e2p7otZp7bi7sVvmpVY4xM1Orriw6NSYXWTDJboYECbWuQMZME35uvgm/u2U6/uMrI6FWCthV6cSyF3fhzT01Gdu/ZBRVKLRo4QvFsKfKjUN1noyZgISIiAhgcUWUUSJtMwSKSkXKqdXRRi+2VbRAIQC3yE6t4ii26TI6tepKqRBQkqXH9BIrCq1aNLYG4fSHMyI1USkVuGVWCf5w6wxMspsRjMTxp4+O48ev70FFky/dw5NFIQjIMYqw6dWocvqxq9KJqhZfxly6SUREw1taXyFt2bIF1157Lex2OwRBwBtvvNHrY5ubm1FcXAxBEOByuTrdt2/fPsydOxc6nQ5FRUV49NFHM+KFEtGZNHlDaPFFZKZWiV6rS8bmotimT/l4dyACm0GNnAyZITBVJq0ak+0WTCm2QqEQUOsOZEzvT7FNj8e+PgX3zhsNvSZxad0PXinH85+eQDiamUWJqFLCbtFDgIADtR7sq3GjxRdO97CIiIhOK63Flc/nw7Rp0/D000+nfOwdd9yBqVOnnrLd4/Fg4cKFsNvt2L59O5566ik88cQTWL16dX8MmSht2lMrrSr11Op4kxefHmuBAPm9VoFIFCU2PdRDKLXqSqEQYLfqMKPEihFZejj9YbT4MiPFUggCrpxciGeXzMQFo7IQi0t4eUcVvv/ybhyodad7eLJZ2tbGavaGUV7lxJf1rQhGMqPoJSKi4UeVzge/8sorceWVV6Z83HPPPQeXy4WHH34Y//znPzvdt27dOgSDQaxduxaiKGLy5Mk4fPgwVq9ejbKyMghC5kwdTdRRY2sitZKzLlV7r9XFY3NQkpV6auUJJNKyXNPQTK26MogqjC8wI9so4nijD7WuALKNIrRqZbqHdkbZRhE/vWoCPjnajD9uOYpqZwAPrt+HKycX4LY5pTCIaf1nXxalQkC+WQt/OIqjjV40e8MozTEgzyRCkUHLARAR0dA3qN+CXrlyJUpLSzttO3jwIB599FH87//+LxSKU4e/detWzJ07F6J48kXgokWLUFtbi4qKih4fKxQKwePxdPogGiwibeta6dSpzxBY0eTDJ0ebZadWcUmCPxJFSdbQTq26UrS9oJ9WYkVpjgHuQARN3hDiGZBiCYKAi8bk4Nkl52HhxHwAwD/3O7DshV347Hhzmkcnn16jgt2iQygax95qF/bXuuHJkLXKiIhoeBjUr5RycnIwevTo5O1QKITFixfj8ccfx4gRI7o9xuFwID8/v9O29tsOh6PHx1q1ahUsFkvyo6Qk9RehRAOlsTUElz8Mi06d8rEv7UikVheOycHIbEPKx7sDEVh1GuQO0V6rM9FplBhXYMLUEgt0GiXq3AH4w5kxg51Rq8L9l43FL66fjEKLFs2+MH7xj0P41Tufw5mh/UuCICDLoEGOUUSdO4jdJ5yoaPJmbG8ZERGdKhaXEIzE4AtFEc+wGXAH9fUhy5cvx/Lly5O3V6xYgQkTJuBb3/rWaY/reulfe7/E6S4JXLFiBcrKypK3PR4PCywaFMLRRGqlV6tSTq1ONPvwyZEmAMCtMlOrQDiKc4os0KgG9XsxA0oQBOSZtDBr1ahq8aPS6Yc3FEW2QUz5e5IO04qteGrxDLy4rQobdlfj30eaUF7lxB0XjcJXJ+Rn5OXSaqUCdosO3mAUnzta0egNozTbgByjJiOfDxHRUBaPS4jGJUTj8cT/Y4nPY22fh6NxhKIxhKOJ9TRjcQmxuARBAMYXmDOqLWFQF1ddbd68Gfv27cNrr70G4GTRlJOTg5/+9Kd45JFHUFBQcEpC1dDQAACnJFodiaLY6VJCosGi0RuCOxBGvin1dale2VEFCcCcc7JRmpN6auUJRGDWqTPqH7WBpFUrMTbfhCyDBseafHB4grDq1BnRxySqlFh6YSkuGZuDpzZ/iaONPvxh8xF8cLgRy+aNkbXu2WBg1Kqg0yjR4gtjT5ULRTYtRmYboNcM/u8JEVGmkqREsRSLS4jE2oqkDkVTJBpHOBZHKJr4iETjiElScr/2NKr9vwoooFAASkGASqmAUhCgVingDIQyYlKpjjLqr8/rr7+OQCCQvL19+3bcfvvt+Oijj5KXD86ZMwc/+clPEA6HodEkpqt+9913YbfbT+nfIhrswtHEDIE6VeqpVVWLHx992ZZazZaXWvnCUUyymyGqBv9EDmdTtlGEqT3FavGhNRRFrjEzUqzRuUb89ubp+Ft5DdZtq8Teajfue3E3vnnBCFw3vSgjnkNXSoWAXJOIYCSGimY/mn0RjMoxoMCszcjnQ0SUDp0KpQ7JUiQuIRaTEIrG2j7iCEelRLEUayuaYkBcikMQBLTXQiqFAKVCgEIhQKUQoFEqoFQLUAqJ7b25ysAVOOMug05aiyuv14sjR44kbx8/fhzl5eXIysrCiBEj8PTTT2PDhg3YtGkTAHTqvwKApqbEC8cJEybAarUCAJYsWYJHHnkES5cuxU9+8hN8+eWXeOyxx/Dwww/zUhHKOA2tQbj8YRRa5KdWF4zKwjm5xpSPbw1GYdKqkWtKfXbC4UCjUmB0nrEtxfLC4QnAotXAqB3871kpFQJumFmMOaOz8cz7R7Cn2o01n1Tgwy8bcf9lYzFaxs/LYKBVK1Fk0cETjGJftRuN5iBKcwyy1oUjIsp0ci/Fi8XjiMWBmCRBgNSWLglQCIkiSSmcLJhETeLNX6UicT+lubjasWMH5s+fn7zd3vN02223Ye3atWhqasLRo0dTOqfFYsHGjRuxbNkyzJo1CzabDWVlZZ36qYgyQTgaR3VLAHqNKuV/sGqcAWz5shEAcOvs7id/OR1JkuANRTGx0JQR04+nk82gwVStFbWuACqafHB4IsgxiFBlwMyKhRYd/uu6ydh0qAH/8+/jONboQ9kr5fj6jCLcOntERn7vBUGARaeGQaNEkzcMpz+Mkiw9im36jHw+RETtursULxJrv9RO/qV4KkVi/cz2S/GUipMFE6VOkDLtQsazxOPxwGKxwO12w2w2p3s4NAxVO/3YX+NGoUWXcnG1euMXeP+LRpxfmoWfXTMx5cd2ByKAAMwaaeML0hS4AxFUNPlQ5w7CKKpkze6YLk5fGP/vo2P4uG0ClEKLFsvmj8G0Ymt6B9ZH/nAUTn8YVr0Go3IMyDVybSwiGjwG+lK89iIplUvxBpM6tx/TS2zIk7HGZ3/rbW0w+K9fIRqGQtGY7NSq1hXAh4fbU6vUe60SqVUEEwrNLKxSZNGpMbnIgiyDGseb/Kh1BZBrEjNifTCbQYP/74rxmHe8Gc99cBR17iAeemM/Fk7Ix+0XjcqIyx27o9eooFUr4fSFsbfahUKLDiOz9TBpM6fwJaLMwUvxKDP/WhINcQ2eIFwB+b1WcSmROo3NN6V8fGswCqOoQv4geJcoEykVAkqyEn0+x5t8qHMlimSLTp0R7xheMCobU4os+OvWE3h7Xx02HqrH9hMtuPvS0bhwdHZGPIeuFIKAbKOIcDSOGmcALb4wRmbrYbfqMqLwJaL04aV4lCoWV0SDTCgaQ7UzAIOM1KrOHcD7XySWHpDba9UajmB8Pnut+sqkVWOy3YIco4hjTT7UugPINWozYr0wvUaFe+aOxqVjc/D0+0dQ7QzgV+98jgtGZeGeuaORnaELSmtUCtitOrQGIzhU50FjawilOQZkG7g2FtFwMhhnxaOhg8UV0SDT4AnCHYjISq1e3VmNuATMHGHFuILUUytvKAqDRoV8c2aueTTYKBQC7FYdLDo1TjT7UO0MQFQpYdNnRoo1yW7Bk9+YgVd2VuG1ndX47HgL9tW4sfTCUiyaVJCxl6OYtGroNSo0+0Ior3Kh2KrDyGwDdBq+oUCUiXgpHg0mLK6IBpFgJIbKlgCMojrlf7zrPUFs/jyRWi2WkVoBgCcYwbn5Jr7I7GcGUYXxBWZkGUQcb/Ki1hVAtlHMiHRQo1LgWxeMxMWjEynWF/WtePaDo/jgi0Ysv2wMSmz6dA9RFqVCQJ5Jm1gbq8mHZl8Yo3IMyOfaWERpx0vxKJOxuCIaRBo8QbQGo7BbUu93enVHFWJxCdNLrBhfmPoMl95gFHqNCgUyHpvOTKEQUGDRdkqxfKEobAZNRrwLWppjwK9vnIp/7KvD/31agYN1Htz/4m7cOrsEN8wsztjeJa1aCbtVB1cggn3VLjRadCjNNsCi54QXRP0pGosnCyZeikdDGYsrokEiGImhyhmAUVSl/EehwRPEpvbU6nx5qZU7EMbYfBP0Gv6zMJB0GiXGFZiQZdTgWKMvkWIZxIxIC5UKAV+bZsdXRmXhmQ+OYlelE89/VomPjzThvsvG4lwZE6gMBoIgwKbXwCiq0NAahNPXtjZWlg6iavB/X4jSgZfiEXWPr6KIBon6PqRWr+2qRjQuYWqxBRPlpFahKHSikqnVWSIIiUvSzFo1qlr8qHT60RqKINsgZsTlKXlmLVZeOxEfHm7Enz46hopmP3706h5cO82Ob10wMiMKxe6olQoUmHXwhaL4ssGLJl8Io7INyDWJfBechjxeikfUP1hcEQ0CfUmtGltD2HiwHoD8Xit3IIIxeQYYRP6TcDZp1UqMzTfBZkhM2+7wBGHVqTPi+yAIAuaNy8OMETb8+eNj+OCLRry5pxafHmvGvfPG4LyRtnQPUTaDqIJOk1gba0+1G4UWLXRqJTr+anb8Le34O9vTr6+A7u+QU7P1+Bg93NHTQ/TnWHu8q58eo+fnkNpzPv1jpPbg/TXW0x/T0/6pff14KR7R2TP4/4ITDQOJ1CqCIhkzBLanVlOKLJhcZEn5eF8oCp1agQIZj039I8conkyxWnzwhqLIMWZGimXRqfHAwnGYd24env3gCBpaQ1j51gHMG5eL7158Diy6zOxdal8bKxSNweEOJl9cAkheyNSV1P3mnl8597h/93cIELp9DEHo/lSCkEgjuj1PDw/dk55/Ent+0t2OqYcjBPQwVuE05+nha9GTfitw+6vY6nF7iic63V1td8TjEi/FIzpLWFwRpVl7amUSU5+eu9kbwrsHHACAW2eXyHp8VyCM0blGGDMgLRnKNCoFRucZkWXQ4FiTFw5PABatBkZtZnxfzhtpw9OLZ+L5z07grT21+OCLRuw64cT3LjkHc8/Nzdh3tEWVEvnmzLzMcbjrrlgDei4HeyyO++n8pz9XD9tTLeR7oGhLljLhDRuiTJcZf7WJhjCHOwBvMAJ7H1KrSXYzpshIrfzhKLRq9loNJjaDBlO1VtQ4/TjR7IfDE0GOQYQqA2bj02mU+N4l5+DSsbl4avOXONHix283HsYHhxtx79zRyDPz54zOnpQvGUy57mChQkSnGvx/rYmGsEA4huo+pFb/akutFs8eISsZcPrDKLRoYdJm5qVbQ5VaqUBpjhHTS2zIM2lR3xqCOxBJ97B6bVyBCb/7xnR86ysjoVII2HnCiWUv7sKbe2oRi8t5X5+IiCgzsLgiSiOHOwBvKAqTjEu/1u+uQSQmYUKBCVOLZaZWKiUKrey1GqwsejUm2c2YZDchLkmodQcQicXTPaxeUSsV+MasEvxh8QxMLDQjGInjTx8dw//3+l6caPale3hEREQDgsUVUZoEwjFUuwIwa1NPrZy+MN7Z39Zrdb681Mrlj6DAkpgOnAYvlVKBkiwDZoywotCiRWNrEC5/uMd+j8GmxKbHqhum4N55o6FTK/FFfSt+8HI5nv/sRMYUikRERL3F4oooTercAfhCUVkTSazfXY1wLI5x+SbMKLGmfHwgHINGJTC1yiAmrRqT7BZMKbZCUAiodQcQjmZGcaIQBFw5uRDPfXMmLhiVhWhcwsvbq3D/S7txoNad7uERERH1GxZXRGngD0dRIzO1cvnDeDuZWpXI67UKhJFv0WbsNNnDlVIhwG7VYUaJFSU2PZp9IbT4MifFyjaK+OlVE/DgFeNh1atR7QzgwfX78NyHR+EPR9M9PCIioj5jcUWUBnWuoOzUasPuGoSjcYzNM+K8Eakv1BqMxKBWCiiy6FM+lgYHg6jChEIzphZboVEJqHUFEIzE0j2sXhEEAReNycFzS87Dwon5AIC399Xh3nW7sO14c5pHR0RE1DcsrojOsvbUyqLVpJw6uQMR/GNfHQBgscxeK6c/jAKzFmYdV2LIZAqFgAKLFtNLbCjNMcAdiKDZG0I8Q1Iso1aF+y8bi19cPxmFFi2afWH81z8O4dfvfA6nP5zu4REREcnC4oroLKtzBeEPRWUtDvvG7hqEonGMyTVi1kh5qZVSmbi0LFMXdaXOdBolxhWYMLXEAq1GiTp3AIFwZqRYADCt2Io/3DoDN84sgkIAPj7ShHvX7cJ7B+sz5nJHIiKidiyuiM4iX6gttdJpUj7W0yG1kttr5QqEkW9ir9VQIwgC8kxaTC+xYnSuEZ5QBA2twYxZU0qrVmLphaPw25un45xcA7yhKJ7c/CV+9rf9qHMH0j08IiKiXmNxRXQW1bkD8lOr8hoEIjGck2PA+aVZKR8fisYgCAKKmFoNWVq1EmPyjJheYoVZp4bDE8yoiSLG5Bmx+ubp+M6FpdAoFdhT7cbyF3dj/a7qjCkUiYhoeGNxRXSWeNtTK33qqVVrMIK/721LrWbLTK38EeSZRFj1TK2GMkEQkGMUMa3YirF5RvjDUdR7MifFUioE3DCzGE8tnoGpxRaEo3Gs+aQCD7xajqON3nQPj4iIBlgkFkdDaxCH61uxp8qFJm8o3UNKCTvaic4ShzuAQDiOLKuY8rF/21OLQCSG0mw9LjgnO+Xj29dDYmo1fGhUCozOMyLLoMGxJi8cnsQkKnJS03SwW3X4xXWT8d6hevzPv4/jaKMPZa+U4+szirH4/BKIKmW6h0hERL0UicXh8kfg9Ifh8kfgCoTh9Efgarvdcbsv1LlveESWARPtljSNPHWZ8VeWKMN5Q1HUOAOwyuh18gajeGtPLQDg1tkjoJBRHLX4w8gzicgypJ6aUWazGTSYqrWixulHRbMfXk8EOQYRKuXgv3BBEAQsnFiAWSOz8MePjuHfR5rw+q5qfHK0Ccvnj8HUYmu6h0hENGy1F0wufxiuQIcCyd+hcGrb3rVgOhOVQoBVr4ZBo8qIv1cdsbgiOgvqXAH4IzFkGVJPrd7aWwt/OIaRWXrMGZ16ahWJxSEAKLIxtRqu1EoFSnOMsOlFHG/ywuEJwSSqYM6QiU1sBg0evGI8Pj3WjOc+PIo6dxA/fWM/Fk7Mx+0XjsqYNI6IaLCLxOJwById0qQOyVKn7RF4Q6n19LYXTFadBla9GjZ94v/t22x6Naxt24yiCoIgoM7tx/SS1GdHTif+RSIaYK3BCGpdAdhkzBDoC0Xxtz01AIBvzC6Rl1r5wsg1iciS0etFQ4tFr8bkIguyjQEcb/Kj1h1ArlGEOkPeFfzKOdmYUmTBX7dW4J/7Hdh4sB47Klpw16WjceHobL55QETUjY4FUyJVar8E79S0KdWCSakQYNWpOxdLOg1shlOLqPaCaahjcUU0wOpcQQT6kFr5QjGUZOlx0ZiclI+PxOKQkOhfUSiG/j9odGYqpQIlWQZY9BpUNPlQ5wpAr1HBmiHFt0FU4d55YzD33Fw8tfkIalwB/Oqdz/GVc7Jw96WjkW1M/feMiCjTRNsKpk59S4GThVLHhKlVRsFk0alPJkm6jimTptN2o1Yl643foYzFFdEAag1GUOsOwCbjhas/HMXfytt6rWbJS62cvjByjRpks9eKujBr1ZhktyDbKOJ4oxe1bj9yDFpoVJmRYk2yW/CHW2fglR1VeG1XNT491oK91W4svbAUiyYV8I89EWWcTgVToMtED+3pUiDx/9ZgagWTQkDykruul+CdTJwSn7Ng6hsWV0QDqNYVQDASQ7aM1Orve+vgDUVRbNPJTq3ikGC3MbWi7ikViXXPrDo1jjf5UOsKQKtSwqpXZ8SlGxqVAt/6ykhcPCYHT73/JQ7Xe/HsB0fx4eFGLJ8/BsU2fbqHSETDXCwuJSd26FwshU8pomQVTLqTiVKiUOo+bTKxYDprWFwRDRBPMII6d1B2avXG7rZeq1klUMoojpz+MHKMoqzCjoYXg6jCxEIzcoyJCS9q3UFkGzTQqjNjuvPSHAN+c+M0/GNfLf7v0xM4UOvB/S/txjdmj8CNM4oybqYpIhrcYnGprYepy6x4vvYi6uT21mAUqawyqBDQdkne6fuXWDANXiyuiAZIrVN+avWPfXVoDUVRZNXhkrG5KR8fjcURi0sosupkFWY0/CgUAgosWlh0alQ0e1HjDMIXisJm0GTEH2+lQsDXphXhglHZePaDI9hV6cLzn57Ax1824r7LxuLcfFO6h0hEg1jHgqnz7Hinrsckt2A6NVFq/7xtu4EF01DA4opoAHiCEThkplaBcCyZWt0yq1hmahVBtlHD5n5KmU6jxPgCM7INIo41+VDnDiBLL0KnyYwUK9+sxcprJ+HDw434fx8dQ0WzH//52h5cO9WOb31lZMakcUTUd7G4BE+gbcFaXzd9TB3SJk8gknLBZG4vlLrOlqfXdNpu0qr5RucwwuKKaADUOgMIReOyipt/7q+DJxhFoUWLuefmpXx8LC4hGo+j2KbnP+YkiyAIyDNrYdapUdnsR6XTD28oiiyDJiN+pgRBwLxxeZgxwoY/f3QMHxxuxN/21GLrsWYsmzcGM0dm1popRHRSLC7BE+yYKJ3av9SeMrllFkxW3amz4tkMmk7bWTBRT9JaXG3ZsgWPP/44du7cibq6OmzYsAHXX3/9aY/prsn6ueeew9133528vW/fPixfvhzbtm1DVlYW7rrrLvzsZz/LiAZtynzuQAR17gCs+tQXaA1GYlifTK3k9Vq5/GFkGTTIYWpFfaRVKzE234gsowbHm3xweIKw6dXQazLjfTmLTo0HLh+HueNy8ewHR9HQGsLP3zqA+eNyccfF58CSIYsoEw11JwumbvqY/J0LJk8wgngKFZOA9kvy1GecLc/Mgon6QVr/Qvp8PkybNg3f+c53cOONN/b6uDVr1uCKK65I3rZYLMnPPR4PFi5ciPnz52P79u04fPgwli5dCoPBgAceeKBfx0/UnRqXH+GohBxj6r9e7+x3wB2IIN8sYt65qfdaxeISQtEYxtvM/ANB/UIQBOQYRZi0KlS3BFDZ4kNrMIoco5gxP2OzRmbhmcUWPP/ZCby1pxbvf9GInSec+N4l52Duubl8441oAMTiElqDkTNO+NB+SV6qBZO5yzpMJ5OmDp/rNDDrWDDR2ZXW4urKK6/ElVdemfJxVqsVBQUF3d63bt06BINBrF27FqIoYvLkyTh8+DBWr16NsrIy/hGlAeX2R1Avs9cqGInh9d3VABKplZwZzlz+MLKMInKMXNeK+peoUmJ0nhE2gwbHm7xweAKwaBProWQCnUaJ711yDi4dm4unNn+JEy1+/HbjYXx4uBH3zBuNPJM23UMkGvTiUlsPU3u/kj98yoK17dvlFkzd9y91ni2PBRMNZoP6r+LKlSuxdu1aVFRUdNq+fPlyfPe738WoUaNwxx134M4774RCkXghunXrVsydOxeiePKSqEWLFmHFihWoqKjAqFGjun2sUCiEUCiUvO3xePr/CdGQV+P2IxyTkCOj+f9fBxxw+SPIM4m4bJy8XqtQLI5xNh2nnqYBk2XQwKS1osbpR0WzHz5PFNkGTcb8zI0rMOF335iO9buq8dL2Kuw44cSyF3bh218pxVVTCvmCjYaduCShNRjtdlY8V1sfU/t2t4yCyaRVdSqUuutfsuo1sLBgoiFiUBdXOTk5GD16dKdt//Vf/4UFCxZAp9Nh06ZNeOCBB9DU1ISHHnoIAOBwOFBaWtrpmPz8/OR9PRVXq1atwiOPPNL/T4KGDbc/MUNglozUKhSN4fVdidTq5vPkpVbuQAQ2vZq9VjTg1EoFSnOMsOnFthQrCJOohjlDepjUSgW+MXsELhyTg6c3H8HBOg/+30fH8OHhRtx32RiMzDake4hE3ZIkCXEJiMYTy20kJjCSEG/7f8dt7Z8HI7FuCyVX+2QQgXBKBRMAmLWqzv1KXSeAaNvOgomGo0FdXC1fvhzLly/vtK29iAKA6dOnAwAeffTRTtu7XvonSVK32ztasWIFysrKkrc9Hg9KSkpkj52GF0mSUOPyIxKTZE31/O6Bejj9EeSaRCyYIC+1CkRiGJtvhDpDEgTKfBa9GpOLLMgyaFDR7EetO4Bco5gxP4MlNj1W3TAF7+x3YO0nFfiivhU/eLkcN51XjFtmlWTM86DO4tLJwqJroXFyW/zUfSQJsVji/52Pifdwju5uxxGTgFgsfvKcPRxzsiiKd3/OtvF0Pc9AMbUVTF0vweu0HpNODYtOnTFJNVE6DOriqje+8pWvwOPxoL6+Hvn5+SgoKIDD4ei0T0NDA4CTCVZ3RFHsdCkhUSrcgQgcHnmpVTgax2vJ1KpY1gs6TyACq16NXBN/hunsUikVGJFtgNWgQUWTD7WuAAyaxIu0TKAQBFw1pRDnj8rCcx8cxbaKFry0vQr/PtKE+y4biwmF5nQPsd+1px/tRUY8fmoS0vGFfby92IglCofEMT0nJZ2TlPjJbZKEaOxk4ZA458nPuys0enycToVQ50JpAOuPQUupEBIfggCVQoBSmfhcqRAgqpWwdZktz6bTwGo4OWseCyai/pPxxdXu3buh1WphtVoBAHPmzMFPfvIThMNhaDSJP+7vvvsu7Hb7KZcLEvUHSZJQ4wwgKjO12nioHi2+MHKMGnx1Qs9vAPQkLkkIRKMYnW/lO+2UNmatGpPsFmQbRRxv9KLW7UeOQQuNKjN+JnOMIh66egL+fbQZf/zwKKqcAfx/r+/FlVMKcWvbsgjdFQWxeDxRMEjdFxqdb8cRi+PUJOSUc3Y95kwFTIc0pkNqEpd6Pma4EZAoQFQdio7EhyJRjLR9qBQCFG3/77RNaDtWoThZwJzpmOQ2RXKbUkgUPp3PebIoShyj6HSe0z+OAgrh9FfmENHZldbiyuv14siRI8nbx48fR3l5ObKysjBixAg8/fTT2LBhAzZt2gQAeOutt+BwODBnzhzodDq8//77+OlPf4o777wzmTotWbIEjzzyCJYuXYqf/OQn+PLLL/HYY4/h4Ycf5j8+NCDcgQgcrfJmCIzE4nhtZxUA4KaZ8lIrdyACi06DXPZaUZopFQKKrDpYdWocb0uxtColrHp1Rvz7KwgCLh6Tg2nFFqz5dwU2HqrH2/vq8Pa+unQP7axQCDjlhf0ZiwYhkV62FwjdFQWdbyvOcP/J86iUifP36pgOxUZ39ysy4OePiIaGtBZXO3bswPz585O323uebrvtNqxduxZNTU04evRo8n61Wo1nn30WZWVliMfjOOecc/Doo49i2bJlyX0sFgs2btyIZcuWYdasWbDZbCgrK+vUT0XUXyRJQrUzgHhcXmr13qF6NHkTi/4unNj98gKnE5ck+MNRnJNryZiEgIY+g6jCxEIzcowijjV6UesOItugkfU7kg4mrRr3LxiLuefm4rkPj6LGFUjed8aiQKk4mVB0m5R0kzycKaEQOp5H0Yuip2Ohge6PaTunokMKkwkFMBHRYCdI7bM9UCcejwcWiwVutxtm89C75p76h9MXxs5KJyxadcovHCOxOO56ficaW0P43iXn4GvT7Ck/vssfhlqpwIyRVoiqzHjhSsNLIBxDRbMX1c4g1AoBNoMmo1IESZIQiUnJgoWIiM6eOrcf00tsyDOnfy3C3tYGfKubSKbEDIEBSJK81Grz5w1obA3Bpldj0SR5vVa+cBRFNi0LKxq0dBolxheYMa3YAq1GiTp3AIFwLN3D6jVBEKBRKVhYERFRr2T8hBZE6eL0J2YIlNNrFY3F8cqORK/VjTOLZRVHrcEozFr1oHg3h+h0BEFAnlkLs06NymY/Kp1+eENRZBszK8UiIiI6EyZXRDIkeq38gARZhdH7XzSgoTUEq16NRZNS77WSJAneUBTFNh1TK8oYWrUSY/ONmF5ihUmnQp07CH84mu5hERER9RsmV0QyOP0RNHgSxVGqEqlVYl2rG2YUybqk0BOMwqRVMbWijCMIAnKMIkxaFapa/Khs8aM1GEWOUeSld0RElPGYXBGlKJlaQV5q9cHhRjg8QVh0alw5uVDW47eGIii26TJm9jWirkSVEmPyTJheYoPNoIbDE4A3xBSLiIgyG5MrohS1+MJo8IRk9VrF4lKy10puatUajMKkVSOfqRUNAVkGDUxaK2qcflQ0++ELRZFt0EDFBbGJiCgD8a8XUQra17WSAFnrSn14uBF17iDMWlXfUiurlqkVDRlqpQKlOUbMKLEhx6hBfWsQnkAk3cMiIiJKGYsrohS0+MJobA0hq4+p1fUziqDTpF4ceUNRGEUV8s26lI8lGuwsejUmF1kwsdCMmCSh1h1AJBZP97CIiIh6jZcFEvVSPJ5IrQB5qdVHXzaixhWASVTh6inyUitPMIJz802yCjOiTKBSKjAi2wCrQYPjjT7UuQMwimpYdKlPHkNERJknLkmIxSVEYxKkdA9GBhZXRL3U4g+joTWEbIO81OrlttTquhlF0GtS/9XzhWIwiCoUWNhrRUOfWZtIsXJMIo43elHj8iPXqJX1xgYREaVfLN5WNMXjbf+Xkv+PxyWgbcJYBQQolYBSIcCszbweXBZXRL0Qj0uocQYgINEfkqp/H2lCtTMAo6jCtVNTT60AwB0IY2y+SVZhRpSJlAoBRVYdLDo1Kpp8qHUFoFUpYdWrIXDxYSKitJMk6ZRCqWMBJUmAIAASAKUgQKUQoFQKUAkK6DUKaNUKaNVKiColVEoBKoUCaqUAlVIBlUKAWqnIuGU6+CqNqBeaffJTq7gk4aX21Gq6XVZx5A1FoWdqRcOUUVRhYqEZ2cbEpYK17iCyDRpO6kJENEDaL83rVDDFEgVTTEpcridAgiS1FUuKtsJJoYBeVECrSvwbrVYqoFYqoFIKUCsS/2//XJFhRVNvsbgiOoNEauWHAvJSq0+ONqOqxQ+DRolrptpljcEdiGBMngEGkb+yNDwpFAIKLW0pVrMPNc4g1KEobAYNFEyxiIh6Rc6leaq2osik1UBUK6BVKaBWKaFWtCVMHQsnhTDsryzgKzWiM2j2hdHoDSHbIKZ8bFyS8NK2SgDA16bZYZRRHPlCUeg0ChRYOEMgkV6jwoQCM3IMIo41JSa8yNKLnOSFiIa1TgVTrHPiFEccgABIEpQKBZQKQKlIXHan0yghqhTQdbw0r0OxpG67PC/T+p7SicUV0WkkZgj0QwFBVmq19WgzTrT4odco8bVpRbLG4AqEMTrXKKswIxqKBEFAnlkLs06NymY/Kp1+eENRZBuZYhHR0CFJ3fQyxU4mThASl+YBAhRd+pm02kQvk1alhEZ18tK89kIpU/uZMgFfrRGdRpMvhKa+pFbbE6nVtVPtMGpT/3Xzh6PQqpXstSLqhlatxNh8I2wGDY43eVHrDiBLr+GkL0Q0qHWcavyUS/QkCWgrmASgrVgSoGwrjoxix0vzFJ2SJXWHCSGG+6V56cS/QEQ9iLXNEKgQ5KVWnx1vQUWzHzq1EtdNl9dr5QqEMSrbCJOWa/wQdUcQBOSaRJh1KlS1+FHZ4oc3GEW2UeQ7skR0VvXq0jyc2s8kqttTJgVEtTJRKLGfKWOxuCLqQbMvhMbWEHKMqadWUofU6pqphbKKI384ClGpRIGVqRXRmYgqJcbkmZBlEHG8yQuHJwCLTsPLaYmoT/oy1bgoDs2pxun0+FeHqBuxuISqFn/bP4Kpp1bbK1pwrNEHrVqB66bL7LXyRzAyWw8zUyuiXssyaGDSWlHd4seJFj98oSiyDZm3CCURDayeLs3jVOPUVyyuiLrR7A2hyRtGnszU6sVtiXWtrp5ih0WXenEUCMegUQkotHKGQKJUqZUKjMpt78XyoaE1CKNGDbOM30UiyixypxrXqNouzWtLmnhpHsnF4oqoi1hcQpXT3/YPaervdu844cSRRi9ElQJfnyEvtXIGwijJ0skqzIgowarXYEqRCrUuDY43J6ZtzzGKstJoIkqvaCyO2ClpE6cap8GHxRVRF03eEJq9YeT2sdfq6imFsoqjYCQGtVJAkUWf8rFE1JlKqcCIbAOsBg2ONyYKLKOo5hsXRINASlONKzpfmqcTFdCqEgVTx6nGeWkepRuLK6IO2nutEv9Ip/4u1q5KFw7Xe6FRKXC93NTKH0axTQeLni/+iPqLWavG5CILckwijjd6UePyI9eohUbFd6uJ+hunGqfhjMUVUQeJ1CqEPFPqM/Qleq0SqdVVkwtg02tSPkcwEoNSKcDOXiuifqdUCCiyJi63rWjyodYVgFalhFWv5gs1ol7o1VTj3Vyap+WleTSMsLgiahONxVHV4odGpZT1D3x5lQtf1LdCo1TghhnFssbgCoRRaGGvFdFAMooqTCw0I9uowbFGH2rdQeQYNRBVynQPjeis41TjRP2LxRVRmyZvGM3eEPLNqadGkiThxe2JGQKvmFwAmyH11CoUjUEQEu+s8110ooGlUAjJNzIqmn2ocQahVkSRZdDw948ygtQ2Xbgknfwc7beRKIrab6d6aZ5BTBRLOvWpl+Yl/s9+JqKesLgiQltq5fRDVCllvcO2t9qNQ3UeqJUCbpDZa+XyR5BvEWFlrxXRWaPXqDChwIxsg4jjTT7UugPINojQqpliDQcdC5SOt9G2Ld52R3vBcvJzAB2KGKnjsR1ut93sVPB0PRZC206ClCh1hJPjEdrOILXPH94WIwlIlEXJ9wGERLokAMn7Tm4ToFQInGqc6CxhcUWEk6lVgYzUCgBebJshcNGkAmTLmGUwHI0DAIqsev5RIzrLBEFAvlkLi06NymY/Klv8aA1GkW3UQMHfx15JJUXpqciQupwLHYubDscmi5eOx7fvJEiA1FZldEhmkuNsH0TbdW7txYfQVpV0W6Cg7b62/YRkcdO2TdG5iBEEQCEIUAjtn6PtcyH5uaL9c4XQqUjqdP7247o+PjrvkxxDd9vbzst+JqKzh8UVDXvRWByVLT5oZaZW+6pdOFDrgUoh4MaZ8nqtWvxh5JtF2JhaEaWNVq3E2Pz2xYe9qHUHkKXXQK85O38qT5eixKVTC5STnyNZZMS7HttTitL+WB2ObU9ROhcj7dHKqSlKx/1Om6L0UCCgQ5GiEE4WCAqFou3/gAIKKJLbhbYCBh0Kl5NFzMnip/sio+MYFN3s02ncbfe1nxvdnKvT8SzCiagNiysa9hq9IbT4Iigwpz5DIIBkr9XlkwqQIzO1EgD2WhENAoIgINckwqxToaolkWJ5glFolIpuL/PqmqLEJanTZV7tKUrX32wp+UnnFCWZlPUiRVG0vbLvuI9SgVOKDqWgSBYdHVMUZYfk5HQpiqKHAqW7QqS7AqVrinKyGGKBQkRDD4srGtYibTMEalXyZjPaX+PGvho3VAoBN8lMrZz+MHJNoqyp24loYIgqJcbkmZBlEFHV4kdckjoVBUpF58u8OhY0p6QdPaQoQk9FRpcUpWsygx7OpWCBQkSUdiyuaFhrbO1bavVSW6/VVyfkI9eUemoVicUhASiy6TjrEtEglGXQIEvG7J9ERDQ8sbuRhq1I2wyBOrW8XquDdR7sqU6kVjefJzO18oWRa9Qgi6kVERERUcZjcUXDVmNrCE5fWPaCvS9uS6RWC8bnIU9G8hWJxRGHhCKbnqkVERER0RCQ1uJq1apVmD17NkwmE/Ly8nD99dfjiy++OONxlZWVuPbaa2EwGJCTk4P7778f4XC40z779u3D3LlzodPpUFRUhEcffTTZjEwUjsZR2eKHTq2SlVp9XudBeZULSoWAm2aVyBqD0x9GjlFENi85IiIiIhoS0lpcffjhh1i2bBk+/fRTbNy4EdFoFJdffjl8Pl+Px8RiMVx99dXw+Xz4+OOP8dJLL+H111/HAw88kNzH4/Fg4cKFsNvt2L59O5566ik88cQTWL169dl4WpQBGr0huAN9SK3aZgi8bFyerH6taCyOWFxirxURERHREJLWCS3eeeedTrfXrFmDvLw87Ny5E5deemm3x7z77rs4ePAgqqqqYLfbAQC//e1vsXTpUvzyl7+E2WzGunXrEAwGsXbtWoiiiMmTJ+Pw4cNYvXo1ysrKOJvSMBeOJmYI1KnkpVaH61uxq9IJhQDcPEvuDIERZBs1yDakPgkGEREREQ1Og6rnyu12AwCysrKS21auXInS0tLk7a1bt2Ly5MnJwgoAFi1ahFAohJ07dyb3mTt3LkRR7LRPbW0tKioqun3sUCgEj8fT6YOGpkZvCC5/GBaZC/a291rNG5eHQosu5eOjsTii8ThKbHpZxR0RERERDU6DpriSJAllZWW4+OKLMXny5OT2nJwcjB49Onnb4XAgPz+/07E2mw0ajQYOh6PHfdpvt+/T1apVq2CxWJIfJSXy+mhocAtH46hq9kOvUZ1crDMFX9a3YseJRGr1DZm9Vq5ABFkGDbJlLDhMRERERIPXoCmuli9fjr179+LFF188ZfumTZs6bevusj5Jkjpt77pP+2QWPV0SuGLFCrjd7uRHVVWVrOdBg1tDaxCuPvRavdTWazX33FzYramnVrG4hHA0hpIsplZEREREQ82gWET4vvvuw5tvvoktW7aguPj0PSwFBQX47LPPOm1zOp2IRCLJdKqgoOCUhKqhoQEATkm02omi2OkyQhp6QtEYqlsCslOro41ebKtogUIAbpGbWvnDyOIMgURERERDUlqTK0mSsHz5cqxfvx6bN2/GqFGjznjMnDlzsH//ftTV1SW3vfvuuxBFEeedd15yny1btnSanv3dd9+F3W7v1L9Fw0uDp6+pVaLX6pKxuSi26VM+PhaXEIoleq1UykETGhMRERFRP0nrK7xly5bh+eefxwsvvACTyQSHwwGHw4FAIJDc5+mnn8aCBQuSty+//HJMnDgR//Ef/4Hdu3dj06ZN+NGPfoTvfe97MJvNAIAlS5ZAFEUsXboU+/fvx4YNG/DYY49xpsBhLBSNodoZgEFmanW8yYtPj7VAQB96rfxh2PRq5BiZWhERERENRWktrp577jm43W7MmzcPhYWFyY+XX345uU9TUxOOHj2avK1UKvGPf/wDWq0WF110EW655RZcf/31eOKJJ5L7WCwWbNy4EdXV1Zg1axbuvfdelJWVoays7Kw+Pxo8GjxBuAMRmPvYa3XJ2ByUZMlLrYLROEqymFoRERERDVWC1D7TA3Xi8XhgsVjgdruTiRhlpmAkhl0nnIjFJVj1qadGFU0+3PfSbggAnlo8AyOzDSmfo8UXhqhW4LyRNqhZXBERERFllN7WBnyVR0NegycITzAqP7XakUitLhyTI6uwSqRWUYzI0rOwIiIiIhrC+EqPhrRgJIYqZwBGUV6v1YlmHz450gQAuFVmr5UnEIFFp0EO17UiIiIiGtJYXNGQ1uAJojUYhVkrb9WBV3ZUQQIw55xslOaknlrFJQn+SBQlWXpoVPx1IyIiIhrK+GqPhqxgJIbKttRKziyRVS1+fPRlIrVafL681ModiMCq0yCXqRURERHRkCeruIpGo3jvvffwxz/+Ea2trQCA2tpaeL3efh0cUV/Ue4JoDUb6nFp95ZwsjMoxpnx8XJLgD0dRZNMxtSIiIiIaBlJ+1XnixAlcccUVqKysRCgUwsKFC2EymfCb3/wGwWAQ//3f/z0Q4yRKSXuvlUlUy0qtapwBbPmyEQDwjVkjZI3BE4jArFUjz8zUioiIiGg4SPnt9O9///uYNWsWnE4ndDpdcvvXv/51bNq0qV8HRySXwx2Atw+p1cs7KhGXgPNLszAmL/XUSpIk+MJRFNt0EFVKWWMgIiIiosyS8ivPjz/+GP/+97+h0XReL2jkyJGoqanpt4ERyRUIx1Ddh9Sq1hXAh4cTqdWts2XOEBiMwqRVI8+slXU8EREREWWelJOreDyOWCx2yvbq6mqYTKZ+GRRRX9R7AvCGojD1odcqLgGzRtowNj/1n2lJkuANJVIrrZqpFREREdFwkXJxtXDhQvz+979P3hYEAV6vFz//+c9x1VVX9efYiFLW19Sqzh3A+180AAAWny+z1yoYhVGrQj5TKyIiIqJhJeW39n/3u99h/vz5mDhxIoLBIJYsWYIvv/wSOTk5ePHFFwdijES9VudOpFZ2i+7MO3fj1R3ViEvAzBE2nCs7tYpgfIGJqRURERHRMJNycWW321FeXo4XX3wRu3btQjwexx133IFvfvObnSa4IDrb/OEoalwBmLXyUiuHJ4jN7amVzF6r1mAURlGFfDN/F4iIiIiGG1lNKTqdDrfffjtuv/32/h4PkWwOdxC+PqRWr+2oQiwuYXqJFeMLzSkfL0kSWkMRnJtvgk7D1IqIiIhouJFVXNXU1ODf//43GhoaEI/HO913//3398vAiFLhD0dR7QzAotXISq0aPEG893nfeq28oSgMogoFFvZaEREREQ1HKRdXa9aswd133w2NRoPs7OxOL2QFQWBxRWlR5wrCH4qiyKaXdfxru6oRi0uYWmzBRBmpFQB4ghGMzTNBr5E3SyERERERZbaUXwU+/PDDePjhh7FixQooFClPNkjU73yhRK+VRac5887daGwNYePBegDA4tnyUyu9hqkVERER0XCWcnXk9/tx6623srCiQaPOHYA/lJj+XI7XdlUjGpcwpciCyUUWWedwByKwW7UwiEytiIiIiIarlCukO+64A6+++upAjIUoZcnUSi8vtWr2hvDuAQcA+TME+kJR6DQKFMicSIOIiIiIhoaU32ZftWoVrrnmGrzzzjuYMmUK1Gp1p/tXr17db4MjOpM6dwCBcBxZVlHW8e2p1SS7WXZq5QyEMSbXCCNTKyIiIqJhLeVXg4899hj+9a9/Ydy4cQBwyoQWRGeLN9lrpT7zzt1o9obwr2RqNULWz68/HIVerWSvFRERERGlXlytXr0af/nLX7B06dIBGA5R79W5AvCHY7JTq/W7axCJSZhQaMbUYpmplT+Mc3KMMGnlFXhERERENHSk3HMliiIuuuiigRgLUa95Q1HUugKwyZwh0OkL4539idTq1tklslMrrVqJAitTKyIiIiKSUVx9//vfx1NPPTUQYyHqtTpXAIFITPbsfOt3VyMci2NcvgkzSqyyzuHyR1Bg1sLM1IqIiIiIIOOywG3btmHz5s34+9//jkmTJp0yocX69ev7bXBE3WkNRlDjCsAmc4ZAlz+Mt9tSq8Xny+u1CoRjEFUKFFo5QyARERERJaRcXFmtVtxwww0DMRaiXqlzBRGMxJBtkNdrtWF3DcLROMbmGTFzhFXWOZyBMEZk6WRPpkFEREREQ0/KxdWaNWsGYhxEveIJRlDrlp9auQMR/GNfHQD5qVUwEoNGKcBu0csaAxERERENTSn3XBGlU60zgFA0Br1GXq/VG7trEIrGMSbXiFkjbbLO4fSHkW/WwqJnakVEREREJ/XqFerMmTOxadMm2Gw2zJgx47Tv9u/atavfBkfUkScYgcMdhFXmDIGeDqnVrefLmyEwGIlBpRRgZ68VEREREXXRq+Lquuuugygm+luuv/76gRwPUY8SqVUc2UZ5vVZvlNcgEInhnFwDzi/NknUOVyAMu4W9VkRERER0ql4VVz//+c9x++2348knn8TPf/7zgR4T0SncgbbUSualeK3BCP6+ty21mi2/10qhSKRWco4nIiIioqGt1z1Xf/3rXxEIBAZyLEQ9qnX5EYrGZfda/W1PLQKRGEqz9bhglLzUyh2IIN+klV3gEREREdHQ1uviSpKkgRwHUY/aUyu5MwR6g1G8tacWQCK1UshInULRGCCAqRURERER9Sil2QL5opLSocblRzgmQadRyjr+zT018IdjGJmlx5zR2bLO4fJHkGcSYWNqRUREREQ9SOkaq3PPPfeMBVZLS0ufBkTUkdufSK2yZKZWvlAUb7alVt+YXSIrtQpH4wCAIqZWRERERHQaKRVXjzzyCCwWS789+KpVq7B+/Xp8/vnn0Ol0uPDCC/HrX/8a48aNO+1x3//+9/Hxxx9j//79mDBhAsrLy0/ZZ9++fVi+fDm2bduGrKws3HXXXfjZz37GF8cZRJIk1Lj8iMQkaNXyUqu39tbCF46hJEuPi8bkyDqH0x9GrklElkFegUdEREREw0NKxdWtt96KvLy8fnvwDz/8EMuWLcPs2bMRjUbx05/+FJdffjkOHjwIg8HQ43GSJOH222/HZ599hr17955yv8fjwcKFCzF//nxs374dhw8fxtKlS2EwGPDAAw/02/hpYLkDETg88lMrfziKv5W39VrNkpdaRWJtqZWNqRURERERnV6vi6uBeGH5zjvvdLq9Zs0a5OXlYefOnbj00kt7PO4Pf/gDAKCxsbHb4mrdunUIBoNYu3YtRFHE5MmTcfjwYaxevRplZWV8kZwBJElCjTOAaB9Sq7/vrYM3FEWxTSc/tfK1pVYyCzwiIiIiGj4G1WyBbrcbAJCVdXKq7JUrV6K0tDSl82zduhVz585NLnwMAIsWLUJtbS0qKiq6PSYUCsHj8XT6oPRxByJwtMqfIdAfjuKN3TUAgG/MKoFSIS+1iiMxQ6BCxvFERERENLz0uriKx+P9eklgV5IkoaysDBdffDEmT56c3J6Tk4PRo0endC6Hw4H8/PxO29pvOxyObo9ZtWoVLBZL8qOkpCTFZ0D9RZIkVDsDiPUhtfrHvjq0hqIosupwydhcWedw+sPIMWqQzV4rIiIiIuqFlKZiH0jLly/H3r178eKLL56yfdOmTSmfr+ulf+3JW0+XBK5YsQJutzv5UVVVlfJjUv9w+SOo70NqFQjHkqnVLX1IrWJxCUU2plZERERE1DspTWgxUO677z68+eab2LJlC4qLi/t8voKCglMSqoaGBgA4JdFqJ4pip8sIKT0SMwQGEI/LT63+ub8OnmAUhRYt5p4rL7Vy+SPIMWmQbeDPBBERERH1TlqTK0mSsHz5cqxfvx6bN2/GqFGj+uW8c+bMwZYtWxAOh5Pb3n33Xdjt9pT7t+jscvkTMwTKTa2CkRjW9zG1isbiiMbjKLbqZR1PRERERMNTWourZcuW4fnnn8cLL7wAk8kEh8MBh8OBQCCQ3Ofpp5/GggULOh135MgRlJeXJ/ctLy9HeXl5sphasmQJRFHE0qVLsX//fmzYsAGPPfYYZwoc5CRJQrXLD0iAqJKXWr2z3wF3IIICsxbz5KZWgQiyjRpkG5laEREREVHvpfWywOeeew4AMG/evE7b16xZg6VLlwIAmpqacPTo0U73f/e738WHH36YvD1jxgwAwPHjx1FaWgqLxYKNGzdi2bJlmDVrFmw2G8rKylBWVjZwT4b6zOmPoN4dglWvlnV8MBLD67urAQA3zyqGSpn6ewexuIRwNIZim5mpFRERERGlRJDOxhzrGcjj8cBiscDtdsNsNqd7OEOeJEnYV+NGgyeEfLNW1jn+Vl6DP398HHkmEX/81nmyiqtmbwhGrQrTS6yyjiciIiKioae3tQFfPdKg0OILo8ETkt1rFYrG8PquRGp1y6wS2alVMBpDsU3PwoqIiIiIUsZXkJR27etaSQA0Knk/ku8eqIfTH0GuScRl4+Wtx+byh5Fl0CDHyHWtiIiIiCh1LK4o7Vp8YTS2hpAlM7UKR+N4rS21uvm8Yqhlp1ZxlGQxtSIiIiIiefgqktIqHu97arXxUD1afGHkGDX46oTu1zE7E3cgAptBjRzOEEhEREREMrG4orRq8SdSq2yDvNQqEovjtZ1VAICbZspPrQKRKEpselnHExEREREBLK4ojeJxCTXOxJpmcoua9w7Vo8mb6JVaOLFA1jk8gQiseg1TKyIiIiLqExZXlDYt/jAaWkPI6kNq9erORK/VTTOLZV1WGJck+CNRlGTpZV+WSEREREQEsLiiNGlPrRSQn1pt/rwBja0h2PRqXD5Jfq+VVadBLlMrIiIiIuojFleUFs2+MBpag7DJTK2isThe2ZHotbpxZjFElTLlc8QlCYFwFMVZOqZWRERERNRnfEVJZ11ihkA/FBDkp1ZfNKChNQSrXo1Fk+T3Wpl1auSamFoRERERUd+xuKKzrskXQpM31C+p1Q0ziqBVy0utfOEoim06WakXEREREVFXLK7orIq191oJ8lOrDw43ot4TgkWnxpWTC2WdozUYhUmrRq5JK+t4IiIiIqKuWFzRWdXsC7VNQiEvtYrFpT6nVpIkwRuKosSmk3U8EREREVF3WFzRWROLS6hq8UOpkJ9afXi4EXXuIMxalezUyhOMwqhVIc/M1IqIiIiI+g+LKzprmr0hNHvDyOqH1Or6GUXQaeSmVhGmVkRERETU71hc0VkRi0uocvqhUiigkplaffRlI2pcAZhEFa6eIr/XyiiqkM/UioiIiIj6GYsrOivaUyubXi3r+FhcwssdUiu9RpXyOSRJQmsogmKmVkREREQ0AFhc0YCLxSVUtvihVspPrf59pAnVzgCMogrXTJWXWnlDURhEFfLNOlnHExERERGdDosrGnBN3hCavSFYdfJSq7gk4aW21Oq66XZZqRUAeIIRFFl1snq1iIiIiIjOhMUVDahoLI6qFj80KqXs1OqTo82oavHDoFHi2ql2WefwBqPQa1QosLDXioiIiIgGBosrGlBN3jCavfLXtYpLEl7aVgkA+No0OwyivNTKHQijyKqTnXoREREREZ0JiysaMNFYHFVOP0SVEkqFIOscW48240SLH3qNEl+bViTrHN5QFDpRydSKiIiIiAYUiysaMO2plbUvqdX2RGp17TQ7jFq5qVWi10pu6kVERERE1BssrmhAtKdW2j6kVp8db0FFsx86tRLXTZPXa+ULRaFTK1Bg4QyBRERERDSwWFzRgGj0htDiC8tOraQOqdU1Uwth0sqbadAVCMNu1cHI1IqIiIiIBhiLK+p3kbYZAkWlQnZqtb2iBccafdCqFbh+urxeK384Cq2avVZEREREdHawuKJ+1+QNocUX6VNq9eK2xLpWV0+xwyxzfSynP4xCi1Z26kVERERElAoWV9SvIrE4KlsSfVJyU6sdJ5w40uiFqFLg6zP6kFqplCi0steKiIiIiM4OFlfUrxpbQ3D6wrDITJs69lpdPaVQ9nlc/ggKLFqYmVoRERER0VnC4or6zcnUSiU7tdpV6cLhei80KgWul5laBcIxaFQCUysiIiIiOqtYXFG/aWgNwR3oW2r14rZEanXV5ALYZPZsOQNh5Fu0ssdBRERERCQHiyvqF+FoYoZAnUp+arW7yoUv6luhUSpww4xiWecIRmJQKwUUWfSyjiciIiIikovFFfWLRm8ILn9Y9sx+kiThpbbU6orJBbAZZKZW/jAKzFqYdVzXioiIiIjOLhZX1GftqZW+D71We6vdOORohVop4AaZvVbBSAxKpQC7VQdBkDcOIiIiIiK50lpcrVq1CrNnz4bJZEJeXh6uv/56fPHFF6c9Zs+ePVi8eDFKSkqg0+kwYcIEPPnkk6fst2/fPsydOxc6nQ5FRUV49NFHIUnSQD2VYa2hNQiXPwyLvg+9Vm0zBC6aVIBsoyjrPK5AGPkm9loRERERUXqk9dqpDz/8EMuWLcPs2bMRjUbx05/+FJdffjkOHjwIg8HQ7TE7d+5Ebm4unn/+eZSUlOCTTz7BnXfeCaVSieXLlwMAPB4PFi5ciPnz52P79u04fPgwli5dCoPBgAceeOBsPsUhLxSNobolAL1GBYXMtGh/jRsHaj1QKQTcNFNer1UoGoMgMLUiIiIiovQRpEEU5zQ2NiIvLw8ffvghLr300l4ft2zZMhw6dAibN28GADz33HNYsWIF6uvrIYqJFORXv/oVnnrqKVRXV/fqxbfH44HFYoHb7YbZbJb3hIaBqhY/DtS6UWjRyS6ufrJhH/bVuHHVlELcM3e0rHPUe4LIM4uYUmRhcUVERERE/aq3tcGg6rlyu90AgKysrOS2lStXorS09IzHdTxm69atmDt3brKwAoBFixahtrYWFRUV3Z4jFArB4/F0+qDTC0VjqHb6YehjarWvxt2n1CocjQMAiphaEREREVEaDZriSpIklJWV4eKLL8bkyZOT23NycjB6dM9pxtatW/HKK6/grrvuSm5zOBzIz8/vtF/7bYfD0e15Vq1aBYvFkvwoKSnpy9MZFho8QbgDEdkzBALAS229Vgsn5iPXJK/XqsUfRq5JRJbMGQaJiIiIiPrDoCmuli9fjr179+LFF188ZfumTZu6PebAgQO47rrr8PDDD2PhwoWd7uuaYLRf/dhTsrFixQq43e7kR1VVldynMiwEIzFUtQT6lFodrPNgT3XfUqtILA4BQJGNqRURERERpdegWAzovvvuw5tvvoktW7aguLh3L7IPHjyIyy67DN/73vfw0EMPdbqvoKDglISqoaEBAE5JtNqJotjpMkI6vfbUym7VyT7Hi23rWi0Yn4c8s1bWOVp8bamVnqkVEREREaVXWpMrSZKwfPlyrF+/Hps3b8aoUaN6ddyBAwcwf/583HbbbfjlL395yv1z5szBli1bEA6Hk9veffdd2O32M/Zv0ZkFIzFUOQMwadWyU6vP6zwor3JBqRBw8yx5l2BGYnFIAOxWHRQy19ciIiIiIuovaS2uli1bhueffx4vvPACTCYTHA4HHA4HAoFAcp+nn34aCxYsSN5uL6wWLlyIsrKy5DGNjY3JfZYsWQJRFLF06VLs378fGzZswGOPPYaysjJeOtYPGjxBtAajMGvlB58vbk9cdnnZuDzky0ytnL4wco0aZLPXioiIiIgGgbQWV8899xzcbjfmzZuHwsLC5MfLL7+c3KepqQlHjx5N3n711VfR2NiIdevWdTpm9uzZyX0sFgs2btyI6upqzJo1C/feey/KyspQVlZ2Vp/fUNSeWhlFlexC9XB9K3ZVOqEQgFv6kFrFIcFuY2pFRERERIPDoFrnajDhOlfdO9Hsw6G6VtgtWtnF1SNvHcCOE04sGJ+HH3z1XFnnaGgNIsugwdRiK5QsroiIiIhoAGXkOlc0uPVHavVlfSt2nOhbahWNxRGLSyiy6lhYEREREdGgweKKeq3eE4Q3GOlTr9VLbb1Wc8/NlT3ToNMfQbZRg2wjZ3ckIiIiosGDxRX1SiAcQ1WLHyZRLTu1OtroxbaKlj6lVrG4hGg8jmKbnqkVEREREQ0qLK6oV+o9AXhDUZj6lFol1rW6ZGwuim16Wedw+cPIMmiQw9SKiIiIiAYZFld0RoFwDNXOQJ9Sq+NNXnx6rAUCgG/0IbUKRWNMrYiIiIhoUGJxRWdU5+6P1CrRa3XJ2ByUZPUhtTKKyDFyXSsiIiIiGnxYXNFp+cNR1LgCMGvlp1YVTT58crQZAvrWaxWKxVFs00Gl5I8tEREREQ0+fJVKp+VwB+ELRWEU+5Ba7UikVheOycHIbIOsc7gDEdj0avZaEREREdGgxeKKetQfqdWJZh8+OdIEALi1D6lVIJLotVIztSIiIiKiQYqvVKlHda6+p1av7KiCBODC0dkozZGXWnkCEVj1auSamFoRERER0eDF4oq65QslUiuLViM7tapq8eOjL9tSq9nyUqu4JCEQjaIki6kVEREREQ1ufLVK3XK4g/CHojD2YYbAl9tSq6+ck4VROUZZ53AHIrDoNMhlrxURERERDXIsrugUvlAU1S4/LHr5U55XO/346MtGAMCts0fIOkdckuAPR1Fs00Gj4o8qEREREQ1ufMVKp6hzBxAIx/vcaxWXgPNLszA6V15q5QlEYNVp2GtFRERERBmBxRV14m3vtdKpZZ+j1hXAh4cTqdXi8+WnVr5wFEU2LUSVUvZYiIiIiIjOFhZX1EmdKwB/ONYvqdWskTaMyZOXWrUGozBr1cgza2WPg4iIiIjobGJxRUneUBS1rgBsOvm9VnXuAN7/ogGA/NRKkiR4Q4leK6ZWRERERJQpWFxRUp0rgEAkBkMfUqtXd1QjLgEzR9hwbr5J1jk8wShMWhVTKyIiIiLKKCyuCADQGoyg1hWAtQ+plcMTxOb21ErmulaSJKE1FEGxTQetmqkVEREREWUOFlcEAKhzBfucWr22owqxuITpJVaMLzTLOkdrMAqTVo18plZERERElGFYXBE8wQhq3QHY+rCuVYMniPc+73uvVWsogmKrlqkVEREREWUcFleEOlcAoWgMek0fUqtd1YjFJUwrtmCizNTKG4rCKKqQb9bJHgcRERERUbqwuBrmPMEI6lzBPvVaNbaGsPFgPQDg1tnyUytPMAK7VQedhqkVEREREWUeFlfDXK0zgGA/pFbRuIQpRRZMLrLIOocvlOj3KrCw14qIiIiIMhOLq2HMHYjA4Q72qdeq2RvCuwccAOTPEJgYSxh2i65PRR4RERERUTqxuBrGal1+hKLxfkmtJtnNslMrbygKPVMrIiIiIspwLK6Gqf5Krf6VTK1GQBAE2WOxW7V9mgaeiIiIiCjdWFwNUzUuP8IxqU+TR6zfXYNITMKEQjOmFsvttYpCp1agwMIZAomIiIgos7G4Gobc/gjq3UHY+jBDoNMXxjv7T/ZayU2tXIEw7FYdjEytiIiIiCjDsbgaZiRJ6qfUqhrhWBzj8k2YXmKVdQ5/OAqtWsleKyIiIiIaElhcDTPuQAQOTxBZfei1cvrDeLs9tTpffq+Vq22GQJNWLXssRERERESDBYurYUSSJNS6AojGJGjV8lOrN3bXIByN49x8I2aOsMo6hz8chahUosDK1IqIiIiIhgYWV8OIOxBBnadvMwS6AxH8Y18dAODWPswQ6PJHUGDRwszUioiIiIiGCBZXw4QkSahxBhDrY2q1YXcNQtE4xuQZMWukTdY5AuEYNCoBhVbOEEhEREREQ0dai6tVq1Zh9uzZMJlMyMvLw/XXX48vvvjitMc0NzfjiiuugN1uhyiKKCkpwfLly+HxeDrtt2/fPsydOxc6nQ5FRUV49NFHIUnSQD6dQc3lj8DR2h+pVS2Avs0Q6AyEkW/RwqJjakVEREREQ0dai6sPP/wQy5Ytw6effoqNGzciGo3i8ssvh8/n6/EYhUKB6667Dm+++SYOHz6MtWvX4r333sPdd9+d3Mfj8WDhwoWw2+3Yvn07nnrqKTzxxBNYvXr12Xhag05ihsAA4vG+pVZ/K69BMBLHObkGzC7NknWOYCQGtVJAkUUvexxERERERINRWhcXeueddzrdXrNmDfLy8rBz505ceuml3R5js9lwzz33JG+PHDkS9957Lx5//PHktnXr1iEYDGLt2rUQRRGTJ0/G4cOHsXr1apSVlclOXDKVy5+YIbAvqVVrMIK/7+17r5XTH0axTQezjutaEREREdHQMqh6rtxuNwAgK+tkKrJy5UqUlpb2eExtbS3Wr1+PuXPnJrdt3boVc+fOhSiKyW2LFi1CbW0tKioquj1PKBSCx+Pp9DEUSJKEapcfkABR1YfUak8tApEYRuUY8JVR8lMrpVKA3aobdgUuEREREQ19g6a4kiQJZWVluPjiizF58uTk9pycHIwePfqU/RcvXgy9Xo+ioiKYzWb8+c9/Tt7ncDiQn5/faf/22w6Ho9vHX7VqFSwWS/KjpKSkP55W2jn9EdR7QrDq5fc3eYNRvLUn0Wv1jVnye61cgTDyTey1IiIiIqKhadAUV8uXL8fevXvx4osvnrJ906ZNp+z/u9/9Drt27cIbb7yBo0ePoqysrNP9XQuA9skseioMVqxYAbfbnfyoqqrqy9MZFCRJQrWz76nVm3tq4A/HMDJLjzmjs2WdIxSNQRAEFDG1IiIiIqIhalA0vtx333148803sWXLFhQXF/fqmIKCAhQUFGD8+PHIzs7GJZdcgp/97GcoLCxEQUHBKQlVQ0MDAJySaLUTRbHTZYRDQYsvjAZPqE+9Vr5QFG+2pVa3nj8Cij6sa5VvEfuUoBERERERDWZpTa4kScLy5cuxfv16bN68GaNGjZJ9HiDRNwUAc+bMwZYtWxAOh5P7vPvuu7Db7aft3xpKEqlVABIAjUr+t/mtvbXwhWMoydLjQpmpVTgaBwAUWfVMrYiIiIhoyEprcbVs2TI8//zzeOGFF2AymeBwOOBwOBAIBJL7PP3001iwYEHy9ttvv401a9Zg//79qKiowNtvv4177rkHF110UbJwWrJkCURRxNKlS7F//35s2LABjz322LCaKbDFF0ZjawhZfUit/OEo/lbellrNKpGdWrX4w8gzi7AxtSIiIiKiISytlwU+99xzAIB58+Z12r5mzRosXboUANDU1ISjR48m79PpdPjTn/6EH/7whwiFQigpKcENN9yABx98MLmPxWLBxo0bsWzZMsyaNQs2mw1lZWWn9GUNVfF4/6RWf99bB28oimKbDheNyZF1jnA0DgFgrxURERERDXmC1H5NHXXi8XhgsVjgdrthNpvTPZyUNHlDKK90wabXyC6u/OEovvvXHWgNRfHAwnMxb1yerPPUe4LINYmYUmSBQsHiioiIiIgyT29rg0EzWyD1j3hcQo0zcVllX1Krf+yrQ2soiiKrDpeMzZV1jkgsDglAkU3HwoqIiIiIhjwWV0NMiz+MhtYQsgzye60C4Rje2F0DALhlVgmUMgsjpy+MXKOmT31fRERERESZgsXVENKeWikAqJXyv7X/3F8HTzCKQosWc8+Vn1rFIaHIpmdqRURERETDAourIaTZl0itbH1IrYKRGNb3R2rlDyPHKCK7D2MhIiIiIsokLK6GiMQMgf4+p1bv7HfAHYigwKzFfJmTWERjccTiEnutiIiIiGhYYXE1RDT5Qmjy9j21en13NQDgllnFfUitIsg2apBtEGWPhYiIiIgo07C4GgJi7b1WgtCn1OpfBxxw+SPIM4l9Sq2i8ThKbHrZxRkRERERUSZicTUENPtCaGwNwdaHWflC0Rhe39WeWpVAJbNIcwUiyDJokG1kakVEREREwwuLqwwXa+u1Uir6llq9e6AeTn8EuSYRl42Xl1rF4hLC0RhKsphaEREREdHww+IqwzV7Q2hqDfdpLalwNI7X2lKrm88rll2kufxhZHGGQCIiIiIaplhcZbBYXEKV0w+VQiH7Mj4A2HjQgRZfGDlGDb46IV/2WEKxRK9VX8ZCRERERJSp+Co4gzV7Q2j2hmHTq2WfIxI7mVrddF5Jn1Irm16NHCNTKyIiIiIanlhcZahYXEJlix9qZd9Sq/cO1aPJG0aWQYOFfUitgtE4SrKYWhERERHR8MVXwhmqyRtCiy8Mq65vqdWrO9tSq5nF0Kjk/Ti4A5H/v717D46yPP8//tmwyWaTbDYE3CSbgyAe28WqDRUcKqgV8FSp/vrzVCQj1doGdBracagdUZyK1srUwfHYmdhWFA/ISFuPNdGqBES+8UuQFiQSDmIIBLIbyHGz9/ePkC0xB+JmN3vg/ZrZGfbZZ+/nfi6uCbm49r5XWWnJGssOgQAAADiBUVzFIX9XQLvD0LWq+E+D9je3KzstRTO/nRvSGN1dK7+KstOGtVshAAAAEO/4bTgOHTjcocbDw/teK39XQC99sluSdM15+SF3rXytnXLaU+haAQAA4IRHcRVn/F0B7T7UIpt11LC+S6pia4MamtuVlZasWZ7QulYBY9TS6VfBaHvIxRkAAACQKPiNOM70dK2ywtS1uvbcAtmso0Iax9vaqSx7ilyO1JDnAgAAACQKiqs40tO1Sh1m1+q9bfu1z9cup32YXasOv/LpWgEAAACSKK7iyv6eHQKH0bXqCpj/rrU6N1+pyaF1rXytncpMTZYrk7VWAAAAgERxFTc6j+4QaBuVNKyu1fvb9usrb5syU626fGJeSGMYY3S4vXutVagfKQQAAAASDcVVnOj+XqvOsHWtfnRuQehdqza/Mu3JcmWy1goAAADoQXEVBzq7Atp1sEX25OGttfrg8/36sqlVDptVl08Mba3VsV2rUIszAAAAIBFRXMUBX2unvC2dctqTQx6jK2D04tGu1exz85WWYg1tLm1+ZaRalUPXCgAAAOiF4ioOGHV3jIbTtfpo+wHtOdSqDJtVV549nLVWnSrISqVrBQAAAHwNxdUJIGCMVh7tWl19jjvkrlVzm18ZNqtyMu3hnB4AAACQECiuTgBraxu1+2CL0m2jdNXZ7pDGMMaoub1T7iy77Cl0rQAAAICvo7hKcAFjtPLjXZKkq7+Tr3RbaF2rw+1+pdusynWy1goAAADoD8VVgquqbdTOgy1KSwm9ayVJvrZOuZ32kD9SCAAAACQ6iqsEFjBGKzd0d62u+o5bGamhd63SUuhaAQAAAIOhuEpg63ccVF1j9/djXf2d0LtW3tZOubNSQ/5IIQAAAHAioLhKUOaYrtWVZ+fJkRrad2QdaffLnpKkXCc7BAIAAACDobhKUB/XHdQX+4/InjxKs8/JD3mcQ60dcjvtyqBrBQAAAAyK4ioBGWO08uPu77W6YmKeMu2hda1aOvxKSx7FWisAAABgCKJaXC1dulSTJk2Sw+GQy+XS7NmztXXr1iG/v7GxUQUFBbJYLGpqaur1Wk1NjaZNmya73a78/HwtWbJExpgw30Fs+mTnIW3ff1g2a5JmnzuMrlVLh/Kc9pA/UggAAACcSKJaXL3//vsqLS3VunXr9M4778jv92vGjBk6cuTIkN4/b948nX322X2O+3w+XXrppXK73dqwYYOWL1+uP/zhD1q2bFm4byHmGGP0wtHvtbpiYp6cw+hapSaPUm4WXSsAAABgKKK6kObNN9/s9by8vFwul0sbN27UhRdeOOh7n3jiCTU1Nemee+7RG2+80eu1FStWqK2tTc8++6xsNps8Ho+2bdumZcuWqaysTBaLJez3Eiv+Z1eTPm84rBRrkn40jK5VU0unTh6Tpky6VgAAAMCQxNSaK6/XK0nKzs4OHrv33ns1bty4Xudt2bJFS5Ys0V/+8hclJfW9haqqKk2bNk02my14bObMmdq7d6/q6ur6vXZ7e7t8Pl+vR7w5tmt1uSdXWWkpIY3T2tElmzVJeVnsEAgAAAAMVcwUV8YYlZWVaerUqfJ4PMHjY8eO1YQJE4LP29vbdcMNN+jhhx9WUVFRv2PV19crJyen17Ge5/X19f2+Z+nSpXI6ncFHYWHhcG9pxFXvbtLWfc1KGZWka84tCHmcQ60dynHaQv5IIQAAAHAiipniav78+dq0aZNeeOGFPsfffffd4PNFixbprLPO0k9+8pNBx/v6R/96NrMY6COBixYtktfrDT52794dym1ETfcOgd1dq1meXI1OD61r1dbZpZRRFrmdaeGcHgAAAJDwYqK4WrBggdasWaPKykoVFAzecamoqNDLL78sq9Uqq9WqSy65RFJ3h2vx4sWSpNzc3D4dqoaGBknq09HqYbPZlJmZ2esRTzbt8erf9c1KHmXRNcPcITAnM1XONLpWAAAAwDcR1Q0tjDFasGCBVq9erffee0/jx48/7ntWrVql1tbW4PMNGzbolltu0QcffBD8+OCUKVP0m9/8Rh0dHUpJ6e7gvP3223K73X3WbyUCY4xe2NDdtZr57VyNybAd5x39a+vsknWURW7WWgEAAADfWFQ7V6WlpXruuef0/PPPy+FwqL6+XvX19b2Kp8ceeyzYnZKkCRMmyOPxBB89BdlZZ50ll8slSbrxxhtls9lUUlKizZs3a/Xq1XrggQcSdqfAzV969dlen6xJFv2/80Jfa9XU2qEcRyprrQAAAIAQRLW4euKJJ+T1ejV9+nTl5eUFHy+++GLwnAMHDqi2tvYbjet0OvXOO+9oz549Ki4u1i9+8QuVlZWprKws3LcQE17Y0L0+bLhdq6Sk7q5VIhagAAAAQKRZTM9OD+jF5/PJ6XTK6/VGff3VgcPt2lh3UO6svptMbP7Sq0Wra2RNsujpOcU6yRFacbXP16ZcZ6q+7c6kuAIAAACOMdTaICY2tEDoVh5da3Xpt3JCLqza/V2SRXStAAAAgGGguIpjW77y6X/3eLvXWn13GN9r1dIpl8Om0ewQCAAAAISM4iqOvXD0e60uOdMllyM1pDE6/AFZJOXTtQIAAACGheIqTv3nK58+3d2kUUkW/bi4MORxDrV06CSHTdkhfukwAAAAgG4UV3GqZ4fAi890KScztK5VZ1dAkpQ/mq4VAAAAMFwUV3Fo275m/c+uQ0qySP//u8PoWh052rVKo2sFAAAADBfFVRzqWWt10Rku5TpD71oFZOTOsispia4VAAAAMFwUV3Hm833N+mTn0a7VMNdajc2waQxrrQAAAICwoLiKMyuPrrWadvpJcmfZQxqjsyugroBR/mi6VgAAAEC4UFzFke0Nh/Vx3UElWaTriotCHqeppVNjMlI0Jj20Lx0GAAAA0BfFVRx58ZPutVYXnnaS8keH1rXydwXkDwRUODpNo+haAQAAAGFDcRUndh9q0bovDsqi4a21amo92rXKoGsFAAAAhBPFVZz4x6Z6SdL3Txurwuy0kMboChh1+LtUQNcKAAAACDuKqziwveGwqnc3Db9r1dKhbHYIBAAAACKC4ioO/OmDLyRJF5w6ViePSQ9pjK6AUZu/S4Wj02QdxV87AAAAEG78lh3jtu1r1rv/bpAkXT/crlV6isZm0LUCAAAAIoHiKsZt2etTijVJ5xVladzY4XStAirMpmsFAAAARIo12hPA4Gafm69vuTP1yY7GkMfwtnZqdHqyxrJDIAAAABAxtDHiQHZ66FundwWMWjv9KhydpmS6VgAAAEDE8Nt2gvO1diorLYWuFQAAABBhFFcJLGCMWjr9KsxOU4qVv2oAAAAgkviNO4F5WzuVZU/RSXStAAAAgIijuEpQAWPU2uFXQbadrhUAAAAwAvitO0H5WjuVaU/WSQ66VgAAAMBIoLhKQAFjdKTDr4LRdtmso6I9HQAAAOCEQHGVgJrb/HKkJuskR2q0pwIAAACcMCiuEowxRofb/SocbVdqMl0rAAAAYKRQXCUYX5tfGalWuTLpWgEAAAAjieIqgXR3rTrpWgEAAABRQHGVQJrb/MqwWeVirRUAAAAw4iiuEoQxRs3tnSoYbZc9ha4VAAAAMNIorhLE4Xa/0m1W5WTaoz0VAAAA4IREcZUgfG2dys+iawUAAABEC8VVAjjc5ldailW5TtZaAQAAANFCcZUAvK0dys+yKy3FGu2pAAAAACesqBZXS5cu1aRJk+RwOORyuTR79mxt3br1uO+zWCx9Hk8++WSvc2pqajRt2jTZ7Xbl5+dryZIlMsZE6lai5nC7X3bbKLpWAAAAQJRFtdXx/vvvq7S0VJMmTZLf79fdd9+tGTNmaMuWLUpPTx/0veXl5Zo1a1bwudPpDP7Z5/Pp0ksv1UUXXaQNGzZo27ZtKikpUXp6uhYuXBix+4kGb2unTnWlK91G1woAAACIpqj+Rv7mm2/2el5eXi6Xy6WNGzfqwgsvHPS9WVlZys3N7fe1FStWqK2tTc8++6xsNps8Ho+2bdumZcuWqaysTBaLpc972tvb1d7eHnzu8/lCuKORdaTdL3tyknKd7BAIAAAARFtMrbnyer2SpOzs7OCxe++9V+PGjetz7vz58zV27FhNmjRJTz75pAKBQPC1qqoqTZs2TTabLXhs5syZ2rt3r+rq6vq99tKlS+V0OoOPwsLC8NxUBDW1dsidZVcGXSsAAAAg6mKmuDLGqKysTFOnTpXH4wkeHzt2rCZMmNDr3Pvvv18vv/yy/vnPf+r666/XwoUL9cADDwRfr6+vV05OTq/39Dyvr6/v9/qLFi2S1+sNPnbv3h2uW4uIlg6/UpNZawUAAADEiphpecyfP1+bNm3Shx9+2Of4/Pnzex377W9/G/zzOeecI0lasmRJr+Nf/+hfz2YW/X0kUJJsNluvTlesO9TSofFj0+VITY72VAAAAAAoRjpXCxYs0Jo1a1RZWamCgoJv/P7JkyfL5/Np3759kqTc3Nw+HaqGhgZJ6tPRikctHX6lWkcpL4u1VgAAAECsiGpxZYzR/Pnz9eqrr6qiokLjx48PaZzq6mqlpqYqKytLkjRlyhT961//UkdHR/Cct99+W263u9/1W/GmqaVTuc5UZdK1AgAAAGJGVIur0tJSPffcc3r++eflcDhUX1+v+vp6tba2Bs957LHHdMkllwSf/+1vf9MzzzyjzZs3q7a2Vn/60590991367bbbgt+rO/GG2+UzWZTSUmJNm/erNWrV+uBBx4YcKfAeNLa0aUUq4WuFQAAABBjorrm6oknnpAkTZ8+vdfx8vJylZSUSJIOHDig2tra4GvJycl6/PHHVVZWpkAgoFNOOUVLlixRaWlp8Byn06l33nlHpaWlKi4u1ujRo1VWVqaysrKI31OkHWrtUGG2XU47XSsAAAAgllhMz04P6MXn88npdMrr9SozMzOqczlwuF0b6w4qO92m5vZOfbcoW840iisAAABgJAy1NoiJDS0wNIdaOpSbmapMe8xs8ggAAADgKIqrOGEkjRplkTvLHvfrxgAAAIBERHEVNyzKcaSy1goAAACIURRXcSIz1UrXCgAAAIhhFFdxwGZNUk6mTaPZxAIAAACIWeyMEAccqcly8IXBAAAAQEyjcwUAAAAAYUBxBQAAAABhQHEFAAAAAGFAcQUAAAAAYUBxBQAAAABhQHEFAAAAAGFAcQUAAAAAYUBxBQAAAABhQHEFAAAAAGFAcQUAAAAAYUBxBQAAAABhQHEFAAAAAGFAcQUAAAAAYUBxBQAAAABhQHEFAAAAAGFAcQUAAAAAYUBxBQAAAABhQHEFAAAAAGFgjfYEYpUxRpLk8/miPBMAAAAA0dRTE/TUCAOhuBpAc3OzJKmwsDDKMwEAAAAQC5qbm+V0Ogd83WKOV36doAKBgPbu3SuHwyGLxRLVufh8PhUWFmr37t3KzMyM6lwSEfGNLOIbWcQ3sohvZBHfyCK+kUV8IyvW4muMUXNzs9xut5KSBl5ZRedqAElJSSooKIj2NHrJzMyMieRKVMQ3sohvZBHfyCK+kUV8I4v4RhbxjaxYiu9gHasebGgBAAAAAGFAcQUAAAAAYUBxFQdsNpsWL14sm80W7akkJOIbWcQ3sohvZBHfyCK+kUV8I4v4Rla8xpcNLQAAAAAgDOhcAQAAAEAYUFwBAAAAQBhQXAEAAABAGFBcAQAAAEAYUFyFydKlSzVp0iQ5HA65XC7Nnj1bW7du7XWOMUb33nuv3G637Ha7pk+frs8++yz4+sGDB7VgwQKdccYZSktLU1FRke644w55vd5e4xw6dEhz5syR0+mU0+nUnDlz1NTUNOj8jnftWBfr8S0pKZHFYun1mDx5ctjufySMZIx/97vf6YILLlBaWpqysrKGND9yOLLxjfccHqn41tXVad68eRo/frzsdrsmTJigxYsXq6OjY9D5kb+RjS/5O/SfDz/84Q9VVFSk1NRU5eXlac6cOdq7d++g8yN/Ixtf8nfo8e3R3t6uc845RxaLRZ9++umg8xvx/DUIi5kzZ5ry8nKzefNm8+mnn5orrrjCFBUVmcOHDwfPefDBB43D4TCrVq0yNTU15rrrrjN5eXnG5/MZY4ypqakx11xzjVmzZo3Zvn27effdd81pp51mrr322l7XmjVrlvF4PGbt2rVm7dq1xuPxmCuvvHLQ+R3v2rEu1uM7d+5cM2vWLPPVV18FH42NjeEPRASNZIzvueces2zZMlNWVmacTueQ5kcORza+8Z7DIxXfN954w5SUlJi33nrL1NbWmtdee824XC6zcOHCQedH/kY2vuTv0H8+LFu2zFRVVZm6ujrz0UcfmSlTppgpU6YMOj/yN7LxJX+HHt8ed9xxh7nsssuMJFNdXT3o/EY6fymuIqShocFIMu+//74xxphAIGByc3PNgw8+GDynra3NOJ1O8+STTw44zksvvWRSUlJMZ2enMcaYLVu2GElm3bp1wXOqqqqMJPOf//yn3zFCvXYsi6X4GtP9g/Hqq68e5l3FlkjF+Fjl5eVD+uWfHI5sfI1JvBweifj2+P3vf2/Gjx8/4Ovkb2Tjawz5O5ChxPe1114zFovFdHR09Ps6+RvZ+BpD/g5koPi+/vrr5swzzzSfffbZcYuraOQvHwuMkJ42ZnZ2tiRpx44dqq+v14wZM4Ln2Gw2TZs2TWvXrh10nMzMTFmtVklSVVWVnE6nzj///OA5kydPltPpHHCcUK8dy2Ipvj3ee+89uVwunX766br11lvV0NAQ8v3FgkjFOBTkcGTj2yORcngk4+v1eoPX6Q/5G9n49iB/+x9nsPgePHhQK1as0AUXXKDk5OR+zyF/IxvfHuRv/+N8Pb779u3Trbfeqr/+9a9KS0s77lyikb8UVxFgjFFZWZmmTp0qj8cjSaqvr5ck5eTk9Do3Jycn+NrXNTY26v7779fPfvaz4LH6+nq5XK4+57pcrgHHCeXasSzW4itJl112mVasWKGKigo98sgj2rBhgy6++GK1t7d/4/uLBZGMcSjI4cjGV0qsHB7J+NbW1mr58uW6/fbbBzyH/I1sfCXytz+Dxfeuu+5Senq6xowZo127dum1114bcD7kb2TjK5G//ekvvsYYlZSU6Pbbb1dxcfGQ5hON/B3+f3Wij/nz52vTpk368MMP+7xmsVh6PTfG9DkmST6fT1dccYW+9a1vafHixYOOMdg4oVw71sVifK+77rrgnz0ej4qLi3XyySfrH//4h6655prj3lOsiXSMQ0UO/1e445tIOTxS8d27d69mzZqlH//4x/rpT3963HmRv/8V7viSv70dL76//vWvNW/ePO3cuVP33Xefbr75Zv39738fNB/J3/8Kd3zJ394Giu/y5cvl8/m0aNGibzyvkcxfOldhtmDBAq1Zs0aVlZUqKCgIHs/NzZWkPlVyQ0NDn2q6ublZs2bNUkZGhlavXt2rlZybm6t9+/b1ue7+/fv7jBPKtWNdLMa3P3l5eTr55JP1+eefD/k9sSLSMQ4FORzZ+PYnXnN4pOK7d+9eXXTRRZoyZYqefvrpQedE/kY2vv0hfweP79ixY3X66afr0ksv1cqVK/X6669r3bp1/c6J/I1sfPtD/vYf34qKCq1bt042m01Wq1WnnnqqJKm4uFhz587td05Ryd+IrOQ6AQUCAVNaWmrcbrfZtm1bv6/n5uaahx56KHisvb29z4I6r9drJk+ebKZNm2aOHDnSZ5yeDRfWr18fPLZu3bohbWhxvGvHsliOb38OHDhgbDab+fOf/zzk90TbSMX4WN90QwtyODLx7U+85fBIxnfPnj3mtNNOM9dff73x+/1Dmhv52y0S8e0P+Xv8nw89du3aZSSZysrKAedG/naLRHz7Q/72H9+dO3eampqa4OOtt94ykswrr7xidu/ePeDcRjp/Ka7C5Oc//7lxOp3mvffe67WVZktLS/CcBx980DidTvPqq6+ampoac8MNN/TaCtLn85nzzz/fTJw40Wzfvr3XOMf+AzNr1ixz9tlnm6qqKlNVVWUmTpzYZ6vwM844w7z66qtDvnasi+X4Njc3m4ULF5q1a9eaHTt2mMrKSjNlyhSTn58fN/E1ZmRjvHPnTlNdXW3uu+8+k5GRYaqrq011dbVpbm4OnkMOj1x8EyGHRyq+X375pTn11FPNxRdfbPbs2dPrnGORvyMXX/J36PFdv369Wb58uamurjZ1dXWmoqLCTJ061UyYMMG0tbUFr0X+jlx8yd9v9u/bsXbs2NHvboHRzl+KqzCR1O+jvLw8eE4gEDCLFy82ubm5xmazmQsvvNDU1NQEX6+srBxwnB07dgTPa2xsNDfddJNxOBzG4XCYm266yRw6dKjPfL7JtWNdLMe3paXFzJgxw5x00kkmOTnZFBUVmblz55pdu3ZFMCLhN5Ixnjt3br/nHPs/e+TwyMU3EXJ4pOJbXl4+4Dlfnw/5OzLxJX+7DSW+mzZtMhdddJHJzs42NpvNjBs3ztx+++1mz549feZD/o5MfMnfbkP99+1YAxVX0c5fy9FJAAAAAACGgQ0tAAAAACAMKK4AAAAAIAworgAAAAAgDCiuAAAAACAMKK4AAAAAIAworgAAAAAgDCiuAAAAACAMKK4AAAAAIAworgAAAAAgDCiuAAAJzxijH/zgB5o5c2af1x5//HE5nU7t2rUrCjMDACQSiisAQMKzWCwqLy/X+vXr9dRTTwWP79ixQ3fddZceffRRFRUVhfWanZ2dYR0PABD7KK4AACeEwsJCPfroo/rVr36lHTt2yBijefPm6ZJLLtH3vvc9XX755crIyFBOTo7mzJmjAwcOBN/75ptvaurUqcrKytKYMWN05ZVXqra2Nvh6XV2dLBaLXnrpJU2fPl2pqal67rnnonGbAIAoshhjTLQnAQDASJk9e7aampp07bXX6v7779eGDRtUXFysW2+9VTfffLNaW1t11113ye/3q6KiQpK0atUqWSwWTZw4UUeOHNE999yjuro6ffrpp0pKSlJdXZ3Gjx+vcePG6ZFHHtG5554rm80mt9sd5bsFAIwkiisAwAmloaFBHo9HjY2NeuWVV1RdXa3169frrbfeCp6zZ88eFRYWauvWrTr99NP7jLF//365XC7V1NTI4/EEi6s//vGPuvPOO0fydgAAMYSPBQIATigul0u33XabzjrrLP3oRz/Sxo0bVVlZqYyMjODjzDPPlKTgR/9qa2t144036pRTTlFmZqbGjx8vSX02wSguLh7ZmwEAxBRrtCcAAMBIs1qtslq7/wkMBAK66qqr9NBDD/U5Ly8vT5J01VVXqbCwUM8884zcbrcCgYA8Ho86Ojp6nZ+enh75yQMAYhbFFQDghHbeeedp1apVGjduXLDgOlZjY6P+/e9/66mnntL3v/99SdKHH3440tMEAMQBPhYIADihlZaW6uDBg7rhhhv08ccf64svvtDbb7+tW265RV1dXRo9erTGjBmjp59+Wtu3b1dFRYXKysqiPW0AQAyiuAIAnNDcbrc++ugjdXV1aebMmfJ4PLrzzjvldDqVlJSkpKQkrVy5Uhs3bpTH49Evf/lLPfzww9GeNgAgBrFbIAAAAACEAZ0rAAAAAAgDiisAAAAACAOKKwAAAAAIA4orAAAAAAgDiisAAAAACAOKKwAAAAAIA4orAAAAAAgDiisAAAAACAOKKwAAAAAIA4orAAAAAAgDiisAAAAACIP/A1Y9jwlZ/enuAAAAAElFTkSuQmCC",
|
||
"text/plain": [
|
||
"<Figure size 1000x600 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"# Graph of Fastest Lap Times by Year\n",
|
||
"# Who had the fastest lap time in each year?\n",
|
||
"fastest_lap = lap_data_combined[lap_data_combined['Position'] == 1]\n",
|
||
"# Remove 0 times\n",
|
||
"fastest_lap = fastest_lap[fastest_lap['Time'] != pd.Timedelta(0)]\n",
|
||
"\n",
|
||
"plt.figure(figsize=(10, 6))\n",
|
||
"sns.lineplot(x='Year', y='Time', data=fastest_lap)\n",
|
||
"plt.title('Fastest Lap Times by Year')\n",
|
||
"plt.show()\n",
|
||
"\n"
|
||
]
|
||
}
|
||
],
|
||
"metadata": {
|
||
"kernelspec": {
|
||
"display_name": "csci349",
|
||
"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.10.13"
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 2
|
||
}
|