{ "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", "metadata": { "ExecuteTime": { "end_time": "2024-11-20T02:14:34.811557Z", "start_time": "2024-11-20T02:14:34.804489Z" } }, "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" ], "outputs": [], "execution_count": 9 }, { "cell_type": "code", "metadata": { "ExecuteTime": { "end_time": "2024-11-20T02:14:38.532179Z", "start_time": "2024-11-20T02:14:36.799495Z" } }, "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", "\n", "session.load()\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()" ], "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "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": { "text/plain": [ "
" ], "image/png": "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OXPmMJ1Oxw4cONDhOk6dOsVMJhObNWsWO3ToEJs/fz7TaDRs9erVAb+P9fX17MEHH2Tvv/8+Gz9+PLvppptEWa8nj12g7uNLL73E5syZw3777Td24sQJ9vbbbzO1Ws2+//574TJK/zmePHmSLV68mO3du5edPn2afffddywpKYnNnj07aO4jz2azseHDh7MJEyaw6OjoVl9T+n0sKChgANi6detYcXGx8M9ms8nyPq5atYr9/e9/Z19//TUDwL755ptOL+9wONjAgQPZ2LFj2Z49e9iqVatYQkJCq99TuT3feHsfGWPskUceYf/617/Y1KlT2ZAhQ0RZryePna+8vY8ffvghe/TRR9mGDRvYyZMn2SeffMKMRiObP3++cBkpf44U/FzgsssuYzNmzBA+djqdLC0tjc2bN6/dyy9cuJDFxsYyq9UqfO7pp59mffv2FT6+9dZb2aRJk1p938iRI9kDDzzQ4TqeeuopNmDAgFafu+2229j48eO9uj/t8fY+tjRt2rR2gx9f1uvJY+errtxH3sSJE9k999wjfBxMP0feE088wUaNGiV8HCz38amnnmJ33XUXW7JkSZvgR+n3kQ9+9uzZ0+F1yu0+8jx50Vy1ahVTq9WspKRE+NyiRYtYVFSU8Fwht+ebljwNfnjPPfdcu8GPL+v15LETg7f3kffwww+zMWPGCB9L+XOkba8WbDYbdu3ahbFjxwqfU6vVGDt2LLZs2QIAmD59OkaPHi18fcuWLbj66quh1+uFz40fPx5Hjx5FdXW1cJmW18lfhr/O9vjyPZ7w5T56wtf7eLHHzhdi3cfa2lrExcW1Wm8w/RxPnDiB1atX45prrunSeuV2H9evX4/ly5djwYIFoq1XbvcRAG688UYkJSVh1KhR+N///tfl9frrPl7M888/jx49erRax6BBg5CcnNxqHWazGfn5+T6v1V/PN5648D56wpf1evLY+Ysn91Gs51Qxfo4U/LRQUVEBp9PZ6hcHAJKTk1FSUgIASE1NRffu3YWvlZSUtHt5/mudXYb/ens6+h6z2YympiYv71kzX+6jJ3xZryePnS/EuI9fffUVduzYgXvuueei61Xaz/GKK65AWFgYevfujauuugpz58696HqVch8rKysxffp0LF26tMNhiUq/jxEREXjjjTewfPly/PDDDxg1ahRuvvnmVgGQnO7jxSQk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" }, "metadata": {}, "output_type": "display_data" } ], "execution_count": 10 }, { "metadata": { "ExecuteTime": { "end_time": "2024-11-20T03:31:25.964278Z", "start_time": "2024-11-20T03:29:39.724591Z" } }, "cell_type": "code", "source": [ "# Define the cache directory\n", "cache_dir = '/Users/connorcoles/PycharmProjects/F1-Prediction/csci349_final_project/project/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())" ], "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", "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 \tUpdating cache for position_data...\n", "_api INFO \tFetching position data...\n", "_api INFO \tParsing position data...\n", "_api WARNING \tDriver 241: Position data is incomplete!\n", "_api WARNING \tDriver 242: Position data is incomplete!\n", "_api WARNING \tDriver 243: Position data is incomplete!\n", "req INFO \tCache updated!\n", "req INFO \tNo cached data found for weather_data. Loading data...\n", "_api INFO \tFetching weather data...\n", "req INFO \tData has been written to cache!\n", "req INFO \tNo cached data found for race_control_messages. Loading data...\n", "_api INFO \tFetching race control messages...\n", "req INFO \tData has been written to cache!\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 \tNo cached data found for session_info. Loading data...\n", "_api INFO \tFetching session info data...\n", "req INFO \tData has been written to cache!\n", "req INFO \tNo cached data found for driver_info. Loading data...\n", "_api INFO \tFetching driver list...\n", "req INFO \tData has been written to cache!\n", "req INFO \tNo cached data found for session_status_data. Loading data...\n", "_api INFO \tFetching session status data...\n", "req INFO \tData has been written to cache!\n", "req INFO \tNo cached data found for lap_count. Loading data...\n", "_api INFO \tFetching lap count data...\n", "req INFO \tData has been written to cache!\n", "req INFO \tNo cached data found for track_status_data. Loading data...\n", "_api INFO \tFetching track status data...\n", "req INFO \tData has been written to cache!\n", "req INFO \tNo cached data found for _extended_timing_data. Loading data...\n", "_api INFO \tFetching timing data...\n", "_api INFO \tParsing timing data...\n", "req INFO \tData has been written to cache!\n", "req INFO \tNo cached data found for timing_app_data. Loading data...\n", "_api INFO \tFetching timing app data...\n", "req INFO \tData has been written to cache!\n", "core INFO \tProcessing timing data...\n", "req INFO \tNo cached data found for car_data. Loading data...\n", "_api INFO \tFetching car data...\n", "_api INFO \tParsing car data...\n", "req INFO \tData has been written to cache!\n", "req INFO \tNo cached data found for position_data. Loading data...\n", "_api INFO \tFetching position data...\n", "_api INFO \tParsing position data...\n", "req INFO \tData has been written to cache!\n", "req INFO \tNo cached data found for weather_data. Loading data...\n", "_api INFO \tFetching weather data...\n", "req INFO \tData has been written to cache!\n", "req INFO \tNo cached data found for race_control_messages. Loading data...\n", "_api INFO \tFetching race control messages...\n", "req INFO \tData has been written to cache!\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 \tNo cached data found for session_info. Loading data...\n", "_api INFO \tFetching session info data...\n", "req INFO \tData has been written to cache!\n", "req INFO \tNo cached data found for driver_info. Loading data...\n", "_api INFO \tFetching driver list...\n", "req INFO \tData has been written to cache!\n", "req INFO \tNo cached data found for session_status_data. Loading data...\n", "_api INFO \tFetching session status data...\n", "req INFO \tData has been written to cache!\n", "req INFO \tNo cached data found for lap_count. Loading data...\n", "_api INFO \tFetching lap count data...\n", "req INFO \tData has been written to cache!\n", "req INFO \tNo cached data found for track_status_data. Loading data...\n", "_api INFO \tFetching track status data...\n", "req INFO \tData has been written to cache!\n", "req INFO \tNo cached data found for _extended_timing_data. Loading data...\n", "_api INFO \tFetching timing data...\n", "_api INFO \tParsing timing data...\n", "req INFO \tData has been written to cache!\n", "req INFO \tNo cached data found for timing_app_data. Loading data...\n", "_api INFO \tFetching timing app data...\n", "req INFO \tData has been written to cache!\n", "core INFO \tProcessing timing data...\n", "req INFO \tNo cached data found for car_data. Loading data...\n", "_api INFO \tFetching car data...\n", "_api INFO \tParsing car data...\n", "req INFO \tData has been written to cache!\n", "req INFO \tNo cached data found for position_data. Loading data...\n", "_api INFO \tFetching position data...\n", "_api INFO \tParsing position data...\n", "_api WARNING \tDriver 241: Position data is incomplete!\n", "_api WARNING \tDriver 242: Position data is incomplete!\n", "req INFO \tData has been written to cache!\n", "req INFO \tNo cached data found for weather_data. Loading data...\n", "_api INFO \tFetching weather data...\n", "req INFO \tData has been written to cache!\n", "req INFO \tNo cached data found for race_control_messages. Loading data...\n", "_api INFO \tFetching race control messages...\n", "req INFO \tData has been written to cache!\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 \tNo cached data found for session_info. Loading data...\n", "_api INFO \tFetching session info data...\n", "req INFO \tData has been written to cache!\n", "req INFO \tNo cached data found for driver_info. Loading data...\n", "_api INFO \tFetching driver list...\n", "req INFO \tData has been written to cache!\n", "req INFO \tNo cached data found for session_status_data. Loading data...\n", "_api INFO \tFetching session status data...\n", "req INFO \tData has been written to cache!\n", "req INFO \tNo cached data found for lap_count. Loading data...\n", "_api INFO \tFetching lap count data...\n", "req INFO \tData has been written to cache!\n", "req INFO \tNo cached data found for track_status_data. Loading data...\n", "_api INFO \tFetching track status data...\n", "req INFO \tData has been written to cache!\n", "req INFO \tNo cached data found for _extended_timing_data. Loading data...\n", "_api INFO \tFetching timing data...\n", "_api INFO \tParsing timing data...\n", "req INFO \tData has been written to cache!\n", "req INFO \tNo cached data found for timing_app_data. Loading data...\n", "_api INFO \tFetching timing app data...\n", "req INFO \tData has been written to cache!\n", "core INFO \tProcessing timing data...\n", "req INFO \tNo cached data found for car_data. Loading data...\n", "_api INFO \tFetching car data...\n", "_api INFO \tParsing car data...\n", "req INFO \tData has been written to cache!\n", "req INFO \tNo cached data found for position_data. Loading data...\n", "_api INFO \tFetching position data...\n", "_api INFO \tParsing position data...\n", "req INFO \tData has been written to cache!\n", "req INFO \tNo cached data found for weather_data. Loading data...\n", "_api INFO \tFetching weather data...\n", "req INFO \tData has been written to cache!\n", "req INFO \tNo cached data found for race_control_messages. Loading data...\n", "_api INFO \tFetching race control messages...\n", "req INFO \tData has been written to cache!\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 \tNo cached data found for session_info. Loading data...\n", "_api INFO \tFetching session info data...\n", "req INFO \tData has been written to cache!\n", "req INFO \tNo cached data found for driver_info. Loading data...\n", "_api INFO \tFetching driver list...\n", "req INFO \tData has been written to cache!\n", "req INFO \tNo cached data found for session_status_data. Loading data...\n", "_api INFO \tFetching session status data...\n", "req INFO \tData has been written to cache!\n", "req INFO \tNo cached data found for lap_count. Loading data...\n", "_api INFO \tFetching lap count data...\n", "req INFO \tData has been written to cache!\n", "req INFO \tNo cached data found for track_status_data. Loading data...\n", "_api INFO \tFetching track status data...\n", "req INFO \tData has been written to cache!\n", "req INFO \tNo cached data found for _extended_timing_data. Loading data...\n", "_api INFO \tFetching timing data...\n", "_api INFO \tParsing timing data...\n", "req INFO \tData has been written to cache!\n", "req INFO \tNo cached data found for timing_app_data. Loading data...\n", "_api INFO \tFetching timing app data...\n", "req INFO \tData has been written to cache!\n", "core INFO \tProcessing timing data...\n", "logger WARNING \tFailed to add first lap time from Ergast!\n", "req INFO \tNo cached data found for car_data. Loading data...\n", "_api INFO \tFetching car data...\n", "_api INFO \tParsing car data...\n", "req INFO \tData has been written to cache!\n", "req INFO \tNo cached data found for position_data. Loading data...\n", "_api INFO \tFetching position data...\n", "_api INFO \tParsing position data...\n", "req INFO \tData has been written to cache!\n", "req INFO \tNo cached data found for weather_data. Loading data...\n", "_api INFO \tFetching weather data...\n", "req INFO \tData has been written to cache!\n", "req INFO \tNo cached data found for race_control_messages. Loading data...\n", "_api INFO \tFetching race control messages...\n", "req INFO \tData has been written to cache!\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" ] } ], "execution_count": 30 }, { "metadata": { "ExecuteTime": { "end_time": "2024-11-20T03:39:01.456623Z", "start_time": "2024-11-20T03:39:01.428009Z" } }, "cell_type": "code", "source": [ "# Display data\n", "weather_data_combined.head(5)" ], "outputs": [ { "data": { "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 " ], "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
TimeAirTempHumidityPressureRainfallTrackTempWindDirectionWindSpeedYearSession
00 days 00:00:33.15700026.952.61015.9False28.73050.62020Q
10 days 00:01:33.16800026.952.71016.0False28.6400.82020Q
20 days 00:02:33.17200026.852.81015.9False28.53410.82020Q
30 days 00:03:33.16800026.853.01015.9False28.52950.42020Q
40 days 00:04:33.15500026.753.21016.0False28.53470.52020Q
\n", "
" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "execution_count": 47 }, { "metadata": { "ExecuteTime": { "end_time": "2024-11-20T04:00:16.003135Z", "start_time": "2024-11-20T04:00:15.970644Z" } }, "cell_type": "code", "source": "lap_data_combined.head(5)", "outputs": [ { "data": { "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]" ], "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
TimeDriverDriverNumberLapTimeLapNumberStintPitOutTimePitInTimeSector1TimeSector2Time...LapStartTimeLapStartDateTrackStatusPositionDeletedDeletedReasonFastF1GeneratedIsAccurateYearSession
00 days 00:23:28.426000HAM44NaT1.01.00 days 00:21:22.161000NaTNaT0 days 00:00:57.104000...0 days 00:21:22.1610002020-11-28 14:06:22.1931NaNFalseFalseFalse2020Q
10 days 00:24:56.769000HAM440 days 00:01:28.3430002.01.0NaTNaT0 days 00:00:28.0830000 days 00:00:38.020000...0 days 00:23:28.4260002020-11-28 14:08:28.4581NaNFalseFalseTrue2020Q
20 days 00:26:46.183000HAM440 days 00:01:49.4140003.01.0NaT0 days 00:26:44.4010000 days 00:00:34.0810000 days 00:00:45.383000...0 days 00:24:56.7690002020-11-28 14:09:56.8011NaNFalseFalseFalse2020Q
30 days 00:32:41.745000HAM44NaT4.02.00 days 00:30:17.211000NaTNaT0 days 00:01:06.133000...0 days 00:26:46.1830002020-11-28 14:11:46.2151NaNFalseFalseFalse2020Q
40 days 00:34:21.973000HAM440 days 00:01:40.2280005.02.0NaT0 days 00:34:20.2280000 days 00:00:28.2390000 days 00:00:45.630000...0 days 00:32:41.7450002020-11-28 14:17:41.7771NaNFalseFalseFalse2020Q
\n", "

5 rows × 33 columns

\n", "
" ] }, "execution_count": 67, "metadata": {}, "output_type": "execute_result" } ], "execution_count": 67 }, { "metadata": { "ExecuteTime": { "end_time": "2024-11-20T03:42:50.147348Z", "start_time": "2024-11-20T03:42:50.070096Z" } }, "cell_type": "code", "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())" ], "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\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", "\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 6038 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 4793\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 590\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" ] } ], "execution_count": 54 }, { "metadata": { "ExecuteTime": { "end_time": "2024-11-20T03:38:18.767017Z", "start_time": "2024-11-20T03:38:18.692890Z" } }, "cell_type": "code", "source": [ "#Describe the data\n", "weather_data_combined.describe()" ], "outputs": [ { "data": { "text/plain": [ " Time LapTime LapNumber \\\n", "count 6628 6038 6628.000000 \n", "mean 0 days 01:42:02.192371303 0 days 00:01:41.108333885 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.217000 9.000000 \n", "50% 0 days 01:39:58.302000 0 days 00:01:37.859500 22.000000 \n", "75% 0 days 02:13:43.248500 0 days 00:01:40.345500 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.588901657 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]" ], "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
TimeLapTimeLapNumberStintPitOutTimePitInTimeSector1TimeSector2TimeSector3TimeSector1SessionTime...Sector3SessionTimeSpeedI1SpeedI2SpeedFLSpeedSTTyreLifeLapStartTimeLapStartDatePositionYear
count662860386628.0000006628.0000006896946056659965666048...65665394.0000006601.0000005926.0000005944.0000006628.000000662866225349.0000006628.000000
mean0 days 01:42:02.1923713030 days 00:01:41.10833388524.3667772.5458660 days 01:07:15.4796037730 days 01:08:51.7783429390 days 00:00:32.8017278730 days 00:00:44.3828510380 days 00:00:25.8638967400 days 01:45:48.699285218...0 days 01:42:19.752332013221.138673240.172095277.101249276.0238908.9222990 days 01:40:00.8885146342022-05-19 11:52:27.3287777289.9801832022.045112
min0 days 00:15:27.7650000 days 00:01:27.2640001.0000001.0000000 days 00:13:35.5530000 days 00:18:28.4150000 days 00:00:27.6690000 days 00:00:37.7150000 days 00:00:21.8530000 days 00:15:57.525000...0 days 00:15:28.00500054.00000044.00000042.00000031.0000001.0000000 days 00:13:35.5530002020-11-28 14:00:03.4210001.0000002020.000000
25%0 days 01:09:17.5055000 days 00:01:36.2170009.0000002.0000000 days 00:29:59.1070000 days 00:35:37.6622500 days 00:00:30.7327500 days 00:00:41.6765000 days 00:00:23.7360000 days 01:14:22.595250...0 days 01:09:21.996000225.000000241.000000277.000000280.0000003.0000000 days 01:06:55.9955002021-03-28 15:21:05.4147499525.0000002021.000000
50%0 days 01:39:58.3020000 days 00:01:37.85950022.0000002.0000000 days 00:59:30.3800000 days 00:58:21.2415000 days 00:00:31.1480000 days 00:00:42.5820000 days 00:00:24.1260000 days 01:44:32.815000...0 days 01:40:39.423500231.000000250.000000281.000000295.0000008.0000000 days 01:38:20.1610002022-03-20 15:46:26.37799987210.0000002022.000000
75%0 days 02:13:43.2485000 days 00:01:40.34550039.0000003.0000000 days 01:28:09.3430000 days 01:25:50.7960000 days 00:00:31.7920000 days 00:00:43.7795000 days 00:00:24.9017500 days 02:15:42.518250...0 days 02:14:05.441000235.000000257.000000284.000000303.00000013.0000000 days 02:12:04.5752502023-03-05 16:12:27.61200015.0000002023.000000
max0 days 03:33:47.4280000 days 00:03:05.09200057.0000007.0000000 days 03:28:04.3890000 days 03:27:38.6380000 days 00:01:39.1600000 days 00:01:27.3400000 days 00:01:10.4780000 days 03:32:33.946000...0 days 03:33:47.428000248.000000274.000000302.000000333.00000037.0000000 days 03:32:00.1210002024-03-02 16:35:23.28000020.0000002024.000000
std0 days 00:44:32.8912776240 days 00:00:10.58890165716.8600941.1550310 days 00:41:40.5849278460 days 00:39:18.2270300520 days 00:00:05.8435876090 days 00:00:06.0251954530 days 00:00:04.8621554150 days 00:42:50.934311129...0 days 00:44:32.42562987228.86124232.65715522.13379852.8784716.4752310 days 00:44:57.137961013NaN5.5117661.411731
\n", "

8 rows × 21 columns

\n", "
" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "execution_count": 43 }, { "metadata": { "ExecuteTime": { "end_time": "2024-11-20T03:39:18.917017Z", "start_time": "2024-11-20T03:39:18.855681Z" } }, "cell_type": "code", "source": "lap_data_combined.describe()", "outputs": [ { "data": { "text/plain": [ " Time LapTime LapNumber \\\n", "count 6628 6038 6628.000000 \n", "mean 0 days 01:42:02.192371303 0 days 00:01:41.108333885 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.217000 9.000000 \n", "50% 0 days 01:39:58.302000 0 days 00:01:37.859500 22.000000 \n", "75% 0 days 02:13:43.248500 0 days 00:01:40.345500 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.588901657 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]" ], "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
TimeLapTimeLapNumberStintPitOutTimePitInTimeSector1TimeSector2TimeSector3TimeSector1SessionTime...Sector3SessionTimeSpeedI1SpeedI2SpeedFLSpeedSTTyreLifeLapStartTimeLapStartDatePositionYear
count662860386628.0000006628.0000006896946056659965666048...65665394.0000006601.0000005926.0000005944.0000006628.000000662866225349.0000006628.000000
mean0 days 01:42:02.1923713030 days 00:01:41.10833388524.3667772.5458660 days 01:07:15.4796037730 days 01:08:51.7783429390 days 00:00:32.8017278730 days 00:00:44.3828510380 days 00:00:25.8638967400 days 01:45:48.699285218...0 days 01:42:19.752332013221.138673240.172095277.101249276.0238908.9222990 days 01:40:00.8885146342022-05-19 11:52:27.3287777289.9801832022.045112
min0 days 00:15:27.7650000 days 00:01:27.2640001.0000001.0000000 days 00:13:35.5530000 days 00:18:28.4150000 days 00:00:27.6690000 days 00:00:37.7150000 days 00:00:21.8530000 days 00:15:57.525000...0 days 00:15:28.00500054.00000044.00000042.00000031.0000001.0000000 days 00:13:35.5530002020-11-28 14:00:03.4210001.0000002020.000000
25%0 days 01:09:17.5055000 days 00:01:36.2170009.0000002.0000000 days 00:29:59.1070000 days 00:35:37.6622500 days 00:00:30.7327500 days 00:00:41.6765000 days 00:00:23.7360000 days 01:14:22.595250...0 days 01:09:21.996000225.000000241.000000277.000000280.0000003.0000000 days 01:06:55.9955002021-03-28 15:21:05.4147499525.0000002021.000000
50%0 days 01:39:58.3020000 days 00:01:37.85950022.0000002.0000000 days 00:59:30.3800000 days 00:58:21.2415000 days 00:00:31.1480000 days 00:00:42.5820000 days 00:00:24.1260000 days 01:44:32.815000...0 days 01:40:39.423500231.000000250.000000281.000000295.0000008.0000000 days 01:38:20.1610002022-03-20 15:46:26.37799987210.0000002022.000000
75%0 days 02:13:43.2485000 days 00:01:40.34550039.0000003.0000000 days 01:28:09.3430000 days 01:25:50.7960000 days 00:00:31.7920000 days 00:00:43.7795000 days 00:00:24.9017500 days 02:15:42.518250...0 days 02:14:05.441000235.000000257.000000284.000000303.00000013.0000000 days 02:12:04.5752502023-03-05 16:12:27.61200015.0000002023.000000
max0 days 03:33:47.4280000 days 00:03:05.09200057.0000007.0000000 days 03:28:04.3890000 days 03:27:38.6380000 days 00:01:39.1600000 days 00:01:27.3400000 days 00:01:10.4780000 days 03:32:33.946000...0 days 03:33:47.428000248.000000274.000000302.000000333.00000037.0000000 days 03:32:00.1210002024-03-02 16:35:23.28000020.0000002024.000000
std0 days 00:44:32.8912776240 days 00:00:10.58890165716.8600941.1550310 days 00:41:40.5849278460 days 00:39:18.2270300520 days 00:00:05.8435876090 days 00:00:06.0251954530 days 00:00:04.8621554150 days 00:42:50.934311129...0 days 00:44:32.42562987228.86124232.65715522.13379852.8784716.4752310 days 00:44:57.137961013NaN5.5117661.411731
\n", "

8 rows × 21 columns

\n", "
" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], "execution_count": 49 }, { "metadata": { "ExecuteTime": { "end_time": "2024-11-20T03:40:23.364581Z", "start_time": "2024-11-20T03:40:23.214723Z" } }, "cell_type": "code", "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" ], "outputs": [ { "data": { "text/plain": [ "
" ], "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0kAAAIjCAYAAADWYVDIAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABI9klEQVR4nO3de3QU9eH+8SchyW7IZWOABCjZcDMoBFCprQEkyCWIFKGlUlFuVgqUAAJVNIINiGm09UYrF1MtqMhRw6WgVZAWCKJgAbECKmiAxP6AINJsuCVAdn5/eLLfWRMkidmdsHm/ztkTd2Yy80x2IvtkZj4bZBiGIQAAAACAJCnY6gAAAAAAUJ9QkgAAAADAhJIEAAAAACaUJAAAAAAwoSQBAAAAgAklCQAAAABMKEkAAAAAYEJJAgAAAAATShIAAAAAmFCSAABXrNatW2vs2LE+387hw4cVFBSkpUuXeqaNHTtWkZGRPt92haCgIM2ZM8dv26vg7/0EgPqAkgQgYAQFBVXrsXnzZqujWmbhwoVeb/Trk969e3teo+DgYEVHR6tDhw4aNWqUNmzYUGfbefvtty0pG9VRn7P5yrZt2xQcHKyMjIwq5z/xxBMKCgrSP/7xDz8nA9CQBRmGYVgdAgDqwrJly7yev/zyy9qwYYNeeeUVr+n9+/dXfHy8P6PVG8nJyWratGm9LIq9e/dWfn6+srOzJUlnzpzRl19+qVWrVungwYMaPny4li1bptDQUM/3lJWVKTg42Gva5UyePFkLFixQTf75MwxDZWVlCg0NVaNGjSR9e4ZlxYoVOn36dLXX80OylZaWKiQkRCEhIXW2verwxX5+129/+1u9+OKL2r17tzp16uSZXlBQoI4dO2rQoEF64403fLZ9APgu//6fFgB8aOTIkV7Pt2/frg0bNlSaHigMw1BpaanCw8MDJofD4aj0ej3++OOaOnWqFi5cqNatW+uJJ57wzLPZbD94m9/n4sWLcrvdCgsLk91u9+m2Lsfq7fvS448/rjVr1mjChAl67733FBQUJEmaMmWKQkNDNX/+fL/kOHv2rBo3buyXbQGo37jcDkCD4na79eyzz6pTp06y2+2Kj4/XhAkT9L///c9rudatW+tnP/uZNm/erB//+McKDw9X586dPWdgVq1apc6dO8tut6tbt27avXu31/dX3Mdx8OBBDRgwQBEREWrZsqUeffTRSmcJappp/fr1nkzPP/+8JGnJkiXq06eP4uLiZLPZ1LFjRy1atKjS9+/bt095eXmey9p69+4tSZozZ47njanZ0qVLFRQUpMOHD1crR3FxsaZNm6aEhATZbDa1b99eTzzxhNxud/VeoCo0atRIf/7zn9WxY0c999xzcrlcXlnM9yRduHBBc+fO1dVXXy273a4mTZqoZ8+ensv1xo4dqwULFkjyvjxT+r/7jp588kk9++yzateunWw2mz799NMq70mqcLnXePPmzVVe5vnddX5ftopp370Ub/fu3Ro4cKCio6MVGRmpvn37avv27V7LVLyG77//vmbMmKFmzZopIiJCP//5z/X1119f/gWoxn4ahqHWrVtryJAhlb6vtLRUDodDEyZMuOS6HQ6H5s+fr/fff18vvPCCJGn16tV688039fjjj6tFixbV/j1Zs2aNBg0apJYtW8pms6ldu3aaN2+eysvLvZbr3bu3kpOTtWvXLvXq1UuNGzfWww8/XO2fB4DAxpkkAA3KhAkTtHTpUt1zzz2aOnWqDh06pOeee067d+/W+++/73XZ1pdffqm77rpLEyZM0MiRI/Xkk09q8ODBWrx4sR5++GFNmjRJkpSdna3hw4dr//79Cg7+v789lZeX69Zbb9VNN92kP/7xj1q3bp0yMzN18eJFPfroo7XKtH//fo0YMUITJkzQb37zG3Xo0EGStGjRInXq1Em33367QkJC9Oabb2rSpElyu91KT0+XJD377LOaMmWKIiMjNWvWLEmq9WWHVeU4e/asUlNT9f/+3//ThAkT5HQ69cEHHygjI0NHjx7Vs88+W6ttSd8WpREjRuiRRx7R1q1bNWjQoCqXmzNnjrKzszVu3Dj95Cc/UUlJiXbu3KmPPvpI/fv314QJE3TkyJEqL8OssGTJEpWWlmr8+PGy2WyKjY29ZMmr7mtcHdXJZrZv3z7dfPPNio6O1syZMxUaGqrnn39evXv3Vl5enn760596LT9lyhRdddVVyszM1OHDh/Xss89q8uTJev311y+7rcvtZ1BQkEaOHKk//vGPOnnypGJjYz3f++abb6qkpOSyZ3TvuOMODRo0SA8++KD69u2r++67T927d/eUq+r+nixdulSRkZGaMWOGIiMjtXHjRv3+979XSUmJ/vSnP3lt85tvvtHAgQN15513auTIkQ32MlwAVTAAIEClp6cb5v/Nvffee4Yk49VXX/Vabt26dZWmJyYmGpKMDz74wDNt/fr1hiQjPDzcKCgo8Ex//vnnDUnGpk2bPNPGjBljSDKmTJnimeZ2u41BgwYZYWFhxtdff13rTOvWrau0r2fPnq00bcCAAUbbtm29pnXq1MlITU2ttGxmZqZR1T8JS5YsMSQZhw4dumyOefPmGREREcaBAwe8pj/00ENGo0aNjMLCwkrrN0tNTTU6dep0yfmrV682JBnz58/3yjJmzBjP865duxqDBg363u1897iocOjQIUOSER0dbRw/frzKeUuWLPFMq+5rvGnTpkrHx6XWealshmEYkozMzEzP86FDhxphYWFGfn6+Z9qRI0eMqKgoo1evXp5pFa9hv379DLfb7Zk+ffp0o1GjRkZxcXGV26vpfu7fv9+QZCxatMjr+2+//XajdevWXtu+lMOHDxsRERFGbGysERoaauzZs8cwjJr9nlT1uzBhwgSjcePGRmlpqWdaamqqIclYvHjxZXMBaHi43A5Ag5GbmyuHw6H+/fvrxIkTnke3bt0UGRmpTZs2eS3fsWNHpaSkeJ5X/GW+T58+cjqdlaYfPHiw0jYnT57s+e+goCBNnjxZ58+f1z//+c9aZWrTpo0GDBhQaTvm+4FcLpdOnDih1NRUHTx40OvytLpSVY7c3FzdfPPNuuqqq7z2pV+/fiovL9eWLVt+0DYrhqE+derUJZeJiYnRvn379MUXX9R6O8OGDVOzZs2qvfzlXmNfKC8v17vvvquhQ4eqbdu2nuktWrTQXXfdpa1bt6qkpMTre8aPH+91+d7NN9+s8vJyFRQUVGubl9vPpKQk/fSnP9Wrr77qWe7kyZN65513dPfdd1d5Oed3JSYmKjMzUydPntSMGTOUnJwsqWa/J+bfhVOnTunEiRO6+eabdfbsWX3++ede27PZbLrnnnuqtf8AGhYutwPQYHzxxRdyuVyKi4urcv7x48e9npuLkPTtfROSlJCQUOX0794bERwc7PUGVvr2jaQkzz0+Nc3Upk2bKpd7//33lZmZqW3btuns2bNe81wulydjXakqxxdffKFPPvnkkgXju/tSUxWjq0VFRV1ymUcffVRDhgxRUlKSkpOTdeutt2rUqFHq0qVLtbdzqZ9xVarzGvvC119/rbNnz3outzS79tpr5Xa79dVXX3mNFPfd4/mqq66SVPm4rUp193P06NGaPHmyCgoKlJiYqNzcXF24cEGjRo2q9r7deOONkqQf//jHnmk1+T3Zt2+fZs+erY0bN1Yqit/9g8GPfvQjhYWFVTsbgIaDkgSgwXC73YqLi/P6S7fZd9/cVwz1/F2Xmm7U4hMVapqpqhHk8vPz1bdvX11zzTV6+umnlZCQoLCwML399tt65plnqjVowqX+yv/dm92/L4fb7Vb//v01c+bMKr+n4k11be3du1eS1L59+0su06tXL+Xn52vNmjV699139cILL+iZZ57R4sWLNW7cuGptp65HC6zpz9ZX6vK4vZQ777xT06dP16uvvqqHH35Yy5Yt049//OMqy1xNVPf3pLi4WKmpqYqOjtajjz6qdu3ayW6366OPPtKDDz5Y6XfB6pEhAdRflCQADUa7du30z3/+Uz169PDLmyO3262DBw96lYMDBw5I+nZUtrrK9Oabb6qsrExr1671Olvw3Uv1pEu/Ya84q1BcXKyYmBjP9OpeiiV9uy+nT59Wv379qv091VVeXq7ly5ercePG6tmz5/cuGxsbq3vuuUf33HOPTp8+rV69emnOnDmeklSdy76qqzqvsflna1bVz7a62Zo1a6bGjRtr//79leZ9/vnnCg4OrnTG84eozn5K3/7sBw0apFdffVV333233n///R80YEeF6v6ebN68Wd98841WrVqlXr16eaYfOnToB2cA0LBwTxKABmP48OEqLy/XvHnzKs27ePFipTexdeG5557z/LdhGHruuecUGhqqvn371lmmijME5jMCLpdLS5YsqbRsRERElets166dJHndN3TmzBm99NJLl91+heHDh2vbtm1av359pXnFxcW6ePFitddlVl5erqlTp+qzzz7T1KlTFR0dfcllv/nmG6/nkZGRat++vcrKyjzTIiIiPJnqwuVe48TERDVq1KjSPVkLFy6stK7qZmvUqJHS0tK0Zs0ar8vdioqKtHz5cvXs2fN7f061cbn9rDBq1Ch9+umneuCBB9SoUSPdeeedP3jb1f09qep34fz581X+rAHg+3AmCUCDkZqaqgkTJig7O1sff/yx0tLSFBoaqi+++EK5ubmaP3++fvnLX9bZ9ux2u9atW6cxY8bopz/9qd555x394x//0MMPP+y5PKguMqWlpSksLEyDBw/WhAkTdPr0af31r39V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1uAvHGvwF441+AvHWs193xmkCgzcAAAAAAAmlCQAAAAAMKEkoRKbzabMzEzZbDaroyDAcazBXzjW4C8ca/AXjjXfCviBGwAAAACgJjiTBAAAAAAmlCQAAAAAMKEkAQAAAIAJJQkAAAAATChJASo7O1s33nijoqKiFBcXp6FDh2r//v1ey5SWlio9PV1NmjRRZGSkhg0bpqKiIs/8//znPxoxYoQSEhIUHh6ua6+9VvPnz6+0rc2bN+uGG26QzWZT+/bttXTpUl/vHuoRfx1rR48e1V133aWkpCQFBwdr2rRp/tg91CP+OtZWrVql/v37q1mzZoqOjlZKSorWr1/vl31E/eCvY23r1q3q0aOHmjRpovDwcF1zzTV65pln/LKPqB/8+X6twvvvv6+QkBBdd911vtqtgEBJClB5eXlKT0/X9u3btWHDBl24cEFpaWk6c+aMZ5np06frzTffVG5urvLy8nTkyBH94he/8MzftWuX4uLitGzZMu3bt0+zZs1SRkaGnnvuOc8yhw4d0qBBg3TLLbfo448/1rRp0zRu3DjeUDQg/jrWysrK1KxZM82ePVtdu3b16z6ifvDXsbZlyxb1799fb7/9tnbt2qVbbrlFgwcP1u7du/26v7COv461iIgITZ48WVu2bNFnn32m2bNna/bs2crJyfHr/sI6/jrWKhQXF2v06NHq27evX/bvimagQTh+/LghycjLyzMMwzCKi4uN0NBQIzc317PMZ599Zkgytm3bdsn1TJo0ybjllls8z2fOnGl06tTJa5lf/epXxoABA+p4D3Cl8NWxZpaammrcd999dZobVx5/HGsVOnbsaMydO7duguOK489j7ec//7kxcuTIugmOK46vj7Vf/epXxuzZs43MzEyja9eudZ4/kHAmqYFwuVySpNjYWEnf/tXhwoUL6tevn2eZa665Rk6nU9u2bfve9VSsQ5K2bdvmtQ5JGjBgwPeuA4HNV8ca8F3+OtbcbrdOnTrF8diA+etY2717tz744AOlpqbWUXJcaXx5rC1ZskQHDx5UZmamD5IHnhCrA8D33G63pk2bph49eig5OVmSdOzYMYWFhSkmJsZr2fj4eB07dqzK9XzwwQd6/fXX9Y9//MMz7dixY4qPj6+0jpKSEp07d07h4eF1uzOo13x5rAFm/jzWnnzySZ0+fVrDhw+vs/y4cvjjWGvVqpW+/vprXbx4UXPmzNG4cePqfD9Q//nyWPviiy/00EMP6b333lNICG//q4OfUgOQnp6uvXv3auvWrbVex969ezVkyBBlZmYqLS2tDtMhkHCswV/8dawtX75cc+fO1Zo1axQXF1frbeHK5Y9j7b333tPp06e1fft2PfTQQ2rfvr1GjBjxQ2LjCuSrY628vFx33XWX5s6dq6SkpLqKG/AoSQFu8uTJeuutt7Rlyxa1atXKM7158+Y6f/68iouLvf46UVRUpObNm3ut49NPP1Xfvn01fvx4zZ4922te8+bNvUZYqVhHdHQ0Z5EaGF8fa0AFfx1rr732msaNG6fc3NxKlxWjYfDXsdamTRtJUufOnVVUVKQ5c+ZQkhoYXx5rp06d0s6dO7V7925NnjxZ0rdnrQzDUEhIiN5991316dPHtzt4JbL6pij4htvtNtLT042WLVsaBw4cqDS/4kbAFStWeKZ9/vnnlW4E3Lt3rxEXF2c88MADVW5n5syZRnJyste0ESNGMHBDA+KvY82MgRsaJn8ea8uXLzfsdrvx97//vW53AlcEK/6/VmHu3LlGYmLiD8qPK4c/jrXy8nJjz549Xo/f/va3RocOHYw9e/YYp0+f9s3OXeEoSQHqt7/9reFwOIzNmzcbR48e9TzOnj3rWWbixImG0+k0Nm7caOzcudNISUkxUlJSPPP37NljNGvWzBg5cqTXOo4fP+5Z5uDBg0bjxo2NBx54wPjss8+MBQsWGI0aNTLWrVvn1/2Fdfx1rBmGYezevdvYvXu30a1bN+Ouu+4ydu/ebezbt89v+wpr+etYe/XVV42QkBBjwYIFXssUFxf7dX9hHX8da88995yxdu1a48CBA8aBAweMF154wYiKijJmzZrl1/2Fdfz5b6gZo9tdHiUpQEmq8rFkyRLPMufOnTMmTZpkXHXVVUbjxo2Nn//858bRo0c98zMzM6tcx3f/wrVp0ybjuuuuM8LCwoy2bdt6bQOBz5/HWnWWQeDy17GWmppa5TJjxozx387CUv461v785z8bnTp1Mho3bmxER0cb119/vbFw4UKjvLzcj3sLK/nz31AzStLlBRmGYfyQy/UAAAAAIJDwOUkAAAAAYEJJAgAAAAATShIAAAAAmFCSAAAAAMCEkgQAAAAAJpQkAAAAADChJAEAAACACSUJAAAAAEwoSQAAAABgQkkCAFxRDMNQv379NGDAgErzFi5cqJiYGP33v/+1IBkAIFBQkgAAV5SgoCAtWbJEH374oZ5//nnP9EOHDmnmzJn6y1/+olatWtXpNi9cuFCn6wMA1G+UJADAFSchIUHz58/X/fffr0OHDskwDN17771KS0vT9ddfr4EDByoyMlLx8fEaNWqUTpw44fnedevWqWfPnoqJiVGTJk30s5/9TPn5+Z75hw8fVlBQkF5//XWlpqbKbrfr1VdftWI3AQAWCTIMw7A6BAAAtTF06FC5XC794he/0Lx587Rv3z516tRJ48aN0+jRo3Xu3Dk9+OCDunjxojZu3ChJWrlypYKCgtSlSxedPn1av//973X48GF9/PHHCg4O1uHDh9WmTRu1bt1aTz31lK6//nrZ7Xa1aNHC4r0FAPgLJQkAcMU6fvy4OnXqpJMnT2rlypXau3ev3nvvPa1fv96zzH//+18lJCRo//79SkpKqrSOEydOqFmzZtqzZ4+Sk5M9JenZZ5/Vfffd58/dAQDUE1xuBwC4YsXFxWnChAm69tprNXToUP3nP//Rpk2bFBkZ6Xlcc801kuS5pO6LL77QiBEj1LZtW0VHR6t169aSpMLCQq91//jHP/brvgAA6o8QqwMAAPBDhISEKCTk23/OTp8+rcGDB+uJJ56otFzF5XKDBw9WYmKi/vrXv6ply5Zyu91KTk7W+fPnvZaPiIjwfXgAQL1ESQIABIwbbrhBK1euVOvWrT3Fyeybb77R/v379de//lU333yzJGnr1q3+jgkAqOe43A4AEDDS09N18uRJjRgxQjt27FB+fr7Wr1+ve+65R+Xl5brqqqvUpEkT5eTk6Msvv9TGjRs1Y8YMq2MDAOoZShIAIGC0bNlS77//vsrLy5WWlqbOnTtr2rRpiomJUXBwsIKDg/Xaa69p165dSk5O1vTp0/WnP/3J6tgAgHqG0e0AAAAAwIQzSQAAAABgQkkCAAAAABNKEgAAAACYUJIAAAAAwISSBAAAAAAmlCQAAAAAMKEkAQAAAIAJJQkAAAAATChJAAAAAGBCSQIAAAAAE0oSAAAAAJj8f8rUCOv2+gegAAAAAElFTkSuQmCC" }, "metadata": {}, "output_type": "display_data" } ], "execution_count": 52 }, { "metadata": { "ExecuteTime": { "end_time": "2024-11-20T04:00:21.344518Z", "start_time": "2024-11-20T04:00:21.181130Z" } }, "cell_type": "code", "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" ], "outputs": [ { "data": { "text/plain": [ "
" ], "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1cAAAIjCAYAAADvBuGTAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAACXgklEQVR4nOzdeZxT5b0/8M/Jvi+zr+zIIgiIWnEFtaDFKrV1QVvFpWqFKtLWSm0t2tvyq9Zae1mseq/UKi5g0RasSEVAC96KMCpYUNbZ9yyT5GQ95/dHZuJkZoCZJDNJZj7v1ysyOTnn5AkzMvnmc57vI8iyLIOIiIiIiIiSokj3AIiIiIiIiAYDFldEREREREQpwOKKiIiIiIgoBVhcERERERERpQCLKyIiIiIiohRgcUVERERERJQCLK6IiIiIiIhSgMUVERERERFRCrC4IiIiIiIiSgEWV0RERL2wZs0aCIKAY8eOpXsovdYx5t27d6d7KEREQwKLKyKiNOh409vT7cEHH0zpc7311ltYtmxZSs/Zlc/nw7Jly7Bt27Ze7b9t2zYIgoD169f367hOZebMmSf8PnS+9fffX7ZyOp0oLi7G+eefD1mWuz3+4YcfQqFQ4Cc/+UkaRkdENPBU6R4AEdFQ9uijj2LkyJFx2yZNmpTS53jrrbewcuXKfi0QfD4fHnnkEQDRgiVbPPTQQ7jjjjti9z/66CP88Y9/xM9+9jNMmDAhtv2MM87A6aefjhtuuAFarTYdQ81INpsNf/jDH3DDDTfg2WefxZ133hl7LBwO4+6778bw4cNjPxtERIMdiysiojS64oorcNZZZ6V7GEPW17/+9bj7Op0Of/zjH/H1r3+9xyJRqVQO0Miyx/XXX48///nPePDBB3H11VejsLAQAPDUU0/hk08+wVtvvQWDwdDv4/B6vTAajf3+PEREJ8PLAomIMtDx48dxzz33YNy4cdDr9cjNzcW1117bbb5PKBTCI488grFjx0Kn0yE3NxcXXHABtmzZAgBYsGABVq5cCQBxl7l1kCQJf/jDH3D66adDp9OhsLAQd911FxwOR9zz7N69G3PmzEFeXh70ej1GjhyJ2267DQBw7Ngx5OfnAwAeeeSRlF5K97vf/Q7nnXcecnNzodfrMX369B4vJRQEAYsWLcJLL72EcePGQafTYfr06dixY0fSY+jQ05yrESNG4Morr8S2bdtw1llnQa/XY/LkybHLI//6179i8uTJsfHs3bu323kPHDiA73znO8jJyYFOp8NZZ52Fv/3tb3H7nOr7fCo+nw933XUXcnNzYbFYcPPNN8d9j2+55Rbk5eUhFAp1O3b27NkYN27cSc+/atUqBAIBLFmyBABQVVWFZcuW4frrr8cVV1wBAPjHP/6BCy+8EEajEWazGXPnzsX+/fvjzvPpp59iwYIFGDVqFHQ6HYqKinDbbbehpaUlbr9ly5ZBEAR8/vnnuPHGG2G323HBBRf06u+CiKg/MbkiIkojl8uF5ubmuG15eXn46KOPsHPnTtxwww0oKyvDsWPHsHr1asycOROff/55LAlYtmwZli9fjjvuuAPnnHMO3G43du/ejT179uDrX/867rrrLtTW1mLLli34y1/+0u3577rrLqxZswa33nor7r33Xhw9ehQrVqzA3r178a9//QtqtRqNjY2YPXs28vPz8eCDD8Jms+HYsWP461//CgDIz8/H6tWr8YMf/ADf+ta3cM011wCIXkqXrKeeegpXXXUVbrrpJgSDQbzyyiu49tprsXHjRsydOzdu3+3bt+PVV1/FvffeC61Wi1WrVuHyyy/Hv//975RfatnZoUOHcOONN+Kuu+7Cd7/7Xfzud7/DN7/5TTz99NP42c9+hnvuuQcAsHz5clx33XU4ePAgFIroZ5v79+/H+eefj9LSUjz44IMwGo147bXXMG/ePLz++uv41re+BeDU3+dTWbRoEWw2G5YtW4aDBw9i9erVOH78eGzu2/e+9z288MIL2Lx5M6688srYcfX19di6dSt++ctfnvT8I0aMwCOPPIKf/OQnWLBgAVatWgWVSoU//OEPAIC//OUvuOWWWzBnzhz89re/hc/nw+rVq3HBBRdg7969GDFiBABgy5YtOHLkCG699VYUFRVh//79eOaZZ7B//358+OGHcR8MAMC1116LsWPH4je/+U2Pc76IiAacTEREA+7555+XAfR4k2VZ9vl83Y7ZtWuXDEB+4YUXYtumTJkiz50796TPtXDhQrmnf+7ff/99GYD80ksvxW1/++2347Zv2LBBBiB/9NFHJ3yOpqYmGYD8y1/+8qRj6fDee+/JAOR169addL+ufw/BYFCeNGmSfMkll8Rt7/i72717d2zb8ePHZZ1OJ3/rW9/q1ZhkWZbXrVsnA5Dfe++9bo91fM+OHj0a2zZ8+HAZgLxz587Yts2bN8sAZL1eLx8/fjy2/U9/+lO3c1966aXy5MmTZb/fH9smSZJ83nnnyWPHjo1t6833uScdY54+fbocDAZj2x977DEZgPzmm2/KsizLkUhELisrk6+//vq443//+9/LgiDIR44cOeVzhUIheerUqXJOTo4MQP7Tn/4ky7Ist7W1yTabTf7+978ft399fb1stVrjtvf0c//yyy/LAOQdO3bEtv3yl7+UAcjz58/vxd8CEdHA4WWBRERptHLlSmzZsiXuBgB6vT62TygUQktLC8aMGQObzYY9e/bEHrPZbNi/fz++/PLLPj/3unXrYLVa8fWvfx3Nzc2x2/Tp02EymfDee+/FngMANm7c2ONlY/2p89+Dw+GAy+XChRdeGPd30GHGjBmYPn167P6wYcNw9dVXY/PmzYhEIv02xokTJ2LGjBmx+1/72tcAAJdccgmGDRvWbfuRI0cAAK2trdi6dSuuu+46tLW1xf7+W1paMGfOHHz55ZeoqakBkNz3GQDuvPNOqNXq2P0f/OAHUKlUeOuttwAACoUCN910E/72t7+hra0ttt9LL72E8847r1vTlZ6oVCo888wzaG1txbnnnovvf//7AKJplNPpxPz58+N+zpRKJb72ta/Ffs6A+O+33+9Hc3Mzzj33XADo8Xt+99139/Fvgoiof7G4IiJKo3POOQeXXXZZ3A0ARFHEww8/jPLycmi1WuTl5SE/Px9OpxMulyt2/KOPPgqn04nTTjsNkydPxk9+8hN8+umnvXruL7/8Ei6XCwUFBcjPz4+7eTweNDY2AgAuvvhifPvb38YjjzyCvLw8XH311Xj++ecRCARS/xfSxcaNG3HuuedCp9MhJycndgli57+DDmPHju227bTTToPP50NTU1O/jbFzAQUAVqsVAFBeXt7j9o65TocOHYIsy/jFL37R7e+/4zK8ju9BMt9noPvfjclkQnFxcdz8sZtvvhmiKGLDhg0AgIMHD+Ljjz/G9773vV4/z9lnnw0AmD59euwSvo6C8JJLLun2Ot95553YawSiBed9992HwsJC6PV65Ofnxwq7nr7nvSn6iIgGEudcERFloB/+8Id4/vnnsXjxYsyYMQNWqxWCIOCGG26AJEmx/S666CIcPnwYb775Jt555x0899xzePLJJ/H000/HtRjviSRJKCgowEsvvdTj4x1NKjrWo/rwww/x97//HZs3b8Ztt92GJ554Ah9++CFMJlPqXngn77//Pq666ipcdNFFWLVqFYqLi6FWq/H8889j7dq1/fKciThRB8ETbZfb5wZ1fB9//OMfY86cOT3uO2bMGADJfZ97a+LEiZg+fTpefPFF3HzzzXjxxReh0Whw3XXXJXXejtf5l7/8BUVFRd0eV6m+eity3XXXYefOnfjJT36CqVOnwmQyQZIkXH755XE/9x06J11ERJmAxRURUQZav349brnlFjzxxBOxbX6/H06ns9u+OTk5uPXWW3HrrbfC4/HgoosuwrJly2Jvurs2AegwevRo/POf/8T555/fqzep5557Ls4991z8+te/xtq1a3HTTTfhlVdewR133HHC50jG66+/Dp1Oh82bN8etLfX888/3uH9Pl8x98cUXMBgMsUIxk4waNQoAoFarY4nlyZzq+3wyX375JWbNmhW77/F4UFdXh2984xtx+918881YsmQJ6urqsHbtWsydOxd2u72Pryze6NGjAQAFBQUnfZ0OhwPvvvsuHnnkETz88MNxYyciyha8LJCIKAMplcpu3c/++7//u9vcoa4tqk0mE8aMGRN3yV7H2j9dC7PrrrsOkUgEv/rVr7o9fzgcju3vcDi6jWXq1KkAEHueju6FPRV/iVIqlRAEIe41Hzt2DG+88UaP++/atStuXk5VVRXefPNNzJ49OyPXpyooKMDMmTPxpz/9CXV1dd0e73wpY2++zyfzzDPPxM2XW716NcLhcKxNeof58+dDEATcd999OHLkCL773e/25SX1aM6cObBYLPjNb37T45y9jtfZ8T3q+rPW0XGQiCgbMLkiIspAV155Jf7yl7/AarVi4sSJ2LVrF/75z38iNzc3br+JEydi5syZmD59OnJycrB7926sX78eixYtiu3T0eTh3nvvxZw5c6BUKnHDDTfg4osvxl133YXly5ejoqICs2fPhlqtxpdffol169bhqaeewne+8x38+c9/xqpVq/Ctb30Lo0ePRltbG5599llYLJZY8qHX6zFx4kS8+uqrOO2005CTk4NJkyadsgX666+/jgMHDnTbfsstt2Du3Ln4/e9/j8svvxw33ngjGhsbsXLlSowZM6bH+UaTJk3CnDlz4lqxA9G1tzLVypUrccEFF2Dy5Mn4/ve/j1GjRqGhoQG7du1CdXU1PvnkEwC9+z6fTDAYxKWXXhprBb9q1SpccMEFuOqqq+L2y8/Px+WXX45169bBZrN1a3efCIvFgtWrV+N73/sezjzzTNxwww3Iz89HZWUlNm3ahPPPPx8rVqyAxWLBRRddhMceewyhUAilpaV45513cPTo0aTHQEQ0YNLaq5CIaIjqaJF9ovbmDodDvvXWW+W8vDzZZDLJc+bMkQ8cOCAPHz5cvuWWW2L7/dd//Zd8zjnnyDabTdbr9fL48ePlX//613Ftt8PhsPzDH/5Qzs/PlwVB6NaW/ZlnnpGnT58u6/V62Ww2y5MnT5YfeOABuba2VpZlWd6zZ488f/58ediwYbJWq5ULCgrkK6+8Mq7tuSzL8s6dO+Xp06fLGo3mlG3ZO1qxn+j2/vvvy7Isy//zP/8jjx07VtZqtfL48ePl559/PtaGuzMA8sKFC+UXX3wxtv+0adN6bKl+Mom0Yu+pRXrHeDo7evSoDEB+/PHH47YfPnxYvvnmm+WioiJZrVbLpaWl8pVXXimvX78+tk9vvs896Rjz9u3b5TvvvFO22+2yyWSSb7rpJrmlpaXHY1577TUZgHznnXee9Nwn0tNrl+Xo93zOnDmy1WqVdTqdPHr0aHnBggVxP0fV1dXyt771Ldlms8lWq1W+9tpr5dra2m4/Tx0/A01NTQmNkYiovwiyzFX3iIgouwmCgIULF2LFihXpHkrWe/PNNzFv3jzs2LEDF154YbqHQ0SUVTjnioiIiGKeffZZjBo1ChdccEG6h0JElHU454qIiIjwyiuv4NNPP8WmTZvw1FNP9UsHSCKiwY7FFREREWH+/PkwmUy4/fbbcc8996R7OEREWYlzroiIiIiIiFKAc66IiIiIiIhSgMUVERERERFRCnDOVQ8kSUJtbS3MZjMn9BIRERERDWGyLKOtrQ0lJSVQKE6eTbG46kFtbS3Ky8vTPQwiIiIiIsoQVVVVKCsrO+k+LK56YDabAUT/Ai0WS5pHQ0RERERE6eJ2u1FeXh6rEU6GxVUPOi4FtFgsLK6IiIiIiKhX04XY0IKIiIiIiCgFWFwRERERERGlAIsrIiIiIiKiFGBxRURERERElAIsroiIiIiIiFKAxRUREREREVEKsLgiIiIiIiJKARZXREREREREKcDiioiIiIiIKAVYXBEREREREaUAiysiIiIiIqIUYHFFRERERESUAiyuiIiIiIiIUoDFFRERERERUQqwuCIiIiIiIkoBFldEREREREQpwOKKiIiIiIgoBdJaXO3YsQPf/OY3UVJSAkEQ8MYbb5x0/08++QTz589HeXk59Ho9JkyYgKeeeqrbftu2bcOZZ54JrVaLMWPGYM2aNf3zAojolALhCFxiKN3DICIiIup3aS2uvF4vpkyZgpUrV/Zq/48//hgFBQV48cUXsX//fjz00ENYunQpVqxYEdvn6NGjmDt3LmbNmoWKigosXrwYd9xxBzZv3txfL4OITuJYsxd7jzvwZUMb/KFIuodDRERE1G8EWZbldA8CAARBwIYNGzBv3rw+Hbdw4UL85z//wdatWwEAP/3pT7Fp0ybs27cvts8NN9wAp9OJt99+u1fndLvdsFqtcLlcsFgsfRoPEX3F7Q9hzzEHBEGAGArDptdgRJ4RBWYtFAoh3cMjIiIiOqW+1AYZPedq2bJlGDFixEn3cblcyMnJid3ftWsXLrvssrh95syZg127dp3wHIFAAG63O+5GRMmrdYjwhyPIMWpQYtUjEJbwSbUT+2pdvFSQiIiIBp2MLq7y8vIwevToEz6+c+dOvPrqq7jzzjtj2+rr61FYWBi3X2FhIdxuN0RR7PE8y5cvh9Vqjd3Ky8tT8wKIhjCXL4Q6l4gcgxZANJ3OMWqQb9KizuVHRaUDx5o9CIalNI+UiIiIKDUyurhatGgR3n333R4f27dvH66++mr88pe/xOzZs5N6nqVLl8LlcsVuVVVVSZ2PaKiTZRk1Lh+CERl6jTLuMbVSgRKrHhqlEgfq2/BJtRONbX5kyBXKRERERAlTpXsAifj8889x6aWX4s4778TPf/7zuMeKiorQ0NAQt62hoQEWiwV6vb7H82m1Wmi12n4bL9FQ4xJDqHf5kWPQnHAfk04FvUaJVm8Qn1a5UGLXYXiOEUZtVv6zRERERJTZyVVP9u/fj1mzZuGWW27Br3/9626Pz5gxo1vatWXLFsyYMWOghkg0pMmyjGqHiHBEhk6tPOm+SoWAfLMWVr0alS0+7K10oKrVi3CElwoSERFR9klrceXxeFBRUYGKigoA0TbqFRUVqKysBACsWLECl156aWz/ffv2YdasWZg9ezaWLFmC+vp61NfXo6mpKbbP3XffjSNHjuCBBx7AgQMHsGrVKrz22mu4//77B/S1EQ1VTl8I9W4/7CdJrbrSqZUotRkACNhf68ZnNS60eoP9N0giIiKifpDW4mr37t2YNm0apk2bBgBYsmQJpk2bhocffhgA0NzcjMOHD8f2X79+PZqamvDiiy+iuLg4djv77LNj+4wcORKbNm3Cli1bMGXKFDzxxBN47rnnMGfOnIF9cURDkCzLqHb6IMunTq16YtWrUWTRo8UTREUV18YiIiKi7JIx61xlEq5zRZSYFk8AeyudsBnU0Kr6Xlx15guG4fAFYdWrMSLPiEKzjmtjERER0YAbNOtcEVH2kKToXCsZSLqwAgCDRoUSqx6hsIzPql1cG4uIiIgyHttyEVFKtPqCaGoLnLRDYF8JggC7UYNQREK9y49WbxDDcgwotetTUsARERERpRKTKyJKmiTJqHFEF+nWqFL/z4paqUCxNVpQfdHgwSdVXBuLiIiIMg+LKyJKWos3iMY2P3KMqUutemLSqlBs1cEbiOCTKhf+U+eGJxDu1+ckIiIi6i1eFkhESYlIMqodPiggQK3s/89rFIKAPJMWgXAEVQ4fWrxBjMg1oNiqh2oAnp+IiIjoRPhOhIiS0uIJoKktAHs/p1ZdaVVKlFgNECDg8zo3Pql2osUTGNAxEBEREXXG4oqIEhaRZFQ5fFApFAOSWvXEqlej0KyH0xtCRbUTX9S3QQxybSwiIiIaeCyuiChhzZ4AWjxB2A3qtI5DqRBQYNHBrFHjSJMHeysdqHWKiEhseEFEREQDh8UVESUkHJFQ1eqDWqnImLlOeo0SJTY9wpKMz6qd2FfjgsvHtbGIiIhoYLChBRElpNkTRLMngCKLPt1DiSMIAuwGDUxaFRrb/HD4gii3G1CWw7WxiIiIqH9lxsfNRJRVQhEJla1e6FRKKBVCuofTI7VSgSKLHjqVEl82erC30olGN9fGIiIiov7D4oqI+qypLYBWbwg2w8B2CEyEsX1tLH8wgk+qnfi8lmtjERERUf/gZYFE1CfR1MoHvTpzU6uuFIKA3J7WxrLp09blkIiIiAYfvqsgoj5pbAvAJQZh1ae3Q2AitColSm0GKIXo2liftq+NxUsFiYiIKBVYXBFRrwXD0Q6BepUqa1Krnlj0ahRZomtj7a1y4iDXxiIiIqIUYHFFRL3W2OaH0xeENc3rWqVCx9pYVp0ax5q92FPpQA3XxiIiIqIksLgiol4JhCOoavXBoFFBIWRvatWVTh1dGyvSaW0spy+Y7mERERFRFmJDCyLqlQaXHy4xhGJrZq1rlQqd18ZqagvA4Q2iLEePMrsBOjXXxiIiIqLeYXJFRKfkD0VQ5RBh0qoHVWrVlVqpQKFFB51aiUONHlRUOdHg9kPipYJERETUCyyuiOiUGtx+tPnDsOj6Fna7xRCe3n4Y73/ZlFUd+aJrY+nhD0bwabUTn9e50eYPpXtYRERElOF4WSARndRXqZUKQh9Tqxd2HcPmzxuw6bM6vHugET+4eDQKLbp+GmlqdayNFQxLqHGIaPEGMCLXiBKujUVEREQnwHcIRHRS9S4RHn+oz6lVg9uPfx5oBACoFAI+Pu7AwrV78EZFTVZ15NOoFNGCSqHAf+rc+KTKiWaujUVEREQ9YHFFRCckBqOplVmr7nNqtW53FSKSjKnlNvxx/jScXmJBICzhfz44ih+v+wRHmjz9NOr+YdZF18ZyiSFUVEbXxvIFw+keFhEREWUQFldEdEK1ThHeQBjmJFKrG84uR7ndgN98azIWzRoDo0aJQ00e3P9aBdbsPAp/KHsW71UqBBSYdbDq1TjW4sOeSifXxiIiIqIYFldE1CNvIIwapwirTpNUanV6iRVAdA7TnNOLsOqm6bhgTB4kGXh9Tw0WvbwHeysd/fES+o1OrUSJVQdZkrGvxoXPqp1weLk2FhER0VDH4oqIelTnEuELhGFKMrXqKseowU8vH49fzJ2APJMGDe4AHv7bfvx+y0G4xOzpyCcIAmwGDQpMWjR7gqiocuBQY1tWJXFERESUWiyuiKgbT0dqZdD0+dieUquenDMyFytvPBPfPKMYAoD3DjbhBy99jK0HGrOqWYSqfW0sg0YVWxur3sW1sYiIiIYiFldE1E2dU4QvGIFJm9rUqiuDRoU7LxqNx78zBSNyDWjzh/HkP7/Aw3/bj3qXP6Gxp4tBE7821r5aF9xcG4uIiGhIYXFFRHHa/CHUOEXY9f2XWnU1rsiMJ6+bipvPHQ61UkBFlRMLX96D1/dUIxyR+jyOdOlYGyvXqEWdy4+9lQ4ca/YgGM6e10BERESJY3FFRHFqHCL8oQiM/ZxadaVSKnDtWeVYMf9MnFFmRTAsYc3OY1iy7hN82dDW5/Olk0alQIk1ujbWgfo2fFLtRFMb18YiIiIa7FhcEVGMSwyh3uWHvR/nWp1KiU2P/7p6Eu67dCzMWhWONnvx4/Wf4Ln3j0AMZleziI61sdrEMD6pcuJAvRveANfGIiIiGqxYXBFRTK3Th0BYgkEzsKlVV4Ig4LIJhVh105m4+LR8SDLw5ie1WPTyHuw+1pr0+QeSUiEg36yNrY21t9KBaocvqy53JCIiot5hcUVEAACXL/2pVVc2gwY/nj0Oy755OgrMWjS2BfDIxs/x+OYDcPiya10pnVqJUqsegIB9NW58VuPi2lhERESDDIsrIoIsy6hx+hCMyNBrlH06NtWpVU+mD7dj5Y1nYt7UUigEYMeXzbjnpT3Y8nl9Vs1jEgQBVr0ahebo2lh7qxz4soFrYxEREQ0WaS2uduzYgW9+85soKSmBIAh44403Trp/S0sLLr/8cpSUlECr1aK8vByLFi2C2+2O22/btm0488wzodVqMWbMGKxZs6b/XgTRIOASQ6hz+5GTQalVVzq1ErdfMBJPXDsVo/KN8ATC+OPWQ3jojX2ocYj99rz9QaVUoMiig1GjwuEmDyoquTYWERHRYJDW4srr9WLKlClYuXJlr/ZXKBS4+uqr8be//Q1ffPEF1qxZg3/+85+4++67Y/scPXoUc+fOxaxZs1BRUYHFixfjjjvuwObNm/vrZRBlNVmWUe0QEYnI0KkzL7XqakyBCb+/dipuPW8ENCoFPqtx4Yev7MGru6sQyrJ5TAaNCiVWPQJhCZ+0r43lErk2FhERUbYS5Ay5pkYQBGzYsAHz5s3r03F//OMf8fjjj6OqqgoA8NOf/hSbNm3Cvn37YvvccMMNcDqdePvtt3t1TrfbDavVCpfLBYvF0qfxEGWbVm8QeyodsOrUfS6uVrx3CJv312NquQ2/unpSP43wxOrdfqx67xD2VjkBAMNzDFh0yRiML8q+/29DEQlNngB0KgWG5xpQYjNAo+KV20REROnWl9ogo39zL1u2DCNGjDjh47W1tfjrX/+Kiy++OLZt165duOyyy+L2mzNnDnbt2nXC8wQCAbjd7rgb0VAQTa18gIw+F1aNbj/++Z8GAAOXWnVVZNHhkatOx4++fhosOhWOt/rwwPpP8afth+ELZlfLc7UyujaWRqmMrY3V2ObPqjllREREQ11GF1d5eXkYPXp0t+3z58+HwWBAaWkpLBYLnnvuudhj9fX1KCwsjNu/sLAQbrcbotjzvIzly5fDarXGbuXl6XmjSDTQWr1BNLoDsBnUfT72tY+rB2Su1akIgoCZ4wqw6qbpuGR8AWQAGz+rwz0v7cH/HW1J27gSZdKpUGTRw+MP49MqF/7DtbGIiIiyRkYXV4sWLcK7777bbfuTTz6JPXv24M0338Thw4exZMmSpJ5n6dKlcLlcsVvHJYZEg5kkRedayQC0quxLrbqy6tW4/7LT8KurJ6HIokOLN4j/2vQfLP/Hf9CaZS3PlQoBeabo2liV7WtjVbV6uTYWERFRhuvbSqEZoqioCEVFRRg/fjxycnJw4YUX4he/+AWKi4tRVFSEhoaGuP0bGhpgsVig1+t7PJ9Wq4VWqx2IoRNljFZfEI1tgYQ6BGZKatWTqeU2/Pf8aXjloyps2FuNnYdb8EmVE7ecNwJzTi+CQhDSPcRe06mVKLUZ4BJD2F/rRrMniOG5RuQY+/49IyIiov6X0clVb0hS9JPcQCAAAJgxY0a3tGvLli2YMWPGgI+NKFNJkozqVh8EoM9NEzIxtepKp1ZiwXkj8Ifrp2JsgQneYASrth3G0r9+hqpWX7qH12dWvRpFFj1a2tfG+qKea2MRERFlorQWVx6PBxUVFaioqAAQbaNeUVGByspKAMCKFStw6aWXxvZ/66238Pzzz2Pfvn04duwYNm3ahLvvvhvnn39+rPHF3XffjSNHjuCBBx7AgQMHsGrVKrz22mu4//77B/rlEWWsZm8ATZ5AQglIJqdWXY3MM+Hx70zB9y8cCZ1agc/r3Lj3lb14+d+VWde2XakQUGjRwaRR4UizB3srHahziVwbi4iIKIOktbjavXs3pk2bhmnTpgEAlixZgmnTpuHhhx8GADQ3N+Pw4cOx/fV6PZ599llccMEFmDBhAu6//35cddVV2LhxY2yfkSNHYtOmTdiyZQumTJmCJ554As899xzmzJkzsC+OKENFJBk1DhEKQYBaOfhSq66UCgFXTSnFyhvPxFnD7QhLMtb+uxL3vrIX+2td6R5en3WsjRUKy/i0yonParg2FhERUabImHWuMgnXuaLBrNHtR0WVE3kmbZ+Lq3Sva5UsWZbxwaFmPPP+ETh90YLk8tOLcMt5I2DSZt8U1FBEQrMnAI1KgWE5BpTa9X1uTkJEREQnN2jWuSKi1IpIMqocPqgUiiGRWnUlCAIuHJuP1TdOx+yJ0SUb3t5fj4Uv7cG/DjVn3ZpSaqUCxdZoQfVFgwefVHFtLCIionRicUU0hDR7AmhuC8CexetapYJJp8IPLxmL38ybhFKbHq2+IP7f2wfw67f+g2ZPIN3D6zOTVoViqw7eQASfVLnwnzo3PFwbi4iIaMCxuCIaIsIRCZWtPmhUSqiGYGrVk8llNvzxhmm4/qxyKBUC/u9oK+55aQ82flqLSJY1ilAI0bWx7AY1qhxcG4uIiCgdWFwRDRFNngBaPAHYB9m6VsnSqBT47rnD8dT1UzG+yAwxFMGfdhzBT1//FMeavekeXp9pVUqUWA0QIODzOjc+qXaiJQvTOCIiomzE4opoCAhFJFS1+qBTKaFU9G0R3WRTK38oApcYyvh5QMNzjfjtt8/A3RePhl6txMGGNix+rQJ/+fA4guHsS3+sejUKzXo4vSFUVDvxRX0bxCDXxiIiIupPLK6IhoCmtgBavSHY0pBatXgCgADUuvwZv/CtQhAwd3IxVt10Jr42MgcRScZru6vww5f34LNqZ7qH12dKhYACiw5mjRpHmjzYU+lArVPMukseiYiIsgWLK6JBLhiOzrXSqwc+tfIEwtBrlRhfZMbwXD2cYggtngCkDE+x8kxa/HzuRCy9YjxyDBrUuvz42Rv78MetX6LNn31rSuk1SpTY9IhIMj6rdmJfjQsuX/a9DiIiokzH4opokGvyBOASg7DqB75DoEsMocSqR55Ji/FFFkwps0KnUaLOJWZ8igUA543Ow6qbzsQVk4oAAFs+b8A9L+3Bji+aMv4yx64EQYDdoEG+WYfGNj/2VjpwuNGDQDjzvw9ERETZgsUV0SAWCEdQ1eKDXqUa8NTKGwhDr1ag2KYHEH1zX2DRYWq5DaPyTHCJITS1ZX6KZdSqcM/MMfjtt89AuT2avj3+zkE8uvFzNLr96R5en6mVChRZ9NCplfiisQ17K51odHNtLCIiolRgcUU0iDW6/XCKQVjTsK6VUwyi2KqHSauK265TKzG20IQp5TaYdNEUyxfM/DWZJhZb8NQN03DjOcOgUgjYfdyBhS/vwZsVNVk5h8moVaHEqoc/GMEn1U58Xsu1sYiIiJLF4opokAqEI6h2iDBqVFAIA5ta+YJh6NRKFNl0PT4uCALyzVpMKbdhTIEJ3mAYjW5/xhcpaqUC888Zhj/eMA2nl1jgD0l47oOj+PH6T3CkyZPu4fWZQhCQa9Iix6BFlcOHPccdqGzxIsS1sYiIiBLC4opokGpw+eH0hWBJYq7VlDJrQqmVwxdEkUUHi+7kz61VKTGmwIwpZTZYDWrUu0V4syA9Kc8x4DffmoxFs8bAqFHiUKMH979WgTU7j2bFXLKuNCoFSm0GKIX2tbGqnGj2BHipIBERUR+xuCIahPyhCKocIsw6dVKp1fxzhvX5ucVgBDqVMjbXqjdyTVqcUWbDaYVm+EMRNGRBiqUQBMw5vQirbpqO88fkQZKB1/fU4Icv78XeSke6h5cQi16NIoseLl8IFVVOHOTaWERERH3C4opoEGpw++H2h2DRqU69cxdJp1ZiEIVWbZ+7E2pUCozKN2HqMBtyTRrUu8WsaHueY9TgwcvH4xdzJyDPpEG924+H/7Yfv99yEC4x88ffVcfaWFadGseavdhT6UAN18YiIiLqFRZXRIOMGIygqtUHs1YNYYBTK38oAo1SQInV0OdjO9gMGkwqtWJCsQWhiIR6t4hwFswBOmdkLlbeeCauPKMYAoD3Djbhnpc+xnsHG7Py8jqduvvaWE5fMN3DIiIiymgsrogGmTqXCE8gnJ7UyhdEoUWXUHfCztRKBYbnGjF1mB0FZh0a2gJZkQIZNCrcddFoPP6dKRiRa4DbH8bvt3yBh/+2H/Wu7Gvb3rE2VoFZh6a2ACoqnTjU2JaV88qIiIgGAosrokHEFwyjxinCoktPaqVSCijpw1yrU7Hq1ZhUasXpJWZIsoxal5gVnezGFZnx5HVTcfO5w6FWCqiocmLhy3vw1z3VWXl5nVqpQKFFB5062ryjosqJBrcfUha+FiIiov7E4opoEKlz+uENhLutLdUbyaZWTjGIArOuz3OtTkWpEFCeY8S0YTYUW3VoavNnxeVpKqUC155VjhXzz8QZpVYEwxKe33kMS16rwJcNbekeXkKMWhWK29fG+rTaic/r3FkxL46IiGigsLgiGiS8gWhqZdVpBjy1CoQjEAQBpTZ9n5+7t8w6NU4vsWJSmQ2CANS6fAiGMz/FKrHp8V/zJuG+S8bCpFXhSLMXP17/CZ57/0hWduLrvDZWjUPEnkoHjnNtLCIiIgAsrogGjTqXCF8gDFMa5lo5fSEUWXSwJTnX6lSUimgBN22YHaU2A1q8ATi8wYxvGCEIAi6bWIjVN52Ji8bmQ5KBNz+pxaKX92D38dZ0Dy8hGpUCJTY91AoF18YiIiJqx+KKaBDwBMKocYiwGjR9PjbZ1KojPSrpx9SqK6NWhYnFFpxRZoNKKaDW5c+KJgs2gwY/mTMOv/zmRBSYtWhsC+CRv3+OxzcfhCMLLnXsiVmnRrFFD5cYQkVldG0sXzDzF4ImIiLqDyyuiAaBWocIMRRJy1yrVl8QBRYt7P2cWnWlUAgosuowbZgdw3L1cIohtGRJcnLW8BysmH8m5k0tgUIAdnzZhHte2oN/ft6QFePvSqkQYvPtjrX4sKfSybWxiIhoSGJxRZTl3P4Qal0i7GlIrUIRCQLQr3OtTkWvUWJCkQVTyqzQaZSodYlZkWLpNUrcfsEoPHHtVIzKN8ITCOOprV/i52/sQ61TTPfwEqJTK1Fi1UGWZHxW7cJn1U44vNmZyBERESWCxRVRlqt1iAiEIzBo0pBaeYPIN2sTKuxSSRAEFFh0mFpuw6g8E1xiCE1tAUhZkAKNKTDh99dOxa3njYBGpcCnNS4senkPXttdlRWLJ3clCAJsBg0KzVo0e4KoqHJwbSwiIhoyWFwRZTGXGEK9yw+bPrHU6t0kUysZQKldD4UiPalVVzq1EmMLTZhSboNJp4w2+ciC+T9KhYBrzizDyvlnYmq5DaGIjL98eByLX63AwfrsbNuual8by6BRxdbGqndxbSwiIhrcWFwRZbEapw+BsJRQarXu42qEk0itHN4g8k0a5KQ5tepKEATkm7WYUm7DmAITPMEwGt3+rJj/U2TV4dGrTseSr58Gi06F460+/GT9J/jTjsNZUST2xKCJXxtrX60Lbq6NRUREgxSLK6Is5fJFU6t0zbWSIKMkg1KrrrQqJcYUmDG1zAarQY06lwhvIPMLFEEQMGtcAVbdNB2XjCuADGDjp3VYuHYP/n20Jd3DS0jH2lh5Ji3qXH7srXTgWLMnK9YpIyIi6gsWV0RZSJZl1Dh9CEVk6DXKPh+fdGrlCyLPpEWeUdvnYwdarkmLM8psGFdkhj8UQX2WpFhWvRr3f/00/OrqSSiy6NDsCeJXm/6D//eP/6A1S5tEqJUKlFj10CiUOFDfhk+qnWhqy44Oj0RERL3B4oooCzl9IdS5/QldkpdsahWOSIhIMkptmZtadaVRKTAqPzoXK8+kQb1bhMef+SkWAEwtt+G/50/Dt88sg0IA/nW4Bfe89DHe3lefFQ07emLSqVBk0aNNDOOTKif+U+/OilSRiIjoVFhcEWWZaGolQpJk6NTpSK1CyDVpkGvK/NSqK7tRg0mlVkwotiAYiaDeLWZFRz6dWokF543Ak9dNxZgCE7zBCFZuO4SfbfgMVQ5fuoeXEKUiOjfOqlejssWHvZUOVDt8WfH9ICIiOhEWV0RZxuELod6dnrlWEUlGWJJQZjdAmSWpVVdqpQLDc42YOsyOArMODW0BuMTsaLAwKt+E331nCu64YCR0agX217px78t78fK/KxHK0qIkujaWHoCAfTVufFbj4tpYRESUtVhcEWURWZZR7fABcrRhQ18lm1o5fUHkGDXINWZWh8BEWPVqnF5iweklZkiyjFqXmBUFilIh4OqppVg5/0ycNdyOsCRj7b8rcd8re7G/1pXu4SVEEARY9erY2lh7qxz4soFrYxERUfZhcUWURVq9QTS6A2lLrQLhCMrsBqiUg+OfDpVSgfIcI6YNs6HYqkNTmx9OX3akJgUWHR6+ciIemDMONr0aVQ4RD/71M6zadihr5y+plAoUWXQwalQ43ORBRSXXxiIiouyS1ndIO3bswDe/+U2UlJRAEAS88cYbvT62paUFZWVlEAQBTqcz7rFt27bhzDPPhFarxZgxY7BmzZqUjpsoHSRJRrVDhIxog4a+SklqZdIiz5T9qVVXZp0ap5dYManMBkEAal2+rGgTLggCLhybj1U3nYmvTywEAPxjXz3ueWkPdh5uTvPoEmfQqFBi1SMQlmJrY2XLpZtERDS0pbW48nq9mDJlClauXNnnY2+//XacccYZ3bYfPXoUc+fOxaxZs1BRUYHFixfjjjvuwObNm1MxZKK0afEG0dgWSOiSvJSkVhEJZXb9oEmtulIqBJTa9Jg2zI5SmwEt3gAc3mBWtAk369S495Kx+M28SSi16dHqC2L5Pw7g1299jmZPIN3DS4ggCMgxapBn0qLe5UcF18YiIqIsoErnk19xxRW44oor+nzc6tWr4XQ68fDDD+Mf//hH3GNPP/00Ro4ciSeeeAIAMGHCBHzwwQd48sknMWfOnJSMm2igSZKMGocPCkQbMvRVsqmVSwzBblAjLws7BPaVUavCxGILck0aHGnyotblR65Rk1BnxoE2ucyGP94wDa/trsL6PdX48EgrPqly4ZYZw3HF5GIohOxrQqJWKlBs1cPjD+M/dW1obAtgRJ4R+SYthCx8PURENLhl9EfQy5Ytw4gRI+K2ff7553j00UfxwgsvQKHoPvxdu3bhsssui9s2Z84c7Nq164TPEwgE4Ha7425EmaTZG0CTJwB7mlIrMRRGmd2QUGGXjRQKAcVWPaYNs2FYrh5OMYQWT3YsdqtRKfDdc4fjqeunYlyhGWIogqd3HMFPX/8Ux1u86R5ewkw6FYqtengDEXxa5cJ/6rg2FhERZZ6MfqeUl5eH0aNHx+4HAgHMnz8fjz/+OIYN6/lNYn19PQoLC+O2FRYWwu12QxTFHo9Zvnw5rFZr7FZeXp66F0GUpIgko8YhQiEIaUmt3GIINoMG+ebBn1p1ZdCoMKHIgillVug0StS6xKzpYDc814jffvsM3H3RKOjVShyob8PiVyvw4ofHs/bSOqVCQJ6pfW2sVh/2VDpQ1erl2lhERFkkIskIhiWIwQg8gTBcvugHmI1tftS5RFQ7fDje4sWhxjZ82dCWFZ18O0vrZYGnsmjRIixatCh2f+nSpZgwYQK++93vpvR5li5diiVLlsTuu91uFliUMaL/4ARQkMAlecmmVpIsQwyHMbrQNmRSq64EQUCBRQeLXo3jLV5UtYrwBMLIMWoy/jI7pULA3DNK8LVRuXh6+2H839FWvLq7Ch8casbCWWMwubTvxXYm0KmVKLUZ4BJD2F/rRrMniOG5RuQMgiUCiIiygSzL7WtfypDk9j/b70c63cIRCcGIhGBYQkiSEAxH94vInf+MFlzo+JUqI/q1DGhUAopt+qx6D5LRxVVXW7duxWeffYb169cDQOwSnby8PDz00EN45JFHUFRUhIaGhrjjGhoaYLFYoNfrezyvVquFVjv0PpWnzBeOSKhs9UGtUCTUSCIVc62sOg3yh8Bcq1PRqZU4rdCMHKMWR5s9qHOJsBs0MGgy/5/RPJMWD31jAnYdacGfth9BjVPEzzZ8hq9PLMRt542ESZf5r6EnVr0aJq0KzZ4AWn1BlNsMGJZryIr5cUREmUDqUiDFiiJJgiQh9mcwEkEwLCMUkdpvXxVIkiQjAhlSBJAho+O/ACBAgEIQoFQIUAoCFO1/apQCFKro9o7HuwpFJLjE7FgepbOs+o36+uuvx13a99FHH+G2227D+++/H7t8cMaMGXjrrbfijtuyZQtmzJgxoGMlSoVmTxAtngAKzLo+H5uS1CoYxqhSa0Kt3wcjQRCQb9bColehssWHSocPHn8YuSZtj78YMokgCDhvdB7OKLPhhV3H8I999djyeQM+OtaKOy8chQvG5GVlgwilQkChRQdfMIwjzR60eKMNLwrMuoz/nhARpUJHihSR41Ojrwqlr74ORSQEwhGEItFL8yLthdVXf0Z//3cKjwAACghQKBBXICkVAjQqRdz2TL+iYyCktbjyeDw4dOhQ7P7Ro0dRUVGBnJwcDBs2DCtWrMCGDRvw7rvvAkDc/CsAaG6OruMyYcIE2Gw2AMDdd9+NFStW4IEHHsBtt92GrVu34rXXXsOmTZsG5kURpUg4IqHK4YNWpUxLauUWQ7Do1UNyrtWpaFVKjC00I8eowdFmbyzFMmoz//Mqk1aFe2aOwcWn5WPle4dQ5RDx2OaD2HqgET+YOTqhQj4TGDQq6NVKOH0hfFrlRJFVjxF5Rlj16nQPjYioV6QuBVLnS+1iyVIkmioFwtEEKRiOpkhxBZIsQ5aAiCx3KpBkQI5PiqJfR7uyajulSAoBWflhW6ZI6zuB3bt3Y9asWbH7HfOebrnlFqxZswbNzc04fPhwn845cuRIbNq0Cffffz+eeuoplJWV4bnnnmMbdso6TZ4AWr1BFKYhtZJlGd5gGKeXWKBV8RKrE8k1aWHWqVHV6kNlqxdtgTDysyDFAoDTS6x46oZpWP9xNV7bXYXdxx1YuHYPvnfucMydXJIVr6ErQRBgN2pgiqjQ4PbD4QtiWI4BpXY9f46JaMD0dFldWJK6JUvBWIEkIyRJCIdlRGSp03ykaMEVIwCyhFgBFCuG2gslVZfL7JgipYcgZ0Nv4QHmdrthtVrhcrlgsVjSPRwagkIRCXsrHfAFIshNYL7TyvcO4e399TijzIpfz5vc5+NdYgiCAEwfbuf8lV5yeIM40uxBU1sAVp0mq+YxVbX6sOK9Q/i8LroMxZgCE+69ZAxG5pnSPLLkeAJhuMQQcoxqro1FRH3SuWFD7JK7SPdL7zoaNgTCEsJdGjZ0JEmdGzYIAGQZENrTIWWXQumrROmrZGmo/rvVMefq7JG5MKX5ypC+1AbZ89ufaAhpaoumVkWWnpuwnExcanV2YqmVJxDGhGIzC6s+sBs1OENnQ61TxLFmL+rdIeQZtQld0jnQynMMWH7NZLyzvwFrdh7FoUYPFr9agW9NK8P8c8qzNvUxaVUwaJRo9QbxSZULpTYdhuUa0/5LmogGTk+X1UXkkzdsCEYkhLs0bAi3X2onyRIEoaOhXbTo6TwPqS8NG2hw4m8YogwTDEc7BOrVqoT+Me6Ya3VGmRWTEmi17faHYdKpUGjJzrk36aRWKjA81wibXoNjLV7UufwwaVVZMe9HIQi4fFIRzhmZg2d2HMa/Drfg9T3V2Hm4GffMHIOp5bZ0DzEhCiG6NlYgHEFlqw8t3iCG5xiyrrUv0VB2ooYNXdt/h9s72QXbu9mdqGFDXNvvdrFL7diwgZLE4ooowzS2+eH0pTO1CmF8EVOrZFgNapyutSDHqMbRZh9qXSLyTdqseDOfY9TgwSsm4P+OtuDp7YdR5/LjF2/uwyXjCnDbBSOzolDsiVb11dpY/6l3o8kTwIhcY0KX3RJRYk7WsKHzpXdfFUi9adggI9a2Qe75sjo2bKCBxOKKKIMEwhFUt4owaNKTWrX5wzBpVShMoLCjeCqlAuU5RlgNGhxr9qLWKcKoUcFmyI6Fbr82MheTS634y67j2PRZHbYebMTu462448JRmHlafta+MelYG6vFE0CF6ES5zYDyHAP0Gn6YQNRbp2rYEG4vhoLh9iIpLCMYiSASQY8NG+LafsvtKVKXtIgNGyhbsLgiyiCNbj+cYhDF1vSkVm2BEE4rNPONZgpZdGqcXmJFrkmLo00e1Dh9yDfpsmLtMINGhbsuHo2Lx+VjxdZDON7qw++3fIH3DjTinpljUGTNzktHlQoBBRYdxGAER5o8aPIEMDLPiEIL18aioUPusmjsiRo2dCwa29H6OxSRu11qJ3VaGyl68viGDR0JklIhQKVQQMuGDTSIsbgiyhD+UARVrdF0I5FP45JNrbyBCIxaVda+Yc5kSoWAUpseVr0ax5q9qHGK0KuUsBnUWfGmYnyRBX+4fir+urcGr3xUib1VTix8eQ9uOmcYrp5amrUFiV6jRIlaD6cYwmfVTjRZ9RiRa4TVkJ2XPlLmkmUZshxNZuT2IiR6P7r9q/2+2tZ1X5zkMTn6YLfzduz3VcOG9rlIkfa235ARkSTIEro0bBDazylAEHpu2KBiwwaiHrG4IsoQjW4/3P4wihMobpJNrQDAJQYxttAMg4b/LPQXk1aFicUW5Jo0ONLkRU37XKxs6ManUipw3VnluGBMHla+dwif1rjw/M5j2P5lE344ayzGFGRn23ZBEGA3aGDSqtDY5ofDG0R5jgFlOVwbK116U4h0u4/UFSI9PYckRxMaWW4vVgBIUvTxjsvauu4nxb2OTmNCx+VvPY+p635y7IAur7tzT29068+Ajo2yFP2zp4YNKoUAjUoVlyxlwwc+RJmM76KIMoA/FEGlQ4RJm57UyhMIw8DUakAoFAKKre0pVosXNQ4/1IowcoyarHhTU2LT47/mTcK7/2nE//zrKI40efGjdRW4akoJbvra8KxthKJWKlBk0cMbCOOLxjY0eQIYlWdEvjmz18bqayHSeb+Ox/qzEIl+/dU5T1aIRPfrNJ6OMbY/QWoLETn2345nETr6a3f+u2mfCCQI7W2329cpEqIngQCh/bEoQRA6PfbV5W7Rr+P3FxQdjwno/CPWeb+vjhU6PcbL6IgyGYsrogxQ7xLR5g+hNA1zrYDoosFjCowwcv2fAWPQqDChyIJcoxZHm7yodYnINWqzojgRBAGXTSzE9BF2PPf+Uez4sglvVNRi5+EW3DNzDKYPt6d7iAkzalXQa5RweIP4pNqJYqseZXZ97I13x1v+/i5E4ooN9K4Q6VqEAP1XiEQjEQCCDMhfFR0dUlGIKDqfo4dCJFbwACxEiChj8J0UUZqJwQiqHSIs2sTm3yQ/1yoMvUaBogQKO0qOIAgotOhic7GqHSI8gWiKlQ1dsOwGDX4yZxxmjcvHqu2H0dgWwLK/78fFp+XjjgtGZk1nxK4UgoBckxbBsIRqhw/1Ln+nVmapKUR6SkOAFBQiQufEo3sh0rkIQefzsBAhIkoJFldEaVbnir6hLklTauUUgxidb4KJqVXa6NRKjCsyI9ekxZFmD+pcIuwGTdbMfztrRA5Wlljx0v8dx98/rcX2L5qw57gDt10wEpeOL8jaN+walQKlNgPCESmuCAFYiBARUc8yvxcw0SDmC4ZR4xRh0aUntfIFw9CplZxrlQEEQUC+WYup5TaMzjfBEwyj0e1HRJJPfXAG0GuUuOPCUfjdd6ZgVJ4RbYEwnnr3S/z8zX2odYrpHl5SVEpF3MKkCoGT/omIqGcsrojSqM7ph7d94d6+amxLTWpVYtXDrGPr6UyhVSkxttCMqWU2WA1q1LlEeAPhdA+r18YWmvHEtVNw63kjoFEp8Gm1Cz98eS/W7a5COCKle3hERET9isUVUZp4A2FUO32w6hPrErc+BamVVqlEkY2pVSbKNWlxRpkNpxWaIYbCqM+iFEulVOCaM8uwcv6ZmFpuQzAi4YUPj+P+1ypwsL4t3cMjIiLqNyyuiNKk1ilCDEow6RJLrbZ8nmRq5QuhyKqDhalVxtKoFBhdYMLUcjtyjGrUu0V4/NmTYhVZdXj0qtNx/2WnwaxT4ViLDz9Z/wn+tOMwfMHseR1ERES9xeKKKA3a/CHUOkXY9IkVNsmmVmIwAo1KQLGNHQKzgd2owRllNowvMiMYiaDeLWbNJXaCIOCS8QVYfdN0XDKuADKAjZ/WYeHaPfj30ZZ0D4+IiCilWFwRpUGd0w8xFEloXalUpFYOMYhCa7QFOGUHtVKBEXnRFCvfpEVDmx9uMZTuYfWaVa/G/V8/DY9edTqKLDo0e4L41ab/4P+9fQCt3mC6h0dERJQSLK6IBpjbH0Jte6vtRCSbWvlDEaiVAkqthoSen9LLalBjUqkVp5dYEJFl1LpEhLIkxQKAacPs+O/50/DtM0uhEIB/HWrGPS99jM376yHJ2TGnjIiI6ERYXBENsFqHCH8oktAaRilJrXxBFFl0sOizYw0l6k6lVKA8x4ipw2woturQ2OaH05c96Y9OrcSC80biyeumYkyBCd5gBCveO4SfbfgMVQ5fuodHRESUMBZXRAPIJYZiC8QmIhWplVIpoMSm5zo9g4BFp8bpJVZMLrNBEIAapw/BcPakWKPyTfjdd6bgjgtGQqdWYH+tG/e+vBcv/7syq9I4IiKiDiyuiAZQ9M2vnLbUyikGUWjmXKvBRKkQUGrTY+owO8rsBjR7A3B4g5Cz5BI7pULA1VNLsXL+mZg+3I6wJGPtvytx36sV+LzOne7hERER9QmLK6IB4vQFUe/yI8eYntQqEI5AEJhaDVYmrQoTiy04o8wKpVJAjUtEIBxJ97B6rcCiwy+vnIifzB4Hm16NqlYffvr6p1i17VBWLaJMRERDG4srogEgyzJqHCLCERk6tbLPx6dqXasCsxZ2A1OrwUqhEFBs1WPaMBuG5xrg8IXQ4glkTYolCAIuOi0fq246E1+fUAgA+Me+etyzdg92HW5O8+iIiGigZWOjI85oJxoATl8I9W3+tM216piHU8rUakgwaFSYUGRBrlGLo01e1LpE5Bq1CRX26WDWqXHvpWMxc1w+Vr53CLUuP37zjwM4d1QO7r5oNHJN2nQPkYiIEhSRZLjFEJxiEA5fCE5fCE5fEE6x/U9fCE4xBIcvCJcYwv/97FKYEli6Jl2yZ6REWUqWZVQ7fZCk9KVWDl8Q+WZtwpckUvYRBAGFluj8umPNXlQ7RHgCYeQYNVBkSYF9RpkN/z3/TLy6uwqv76nGh0da8UmVC7ecNwJXTCrKmtdBRDTYRSS5U4HUc7HU8bVLDKEveVSLJ4gCs67fxp5qLK6I+pnDF0KDK5C21Kqj61qpnanVUKRTKzGuyIxckxZHmj2xbpWJNFVJB41Kge+dOxwXjsnDivcO4WBDG57efhjbDjZi0awxGJ5rTPcQiYgGpXBEgksMtadL0cLIIbYXS75o8tRRSLX5w30qmAREF5e3GdSwGTSwdftaA5NWCYUCKLHp++sl9ovs+O1KlKVkWUZVa3TdHq0qTamVtz21SrC4o+wnCALyzVqYdSpUtfpQ6fDBEwgj16iFUpEdBfeIPCN+++0z8Pa+Ovx513EcqG/D4lcr8O0zy3DdWeXQqDiFmIjoVEIRKVokxRKlYJek6atCqq2PzYQUAmDRq2E/QbFkM6hhN6hh02tg0atP+fsnFJHgEoNZ83uqA4sron7U4g2iqS29qZWE6Kc+iiz7x4lST6dWYmyhGTlGDY40e1Hv9sOmV8OYJdeyKxUC5p5Rgq+NysXT2w/j/4624tXdVfjgUDMWzhqDyQn8P0JElO2CYQlOX/v8pc7Fki8ER9yleUF4A33rIqsQAJte81Wh1KlA6po6mXWnLpiGguz4jUqUhSQp2iEQQEKfqqdqrlWeSYNczrWiTnJNWph10Xbnla1etAXCyDdlT4qVZ9LioW9MwM7DLfjTjsOocYr42YbPMHtiIW49byRMOv5qI6Ls5g9FYvOUOl+WFzePqT1t8gX7VjCpFELcJXndiiWDOpY2mXUqzm/tI/4GIuonLd4gGtsCCRc2qUitIpKMUjtTK+pOo1JgdIGpPcXyoN4twqrTZE1hIggCzh+ThynlNvx55zG8vb8e73zegH8fa8WdF47CBWPyOMeQiDKKGIzEkiWH7wSX47V/LYb6XjB1Lozsxq8ux7N3KpZsBjVMWhX/fexH2fFblCjLSJKMaocPCgBqZXpSK6cvhFyTBrlGtq2mE7MbNThDZ0ONw4djLT543CHkGbVQJfBzmw4mrQoLZ43BzHH5WPHeIVQ7RDy2+SC2HmjED2aOzqoOU0SUXWRZhhiKdCuWHF3mLnUUVIH2ZVF6S6NUtKdJXyVLdkP3y/FsBg2MGiULpgzB4oqoHzR7A2hqCyAvwfV4kk2twhEJYUlCud2QNZd6UfqolQqMyDPBbtDiaLMH9W4/zFo1LPrsWXD69BIr/njDNKz/uBqv7a7C7uMOLFy7B987dzjmTi7h/wdE1CuyLMMbjHS7DM/RQ7Hk9IUQjPStYNKqFHHFUixZ6lQsdRRQejULpmzE4oooxSJStEOgUiGkL7USQ8gxarjYKvWJ1aDGpFIrcowaHGvxodYlIt+kTejnOB3USgXmnzMMF7S3bf+8zo1n3z+KbQeb8MNLxmBknindQySiNJBlGZ5AOO7Su7j24p0ux3OJQYQifWkqDujVyrh5Sj1dmtdRUOk12bGYOyWOxRVRijV7AmjxBJGfbGpVmlhqFZFkBMMRlOdY+Gk99ZlKqcCwXCNsRg2ONnlR5xJh0qphzaIUqzzHgOXXTMbm/fVYs/MYvmz0YPGrFbhmWhluOKc8oWURiCizSLKMNn+4xxbiji4L2LrEEMJS3womg0YZXxj1kCx1bNOp+W8KfSWtxdWOHTvw+OOP4+OPP0ZdXR02bNiAefPmnfSYnuLRl19+GTfccEPs/rZt27BkyRLs378f5eXl+PnPf44FCxakePRE3YUjEqpafVArFQnNWemcWt1wTqJzrYLIMWnZIZCSYtFFU6w8sxZHmzyocfqQb9JlzXpSCkHAFZOKcc6IHDz7/hH863AL1u+pxr8ON2PhzDGYUm5L9xCJqIuIJKPNH0K3rnhiEA5v/OV4Ln8IkT4WTEatMv5yvK4d89qLJatBzQ9hKGFpLa68Xi+mTJmC2267Dddcc02vj3v++edx+eWXx+7bbLbY10ePHsXcuXNx991346WXXsK7776LO+64A8XFxZgzZ04qh0/UTbMniBZPAIWWxFYT75xaJbJmT0SS4Q9HMN5uyZqGBJS5lAoBpTY9rHo1jjV7UesUoVNFL3/JlnkAuSYtHrxiAv7vaAtWbzuMOpcfP39zHy4ZX4Dbzx+ZVfPKiLJRRJLhFtsLJF+oy6V58R3z3GIIfayXYNaqemwh3nEZnr3TY9lyiTNlt7QWV1dccQWuuOKKPh9ns9lQVFTU42NPP/00Ro4ciSeeeAIAMGHCBHzwwQd48sknWVxRvwpHJFQ5fNCqlAldjpey1MqoQZ6JqRWljkmrwsRiC3JNGhxp8qKmfS5WNn2y+7WRuZhcasVfdh3Hps/qsPVAI3Yfa8X3LxyFi0/Lz5pikSgThCMSXGKohxbiXdqMtxdMfayXYNGp4gqkjo559i5NICx6FkyUeTJ6ztWyZcuwZs0aHDt2LG77woULcccdd2DUqFG4++67ceutt8Z+Me7atQuXXXZZ3P5z5szB4sWLT/g8gUAAgUAgdt/tdqfsNdDQ0dQ+16rIkljr59SkVhLGFZuZWlHKKRQCiq3tKVaLFzUOEWqFAjlGTdYUJgaNCnddPBoXj8vHiq2HcLzVhye2fIH3DjbiBzPHJPz/LtFgEOoomDrPXep0Gd5XyVMQbf5wn84tAHGL1tq6ff1Vm3GrXs35wpTVMrq4ysvLw+jRo+O2Pfroo7jkkktgMBjwzjvv4J577oHH48G9994LAKivr0dhYWHcMYWFhXC73RBFEXp998u1li9fjkceeaT/XggNeqGIhMpWH3QqRdpSK5cYgs2gTrj9O1FvGDQqTCiyINeoxdGm6KWCuSZtVk3oHl9kwZPXT8WGvTV45aNK7Kl0YtHaPbjpa8Nw1ZRSvrGjrCbLMiQZCEvRheS/6pLXec7SV00gOlImT6BvBZNC6CiYTlYsRZMnCwsmGkIyurhatGgRFi1aFLftF7/4RezradOmwev14vHHH48VV4lYunQplixZErvvdrtRXl6e8Plo6GlsC8DhDaIorXOtwhhTaOMlEtTvBEFAoUUXm4tV7RDhCYSRY9RAkSUpllqpwHVnleP80XlYue0QPqtx4X//dQzbvmjCD2eNxZgCtm0frDqKj4gkxwqQzrewJCMiy4hEol9Lcvu2uJvUbVts30j7tvbjpI5ztj9X93N12SZ33S6deN+uY26/nyiFgOhleMbOi9bGr8nUUUiZdSyYiHqS0cVVb3zta1/Dr371KwQCAWi1WhQVFaGhoSFun4aGBlgslh5TKwDQarXQavlpPyUmGI52CDSoVWlLrdxiCFa9JuH270SJ0KmVGFdkRk77XKw6lwi7QQODJnt+tZTa9fj1vEn4538a8L//OoYjTV78aF0FrppSipu+NiyrErlU6Vp8SBLiipDOxUfHG/rUFB89Hxfbt9NxcefsUiR1K1QiqSs+spFKIcCq79w+vEux1KkJhFmnypoPSIgyVfb8BjyBiooK2O32WHE0Y8YMvPXWW3H7bNmyBTNmzEjH8GgIaGzzw+kLotiantRKkmX4QmGMKrBmTZtsGjwEQUCBWQeLTo2qVh8qHT54AmHkGrVZ86m2IAj4+sQinDUiB8+9fwQ7vmzGGxU12Nnetv3M4fa4/VNVfHTdHld8yF2LhxMf17n46Jqy9Lb4iHQ5bihSKgQoBSH6p0KASiFA0f5nj9va91UpFVAIJ9mv4yYIUCkFKBUKKAVAqVREt53geZRdbqoux/W0b0/n0igVWTMvkmgwSGtx5fF4cOjQodj9o0ePoqKiAjk5ORg2bBhWrFiBDRs24N133wUA/P3vf0dDQwPOPfdc6HQ6bNmyBb/5zW/w4x//OHaOu+++GytWrMADDzyA2267DVu3bsVrr72GTZs2Dfjro8EvEI6gulWEQZPYp32pSq1seg3yzUytKH10aiXGFpqRY9TgSLMX9W4/bHo1jNrs+QzPbtDgJ3PGY9a4VqzafhiNbQH88u/7YdaquqUsQ5FCQPQNfh+Lj+hN0WPBEFcctBcf8YWKotfFR0eh0tfio2NfFiBElApp/a23e/duzJo1K3a/Y97TLbfcgjVr1qC5uRmHDx+OPa5Wq7Fy5Urcf//9kGUZY8aMwe9//3t8//vfj+0zcuRIbNq0Cffffz+eeuoplJWV4bnnnmMbduoXjW4/nGJ6UytvMIzTSyxZ1RabBq9ckxbmjhSr1QtPIIw8U/akWABw1ogcrCyx4qX/O46/f1qLtl5O9O9afPRYCAgClMqeiw+l4iTHx1KS7sWHUoEeixeVon1fZXzxoehIQU6akrD4ICJKhCDL8tD8CO4k3G43rFYrXC4XLBZLuodDGcofiuDj4w5Ikgyboe/rSjW1BXDnX3YjLMn4zbcmJ1RcucQQFAIwfYSdxRVlHIc3iCPNHjS1BWDVaWDSZU+K1cHR3na6WwHSQ8rC4oOIKHWiywMEcfbIXJjSfBVEX2qD7PtNR5QhGtx+tPnDKLEmtjbOuo+rkkqtZDnaYndisZmFFWUku1GDM3Q21Dh8ONbig8cdQp5Rm1XrsNkNGtgT+PCEiIiGJhZXRAnwhyKocogwaVUJfVrd1BZIfq6VPwyzToUCLnxKGUytVGBEngl2gxZHmz2od/th1qph0avTPTQiIqKUy56PD4kySL1LhMcfgiXBy5xSk1qFUGbXD8lW0ZR9rAY1JpVaMbHYgrAsodYlIhSR0j0sIiKilGJyRdRHYjCCaocIs1adttSqzR+GSatCIVMryiIqpQLDco2wGTU42r4ulkmrhpUpFhERDRJMroj6qM4lwhOIXpKXiFSkVm1MrSiLWXTRFGtymQ2AjBqnjykWERENCkyuiPrAFwyj2iHCoktfauUJhGHUqlBoSaz9O1EmUCoElNr0sOrVONbsRa1ThE6thE2f2P9bREREmYDJFVEf1DpF+AJhmHWJXcaUbGoFAG5/CKU2PfQaplaU/UxaFSYWWzC5zAqlQkCNS0QgHEn3sIiIiBLC5IqolzyBMGqcIqwJtmVOSWrlD8OgUaEowfbvRJlIoRBQbP0qxapxilArFMgxaphiERFRVmFyRdRLdU4RYlBKeCG7VKRWLjGIUpseBg0/F6HBx6BRYUKxBWeU2aBTK1HrFOEPMcUiIqLswXdoRL3Q5g+h1inClmBXs1TNtdJrlUytaFATBAGFFl0sxap2RBvI5Bg1UDDFIiIaMiKSnO4hJITFFVEv1DpFiKEIcozahI5PTWoVwuh8I4wJJmdE2USnVmJckRk5Jg2OtLdttxs0TG2JiLKYLMuISDLCUtc/JUQkGZIsQxAEyLIMlUIBo1YFRZZ9rsbfUkSn4PaHUOf0w57GuVbeQBh6tQLFNnYIpKFDEAQUmHWw6NSoavWh0uGDJxBGrlELZbb9tiUiGsRkuYeCKSLF7kMABMiQZQFKpQCVInpTKhQwaBXQqTTQqpTQqBRQKxVQKQWoFQqoVULWfaiWXaMlSoNah4hAWEKuKX2plVMMYlSeKeH5XkTZTKdWYmyhGXajBkebvah3+2HTq5niEhH1s0iXZKlzASVJMmRBBmQBCgHRokkQoGwvjkxaDbRqBXQqBdQdRZNCgEqpgFopQKWI/jnYGhfxNxPRSbh8odjlSIlIRWrlC4ahUytRZONcKxra8kzar1KsVi88gTDyTEyxiIj6Kq5gisQnThIkAAIgy1AqFFAqAKUiWhjpNUpoVQro1UpoVUqolEIsZVIphbgCaqhicUV0ArIso8bpQzAiIy/BNaVSkVo5fEGMyDXCkuDaWkSDiUalwOgCE3KMGhxp9qDeLcKq08Ck468zIhraTnlpHgBBAGQASqH9sjylAJWggFargE6tgK5z0dSeLKnaCya1UsEPs3qBv42ITsAlhlDv9iMnjamVGIxAp1JyrhVRF3ajBmfobKhx+HCsxQevO4xco2ZIf1pKRIOT1NEEItLDJXqyjGi5JEBAYpfmqRQCFCyaUobFFVEPZFlGtUNEOCJDp05jaiUGMSwnurgqEcVTKxUYkWeC3aDF0WYP6t1+mLVqWPj/CxFlgc6FUk/zmdBe7yggQKkElIpoMaRRRROmjqRJpVRA3V4wdb5ET6UYfPOZsgGLK6IeOH3R1Cqdc638oQg0SgElVkNCxxMNFVaDGpNKrcgxanC0xYtal4h8kxZqplhENMBO1Wpclk98aZ5Bo4jOZ9Lw0rxsxuKKqAtZllHl8EGW05xa+YIos+thNfBTeKJTUSkVGJZrhM2owdH2dbFMWjVTXyJKiY5L83qazxSR5fYL807ealynVkKtjG813rkhBC/NGxxYXBF10eoNotEdSHtqpVIKKOFcK6I+seiiKVauKdq2vcbpQ4FZxxSLiHp0qlbjPV2ap2wvisy6zvOZlN0uzVMqhEHZapxOjsUVUSeSFJ1rJQPQqtKXWjnFIEqsnGtFlAilQkCZ3QCbQYNjzV7UOkXo1ErY9Gq+ySEaIthqnNKFxRVRJ62+IJraAmntEBgIRyAI0dSKbwSJEmfSqjCx2IJckwZHmqJzsfJM2oQ/OCGi9Dplq3EhemkeIEDRZT6TTtfeBEKlhEal4Hwm6jcsrojaSZKMGocIILqWTiI6UqvJyaRWvhCKrDrYONeKKGkKhYDi9hT4WLMXNU4RaoUCOUYNP7wgyhD93Wqcl+bRQGJxRdSuxRtEY5sfuUZtQsd3Tq3mn12e0DmCYQkAmFoRpZhBo8KEYgtyTVocbYpeKphr0ibctIaITu1kl+ZFZCn2e46txmkwYXFFhOgvgGqHDwoICU98j0utymwJnaPVF0ShRQs7UyuilBMEAYUWXSzFqnaI8ATCyDFqoOAbNKJeSabVuFariBVMbDVOgxWLKyIALZ4AmtoCyDOlN7USAJQytSLqVzq1EuOKzMjpmIvlFJFr1EKvYYpFQ1fXS/MiMluNEyWCxRUNeREpuq5V9NOz9KVWDl8Q+WZtwi3giaj3BEFAgVkHi06NqlYfKh0+tAVCyDVq+ak5DQpye0Eky+hzq/GONMms0/DSPKI+YnFFQ16zJ4AWTxD5aUytQhEJMoBSu56f7BENIJ1aibGFZtiN0XWx6t1+2A1qGDT89TjUdC5GOt9H+zYZcqfHove/+hpA1326nBft+8ntO8idz9PxWNfzCO0bBRmQhfZCqOOBjv/KkDsqpE7X5AlCtAWEIICtxokGEH970JAWjkioavW1X8KQxtTKG0S+SZNwC3giSk6eSftVitXqRZs/jDwTU6yTSWUxkmwhEhsTYkHMV8VJAsVIx85Cez0TvQntrb7bH2vfN3pfiO2naN/Y8ZhCoWj/E1BAEd0uAAohuq8gCJ2+bv8T0U6XnccTPa79ebo9f/z9jiSpYzy8NI9o4LC4oiGt2RNEsyeAIos+oeNTlVpJkFFqN/CXHlEaaVQKjC4wtadYHtS7RVh1Gph0yf+qPFkhAgx8MZLKVCQmJcWI0F5U9K0Y6fg6mWKk835xr6WHc6Cn+1335aVyREMSiysaskIRCZWtXuhUyoQ/nU7VXKs8kxa5RqZWRJkgx6iBWWdDjcOHYy0+uJzB2BvulBUjCRYiQHwx0rmwiC8yvko+okVKp/sdRUcaixEWIkQ0WLG4oiGrqS2AVm8IRRZdwscnm1p1dGIqtXGuFVEmUSsVGJFngt2ghcMXTLgQab/LYoSIaIhgcUVDUjS18kGvTjy1Wr+nOgWpVQi5Jg1yE2ymQUT9y2pQw8p154iIqJfYCoaGpMa2AFxiEFZ9Ym+amtoCeGd/PYDEU6uO1rhldgMnzRMRERENAmktrpYvX46zzz4bZrMZBQUFmDdvHg4ePHjK4z799FNceOGF0Ol0KC8vx2OPPdZtn3Xr1mH8+PHQ6XSYPHky3nrrrf54CZSFguFoh0C9SpXW1MrpCyLHqOFcKyIiIqJBIq3F1fbt27Fw4UJ8+OGH2LJlC0KhEGbPng2v13vCY9xuN2bPno3hw4fj448/xuOPP45ly5bhmWeeie2zc+dOzJ8/H7fffjv27t2LefPmYd68edi3b99AvCzKcI1tfjh9wYQv9UlVahUIR1BmN3AtESIiIqJBQpA7+rZmgKamJhQUFGD79u246KKLetxn9erVeOihh1BfXw+NJvqJ/4MPPog33ngDBw4cAABcf/318Hq92LhxY+y4c889F1OnTsXTTz99ynG43W5YrVa4XC5YLJYUvDLKFIFwBHuOOxCKyLAnuKbU6u2H8dZndZhcasVvvjU5oXO0eAIw6lSYVm5jcUVERESUwfpSG2TUuzqXywUAyMnJiW1bsGABZs6cGbu/a9cuXHTRRbHCCgDmzJmDgwcPwuFwxPa57LLL4s49Z84c7Nq1q8fnDQQCcLvdcTcanBpcfrjEUNrnWgUiEsrsehZWRERERINIxryzkyQJixcvxvnnn49JkybFthcXF2PYsGGx+/X19SgsLIw7tuN+fX39SffpeLyr5cuXw2q1xm7l5Ym9aabM5g9FUOUQYdKqo+vEJCAVc61cYgh2gxp57BBIRERENKhkTCv2hQsXYt++ffjggw/iti9fvrzfn3vp0qVYsmRJ7L7b7WaBNQg1uP1o84dRYk18XatUpFZiKIyxhTaomVoRERERDSoZUVwtWrQIGzduxI4dO1BWVnbSfYuKitDQ0BC3reN+UVHRSffpeLwrrVYLrZYpwmD2VWqlSnjxzVSkVm4xBJtBg3wzf96IiIiIBpu0fnQuyzIWLVqEDRs2YOvWrRg5cuQpj5kxYwZ27NiBUCgU27ZlyxaMGzcOdrs9ts+7774bd9yWLVswY8aM1L4Ayhr1LhEefwgWXWKfJ6QitZJkGWI4jPIcA1MrIiIiokEore/wFi5ciBdffBFr166F2WxGfX096uvrIYpibJ+lS5fi5ptvjt2/8cYbodFocPvtt2P//v149dVX8dRTT8Vd1nfffffh7bffxhNPPIEDBw5g2bJl2L17NxYtWjSgr48ygy8YRpVDhFmrTmtq5RJDsOo0yOdcKyIiIqJBKa3F1erVq+FyuTBz5kwUFxfHbq+++mpsn7q6OlRWVsbuW61WvPPOOzh69CimT5+OH/3oR3j44Ydx5513xvY577zzsHbtWjzzzDOYMmUK1q9fjzfeeCOuUQYNHXVOP7yBMMzpTq2CYZTl6KFRMbUiIiIiGowyap2rTMF1rgYPbyCMj487oFYoYEqwuErFulZOXxAqpYAzh9uhVSkTOgcRERERDbysXeeKKNXqXCJ8gXDChVUqUitZluENhlFm17OwIiIiIhrEWFzRoOUJhFHjFGE1aE698wmkpEOgPwyzTo18c2It4ImIiIgoO7C4okGrzinCF4zApE1vauUJhFFu10OnZmpFRERENJixuKJBqc0fQo1ThF2f/tTKpFOhwMLUioiIiGiwY3FFg1KNQ0QgHIEx7alVCGU2HVMrIiIioiEg4eLq0KFD2Lx5c2xNKjYdpEzhEkOod/lhS3Nq1eYPw6RVodCiT3gcRERERJQ9+lxctbS04LLLLsNpp52Gb3zjG6irqwMA3H777fjRj36U8gES9VWt04dAWIJBk97Uqi0QQolND72GqRURERHRUNDn4ur++++HSqVCZWUlDAZDbPv111+Pt99+O6WDI+orly+aWtnT3CHQG4heklhk5VwrIiIioqGizx/tv/POO9i8eTPKysrito8dOxbHjx9P2cCI+kqWZdQ4fQhGZOQlmBalIrUCAJcYxNhCc8LpGRERERFlnz4nV16vNy6x6tDa2gqtVpuSQRElwiWGUOf2IyfNqZUnEIaBqRURERHRkNPn4urCCy/ECy+8ELsvCAIkScJjjz2GWbNmpXRwRL0lyzKqHSIkSU64M1/qUqsQSmy6hDsVEhEREVF26vO7v8ceewyXXnopdu/ejWAwiAceeAD79+9Ha2sr/vWvf/XHGIlOyeELod6dmrlWk0osScy1CkOvUaDIyg6BRERERENNn5OrSZMm4YsvvsAFF1yAq6++Gl6vF9dccw327t2L0aNH98cYiU4qmlr5ABnQqpJPrW48Z1jCY3GKQZRY9TAxtSIiIiIachJ6B2i1WvHQQw+leixECWn1BtHoDqQ9tfIFw9CplZxrRURERDREJVRc+f1+fPrpp2hsbIQkSXGPXXXVVSkZGFFvSFJ0rpUMQKNKbE3sVKZWI3NNMOvUCZ+DiIiIiLJXn4urt99+GzfffDOam5u7PSYIAiKRSEoGRtQbrb4gGtsCyDWmP7XSKpUosjG1IiIiIhqq+vxR/w9/+ENce+21qKurgyRJcTcWVjSQJElGdasPCgBqZZpTK18IRVYdLEytiIiIiIasPr8jbWhowJIlS1BYWNgf4yHqtWZvAE2eAOxpTq3EYAQalYBiGzsEEhEREQ1lfS6uvvOd72Dbtm39MBSi3otIMmocIhSCkHBq1exJTWrlEIMotOpg1TO1IiIiIhrK+jznasWKFbj22mvx/vvvY/LkyVCr499Q3nvvvSkbHNGJtHgCaGoLIM+kTfgc6z9OPrXyhyJQKwWUWg0Jj4OIiIiIBoc+F1cvv/wy3nnnHeh0Omzbtg2CIMQeEwSBxRX1u4gko8rhg0qhSCq12pyK1MoXRJldD4ue61oRERERDXV9fkf40EMP4ZFHHsGDDz4IhSKxN7ZEyWj2BNDcFkCBOfHOfKlKrZRKASU2fdyHDEREREQ0NPW5OgoGg7j++utZWFFahCMSKlt90KqUUKU5tXKKQRSaOdeKiIiIiKL6/O70lltuwauvvtofYyE6pSZPAC2eAGyGJDoEpiC1CoQjEASmVkRERET0lT5fFhiJRPDYY49h8+bNOOOMM7o1tPj973+fssERdRaKSKhq9UGnUkKpSKygSVlq5QuhwKKF3cDUioiIiIii+lxcffbZZ5g2bRoAYN++fXGP8RN86k9NbQG0ekMosqR3rlUwLAEASplaEREREVEnfS6u3nvvvf4YB9FJBcPRuVZ6dfpTK4cviHyzFjlJLF5MRERERIMPu1JQVmjyBOASg0k1j0hFahWKtKdWdqZWRERERBSvV8nVNddcgzVr1sBiseCaa6456b5//etfUzIwog6BcARVLT7o1ar0p1be9tQqiYYaRERERDQ49aq4slqtsU/prVZrvw6IqKtGtx9OMYhiqz7hc6QqtZIAlNj0UCRY5BERERHR4NWr4ur555/Ho48+ih//+Md4/vnn+3tMRDH+UARVrSKMGhUUCV6Gl8q5VnkmDXI514qIiIiIetDrOVePPPIIPB5Pf46FqJtGtx8uMQRLBsy1ikgySu1MrYiIiIioZ70urmRZ7s9xEHXjD0VQ5RBh1qnTnlo5fSHkmjTINWoTPgcRERERDW596haY6u5oy5cvx9lnnw2z2YyCggLMmzcPBw8ePOkxfr8fCxYswOTJk6FSqTBv3rwe99u2bRvOPPNMaLVajBkzBmvWrEnp2Kn/Nbj9cPtDsOj6vGJATCpSq3BEQliSUG43JNxQg4iIiIgGvz4VV6eddhpycnJOeuuL7du3Y+HChfjwww+xZcsWhEIhzJ49G16v94THRCIR6PV63Hvvvbjssst63Ofo0aOYO3cuZs2ahYqKCixevBh33HEHNm/e3KfxUfqIwQiqWn0wa9UJF/UpS63EEHKMGuSamFoRERER0Yn1KRJ45JFHUtot8O233467v2bNGhQUFODjjz/GRRdd1OMxRqMRq1evBgD861//gtPp7LbP008/jZEjR+KJJ54AAEyYMAEffPABnnzyScyZMydl46f+U+cS0eYPo9SW3g6BEUlGMBxBeY6FqRURERERnVSfiqsbbrgBBQUF/TUWuFwuAIhLwBYsWIBjx45h27ZtvT7Prl27uqVac+bMweLFi3vcPxAIIBAIxO673e7eD5pSzhcMo8YpwqrPgNTKF0SOScsOgURERER0Sr2+LDDV8626kiQJixcvxvnnn49JkybFthcXF2PYsL69Oa6vr0dhYWHctsLCQrjdboii2G3/5cuXw2q1xm7l5eWJvQhKiTqnH95AGCZteudaRSQZ/nAE5XYDVMo+XUFLRERERENQr9+99ne3wIULF2Lfvn344IMP4rYvX768X58XAJYuXYolS5bE7rvdbhZYaeINtKdWOk1mpFZGDfJMTK2IiIiI6NR6XVxJktRvg1i0aBE2btyIHTt2oKysLOnzFRUVoaGhIW5bQ0MDLBYL9Pruc3i0Wi20WjYryAR1LhG+QBildkPC50hdaiVhXLGZqRURERER9Upa3zXKsoxFixZhw4YN2Lp1K0aOHJmS886YMQPvvvtu3LYtW7ZgxowZKTk/9Q9PIIwahwirIfGkKFWplUsMwWZQI48dAomIiIiol9JaXC1cuBAvvvgi1q5dC7PZjPr6etTX18fNi1q6dCluvvnmuOM+//xzVFRUoLW1FS6XCxUVFaioqIg9fvfdd+PIkSN44IEHcODAAaxatQqvvfYa7r///oF6aZSAWocIMRTJkLlWYZTnGKBmakVEREREvZT4u9gU6GipPnPmzLjtzz//PBYsWAAAqKurQ2VlZdzj3/jGN3D8+PHY/WnTpgH4al7YyJEjsWnTJtx///146qmnUFZWhueee45t2DOY2x9CrUuEPQNSK7cYglWvQT5TKyIiIiLqg7QWV71pkrFmzZpu244dO3bK42bOnIm9e/cmMCpKh1qHiEA4glxj4gVNKlIrSZbhC4UxqsAKjYqpFRERERH1Ht89Utq5xBDqXX7Y9KlJreYnmVrZ9Brkm5laEREREVHfsLiitKtx+hAISzBokp9rdXqJBZNLrQmdQ5JleINhlNp10KqUCY+FiIiIiIYmFleUVi5fNLVK5VyrRNfHavOHYdGpUWDRJTwWIiIiIhq6WFxR2siyjGqHD+GIDL0m8aQoFamVLMvwBMIos+uZWhERERFRQlhcUdo4fSHUt2VGauX2h2HWqZhaEREREVHCWFxRWsiyjBqnCEmSoVNnQmoVQpldn9RYiIiIiGhoY3FFaeHwhVDvTi61aknhXCuTVoVCplZERERElAQWVzTgOuZaQUZS85tSlVq1MbUiIiIiohRgcUUDrtUbRKM7kHRq9XYKUitPIAyjVoVCiz7hsRARERERASyuaIBJkoxqhwgA0KgS//FLRWoFAG5/CKU2fVLdComIiIiIABZXNMBavEE0tgWQY8yA1MofhkGjQpGVc62IiIiIKHksrmjASJKMGocPCgBqZfpTK5cYRKlND4NGlfA5iIiIiIg6sLiiAdPsDaDJE4A9E1KrQBh6rZKpFRERERGlDIsrGhARSUZVqw8KQciQ1Co618qoZWpFRERERKnB4ooGRIsngGZPEDkZ0CHQGwhDr1agyMoOgURERESUOiyuqN+FIxIqW33QKBVQZUBq5RSDKLbqYWJqRUREREQpxOKK+l2zJ4gWT2asa+ULhqFTK1Fk41wrIiIiIkotFlfUr8IRCVUOH7QqJZSKxAoiIHWplcMXRJFFB4tOnfA5iIiIiIh6wuKK+lWTJ4BWbxC2TEmtVEoU2zjXioiIiIhSj8UV9ZtQREJVqw9apSIjUiunL4RCqxZWPVMrIiIiIko9FlfUb5raMie18oci0KgElFgNCY+FiIiIiOhkWFxRvwiGox0CDWpVRqRWDl8QhRYdrAamVkRERETUP1hcUb9obPPD6QsmVcykMrVSKQWUcK4VEREREfUjFleUcoFwBNWtIgwaFRQJFkRAate1KjTrONeKiIiIiPoViytKuUa3H04xmFQxk6rUKhCOQBCiqVWi5yAiIiIi6g0WV5RS/lAEVa0ijJmSWvlCKLLoYONcKyIiIiLqZyyuKKUa3X64/WFYMiC1CoYlAGBqRUREREQDgsUVpYw/FEGlQ4RJmxmpVasviAKLFnamVkREREQ0AFhcUcrUu0R4/CFYdKqEz5HK1EoAUMrUioiIiIgGCIsrSgkxGEG1Q4RZq06qmEnlulb5Zi3sSSxgTERERETUFyyuKCXqXCI8gTDMGZBahSISZACldj0USSxgTERERETUFyyuKGm+YBg1ThEWXYakVt4g8k0a5DC1IiIiIqIBxOKKklbn9MPrD8OsS3+HwFBEggQZpXYDUysiIiIiGlAsrigp3kAY1U4frEmmRKmca5Vn0iLXyNSKiIiIiAZWWour5cuX4+yzz4bZbEZBQQHmzZuHgwcPnvSYbdu24eqrr0ZxcTGMRiOmTp2Kl156qdt+69atw/jx46HT6TB58mS89dZb/fUyhrRapwgxKMGkTc1cq/lJpFbhiISIJKPUxrlWRERERDTw0lpcbd++HQsXLsSHH36ILVu2IBQKYfbs2fB6vSc8ZufOnTjjjDPw+uuv49NPP8Wtt96Km2++GRs3bozbZ/78+bj99tuxd+9ezJs3D/PmzcO+ffsG4mUNGW3+EGqdImxJLBgMxKdWZySVWoWQa9Ig16RNajxERERERIkQZFmW0z2IDk1NTSgoKMD27dtx0UUX9fq4uXPnorCwEP/7v/8LALj++uvh9XrjCq5zzz0XU6dOxdNPP33K87ndblitVrhcLlgslr6/kCHii/o2HGn2oNRmSPgcLZ4A7nhhN8KSjP+aNwlTymwJnSciyWhs82NKuQ2FFl3C4yEiIiIi6qwvtUFGzblyuVwAgJycnNi2BQsWYObMmac8rvMxu3btwmWXXRa3z5w5c7Br164ejw8EAnC73XE3Ojm3P4Ral5j0OlKpSq2cviByjBrkMbUiIiIiojTJmOJKkiQsXrwY559/PiZNmhTbXlxcjGHDhp3wuNdeew0fffQRbr311ti2+vp6FBYWxu1XWFiI+vr6Hs+xfPlyWK3W2K28vDzJVzP41TpE+EMRGDTJzbXa/Hnyc60ikoxAOIIyuwFKzrUiIiIiojRJ/J1xii1cuBD79u3DBx98ELd9+fLlJzzmvffew6233opnn30Wp59+esLPvXTpUixZsiR23+12s8A6CZcYQp1LRI4huZRo/Z5qhCIpSq1MWuSZ2CGQiIiIiNInI4qrRYsWYePGjdixYwfKysp6dcz27dvxzW9+E08++SRuvvnmuMeKiorQ0NAQt62hoQFFRUU9nkur1UKr5eVkvSHLMmqcPgQjMvI0yoTP0+IJYHMKOgRGJBmBiIRxdj1UyowJYomIiIhoCErru1FZlrFo0SJs2LABW7duxciRI3t13LZt2zB37lz89re/xZ133tnt8RkzZuDdd9+N27ZlyxbMmDEjJeMeylxiCPUuP3KSnWuVotTKJYZgN6g514qIiIiI0i6tydXChQuxdu1avPnmmzCbzbE5UVarFXq9HkD0kr2amhq88MILAKKXAl555ZW477778O1vfzt2jEajiTW1uO+++3DxxRfjiSeewNy5c/HKK69g9+7deOaZZ9LwKgcPWZZR4xARjsjQqTMjtRJDYYwttEHN1IqIiIiI0iyt70hXr14Nl8uFmTNnori4OHZ79dVXY/vU1dWhsrIydv/Pf/4zfD4fli9fHnfMNddcE9vnvPPOw9q1a/HMM89gypQpWL9+Pd544424RhnUd05fCPVt/uQ7BKYotXKLIdgMGuSbmVoRERERUfpl1DpXmYLrXHUnyzL21bpQ7/KjyKJP+DwtngC+/5fdCEWSW9dKkmXUu0VMKrWh1Jb4eIiIiIiITiZr17mizOXwhdDgCmRMauUSQ7DqNMjnXCsiIiIiyhAsruiUJElGVasPMgCtKv1zrSRZhhgMoyxHD42KP8JERERElBn4zpROqdUXRFNbIGM6BLrFECx6NedaEREREVFGYXFFJyVJ0Q6BAJJKiVKVWsmyDG8wjDK7PqkUjYiIiIgo1Vhc0Um1eINobAsgx5ghqZU/DLNOjXyzLqnxEBERERGlGosrOqGIJKPa4YMCSGodqVSmVp5AGOV2fVLrbBERERER9QcWV3RCLd4AmtoCsGdQamXSqVBgYWpFRERERJmHxRX1KNLeIVClUGRQahVCmU3H1IqIiIiIMhKLK+pRsyeAFk8QdoM6qfOkKrVq84dh0qpQmMQCxkRERERE/YnFFXUTjkioavVBrVRAlSGpVVsghBKbHnoNUysiIiIiykwsrqibZk8QLZ4A7BmyrpU3EIFRq0KRlXOtiIiIiChzsbiiOOGIhCqHD1qVEkpFYkkTkLrUCgBcYhAlVj0MGlXC5yAiIiIi6m8srihOU/tcK1uGpFaeQBgGplZERERElAVYXFFMKCKhstUHvTqTUqsQSmw6GLVMrYiIiIgos7G4opjGtgAc3iCs+szoEOgNhKHXKFBkZYdAIiIiIsp8LK4IABAMRzsEGtSqjEmtnO1zrUxMrYiIiIgoC7C4IgBAY5sfTl8Q1gxZ18oXDEOnVnKuFRERERFlDRZXhEA4gupWEQaNCookkqb+SK3MuuSKPSIiIiKigcLiitDo9sMpZs5cK18wDK1SiSIbUysiIiIiyh4sroY4fyiCylYRJq06c1IrXwhFVh0sTK2IiIiIKIuwuBriGtx+tPnDsOiSaxqRqtRKDEagUQkotrFDIBERERFlFxZXQ5g/FEGVQ4RJq0oqaUplauUQgyi06pK+RJGIiIiIaKCxuBrC6l0iPP5QylKricXJpVb+UARqpYBSqyGp8RARERERpQOLqyFKDEZQ7RBh1qpTllrdmGxq5QuiyKKDRc91rYiIiIgo+7C4GqLqXCI8gTDMqUytypJLrZRKASU2fVIFGhERERFRurC4GoJ8wTCqHSKsOk3GpFZOMYhCM+daEREREVH2YnE1BNU6RfgCYZiSTK1eT1FqFQhHIAhMrYiIiIgou7G4GmI8gTBqnCKsBk1S52nxBPB2qlIrXwgFZi3sBqZWRERERJS9WFwNMXVOEb5gBCZtZqRWwbAEAChlakVEREREWY7F1RDS5g+h1inCrs+c1KrVF0S+WYscY3JjIiIiIiJKNxZXQ0itU4QYisCYIalVKCJBAFBqZ2pFRERERNmPxdUQ4faHUOf0w55Bc60c3vbUKskxERERERFlAhZXQ0StQ0QgLMGgyZzUSgJQYtNDoWBqRURERETZj8XVEODyhVDnEjMrtfIFkWfSIJdzrYiIiIhokEhrcbV8+XKcffbZMJvNKCgowLx583Dw4MGTHnPw4EHMmjULhYWF0Ol0GDVqFH7+858jFArF7bdu3TqMHz8eOp0OkydPxltvvdWfLyVjybKMGqcPwYgMvUaZ1LlSmVpFJBmldqZWRERERDR4pLW42r59OxYuXIgPP/wQW7ZsQSgUwuzZs+H1ek94jFqtxs0334x33nkHBw8exB/+8Ac8++yz+OUvfxnbZ+fOnZg/fz5uv/127N27F/PmzcO8efOwb9++gXhZGcUlhlDv9ic9rynV61rlmjTINWqTGhMRERERUSYRZFmW0z2IDk1NTSgoKMD27dtx0UUX9fq4JUuW4KOPPsL7778PALj++uvh9XqxcePG2D7nnnsupk6diqeffvqU53O73bBarXC5XLBYLH1/IRlClmXsr3Wj1imi2KpP6lzP7DiMv39ah4nFFvy/ayYnXFyFIxKaPAFMLbehwKJLakxERERERP2tL7VBRs25crlcAICcnJzYtgULFmDmzJknPObQoUN4++23cfHFF8e27dq1C5dddlncfnPmzMGuXbt6PEcgEIDb7Y67DQZOXzS1yqS5Vk4xhByjBrkmplZERERENLhkTHElSRIWL16M888/H5MmTYptLy4uxrBhw7rtf95550Gn02Hs2LG48MIL8eijj8Yeq6+vR2FhYdz+hYWFqK+v7/G5ly9fDqvVGruVl5en6FWljyzLqHL4ABnQqTNjrlVEkhEMR1CeY4CSc62IiIiIaJDJmOJq4cKF2LdvH1555ZW47cuXL8cLL7zQbf9XX30Ve/bswdq1a7Fp0yb87ne/S/i5ly5dCpfLFbtVVVUlfK5M0eoNotEdgM2gTuo8qZ1rFUSOScsOgUREREQ0KCW36FGKLFq0CBs3bsSOHTtQVlbWq2M60qWJEyciEongzjvvxI9+9CMolUoUFRWhoaEhbv+GhgYUFRX1eC6tVgutdvBcpiZJMqodImQAWlXmpFb+cATj7RaolBlT0xMRERERpUxa3+XKsoxFixZhw4YN2Lp1K0aOHJnQeSRJQigUgiRJAIAZM2bg3Xffjdtny5YtmDFjRtJjzgatviCa2gIZ1iEwiByjBnkmplZERERENDilNblauHAh1q5dizfffBNmszk2J8pqtUKvj3a3W7p0KWpqamKXBr700ktQq9WYPHkytFotdu/ejaVLl+L666+HWh29BO6+++7DxRdfjCeeeAJz587FK6+8gt27d+OZZ55JzwsdQJIko8YhAgA0quRq59SmVhLGFZuZWhERERHRoJXW4mr16tUA0K0b4PPPP48FCxYAAOrq6lBZWRl7TKVS4be//S2++OILyLKM4cOHY9GiRbj//vtj+5x33nlYu3Ytfv7zn+NnP/sZxo4dizfeeCOuUcZg1eINorHNn/QaUqlMrVxiCDaDGnnsEEhEREREg1hGrXOVKbJ1nauIJOPTaidavUEUmJNbQypV61pFJBkNbSImldpQakturS0iIiIiooGWtetcUXJaPAE0tQUyal0rtxiCVa9BPlMrIiIiIhrkWFwNEhEpuq6VSqGAOsl5TamaayXJMnyhMMrs+qTnfxERERERZTq+4x0kmj0BtHiCsGfQulZuMQSbXoN8M1MrIiIiIhr8WFwNAuGIhKpWH9RKRdLd+FKZWnmDYZTadUmvtUVERERElA1YXA0CzZ4gmj2ZNdeqzR+GRadGgSW5xhpERERERNmCxVWWC0UkVLZ6oVMpoVQkXgwBqUutZFmGJxCda8XUioiIiIiGChZXWa6pLYBWbwi2DEqt3P4wzDoVUysiIiIiGlJYXGWxYFhCZasPenVmpVZtgRDK7Hro1EytiIiIiGjoYHGVxZo8AbjEIKz6zOkQ2OYPw6xVoZCpFRERERENMSyuslQwHO0QqFepmFoREREREWUAFldZqsHth9MXhDWF61rNTzK18gTCMGpVKLTokxoTEREREVE2YnGVhQLhCKodPhg1KiiSKIaAr1KrCcUWTEkitQIAtz+EUpseeg1TKyIiIiIaelhcZaEGlx8uMQRLknOtWr1BbN7fACD5uVYefxgGjQpFVs61IiIiIqKhicVVlvGHIqhyiDBp1SlJrYIRKSWplUsMotSmh0GjSuo8RERERETZisVVlmlw+9HmD8OiS66IafUG8fa+1HQI9ATC0GuVTK2IiIiIaEhjcZVFxGBHaqVKqhgCUp1aRedaGbVMrYiIiIho6GJxlUXqXSI8/lBGpVbeQBh6tQJFVnYIJCIiIqKhjcVVlvAFw6h2irDo1BmVWjnFIIqtepiYWhERERHREMfiKkvUOf3wBsJJFzGpTK18wTB0aiWKbJxrRURERETE4ioLeANh1DhFWHWajEqtHL4giiw6WHTJtYQnIiIiIhoMWFxlgVZvMJpaZdBcK18wDJ1KiWIb51oREREREQEsrrKCJMtJr2kFpHiulS+EQqsW1iQXMiYiIiIiGixYXA0RqUyt/KEINCoBJVZDqoZHRERERJT1WFwNEamea1Vo0cFqYGpFRERERNSBxdUQkOrUSqUUUMK5VkREREREcVhcDQGpXteq0KzjXCsiIiIioi5YXA1yqUytAuEIBCGaWiXbEp6IiIiIaLBhcTXIpbpDYJFFBxvnWhERERERdcPiahBLZWoVDEsAwNSKiIiIiOgEWFwNYqlMrVp9QRRYtLAztSIiIiIi6hGLq0Eq1amVAKCUqRURERER0QmxuBqkUr2uVb5ZC7tBk6LRERERERENPiyuBqFUplahiAQZQKldD4WCqRURERER0Ymktbhavnw5zj77bJjNZhQUFGDevHk4ePBgr48/dOgQzGYzbDZbt8fWrVuH8ePHQ6fTYfLkyXjrrbdSOPLMltLUyhtEvkmDHKZWREREREQnldbiavv27Vi4cCE+/PBDbNmyBaFQCLNnz4bX6z3lsaFQCPPnz8eFF17Y7bGdO3di/vz5uP3227F3717MmzcP8+bNw759+/rjZWSUVKdWEmSU2g1MrYiIiIiITkGQZVlO9yA6NDU1oaCgANu3b8dFF1100n1/+tOfora2FpdeeikWL14Mp9MZe+z666+H1+vFxo0bY9vOPfdcTJ06FU8//fQpx+F2u2G1WuFyuWCxWBJ+PalyvMWLA3VtKLHpT7nvs+8fwd8+qcWEYgt+e83kpIqrxjY/cowaTCmzsbgiIiIioiGpL7VBRs25crlcAICcnJzYtgULFmDmzJlx+23duhXr1q3DypUrezzPrl27cNlll8VtmzNnDnbt2tXj/oFAAG63O+6WjVKZWoUjEiKSjFIb51oREREREfVGxhRXkiRh8eLFOP/88zFp0qTY9uLiYgwbNix2v6WlBQsWLMCaNWtOWDnW19ejsLAwblthYSHq6+t73H/58uWwWq2xW3l5eQpe0cBLbYfAEHJNGuSatCkaHRERERHR4KZK9wA6LFy4EPv27cMHH3wQt3358uVx97///e/jxhtvPOVlg32xdOlSLFmyJHbf7XZnXYGV6tQqLEkosxugZGpFRERERNQrGZFcLVq0CBs3bsR7772HsrKyk+67detW/O53v4NKpYJKpcLtt98Ol8sFlUqF//3f/wUAFBUVoaGhIe64hoYGFBUV9XhOrVYLi8USd8s2qUytnGIIOUYN8phaERERERH1WlqTK1mW8cMf/hAbNmzAtm3bMHLkyFMes2vXLkQikdj9N998E7/97W+xc+dOlJaWAgBmzJiBd999F4sXL47tt2XLFsyYMSPlryETpDK1ikgyguEIyuwWplZERERERH2Q1uJq4cKFWLt2Ld58802YzebYnCir1Qq9PtoZb+nSpaipqcELL7wAAJgwYULcOXbv3g2FQhE3T+u+++7DxRdfjCeeeAJz587FK6+8gt27d+OZZ54ZoFc2sFKaWvmCyDFpkWfiulZERERERH2R1ssCV69eDZfLhZkzZ6K4uDh2e/XVV2P71NXVobKysk/nPe+887B27Vo888wzmDJlCtavX4833ngjrgAbLFKdWgUiEsrseqiUGXHFKBERERFR1sioda4yRTatc5XKda1avUHoNQpMG2aHmsUVEREREVH2rnNFfdM5tZp/dnnSqZUYCqPMbmBhRURERESUAL6LzmKxuVZFZkwttyV1LrcYgs2gQb6ZHQKJiIiIiBLB4ipLxaVWSc61kmQZYjiM8hymVkREREREieI76SyVytTKJYZg1WmQz3WtiIiIiIgSxuIqC6U8tQqGUZajh0bFHwciIiIiokTx3XQWSvVcK4tezblWRERERERJYnGVZVKZWsmyDG8wjDK7HlqVMlVDJCIiIiIaklhcZZmUplb+MMw6NfLNutQMjoiIiIhoCGNxlUVSnVp5AmGU2/XQqZlaEREREREli8VVFkl1amXSqVBgYWpFRERERJQKLK6yhMsXSnFqFUKZTcfUioiIiIgoRVhcZYnNn9enLLVq84dh0qpQaNGnZnBERERERMTi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" }, "metadata": {}, "output_type": "display_data" } ], "execution_count": 68 } ], "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 }