Skip to content

Instantly share code, notes, and snippets.

@cavedave
Created May 26, 2025 18:26
Show Gist options
  • Save cavedave/d015246a66d28ff57c83663d9047c186 to your computer and use it in GitHub Desktop.
Save cavedave/d015246a66d28ff57c83663d9047c186 to your computer and use it in GitHub Desktop.
NationalGallery.ipynb
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"provenance": [],
"authorship_tag": "ABX9TyOTswxS/+VraPvSsH2VFlOX",
"include_colab_link": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"language_info": {
"name": "python"
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "view-in-github",
"colab_type": "text"
},
"source": [
"<a href=\"https://colab.research.google.com/gist/cavedave/d015246a66d28ff57c83663d9047c186/nationalgallery.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "markdown",
"source": [
"## National Gallery"
],
"metadata": {
"id": "3Au6aUFKqm6B"
}
},
{
"cell_type": "markdown",
"source": [
"national gallery visualisations https://www.nga.gov/artworks/free-images-and-open-access#a-section-header-p102746\n",
"\n",
"data from https://github.com/NationalGalleryOfArt/opendata/tree/main/data\n",
"\n",
"inspired and some copied from https://fivethirtyeight.com/features/a-nerds-guide-to-the-2229-paintings-at-moma/"
],
"metadata": {
"id": "WzRmBlt0qp3W"
}
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "mnFul7WOqjBT",
"outputId": "b8098c5e-4ce4-42fc-e829-fff17bfe02d6"
},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Requirement already satisfied: pandas in /usr/local/lib/python3.11/dist-packages (2.2.2)\n",
"Requirement already satisfied: numpy>=1.23.2 in /usr/local/lib/python3.11/dist-packages (from pandas) (2.0.2)\n",
"Requirement already satisfied: python-dateutil>=2.8.2 in /usr/local/lib/python3.11/dist-packages (from pandas) (2.9.0.post0)\n",
"Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.11/dist-packages (from pandas) (2025.2)\n",
"Requirement already satisfied: tzdata>=2022.7 in /usr/local/lib/python3.11/dist-packages (from pandas) (2025.2)\n",
"Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.11/dist-packages (from python-dateutil>=2.8.2->pandas) (1.17.0)\n"
]
},
{
"output_type": "stream",
"name": "stderr",
"text": [
"<ipython-input-3-c9715603a779>:8: DtypeWarning: Columns (23,29) have mixed types. Specify dtype option on import or set low_memory=False.\n",
" df = pd.read_csv(url)\n"
]
},
{
"output_type": "stream",
"name": "stdout",
"text": [
" objectid accessioned accessionnum locationid \\\n",
"0 0 1 1937.1.2.c NaN \n",
"1 1 1 1937.1.3 NaN \n",
"2 4 1 1937.1.4.c 8198.0 \n",
"3 17 1 1937.1.15 8207.0 \n",
"4 18 1 1937.1.16 8207.0 \n",
"\n",
" title displaydate \\\n",
"0 Saint James Major c. 1310 \n",
"1 Saint Paul and a Group of Worshippers 1333 \n",
"2 Saint Bernard and Saint Catherine of Alexandri... shortly before 1387 \n",
"3 Matteo Olivieri (?) 1430s \n",
"4 The Annunciation c. 1423/1424 \n",
"\n",
" beginyear endyear visualbrowsertimespan \\\n",
"0 1310.0 1310.0 1300 to 1400 \n",
"1 1333.0 1333.0 1300 to 1400 \n",
"2 1387.0 1387.0 1300 to 1400 \n",
"3 1430.0 1440.0 1401 to 1500 \n",
"4 1383.0 1435.0 1300 to 1400 \n",
"\n",
" medium ... parentid isvirtual \\\n",
"0 tempera on panel ... 34.0 0 \n",
"1 tempera on panel ... NaN 0 \n",
"2 tempera on poplar panel ... 206122.0 0 \n",
"3 tempera (and oil?) on panel transferred to canvas ... NaN 0 \n",
"4 tempera (and possibly oil glazes) on panel ... NaN 0 \n",
"\n",
" departmentabbr portfolio series volume watermarks \\\n",
"0 CIS-R NaN NaN NaN NaN \n",
"1 CIS-R NaN NaN NaN NaN \n",
"2 CIS-R NaN NaN NaN NaN \n",
"3 CIS-R NaN NaN NaN NaN \n",
"4 CIS-R NaN NaN NaN NaN \n",
"\n",
" lastdetectedmodification wikidataid customprinturl \n",
"0 2023-05-09 17:01:03.48-04 Q20172973 NaN \n",
"1 2024-02-12 16:33:23.167-05 Q20173083 NaN \n",
"2 2024-03-08 14:32:09.57-05 Q20173299 NaN \n",
"3 2024-02-02 22:01:49.753-05 Q20173485 NaN \n",
"4 2024-01-26 22:01:48.797-05 Q3618180 NaN \n",
"\n",
"[5 rows x 30 columns]\n"
]
}
],
"source": [
"!pip install pandas\n",
"\n",
"import pandas as pd\n",
"\n",
"url = 'https://raw.githubusercontent.com/NationalGalleryOfArt/opendata/main/data/objects.csv'\n",
"df = pd.read_csv(url)\n",
"\n",
"# Display the first few rows to verify\n",
"print(df.head())"
]
},
{
"cell_type": "code",
"source": [
"\n",
"\n",
"df.to_csv('nga_objects.csv', index=False)"
],
"metadata": {
"id": "Sb7Gt7NWmkbA"
},
"execution_count": 20,
"outputs": []
},
{
"cell_type": "code",
"source": [
"\n",
"\n",
"print(df.columns.tolist())"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "LecIEgGVr-J8",
"outputId": "947a9293-376f-470d-dd76-bffdf7ddb561"
},
"execution_count": 4,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"['objectid', 'accessioned', 'accessionnum', 'locationid', 'title', 'displaydate', 'beginyear', 'endyear', 'visualbrowsertimespan', 'medium', 'dimensions', 'inscription', 'markings', 'attributioninverted', 'attribution', 'provenancetext', 'creditline', 'classification', 'subclassification', 'visualbrowserclassification', 'parentid', 'isvirtual', 'departmentabbr', 'portfolio', 'series', 'volume', 'watermarks', 'lastdetectedmodification', 'wikidataid', 'customprinturl']\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"\n",
"print(df['dimensions'].head(10))"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "nFyRx69PsOyw",
"outputId": "06f59253-18d0-4622-d0c1-a5d342b9a179"
},
"execution_count": 5,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"0 painted surface (top of gilding): 62.2 × 34.8 ...\n",
"1 painted surface: 224.8 × 77 cm (88 1/2 × 30 5/...\n",
"2 overall: 194.6 × 80 cm (76 5/8 × 31 1/2 in.)\n",
"3 overall: 48 x 34.1 cm (18 7/8 x 13 7/16 in.)\\r...\n",
"4 overall: 148.8 × 115.1 cm (58 9/16 × 45 5/16 i...\n",
"5 painted surface: 52 × 36.6 cm (20 1/2 × 14 7/1...\n",
"6 left panel: 95 × 30.1 cm (37 3/8 × 11 7/8 in.)...\n",
"7 middle panel: 101.5 × 56.5 cm (39 15/16 × 22 1...\n",
"8 overall: 33 x 24.8 cm (13 x 9 3/4 in.)\\r\\nfram...\n",
"9 overall: 27.7 x 58 cm (10 7/8 x 22 13/16 in.)\\...\n",
"Name: dimensions, dtype: object\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"\n",
"print(df['classification'].head())\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "0lS_LzmdtJlc",
"outputId": "0d464ccf-cf69-434b-e73d-d505fc304c11"
},
"execution_count": 6,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"0 Painting\n",
"1 Painting\n",
"2 Painting\n",
"3 Painting\n",
"4 Painting\n",
"Name: classification, dtype: object\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"\n",
"unique_classifications = df['classification'].unique()\n",
"unique_classifications\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "oekM-xHPtRC0",
"outputId": "5c49a8ca-9020-4d92-d7d2-6e1f70312466"
},
"execution_count": 7,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array(['Painting', 'Print', 'Sculpture', 'Portfolio', 'Drawing',\n",
" 'Index of American Design', 'Volume', 'Photograph',\n",
" 'Technical Material', 'Decorative Art', 'Time-Based Media Art',\n",
" '(not assigned)'], dtype=object)"
]
},
"metadata": {},
"execution_count": 7
}
]
},
{
"cell_type": "code",
"source": [
"\n",
"\n",
"pd.set_option('display.max_colwidth', None)\n",
"print(df['dimensions'].head(3))"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "TN0wIrn5sgWM",
"outputId": "ce0035c2-a746-4538-cce4-6b107b5fa80e"
},
"execution_count": 8,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"0 painted surface (top of gilding): 62.2 × 34.8 cm (24 1/2 × 13 11/16 in.)\\r\\npainted surface (including painted border): 64.8 × 34.8 cm (25 1/2 × 13 11/16 in.)\\r\\noverall: 66.7 × 36.7 × 1.2 cm (26 1/4 × 14 7/16 × 1/2 in.)\n",
"1 painted surface: 224.8 × 77 cm (88 1/2 × 30 5/16 in.)\\r\\noverall: 233.53 × 88.8 × 5.3 cm (91 15/16 × 34 15/16 × 2 1/16 in.)\n",
"2 overall: 194.6 × 80 cm (76 5/8 × 31 1/2 in.)\n",
"Name: dimensions, dtype: object\n"
]
}
]
},
{
"cell_type": "markdown",
"source": [
"Just paintings for the moment"
],
"metadata": {
"id": "6gPic9kwtlUv"
}
},
{
"cell_type": "code",
"source": [
"df2= df[df['classification'] == 'Painting']"
],
"metadata": {
"id": "zSa_HnzwtksZ"
},
"execution_count": 9,
"outputs": []
},
{
"cell_type": "code",
"source": [
"import re\n",
"import pandas as pd\n",
"import numpy as np\n",
"\n",
"# Convert fractional inches to float\n",
"def inches_to_cm(value):\n",
" # Handles mixed fractions like \"13 11/16\"\n",
" if ' ' in value:\n",
" whole, frac = value.split()\n",
" num, denom = frac.split('/')\n",
" inches = int(whole) + int(num) / int(denom)\n",
" elif '/' in value:\n",
" num, denom = value.split('/')\n",
" inches = int(num) / int(denom)\n",
" else:\n",
" inches = float(value)\n",
" return inches * 2.54\n",
"\n",
"# Main dimension parser\n",
"def parse_overall_cm(dimensions):\n",
" if pd.isna(dimensions):\n",
" return None, None\n",
"\n",
" # 1. Look for \"overall: NN x NN cm\"\n",
" cm_match = re.search(r'overall:\\s*([\\d.]+)\\s*[×x]\\s*([\\d.]+)\\s*cm', dimensions)\n",
" if cm_match:\n",
" return float(cm_match.group(1)), float(cm_match.group(2))\n",
"\n",
" # 2. Fallback: first cm pair\n",
" fallback_cm = re.search(r'([\\d.]+)\\s*[×x]\\s*([\\d.]+)\\s*cm', dimensions)\n",
" if fallback_cm:\n",
" return float(fallback_cm.group(1)), float(fallback_cm.group(2))\n",
"\n",
" # 3. Try to extract inches from \"overall: ...\" and convert to cm\n",
" in_match = re.search(r'overall:\\s*([\\d/ ]+)\\s*[×x]\\s*([\\d/ ]+)\\s*in', dimensions)\n",
" if in_match:\n",
" try:\n",
" h_cm = inches_to_cm(in_match.group(1).strip())\n",
" w_cm = inches_to_cm(in_match.group(2).strip())\n",
" return h_cm, w_cm\n",
" except:\n",
" return None, None\n",
"\n",
" return None, None\n"
],
"metadata": {
"id": "VjuTFLzgs4bD"
},
"execution_count": 10,
"outputs": []
},
{
"cell_type": "code",
"source": [
"paintings = df2[df2['classification'].str.lower() == 'painting'].copy()\n",
"paintings[['height_cm', 'width_cm']] = paintings['dimensions'].apply(\n",
" lambda x: pd.Series(parse_overall_cm(x))\n",
")\n"
],
"metadata": {
"id": "lm5Vo6Gos75L"
},
"execution_count": 11,
"outputs": []
},
{
"cell_type": "code",
"source": [
"paintings.head()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 603
},
"id": "FbApTEWRt2R8",
"outputId": "8b57596c-4692-483f-9833-b6e161f52175"
},
"execution_count": 12,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" objectid accessioned accessionnum locationid \\\n",
"0 0 1 1937.1.2.c NaN \n",
"1 1 1 1937.1.3 NaN \n",
"2 4 1 1937.1.4.c 8198.0 \n",
"3 17 1 1937.1.15 8207.0 \n",
"4 18 1 1937.1.16 8207.0 \n",
"\n",
" title \\\n",
"0 Saint James Major \n",
"1 Saint Paul and a Group of Worshippers \n",
"2 Saint Bernard and Saint Catherine of Alexandria with the Virgin of the Annunciation [right panel] \n",
"3 Matteo Olivieri (?) \n",
"4 The Annunciation \n",
"\n",
" displaydate beginyear endyear visualbrowsertimespan \\\n",
"0 c. 1310 1310.0 1310.0 1300 to 1400 \n",
"1 1333 1333.0 1333.0 1300 to 1400 \n",
"2 shortly before 1387 1387.0 1387.0 1300 to 1400 \n",
"3 1430s 1430.0 1440.0 1401 to 1500 \n",
"4 c. 1423/1424 1383.0 1435.0 1300 to 1400 \n",
"\n",
" medium ... departmentabbr \\\n",
"0 tempera on panel ... CIS-R \n",
"1 tempera on panel ... CIS-R \n",
"2 tempera on poplar panel ... CIS-R \n",
"3 tempera (and oil?) on panel transferred to canvas ... CIS-R \n",
"4 tempera (and possibly oil glazes) on panel ... CIS-R \n",
"\n",
" portfolio series volume watermarks lastdetectedmodification wikidataid \\\n",
"0 NaN NaN NaN NaN 2023-05-09 17:01:03.48-04 Q20172973 \n",
"1 NaN NaN NaN NaN 2024-02-12 16:33:23.167-05 Q20173083 \n",
"2 NaN NaN NaN NaN 2024-03-08 14:32:09.57-05 Q20173299 \n",
"3 NaN NaN NaN NaN 2024-02-02 22:01:49.753-05 Q20173485 \n",
"4 NaN NaN NaN NaN 2024-01-26 22:01:48.797-05 Q3618180 \n",
"\n",
" customprinturl height_cm width_cm \n",
"0 NaN 62.2 34.8 \n",
"1 NaN 224.8 77.0 \n",
"2 NaN 194.6 80.0 \n",
"3 NaN 48.0 34.1 \n",
"4 NaN 148.8 115.1 \n",
"\n",
"[5 rows x 32 columns]"
],
"text/html": [
"\n",
" <div id=\"df-74c0bee2-43f5-4a64-92e9-a2c4bd19c150\" class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>objectid</th>\n",
" <th>accessioned</th>\n",
" <th>accessionnum</th>\n",
" <th>locationid</th>\n",
" <th>title</th>\n",
" <th>displaydate</th>\n",
" <th>beginyear</th>\n",
" <th>endyear</th>\n",
" <th>visualbrowsertimespan</th>\n",
" <th>medium</th>\n",
" <th>...</th>\n",
" <th>departmentabbr</th>\n",
" <th>portfolio</th>\n",
" <th>series</th>\n",
" <th>volume</th>\n",
" <th>watermarks</th>\n",
" <th>lastdetectedmodification</th>\n",
" <th>wikidataid</th>\n",
" <th>customprinturl</th>\n",
" <th>height_cm</th>\n",
" <th>width_cm</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1937.1.2.c</td>\n",
" <td>NaN</td>\n",
" <td>Saint James Major</td>\n",
" <td>c. 1310</td>\n",
" <td>1310.0</td>\n",
" <td>1310.0</td>\n",
" <td>1300 to 1400</td>\n",
" <td>tempera on panel</td>\n",
" <td>...</td>\n",
" <td>CIS-R</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>2023-05-09 17:01:03.48-04</td>\n",
" <td>Q20172973</td>\n",
" <td>NaN</td>\n",
" <td>62.2</td>\n",
" <td>34.8</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1937.1.3</td>\n",
" <td>NaN</td>\n",
" <td>Saint Paul and a Group of Worshippers</td>\n",
" <td>1333</td>\n",
" <td>1333.0</td>\n",
" <td>1333.0</td>\n",
" <td>1300 to 1400</td>\n",
" <td>tempera on panel</td>\n",
" <td>...</td>\n",
" <td>CIS-R</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>2024-02-12 16:33:23.167-05</td>\n",
" <td>Q20173083</td>\n",
" <td>NaN</td>\n",
" <td>224.8</td>\n",
" <td>77.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>4</td>\n",
" <td>1</td>\n",
" <td>1937.1.4.c</td>\n",
" <td>8198.0</td>\n",
" <td>Saint Bernard and Saint Catherine of Alexandria with the Virgin of the Annunciation [right panel]</td>\n",
" <td>shortly before 1387</td>\n",
" <td>1387.0</td>\n",
" <td>1387.0</td>\n",
" <td>1300 to 1400</td>\n",
" <td>tempera on poplar panel</td>\n",
" <td>...</td>\n",
" <td>CIS-R</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>2024-03-08 14:32:09.57-05</td>\n",
" <td>Q20173299</td>\n",
" <td>NaN</td>\n",
" <td>194.6</td>\n",
" <td>80.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>17</td>\n",
" <td>1</td>\n",
" <td>1937.1.15</td>\n",
" <td>8207.0</td>\n",
" <td>Matteo Olivieri (?)</td>\n",
" <td>1430s</td>\n",
" <td>1430.0</td>\n",
" <td>1440.0</td>\n",
" <td>1401 to 1500</td>\n",
" <td>tempera (and oil?) on panel transferred to canvas</td>\n",
" <td>...</td>\n",
" <td>CIS-R</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>2024-02-02 22:01:49.753-05</td>\n",
" <td>Q20173485</td>\n",
" <td>NaN</td>\n",
" <td>48.0</td>\n",
" <td>34.1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>18</td>\n",
" <td>1</td>\n",
" <td>1937.1.16</td>\n",
" <td>8207.0</td>\n",
" <td>The Annunciation</td>\n",
" <td>c. 1423/1424</td>\n",
" <td>1383.0</td>\n",
" <td>1435.0</td>\n",
" <td>1300 to 1400</td>\n",
" <td>tempera (and possibly oil glazes) on panel</td>\n",
" <td>...</td>\n",
" <td>CIS-R</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>2024-01-26 22:01:48.797-05</td>\n",
" <td>Q3618180</td>\n",
" <td>NaN</td>\n",
" <td>148.8</td>\n",
" <td>115.1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 32 columns</p>\n",
"</div>\n",
" <div class=\"colab-df-buttons\">\n",
"\n",
" <div class=\"colab-df-container\">\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-74c0bee2-43f5-4a64-92e9-a2c4bd19c150')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
" </svg>\n",
" </button>\n",
"\n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" .colab-df-buttons div {\n",
" margin-bottom: 4px;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-74c0bee2-43f5-4a64-92e9-a2c4bd19c150 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-74c0bee2-43f5-4a64-92e9-a2c4bd19c150');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
"\n",
"\n",
" <div id=\"df-41b75eff-afe6-444e-b03b-13b61fc43477\">\n",
" <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-41b75eff-afe6-444e-b03b-13b61fc43477')\"\n",
" title=\"Suggest charts\"\n",
" style=\"display:none;\">\n",
"\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <g>\n",
" <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
" </g>\n",
"</svg>\n",
" </button>\n",
"\n",
"<style>\n",
" .colab-df-quickchart {\n",
" --bg-color: #E8F0FE;\n",
" --fill-color: #1967D2;\n",
" --hover-bg-color: #E2EBFA;\n",
" --hover-fill-color: #174EA6;\n",
" --disabled-fill-color: #AAA;\n",
" --disabled-bg-color: #DDD;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-quickchart {\n",
" --bg-color: #3B4455;\n",
" --fill-color: #D2E3FC;\n",
" --hover-bg-color: #434B5C;\n",
" --hover-fill-color: #FFFFFF;\n",
" --disabled-bg-color: #3B4455;\n",
" --disabled-fill-color: #666;\n",
" }\n",
"\n",
" .colab-df-quickchart {\n",
" background-color: var(--bg-color);\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: var(--fill-color);\n",
" height: 32px;\n",
" padding: 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-quickchart:hover {\n",
" background-color: var(--hover-bg-color);\n",
" box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: var(--button-hover-fill-color);\n",
" }\n",
"\n",
" .colab-df-quickchart-complete:disabled,\n",
" .colab-df-quickchart-complete:disabled:hover {\n",
" background-color: var(--disabled-bg-color);\n",
" fill: var(--disabled-fill-color);\n",
" box-shadow: none;\n",
" }\n",
"\n",
" .colab-df-spinner {\n",
" border: 2px solid var(--fill-color);\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" animation:\n",
" spin 1s steps(1) infinite;\n",
" }\n",
"\n",
" @keyframes spin {\n",
" 0% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" border-left-color: var(--fill-color);\n",
" }\n",
" 20% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 30% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 40% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 60% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 80% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" 90% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" }\n",
"</style>\n",
"\n",
" <script>\n",
" async function quickchart(key) {\n",
" const quickchartButtonEl =\n",
" document.querySelector('#' + key + ' button');\n",
" quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n",
" quickchartButtonEl.classList.add('colab-df-spinner');\n",
" try {\n",
" const charts = await google.colab.kernel.invokeFunction(\n",
" 'suggestCharts', [key], {});\n",
" } catch (error) {\n",
" console.error('Error during call to suggestCharts:', error);\n",
" }\n",
" quickchartButtonEl.classList.remove('colab-df-spinner');\n",
" quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
" }\n",
" (() => {\n",
" let quickchartButtonEl =\n",
" document.querySelector('#df-41b75eff-afe6-444e-b03b-13b61fc43477 button');\n",
" quickchartButtonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
" })();\n",
" </script>\n",
" </div>\n",
"\n",
" </div>\n",
" </div>\n"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "dataframe",
"variable_name": "paintings"
}
},
"metadata": {},
"execution_count": 12
}
]
},
{
"cell_type": "markdown",
"source": [],
"metadata": {
"id": "8bHOXTPqVaq5"
}
},
{
"cell_type": "code",
"source": [
"# Imports\n",
"import numpy as np\n",
"\n",
"# Number of paintings\n",
"total_paintings = len(paintings)\n",
"\n",
"# How many have usable dimensions\n",
"usable_dims = paintings[['height_cm', 'width_cm','objectid']].dropna()\n",
"num_with_dims = len(usable_dims)\n",
"\n",
"# Basic size stats (in cm)\n",
"height_stats = usable_dims['height_cm'].describe()\n",
"width_stats = usable_dims['width_cm'].describe()\n",
"\n",
"# Aspect ratio (width / height)\n",
"usable_dims['aspect_ratio'] = usable_dims['width_cm'] / usable_dims['height_cm']\n",
"aspect_stats = usable_dims['aspect_ratio'].describe()\n",
"\n",
"# Year range\n",
"year_stats = paintings['beginyear'].dropna().astype(int).describe()\n",
"\n",
"# Print summary\n",
"print(f\"🎨 Total paintings: {total_paintings}\")\n",
"print(f\"📏 With usable dimensions: {num_with_dims}\")\n",
"print(\"\\n📐 Height (cm):\")\n",
"print(height_stats)\n",
"print(\"\\n📐 Width (cm):\")\n",
"print(width_stats)\n",
"print(\"\\n📐 Aspect Ratio (width / height):\")\n",
"print(aspect_stats)\n",
"print(\"\\n📅 Year made (beginyear):\")\n",
"print(year_stats)\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "WSj5LiYHuHqI",
"outputId": "9ab541b2-097f-4869-a5ab-4331266018fd"
},
"execution_count": 24,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"🎨 Total paintings: 4379\n",
"📏 With usable dimensions: 4361\n",
"\n",
"📐 Height (cm):\n",
"count 4361.000000\n",
"mean 87.036693\n",
"std 59.402251\n",
"min 7.500000\n",
"25% 46.700000\n",
"50% 72.000000\n",
"75% 106.300000\n",
"max 478.790000\n",
"Name: height_cm, dtype: float64\n",
"\n",
"📐 Width (cm):\n",
"count 4361.000000\n",
"mean 85.889626\n",
"std 73.406160\n",
"min 0.200000\n",
"25% 49.000000\n",
"50% 65.000000\n",
"75% 101.600000\n",
"max 1097.280000\n",
"Name: width_cm, dtype: float64\n",
"\n",
"📐 Aspect Ratio (width / height):\n",
"count 4361.000000\n",
"mean 1.052928\n",
"std 0.470642\n",
"min 0.002611\n",
"25% 0.777535\n",
"50% 0.897772\n",
"75% 1.333333\n",
"max 10.261084\n",
"Name: aspect_ratio, dtype: float64\n",
"\n",
"📅 Year made (beginyear):\n",
"count 4379.000000\n",
"mean 1821.237726\n",
"std 151.524838\n",
"min 100.000000\n",
"25% 1783.000000\n",
"50% 1861.000000\n",
"75% 1925.000000\n",
"max 2023.000000\n",
"Name: beginyear, dtype: float64\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"import matplotlib.pyplot as plt\n",
"\n",
"plt.figure(figsize=(10, 10))\n",
"plt.scatter(usable_dims['width_cm'], usable_dims['height_cm'], alpha=0.3, s=10)\n",
"plt.xlabel(\"Width (cm)\")\n",
"plt.ylabel(\"Height (cm)\")\n",
"plt.title(\"NGA Paintings: Width vs Height\")\n",
"plt.grid(True)\n",
"plt.axis(\"equal\")\n",
"plt.show()\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 872
},
"id": "xXdku7ntud8M",
"outputId": "765b6b07-714e-4b08-8d6a-5f3af66b5bd8"
},
"execution_count": 14,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 1000x1000 with 1 Axes>"
],
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA14AAANXCAYAAAAl1446AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAA/M5JREFUeJzs3XeYG9W9PvB3pBn1sr3Za3vXBRcMNmCMjTG5wdhgSgi+4ZKYhJD8QnJDCZByQ0K4QAqEmwQn1BC4kFACaRBimh1qbMD4GnBva6/ttbdqi9qozGjm98cisd3Srma15f08Dw9eaVY6oxmtzqtz5nsEXdd1EBERERERkWFMuW4AERERERHRWMfgRUREREREZDAGLyIiIiIiIoMxeBERERERERmMwYuIiIiIiMhgDF5EREREREQGY/AiIiIiIiIyGIMXERERERGRwRi8iIiIiIiIDMbgRUREaZsyZQq+/OUvZ/Ux33zzTQiCgDfffDOrjzvSfepTn8KnPvWp426XyeuT3PYvf/nL0Bs4yqT7evb3uyeeeGJ2G0RE1AODFxHRIDz++OMQBAE2mw3Hjh3rdX9/HTlN0/CHP/wB5557LoqKiiBJEkpKSrB8+XI8/PDDiMVifT5fR0cHbDYbBEHA7t27M25n8j+bzYYZM2bg2muvRVNTU/o7nAUPPPAAHn/88WF9TqPMnj0bJ598cq/bn3vuOQiCgLPPPrvXff/7v/8LQRCwbt26IT//008/jTVr1gz5cYbbbbfdBkEQ4PP5+rx/ypQpuPDCC4e5Vemrr6/Hbbfdho8++ijXTSGiUUjMdQOIiEazWCyGu+66C/fee+9xt41EIvjsZz+LV199FYsXL8Z3vvMdlJaWoq2tDW+99Ra++c1vYtOmTXj00Ud7/e6f//xnCIKAsrIyPPXUU/jJT36SUTvvuOMOVFVVIRqNYsOGDXjwwQfx0ksvYceOHXA4HGk/zt69e2EyDe47uwceeABFRUW9RsyWLl2KSCQCi8UyqMfNhSVLluDRRx+F3++H1+tN3b5x40aIoojNmzdDURRIktTtPrPZjEWLFgHAkALY008/jR07duCGG24Y9GOMNdkItMdTX1+P22+/HVOmTMG8efMMfz4iGls44kVENATz5s3D7373O9TX1x932xtvvBGvvvoq1qxZg40bN+L73/8+rrrqKnz729/GCy+8gN27d+PUU0/t83effPJJrFy5Ep///Ofx9NNPZ9zO888/H1dccQX+3//7f3j88cdxww03oLa2Fn//+98zehyr1dotTGSDyWSCzWYbdKDLhSVLlkDTNLzzzjvdbt+4cSMuu+wyRCIRbNmypdt9GzZswEknnQS32w0AsFgsoypsjnR8PYlopBs9n3JERCPQD37wAyQSCdx1110DbldXV4dHHnkE5513Hr71rW/1uc306dPxzW9+s9ftR44cwb/+9S9cfvnluPzyy1FbW9urw5+pT3/60wCA2tpaAMAvfvELLF68GIWFhbDb7Tj11FP7vE6o5zVeyamMGzduxE033YTi4mI4nU589rOfRUtLS7ff27lzJ956663UtMfk9Th9XcOUnKq5a9cu/Nu//RscDgcmTJiAu+++u1ebDh8+jIsvvhhOpxMlJSWpgNvzMffv349Vq1ahrKwMNpsNEydOxOWXXw6/35/axufzYc+ePZBlecDXb8mSJQA6g1ZSNBrFBx98gEsvvRTV1dXd7mtpacG+fftSv5fcx57XJB09ehSXXHJJt33pOf30U5/6FF588UUcPnw49VpOmTKl2zaapuGnP/0pJk6cCJvNhnPOOQc1NTUD7tNf/vIXCIKAt956q9d9v/3tbyEIAnbs2AEAaGxsxFVXXYWJEyfCarWivLwcn/nMZ3Do0KEBn2MwNE3DmjVrMGfOHNhsNpSWluLrX/862tvbu23X1+uZ7rmRNND59uabb2LBggUAgKuuuir12o+V6bNEZDxONSQiGoKqqip86Utfwu9+9zt8//vfR0VFRZ/bvfzyy0gkErjiiisyfo4//vGPcDqduPDCC2G32zF16lQ89dRTWLx48aDbfeDAAQBAYWEhAODXv/41Lr74YqxevRrxeBzPPPMMPve5z2Ht2rW44IILjvt41113HfLz8/Hf//3fOHToENasWYNrr70Wzz77LABgzZo1uO666+ByufDDH/4QAFBaWjrgY7a3t+O8887DpZdeissuuwx/+ctf8F//9V+YO3cuzj//fABAOBzGpz/9aTQ0NOBb3/oWysrK8PTTT+ONN97o9ljxeBwrVqxALBbDddddh7KyMhw7dgxr165FR0dHarrgfffdh9tvvx1vvPHGgIUaqqurUVFRgQ0bNqRu27x5M+LxOBYvXozFixdj48aN+Pa3vw0AqaDcNXj1FIlEcM455+DIkSO4/vrrUVFRgSeeeAKvv/56t+1++MMfwu/34+jRo7jnnnsAAC6Xq9s2d911F0wmE77zne/A7/fj7rvvxurVq7Fp06Z+n/+CCy6Ay+XCn/70p17XqD377LOYM2dO6rrFVatWYefOnbjuuuswZcoUNDc3Y/369Thy5EivENiXtra2Pm/XNK3XbV//+tfx+OOP46qrrsL111+P2tpa3Hffffjwww+xcePGfkdg0z03ko53vs2aNQt33HEHbr31Vlx99dU466yzAGBI70MiGmd0IiLK2GOPPaYD0Ddv3qwfOHBAF0VRv/7661P3n3322fqcOXNSP9944406AP2jjz7q9jixWExvaWlJ/efz+Xo919y5c/XVq1enfv7BD36gFxUV6YqipN3Of/7zn3pLS4teV1enP/PMM3phYaFut9v1o0eP6rqu67Isd/u9eDyun3jiifqnP/3pbrdPnjxZv/LKK3s9/rJly3RN07rtr9ls1js6OlK3zZkzRz/77LN7tfGNN97QAehvvPFG6razzz5bB6D/4Q9/SN0Wi8X0srIyfdWqVanbfvnLX+oA9Oeffz51WyQS0WfOnNntMT/88EMdgP7nP/95wNfrv//7v3u1pT+f+9zndLvdrsfjcV3Xdf3OO+/Uq6qqdF3X9QceeEAvKSlJbfud73xHB6AfO3as2z52fT3WrFmjA9D/9Kc/pW4Lh8P6tGnTerXpggsu0CdPntyrTcnXctasWXosFkvd/utf/1oHoG/fvn3Affr85z+vl5SU6Kqqpm5raGjQTSaTfscdd+i6ruvt7e06AP1//ud/BnysviRf34H+u+CCC1Lb/+tf/9IB6E899VS3x3nllVd63d7z9Uz33Ej+bjrn2+bNm3UA+mOPPZbxvhMRcaohEdEQVVdX44tf/CIefvhhNDQ09LlNIBAA0Htk4qWXXkJxcXHqv8mTJ3e7f9u2bdi+fTs+//nPp277/Oc/D5/Ph1dffTXtNi5btgzFxcWorKzE5ZdfDpfLheeeew4TJkwAANjt9tS27e3t8Pv9OOuss/DBBx+k9fhXX301BEFI/XzWWWchkUjg8OHDabexJ5fL1W2E0GKx4PTTT8fBgwdTt73yyiuYMGECLr744tRtNpsNX/va17o9VnJE69VXXx1wGuFtt90GXdfTKku+ZMmSbtdybdy4MTX6ceaZZ6K5uRn79+9P3VdVVdXviCjQeS6Ul5fj3//931O3ORwOXH311cdtS09XXXVVt+udkqMzXV+7vvzHf/wHmpubu03D+8tf/gJN0/Af//EfADrPFYvFgjfffLPXdL90/fWvf8X69et7/ddzFPTPf/4zvF4vzj33XPh8vtR/p556KlwuV7+jV0D650ZSOucbEdFQMHgREWXBLbfcAlVV+73WK1lQIRQKdbv9zDPPTHU6ly9f3uv3nnzySTidTlRXV6OmpgY1NTWw2WyYMmUKnnrqqbTbd//992P9+vV44403sGvXLhw8eBArVqxI3b927VqcccYZsNlsKCgoQHFxMR588MFu1z8NZNKkSd1+zs/PB4BBd8wBYOLEid3CXPJxuz7m4cOHMXXq1F7bTZs2rdvPVVVVuOmmm/DII4+gqKgIK1aswP3335/2/vWl63Veuq7jnXfewZlnngkAOPHEE+HxeLBx40ZEo1Fs2bJlwGmGyX2ZNm1ar3054YQTMm7bYI/HeeedB6/Xm5oiCnROM5w3bx5mzJgBoLPAys9//nO8/PLLKC0txdKlS3H33XejsbEx7fYtXboUy5Yt6/WfzWbrtt3+/fvh9/tRUlLS7QuK4uJihEIhNDc39/sc6Z4bSemcb0REQ8FrvIiIsqC6uhpXXHEFHn74YXz/+9/vdf/MmTMBADt27Oi2/lNxcTGWLVsGoDNkdaXrOv74xz8iHA5j9uzZvR6zubkZoVCo1yhaX04//XScdtppfd73r3/9CxdffDGWLl2KBx54AOXl5ZAkCY899ljaFRTNZnOft+u6ntbvD8dj/vKXv8SXv/xl/P3vf8e6detw/fXX484778R7772HiRMnZvx4J598MtxuNzZs2ICVK1eira0tNeJlMpmwcOFCbNiwAVOnTkU8Hj9u8Mqmwb52VqsVl1xyCZ577jk88MADaGpqwsaNG/Gzn/2s23Y33HADLrroIjz//PN49dVX8aMf/Qh33nknXn/9dcyfPz9r+6FpGkpKSvr9kqG4uDhrz2XEOUxE1BWDFxFRltxyyy148skn8fOf/7zXfeeffz7MZjOeeuoprF69Oq3He+utt3D06FHccccdmDVrVrf72tvbcfXVV+P5558fVMGOrv7617/CZrPh1VdfhdVqTd3+2GOPDelxe+o5mpANkydPxq5du6DrerfH76+C39y5czF37lzccsstqRGqhx56KON10YDOjvoZZ5yBjRs3YsOGDfB4PJg7d27q/sWLF+PZZ59NjbAcL3hNnjwZO3bs6LUve/fu7bWtEa9l0n/8x3/g97//PV577TXs3r0buq6nphl2NXXqVHz729/Gt7/9bezfvx/z5s3DL3/5y15fIAzF1KlT8c9//hNnnnlmt+mw6cj03EiHka87EY19nGpIRJQlU6dOxRVXXIHf/va3vaZdTZo0CV/5ylfw8ssv47777uvz93t+s56cZvjd734X//7v/97tv6997WuYPn16RtMN+2M2myEIAhKJROq2Q4cO4fnnnx/yY3fldDrR0dGR1cdcsWIFjh07hhdeeCF1WzQaxe9+97tu2wUCAaiq2u22uXPnwmQydSvXnm45+aQlS5agpaUFjz32GBYuXNhtLbLFixdj7969+Pvf/47CwsJe4bmnlStXor6+vlsZf1mW8fDDD/fa1ul0Dmma5ECWLVuGgoICPPvss3j22Wdx+umno6qqqlubotFot9+ZOnUq3G53r9L3Q3XZZZchkUjgxz/+ca/7VFUd8HxK99zIhNPpBICsn8dEND5wxIuIKIt++MMf4oknnsDevXsxZ86cbvetWbMGtbW1uO666/DMM8/goosuQklJCXw+HzZu3Ih//OMfqet5YrEY/vrXv+Lcc8/tdd1L0sUXX4xf//rXaG5uRklJyaDbfMEFF+BXv/oVzjvvPHzhC19Ac3Mz7r//fkybNg3btm0b9OP2dOqpp+LBBx/ET37yE0ybNg0lJSWp9cQG6+tf/zruu+8+fP7zn8e3vvUtlJeX46mnnkq9ZskRitdffx3XXnstPve5z2HGjBlQVRVPPPEEzGYzVq1alXq8dMvJJyVHsd59913cdttt3e4744wzIAgC3nvvPVx00UXHHS352te+hvvuuw9f+tKXsGXLFpSXl+OJJ56Aw+Hote2pp56KZ599FjfddBMWLFgAl8uFiy666LjtTYckSbj00kvxzDPPIBwO4xe/+EW3+/ft24dzzjkHl112GWbPng1RFPHcc8+hqakJl19+eVbakHT22Wfj61//Ou6880589NFHWL58OSRJwv79+/HnP/8Zv/71r7sVI+kq3XMjE1OnTkVeXh4eeughuN1uOJ1OLFy4sFswJSLqD4MXEVEWTZs2DVdccQV+//vf97rP4XDglVdewRNPPIEnnngCd999NwKBAPLy8nDyySfjgQcewJVXXgkAePHFF9HR0TFgZ/qiiy7CL3/5SzzzzDO4/vrrB93mT3/603j00Udx11134YYbbkBVVRV+/vOf49ChQ1kNXrfeeisOHz6Mu+++G8FgEGefffaQg5fL5cLrr7+O6667Dr/+9a/hcrnwpS99CYsXL8aqVatSneyTTz4ZK1aswD/+8Q8cO3YMDocDJ598Ml5++WWcccYZg37+M844A6IoQlXVXus5eTwenHjiidi2bVta13c5HA689tpruO6663DvvffC4XBg9erVOP/883Heeed12/ab3/wmPvroIzz22GO45557MHny5KwFL6BzuuEjjzwCQRBw2WWXdbuvsrISn//85/Haa6/hiSeegCiKmDlzJv70pz91C7HZ8tBDD+HUU0/Fb3/7W/zgBz+AKIqYMmUKrrjiilQxk76ke25kQpIk/P73v8fNN9+Mb3zjG1BVFY899hiDFxGlRdB51SgREY0xa9aswY033oijR4+mSuYTATw3iCh3GLyIiGhUi0Qi3QovRKNRzJ8/H4lEAvv27cthyyjXeG4Q0UjCqYZERDSqXXrppZg0aRLmzZsHv9+PJ598Env27MlK4REa3XhuENFIwuBFRESj2ooVK/DII4/gqaeeQiKRwOzZs/HMM8/0WQKdxheeG0Q0knCqIRERERERkcG4jhcREREREZHBGLyIiIiIiIgMxmu8MqRpGurr6+F2uwe1+CIREREREY0Nuq4jGAyioqICJtPAY1oMXhmqr69HZWVlrptBREREREQjRF1dHSZOnDjgNgxeGXK73QA6X1yPx5PTtiiKgnXr1mH58uWQJCmnbaHc4DkwvvH4E8+B8Y3Hf3zj8R8ZAoEAKisrUxlhIAxeGUpOL/R4PCMieDkcDng8Hr7hximeA+Mbjz/xHBjfePzHNx7/kSWdS5BYXIOIiIiIiMhgDF5EREREREQGY/AiIiIiIiIyGIMXERERERGRwRi8iIiIiIiIDMbgRUREREREZDAGLyIiIiIiIoMxeBERERERERmMwYuIiIiIiMhgDF5EREREREQGY/AiIiIiIiIyGIMXERERERGRwRi8iIiIiIiIDMbgRUREREREZDAGLyIiIiIiIoMxeBERERERERmMwYuIiIiIiMhgDF5EREREREQGY/AiIiIiIiIyGIMXERERERGRwUZN8EokEvjRj36Eqqoq2O12TJ06FT/+8Y+h63pqG13Xceutt6K8vBx2ux3Lli3D/v37uz1OW1sbVq9eDY/Hg7y8PHz1q19FKBQa7t0hIiIiIqJxZNQEr5///Od48MEHcd9992H37t34+c9/jrvvvhv33ntvapu7774bv/nNb/DQQw9h06ZNcDqdWLFiBaLRaGqb1atXY+fOnVi/fj3Wrl2Lt99+G1dffXUudomIiIiIiMYJMdcNSNc777yDz3zmM7jgggsAAFOmTMEf//hHvP/++wA6R7vWrFmDW265BZ/5zGcAAH/4wx9QWlqK559/Hpdffjl2796NV155BZs3b8Zpp50GALj33nuxcuVK/OIXv0BFRUVudo6IiIiIiMa0URO8Fi9ejIcffhj79u3DjBkzsHXrVmzYsAG/+tWvAAC1tbVobGzEsmXLUr/j9XqxcOFCvPvuu7j88svx7rvvIi8vLxW6AGDZsmUwmUzYtGkTPvvZz/Z63lgshlgslvo5EAgAABRFgaIoRu1uWpLPn+t2UO7wHBjfePyJ58D4xuM/vvH4jwyZvP6jJnh9//vfRyAQwMyZM2E2m5FIJPDTn/4Uq1evBgA0NjYCAEpLS7v9Xmlpaeq+xsZGlJSUdLtfFEUUFBSktunpzjvvxO23397r9nXr1sHhcAx5v7Jh/fr1uW4C5RjPgfGNx594DoxvPP7jG49/bsmynPa2oyZ4/elPf8JTTz2Fp59+GnPmzMFHH32EG264ARUVFbjyyisNe96bb74ZN910U+rnQCCAyspKLF++HB6Px7DnTYeiKFi/fj3OPfdcSJKU07ZQbvAcGN94/InnwPjG4z++8fiPDMnZcOkYNcHru9/9Lr7//e/j8ssvBwDMnTsXhw8fxp133okrr7wSZWVlAICmpiaUl5enfq+pqQnz5s0DAJSVlaG5ubnb46qqira2ttTv92S1WmG1WnvdLknSiDnJR1JbKDd4DoxvPP7Ec2B84/Ef33j8cyuT137UVDWUZRkmU/fmms1maJoGAKiqqkJZWRlee+211P2BQACbNm3CokWLAACLFi1CR0cHtmzZktrm9ddfh6ZpWLhw4TDsBRERERERjUejZsTroosuwk9/+lNMmjQJc+bMwYcffohf/epX+MpXvgIAEAQBN9xwA37yk59g+vTpqKqqwo9+9CNUVFTgkksuAQDMmjUL5513Hr72ta/hoYcegqIouPbaa3H55ZezoiERERERERlm1ASve++9Fz/60Y/wzW9+E83NzaioqMDXv/513Hrrraltvve97yEcDuPqq69GR0cHlixZgldeeQU2my21zVNPPYVrr70W55xzDkwmE1atWoXf/OY3udglIiIiIiIaJ0ZN8HK73VizZg3WrFnT7zaCIOCOO+7AHXfc0e82BQUFePrppw1oIRERERERUd9GzTVeREREREREoxWDFxERERERkcEYvIiIiIiIiAzG4EVERERERGQwBi8iIiIiIiKDMXgREREREREZjMGLiIiIiIjIYAxeREREREREBmPwIiIiIiIiMhiDFxERERERkcEYvIiIiIiIiAzG4EVERERERGQwBi8iIiIiIiKDMXgREREREREZjMGLiIiIiIjIYAxeREREREREBmPwIiIiIiIiMhiDFxERERERkcEYvIiIiIiIiAzG4EVERERERGQwBi8iIiIiIiKDMXgREREREREZjMGLiIiIiIjIYAxeREREREREBmPwIiIiIiIiMhiDFxERERERkcEYvIiIiIiIiAzG4EVERERERGQwBi8iIiIiIiKDMXgREREREREZjMGLiIiIiIjIYAxeREREREREBmPwIiIiIiIiMhiDFxERERERkcEYvIiIiIiIiAzG4EVERERERGQwBi8iIiIiIiKDMXgREREREREZjMGLiIiIiIjIYAxeREREREREBmPwIiIiIiIiMhiDFxERERERkcEYvIiIiIiIiAzG4EVERERERGQwBi8iIiIiIiKDMXgREREREREZjMGLiIiIiIjIYAxeREREREREBmPwIiIiIiIiMhiDFxERERERkcEYvIiIiIiIiAzG4EVERERERGQwBi8iIiIiIiKDMXgREREREREZjMGLiIiIiIjIYAxeREREREREBmPwIiIiIiIiMhiDFxERERERkcEYvIiIiIiIiAzG4EVERERERGQwBi8iIiIiIiKDMXgREREREREZjMGLiIiIiIjIYAxeREREREREBmPwIiIiIiIiMhiDFxERERERkcEYvIiIiIiIiAzG4EVERERERGQwBi8iIiIiIiKDMXgREREREREZjMGLiIiIiIjIYAxeREREREREBmPwIiIiIiIiMhiDFxERERERkcEYvIiIiIiIiAzG4EVERERERGQwBi8iIiIiIiKDMXgREREREREZjMGLiIiIiIjIYAxeREREREREBmPwIiIiIiIiMhiDFxERERERkcEYvIiIiIiIiAzG4EVERERERGQwBi8iIiIiIiKDMXgREREREREZjMGLiIiIiIjIYAxeREREREREBmPwIiIiIiIiMhiDFxERERERkcEYvIiIiIiIiAzG4EVERERERGQwBi8iIiIiIiKDMXgREREREREZjMGLiIiIiIjIYAxeREREREREBmPwIiIiIiIiMhiDFxERERERkcEYvIiIiIiIiAzG4EVERERERGQwBi8iIiIiIiKDMXgREREREREZjMGLiIiIiIjIYAxeREREREREBmPwIiIiIiIiMhiDFxERERERkcEYvIiIiIiIiAzG4EVERERERGQwBi8iIiIiIiKDMXgREREREREZjMGLiIiIiIjIYAxeREREREREBmPwIiIiIiIiMhiDFxERERERkcEYvIiIiIiIiAzG4EVERERERGQwBi8iIiIiIiKDMXgREREREREZbFQFr2PHjuGKK65AYWEh7HY75s6di//7v/9L3a/rOm699VaUl5fDbrdj2bJl2L9/f7fHaGtrw+rVq+HxeJCXl4evfvWrCIVCw70rREREREQ0joya4NXe3o4zzzwTkiTh5Zdfxq5du/DLX/4S+fn5qW3uvvtu/OY3v8FDDz2ETZs2wel0YsWKFYhGo6ltVq9ejZ07d2L9+vVYu3Yt3n77bVx99dW52CUiIiIiIhonxFw3IF0///nPUVlZicceeyx1W1VVVerfuq5jzZo1uOWWW/CZz3wGAPCHP/wBpaWleP7553H55Zdj9+7deOWVV7B582acdtppAIB7770XK1euxC9+8QtUVFQM704REREREdG4MGqC1wsvvIAVK1bgc5/7HN566y1MmDAB3/zmN/G1r30NAFBbW4vGxkYsW7Ys9TterxcLFy7Eu+++i8svvxzvvvsu8vLyUqELAJYtWwaTyYRNmzbhs5/9bK/njcViiMViqZ8DgQAAQFEUKIpi1O6mJfn8uW4H5Q7PgfGNx594DoxvPP7jG4//yJDJ6z9qgtfBgwfx4IMP4qabbsIPfvADbN68Gddffz0sFguuvPJKNDY2AgBKS0u7/V5paWnqvsbGRpSUlHS7XxRFFBQUpLbp6c4778Ttt9/e6/Z169bB4XBkY9eGbP369bluAuUYz4HxjcefeA6Mbzz+4xuPf27Jspz2tqMmeGmahtNOOw0/+9nPAADz58/Hjh078NBDD+HKK6807Hlvvvlm3HTTTamfA4EAKisrsXz5cng8HsOeNx2KomD9+vU499xzIUlSTttCucFzYHzj8SeeA+Mbj//4xuM/MiRnw6Vj1ASv8vJyzJ49u9tts2bNwl//+lcAQFlZGQCgqakJ5eXlqW2ampowb9681DbNzc3dHkNVVbS1taV+vyer1Qqr1drrdkmSRsxJPpLaQrnBc2B84/EnngPjG4//+Mbjn1uZvPajpqrhmWeeib1793a7bd++fZg8eTKAzkIbZWVleO2111L3BwIBbNq0CYsWLQIALFq0CB0dHdiyZUtqm9dffx2apmHhwoXDsBdERERERDQejZoRrxtvvBGLFy/Gz372M1x22WV4//338fDDD+Phhx8GAAiCgBtuuAE/+clPMH36dFRVVeFHP/oRKioqcMkllwDoHCE777zz8LWvfQ0PPfQQFEXBtddei8svv5wVDYmIiIiIyDCjJngtWLAAzz33HG6++WbccccdqKqqwpo1a7B69erUNt/73vcQDodx9dVXo6OjA0uWLMErr7wCm82W2uapp57Ctddei3POOQcmkwmrVq3Cb37zm1zsEhERERERjROjJngBwIUXXogLL7yw3/sFQcAdd9yBO+64o99tCgoK8PTTTxvRPCIiIiIioj6Nmmu8iIiIiIiIRisGLyIiIiIiIoMxeBERERERERmMwYuIiIiIiMhgDF5EREREREQGY/AiIiIiIiIyGIMXERERERGRwRi8iIiIiIiIDMbgRUREREREZDAGLyIiIiIiIoMxeBERERERERmMwYuIiIiIiMhgDF5EREREREQGY/AiIiIiIiIyGIMXERERERGRwRi8iIiIiIiIDMbgRUREREREZDAGLyIiIiIiIoMxeBERERERERmMwYuIiIiIiMhgDF5EREREREQGY/AiIiIiIiIyGIMXERERERGRwRi8iIiIiIiIDMbgRUREREREZDAGLyIiIiIiIoMxeBERERERERmMwYuIiIiIiMhgDF5EREREREQGY/AiIiIiIiIyGIMXERERERGRwRi8iIiIiIiIDMbgRUREREREZDAGLyIiIiIiIoMxeBERERERERmMwYuIiIiIiMhgDF5EREREREQGY/AiIiIiIiIyGIMXERERERGRwRi8iIiIiIiIDMbgRUREREREZDAGLyIiIiIiIoMxeBERERERERmMwYuIiIiIiMhgDF5EREREREQGY/AiIiIiIiIyGIMXERERERGRwRi8iIiIiIiIDMbgRUREREREZDAGLyIiIiIiIoMxeBERERERERmMwYuIiIiIiMhgDF5EREREREQGY/AiIiIiIiIyGIMXERERERGRwRi8iIiIiIiIDMbgRUREREREZDAGLyIiIiIiIoMxeBERERERERmMwYuIiIiIiMhgDF5EREREREQGY/AiIiIiIiIyGIMXERERERGRwRi8iIiIiIiIDMbgRUREREREZDAGLyIiIiIiIoMxeBERERERERlMzHUDaPTxywpkRYVDEuF1SLluDhERERHRiMfgRRmpaQ5ic2075LgKh0XEgqp8TCtx57pZREREREQjGqcaUtr8soLNte3QoaMy3wEdOjbXtsMvK7luGhERERHRiMbgRWmTFRVyXEWR0wqTSUCR0wo5rkJW1Fw3jYiIiIhoRGPworQ5JBEOiwhfOAZN0+ELx+CwiHBInLFKRERERDQQBi9Km9chYUFVPgQIqGuXIUDAgqp8FtggIiIiIjoODlVQRqaVuFHssrGqIRERERFRBhi8KGNehwQvGLiIiIiIiNLFqYZEREREREQGY/AiIiIiIiIyGIMXERERERGRwRi8iIiIiIiIDMbgRUREREREZDAGLyIiIiIiIoMxeBERERERERmMwYuIiIiIiMhgXECZiIhoHPLLCmRFhUMS4XVIuW4OEdGYx+BFREQ0ztQ0B7G5th1yXIXDImJBVT6mlbhz3SwiojGNUw2JiIjGEb+sYHNtO3ToqMx3QIeOzbXt8MtKrptGRDSmMXgRERGNI7KiQo6rKHJaYTIJKHJaIcdVyIqa66YREY1pDF5ERETjiEMS4bCI8IVj0DQdvnAMDosIh8SrD4iIjMTgRURENI54HRIWVOVDgIC6dhkCBCyoymeBDSIig/HrLSIionFmWokbxS4bqxoSEQ0jBi8iIqJxyOuQ4AUDFxHRcGHwIiLqB9c5IiIiomxh8CIi6gPXOSIiIqJsYnENIqIeuM4RERERZRuDFxFRD1zniIiIiLKNwYuIqAeuc0RERETZxuBFRNQD1zkiIiKibOPXt0REfeA6R0RERJRNDF5ERP3gOkdERESULZxqSEREREREZDAGLyIiIiIiIoMxeBERERERERmMwYuIiIiIiMhgDF5EREREREQGY/AiIiIiIiIyGIMXERERERGRwRi8iIiIiIiIDMbgRUREREREZDAGLyIiIiIiIoMxeBERERERERmMwYuIiIiIiMhgDF5EREREREQGY/AiIiIiIiIyGIMXERERERGRwRi8iIiIiIiIDMbgRUREREREZDAGLyIiIiIiIoON2uB11113QRAE3HDDDanbotEorrnmGhQWFsLlcmHVqlVoamrq9ntHjhzBBRdcAIfDgZKSEnz3u9+FqqrD3HoiIiIiIhpPRmXw2rx5M37729/ipJNO6nb7jTfeiH/84x/485//jLfeegv19fW49NJLU/cnEglccMEFiMfjeOedd/D73/8ejz/+OG699dbh3gUiIiIiIhpHRl3wCoVCWL16NX73u98hPz8/dbvf78ejjz6KX/3qV/j0pz+NU089FY899hjeeecdvPfeewCAdevWYdeuXXjyyScxb948nH/++fjxj3+M+++/H/F4PFe7REREREREY5yY6wZk6pprrsEFF1yAZcuW4Sc/+Unq9i1btkBRFCxbtix128yZMzFp0iS8++67OOOMM/Duu+9i7ty5KC0tTW2zYsUK/Od//id27tyJ+fPn93q+WCyGWCyW+jkQCAAAFEWBoihG7GLaks+f63ZQ7vAcGN94/InnwPjG4z++8fiPDJm8/qMqeD3zzDP44IMPsHnz5l73NTY2wmKxIC8vr9vtpaWlaGxsTG3TNXQl70/e15c777wTt99+e6/b161bB4fDMZjdyLr169fnugmUYzwHxjcef+I5ML7x+I9vPP65Jcty2tuOmuBVV1eHb33rW1i/fj1sNtuwPe/NN9+Mm266KfVzIBBAZWUlli9fDo/HM2zt6IuiKFi/fj3OPfdcSJKU07ZQbvAcGN94/InnwPjG4z++8fiPDMnZcOkYNcFry5YtaG5uximnnJK6LZFI4O2338Z9992HV199FfF4HB0dHd1GvZqamlBWVgYAKCsrw/vvv9/tcZNVD5Pb9GS1WmG1WnvdLknSiDnJR1JbKDd4DoxvPP7Ec2B84/Ef33j8cyuT137UFNc455xzsH37dnz00Uep/0477TSsXr069W9JkvDaa6+lfmfv3r04cuQIFi1aBABYtGgRtm/fjubm5tQ269evh8fjwezZs4d9n4iIiIiIaHwYNSNebrcbJ554YrfbnE4nCgsLU7d/9atfxU033YSCggJ4PB5cd911WLRoEc444wwAwPLlyzF79mx88YtfxN13343GxkbccsstuOaaa/oc1SIiIiIiIsqGURO80nHPPffAZDJh1apViMViWLFiBR544IHU/WazGWvXrsV//ud/YtGiRXA6nbjyyitxxx135LDVREREREQ01o3q4PXmm292+9lms+H+++/H/fff3+/vTJ48GS+99JLBLSMiIiIiIvrEqLnGi4iIiIiIaLQa1SNeNPr5ZQWyosIhifA6WJGHiIiIiMYmBi/KmZrmIDbXtkOOq3BYRCyoyse0Eneum0VERERElHWcakg54ZcVbK5thw4dlfkO6NCxubYdflnJddOIiIbMLyto8Ef4N42IiFI44kU5ISsq5LiKynwHTCYBRU4r6tplyIoKLzjlkIhGL47mExFRXzjiRTnhkEQ4LCJ84Rg0TYcvHIPDIsIh8bsAIhq9OJpPRET9YfCinPA6JCyoyocAAXXtMgQIWFCVzwIbRDSqJUfzi5zW1Gi+HFchK2qum0ZERDnG4QXKmWklbhS7bKxqSERjRtfR/CKnlaP5RESUwhEvyimvQ0K5187QRURjAkfziYioP/wKjoiIKIs4mk9ERH1h8BpDuBgxEdHI4HVIrNBKRETdMHiNESxfTEREREQ0cvEarzEgEGH54lwaqwuljtX9IiIiIsoFjniNARElwcWIc2SsjjSO1f0iIiIiyhWOeI0BdsnMxYhzYKwulDpW94uIiIgolxi8xgCPneWLc2GsLpQ6VveLiIiIKJc4JDJGsHzx8BurC6WO1f0iIiIiyiWOeI0hXIx4eI3VhVLH6n4RERER5RK/wqZB4ZphncbqSONY3S8iIiKiXGHwooyx4l13Y3Wh1LG6X0RERES5wKmGlBFWvKN0cA0wIiIiYyQ/YwMRfsaONhzxoowkK95xzTDqj9EjopzmSkRE41W3z1hRgCPXDaKMMHhRRljxjgbSc0TUF45hc207il22rIQkTnMlIqLxqtdnbFAGAAQiCgolfhE5GnCqIWWEFe9oIEauAZbONFdOcSQiorGq52dsodMCAIgoiRy3jNLFYQrKGCveUX+MHBE93jRXjoYREdFY1vMztjUchxOAXTLnummUJo540aBwzTDqi5Ejol0/cDRN7xbqWPSFiIjG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Cl4iIiIiIiI9puAlIiIiIiLSYwpeIiIiIiIiPabgJSIiIiIi0mMKXiIiIiIiIj2m4CUiIiIiItJjCl4iIiIiIiI9puAlIiIiIiLSYwpeIiIiIiIiPabgJSIiIiIi0mMKXiIiIiIiIj2m4CUiIiIiItJjCl4iIiIiIiI9puAlIiIiIiLSYwpeIiIiIiIiPabgJSIiIiIi0mMKXiIiIiIiIj2m4CUiIiIiItJjCl4iIiIiIiI9puAlIiIiIiLSYwpeIiIiIiIiPabgJSIiIiIi0mMKXiIiIiIiIj2m4CUiIiIiItJjCl4iIiIiIiI9puAlIiIiIiLSYwpeIiIiIiIiPabgJSIiIiIi0mMKXiIiIiIiIj2m4CUiIiIiItJjCl4iIiIiIiI9puAlIiIiIiLSYwpeIiIiIiIiPabgJSIiIiIi0mMKXiIiIiIiIj2m4CUiIiIiItJjCl4iIiIiIiI9puAlIiIiIiLSYwpeIiIiIiIiPabgJSIiIiIi0mMKXiIiIiIiIj2m4CUiIiIiItJjCl4iIiIiIiI9puAlIiIiIiLSYwpeIiIiIiIiPabgJSIiIiIi0mMKXiIiIiIiIj2m4CUiIiIiItJjCl4iIiIiIiI9puAlIiIiIiLSYwpeIiIiIiIiPabgJSIiIiIi0mMKXiIiIiIiIj2m4CUiIiIiItJjCl4iIiIiIiI9puAlIiIiIiLSYwpeIiIiIiIiPabgJSIiIiIi0mMKXiIiIiIiIj2m4CUiIiIiItJjCl4iIiIiIiI9puAlIiIiIiLSYwpeIiIiIiIiPabgJSIiIiIi0mMKXiIiIiIiIj2m4CUiIiIiItJjCl4iIiIiIiI9puAlIiIiIiLSYwpeIiIiIiIiPabgJSIiIiIi0mMKXiIiIiIiIj2m4CUiIiIiItJjCl4iIiIiIiI9puAlIiIiIiLSYwpeIiIiIiIiPabgJSIiIiIi0mMKXiIiIiIiIj2m4CUiIiIiItJjCl4iIiIiIiI9puAlIiIiIiLSYwpeIiIiIiIiPabgJSIiIiIi0mMKXiIiIiIiIj2m4CUiIiIiItJjCl4iIiIiIiI9puAlIiIiIiLSYwpeIiIiIiIiPabgJSIiIiIi0mMKXiIiIiIiIj2m4CUiIiIiItJjCl4iIiIiIiI9puAlIiIiIiLSYwpeIiIiIiIiPabgJSIiIiIi0mMKXiIiIiIiIj2m4CUiIiIiItJjCl4iIiIiIiI9puAlIiIiIiLSYwpeIiIiIiIiPbYmgtfRo0f5xCc+wZYtW8jlcmzbto2f/dmfJQiCVc975ZVXeO9730s2m2ViYoJf+ZVfOee1/uRP/oRdu3aRzWa55557+OpXv3q9PoaIiIiIiNym1kTw2r9/P0mS8Lu/+7u89tpr/Nt/+2/5whe+wE/91E+tPKder/OhD32ITZs28eKLL/Krv/qr/NzP/Rz/8T/+x5XnfPOb3+RHfuRH+MQnPsFLL73ED/zAD/ADP/ADvPrqqzfiY4mIiIiIyG3CvtEHcDk+/OEP8+EPf3jlz1u3buXAgQP8zu/8Dr/2a78GwO///u8TBAFf/OIXcV2Xu+66i5dffplf//Vf55/8k38CwG/+5m/y4Q9/mJ/4iZ8A4Bd+4Rd4+umn+ff//t/zhS984fp/MBERERERuS2sieB1PrVajYGBgZU/P/fcczz66KO4rrvy2OOPP84v//IvU61W6e/v57nnnuMzn/nMqtd5/PHH+fKXv3zB9/F9H9/3V/5cr9cBCMOQMAyv0ae5Osvvf6OPQ24cXQO3N51/0TVwe9P5v73p/N8cruT7X5PB69ChQ/zWb/3WymgXwPT0NFu2bFn1vNHR0ZWf9ff3Mz09vfLYmc+Znp6+4Ht9/vOf5+d//ufPefypp54in8+/lY9xzTz99NM3+hDkBtM1cHvT+RddA7c3nf/bm87/jeV53mU/94YGr89+9rP88i//8kWf8/rrr7Nr166VP588eZIPf/jDfPSjH+XHfuzHen2IfO5zn1s1Slav15mYmOBDH/oQ5XK55+9/MWEY8vTTT/PBD34Qx3Fu6LHIjaFr4Pam8y+6Bm5vOv+3N53/m8PybLjLcUOD17/4F/+Cj3/84xd9ztatW1f++6lTp3j/+9/Pu971rlWlGQBjY2PMzMysemz5z2NjYxd9zvLPzyeTyZDJZM553HGcm+Yiv5mORW4MXQO3N51/0TVwe9P5v73p/N9YV/Ld39DgNTw8zPDw8GU99+TJk7z//e/nwQcf5Pd+7/cwzdWFjO985zv56Z/+acIwXPkCnn76aXbu3El/f//Kc5555hk+/elPr/ze008/zTvf+c5r84FERERERETOY03UyZ88eZLv+77vY+PGjfzar/0ac3NzTE9Pr1qb9ff+3t/DdV0+8YlP8Nprr/HHf/zH/OZv/uaqaYI//uM/zp//+Z/zb/7Nv2H//v383M/9HN/5znf41Kc+dSM+loiIiIiI3CbWRLnG008/zaFDhzh06BAbNmxY9bM0TQGoVCo89dRTfPKTn+TBBx9kaGiIn/mZn1mpkgd417vexR/8wR/wL//lv+SnfuqnuOOOO/jyl7/M3XfffV0/j4iIiIiI3F7WRPD6+Mc/fsm1YAD33nsv3/jGNy76nI9+9KN89KMfvUZHJiIiIiIicmlrYqqhiIiIiIjIWqbgJSIiIiIi0mMKXiIiIiIiIj2m4CUiIiIiItJjCl4iIiIiIiI9puAlIiIiIiLSYwpeIiIiIiIiPabgJSIiIiIi0mMKXiIiIiIiIj2m4CUiIiIiItJjCl4iIiIiIiI9puAlIiIiIiLSYwpeIiIiIiIiPabgJSIiIiIi0mMKXiIiIiIiIj2m4CUiIiIiItJjCl4iIiIiIiI9puAlIiIiIiLSYwpeIiIiIiIiPabgJSIiIiIi0mMKXiIiIiIiIj2m4CUiIiIiItJjCl4iIiIiIiI9puAlIiIiIiLSYwpeIiIiIiIiPabgJSIiIiIi0mMKXiIiIiIiIj2m4CUiIiIiItJjCl4iIiIiIiI9puAlIiIiIiLSYwpeIiIiIiIiPabgJSIiIiIi0mMKXiIiIiIiIj2m4CUiIiIiItJjCl4iIiIiIiI9puAlIiIiIiLSYwpeIiIiIiIiPabgJSIiIiIi0mMKXiIiIiIiIj2m4CUiIiIiItJjCl4iIiIiIiI9puAlIiIiIiLSYwpeIiIiIiIiPabgJSIiIiIi0mMKXiIiIiIiIj2m4CUiIiIiItJjCl4iIiIiIiI9puAlIiIiIiLSYwpeIiIiIiIiPabgJSIiIiIi0mMKXiIiIiIiIj2m4CUiIiIiItJjCl4iIiIiIiI9puAlIiIiIiLSYwpeIiIiIiIiPabgJSIiIiIi0mMKXiIiIiIiIj2m4CUiIiIiItJjCl4iIiIiIiI9puAlIiIiIiLSYwpeIiIiIiIiPabgJSIiIiIi0mMKXiIiIiIiIj2m4CUiIiIiItJjCl4iIiIiIiI9puAlIiIiIiLSYwpeIiIiIiIiPabgJSIiIiIi0mMKXiIiIiIiIj2m4CUiIiIiItJjCl4iIiIiIiI9puAlIiIiIiLSYwpeIiIiIiIiPabgJSIiIiIi0mMKXiIi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\n"
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"source": [
"# Display the top 5 widest and tallest paintings from the dataset\n",
"top_wide = paintings.sort_values(by=\"width_cm\", ascending=False).head(5)[[\"title\", \"width_cm\", \"height_cm\",\"attribution\"]]\n",
"top_tall = paintings.sort_values(by=\"height_cm\", ascending=False).head(5)[[\"title\", \"width_cm\", \"height_cm\",\"attribution\"]]\n",
"\n",
"top_tall"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 206
},
"id": "ky3xhbcKOT0r",
"outputId": "71a61a0d-7f34-45f2-ea93-9a2fbece6950"
},
"execution_count": 25,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" title width_cm height_cm attribution\n",
"68227 Pink Bayonet 45.72 478.79 Gene Davis\n",
"14928 La Négresse 623.30 453.90 Henri Matisse\n",
"63620 Brownie, Sunny, Dave, and Al 337.20 442.00 Al Loving\n",
"36789 La scienza della fiacca (4x) 76.20 383.50 Frank Stella\n",
"27121 Zim Zum 560.10 380.30 Anselm Kiefer"
],
"text/html": [
"\n",
" <div id=\"df-a9b9de52-61c2-488e-a53c-0b3cb5877e98\" class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>title</th>\n",
" <th>width_cm</th>\n",
" <th>height_cm</th>\n",
" <th>attribution</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>68227</th>\n",
" <td>Pink Bayonet</td>\n",
" <td>45.72</td>\n",
" <td>478.79</td>\n",
" <td>Gene Davis</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14928</th>\n",
" <td>La Négresse</td>\n",
" <td>623.30</td>\n",
" <td>453.90</td>\n",
" <td>Henri Matisse</td>\n",
" </tr>\n",
" <tr>\n",
" <th>63620</th>\n",
" <td>Brownie, Sunny, Dave, and Al</td>\n",
" <td>337.20</td>\n",
" <td>442.00</td>\n",
" <td>Al Loving</td>\n",
" </tr>\n",
" <tr>\n",
" <th>36789</th>\n",
" <td>La scienza della fiacca (4x)</td>\n",
" <td>76.20</td>\n",
" <td>383.50</td>\n",
" <td>Frank Stella</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27121</th>\n",
" <td>Zim Zum</td>\n",
" <td>560.10</td>\n",
" <td>380.30</td>\n",
" <td>Anselm Kiefer</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <div class=\"colab-df-buttons\">\n",
"\n",
" <div class=\"colab-df-container\">\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-a9b9de52-61c2-488e-a53c-0b3cb5877e98')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
" </svg>\n",
" </button>\n",
"\n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" .colab-df-buttons div {\n",
" margin-bottom: 4px;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-a9b9de52-61c2-488e-a53c-0b3cb5877e98 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-a9b9de52-61c2-488e-a53c-0b3cb5877e98');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
"\n",
"\n",
" <div id=\"df-bfa79b15-8acd-41ce-b3af-a2c0ff21693c\">\n",
" <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-bfa79b15-8acd-41ce-b3af-a2c0ff21693c')\"\n",
" title=\"Suggest charts\"\n",
" style=\"display:none;\">\n",
"\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <g>\n",
" <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
" </g>\n",
"</svg>\n",
" </button>\n",
"\n",
"<style>\n",
" .colab-df-quickchart {\n",
" --bg-color: #E8F0FE;\n",
" --fill-color: #1967D2;\n",
" --hover-bg-color: #E2EBFA;\n",
" --hover-fill-color: #174EA6;\n",
" --disabled-fill-color: #AAA;\n",
" --disabled-bg-color: #DDD;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-quickchart {\n",
" --bg-color: #3B4455;\n",
" --fill-color: #D2E3FC;\n",
" --hover-bg-color: #434B5C;\n",
" --hover-fill-color: #FFFFFF;\n",
" --disabled-bg-color: #3B4455;\n",
" --disabled-fill-color: #666;\n",
" }\n",
"\n",
" .colab-df-quickchart {\n",
" background-color: var(--bg-color);\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: var(--fill-color);\n",
" height: 32px;\n",
" padding: 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-quickchart:hover {\n",
" background-color: var(--hover-bg-color);\n",
" box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: var(--button-hover-fill-color);\n",
" }\n",
"\n",
" .colab-df-quickchart-complete:disabled,\n",
" .colab-df-quickchart-complete:disabled:hover {\n",
" background-color: var(--disabled-bg-color);\n",
" fill: var(--disabled-fill-color);\n",
" box-shadow: none;\n",
" }\n",
"\n",
" .colab-df-spinner {\n",
" border: 2px solid var(--fill-color);\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" animation:\n",
" spin 1s steps(1) infinite;\n",
" }\n",
"\n",
" @keyframes spin {\n",
" 0% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" border-left-color: var(--fill-color);\n",
" }\n",
" 20% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 30% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 40% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 60% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 80% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" 90% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" }\n",
"</style>\n",
"\n",
" <script>\n",
" async function quickchart(key) {\n",
" const quickchartButtonEl =\n",
" document.querySelector('#' + key + ' button');\n",
" quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n",
" quickchartButtonEl.classList.add('colab-df-spinner');\n",
" try {\n",
" const charts = await google.colab.kernel.invokeFunction(\n",
" 'suggestCharts', [key], {});\n",
" } catch (error) {\n",
" console.error('Error during call to suggestCharts:', error);\n",
" }\n",
" quickchartButtonEl.classList.remove('colab-df-spinner');\n",
" quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
" }\n",
" (() => {\n",
" let quickchartButtonEl =\n",
" document.querySelector('#df-bfa79b15-8acd-41ce-b3af-a2c0ff21693c button');\n",
" quickchartButtonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
" })();\n",
" </script>\n",
" </div>\n",
"\n",
" <div id=\"id_13c1e940-c040-4a2b-936a-1139c5cb0bcb\">\n",
" <style>\n",
" .colab-df-generate {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-generate:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-generate {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-generate:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
" <button class=\"colab-df-generate\" onclick=\"generateWithVariable('top_tall')\"\n",
" title=\"Generate code using this dataframe.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M7,19H8.4L18.45,9,17,7.55,7,17.6ZM5,21V16.75L18.45,3.32a2,2,0,0,1,2.83,0l1.4,1.43a1.91,1.91,0,0,1,.58,1.4,1.91,1.91,0,0,1-.58,1.4L9.25,21ZM18.45,9,17,7.55Zm-12,3A5.31,5.31,0,0,0,4.9,8.1,5.31,5.31,0,0,0,1,6.5,5.31,5.31,0,0,0,4.9,4.9,5.31,5.31,0,0,0,6.5,1,5.31,5.31,0,0,0,8.1,4.9,5.31,5.31,0,0,0,12,6.5,5.46,5.46,0,0,0,6.5,12Z\"/>\n",
" </svg>\n",
" </button>\n",
" <script>\n",
" (() => {\n",
" const buttonEl =\n",
" document.querySelector('#id_13c1e940-c040-4a2b-936a-1139c5cb0bcb button.colab-df-generate');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" buttonEl.onclick = () => {\n",
" google.colab.notebook.generateWithVariable('top_tall');\n",
" }\n",
" })();\n",
" </script>\n",
" </div>\n",
"\n",
" </div>\n",
" </div>\n"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "dataframe",
"variable_name": "top_tall",
"summary": "{\n \"name\": \"top_tall\",\n \"rows\": 5,\n \"fields\": [\n {\n \"column\": \"title\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 5,\n \"samples\": [\n \"La N\\u00e9gresse\",\n \"Zim Zum\",\n \"Brownie, Sunny, Dave, and Al\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"width_cm\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 266.5713358183884,\n \"min\": 45.72,\n \"max\": 623.3,\n \"num_unique_values\": 5,\n \"samples\": [\n 623.3,\n 560.1,\n 337.2\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"height_cm\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 43.8791467556059,\n \"min\": 380.3,\n \"max\": 478.79,\n \"num_unique_values\": 5,\n \"samples\": [\n 453.9,\n 380.3,\n 442.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"attribution\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 5,\n \"samples\": [\n \"Henri Matisse\",\n \"Anselm Kiefer\",\n \"Al Loving\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}"
}
},
"metadata": {},
"execution_count": 25
}
]
},
{
"cell_type": "code",
"source": [
"top_wide"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 206
},
"id": "6Lnb7FMeUfe4",
"outputId": "d6c2a16f-4da7-450a-9bd4-be7346c6819e"
},
"execution_count": 16,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" title width_cm height_cm \\\n",
"15034 Satan's Flag 1097.28 289.56 \n",
"40979 Three Panels: Yellow, Orange, Blue 1016.00 304.80 \n",
"14934 Large Decoration with Masks 996.40 353.60 \n",
"16195 Reconciliation Elegy 924.20 304.80 \n",
"69668 Salut Tom 792.48 279.40 \n",
"\n",
" attribution \n",
"15034 Gene Davis \n",
"40979 Ellsworth Kelly \n",
"14934 Henri Matisse \n",
"16195 Robert Motherwell \n",
"69668 Joan Mitchell "
],
"text/html": [
"\n",
" <div id=\"df-a391339c-0255-4b4c-a41b-98c1079a314a\" class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>title</th>\n",
" <th>width_cm</th>\n",
" <th>height_cm</th>\n",
" <th>attribution</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>15034</th>\n",
" <td>Satan's Flag</td>\n",
" <td>1097.28</td>\n",
" <td>289.56</td>\n",
" <td>Gene Davis</td>\n",
" </tr>\n",
" <tr>\n",
" <th>40979</th>\n",
" <td>Three Panels: Yellow, Orange, Blue</td>\n",
" <td>1016.00</td>\n",
" <td>304.80</td>\n",
" <td>Ellsworth Kelly</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14934</th>\n",
" <td>Large Decoration with Masks</td>\n",
" <td>996.40</td>\n",
" <td>353.60</td>\n",
" <td>Henri Matisse</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16195</th>\n",
" <td>Reconciliation Elegy</td>\n",
" <td>924.20</td>\n",
" <td>304.80</td>\n",
" <td>Robert Motherwell</td>\n",
" </tr>\n",
" <tr>\n",
" <th>69668</th>\n",
" <td>Salut Tom</td>\n",
" <td>792.48</td>\n",
" <td>279.40</td>\n",
" <td>Joan Mitchell</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <div class=\"colab-df-buttons\">\n",
"\n",
" <div class=\"colab-df-container\">\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-a391339c-0255-4b4c-a41b-98c1079a314a')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
" </svg>\n",
" </button>\n",
"\n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" .colab-df-buttons div {\n",
" margin-bottom: 4px;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-a391339c-0255-4b4c-a41b-98c1079a314a button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-a391339c-0255-4b4c-a41b-98c1079a314a');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
"\n",
"\n",
" <div id=\"df-ca5dacff-f854-42b9-99b8-e76afebbd45b\">\n",
" <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-ca5dacff-f854-42b9-99b8-e76afebbd45b')\"\n",
" title=\"Suggest charts\"\n",
" style=\"display:none;\">\n",
"\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <g>\n",
" <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
" </g>\n",
"</svg>\n",
" </button>\n",
"\n",
"<style>\n",
" .colab-df-quickchart {\n",
" --bg-color: #E8F0FE;\n",
" --fill-color: #1967D2;\n",
" --hover-bg-color: #E2EBFA;\n",
" --hover-fill-color: #174EA6;\n",
" --disabled-fill-color: #AAA;\n",
" --disabled-bg-color: #DDD;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-quickchart {\n",
" --bg-color: #3B4455;\n",
" --fill-color: #D2E3FC;\n",
" --hover-bg-color: #434B5C;\n",
" --hover-fill-color: #FFFFFF;\n",
" --disabled-bg-color: #3B4455;\n",
" --disabled-fill-color: #666;\n",
" }\n",
"\n",
" .colab-df-quickchart {\n",
" background-color: var(--bg-color);\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: var(--fill-color);\n",
" height: 32px;\n",
" padding: 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-quickchart:hover {\n",
" background-color: var(--hover-bg-color);\n",
" box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: var(--button-hover-fill-color);\n",
" }\n",
"\n",
" .colab-df-quickchart-complete:disabled,\n",
" .colab-df-quickchart-complete:disabled:hover {\n",
" background-color: var(--disabled-bg-color);\n",
" fill: var(--disabled-fill-color);\n",
" box-shadow: none;\n",
" }\n",
"\n",
" .colab-df-spinner {\n",
" border: 2px solid var(--fill-color);\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" animation:\n",
" spin 1s steps(1) infinite;\n",
" }\n",
"\n",
" @keyframes spin {\n",
" 0% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" border-left-color: var(--fill-color);\n",
" }\n",
" 20% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 30% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 40% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 60% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 80% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" 90% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" }\n",
"</style>\n",
"\n",
" <script>\n",
" async function quickchart(key) {\n",
" const quickchartButtonEl =\n",
" document.querySelector('#' + key + ' button');\n",
" quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n",
" quickchartButtonEl.classList.add('colab-df-spinner');\n",
" try {\n",
" const charts = await google.colab.kernel.invokeFunction(\n",
" 'suggestCharts', [key], {});\n",
" } catch (error) {\n",
" console.error('Error during call to suggestCharts:', error);\n",
" }\n",
" quickchartButtonEl.classList.remove('colab-df-spinner');\n",
" quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
" }\n",
" (() => {\n",
" let quickchartButtonEl =\n",
" document.querySelector('#df-ca5dacff-f854-42b9-99b8-e76afebbd45b button');\n",
" quickchartButtonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
" })();\n",
" </script>\n",
" </div>\n",
"\n",
" <div id=\"id_6e77eda8-a26c-4b92-9c38-6ad1aff11681\">\n",
" <style>\n",
" .colab-df-generate {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-generate:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-generate {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-generate:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
" <button class=\"colab-df-generate\" onclick=\"generateWithVariable('top_wide')\"\n",
" title=\"Generate code using this dataframe.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M7,19H8.4L18.45,9,17,7.55,7,17.6ZM5,21V16.75L18.45,3.32a2,2,0,0,1,2.83,0l1.4,1.43a1.91,1.91,0,0,1,.58,1.4,1.91,1.91,0,0,1-.58,1.4L9.25,21ZM18.45,9,17,7.55Zm-12,3A5.31,5.31,0,0,0,4.9,8.1,5.31,5.31,0,0,0,1,6.5,5.31,5.31,0,0,0,4.9,4.9,5.31,5.31,0,0,0,6.5,1,5.31,5.31,0,0,0,8.1,4.9,5.31,5.31,0,0,0,12,6.5,5.46,5.46,0,0,0,6.5,12Z\"/>\n",
" </svg>\n",
" </button>\n",
" <script>\n",
" (() => {\n",
" const buttonEl =\n",
" document.querySelector('#id_6e77eda8-a26c-4b92-9c38-6ad1aff11681 button.colab-df-generate');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" buttonEl.onclick = () => {\n",
" google.colab.notebook.generateWithVariable('top_wide');\n",
" }\n",
" })();\n",
" </script>\n",
" </div>\n",
"\n",
" </div>\n",
" </div>\n"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "dataframe",
"variable_name": "top_wide",
"summary": "{\n \"name\": \"top_wide\",\n \"rows\": 5,\n \"fields\": [\n {\n \"column\": \"title\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 5,\n \"samples\": [\n \"Three Panels: Yellow, Orange, Blue\",\n \"Salut Tom\",\n \"Large Decoration with Masks\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"width_cm\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 114.57789804320899,\n \"min\": 792.48,\n \"max\": 1097.28,\n \"num_unique_values\": 5,\n \"samples\": [\n 1016.0,\n 792.48,\n 996.4\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"height_cm\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 28.484822625391242,\n \"min\": 279.4,\n \"max\": 353.6,\n \"num_unique_values\": 4,\n \"samples\": [\n 304.8,\n 279.4,\n 289.56\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"attribution\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 5,\n \"samples\": [\n \"Ellsworth Kelly\",\n \"Joan Mitchell\",\n \"Henri Matisse\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}"
}
},
"metadata": {},
"execution_count": 16
}
]
},
{
"cell_type": "code",
"source": [
"img_height_pixels = person_img.shape[0]\n",
"print(img_height_pixels)\n",
"zoom2 = plot_height_in_ft / img_height_pixels\n",
"print(zoom2)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 198
},
"id": "4kmNpaJJRl_y",
"outputId": "51d7d74f-438d-423d-8393-1ce70e2961c0"
},
"execution_count": 17,
"outputs": [
{
"output_type": "error",
"ename": "NameError",
"evalue": "name 'person_img' is not defined",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-17-754c92deb9fa>\u001b[0m in \u001b[0;36m<cell line: 0>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mimg_height_pixels\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mperson_img\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mimg_height_pixels\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0mzoom2\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mplot_height_in_ft\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0mimg_height_pixels\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mzoom2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mNameError\u001b[0m: name 'person_img' is not defined"
]
}
]
},
{
"cell_type": "code",
"source": [
"usable_dims.head()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 206
},
"id": "_ucAIYo6lGEw",
"outputId": "ba9601ac-4027-4380-df1c-c14237a769d5"
},
"execution_count": 18,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" height_cm width_cm aspect_ratio\n",
"0 62.2 34.8 0.559486\n",
"1 224.8 77.0 0.342527\n",
"2 194.6 80.0 0.411100\n",
"3 48.0 34.1 0.710417\n",
"4 148.8 115.1 0.773522"
],
"text/html": [
"\n",
" <div id=\"df-520ea8b4-13e4-4b83-a6b0-f4ceed29b6aa\" class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>height_cm</th>\n",
" <th>width_cm</th>\n",
" <th>aspect_ratio</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>62.2</td>\n",
" <td>34.8</td>\n",
" <td>0.559486</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>224.8</td>\n",
" <td>77.0</td>\n",
" <td>0.342527</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>194.6</td>\n",
" <td>80.0</td>\n",
" <td>0.411100</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>48.0</td>\n",
" <td>34.1</td>\n",
" <td>0.710417</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>148.8</td>\n",
" <td>115.1</td>\n",
" <td>0.773522</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <div class=\"colab-df-buttons\">\n",
"\n",
" <div class=\"colab-df-container\">\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-520ea8b4-13e4-4b83-a6b0-f4ceed29b6aa')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
" </svg>\n",
" </button>\n",
"\n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" .colab-df-buttons div {\n",
" margin-bottom: 4px;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-520ea8b4-13e4-4b83-a6b0-f4ceed29b6aa button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-520ea8b4-13e4-4b83-a6b0-f4ceed29b6aa');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
"\n",
"\n",
" <div id=\"df-09cbec53-2c1b-4a47-afe9-22483bb270da\">\n",
" <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-09cbec53-2c1b-4a47-afe9-22483bb270da')\"\n",
" title=\"Suggest charts\"\n",
" style=\"display:none;\">\n",
"\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <g>\n",
" <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
" </g>\n",
"</svg>\n",
" </button>\n",
"\n",
"<style>\n",
" .colab-df-quickchart {\n",
" --bg-color: #E8F0FE;\n",
" --fill-color: #1967D2;\n",
" --hover-bg-color: #E2EBFA;\n",
" --hover-fill-color: #174EA6;\n",
" --disabled-fill-color: #AAA;\n",
" --disabled-bg-color: #DDD;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-quickchart {\n",
" --bg-color: #3B4455;\n",
" --fill-color: #D2E3FC;\n",
" --hover-bg-color: #434B5C;\n",
" --hover-fill-color: #FFFFFF;\n",
" --disabled-bg-color: #3B4455;\n",
" --disabled-fill-color: #666;\n",
" }\n",
"\n",
" .colab-df-quickchart {\n",
" background-color: var(--bg-color);\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: var(--fill-color);\n",
" height: 32px;\n",
" padding: 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-quickchart:hover {\n",
" background-color: var(--hover-bg-color);\n",
" box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: var(--button-hover-fill-color);\n",
" }\n",
"\n",
" .colab-df-quickchart-complete:disabled,\n",
" .colab-df-quickchart-complete:disabled:hover {\n",
" background-color: var(--disabled-bg-color);\n",
" fill: var(--disabled-fill-color);\n",
" box-shadow: none;\n",
" }\n",
"\n",
" .colab-df-spinner {\n",
" border: 2px solid var(--fill-color);\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" animation:\n",
" spin 1s steps(1) infinite;\n",
" }\n",
"\n",
" @keyframes spin {\n",
" 0% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" border-left-color: var(--fill-color);\n",
" }\n",
" 20% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 30% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 40% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 60% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 80% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" 90% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" }\n",
"</style>\n",
"\n",
" <script>\n",
" async function quickchart(key) {\n",
" const quickchartButtonEl =\n",
" document.querySelector('#' + key + ' button');\n",
" quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n",
" quickchartButtonEl.classList.add('colab-df-spinner');\n",
" try {\n",
" const charts = await google.colab.kernel.invokeFunction(\n",
" 'suggestCharts', [key], {});\n",
" } catch (error) {\n",
" console.error('Error during call to suggestCharts:', error);\n",
" }\n",
" quickchartButtonEl.classList.remove('colab-df-spinner');\n",
" quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
" }\n",
" (() => {\n",
" let quickchartButtonEl =\n",
" document.querySelector('#df-09cbec53-2c1b-4a47-afe9-22483bb270da button');\n",
" quickchartButtonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
" })();\n",
" </script>\n",
" </div>\n",
"\n",
" </div>\n",
" </div>\n"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "dataframe",
"variable_name": "usable_dims",
"summary": "{\n \"name\": \"usable_dims\",\n \"rows\": 4361,\n \"fields\": [\n {\n \"column\": \"height_cm\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 59.40225138313463,\n \"min\": 7.5,\n \"max\": 478.79,\n \"num_unique_values\": 1546,\n \"samples\": [\n 137.5,\n 60.6,\n 110.2\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"width_cm\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 73.40615968406226,\n \"min\": 0.2,\n \"max\": 1097.28,\n \"num_unique_values\": 1555,\n \"samples\": [\n 167.8,\n 88.8,\n 33.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"aspect_ratio\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.4706424615064711,\n \"min\": 0.0026109660574412537,\n \"max\": 10.261083743842365,\n \"num_unique_values\": 3706,\n \"samples\": [\n 1.4118129614438062,\n 1.3377483443708609,\n 0.4859437751004016\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}"
}
},
"metadata": {},
"execution_count": 18
}
]
},
{
"cell_type": "code",
"source": [
"df_rects.head()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 206
},
"id": "Z1GG-U1Fn2N6",
"outputId": "568b4288-13be-4d85-8872-72264991bd8f"
},
"execution_count": 28,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" height_cm width_cm objectid aspect_ratio width_ft height_ft area\n",
"0 62.2 34.8 0 0.559486 1.141732 2.040682 2.329913\n",
"1 224.8 77.0 1 0.342527 2.526247 7.375328 18.631898\n",
"2 194.6 80.0 4 0.411100 2.624672 6.384514 16.757256\n",
"3 48.0 34.1 17 0.710417 1.118766 1.574803 1.761837\n",
"4 148.8 115.1 18 0.773522 3.776247 4.881890 18.435220"
],
"text/html": [
"\n",
" <div id=\"df-a046b64c-a8e3-4d11-b5bb-d710b8a96961\" class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>height_cm</th>\n",
" <th>width_cm</th>\n",
" <th>objectid</th>\n",
" <th>aspect_ratio</th>\n",
" <th>width_ft</th>\n",
" <th>height_ft</th>\n",
" <th>area</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>62.2</td>\n",
" <td>34.8</td>\n",
" <td>0</td>\n",
" <td>0.559486</td>\n",
" <td>1.141732</td>\n",
" <td>2.040682</td>\n",
" <td>2.329913</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>224.8</td>\n",
" <td>77.0</td>\n",
" <td>1</td>\n",
" <td>0.342527</td>\n",
" <td>2.526247</td>\n",
" <td>7.375328</td>\n",
" <td>18.631898</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>194.6</td>\n",
" <td>80.0</td>\n",
" <td>4</td>\n",
" <td>0.411100</td>\n",
" <td>2.624672</td>\n",
" <td>6.384514</td>\n",
" <td>16.757256</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>48.0</td>\n",
" <td>34.1</td>\n",
" <td>17</td>\n",
" <td>0.710417</td>\n",
" <td>1.118766</td>\n",
" <td>1.574803</td>\n",
" <td>1.761837</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>148.8</td>\n",
" <td>115.1</td>\n",
" <td>18</td>\n",
" <td>0.773522</td>\n",
" <td>3.776247</td>\n",
" <td>4.881890</td>\n",
" <td>18.435220</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>\n",
" <div class=\"colab-df-buttons\">\n",
"\n",
" <div class=\"colab-df-container\">\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-a046b64c-a8e3-4d11-b5bb-d710b8a96961')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
" </svg>\n",
" </button>\n",
"\n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" .colab-df-buttons div {\n",
" margin-bottom: 4px;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-a046b64c-a8e3-4d11-b5bb-d710b8a96961 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-a046b64c-a8e3-4d11-b5bb-d710b8a96961');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
"\n",
"\n",
" <div id=\"df-bd1429d3-f606-4436-afc9-60fd124e2061\">\n",
" <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-bd1429d3-f606-4436-afc9-60fd124e2061')\"\n",
" title=\"Suggest charts\"\n",
" style=\"display:none;\">\n",
"\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <g>\n",
" <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
" </g>\n",
"</svg>\n",
" </button>\n",
"\n",
"<style>\n",
" .colab-df-quickchart {\n",
" --bg-color: #E8F0FE;\n",
" --fill-color: #1967D2;\n",
" --hover-bg-color: #E2EBFA;\n",
" --hover-fill-color: #174EA6;\n",
" --disabled-fill-color: #AAA;\n",
" --disabled-bg-color: #DDD;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-quickchart {\n",
" --bg-color: #3B4455;\n",
" --fill-color: #D2E3FC;\n",
" --hover-bg-color: #434B5C;\n",
" --hover-fill-color: #FFFFFF;\n",
" --disabled-bg-color: #3B4455;\n",
" --disabled-fill-color: #666;\n",
" }\n",
"\n",
" .colab-df-quickchart {\n",
" background-color: var(--bg-color);\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: var(--fill-color);\n",
" height: 32px;\n",
" padding: 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-quickchart:hover {\n",
" background-color: var(--hover-bg-color);\n",
" box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: var(--button-hover-fill-color);\n",
" }\n",
"\n",
" .colab-df-quickchart-complete:disabled,\n",
" .colab-df-quickchart-complete:disabled:hover {\n",
" background-color: var(--disabled-bg-color);\n",
" fill: var(--disabled-fill-color);\n",
" box-shadow: none;\n",
" }\n",
"\n",
" .colab-df-spinner {\n",
" border: 2px solid var(--fill-color);\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" animation:\n",
" spin 1s steps(1) infinite;\n",
" }\n",
"\n",
" @keyframes spin {\n",
" 0% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" border-left-color: var(--fill-color);\n",
" }\n",
" 20% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 30% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 40% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 60% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 80% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" 90% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" }\n",
"</style>\n",
"\n",
" <script>\n",
" async function quickchart(key) {\n",
" const quickchartButtonEl =\n",
" document.querySelector('#' + key + ' button');\n",
" quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n",
" quickchartButtonEl.classList.add('colab-df-spinner');\n",
" try {\n",
" const charts = await google.colab.kernel.invokeFunction(\n",
" 'suggestCharts', [key], {});\n",
" } catch (error) {\n",
" console.error('Error during call to suggestCharts:', error);\n",
" }\n",
" quickchartButtonEl.classList.remove('colab-df-spinner');\n",
" quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
" }\n",
" (() => {\n",
" let quickchartButtonEl =\n",
" document.querySelector('#df-bd1429d3-f606-4436-afc9-60fd124e2061 button');\n",
" quickchartButtonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
" })();\n",
" </script>\n",
" </div>\n",
"\n",
" </div>\n",
" </div>\n"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "dataframe",
"variable_name": "df_rects",
"summary": "{\n \"name\": \"df_rects\",\n \"rows\": 4361,\n \"fields\": [\n {\n \"column\": \"height_cm\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 59.40225138313463,\n \"min\": 7.5,\n \"max\": 478.79,\n \"num_unique_values\": 1546,\n \"samples\": [\n 137.5,\n 60.6,\n 110.2\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"width_cm\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 73.40615968406226,\n \"min\": 0.2,\n \"max\": 1097.28,\n \"num_unique_values\": 1555,\n \"samples\": [\n 167.8,\n 88.8,\n 33.0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"objectid\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 63446,\n \"min\": 0,\n \"max\": 231090,\n \"num_unique_values\": 4361,\n \"samples\": [\n 61367,\n 50584,\n 46087\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"aspect_ratio\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 0.4706424615064711,\n \"min\": 0.0026109660574412537,\n \"max\": 10.261083743842365,\n \"num_unique_values\": 3706,\n \"samples\": [\n 1.4118129614438062,\n 1.3377483443708609,\n 0.4859437751004016\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"width_ft\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 2.4083385723117714,\n \"min\": 0.006561679790026247,\n \"max\": 36.0,\n \"num_unique_values\": 1555,\n \"samples\": [\n 5.505249343832022,\n 2.9133858267716533,\n 1.0826771653543308\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"height_ft\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 1.9488927619138658,\n \"min\": 0.24606299212598426,\n \"max\": 15.708333333333334,\n \"num_unique_values\": 1546,\n \"samples\": [\n 4.511154855643045,\n 1.9881889763779528,\n 3.615485564304462\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"area\",\n \"properties\": {\n \"dtype\": \"number\",\n \"std\": 21.465291288941764,\n \"min\": 0.010591687850042365,\n \"max\": 379.2416695944503,\n \"num_unique_values\": 3854,\n \"samples\": [\n 2.383129766259532,\n 0.5525976329730438,\n 4.167979863737505\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}"
}
},
"metadata": {},
"execution_count": 28
}
]
},
{
"cell_type": "code",
"source": [
"import matplotlib.pyplot as plt\n",
"from matplotlib.patches import Rectangle\n",
"import matplotlib.image as mpimg\n",
"from matplotlib.offsetbox import OffsetImage, AnnotationBbox\n",
"\n",
"\n",
"# Convert dimensions to feet for consistency with MoMA plot\n",
"df_rects = usable_dims.copy()\n",
"df_rects[\"width_ft\"] = df_rects[\"width_cm\"] / 30.48\n",
"df_rects[\"height_ft\"] = df_rects[\"height_cm\"] / 30.48\n",
"\n",
"\n",
"# Load person silhouette image\n",
"person_img = mpimg.imread(\"/content/person.png\")\n",
"\n",
"\n",
"# Plot setup\n",
"fig, ax = plt.subplots(figsize=(12, 6))\n",
"ax.set_facecolor(\"#f8f6fa\")\n",
"\n",
"count =0\n",
"# Add one rectangle per painting\n",
"for _, row in df_rects.iterrows():\n",
" # Place all rectangles at origin (0,0) to mimic overlay style\n",
" rect = Rectangle((0, 0), row[\"width_ft\"], row[\"height_ft\"],\n",
" linewidth=0, edgecolor=None, facecolor=\"#7b3294\", alpha=0.02)\n",
" count=count+1\n",
" ax.add_patch(rect)\n",
"\n",
"# Highlight the largest painting by area\n",
"# df_rects[\"area\"] = df_rects[\"width_ft\"] * df_rects[\"height_ft\"]\n",
"# largest = df_rects.loc[df_rects[\"area\"].idxmax()]\n",
"# highlight = Rectangle((0, 0), largest[\"width_ft\"], largest[\"height_ft\"],\n",
"# linewidth=2, edgecolor=\"orange\", facecolor=\"none\")\n",
"# ax.add_patch(highlight)\n",
"# ax.text(largest[\"width_ft\"] + 1, largest[\"height_ft\"] / 2,\n",
"# \"Largest Painting\", fontsize=10, color=\"orange\", va=\"center\")\n",
"\n",
"print(count)\n",
"\n",
"# Paintings to annotate: (width_cm, height_cm, label)\n",
"# Highlight selected paintings with label position tuning\n",
"highlights = [\n",
" (1097.28, 289.56, \"Satan's Flag\\n(Gene Davis)\", None), # Default vertical center\n",
" (996.40, 353.60, \"Large Decoration with Masks\\n(Henri Matisse)\", 12) # Manually set Y label position to 17 ft\n",
"]\n",
"\n",
"\n",
"for width_cm, height_cm, label, custom_y in highlights:\n",
" width_ft = width_cm / 30.48\n",
" height_ft = height_cm / 30.48\n",
" rect = Rectangle((0, 0), width_ft, height_ft,\n",
" linewidth=2, edgecolor=\"orange\", facecolor=\"none\")\n",
" ax.add_patch(rect)\n",
" y_text = custom_y if custom_y else height_ft / 2\n",
" ax.text(width_ft + 1, y_text,\n",
" label, fontsize=9, color=\"orange\", va=\"center\")\n",
"# Optional: add silhouette reference for 6 ft tall person\n",
"#ax.plot([75, 75], [0, 6], color=\"gray\", linewidth=2)\n",
"#ax.text(75, 6.2, \"Human\\n(6 ft)\", ha=\"center\", color=\"gray\", fontsize=10)\n",
"\n",
"# Match image height to exactly 6 ft on plot\n",
"img_height_pixels = person_img.shape[0]\n",
"img_height_pixels = img_height_pixels/15\n",
"# print(img_height_pixels)\n",
"\n",
"plot_height_in_ft = 6\n",
"zoom2 = plot_height_in_ft / img_height_pixels\n",
"\n",
"imagebox = OffsetImage(person_img, zoom=zoom2)# Add silhouette image (at 75 ft, scaled to 6 ft tall)\n",
"\n",
"# imagebox = OffsetImage(person_img, zoom=0.06)\n",
"ab = AnnotationBbox(imagebox, (45, 0), frameon=False, box_alignment=(0.5, 0))\n",
"ax.add_artist(ab)\n",
"ax.text(45, 6.5, \"Human\\n(6 ft)\", ha=\"center\", color=\"gray\", fontsize=10)\n",
"\n",
"\n",
"# Axes and labels\n",
"ax.set_xlim(0, 50)\n",
"ax.set_ylim(0, 20)\n",
"ax.set_xlabel(\"Width (ft)\")\n",
"ax.set_ylabel(\"Height (ft)\")\n",
"ax.set_title(\"4361 National Gallery of Art Paintings by Size\", fontsize=16, fontweight='bold', pad=15)\n",
"ax.grid(False)\n",
"ax.set_aspect('equal')\n",
"\n",
"# Save output for download\n",
"output_path = \"nga_paintings_by_size_rectangles.png\"\n",
"plt.tight_layout()\n",
"plt.savefig(output_path, dpi=300)\n",
"\n",
"\n",
"plt.show()\n",
"\n",
"\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 491
},
"id": "SojJw0jcMTvM",
"outputId": "9c7e6352-14b4-4ff4-93f4-22a9e905aa5c"
},
"execution_count": 42,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"4361\n"
]
},
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 1200x600 with 1 Axes>"
],
"image/png": "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i1N8fLxatmypq6++Wt99953f+P21vWHDBt1www1q3LixoqOjlZ6errvuustvT7Vff/1VDz74oAYNGqQ2bdqofv36ioqKUkJCgtq3b6+RI0fqxx9/DOqaBuKbb74pdk6vv/66HnrooWKvRUlq2bKlxo4dq19++aXYvvfff18333yzunfvrvT0dCUkJCgqKkr169dXz549NXbs2GIJlMr0448/auTIkWrTpo1q166t2NhYtWjRQiNHjtTChQv91vE3H9fs2bM1ePBg1a9fX6ZpasKECapXr563THp6ujweT7G2/vnPf/q0NWHChKDi37Ztmx5++GF17dpVdevW9V673r176+mnny7We6ngNVd0LqNbb7213PML7dmzR19//bV3vV27drrqqqu86xkZGZoxY4bfuv7mWNq0aZNGjRqlxo0by+l0+lzvwrZs2VLqvGIV8dhjjxVLoi1YsEBSfi/BJ598UsOGDVOHDh2UlpammJgYxcfHKz09XZdccok++OADvz0Dy5pTyt/8QN9//72GDBmievXqKTY2Vh06dNALL7zg03Om4HktmqC4/vrr/b5/lTWnlL/X+NKlSzV8+HClpKQoJiZGrVu31qOPPqrc3Fy/1/DgwYMaPXq0mjdvrpiYGDVp0kQ33XSTtm/fXub76v79+/X444+re/fuqlevnqKiopSYmKiWLVvq3HPP1YMPPqi5c+eW9PQF7PPPP9fZZ5+txMREJSQkqG/fvvr88899ynz44Yc+sf71r3/129bpp5/uLRMbGxvw0Nh169Z5Hzdv3rxYQkqSUlJSdMMNN/gkSguUNqdU0X0lLf5+d44dO6bXXntNgwYNUlpamqKjo5WUlKSzzjpL48aNq7ShvwAQEBsAUG5TpkyxJdmS7Msvv9y2bdtu1qyZd5ske9OmTQG3t2vXLrtNmzY+9b///nufMvfff7/P/nfffdf+4osv7LvuusseMWKEfdttt9mTJk2ys7OzAzrmY4895tPeY489FnC8ZbXVr18/7+OoqCj7999/95YtXM7fn6NatWoVK1N0adasmb1161ZvncLHK20peE6Kxjtp0iSfGA4cOGAPGDCgzPb+8Ic/2Lm5uaVeiyuuuMKOi4vzW79r1662y+Xyqf/8888HdC6PP/54sWs3cuRInzKzZ88O+Dm85pprfOqedtppAdctqkOHDmXGX69ePXvp0qXF6hZ9ngubNGlSqa/ZvLw8+/rrry/1uIZh2I8++mix4xa9dtdee22xupMmTbIffvhhn22ff/55sbY6d+7s3V+rVi07MzMz4Gv3wQcflPk70KBBA/u7777z1in6mvO3jBw5MuAYbNu2//GPfxR7vX3zzTc+24YNG+a3btHn6ZJLLrETExOLxRPI67zoa6A0Rd+D/b3+k5OTfco888wztm3b9sKFCwOKZ9CgQcV+Z8t6XRZ9f7ruuutKbP8vf/mLt14gz2vB69K2bXv27NmlPudFr/k111xjOxwOv20OHTq02LXbsWOH3bp1a7/l69evbw8bNsxvXLZt23v37i32/PhbSnpNlaRomw888ECJbY8dO9ZbLy8vz05PT/fuS0lJsXNycnzaXr58ebH3hEAVfb3fcsst9o8//ljsGCUp+pop/P9EoH/viv7u/Pbbb3bbtm1LrZOWlmb//PPPAZ8nAFRE1e1rDQBV3N69e71DYlJSUvTaa68F3casWbM0ceJEud1u7d27VwsXLvQOi3E6nXriiSc0YMAAnzqLFi3yWR8zZox3Xp8CEydO1IMPPqgPPvhAAwcODDquytK/f3/FxMTo22+/VV5ensaOHet3wteSJCQkqG3btqpbt65q1aqlw4cPa/ny5d5vcbds2aI777xTU6dOlXRi/o05c+b49CIZPHiw4uPjveuB9hC78sorNXv2bO96bGysunXrJpfLpUWLFnnn7Pr444+VkJCgN998s8S2PvvsMzkcDnXv3l2SfHoWLVy4UJ9++qmuvvrqYvVat26t1NRU1a1bV5ZlaefOnfr111+9PTUef/xxXXLJJercuXNA51SWn3/+2We9aM+9YMXGxqp9+/aqV6+eEhISdPToUa1atUo7d+6UlD9h+vXXX6+lS5dW6DiF/eUvf/G5QUBCQoK6d+8u0zT1888/Kzs7W7Zt68knn1SjRo106623ltjW+++/Lyl/SFTz5s29Q2zuvPNO/eMf//D2JJkwYYIuu+wyb73Vq1f7nNNVV12lxMTEgOL/4YcfdN111/n0vmrRooXatm2rFStWeK/dvn37dOmll2rx4sVq166dd4603377zWf45VlnnaVmzZpJCn5+oXfeecdn/aqrrlLLli2VnJzsvePil19+qQMHDqhevXqltjVt2jRJ+UOITzvtNO3fv18Oh8M7/9F//vMfb9n4+HgNHjzYu56SkhJU3KXZtm1bsbtFNmzY0Gc9LS1NzZo1U926dRUdHa19+/Zp6dKlOnbsmCTpv//9ryZMmFDsRhLBePfdd1W7dm1169ZNW7du9Rm+9corr+jee+9V06ZNA3pepfLPiffBBx8oJiZGvXv31sGDB7VixQrvvqlTp+rnn39Wr169vNuuv/56n1ijoqLUrVs3ud1uLVy40Od5LOrNN9/Uli1bfGLu2LGjcnNztWPHDm3atMl7jSviueeeU2pqqjp16qR169b59DB64okn1KdPH5133nlyOp265557dM8990jK7xn46aef6tprr/WWL3gPKFDa+0VRffv21VdffeVdf+ONN/TGG2/I6XTq1FNPVc+ePTV48GANHjxY0dHRQZ1j0fmmCvzwww8+PZ3q16/vfXzw4EGdf/753t7dUv7fmHbt2mn37t3e/y8yMjJ08cUX69dff1WjRo2CigsAghbprBgAVFeXX36591vFqVOnercH01PqzTff9PstZa1atey33nrL9ng8xeoE0vukYImLi7OXL19e6nmEsqfUY489Zi9evNg2DMOWZJumaa9YscK27bJ7Si1dutR2u93Ftufm5tq9evXy1nM6nfbhw4d9ypT27XJp8Rb+Rn/GjBk+++rWrWuvWrXKu3/27Nk+vQsMw7BXr15dYtsOh6PUXi3XX3+9T2xbt2619+zZ4zfu6dOn+9R98MEHffZXpKdUfHy8T92JEyf67M/Lyyvx9Vb0tfPrr78W60Fm27bt8Xjs4cOH+9QtfO1su/w9pdauXWubpund161bN58eSrt377abNm3q3V+/fn2fGIteO6fT6fP7bdu2t5fDTTfdVOI5FO1JtWjRopIvehE9evTwqXvbbbd53wuOHTtmDxkyxGf/iBEjfOqX1QMwUIsXL/Zp58wzz/Tu+/Of/+yz75VXXilWv+jzVPBaLfy+VrjHSGnPeTBK6inldrvtFStW2H369Cn2HG/bts22bds+dOiQvW7dOr/tZmRk+PRe6969e6nnW1ZPqWbNmtmbN2+2bTv/9+rcc8/12f/OO+/41A/0eQ22p1RSUpK9bNmyEvePGzfOu6/oa8LpdNpz5szx7v/iiy+KPeeF47z55pu929u2bVvsPT43N9eeNWuW/dlnn/k9t5IUfc779+/v7S3sdruL9QAdMGCAt+7hw4ftOnXq+H1eLcuymzRp4t0XbM/R5cuX27Vr1y7xPbNgSU9Pt//73/8Wqx/o37ICr7/+uk/5xo0b+/RQfuSRR3z2P/vssz71P/zwQ5/9d9xxR1DnCwDlwZxSAFAO77//vnduipEjR+rSSy+t1PaPHDmiG2+8UUOGDFF2drbPvsJ35yvw/PPP69ChQ9q4caPPRLvHjh3TY489VqmxBatLly664oorJOXPz1TSnB1FNWnSRM8884z69u2r1NRUxcTEyDAMxcTE+PTmcbvdfieIraiCXh0FbrnlFp+7afXv399nAnrbtjV9+vQS27viiit8bvd9ySWX+Owv2tutadOmWrx4sa655hq1b99eCQkJcjgcMgxDF110kU/ZNWvWBH5iYdSiRQtNmDBBAwcOVOPGjRUXFyfDMORwOPTJJ5/4lK2sc5g2bZrPfD8ul0s33HCDrrjiCl1xxRX685//7DNfz/79+4v1DivM3+93TEyMJOnee+/1mQvp1VdflZT/Wvjwww+928866yydeeaZAcW/Z88en1500dHRGj9+vEwz/1+22NhYPffccz51vv7665Dc/bDoXECF55Iq/NhfWX/atm2rp59+2nsu0olrGUoDBgyQYRhyOp067bTTfObkk6T77rtPTZo0kZR/swqXy6W77rpLnTt39s7lZRiG0tLSdOTIEW+9ir5mH3roIW9PJ6fTqQsvvNBnf9H3hFC59dZb1alTJ+96ae9N3377rc++yy67TGeffbZP3aK9ewsr3LNr06ZNevjhh/Xpp59qyZIlys7OVnR0tM455xyfuweWx5NPPuntEetwOPS3v/3NZ/9PP/2knJwcSVLt2rV12223eff98ssvWrx4saT8XkeFexUFe8OA008/Xb/88osGDRpUbN60wrZu3ertmVReH3zwgc95pKSkaNasWWrRooV3W9EbUsybN8/73njFFVcUe1/+8ssvyx0PAASKpBQABCknJ0d33nmnJCk9PV0vv/xyudu66aabZNu2cnNztXXrVv373/9WcnKyd/+MGTP05JNP+tQpOgSoc+fOuu+++5SUlKSWLVvqxRdf9Nlf0kTc4fTUU095JxaeNm2a5s+fX2r5NWvWqEOHDho7dqx++ukn7dmzx28yroC/icIrqvBwD0k67bTTipUp/EFOyv+QVZKiw6aKTohfdELhv/zlLxo8eLA+/PBDrV27VtnZ2SUm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CFKdOnVKHWrUvHlzn148mzZt8un9cOTIET399NN6+umn1aRJE7Vv3161atXS3r17tWTJkmI9qm6//Xaf9fr16+uJJ57QAw88ICl/yEnXrl3Vq1cv7d+/3+cDeHR0tB555BGf+rt27fK5dX3R+XX+/e9/+3yw/Ne//qUuXbqUeL7BGDNmjN58880y52Lp0aOH94PNsWPHdMopp6h79+7KyMjQkiVLyuwx0L59e5+eRJdddpm6d++umJgYtWrVqtikt/4MHjxY/fv31w8//CApvwdaly5d1LVrV+Xl5WnhwoU+SZpRo0aVOsdSMHr06OGz/o9//ENz585V/fr1tWDBAm/vu1D55JNP1Lt3b+/wu5ycHN122216+OGH1aVLF9WuXVt79uzx+TDq7xwKJ0t79uypPn36KCsrS/Pnzw/ZcL327dvrpptu0ptvvilJ2rt3r84880x16tRJ6enpys3N1ebNm7VhwwZZllWs50d5XHbZZWrdunWxCff79u0b1IfMAuPHj9d5553nTURNmDBB33zzjdq2basVK1b4JCPi4+Mr/WYG7733ns9re9iwYfrss8/8ln3hhRc0evRo7/rkyZOLJXQD1b59ey1dulRS/rDj008/XaeeeqocDocuueQSXXfddeVqN1AdO3ZU7dq1vTeXWLBggdq2bav27dvrt99+06ZNm2QYRsSGmrZv395n/cknn9ScOXO8vejef/99ny8sQqFLly46//zzvROe5+bmqnfv3urevbvy8vK0YMGCUusvX75c99xzjxwOh9q2bav09HTFxcUpIyNDCxcu9ClbkffT77//Xq1atVKnTp20bt26YnMplTSE/P777/d7w4ry9JKS8hNPU6ZM0ZQpUxQdHa3TTjtNaWlpcrvdWr58uU/izTAMn2HuZbngggt0+PBh73rDhg31+uuv6/XXX/cpl5KS4u1pe++992rSpEne406ZMkUzZ85Uly5dVKdOHR06dEi//fab9u3bJ0kRv1EKgJMDSSkAiKDt27cXSwoVME1TDz74oN9/hu+77z7t3LnTO6n5kSNHNHPmTJ8yCQkJevfdd4tNRJubm+tzd6+iduzY4fOhtzLn9ahXr57uu+8+Pfroo6WWe/bZZ9WvXz9vgm7//v36+uuvJUndunVTs2bN9Omnn5ZYf+TIkXrllVe8H6z37t3r/aARzLfd//nPf3TZZZdp7ty5kvITZAWPCxs2bJgmTpwYcLtlOfvss3X55Zf79MQq+MDmcDgqPCStLMnJyfrll1906623+sxpdvDgQc2aNctvndjYWJ/k66OPPqpp06Z5h5dmZ2d7k52tWrXS+eefX6nXrLAJEyYoNzdX7777rnfb8uXL/Q4rKmmoWTBM09To0aP15z//2Wd7eT/InnPOOZo8ebL+9Kc/eedz+f333/X777/7lKtXr57+7//+r9KSoQXeeecdn/URI0aUWPbKK6/Uvffe603UfPnllzpw4IDq1asX9HFvuukmnyT8unXrtG7dOknFhzWGQnx8vJ555hnddddd3m0bN27Uxo0bJUl33HGHvvzyy1KHDofS+eefr/T0dO/NB3Jzc33e9wO5A2JlmDRpkvr16+dNwrpcLu9w3dTUVPXr18/nfaPwpPwFPB6PVq9eXeIQ3gsvvNDnJgLBuummm/Tvf//bb2+rv/71rxo0aJDfemeffba6devmk1yrU6dOqb8DpSn8BYrL5fLe1a8op9OpF154IagvgIoO1d+8eXOxG3RIvkMu69evr5kzZ+ryyy/3fumQnZ3t9+9aQVwAEGoM3wOAMGvVqpUmTpyoa6+91vutaXR0tGJiYpSamqo+ffro4Ycf1m+//eZzV6jCDMPQCy+8oLlz52rEiBFq0qSJoqOjVbt2bZ1++um6//77tWrVKg0dOjS8JxeAe+65p9gd3orq1q2b5s2bp0suuUR16tRRTEyM2rRpo0cffVRz5swpc46eTp06acaMGTr33HNVp06dcs/FUq9ePc2ePVuffPKJhg4dqiZNmigmJsabgPnDH/6gGTNm6LPPPqv0W9t//PHHGj9+vNq1a6eoqCjVq1dPgwcP1pw5c4Ke36k86tatq48//lgrVqzQ/fffrx49eig5OVlRUVGKiYlRSkqKunfvrptvvlkffvihMjIyfOZ/adGihRYuXKirr75aDRo0UFRUlJo1a6a77rpLCxcuVEpKSshij4qK0jvvvKOffvpJN9xwg0455RTVrl1bDodDiYmJ6tixo6699lq9/fbbxXpnlNeoUaN85nVq0KCBrrjiinK398c//lGrV6/Wgw8+qDPPPFNJSUlyOp2qW7euevTooXHjxmn16tXFhlNV1KJFi3zuopeQkFDqsNQmTZr4zN1T9K59wfjzn/+sf/3rX+rcuXOlTigejDvvvFOfffaZevToobi4ONWuXVvdunXTpEmT9Morr0QkpgKxsbH6/vvvNWLECKWlpUVsYvRGjRppwYIFuueee5Senq6oqCg1btxYt9xyi5YtW1YsCVV4TqXLL79cL730kkaMGKEOHTooNTXV+57StGlTDRkyRO+8846mTZtWoSGpb775pt577z317NlTtWvXVq1atdSrVy99+umneuqpp0qtW3g4rhT8vHCF/fzzz3r33Xf1pz/9ST169FDDhg0VExMjh8OhpKQkderUSXfeeaeWLl0a8PD2iurYsaOWL1+uN998UxdeeKEaNWqkmJgYRUVFKTU1Vb1799a9996rWbNmhXSoOAAUMOxI3u4GAACgBti7d6+aN2/und/lwQcf1LPPPhvhqIDKV3AH2rS0tGL7li1bpt69e3t/DxISErRnz56QDyusTBMmTPAmiAzD0MqVK3XqqadGOCoAqLnokwkAAFAO27Zt08cff6zs7Gx98skn3g/i8fHxPkPAgJokIyNDLVu2VLdu3dSxY0elpaXp2LFjWrdunb755ht5PB5v2UcffbRaJKRmzJihFStWaOvWrXrrrbe82y+55BISUgAQYvSUAgAAKIcffvhBAwYMKLb9X//6l2677bYIRASE3ubNm9WiRYtSyzgcDj344IN6+umnwxRVxYwaNarYXGrJyclatGiR0tPTIxQVAJwc6CkFAABQQUlJSerQoYPuv//+KjmXG1BZUlJS9Oyzz2ru3LlavXq19u7dq5ycHCUmJqp169bq27evbrjhhmrZw8g0TTVs2FDnnHOOHn/8cRJSABAG9JQCAAAAAABA2HH3PQAAAAAAAIQdSSkAAAAAAACEHUkpAAAAAAAAhB1JKQAAAAAAAIQdSSkAAAAAAACEHUkpAAAAAAAAhB1JKQAAAAAAAIQdSSkAAAAAAACEHUkpAAAAAAAAhB1JKQAAAAAAAIQdSSkAAAAAAACEXUSTUuPHj1fXrl2VkJCglJQUDR06VGvXrvUpk5OTo9tvv13169dX7dq1NWzYMO3evbvUdm3b1tixY9WwYUPFxcVp4MCBWr9+fShPBQAAAAAAAEGIaFJqzpw5uv322zV//nzNnDlTeXl5Ov/883XkyBFvmXvuuUdffvmlPv30U82ZM0c7d+7U5ZdfXmq7zz33nF5++WW99tpr+uWXX1SrVi0NGjRIOTk5oT4lAAAAAAAABMCwbduOdBAF9u7dq5SUFM2ZM0dnn322MjMzlZycrA8//FBXXHGFJGnNmjU65ZRTNG/ePPXo0aNYG7Ztq1GjRrr33nt13333SZIyMzOVmpqqyZMna8SIEWE9JwAAAAAAABTnjHQAhWVmZkqS6tWrJ0lavHix8vLyNHDgQG+Z9u3bKz09vcSk1KZNm5SRkeFTJykpSd27d9e8efP8JqVyc3OVm5vrXbcsSwcOHFD9+vVlGEalnR8AAAAAAEB1Ztu2Dh8+rEaNGsk0KzYAr8okpSzL0t13363evXurY8eOkqSMjAxFR0erTp06PmVTU1OVkZHht52C7ampqQHXGT9+vMaNG1fBMwAAAAAAADg5bNu2TU2aNKlQG1UmKXX77bdr5cqV+umnn8J+7DFjxmj06NHe9czMTKWnp2vj+k1KSEgIezwAAAAAAABV0eHDh9WqTYtKyZdUiaTUHXfcoenTp2vu3Lk+Wba0tDS5XC4dOnTIp7fU7t27lZaW5retgu27d+9Ww4YNfeqcccYZfuvExMQoJiam2PaEhAQlJiaW44wAAAAAAABqrsqY7iiid9+zbVt33HGHpkyZou+//14tWrTw2X/mmWcqKipKs2bN8m5bu3attm7dqp49e/pts0WLFkpLS/Opk5WVpV9++aXEOgAAAAAAAAiviCalbr/9dr3//vv68MMPlZCQoIyMDGVkZOjYsWOS8icov/HGGzV69GjNnj1bixcv1vXXX6+ePXv6THLevn17TZkyRVJ+pu7uu+/WU089pWnTpmnFihW67rrr1KhRIw0dOjQSpwkAAAAAAIAiIjp8b+LEiZKk/v37+2yfNGmSRo0aJUl64YUXZJqmhg0bptzcXA0aNEj/+te/fMqvXbvWe+c+SXrggQd05MgR3XLLLTp06JD69OmjGTNmKDY2NqTnAwAAAAAAgMAYtm3bkQ6iqsnKylJSUpL2ZOxjTikAAAAAAIDjsrKylJLWQJmZmRXOmUR0+B4AAAAAAABOTiSlAAAAAAAAEHYkpQAAAAAAABB2JKUAAAAAAAAQdiSlAAAAAAAAEHYkpQAAAAAAABB2JKUAAAAAAAAQdiSlAAAAAAAAEHYkpQAAAAAAABB2JKUAAAAAAAAQdiSlAAAAAAAAEHYkpQAAAAAAABB2JKUAAAAAAAAQdiSlAAAAAAAAEHYkpQAAAAAAABB2JKUAAAAAAAAQdiSlAAAAAAAAEHYkpQAAAAAAABB2JKUAAAAAAAAQdiSlAAAAAAAAEHYkpQAAAAAAABB2JKUAAAAAAAAQdiSlAAAAAAAAEHYkpQAAAAAAABB2JKUAAAAAAAAQdiSlAAAAAAAAEHYkpQAAAAAAABB2JKUAAAAAAAAQdiSlAAAAAAAAEHYkpQAAAAAAABB2JKUAAAAAAAAQdiSlAAAAAAAAEHYkpQAAAAAAABB2JKUAAAAAAAAQdiSlAAAAAAAAEHYkpQAAAAAAABB2JKUAAAAAAAAQdiSlAAAAAAAAEHYkpQAAAAAAABB2JKUAAAAAAAAQdiSlAAAAAAAAEHYkpQAAAAAAABB2JKUAAAAAAAAQdiSlAAAAAAAAEHYRTUrNnTtXF198sRo1aiTDMDR16lSf/YZh+F2ef/75Ett8/PHHi5Vv3759iM8EAAAAAAAAwYhoUurIkSPq1KmTJkyY4Hf/rl27fJa3335bhmFo2LBhpbbboUMHn3o//fRTKMIHAAAAAABAOTkjefDBgwdr8ODBJe5PS0vzWf/iiy80YMAAtWzZstR2nU5nsboAAAAAAACoOqrNnFK7d+/WV199pRtvvLHMsuvXr1ejRo3UsmVLXXPNNdq6dWup5XNzc5WVleWzAAAAAAAAIHSqTVLqnXfeUUJCgi6//PJSy3Xv3l2TJ0/WjBkzNHHiRG3atEl9+/bV4cOHS6wzfvx4JSUleZemTZtWdvgAAAAAAAAoxLBt2450EFL+pOZTpkzR0KFD/e5v3769zjvvPL3yyitBtXvo0CE1a9ZM//znP0vsZZWbm6vc3FzvelZWlpo2bao9GfuUmJgY1PEAAAAAAABqqqysLKWkNVBmZmaFcyYRnVMqUD/++KPWrl2rjz/+OOi6derUUdu2bbVhw4YSy8TExCgmJqYiIQIAAAAAACAI1WL43ltvvaUzzzxTnTp1Crpudna2Nm7cqIYNG4YgMgAAAAAAAJRHRJNS2dnZWrZsmZYtWyZJ2rRpk5YtW+YzMXlWVpY+/fRT3XTTTX7bOPfcc/Xqq6961++77z7NmTNHmzdv1s8//6zLLrtMDodDV111VUjPBQAAAAAAAIGL6PC9RYsWacCAAd710aNHS5JGjhypyZMnS5I++ugj2bZdYlJp48aN2rdvn3d9+/btuuqqq7R//34lJyerT58+mj9/vpKTk0N3IgAAAAAAAAhKlZnovCrJyspSUlISE50DAAAAAAAUUpkTnVeLOaUAAAAAAABQs5CUAgAAAAAAQNiRlAIAAAAAAEDYkZQCAAAAAABA2JGUAgAAAAAAQNiRlAIAAAAAAEDYkZQCAAAAAABA2JGUAgAAAAAAQNiRlAIAAAAAAEDYkZQCAAAAAABA2JGUAgAAAAAAQNiRlAIAAAAAAEDYkZQCAAAAAABA2JGUAgAAAAAAQNiRlAIAAAAAAEDYkZQCAAAAAABA2JGUAgAAAAAAQNiRlAIAAAAAAEDYkZQCAAAAAABA2JGUAgAAAAAAQNiRlAIAAAAAAEDYkZQCAAAAAABA2JGUAgAAAAAAQNiRlAIAAAAAAEDYkZQCAAAAAABA2JGUAgAAAAAAQNiRlAIAAAAAAEDYkZQCAAAAAABA2JGUAgAAAAAAQNiRlAIAAAAAAEDYkZQCAAAAAABA2JGUAgAAAAAAQNiRlAIAAAAAAEDYOSMdQFXmcVvyuK2IHd/hJGcIAAAAAABqJrIeAAAAAAAACDuSUgAAAAAAAAg7klIAAAAAAAAIO5JSAAAAAAAACDuSUgAAAAAAAAg7klIAAAAAAAAIO5JSAAAAAAAACDuSUgAAAAAAAAg7klIAAAAAAAAIO5JSAAAAAAAACLuIJqXmzp2riy++WI0aNZJhGJo6darP/lGjRskwDJ/lggsuKLPdCRMmqHnz5oqNjVX37t21YMGCEJ0BAAAAAAAAyiOiSakjR46oU6dOmjBhQollLrjgAu3atcu7/N///V+pbX788ccaPXq0HnvsMS1ZskSdOnXSoEGDtGfPnsoOHwAAAAAAAOXkjOTBBw8erMGDB5daJiYmRmlpaQG3+c9//lM333yzrr/+eknSa6+9pq+++kpvv/22HnrooQrFCwAAAAAAgMpR5eeU+uGHH5SSkqJ27drptttu0/79+0ss63K5tHjxYg0cONC7zTRNDRw4UPPmzSuxXm5urrKysnwWAAAAAAAAhE6VTkpdcMEFevfddzVr1iz97W9/05w5czR48GB5PB6/5fft2yePx6PU1FSf7ampqcrIyCjxOOPHj1dSUpJ3adq0aaWeBwAAAAAAAHxFdPheWUaMGOF9fNppp+n0009Xq1at9MMPP+jcc8+ttOOMGTNGo0eP9q5nZWWRmAIAAAAAAAihKt1TqqiWLVuqQYMG2rBhg9/9DRo0kMPh0O7du3227969u9R5qWJiYpSYmOizAAAAAAAAIHSqdE+porZv3679+/erYcOGfvdHR0frzDPP1KxZszR06FBJkmVZmjVrlu64446gj+dxW/K4rYqEDABAteRwVqvvrQAAAFANRfQ/zuzsbC1btkzLli2TJG3atEnLli3T1q1blZ2drfvvv1/z58/X5s2bNWvWLF166aVq3bq1Bg0a5G3j3HPP1auvvupdHz16tN5880298847Wr16tW677TYdOXLEezc+AAAAAAAARF5Ee0otWrRIAwYM8K4XzOs0cuRITZw4Ub/++qveeecdHTp0SI0aNdL555+vJ598UjExMd46Gzdu1L59+7zrf/jDH7R3716NHTtWGRkZOuOMMzRjxoxik58DAAAAAAAgcgzbtu1IB1HVZGVlKSkpSds3Z0R0fimGTgAAIoW/QQAAAPAnKytLKWkNlJmZWeGcCf9xAgAAAAAAIOxISgEAAAAAACDsSEoBAAAAAAAg7EhKAQAAAAAAIOwieve9qs7jseRxW5EOA0AFMWEzAAAAAFQ9fFIDAAAAAABA2JGUAgAAAAAAQNiRlAIAAAAAAEDYkZQCAAAAAABA2JGUAgAAAAAAQNiRlAIAAAAAAEDYkZQCAAAAAABA2JGUAgAAAAAAQNiRlAIAAAAAAEDYkZQCAAAAAABA2JGUAgAAAAAAQNiRlAIAAAAAAEDYkZQCAAAAAABA2JGUAgAAAAAAQNiRlAIAAAAAAEDYkZQCAAAAAABA2JGUAgAAAAAAQNiRlAIAAAAAAEDYkZQCAAAAAABA2JGUAgAAAAAAQNiRlAIAAAAAAEDYkZQCAAAAAABA2JGUAgAAAAAAQNiRlAIAAAAAAEDYkZQCAAAAAABA2JGUAgAAAAAAQNiRlAIAAAAAAEDYkZQCAAAAAABA2JGUAgAAAAAAQNiRlAIAAAAAAEDYkZQCAAAAAABA2JGUAgAAAAAAQNiRlAIAAAAAAEDYkZQCAAAAAABA2JGUAgAAAAAAQNiRlAIAAAAAAEDYkZQCAAAAAABA2JGUAgAAAAAAQNiRlAIAAAAAAEDYkZQCAAAAAABA2EU0KTV37lxdfPHFatSokQzD0NSpU7378vLy9OCDD+q0005TrVq11KhRI1133XXauXNnqW0+/vjjMgzDZ2nfvn2IzwQAAAAAAADBiGhS6siRI+rUqZMmTJhQbN/Ro0e1ZMkSPfroo1qyZIk+//xzrV27VpdcckmZ7Xbo0EG7du3yLj/99FMowgcAAACAGiHq54tl/v5aRGNwrH1WzoXXllzgyGbFTImWXIfCFlNZjL1zFD09OdJhANWWM5IHHzx4sAYPHux3X1JSkmbOnOmz7dVXX1W3bt20detWpaenl9iu0+lUWlpawHHk5uYqNzfXu56VlSVJstyWPG4r4HaqC4eTUZsAAACoPqJ+HCir4SXytL4r0qEUY255V84lt0iOOMkwJWeCrHrd5Gl1p+wGfSMdnl/OxTfKjqojz+n/8G7L6/VlBCPK52n3kM96zJRouQYskF3njPI1eGSzYr5tKzuuqVyD1uc/P8dFfXeGzMO/Vax9ABVWrbITmZmZMgxDderUKbXc+vXr1ahRI7Vs2VLXXHONtm7dWmr58ePHKykpybs0bdq0EqMGAAAAUCVYeSFp1k7qKNclB+W6eL9c5y6RlTwgv+fRtg9DcrxShegcqzPbESdj7/fedePAQsn2RDAiAAUi2lMqGDk5OXrwwQd11VVXKTExscRy3bt31+TJk9WuXTvt2rVL48aNU9++fbVy5UolJCT4rTNmzBiNHj3au56VlaWmTZvKU0N7SgEAwoseqgAQOo71L8rc9IaM3AwpJkXuVnfJavXn/J3He8rkdXlTzrXPSu7Dcl24XeaO/8i56hEpd6+sxldIORmy63aR55SxkiTj0FI5VzwgI/NXKbqe3G3uk9XixsACiq4nq+Vt8uQdlnPFQ3I1GZHfQ8edLeeqv8rcNV3y5MhKPV/uTi9KUUn5x8xeL8eKB2Qe+EWyPbIanC13j0/z9x1cLOevo2Uc/k12bEN52j0sq+mI/PNf/YSMg0uk+CYyt38qT7OR8rS6Q1FL/iQjc7lku2XV6yl3p5ekWs3l2PiqzG3/J8mQY/PbsuPTlTdwebHeaMbumXKueljGkU2ya7WUu+N42SnnSsrvaSUjSnIflrn7G9mxDeU+41+yk/sVuxzGgQWKmn+FXBfmdxRwrHhAjo2vynXRHslZW+bGCTL3zJS759T8c8lcLneP/yjqh16SpKi5/SSZ8rR7UJ4m+edsZkyXc83TkmufrIaXyN35NcmMKvEpsZqNlGPLO3KnDMyPYes7spqNlLnq4RNxHloq5/J7ZBxeLRkOWSnnyH36S1JM/fxjbvtQjtVP5b/OnInytLhZnvZ/LXYsc+c0OZffpbyuH8iu30uOVQ/LsfV9yXNUdkyqPKc9L6vhkIBeSsDJoFr8l5yXl6fhw4fLtm1NnDix1LKDBw/WlVdeqdNPP12DBg3S119/rUOHDumTTz4psU5MTIwSExN9FgAAAABVnx2frrw+/5Xrov3K6/yanCsfkrH/Z58y5q4v5eo/T67z18k4vE7ORdcrr9OLcg3JkFW3q8w9354onJOhqJ8Gy9PiFrmG7FRej0/lXPOEjD3fKxiexpfLyM2QcXitJMm55GbJdUCucxbLNWidZOfJufwv+YXdRxT102DZiR3kGrRergu3ydPq9vx9rkOK+vkieZoMl+vCnXKf8aqcS2/zOUdzz39l1e0m14U75Dnlccm25Gn9F7ku+F2uQRskR5yilt6WH1erO2Q1vUqelrfKdclB5Q1cXjz47A2Kmj9MnnYPyzUkQ552Dypq/uXSkU0njrnj0/xrdNFeWU2vUdSSm/w/P3W6SJ4jMrJW59fbO1uKbyZz30/edTt5QLF6ef3zzy/v7DlyXXLQZ2ifufu/cg1YINe5y2XunX08yVbKc9FkuMzd3+bPReXJkbnjP/KkX+NbyDDl7vC0XBdul+vcpTKO7ZRz1fGkk/uInItvkrvL63JdfECuc5fJSh1U7DjmprfkXHGv8np/JbtBbxl7vpNj+8dyDfhFrov3K6/PDNm125QaK3CyqfJJqYKE1JYtWzRz5sygE0Z16tRR27ZttWHDhhBFCAAAACBSrMaXS/FNJcOQndxfVup5MvfN8Snjaf+IFF1HcsbL3PGprORzZKcOkkynrBY3+iQKHFs/kNWgj6wmV0qGQ3ZiR3nSr5Nj+0fBBRbXOP9n3kEpd6/MHVPk7vTy8ThqyXPKYzK3fyrZHpkZX0lmlDynPik5a0lmtOzk/pIkc/fXsqMbyGp1u2RGyW5wtqymI+TY+p73UHZiB1nNrpNMp+SMl2o1l5V2geSIlaIS5Wn3kIz9P0l2YKNAHDs+lZ3cT1bjy/KvUeNhsuv3lmP7xyeue+oF+T2jDIc8zUbKOLpFyt1fvDHTKat+Hxn75kiuAzJydsvT4hYZ+36QbEvmvh9lHT/XQHna/1WKSpDiGslKOV/moSWlV3AmyUodJHP7xzJ3TpFVt7sU29CniJ3USXaD3vk9rmJT5Wn9Fxn75hY6jygZh9dIeVlSdB3Zdc/yvWZrnpZj40ty9f1edmIHbx15cmQc/i1/WGV8uuyEtkGdK1DTVenhewUJqfXr12v27NmqX79+0G1kZ2dr48aN+uMf/xiCCAEAAABEkrntQznWv5ifFJEluY/KE9/Cp4wdf+ImSUbOLim+iW8jhfcf3SJz9wzfO6rZHln1+wQX2LEd+T+j6so4ukWGLEV/WyQhYZhSToaMo1tl12opGUaxZoxjO6RazYucT4v8JFPBelyROXFz98r562iZ+/8n5WXmt2PlSu7D3uGCpTGO7ZAd36z4MQvOSZIdW+jGUo5a+T/dh73D3XzqJveTufcHKSYlP+GXPEDOpbfJOrRMMkzZiaeXGZNPezEnjm07a8nIO1RmHU+zkXL+9qjkTJKnxc3FC2RvkHPFAzIPLZbc2fkJvIIhgc5ayusxRY4NL8q5cozsxI5yn/q4N3EozzE5Nrwkd4dn8hOk3vPuL/cpY+X87XEZh9fkDwns+DepVovixwdOUhFNSmVnZ/v0YNq0aZOWLVumevXqqWHDhrriiiu0ZMkSTZ8+XR6PRxkZGZKkevXqKTo6WpJ07rnn6rLLLtMdd9whSbrvvvt08cUXq1mzZtq5c6cee+wxORwOXXXVVeE/QQAAAAChc3SrnItvVF6v6bIb9JNMp5zzh0myixQ8MUDEjm2YP9F1kXZUt2v+/rgmshpeKne3DyoUmmPH57Jj0mQntJNy98iWKdcFW/J7MhVhx6fLOPK7ZNvFElN2XGPpyGafbcbRLSd6Ykk+d5WTlD9flueoXAN+kWKSZRxapujZ3fLbl1TWgBk7rrHMIkMgjaNbZDUIMjF3nNWgv6LW/V2KSZaVPEB2UicZx7bJ3DVVVoOz/SbjJMmW/+3lYScPkJG7VzqyRVbDi4rtj1p2h+zabeQ6820puo7MnV/IWWhIop1yjtwp50hWnhy/v5Y/T9ZFe/J3OuKU13uGon6+WO6oBFlN/nDi3FveKqvlrVJeppzL7pDz13vk7jm10s4LqO4iOnxv0aJF6ty5szp37ixJGj16tDp37qyxY8dqx44dmjZtmrZv364zzjhDDRs29C4//3ziDXLjxo3at2+fd3379u266qqr1K5dOw0fPlz169fX/PnzlZycXOz4AAAAAKoJ2y15cgotuTLc2fmJlphkyTBlZnwjc893pTZjNb5C5t5ZMnbPlCy3zM2TZWSv9+73pF8jc+8PMnd8nj/kysqTcWiZjIOLAovTdVDmpjflWDte7tOezU8YxabJanRJ/hxSucc/u+RkyNw5NT+mtAslK1eO1Y9L7iOS5ZKx94f8famDZeTulfn7a5LllrHvJ5nb/0+epteWHIM7S3LES1F1pNz9cqx5yvdSxqacSIL54Wl8pYy9c2TunJZ/jXZMkbH/R3maDA/sGhRh1zlDst0yt/1ffvLQMGTV7y3Hxn/J8jOflFdMan6clcEwlddzqvL6fC2Z0cX3u7NkO2tLUYnS0W1yrP/niX05u/Ofq7zDkuGUHZUoGb79O+y6XZTXe7qcv97rveuicXCRjP3zJMslOeLye5QZVXqwEhB2Ef2N6N+/v+wS3ggllbqvwObNm33WP/ooyLHeAAAAAKo858qH5Fx5YrJrO76ZXIPWy9PuIUX9NCh/iF3aRbLSiveCKcxOaCf3mW8pavmdUu4+WY2vyJ9o24zJLxDXOD+5sOqvci67XbIt2Qnt5T7lsRLbNDJXKnpa3fwElLO2rLrdlNfrC9kNzvaWcXd5S47VTyj6h16Sa7/smFRZTa6QGg2VnLWV1/sbOVbcr+gZrSRJVnI/uZP7S9F1ldfrSzlX3Cvnqkfy73TX6ZX8+Y9K4Gk/Vs4lNyp6eorsuMbytL5bjl3TTuxvdoOiFl6t6K9SZcc1Ud65ReZkqt1a7u6fyPHbI3Iuvl52rRbK6/6pVKtlqde25AtkyqrfR+ahpd45lazkc+TYOeXEEDg/3Kc+Luevo6Wlt8rT5r5yJ8UKeOd68nesjs/LuezPcvz+muzabWQ1vVqOtb8d32vJsfHV/MnqbUt27TbK6/5RsR5qdp3Oyuv9taL+N0Ruyy07romcKx/IT6wZUbLq9ZD7jFcqdA5ATWPYgWR+TjJZWVlKSkrShlVblZAQuTvxheoW4tyaHCcbXvOItOr4GqyOMQNAeUXN7CBP+7/Kanp1pEMBgCovKytLKWkNlJmZGfTN6IriP85SeNyWdwEAAABQM5i7pucPxfLkyrH+BRk5GbJSBkU6LAA46TCgFQAAAMBJxdwzU87FN0p2nuzabZXX43O/d40DAIQWSalSuHI9ckW5JUVmGAPD94JXk8+tJCfjOQMAAFSEu9NLUqeXIh0GAJz0+DQLAAAAAACAsCMpBQAAAKDKM7d/LOeCqyIdhqK+6yRz11cROXb0tLoyMleErH3nkltlbnorZO0DQFEkpQAAAABUbbYl56qx8rR72Lsp+r9tZO78wrfckc2KmRItuQ6FLJS8gctlNRzid5+xd45ipkQrak5/3x2eXEVPTwsqNn/n57rkoOyk04IPOkDudg/JueYJyZMbsmMAQGEkpQAAAABUaWbGN7Kj64Y0IVMmyy3ZdpnFbGeCjKNbZGSv924zd02THZMcyugqR63msmu3kbnzP5GOBMBJgqQUAAAAgCrNzJguK7l/8BVtW46NrypqZkdFT09W1I8DZWSt9u6O/m8bOdb9XVE/9FH0l/UUNfdc6eg27/6YKdEyN/5LUd+doegv60jubP89tAozTHnSr5a55R3vJsfWd2U1G+lbbPdMRc3uoegvGyj663Q5l90peY5Jkpy/jJCObpVz4R8VPa2unEtv98ZjHFqWX//Q0uNx11f0Vw3lnDf0xDmvHKPor5sq+sv6ivr2VJ/hhub2jxU1q0v+9ZjdU8b+eT5xWckDZO6aHugVBoAKISkFAAAAoEozMpfLrt0+6Hrmptdlbp4kd88pcl24S1ajoYqaf7lkuU6U2fah8rq+J9eFO2U7a8m5+nGfNhzbP1Je76/lumi/5KwV0HGt9Ovk2PqBZHukYztkHFwsq+HFvoUccXJ3nijXRbvl6veDjL0/yLHhRUmSu/tHUny63F3fk+uSg3J3nlDsGM7lf5HVcIhcF+2V64LN8rS5V5Jk7PlOju0fyzXgF7ku3q+8PjNk126Tf64Z38i54iG5z3xLriG75Wn7gKLmXSbl7ve2ayecIiNzeUDnCQAV5Yx0AFWZ5bZkua1IhyGHk9whAAAATmKuQ1JUQrHNzkUjJTPqxAbb9393x+8T5Tn1SW9SxtPqDjnW/V3GgQWyG/TJ39byVqlWC0mS1XSEHOue92nD0+ZeKa5RUOHaCe1kx6fL3D1TRuYyWU2ulG3G+JY5fnxJUq2WslrcLDPjG3najQnsIEaUjKNbpZydUlwT2Q365m83oyRPjozDv+UPGYxPV8GgQ/P31+RpM1p2nc7559v4MtkbXpS5+xtZ6dfmxxWVKCOEc3IBQGEkpUrRZG0fJcYfTwgZkYvDqPRjR/BkQq0Gn1pJTsJTBqqfyn8jD7nqFzGAqsCOTVXegPmV33B0HSnvcLHN7rPekdXo0hMbjmxWzLdtvavG0S1yLh4lLXGcKGO5ZBzb7k3UKCb1xD5HLRnubJ9j2PHp5QrZ02ykzC2TZWT+KnfX94vtNw4uknPVIzKyVuYP27Pdsmu39dOSf3ld3pBzzVOKnt1DdlQdeVr+WVarP8tO7i/3KWPl/O1xGYfXyEo5R+6Of5NqtZBxdLPM3x6VY80TJxqy8mQc23kirrws2dF1ynXOABAsklKlcLp3y+mOdBQAAADAyc1O6iQje03w9eKayH36P2SnDqrA0cuXprcaXynnivtkx7eQXbeLdGSzz/6ohX+Up9l18vT4j+SsJceGl2VufbdQiTJGS9RuJfdZkyTblrH/Z0X97wLl1eshu24XWS1vldXyVikvU85ld8j56z1y95wqxTWVu9XtslrcUvLZHl4tO6lTuc4ZAIJFUqoUtgzlOfO/OTEi2lUqcoeubqphZ4RKUAknXcOvWw0/PSA0Ts43VADlZOTskqHQTXthpQ2RY83T8gRZz9PyNjlXj5M7vrnshHZSXpbMvT/ISh7gdzhgpYpKUF6fmZKztv/9eVmyo+pIzloyslbL3PS65Ijz7rZjUmQc+b3E5s2t78lKOV+KTZWikyTDlAxTxsFFkpUnu+6Z+e05anknUPe0vFXOFfcpr85Z+UP4PMdkHJiXf23imuS3u/cHeYpMyg4AoVKupFReXp4yMjJ09OhRJScnq169epUdV5XgdiTr9/QFkiTTEf55nczjc0mZlTynVGW3V5WcjPNvVcY5h+u6Rer5ORlfF6haquNrsDrGDCByYme2kpGzI2TtW2mD5fx1tIyslbITOwZer+WfJcMh5y/DZRzbLjkTZNXvlZ+UCgO77pkl7nN3niDnigeklQ/LrtNFVpPhMnd96d3vafegnL+OlmPtM7KajJD7jFd86pt7vpdz5cOSO1uKTZW747Oy65whY8/3cq58ID+hZUTJqtfDW9dqeJHcVo6cS2+VcXSTZMbIqnuW3J1ezm/06BYZh9fKanxF5V8MAPDDsG3bLruYdPjwYb3//vv66KOPtGDBArlcLtm2LcMw1KRJE51//vm65ZZb1LVr11DHHHJZWVlKSkrSvrdTtKdtBJNSDpJSwarJ51aSmpKUCmUMfLhGpFXH12B1jBlA5MTObCUzZ4fs2MZyDd4UkmOY2z6SuWua3N0+DEn7kJxLb5NV5yxZLW6MdCgAqrCsrCylpDVQZmamEhMTK9RWQP9x/vOf/1Tz5s01adIkDRw4UFOnTtWyZcu0bt06zZs3T4899pjcbrfOP/98XXDBBVq/fn2FggIAAACAwqymI0hIhZi780QSUgDCKqDhewsXLtTcuXPVoUMHv/u7deumG264QRMnTtTkyZP1448/qk2bNpUaKAAAAAAAAGqOgJJS//d//xdQY7Gxsbr11lsrFBAAAAAAAABqvqAnjLjhhht0+PDhYtuPHDmiG264oVKCAgAAAAAAQM0WdFLqnXfe0bFjx4ptP3bsmN59991KCaoqsTxWsQUAAAAAAAAVE9DwPSl/dnXbtmXbtg4fPqzY2FjvPo/Ho6+//lopKSkhCTJibJskFCSdnHf1AwAAAAAglAJOStWpU0eGYcgwDLVt27bYfsMwNG7cuEoNLtJsiaRUEEjcAAAAAACAQAWclJo9e7Zs29Y555yj//znP6pXr553X3R0tJo1a6ZGjRqFJEgAAAAAAADULAElperVq6d169apQYMGGjlypAYOHKiEhIRQx1Yl0FMKkBz0ggMAAAAAVLKAklIul0tZWVlq0KCB3n33XT333HMnR1LKltwutyTJdJz4UF74cSgVHKeyjxeq+MN1XUqNwROic3NH/txKUhnDJq0y2vBUUlKqtORWKBNfJNWql+jYgDvxAgAAAKjGAvrPv2fPnho6dKjOPPNM2batu+66S3FxcX7Lvv3225UaIAAAAAAAAGqegJJS77//vl544QVt3LhRhmEoMzNTOTk5oY4NAAAAAAAANVRASanU1FQ9++yzkqQWLVrovffeU/369UMaGAAAAAAAAGquoCfu2LRpUyjiAAAAAAAAwEkkoNl/P/roo4Ab3LZtm/73v/+VOyAAAAAAAADUfAElpSZOnKhTTjlFzz33nFavXl1sf2Zmpr7++mtdffXV6tKli/bv31/pgQIAAAAAAKDmCGj43pw5czRt2jS98sorGjNmjGrVqqXU1FTFxsbq4MGDysjIUIMGDTRq1CitXLlSqampoY47TGxZHivSQSDCTEdAuVsAAAAAABCEgOeUuuSSS3TJJZdo3759+umnn7RlyxYdO3ZMDRo0UOfOndW5c2eZJh/eAQAAAAAAULagJzpv0KCBhg4dGoJQAAAAAAAAcLKgaxMAAAAAAADCjqQUAAAAAAAAwo6kFAAAAAAAAMKOpBQAAAAAAADCLuik1BNPPKGjR48W237s2DE98cQTlRIUAAAAAAAAaragk1Ljxo1TdnZ2se1Hjx7VuHHjKiUoAAAAAAAA1GxBJ6Vs25ZhGMW2L1++XPXq1auUoAAAAAAAAFCzOQMtWLduXRmGIcMw1LZtW5/ElMfjUXZ2tm699daQBAkAAAAAAICaJeCk1IsvvijbtnXDDTdo3LhxSkpK8u6Ljo5W8+bN1bNnz5AECQAAAAAAgJol4KTUyJEjJUktWrRQr169FBUVVeGDz507V88//7wWL16sXbt2acqUKRo6dKh3v23beuyxx/Tmm2/q0KFD6t27tyZOnKg2bdqU2u6ECRP0/PPPKyMjQ506ddIrr7yibt26VTheAAAAAAAAVI6g55Tq16+fHA6H1q1bp59++klz5871WYJx5MgRderUSRMmTPC7/7nnntPLL7+s1157Tb/88otq1aqlQYMGKScnp8Q2P/74Y40ePVqPPfaYlixZok6dOmnQoEHas2dPULEBAAAAAAAgdAzbtu1gKsyfP19XX321tmzZoqJVDcOQx+MpXyCG4dNTyrZtNWrUSPfee6/uu+8+SVJmZqZSU1M1efJkjRgxwm873bt3V9euXfXqq69KkizLUtOmTXXnnXfqoYce8lsnNzdXubm53vWsrCw1bdpUe95soHWJ30qSTMeJ/F3hx4WVtL28CtoLVbuVLVTtRjoG02FWiXMrSWXEZjpLb6Os/ZVxHEclHSOcbYcy5pNZdGzAnXirjer4WqmOMQOInNiZrWTm7JAd21iuwZsiHQ4AIISysrKUktZAmZmZSkxMrFBbQf/nf+utt+qss87SV199pYYNG/q9E19l2LRpkzIyMjRw4EDvtqSkJHXv3l3z5s3zm5RyuVxavHixxowZ491mmqYGDhyoefPmlXis8ePHa9y4ccW2W5atAxmHj7dz4jwLPy7M33bTUf7rU1CXpFRkY6iOSSlndOC/2oGcX2Wdf2nthOq5kyovqVas/Qh+aI/ksUPN47YiHUKlq44JnuoYc3XHNT/51Kjn/PiX1baCfx+vUdcBABCUoJNS69ev12effabWrVuHIh6vjIwMSVJqaqrP9tTUVO++ovbt2yePx+O3zpo1a0o81pgxYzR69GjvekFPKQAAAAAAAIRG0Emp7t27a8OGDSFPSoVTTEyMYmJiIh0GAAAAAADASSOgpNSvv/7qfXznnXfq3nvvVUZGhk477bRid+E7/fTTKyWwtLQ0SdLu3bvVsGFD7/bdu3frjDPO8FunQYMGcjgc2r17t8/23bt3e9sDAAAAAABA5AWUlDrjjDNkGIbPxOY33HCD93HBvopMdF5UixYtlJaWplmzZnmTUFlZWfrll1902223+a0THR2tM888U7NmzfJOmG5ZlmbNmqU77rijHFHYsqyg5oEPkZo3vwpCy/LwmkH1FehcJMxBAgAAAFRvASWlNm0KzR00srOztWHDBp/jLFu2TPXq1VN6erruvvtuPfXUU2rTpo1atGihRx99VI0aNfImnCTp3HPP1WWXXeZNOo0ePVojR47UWWedpW7duunFF1/UkSNHdP3114fkHAAAAAAAABC8gJJSzZo1C8nBFy1apAEDBnjXCyYbHzlypCZPnqwHHnhAR44c0S233KJDhw6pT58+mjFjhmJjY711Nm7cqH379nnX//CHP2jv3r0aO3asMjIydMYZZ2jGjBnFJj8PVNXoKVXZ6EVT01WlnlJV+c6FAAAAAIDIMezCY/ICMG3aNP8NGYZiY2PVunVrtWjRolKCi5SsrCwlJSUp4/V6+l/WZ5IkwzS8+81Cjwvzt72ksoEoqFuRNvy266jc9kLdbnAxmJWeBAlFm5XJX2zO6MDvYRDI+VXk/AvXLa2dUFzjgjZD9fyZERw+Fsljh1pUbGCv3+o0fK86xVqgOsZc3XHNTz416Tmv9X1rmbk7ZcU2Vs55G4OqW5OuAwCcDLKyspSS1kCZmZlKTEysUFtB331v6NChxeaXknznlerTp4+mTp2qunXrVig4AAAAAAAA1ExBJ6Vmzpypv/71r3r66afVrVs3SdKCBQv06KOP6pFHHlFSUpL+9Kc/6b777tNbb71V6QGHk21Ltp/he1VnYBSK49mRqtbwPSBYgU50XtXxzT8AAABQuqCH73Xs2FFvvPGGevXq5bP9f//7n2655RatWrVK3333nW644QZt3bq1UoMNl4LhewffMBQdU7/YfiNso9QMnx+V3GrNFYITNKryVatgaPmv5xCeX4BNhySC8P2yhl81ObVy/e5Uk3Mri+/LrxqeVDUMubrjkqM6M3IzZMiSLVN2bMPg6oYopqrKjk1V3oD5kQ4DAMotosP3Nm7c6PegiYmJ+v333yVJbdq08Zl8vLoyDVvxzup/HkCpQj2Xf028VwAAAPDLkCUjZ0ekwwAAVBNBJ6XOPPNM3X///Xr33XeVnJwsSdq7d68eeOABde3aVZK0fv16NW3atHIjjQDblo66GwRcPnSdMqpHV6ka+y1XFT8xvz1Rgoy57NduJV2EMF9L7+Fqco+pqq5cHaUi2b0uNKrnS7BaBl29cclPOjXpKffpKRWTFmTlmnQlSmbk7JLBVBMA4CPopNRbb72lSy+9VE2aNPEmnrZt26aWLVvqiy++kCRlZ2frkUceqdxII8CWoS83fyDJ9+57Rgl3w/O3vaSygSioW5E2/Knsu/mV1W6ojlfSsUJxt8KK3Fkw1Hfu83v3vSjuvle4zZDdfS+Cd2WsyneELKw8cToDvPteVb8DYeE5parj/FLVMebqjmt+8qlJz3ni3LYycnfKjknTkXM2BFW3Jl2H0sTObEUvMgAoIuikVLt27fTbb7/p22+/1bp167zbzjvvPJlm/h+UoUOHVmqQkeRvovPqju9nwi38VzxcE51Xl8QIAAAAAKDqCTopJUmmaeqCCy7QBRdcUNnxVDk1MSkVKiS7IqX4lS8rKUUyCQAAAAAQaQElpV5++WXdcsstio2N1csvv1xq2bvuuqtSAgMAAAAAAEDNFVBS6oUXXtA111yj2NhYvfDCCyWWMwyDpBQAAAAAAADKFFBSatOmTX4fnwwsd/4wqJo00Xllt1dWu3YYJzq3QjHReQXbNK3Qnr/p8de+u/Q6RSYfL+9E54EMAyxronOGEvrHdQEAAABQ05VrTilJcrlc2rRpk1q1aiWns9zNVHkel0cSSamKtBuq45V0LCsE16sid4UJ5d0HS2rb8pQ1FxozgKHqKvgyAEB4nCx3PgMAAFVP0P+FHD16VDfeeKPi4+PVoUMHbd26VZJ055136tlnn630ACPNtmwmOwcAAAAAAKhkQSelxowZo+XLl+uHH35QbGysd/vAgQP18ccfV2pwVUFBUorl5F6sciwAAAAAAKBkQY+7mzp1qj7++GP16NFDhnFi6FCHDh20cePGSg0u8my5jrgk+c7vwvC94NoN9/C9QI9nBjhcwTCNgMsWrVf4Z2llAt1eVMF8V0WH8ZU9fM+ndOnHYG4jAAAAAEAIBJ2U2rt3r1JSUoptP3LkiE+SqqY4duyYJMk0CyWlSjhPf9srck0K6lb2dQ3V8xTMdQmV6pCUKrxeUrvBnIO/cy4rXp8YypjIvfD+wuVMhyHTUXacgU50HorklzPaGVAMwSJRF1rMKYXqjjmaAAAAAhN0Uuqss87SV199pTvvvFPSiYTDv//9b/Xs2bNyo6sCbNv2+YkqLojPsnYQQ+yCKRuMirZbUv1g2g39x//IJRgsD8kNEmgAAAAAqqqgk1LPPPOMBg8erN9++01ut1svvfSSfvvtN/3888+aM2dOKGIEAAAAAABADRN0UqpPnz5atmyZnn32WZ122mn69ttv1aVLF82bN0+nnXZaKGKMKI/HI8m3pxTD94JrN6zD9wxDhhXY8QLtTWSYRrl6NAUyfK+suoEeJ9h5uwqXN0xDdin1rZKG75mGTKv49tKFt+cSPaVCj55YAAAAAMor6KSUJLVq1UpvvvlmZccCAAAAAACAk0TASamsrKyAyiUmJpY7mKrI7XZLYqLzirRb+NqFmmEYAZ9foPOEGVbV7SllW3ZQPaXKeyfE8vQ3Crz3FAAAAADgZBRwUqpOnTqlfti3bVuGYXiHu9UUllX84zhJqfC2G2wMVeV6Gfbx588qOSlVUpKoosP3ymq3aAylHa/w/sLD/Eoa1udvvXShG2LH8L3QYugeAAAAgIoIOCk1e/Zs72PbtnXhhRfq3//+txo3bhySwKoK5pSqeLvhvHOhaZpV5nqV9PwVJKskyXAHlpQqKWlUuAdXeXtBAQAAAAAQCQEnpfr16+ez7nA41KNHD7Vs2bLSg6pKCjp+2XZ+jwvDICkV7naDVVWuV4lJKaPyklIF+4r2dgpVT6mSJki3SugxFZzK79VET6ng0PMJAAAAQDiVa6Lzk0nR0Xv5SSn/PX/8bScpFX5V5XoFlJQqKcFpF6lTyh0FI5mUKrq9cJLK6Yx8giNUSSmSNwAAAABQcSSlyuA/KeW/rL/tJSWwAlFQt6okWSLVbrCqyvUK5wTvAAAAAABUNxVKSlWVJEQo2ceH73mO55aCT0qV/9gFdSuS2PLfbmjmeCrpXMM5p1TBhPuBlg2EYRjlOoeCOuXqKVVke4kJLnfFe0qZIerRZJXjjoWVHkORnlL0cAIAAACAqiPgpNTll1/us56Tk6Nbb71VtWrV8tn++eefV05kAAAAAAAAqLECTkolJSX5rF977bWVHgwAAAAAAABODgEnpSZNmhTKOKquvOM/j4/6sY38xS9/2ysywtE7fC/A4pVcLlgltWua4bsDmmlaAQ/fC3TOJ8MwSixb2rGKDt/zN/G5VXTSslLa9bfNtm2/N62zgxg6F0zZYAQ6fK9id+wDAAAAAFRXTHRelqIf+A2VnGgKUVKqxCRYEf7KVYVpv8I4pdTxYwV2wGDmiarInFKV0W5J5bzbi7xOS0s0lXanPQAAAAAAwoWkVFmOT3TuzXOEKilVWt0KtOEvURVokitYVSEBJgUTR2A9uErrDRVIr6zy9JQq2jOrzKSU5HM6VaGnVEG7ZV3lUE6IbhXcoSDA5zrwdsPX+y8SmBAeAAAAQDiQlCpLuHpKhSgpVem9t0pRUrIr3B/fKzs5ln+3wsCH2ZVUJpikVDDHMgzDu3i3uf0M/yuhh1Sok1KF+Tvb8CSlSougPO3W7KRUsEhiAQAAACgPklJlcR//WfCZi6RUcMeXZIfx86rHPBFHWfmiQEfkGUbJPZXyE1YltZ+/r6DXU1iTUh4/SSnLkGGeWHz2lTKkr3D5wuX8bS+pXGnH8f6KhXBYoWnlt216DJmO8iXBnNGOygwJAAAAAE56JKXKQk+pwFWR4XuBzsVVUjrIX+6nPPNiFSSlCie0Ap2EHQAAAACAmo6kVKAKZzBISgV+fCnQeccr77gBXrdiYZVSvnxJqYKfZfemKmt7aeVIdAEAAAAAqiOSUuVRUo4hjHeZ86uqJqVCPXyv8HELDd8r8zwLD8ks9LNoDyvbkKySzqFQ2aK5oYK5yk3TPr7flmEENudV0YnOTdP0m3wyTdO7r+h+f+uGbXiH8fnsC9HwvUDu9BfohOgFQjnMDwAAAAAQPiSlahJ/SbFIJ8rCrfDwynImpfz2vCppOqFCdYomszym708Z+Ymqwrki23bLn6KJl0pLSvmZf8r0+G/bW6+cSSnTaRabv8pfksp0miXuKymeQHkKtW0WWsqj+KTplT/BNxOG52MieV8FvyMAAABATUNSCjVLMEm4ky1hBwAAAABAFUJSCjWPXeRnWQLpKVXirOiFfpbVAcfIb6Zwp6SSb75XNHir9N5MRXo/WVbx8iX1lCrYV2Lbx4f8ScEP3yvcwyOYHk4AAAAAgJqPpBROXqHuVeUvOWbnrzI3OQAAAADgZEdSCievokmjMPSUKvhZMP9UyT2lirJlGCVnxiqrp1SZd/ILYqof27K9k5iXVS5UCrdd0VmKrMJtRXjOI+aeAgAAAFATkJQCCpQ27K+0pJQh37v+FTCL/Cxc7vhju4R8TNHtJZezZfvZ6W9bSQrKlpmQAgAAAACgEvF1OwAAAAAAAMKuyielmjdvXmzYkWEYuv322/2Wnzx5crGysbGxYY4aNY4dmsX2swAAAABAVTL96y/1n88/K7Z9y9Yteva5Z5STkxOBqFATVPnhewsXLpTH4/Gur1y5Uuedd56uvPLKEuskJiZq7dq13nWGJQEAAAAAAFQtVT4plZyc7LP+7LPPqlWrVurXr1+JdQzDUFpaWqhDA0qfh6qEu+8VflzQM4q8KQAAAIDq7Mef5mr9hnW6YdRN3m0LFy3QwkUL9edb80c6Tf/6S+Xm5Kphw4ZatDi/A0rXs7qpV8/e+mHObP26YrminFHq2/dsnX5aJ287s3/4XuvWr9Phw1mqVau2OpzaQb179ZHD4fA5dreu3TX3x7nKzclRy5YtdcGgCxUTExPeC4GgVPmkVGEul0vvv/++Ro8eXWrvp+zsbDVr1kyWZalLly565pln1KFDhxLL5+bmKjc317uelZVVqXEDAAAAAABpy9bNSkhI0DVX/VHbd2zXNzO+0o6dO9S0SVNdd+0orV7zm2b89xs1b95CiQmJkqTo6GgNufAi1a5dW3v37tWM/36t6Oho9eje09vuoYOHtG79Ol057Erl5ORo6rQpmv/LPPU7u3+EzhSBqFZJqalTp+rQoUMaNWpUiWXatWunt99+W6effroyMzP197//Xb169dKqVavUpEkTv3XGjx+vcePGhShq1Hi2JI+f7QUztjmO/zSOlzUKPT5exi6UY7UN/z2o/OdhbUmWd/60ApZlFUvcFp1rraR9RRXeXni/YRsyrOPbTf8/i24rvL3YcUrZV55yResYpiHbNGSVo35RTk/Bk1vSbRlPDqajyk9LCAAAgEqyYeN6/eOF5322BXPX7wKxsXE6b+D5MgxD9evX1y8L5ikvL0+9evaWJPXs0Uvzf5mn7du36dRT8juX9O7Vx1u/TlIdHTjQXatX/+aTlLJla8jgi7w9ozp2OE1btmwOOj6EV7VKSr311lsaPHiwGjVqVGKZnj17qmfPEy/MXr166ZRTTtHrr7+uJ5980m+dMWPGaPTo0d71rKwsNW3atPICBwAAAACgGmuW3kyDzr/AZ9vOnTv15VfTgmonuUEDny+7a8XX8pm2xzRNxcXF6ejRo95tq1f/pkVLFunQoYNyuVyyLKvYsLykxCSfbbVq1daRQm2gaqo2SaktW7bou+++0+effx5UvaioKHXu3FkbNmwosUxMTAzjTAEAAAAAKEFUVLTq1q3nsy3r8GHvY8Mwit1N3PIUH1lgmg7fDYZRfJsMby+sHTu2a9r0L9S3z9lq0bylYmJitHrNb1qw8Bffdov04jeM8vXkQnhVm6TUpEmTlJKSoiFDhgRVz+PxaMWKFbrwwgtDFBlQgqLvv6UM35PhW67gvdMu9L5a8jRqtgzDDv/wvcLbj48/LDqcr/Dj0obvlWdIXkkqsy0AAAAAgYmPj9eRI9my7ROfTXbv2V3hdrfv2KGkpCTv8D5JyszMrHC7qBqqRVLKsixNmjRJI0eOlNPpG/J1112nxo0ba/z48ZKkJ554Qj169FDr1q116NAhPf/889qyZYtuuukmf00DoWcVeVyQlDJ1IhlVJCnlTVYd/2mZRcroxHbTzE9YGcaJbwEMwx1wUso0zYonpQr9LPo7CgAAAKDmS09vpqMz/6tfFsxXu7bt9fumjfp900ZFR1dsVFK9unWVlZWl31avUsO0Rtr4+watW7+ukqJGpFWLT4/fffedtm7dqhtuuKHYvq1bt8o0T3QnOXjwoG6++WZlZGSobt26OvPMM/Xzzz/r1FNPDWfIgH/28aXgcQk9pXzKyE+ZQrstFSSlTmwPe0+pQj8ty/L2nJJK7ilV8Ni2Kr9LLb2lAAAAgPBqUL+BBp13gebN/1n/+/kntWvbXt26dtey5csq1G6bNm3V9axumvndt/K4PWrVqpV69+qtn/73Y+UEjogybAZZFpOVlaWkpCQdfEP6+2uvRjoc1FSmpKjjj8voKSWH/CalZEqGWTwpFRWlgJNSoegpZRiGTIcp02mWmZQqKFNZd98r3JbpNH22BXOcopzOE8nv2Lj8fL7pqNzkV+Fx8KXd2c50mAHf+S6YO+QVlA20jjPaWWYs5blDnzM6sO9Lqvrd/8xCr5nCjyvSTjg5InTcmqC81y5S15znOnJq0rVPnNtWZu5OWTGNdOSckudy9acmXYfSxM5sJTNnh+zYxnIN3hTpcACg3LKyspSS1kCZmZlKTEysUFsnx18AAAAAAAAAVCkkpQAAAAAAABB21WJOKaBGsiR5jj8u55xSsvPv1GcbvvvzJz/3HZmbf4c+FRumV3B3jMoavlew2LYt27IDmlMqVMP3Cuarqozhe4XnvjILhgdW8txVpnliVvzShgaaDqPY0LWShrKFcvheQdnKHr4XzLGrkvJcPwAAAOBkRlIKiCS3n23+5pQquGtf4TIF+wvuzFdov7vIHFPSiXmn8pNThRMsls+8UsXCKWEuqqJJqYLHBdPU2bad/9gq1qSPUEx0Hoq2C7dlhTDmwJVxYQEAAACgiiMpBVQ1tk70oCraU8oo9Fgl7JNkW8d7TxUuYvguvqxKSUp5775XpJwkGbYhwyreU6rgcSh6ShXdVpGeUoW53fkJocrvKWX4fVysnGXI9PjuNx3+E2WmI/DkVbA9fQp6SdFTKl/R62d6Ck107g4+1khNcI6KO1kmbQYAAKgoklJAVeZvGF/R/f72+dlWYhPHhwCWXCI4xXpKleR4rqQ69pQqeFwV+ypV9h0BAQAAgLIcO3ZUb771hq774yjVSapT7nays7M1/atp2rFzh0zT1D1/uddvuS+mTVFaWiN179a93MdC1UBSCgAAAAAAlNvP835Wm9ZtiyWkfl3xqxYu+kUHDhxQTEyM2rdrr/PPu6DEdhYuWqDsI9m6fuSNiomJ0ZatW/R/H32gu+8ardjYWG+5Xj1764P/e1+dOnVSbExsie2h6iMpBQAAAAAAyiUvL0+//rpcw4eP8Nm+YOEvWrDwFw3of64aNWykvLw8ZWYeKrWtQ4cOKi21oerVqydJ2rd/n99yyckpqlOnrlatWqkzu5xVKeeByCApBQAAAAAAymXj7xvkcDrUuFFj77acnGOa++McXTHsSjVv1sK7PSUlpcR2/vXaBGVlZUqSVq5aoY4dT9PKlSskSS++/E9JUseOp+miCy+WJLVu1Vqr1/xGUqqaIykFVGWVOKdUSZtPzClV2oECV3ROKX+TpwMAAACoGbZt36a01DSfbZs2b5Jt2zp8OFtv/vt1uVwuNW7cWOcMGKjExES/7Yy6bpSmf/WloqNjNPDc8+SMcqpN6zaaMvVz3XLTnxQdHSNn1IkURqOGjTRv/s9yu91yOkltVFfcHgYAAAAAAJRLVmaWatdO8Nl26NAh2batefP/p3PPPU9Dh16uYzk5+uiTD+XxePy2Ex9fSw6HU84op2rXrq3YmFjFxsZ59xVsK1C7doI8Ho+OHDkSupNDyJFOBKqDou/bBZ2PzOOLUWibCm0rWseQbEOy/aSjDSN/Kb7dPr4YPr2eCtaL9oQq2lOq1DvwqXrffa+yRf5ufsFFYHlCE3Go2kXpTCffUwEAgOC53XlyOmv7bLNtW5Zl6bxzz1eLFi0lSZdefKlemfCytmzdopbHt1VEQe+oPHdehdtC5JCUAqqjwsP6ghi+52+/7/C9ACuVVoqkVKWIbFomsKOXN3lkOkh+AAAA1BRxcfHKycnx2Va7dn6Sqn6DBt5t8fG1FBcX5503qqJyco7ltxsXXyntITJISgHVWUFOoGhPKUvFe0oVzgOUKylVpGJJJYJNStl2yDIwwSSPDJO5rwAAAIBgpaamatVvK322NWncRJJ04MB+JSbkzyF17NgxHTt2TEmJSQG37XA4JEm2XfwDw959e5WQkKD4eJJS1RlfVwPVnVXxpSAxFcgCAAAAAAVatGipffv2eXsuSVK9evXVpnVbfTdrprbv2K69e/do+tdfqn69+kpPbxZw2wUJrA0bN+jo0SNyuVzefdu2b1OL5hUfBojIIikF1AR2xZZgklInFrtyF6vsBQAAAEDVkpKcotTUNK1es9pn+0VDLlajho316Wef6IP/+0AO09TwK0d4ez8FIiEhQX37nK0f5szWy6++pG+/+68kye12a/36derU6YzKPBVEAMP3gJrCLuFxWfsLElPlOKS/idEBAAAAnFx69+qj2T/M0hmdOntvhBQTE6MLBw/RhYOHBNzOsMuv8Nt27159fLb9umK5GjZspMaNGlcscEQcSSkAAAAAAFBurVu11sGDB3T48GElJiaG/HgO06Hzzj0/5MdB6JGUAgAAAAAAFdL1rG5hOxbD9moO5pQCAAAAAABA2JGUAgAAAAAAQNiRlAIAAAAAAEDYMacUUBMVvpUed8gDAAAAAFRBJKWAmsguY1vRx3bJ1UpikOwCAAAAAFQAw/cAAAAAAAAQdvSUAmqicvaUCrQpSbJtybaL7y3YZtu2dyk11DL2+7ACLypJthVM36/A27ItW4ZJVzEAAAAAqAiSUkBN5PazzVT+/FKGfPtImpIchfYVZUj28cXbhiTDlExTMgz7+JI/pM+2bRmGIdM0vYskGYYho9CYv4LHBWWMAMYDFm2jrDIOy3E8VsNn8VuvjCRT4aSU6TRLbau8CrdXWtu2acgqst80DZ+fRbcHwrSOt+EpXsd0FN9meYLMEgIAAABAISSlgJOFpVITTwHvO/7TLmjS8F0sy/KbOPKXlDIMI6DeVOUVyp5SoUDvKwAAAAAnE+aUAgAAAAAAQNiRlAIAAAAAAEDYkZQCAAAAAABA2JGUAgAAAAAAQNgx0TlwMrGL/Cx4XHidubYBAAAAAGFATyngZFNw27xKWGxLso4vtl2w2EEvAAAAAE5OPXt1V2x8tGLjoxVXK0ZLly6NdEgII3pKAQAAAACAsKqVECePx+OzzbZt9ezdXZJkmqaOZudEIjSEEUkp4GRU2vC9ctSzld9LSt6fgfeEqmhvKcNgvCEAAABQncTGR5dZxrIsxcZHK+eoKwwRIVIYvgcAAAAAAKqkQBJYqL7oKQWc7ErqKUUHJAAAAACVLCGpVqRDQBVCTykAAAAAABAWeXl5QddJSWsQgkhQFZCUAgAAAAAAVVZWVlakQ0CIkJQCAAAAAFR5jtVPyDl/WKTDQARcesmlkQ4BIcKcUgAAAABQzRmH18qx8kGZB36RLJfs2Iaymo2Up+39ZVc+slkx37ZV7pA9UnSdSonHsfoJSZLnlLFB13OsHS+Zsd5tVsMhcnd9v1LiQvX0xbQvIh0CQoSkFAAAAABUc1HzhsrT5Eq5un4oOWJkHF4j4/DqSIdVLlbahXL3+E+kwwAQBiSlgJNdSXffK4q78QEAAFRNuftkHNkoT/ObJWe8JMlO7CA7sYO3iGP9izI3vSEjN0OKSZG71V2yWv1ZkhT9Q+/8nzNaSJLcnSfIaniJnAuvO97zKld20ulyd3pBdlKn/PZWPyHj0BIpvpnMbR9KzkS5O46X1WR48fg8uXIuu0NmxnTJypMd10TuM/8tu+5ZFTptx8qH5Nj+mZR3QHZcE3lOGSur8RXe/eaO/8i56hEpd2/+9pwM2XW7BN17C0DoVOk5pR5//HEZhuGztG/fvtQ6n376qdq3b6/Y2Fiddtpp+vrrr8MULQAAAABEQHR9WbXbKmrJzTK3fyod3VKsiB2frrw+/5Xrov3K6/yanCsfkrH/Z0mSq///8n9esEmuSw7Kanq1ZFuymo6Qa9A6uS7cLqvOGXIuuFqyT3ybae6eKat+H7mGZMh96uNyLr1VyjssKX/YXkHyx9z6noysX+U6b7VcF+2Vu/snsmNSK3zadtLpcg34Wa6L9srT/q9yLrpeOrJJkmQcXifnouuV1+lFuYZkyKrbVeaebyt8TFTcgvkLIx0CqpAqnZSSpA4dOmjXrl3e5aeffiqx7M8//6yrrrpKN954o5YuXaqhQ4dq6NChWrlyZRgjBgAAAIAwMgzl9f1OVtLpcqx5StH/baeo706Xsec7bxGr8eVSfFPJMGQn95eVep7MfXNKbjMqMb/Xk7OW5IiVp/1YmdnrpZyd3iJ2nc6ymlwpGQ5ZTa+VLJeM7PXF2zKjpLzDMg6vkWTLTmibH0sJzIxvFD092bsYu/0nk6ymV0sxKfnHb/IH2QntZB6Yl9/Gjk9lJZ8jO3WQZDpltbhRdu02pV9HhMXpp3cKuk7OUVcIIkFVUOWH7zmdTqWlpQVU9qWXXtIFF1yg++/Pn8zvySef1MyZM/Xqq6/qtddeC2WYAAAAABA5sWnynPacPKc9J7kOyLH2WUXNv1KuCzZK0fVkbvtQjvUvyji6RZIluY/KE9+i5PY8x+Rc8YDM3TMk1wHJyO/PYLj2yY5rLEmyYwv1djIMyREnuQ8Xa8pqeo2MnF1yLrtdxrHtshpeJHfHv0kxDfwe2kobHNCcUo4NL8nc/LaMYzvyj+/OlpG7Pz+cnF1SfBPfCvHpZbaJqoeEVM1W5XtKrV+/Xo0aNVLLli11zTXXaOvWrSWWnTdvngYOHOizbdCgQZo3b16px8jNzVVWVpbPApxU7IovdrHFjvxihWYBAACo0qLrydP+URmeIzKObJaObpVz8Y1ydxwv14U75Lpor6y0C+SdWNQo/rHQsf4FGYeWyHX2bLku3i/X+cd7QNnl+F/IdMrT7iHlnbtYroG/yji6Tc41T5X79CTJ2Pc/OVY/KfeZk+S6aI9cF+09PodWfnx2bEPp6HbfSkdL/iyJ8HG73ZEOAVVIlU5Kde/eXZMnT9aMGTM0ceJEbdq0SX379tXhw8Wz75KUkZGh1FTfscmpqanKyMgo9Tjjx49XUlKSd2natOSupECNZEnySHKXsXiOl/Wz2JZkWVUsKRXi5FRVWqxQLx5/i1WpCwAAKCfXQTl+G5s/PM72SO6jcmx4UXZUPdkJ7WS4s/P/QYtJlgxTZsY3MgsN7VNMsmyZMo78fmKbO0syY6WoupI7W87fHi13eMbe2TIOLZMst+SsJdsRK9uo2KAdw50lGQ7ZMQ0k25K5ebKMrFXe/VbjK2TunSVj90zJcufv9ze0EGGTVDdBsfHRqp0YH3AdeknVfFV6+N7gwYO9j08//XR1795dzZo10yeffKIbb7yx0o4zZswYjR492ruelZVFYgoAAABA9WBGyzi2U1E/Xyrl7pEcsbLrdFZery/zk0CJp8rT7iFF/TRIsj2y0i6SlXbRifqOOHlOeURRP18s2S65O70sT+u7ZS68TtFfN5FiGsh9ymNybHq9XOEZObvlWHaXjGPbJUecrJRz5Gn/SIVO2UodJKvx5Yqe1UUyY+RJv0Z2vV7e/XZCO7nPfEtRy++UcvfJanyF7OQBkhlToeMicHXrJ+nYsWMVaiM2PprEVA1XpZNSRdWpU0dt27bVhg0b/O5PS0vT7t27fbbt3r27zDmpYmJiFBPDmxMAAACAashZS+4z/11qEc+pj8tz6uMl72//SLFEUV5f3wnGc9OvPVH++J31CnNdtNdv21bTEbKajig1vtLa9bvPMOXuPFHqPPHE/qLHbTJcribDvetRMzvIjr8moDhQPkl1E5Sbm1upbcbGR+ujDz/W0KGXVWq7qBqq9PC9orKzs7Vx40Y1bNjQ7/6ePXtq1qxZPttmzpypnj17hiM8AAAAAEAVYe6aLuUdljy5+XNk5WTIShkU6bBqpDr1EhUbH13pCakCI67+g2LjoxUbHy2Xi55TNUmV7il133336eKLL1azZs20c+dOPfbYY3I4HLrqqqskSdddd50aN26s8ePHS5L+8pe/qF+/fvrHP/6hIUOG6KOPPtKiRYv0xhtvRPI0AAAAAABhZu6ZKefiGyU7T3bttsrr8bkUUz/SYdU4sfHRYT1eYp3akiTDMHTsSGiSYAifKt1Tavv27brqqqvUrl07DR8+XPXr19f8+fOVnJwsSdq6dat27drlLd+rVy99+OGHeuONN9SpUyd99tlnmjp1qjp27BipUwCqn/LcfQ8AAACoYtydXpLrot1yXXxAeQPmy07uF+mQapxZ388qu1CI2Lbt7T3110fGRCwOVIxh2+W5p2fNlpWVpaSkJB18Q/r7a69GOhwgsozjiynJoROpbPP4Yvg+dkZJhiGZpmSahkwzv4JhGDIM40Szx9dN05TD4fDZV2IoRdoo2FZSGYfD4bPNMPMXv22XsL2A6TS9ZaJrR5faVnmZzhPfE5TWtr9jF6ybRbYXXS/1+CW0UdK26DinTIcp01Hy9xv+9pVUvmB7dFxg37aVdtxIKIin6M+ij4Nuzxme8yx6nHAdtyaKji1fR3RHhK55pI6LmnXtE+e2lZm7U1ZMIx05x//8ryWpSdehNLEzW8nM2SE7trFcgzdFOhygUoS7l1RZpn/5tQaeOzDSYdR4WVlZSklroMzMTCUmJlaorZPjLwCA8guy15Tts9hVa7Gq1wIAABAMc/vHci64KtJhRNbRrYqeVlfKyyy9XN5hRX/bXsrdF564EBYXXXxhpENAkKr0nFIAAAAAgADYlpyrxiqvx2c+m81d0+XY8KKMQ0slwyE7tqGshhfL0/ovUkxy2MOM+nGgjAPzJTNakik7roms1PPlaXt/5cQTny7XJQcDCCRBnqbXyLH2WXlO/3vFj3sS+vdbpd/xEQgEPaUAAAAAoJozM76RHV1XdtJpJ7b9/pqci2+Sp9lIuQZtkOuiPcrrOVUyo2UeXByxWD0dnpHr4gNyXbRX7m4fyji2Q9Gze0g5u8MbR/of5dj6juQ+Gtbj1hR33PnnSIfgV6juAIjQICkFAAAAANWcmTFdVnL/ExvyDsu56q9yd3pRVvofpei6+dtrtZDnlLGy0i7wFjUOLVXUj+cpenqqor89Reamt7z7HKufkHPeUDmX/0XR05MVPaOVzO2fnDiObcux8VVFzeyo6OnJ+T2hslYHFrRhyE48Ve6z3pHtTJBjwwv5293Zcs67XNFfNVb0lw0UNfccGZnL8/fl7lH01FrS0S0n2vHkKnp6ioz986UjmxUzJVpyHco/xJ7vFDWri6K/rKfor5vIueyOE/VqNZei68vcNzeweFEtXDn8ikiHgCCQlAIAAACAas7IXC67dvsT6wfmSZ6jshoPK71iToaifhosT4tb5BqyU3k9PpVzzRMy9nzvLWLunimrfh+5hmTIferjci69Vco7nL9v0+syN0+Su+cUuS7cJavRUEXNv1yyXIEHbzplNbpE5r4f89dtS1bTEXINWifXhdtl1TlDzgVX509aGpMiK+U8ObZ9eKJ6xnTZ0Q1k1+9RrOmoxTfK02Z0fs+s89fK0/Qan/1WQvsTCS/UCN/O/G+kQ0AQSEoBAAAAQHXnOiRFJXhXDdc+KbqBZEZ5tzmX3JLf22laHTlWPCRJcmz9QFaDPrKaXJk/51RiR3nSr5Nj+0feenadzt79VtNrJcslI3t9fv3fJ8pzymOya7eRTKc8re6QPMdkHFgQVPh2bGPJdXwuqKhEWU2GS85akiNWnvZjZWavl3J2SpKs9Gtkbv3AW9fc+oGs9Gv8NSsZUTKObJRy90rOWrLr9/Td70yU8gKYgwpASDDROQAAAABUd9F1vL2XJMmObiC59klWnjcx5e7yhtTlDTkX3yjZeZIk4+gWmbtnKHp6oUnGbY+s+n1OrMamnthnGJIjTnIf9tZ3Lh4lLXGcKGO5ZBzbrmDuJWzk7DgxxNBzTM4VD8jcPUNyHZCM/L4Uhmuf7LjGshpeLOeyP8s4sFB2rRYy93wr1+n/9NtuXo9P5Vg7XtEzO8qOT5en7QP5CbYC7iwpqkMQkUKSLMuKdAioIUhKAQAAAEA1Zyd1kpG95sR6vR6SI07mzs9lNflDyfXimshqeKnc3T4osUypx41rIvfp/5CdOqhc9SVJllvmri9lpebPc+VY/4KMQ0vkOnu2FNdEch1SzFcp+cP3JMkRK6vRMDm2fSCrdlvZdbvlzw/lL746neXu/olkWzJ3fiHnwqvlanC2dDzRZh5eI3eLW8sf+0nq/Q/ej3QIqCEYvgcAAAAA1ZyVNkTm3jknNkQlyn3qk3Iuv1vm1vdPDI07uk3GkU3eYp70a2Tu/UHmjs/ze1VZeTIOLZNxcFFAx/W0vE3O1eNkHF6bvyEvS+bOaT69tkpjHF4j5+IbZORlydP67vyN7izJjJWi6uZPev7bo8WPm36tzO2fyLH1HXnSr/XfuOU6ce6GKTu6zvGDHu+bcXSLlLtPVoO+AcWKE275002RDgE1BD2lAAAAAKCas9IGy/nraBlZK2Undszf1up2ueOayLHhJTmX3SmZUbJjG8lqOESeVnflV4xrrLze0+Vc9Vc5l90u2ZbshPZyn/JYYMdt+WfJcMj5y3AZx7ZLzgRZ9XvJSh5QYh3HqoflWP24JFN2XCNZqRfINWCeFJMiSfK0vlvmwusU/XUTKaaB3Kc8Jsem133asOv3lpwJMrJWlzqZu2P7x3L+ep9ku2THNZX7rHelmPr5+7a+L0+z6/LnrsJJy7IstTulrbZt21ps3+5de5WUlBSBqE4eJKUAAAAAoLozHHKf+oQca56Ru9uJO9NZjS6V1ejSUqvadTorr/fXfvd5ThlbbJvror2FjmvIanmrrJaBDYHL6/td2YVi05TX91ufTblFe0MZhlyD1havW6u5ci87cee/vF5flhDIYTm2vi9Xv7llxwMfb7zxetmFqoEGKfWUnZ1dapmjR4+SlAoxhu8BAAAAQA1gNR3hk5BCKaIS5Dp/tRSTXHbZau6rr6YrNj46qOW+++/129aaNat11913hvkMKlftxHjFxkeXmpDKOepSzlGXGjZsGMbITk4kpQAAAAAAqKGGDLlIffoEN2/WqxNe8UlS9ezVXbHx0TqjS6cQRRl6BefidrsDLvvY48V7CqJykZQCAAAAAKAG++7bWVqyaGm56y9dVv66keCv91d5/O25ZyulHZSMOaUAAAAAAKih9u3bpybpjSIdBuAXSSkAAAAAAGqY2onxAQ1VQ2AMw9CGdb9HOowah6QUAAAAAAA1xNZtW9W2XetIh1HjHDuSG+kQaiTmlAIAAAAAoIZIb5peZpnzzxsUhkiqF8MwvHfd27p5u5zO/D48BdsQGvSUAgAAAACgBsk56tLkdyZr1MhRkqSVK1eoY8fTfMowaXc+wzCK9YJKSUlRdtbRCEV0cqGnFAAAAAAANUxBQkpSsYRUZdu354AuG3pZSI9R2Qp6RjEsL7JISgEAAAAAcJIpGJZWeJnxzbdBtTH/51+Uc9Sl2rVr65sZ34Qo0sp1151/IRlVhTB8DwAAAAAAqH+//j7zJ118yUWa+V3xRNXR7ByZpm8fl5ycnJDHV9Ts7+dowDn9Aip75PAxORyOEEeEYNFTCgAAAAAAFPPltOl+e1QVTUhFSs8ePUudhPwvd93tjZmEVNVETykAAAAAAFBtcXe86qtqpDcBAAAAAEC11LxFeqRDQDVFUgoAAAAAAJRbxu6MSIeAaoqkFAAAAAAAAMKOpBQAAAAAAADCjqQUAAAAAAAol1tv+1PEjj3hX69G7NioHCSlAAAAAABAucyY8U3Ejn3/A/dF7NioHCSlAAAAAABAuWRmZUbs2JZlRezYqBwkpQAAAAAAQLkcO3Ys0iGgGiMpBQAAAAAAgLAjKQUAAAAAAKqlpLoJkQ4BFUBSCgAAAAAABG3uj3MjHYJyc3MjHQIqgKQUAAAAAAAI2kUXXxjpEFDNkZQCAAAAAABBc7lckQ4B1RxJKQAAAAAAAIQdSSkAAAAAAACEHUkpAAAAAABQbW3avCnSIaCcSEoBAAAAAIBqa8GCXyIdAsqJpBQAAAAAAKi2/vWvCZEOAeVEUgoAAAAAAATlmfFPRzoEry1btkQ6BJQTSSkAAAAAABCUJ596ItIheO3eszvSIaCcqnRSavz48eratasSEhKUkpKioUOHau3ataXWmTx5sgzD8FliY2PDFDFQQ9nHFwAAAAAAKkmVTkrNmTNHt99+u+bPn6+ZM2cqLy9P559/vo4cOVJqvcTERO3atcu70JUPAAAAAIDKYxhGpEPwsm2+Qa+unJEOoDQzZszwWZ88ebJSUlK0ePFinX322SXWMwxDaWlpoQ4PAAAAAICT0tHsHMXGR0c6DFRzVbqnVFGZmZmSpHr16pVaLjs7W82aNVPTpk116aWXatWqVaWWz83NVVZWls8CAAAAAACqvqrUawvBqdI9pQqzLEt33323evfurY4dO5ZYrl27dnr77bd1+umnKzMzU3//+9/Vq1cvrVq1Sk2aNPFbZ/z48Ro3blyoQgdqBlu+c0uV8Ngu9DN/Kb0rrW3bIetu67ddq5xtWbbfx5WpMtot5+mV71ie0BwtVO2GkumoVt/xAAAAVIqcoy5ZlqX42pGdx/nYkdyIHh/lV23+i7799tu1cuVKffTRR6WW69mzp6677jqdccYZ6tevnz7//HMlJyfr9ddfL7HOmDFjlJmZ6V22bdtW2eED1Z8d2GIXW+zqsVi+CwAAAICymaapnKMuPfTgmIgcP+eoKyLHReWoFkmpO+64Q9OnT9fs2bNL7O1UkqioKHXu3FkbNmwosUxMTIwSExN9FgAAAAAAEJh+/fqH/ZjvTH437MdE5arSSSnbtnXHHXdoypQp+v7779WiRYug2/B4PFqxYoUaNmwYgggBAAAAAIDb7Q77MYdf+YewHxOVq0rPKXX77bfrww8/1BdffKGEhARlZGRIkpKSkhQXFydJuu6669S4cWONHz9ekvTEE0+oR48eat26tQ4dOqTnn39eW7Zs0U033RSx8wAAAAAAoCaLjg7/nfiY4Lz6q9JJqYkTJ0qS+vfv77N90qRJGjVqlCRp69atMs0THb4OHjyom2++WRkZGfr/9u49KMr73uP4ZxUWUAFFkZUYvATFW0CFiJgLrDGizfFItBOHOuNlPCZnBqOEJs4xk0qcZEqmN2OqjSY9Df2jxksyorEN1lqgXhAVJWpjiDFWzBFEjCCgoIE9f+RkTzYCrsvyPEDerxlmeH6X5/my49fVzzz70K9fP8XGxurQoUMaM2aMUWUDAAAAAPCDcr2mxuwS0AV16lDKnd/IlZ+f73K8du1arV27toMqAgAAAAAA33fm0zNml4AuqFM/UwoAAAAAAHR+X3zxhUf7+O15P2yEUgAAAAAAoF1OnTppdgnoggilAAAAAABAu5R+Vmp2CeiCCKUAAAAAAEC71NXVmV0CuiBCKQAAAAAAYDiLxSJJChsYZnIlMAuhFAAAAAAAMJyPj48k6cK/LppcCcxCKAUAAAAAAAz34gsrzS4BJiOUAgAAAAAAhps7Z67ZJcBkhFIAAAAAAMBwY8eOM7sEmIxQCgAAAAAAmCo4ONjsEmACQikAAAAAAGAqq9VqdgkwAaEUAAAAAAAw1ZUrV+5p/ex/n91BlcBIhFIAAAAAAKBL2bplu9klwAsIpQAAAAAAAGA4QikAAAAAAAAYjlAKAAAAAAAYKiAgwOW4V69ebu+NiBji7XJgEkIpAAAAAABgqIcffsTleMgQ94Omtze94+1yYBJCKQAAAAAAYKjdu/7scnyi+GO39yYlJnm5GpiFUAoAAAAAAACGI5QCAAAAAACA4QilAAAAAAAAYDhCKQAAAAAAABiOUAoAAAAAAJjqzJlPzC4BJiCUAgAAAAAAhhk5cuQdYxPjJphQCcxGKAUAAAAAAAzz3++8e8eYw+EwoRKYjVAKAAAAAAAY5qGHHnI57h/az6RKYDZCKQAAAAAAYJr6+nq31364c3cHVgKjEUoBAAAAAIAu4YknpptdAryIUAoAAAAAAJjG39/f7BJgEkIpAAAAAADgscbGRrfXLv2PZ+4Y++D9HW7ttVqtbl8HXQOhFAAAAAAA8NiBgwfcXvvbN9ffMXb5coVbe2uu1bp9HXQNhFIAAAAAAMBjX5w71679K9KXu7XOYrG06zrofAilAAAAAACAx6Y+/ni79tfWcgfUDxWhFAAAAAAA8NgDwx9wa130g9EeX+NfX5R5vBedF6EUAAAAAADw2Oixo9xa19DY4PE1bDabx3vReRFKAQAAAAAAj72/7X231n322WcdXAm6GkIpAAAAAADgsd59+ri1bta/zbpj7Inkad4uB10IoRQAAAAAAPDY0CFD3Vq3fdsHHp2/tqbeo33o/AilAAAAAACAKXbv+vNd1/j6+hpQCcxAKAUAAAAAADpUw41bLY77+fm1ua9v374dUA06C0IpAAAAAADQYS5e+B+P91ZcqvRiJehsCKUAAAAAAIDHpjw8uc350NBQgypBV0MoBQAAAAAAPHb8xHGP9z762MNerARdDaEUAAAAAADwyI0bN9q1/+ixo23O3759u13nR+fWJUKpDRs2aOjQofL391d8fLyOHDnS5vrt27dr1KhR8vf314MPPqi//OUvBlUKAAAAAMAPx9hxozv0/EF9+3To+WGuTh9Kbd26VRkZGcrMzNTx48cVExOj5ORkVVa2/LCzQ4cOKTU1VUuWLNGJEyeUkpKilJQUnT592uDKAQAAAADo3tLTn+/Q89+sb+zQ88NcnT6U+s1vfqOlS5dq8eLFGjNmjDZu3KhevXrpD3/4Q4vr161bpxkzZujFF1/U6NGj9eqrr2rixIlav369wZUDAAAAANC9rVie3ub8hfMXPT63r6+vx3vRNfiYXUBbbt26peLiYq1atco51qNHD02bNk2FhYUt7iksLFRGRobLWHJysnJyclq9TmNjoxob/z99rampkSTV3pRe+M9l7fgJAHQvFrMLaJUplTX931dbPCnsmgd7AACmqpVDFkmOG+Vy7B5+T3ubLJ33/dWbbjdUfPMaNTfr1vXrZpcDeFVlRZUkqbm5Wate+i99uPtDlRz/WFarVZJ0vY0/85UVVRpoG9DqOdvaC3PU1tZKkhwOR7vP1alDqaqqKjU1NSksLMxlPCwsTJ9++mmLeyoqKlpcX1FR0ep1srKytGbNmjvGI1Z4UDSAbqz9f+kCANC9OSS1/u9uSFK5pDv/Aw50N4Mjwtu1v6WgCp3L1atXFRwc3K5zdOpQyiirVq1yubuqurpaQ4YMUVlZWbtfYABtu379uu6//35dvHhRQUFBZpcDdHv0HGAc+g0wDv0GGKempkYREREKCQlp97k6dSg1YMAA9ezZU5cvX3YZv3z5smw2W4t7bDbbPa2XJD8/P/n5+d0xHhwczF9ogEGCgoLoN8BA9BxgHPoNMA79BhinR4/2P6a8Uz/o3Gq1KjY2Vvv27XOONTc3a9++fUpISGhxT0JCgst6Sdq7d2+r6wEAAAAAAGC8Tn2nlCRlZGRo4cKFiouL06RJk/TGG2+ovr5eixcvliQtWLBA9913n7KysiRJK1asUGJion7961/rySef1JYtW3Ts2DG9/fbbZv4YAAAAAAAA+I5OH0rNmzdPV65c0erVq1VRUaHx48crNzfX+TDzsrIyl1vGpkyZos2bN+vll1/WSy+9pBEjRignJ0fjxo1z+5p+fn7KzMxs8SN9ALyLfgOMRc8BxqHfAOPQb4BxvNlvFoc3focfAAAAAAAAcA869TOlAAAAAAAA0D0RSgEAAAAAAMBwhFIAAAAAAAAwHKEUAAAAAAAADEco1YINGzZo6NCh8vf3V3x8vI4cOWJ2SUCX949//EOzZs1SeHi4LBaLcnJyXOYdDodWr16tQYMGKSAgQNOmTdPZs2fNKRbo4rKysvTQQw8pMDBQAwcOVEpKikpLS13WNDQ0KC0tTf3791efPn00d+5cXb582aSKga7rrbfeUnR0tIKCghQUFKSEhAR99NFHznl6Deg4r7/+uiwWi9LT051j9BzgPa+88oosFovL16hRo5zz3ug3Qqnv2bp1qzIyMpSZmanjx48rJiZGycnJqqysNLs0oEurr69XTEyMNmzY0OL8L37xC7355pvauHGjioqK1Lt3byUnJ6uhocHgSoGur6CgQGlpaTp8+LD27t2r27dva/r06aqvr3euef755/Xhhx9q+/btKigo0KVLlzRnzhwTqwa6psGDB+v1119XcXGxjh07pqlTp2r27Nn65z//KYleAzrK0aNHtWnTJkVHR7uM03OAd40dO1bl5eXOrwMHDjjnvNJvDriYNGmSIy0tzXnc1NTkCA8Pd2RlZZlYFdC9SHLs2LHDedzc3Oyw2WyOX/7yl86x6upqh5+fn+O9994zoUKge6msrHRIchQUFDgcjm/6y9fX17F9+3bnmjNnzjgkOQoLC80qE+g2+vXr5/j9739PrwEdpLa21jFixAjH3r17HYmJiY4VK1Y4HA7e3wBvy8zMdMTExLQ4561+406p77h165aKi4s1bdo051iPHj00bdo0FRYWmlgZ0L2dP39eFRUVLr0XHBys+Ph4eg/wgpqaGklSSEiIJKm4uFi3b9926blRo0YpIiKCngPaoampSVu2bFF9fb0SEhLoNaCDpKWl6cknn3TpLYn3N6AjnD17VuHh4Ro+fLjmz5+vsrIySd7rNx+vV9yFVVVVqampSWFhYS7jYWFh+vTTT02qCuj+KioqJKnF3vt2DoBnmpublZ6erocffljjxo2T9E3PWa1W9e3b12UtPQd45tSpU0pISFBDQ4P69OmjHTt2aMyYMSopKaHXAC/bsmWLjh8/rqNHj94xx/sb4F3x8fHKzs5WVFSUysvLtWbNGj366KM6ffq01/qNUAoAgG4sLS1Np0+fdvn8PwDvioqKUklJiWpqavT+++9r4cKFKigoMLssoNu5ePGiVqxYob1798rf39/scoBub+bMmc7vo6OjFR8fryFDhmjbtm0KCAjwyjX4+N53DBgwQD179rzjafGXL1+WzWYzqSqg+/u2v+g9wLuWLVum3bt3Ky8vT4MHD3aO22w23bp1S9XV1S7r6TnAM1arVZGRkYqNjVVWVpZiYmK0bt06eg3wsuLiYlVWVmrixIny8fGRj4+PCgoK9Oabb8rHx0dhYWH0HNCB+vbtq5EjR+rzzz/32nscodR3WK1WxcbGat++fc6x5uZm7du3TwkJCSZWBnRvw4YNk81mc+m969evq6ioiN4DPOBwOLRs2TLt2LFDf//73zVs2DCX+djYWPn6+rr0XGlpqcrKyug5wAuam5vV2NhIrwFe9vjjj+vUqVMqKSlxfsXFxWn+/PnO7+k5oOPU1dXp3LlzGjRokNfe4/j43vdkZGRo4cKFiouL06RJk/TGG2+ovr5eixcvNrs0oEurq6vT559/7jw+f/68SkpKFBISooiICKWnp+u1117TiBEjNGzYMP3sZz9TeHi4UlJSzCsa6KLS0tK0efNm7dy5U4GBgc7P9QcHBysgIEDBwcFasmSJMjIyFBISoqCgID333HNKSEjQ5MmTTa4e6FpWrVqlmTNnKiIiQrW1tdq8ebPy8/O1Z88eeg3wssDAQOfzEb/Vu3dv9e/f3zlOzwHe88ILL2jWrFkaMmSILl26pMzMTPXs2VOpqalee48jlPqeefPm6cqVK1q9erUqKio0fvx45ebm3vEAZgD35tixY7Lb7c7jjIwMSdLChQuVnZ2tlStXqr6+Xs8884yqq6v1yCOPKDc3l+cFAB546623JElJSUku4++++64WLVokSVq7dq169OihuXPnqrGxUcnJyfrd735ncKVA11dZWakFCxaovLxcwcHBio6O1p49e/TEE09IotcAo9FzgPd8+eWXSk1N1dWrVxUaGqpHHnlEhw8fVmhoqCTv9JvF4XA4OqJ4AAAAAAAAoDU8UwoAAAAAAACGI5QCAAAAAACA4QilAAAAAAAAYDhCKQAAAAAAABiOUAoAAAAAAACGI5QCAAAAAACA4QilAAAAAAAAYDhCKQAAAAAAABiOUAoAAKCD5Ofny2KxqLq6utU12dnZ6tu3713PZbFYlJOTc881lJaWymazqba21jmWk5OjyMhI9ezZU+np6S3uq6qq0sCBA/Xll1/e8zUBAADcQSgFAABwFxs3blRgYKC+/vpr51hdXZ18fX2VlJTksvbbIOrcuXOaMmWKysvLFRwc7Pa1XnnlFY0fP95LlUurVq3Sc889p8DAQOfYs88+qx//+Me6ePGiXn31VS1atEgpKSku+wYMGKAFCxYoMzPTa7UAAAB8F6EUAADAXdjtdtXV1enYsWPOsf3798tms6moqEgNDQ3O8by8PEVEROiBBx6Q1WqVzWaTxWIxo2yVlZVp9+7dWrRokXOsrq5OlZWVSk5OVnh4uEtY9X2LFy/Wn/70J3311VcGVAsAAH5oCKUAAADuIioqSoMGDVJ+fr5zLD8/X7Nnz9awYcN0+PBhl3G73e78/vsf38vOzlZERIR69eqlp556SlevXnWZW7NmjT7++GNZLBZZLBZlZ2c756uqqvTUU0+pV69eGjFihHbt2tVm3du2bVNMTIzuu+8+Zz3fhlBTp06VxWJRUlKS/vjHP2rnzp3Oa377c44dO1bh4eHasWOHJy8bAABAmwilAAAA3GC325WXl+c8zsvLU1JSkhITE53jN2/eVFFRkTOU+r6ioiItWbJEy5YtU0lJiex2u1577TXn/Lx58/TTn/5UY8eOVXl5ucrLyzVv3jzn/Jo1a/T000/r5MmT+tGPfqT58+e3eRfT/v37FRcX5zyeMmWKSktLJUkffPCBysvLtWvXLj399NOaMWOG85pTpkxx7pk0aZL2799/j68WAADA3RFKAQAAuMFut+vgwYP6+uuvVVtbqxMnTigxMVGPPfaY886iwsJCNTY2thpKrVu3TjNmzNDKlSs1cuRILV++XMnJyc75gIAA9enTRz4+PrLZbLLZbAoICHDOL1q0SKmpqYqMjNTPf/5z1dXV6ciRI63WfOHCBYWHhzuPrVarBg4cKEkKCQmRzWZTUFCQAgIC5Ofn57ym1Wp17gkPD9eFCxc8es0AAADaQigFAADghqSkJNXX1+vo0aPav3+/Ro4cqdDQUCUmJjqfK5Wfn6/hw4crIiKixXOcOXNG8fHxLmMJCQlu1xAdHe38vnfv3goKClJlZWWr62/evCl/f3+3z9+SgIAA3bhxo13nAAAAaImP2QUAAAB0BZGRkRo8eLDy8vJ07do1JSYmSvrmTqL7779fhw4dUl5enqZOndphNfj6+rocWywWNTc3t7p+wIABunbtWruu+dVXXyk0NLRd5wAAAGgJd0oBAAC4yW63Kz8/X/n5+UpKSnKOP/bYY/roo4905MiRVj+6J0mjR49WUVGRy9h3H5IuffMRu6amJq/UO2HCBH3yySd3XdfWNU+fPq0JEyZ4pR4AAIDvIpQCAABwk91u14EDB1RSUuK8U0qSEhMTtWnTJt26davNUGr58uXKzc3Vr371K509e1br169Xbm6uy5qhQ4fq/PnzKikpUVVVlRobGz2uNzk5WYWFhXcNuYYOHaqTJ0+qtLRUVVVVun37tiTpxo0bKi4u1vTp0z2uAQAAoDWEUgAAAG6y2+26efOmIiMjFRYW5hxPTExUbW2toqKiNGjQoFb3T548We+8847WrVunmJgY/fWvf9XLL7/ssmbu3LmaMWOG7Ha7QkND9d5773lc78yZM+Xj46O//e1vba5bunSpoqKiFBcXp9DQUB08eFCStHPnTkVEROjRRx/1uAYAAIDWWBwOh8PsIgAAANAxNmzYoF27dmnPnj33vHfy5Mlavny5fvKTn3RAZQAA4IeOB50DAAB0Y88++6yqq6tVW1urwMBAt/dVVVVpzpw5Sk1N7cDqAADADxl3SgEAAAAAAMBwPFMKAAAAAAAAhiOUAgAAAAAAgOEIpQAAAAAAAGA4QikAAAAAAAAYjlAKAAAAAAAAhiOUAgAAAAAAgOEIpQAAAAAAAGA4QikAAAAAAAAYjlAKAAAAAAAAhvtfNRPXitQDr0gAAAAASUVORK5CYII=\n"
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"source": [
"usable_dims['aspect_ratio'].hist(bins=50, figsize=(8, 4))\n",
"plt.title(\"Aspect Ratio Distribution\")\n",
"plt.xlabel(\"Width / Height\")\n",
"plt.ylabel(\"Number of Paintings\")\n",
"plt.show()\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 410
},
"id": "SJQdCCz1uhxA",
"outputId": "70bda867-68ff-4ac8-b794-f47b22c19e56"
},
"execution_count": 56,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 800x400 with 1 Axes>"
],
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAsAAAAGJCAYAAACEkIXWAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAATeBJREFUeJzt3XlclPX+///nsIuyiAnIyYW03HI3ldyTpDRPmuckaYZm2ilwo2NqJYJpLi3uS6tmYXbqm2aaCqlp7ltkLpmaS5+jgIWKSCLC9fujH3MaQWVshmGax/12m9vhel/vua7XNW89Prt4z/syGYZhCAAAAHARbo4uAAAAAChLBGAAAAC4FAIwAAAAXAoBGAAAAC6FAAwAAACXQgAGAACASyEAAwAAwKUQgAEAAOBSCMAAAABwKQRgAPiL6NSpkzp16uTQGmrVqqUBAwbY/TwnTpyQyWTSokWLzG0DBgxQpUqV7H7uIiaTSYmJiWV2PgC2QwAGUKbmzZsnk8mk1q1bO7oUq23dulWJiYk6f/58qfoPGDBAJpPJ/PL29tZdd92lhIQEXb58+ZZqOHjwoBITE3XixIlber81OnXqZK7dzc1N/v7+qlu3rvr376/U1FSbnefLL78st0GyPNcG4NZ5OLoAAK4lOTlZtWrV0s6dO3X06FHVqVPH0SWV2tatW5WUlKQBAwYoMDCwVO/x9vbWO++8I0m6cOGCPv/8c7388ss6duyYkpOTra7h4MGDSkpKUqdOnVSrVi2LfSkpKVYf72Zuv/12TZ48WZJ06dIlHT16VJ999pk+/PBDPfroo/rwww/l6elp7n/48GG5uVl3b+XLL7/U3LlzrQqaNWvW1G+//WZxbnu4UW2//fabPDz4ZxRwRvzNBVBmjh8/rq1bt+qzzz7T008/reTkZI0fP97RZdmVh4eHHn/8cfP2s88+q3vvvVcfffSR3njjDYWEhNjsXF5eXjY7VpGAgACL+iVpypQpGjZsmObNm6datWpp6tSp5n3e3t42r+GPrl69qsLCQnl5ecnHx8eu57oZR58fwK1jCgSAMpOcnKzKlSure/fu+sc//nHdO6BLly5VixYt5OfnJ39/fzVq1EgzZ84071+0aJFMJpM2bdqkp59+WlWqVJG/v7+eeOIJnTt3rtjxVq9erfbt26tixYry8/NT9+7ddeDAgWL9fvjhBz366KOqWrWqKlSooLp16+rFF1+UJCUmJmrUqFGSpPDwcPPUAGunIphMJrVr106GYeinn34yt588eVLPPvus6tatqwoVKqhKlSr65z//aXH8RYsW6Z///KckqXPnzuYavv76a0klzwHOzMzUoEGDFBISIh8fHzVp0kTvv/++VTVfy93dXbNmzVKDBg00Z84cXbhwwbzv2jnA+fn5SkpK0p133ikfHx9VqVJF7dq1M0+hGDBggObOnWv+bIpe0v/m+b722muaMWOGateuLW9vbx08eLDEOcBFfvrpJ0VFRalixYoKCwvThAkTZBiGef/XX39t8bkVufaYN6qtqO3aO8PffvutHnzwQfn7+6tSpUrq0qWLtm/fbtGn6M/vli1bFB8fr6pVq6pixYrq1auXzp49e/MBAPCncQcYQJlJTk7WI488Ii8vLz322GOaP3++du3apXvuucfcJzU1VY899pi6dOlivrN46NAhbdmyRcOHD7c4XlxcnAIDA5WYmKjDhw9r/vz5OnnypDngSNIHH3ygmJgYRUVFaerUqcrNzdX8+fPVrl07ffvtt+ZpBPv27VP79u3l6empIUOGqFatWjp27Ji++OILTZo0SY888oh+/PFHffTRR5o+fbpuu+02SVLVqlWt/hyKQm3lypXNbbt27dLWrVsVHR2t22+/XSdOnND8+fPVqVMnHTx4UL6+vurQoYOGDRumWbNm6YUXXlD9+vUlyfy/1/rtt9/UqVMnHT16VHFxcQoPD9cnn3yiAQMG6Pz588U+T2u4u7vrscce07hx47R582Z17969xH6JiYmaPHmynnrqKbVq1UrZ2dnavXu39u7dq/vvv19PP/20Tp8+rdTUVH3wwQclHmPhwoW6fPmyhgwZIm9vbwUFBamwsLDEvgUFBXrggQfUpk0bTZs2TWvWrNH48eN19epVTZgwwaprLE1tf3TgwAG1b99e/v7+ev755+Xp6ak333xTnTp10saNG4vNex86dKgqV66s8ePH68SJE5oxY4bi4uL08ccfW1UngFtgAEAZ2L17tyHJSE1NNQzDMAoLC43bb7/dGD58uEW/4cOHG/7+/sbVq1eve6yFCxcakowWLVoYV65cMbdPmzbNkGR8/vnnhmEYxsWLF43AwEBj8ODBFu9PT083AgICLNo7dOhg+Pn5GSdPnrToW1hYaP751VdfNSQZx48f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GLeUcI4ePapjx46pQ4cOqlChggzDsPkd4AYNGigqKkr/93//p40bN+pvf/ubnn32WQ0ePFiS9NNPP6l27dr69ttv1bRpU/P7OnbsqKZNm2rmzJl677339Nxzz+ncuXPm/VevXpWPj48++eQT9erVq9h5ExMTlZSUVKx9yZIl8vX1tek1AgAA4M/Lzc1V3759deHCBfn7+9+wr9V3gH/99Vc9+uij2rBhg0wmk44cOaI77rhDgwYNUuXKlfX666/fcuHX+umnnzR//nzFx8frhRde0K5duzRs2DB5eXkpJiZG6enpkqSQkBCL94WEhJj3paenKzg42GK/h4eHgoKCzH2uNXbsWIv5zNnZ2apevbq6du160w/UFvLz85Wamqr7779fnp6edj/fjdyduNZux96fGGWXOqw5ri2Vp3FD6TFuzolxc06Mm3NylnEr+o19aVgdgEeOHClPT0+dOnVK9evXN7f36dNH8fHxNg3AhYWFatmypV555RVJUrNmzbR//34tWLBAMTExNjvPtby9veXt7V2s3dPTs0wHvqzPV5K8Atve1f8ja67Nmjoc/ZmVh3GD9Rg358S4OSfGzTmV93GzpjarV4FISUnR1KlTdfvtt1u033nnnTp58qS1h7uhatWqqUGDBhZt9evX16lTpyRJoaGhkqSMjAyLPhkZGeZ9oaGhyszMtNh/9epVZWVlmfsAAADAdVgdgC9dulTiPNisrKwS75r+GW3bttXhw4ct2n788UfVrFlT0u9fiAsNDdW6devM+7Ozs7Vjxw5FRERIkiIiInT+/Hnt2bPH3Gf9+vUqLCxU69atbVovAAAAyj+rA3D79u21ePFi87bJZFJhYaGmTZumzp0727S4kSNHavv27XrllVd09OhRLVmyRG+99ZZiY2PN5x4xYoQmTpyoFStW6Pvvv9cTTzyhsLAw9ezZU9Lvd4wfeOABDR48WDt37tSWLVsUFxen6OjoEleAAAAAwF+b1XOAp02bpi5dumj37t26cuWKnn/+eR04cEBZWVnasmWLTYu75557tGzZMo0dO1YTJkxQeHi4ZsyYoX79+pn7PP/887p06ZKGDBmi8+fPq127dlqzZo15DWBJSk5OVlxcnLp06SI3Nzf17t1bs2bNsmmtAAAAcA5WB+C7775bP/74o+bMmSM/Pz/l5OTokUceUWxsrKpVq2bzAh96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\n"
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"source": [
"paintings['beginyear'].astype(int).hist(bins=80, figsize=(10, 4))\n",
"plt.title(\"Painting Creation Years\")\n",
"plt.xlabel(\"Year\")\n",
"plt.ylabel(\"Count\")\n",
"plt.show()\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 410
},
"id": "H8-R1uc6ulQL",
"outputId": "94d53aed-ad2f-4033-8531-0ad5dbe30bc5"
},
"execution_count": 57,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 1000x400 with 1 Axes>"
],
"image/png": "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9GmX15WUlBhxcXFG7969Xcajo6ON5OTkCtuPj483ysrKnOMTJkwwfHx8jPz8fOdYx44djV69elWocdOmTYYkY9OmTc6xXr16GZKMV1991TlWXFxshIeHG0OGDHGOPffcc4Yk491333WOnTlzxmjfvn2FbZ6roKDAkGTccccd551zLkmGt7e3sW/fPpfxkSNHGhEREcaPP/7oMj506FAjODjY2d+zZ88axcXFLnN+/vlnIywszPjDH/7gHPvhhx8MScbUqVMr1DB16lTj1//s7t6925BkjBo1ymXeo48+akgyNm7c6ByLjo42JBlbt251juXl5Rk2m8145JFHqtWDHTt2GN7e3kbTpk2NkJAQIycnxzAMw/i///s/w9vb2/joo49c5i9YsMCQZHzyySfOsXOPN8MwjMTERKNNmzYuY+X1rlmzxmV8zpw5hiTjhx9+qFbNAODJuLQPADxYfHy8WrRooaioKA0dOlSNGjXSypUrdcUVV0iSyz0nP//8swoKCnTzzTfrs88+q9b2H3jgAZfLzW6++WaVlpbqyJEjNa65UaNGuueee5zL/v7+uv766/Xf//7XObZmzRpdccUVGjhwoHMsICBAo0ePrnL7hYWFkqTGjRubqqtXr16KjY11LhuGobffflu33367DMPQjz/+6PyTmJiogoICZx99fHzk7+8v6Zf7q44fP66zZ8+qe/fu1e71uVavXi1JSk1NdRl/5JFHJKnCPV6xsbG6+eabncstWrRQu3btXPp6Iddff73++Mc/6vjx45oxY4bzzOKKFSvUoUMHtW/f3qUH5ZeR/vos4a+Pt4KCAv3444/q1auX/vvf/6qgoMDl/WJiYpSYmOgyFhISIkl67733VFZWVq26AcBTcWkfAHiw9PR0XX311fL19VVYWJjatWvn8oS8VatW6amnntLu3btd7mep7vcVtWrVymW5SZMmkn4JZTXVsmXLCu/fpEkTffHFF87lI0eO6Morr6wwr23btlVuPygoSJJ04sQJU3XFxMS4LP/www/Kz8/XwoULz/t0v7y8POffX3nlFT333HP6+uuv5XA4zrvd6jpy5Ii8vb0r7HN4eLhCQkIqhNlzf1bSL30187O67rrrJMn5ABNJ2r9/v7766ivn/V3n+nUPPvnkE02dOlWZmZk6ffq0y7yCggIFBwc7lyvry913361//vOfGjVq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PKLly5eruLhYiYmJmjdvnsLCwpyvO3r0qMaMGaNNmzapUaNGSk5O1owZM+Tr6zG7BgAAAEiq3sMbUD94xBmpXbt26cUXX1Tnzp1dxidMmKD3339fK1as0JYtW/T9999r8ODBzvWlpaVKSkpSSUmJtm3bpldeeUVLlizRlClTrN4FAAAAAJcRtwepkydPavjw4XrppZfUpEkT53hBQYEWLVqk2bNnq3fv3urWrZsWL16sbdu2afv27ZKkdevW6csvv9Rrr72mLl26qH///nryySeVnp6ukpISd+0SAAAAgEuc269/S0lJUVJSkuLj4/XUU085x7OysuRwOBQfH+8ca9++vVq1aqXMzEz17NlTmZmZ6tSpk8ulfomJiRozZoz27dunrl27VvqexcXFKi4udi4XFhZKkhwOhxwOR23vIv5/5b2lx3WPXluLfluLfluHXluLflvHnb22+Ri1sh2raq9OvVXVUt+O7erW6dYgtXz5cn322WfatWtXhXU5OTny9/dXSEiIy3hYWJhycnKcc34dosrXl687nxkzZmj69OkVxtetW6fAwECzuwGTMjIy3F3CZYNeW4t+W4t+W4deW4t+W8cdvZ51fe1sZ/Xq1bWzoSpUp97q1lJfju3Tp09Xa57bgtQ333yj8ePHKyMjQwEBAZa+96RJk5SamupcLiwsVFRUlBISEhQUFGRpLZcTh8OhjIwM9e3bV35+fu4u55JGr61Fv61Fv61Dr61Fv63jzl7HTVtbK9vZOy2xVrZTlerUW1Ut9e3YLr9arSpuC1JZWVnKy8vTtdde6xwrLS3V1q1b9Y9//ENr165VSUmJ8vPzXc5K5ebmKjw8XJIUHh6unTt3umw3NzfXue58bDabbDZbhXE/P7968cOt7+izdei1tei3tei3dei1tei3ddzR6+JSr1rZjlV1V6fe6tZSX47t6tbotodN9OnTR3v27NHu3budf7p3767hw4c7/+7n56cNGzY4X5Odna2jR4/KbrdLkux2u/bs2aO8vDznnIyMDAUFBSk2NtbyfQIAAABweXDbGanGjRsrLi7OZaxhw4Zq1qyZc3zkyJFKTU1V06ZNFRQUpHHjxslut6tnz56SpISEBMXGxuree+/VrFmzlJOTo8mTJyslJaXSM04AAAAAUBvc/tS+C5kzZ468vb01ZMgQly/kLefj46NVq1ZpzJgxstvtatiwoZKTk5WWlubGqgEAAIC6VdUX+x6emWRRJZcvjwpSmzdvdlkOCAhQenq60tPTz/ua6Ohoy55aAgAAAACSB3whLwAAAADUNwQpAAAAADDJoy7tAwAAAGCNqu6zwoVxRgoAAAAATCJIAQAAAIBJBCkAAAAAMIkgBQAAAAAmEaQAAAAAwCSCFAAAAACYRJACAAAAAJMIUgAAAABgEkEKAAAAAEwiSAEAAACASTUKUm3atNFPP/1UYTw/P19t2rS56KIAAAAAwJPVKEgdPnxYpaWlFcaLi4v13XffXXRRAAAAAODJfM1M/te//uX8+9q1axUcHOxcLi0t1YYNG9S6detaKw4AAAAAPJGpIDVo0CBJkpeXl5KTk13W+fn5qXXr1nruuedqrTgAAAAA8ESmglRZWZkkKSYmRrt27VLz5s3rpCgAAAAANdf6zx+4u4RLnqkgVe7QoUO1XQcAAAAA1Bs1ClKStGHDBm3YsEF5eXnOM1XlXn755YsuDAAAAAA8VY2C1PTp05WWlqbu3bsrIiJCXl5etV0XAAAAAHisGgWpBQsWaMmSJbr33ntrux4AAAAA8Hg1+h6pkpIS3XDDDbVdCwAAAADUCzUKUqNGjdKyZctquxYAAAAAqBdqdGlfUVGRFi5cqPXr16tz587y8/NzWT979uxaKQ4AAAAAPFGNgtQXX3yhLl26SJL27t3rso4HTwAAAAC41NUoSG3atKm26wAAAACAeqNG90gBAAAAwOWsRmekbrvttgtewrdx48YaFwQAAAAAnq5GQar8/qhyDodDu3fv1t69e5WcnFwbdQEAAACAx6pRkJozZ06l49OmTdPJkycvqiAAAAAA8HS1eo/UPffco5dffrk2NwkAAAAAHqdWg1RmZqYCAgJqc5MAAAAA4HFqdGnf4MGDXZYNw9CxY8f06aef6oknnqiVwgAAAADAU9UoSAUHB7sse3t7q127dkpLS1NCQkKtFAYAAAAAnqpGQWrx4sW1XQcAAAAA1Bs1ClLlsrKy9NVXX0mSOnbsqK5du9ZKUQAAAADgyWr0sIm8vDz17t1b1113nR566CE99NBD6tatm/r06aMffvih2tuZP3++OnfurKCgIAUFBclut+vDDz90ri8qKlJKSoqaNWumRo0aaciQIcrNzXXZxtGjR5WUlKTAwECFhobqscce09mzZ2uyWwAAAABQLTUKUuPGjdOJEye0b98+HT9+XMePH9fevXtVWFiohx56qNrbadmypWbOnKmsrCx9+umn6t27t+644w7t27dPkjRhwgS9//77WrFihbZs2aLvv//e5UEXpaWlSkpKUklJibZt26ZXXnlFS5Ys0ZQpU2qyWwAAAABQLTW6tG/NmjVav369OnTo4ByLjY1Venq6qYdN3H777S7L/+///T/Nnz9f27dvV8uWLbVo0SItW7ZMvXv3lvTLvVkdOnTQ9u3b1bNnT61bt05ffvml1q9fr7CwMHXp0kVPPvmkJk6cqGnTpsnf378muwcAAAAAF1SjIFVWViY/P78K435+fiorK6tRIaWlpVqxYoVOnTolu92urKwsORwOxcfHO+e0b99erVq1UmZmpnr27KnMzEx16tRJYWFhzjmJiYkaM2aM9u3bd957toqLi1VcXOxcLiwslCQ5HA45HI4a1Y+qlfeWHtc9em0t+m0t+m0dem0t+m0dd/ba5mNY/p51rao+1rdju7p11ihI9e7dW+PHj9frr7+uyMhISdJ3332nCRMmqE+fPqa2tWfPHtntdhUVFalRo0ZauXKlYmNjtXv3bvn7+yskJMRlflhYmHJyciRJOTk5LiGqfH35uvOZMWOGpk+fXmF83bp1CgwMNFU/zMvIyHB3CZcNem0t+m0t+m0dem0t+m0dd/R61vWWv2WdW716dbXm1Zdj+/Tp09WaV6Mg9Y9//EMDBw5U69atFRUVJUn65ptvFBcXp9dee83Uttq1a6fdu3eroKBAb731lpKTk7Vly5aalFVtkyZNUmpqqnO5sLBQUVFRSkhIUFBQUJ2+9+XM4XAoIyNDffv2rfSMJmoPvbYW/bYW/bYOvbYW/baOO3sdN22tpe9nhb3TEi+4vr4d2+VXq1WlRkEqKipKn332mdavX6+vv/5aktShQweXy/Cqy9/fX23btpUkdevWTbt27dLzzz+vu+++WyUlJcrPz3c5K5Wbm6vw8HBJUnh4uHbu3OmyvfKn+pXPqYzNZpPNZqsw7ufnVy9+uPUdfbYOvbYW/bYW/bYOvbYW/baOO3pdXOpl6ftZobo9rC/HdnVrNPXUvo0bNyo2NlaFhYXy8vJS3759NW7cOI0bN07XXXedOnbsqI8++qhGBZcrKytTcXGxunXrJj8/P23YsMG5Ljs7W0ePHpXdbpck2e127dmzR3l5ec45GRkZCgoKUmxs7EXVAQAAAADnY+qM1Ny5czV69OhKL38LDg7Wgw8+qNmzZ+vmm2+u1vYmTZqk/v37q1WrVjpx4oSWLVumzZs3a+3atQoODtbIkSOVmpqqpk2bKigoSOPGjZPdblfPnj0lSQkJCYqNjdW9996rWbNmKScnR5MnT1ZKSkqlZ5wAAAAAoDaYOiP1+eefq1+/fuddn5CQoKysrGpvLy8vTyNGjFC7du3Up08f7dq1S2vXrlXfvn0lSXPmzNGAAQM0ZMgQ3XLLLQoPD9c777zjfL2Pj49WrVolHx8f2e123XPPPRoxYoTS0tLM7BYAAAAAmGLqjFRubu4Frxn09fXVDz/8UO3tLVq06ILrAwIClJ6ervT09PPOiY6OrvaTQgAAAACgNpg6I3XFFVdo7969513/xRdfKCIi4qKLAgAAAABPZipI/eY3v9ETTzyhoqKiCuvOnDmjqVOnasCAAbVWHAAAAAB4IlOX9k2ePFnvvPOOrr76ao0dO1bt2rWTJH399ddKT09XaWmp/vrXv9ZJoQAAAADgKUwFqbCwMG3btk1jxozRpEmTZBiGJMnLy0uJiYlKT09XWFhYnRQKAAAAAJ7C9Bfylj/c4eeff9aBAwdkGIauuuoqNWnSpC7qAwAAAACPYzpIlWvSpImuu+662qwFAAAAAOoFUw+bAAAAAAAQpAAAAADANIIUAAAAAJhEkAIAAAAAkwhSAAAAAGASQQoAAAAATCJIAQAAAIBJBCkAAAAAMKnGX8gLAAAA4H9a//kDd5cAC3FGCgAAAABMIkgBAAAAgEkEKQAAAAAwiSAFAAAAACYRpAAAAADAJIIUAAAAAJhEkAIAAAAAkwhSAAAAAGASQQoAAAAATCJIAQAAAIBJBCkAAAAAMIkgBQAAAAAmEaQAAAAAwCSCFAAAAACYRJACAAAAAJMIUgAAAABgEkEKAAAAAEwiSAEAAACASQQpAAAAADCJIAUAAAAAJhGkAAAAAMAkghQAAAAAmOTWIDVjxgxdd911aty4sUJDQzVo0CBlZ2e7zCkqKlJKSoqaNWumRo0aaciQIcrNzXWZc/ToUSUlJSkwMFChoaF67LHHdPbsWSt3BQAAAMBlxK1BasuWLUpJSdH27duVkZEhh8OhhIQEnTp1yjlnwoQJev/997VixQpt2bJF33//vQYPHuxcX1paqqSkJJWUlGjbtm165ZVXtGTJEk2ZMsUduwQAAADgMuDrzjdfs2aNy/KSJUsUGhqqrKws3XLLLSooKNCiRYu0bNky9e7dW5K0ePFidejQQdu3b1fPnj21bt06ffnll1q/fr3CwsLUpUsXPfnkk5o4caKmTZsmf39/d+waAAAALiGt//yBu0uAh3FrkDpXQUGBJKlp06aSpKysLDkcDsXHxzvntG/fXq1atVJmZqZ69uypzMxMderUSWFhYc45iYmJGjNmjPbt26euXbtWeJ/i4mIVFxc7lwsLCyVJDodDDoejTvYNcvaWHtc9em0t+m0t+m0dem0t+m2dmvTa5mPUVTn1XlV9rG/HdnXr9JggVVZWpocfflg33nij4uLiJEk5OTny9/dXSEiIy9ywsDDl5OQ45/w6RJWvL19XmRkzZmj69OkVxtetW6fAwMCL3RVUISMjw90lXDbotbXot7Xot3XotbXot3XM9HrW9XVYSD23evXqas2rL8f26dOnqzXPY4JUSkqK9u7dq48//rjO32vSpElKTU11LhcWFioqKkoJCQkKCgqq8/e/XDkcDmVkZKhv377y8/NzdzmXNHptLfptLfptHXptLfptnZr0Om7a2jqu6tJl8zb0ZPeyenNsl1+tVhWPCFJjx47VqlWrtHXrVrVs2dI5Hh4erpKSEuXn57uclcrNzVV4eLhzzs6dO122V/5Uv/I557LZbLLZbBXG/fz86sUPt76jz9ah19ai39ai39ah19ai39Yx0+viUq86rubSV1+O7erW6Nan9hmGobFjx2rlypXauHGjYmJiXNZ369ZNfn5+2rBhg3MsOztbR48eld1ulyTZ7Xbt2bNHeXl5zjkZGRkKCgpSbGysNTsCAAAA4LLi1jNSKSkpWrZsmd577z01btzYeU9TcHCwGjRooODgYI0cOVKpqalq2rSpgoKCNG7cONntdvXs2VOSlJCQoNjYWN17772aNWuWcnJyNHnyZKWkpFR61gkAAAAALpZbg9T8+fMlSbfeeqvL+OLFi3XfffdJkubMmSNvb28NGTJExcXFSkxM1Lx585xzfXx8tGrVKo0ZM0Z2u10NGzZUcnKy0tLSrNoNAAAAAJcZtwYpw6j6MZIBAQFKT09Xenr6eedER0dX+2khAAAAAHCx3HqPFAAAAADURwQpAAAAADCJIAUAAAAAJhGkAAAAAMAkghQAAAAAmESQAgAAAACTCFIAAAAAYBJBCgAAAABMIkgBAAAAgEkEKQAAAAAwiSAFAAAAACYRpAAAAADAJIIUAAAAAJhEkAIAAAAAkwhSAAAAAGASQQoAAAAATCJIAQAAAIBJBCkAAAAAMIkgBQAAAAAmEaQAAAAAwCSCFAAAAACY5OvuAgAAAHDpaf3nDy64/vDMJIsqAeoGZ6QAAAAAwCSCFAAAAACYRJACAAAAAJMIUgAAAABgEkEKAAAAAEwiSAEAAACASQQpAAAAADCJIAUAAAAAJhGkAAAAAMAkX3cXAAAAALhb6z9/4O4SUM9wRgoAAAAATCJIAQAAAIBJBCkAAAAAMIkgBQAAAAAmEaQAAAAAwCS3BqmtW7fq9ttvV2RkpLy8vPTuu++6rDcMQ1OmTFFERIQaNGig+Ph47d+/32XO8ePHNXz4cAUFBSkkJEQjR47UyZMnLdwLAAAAAJcbtwapU6dO6ZprrlF6enql62fNmqUXXnhBCxYs0I4dO9SwYUMlJiaqqKjIOWf48OHat2+fMjIytGrVKm3dulUPPPCAVbsAAAAA4DLk1u+R6t+/v/r371/pOsMwNHfuXE2ePFl33HGHJOnVV19VWFiY3n33XQ0dOlRfffWV1qxZo127dql79+6SpL///e/6zW9+o7/97W+KjIy0bF8AAAAAXD489gt5Dx06pJycHMXHxzvHgoOD1aNHD2VmZmro0KHKzMxUSEiIM0RJUnx8vLy9vbVjxw7deeedlW67uLhYxcXFzuXCwkJJksPhkMPhqKM9Qnlv6XHdo9fWot/Wot/WodfWqk/9jpu2tso5Np8Lr3fnflbWa5uP4a5yLnk27196Wx+Oban6dXpskMrJyZEkhYWFuYyHhYU51+Xk5Cg0NNRlva+vr5o2beqcU5kZM2Zo+vTpFcbXrVunwMDAiy0dVcjIyHB3CZcNem0t+m0t+m0dem2t+tDvWddf/DZWr1598Ru5SL/udW3sEy6sPhzbknT69OlqzfPYIFWXJk2apNTUVOdyYWGhoqKilJCQoKCgIDdWdmlzOBzKyMhQ37595efn5+5yLmn02lr021r02zr02jpx09bK5m3oye5leuJTbxWXebms3zst0U2VVa46Z6Sq4s59quzYro19QuXKj+368ruk/Gq1qnhskAoPD5ck5ebmKiIiwjmem5urLl26OOfk5eW5vO7s2bM6fvy48/WVsdlsstlsFcb9/PzqxQ+3vqPP1qHX1qLf1qLf1qHXda+49H/BqbjMy2VZksf1/9z6asIT9unXx3Zt7BMurL78LqlujR77PVIxMTEKDw/Xhg0bnGOFhYXasWOH7Ha7JMlutys/P19ZWVnOORs3blRZWZl69Ohhec0AAAAALg9uPSN18uRJHThwwLl86NAh7d69W02bNlWrVq308MMP66mnntJVV12lmJgYPfHEE4qMjNSgQYMkSR06dFC/fv00evRoLViwQA6HQ2PHjtXQoUN5Yh8AAACAOuPWIPXpp5/qtttucy6X37eUnJysJUuW6PHHH9epU6f0wAMPKD8/XzfddJPWrFmjgIAA52uWLl2qsWPHqk+fPvL29taQIUP0wgsvWL4vAAAAAC4fbg1St956qwzj/I+a9PLyUlpamtLS0s47p2nTplq2bFldlAcAAAAAlfLYh00AAAAAtaH1nz9wWbb5GJp1/S9P6uMhE6gpj33YBAAAAAB4Ks5IAQAAAKhzFzoDeHhmksXVXDyCFAAAgIc799K0ytTHD6JAfUaQAgAAqEPVCUEA6h/ukQIAAAAAkwhSAAAAAGASQQoAAAAATCJIAQAAAIBJBCkAAAAAMIkgBQAAAAAmEaQAAAAAwCSCFAAAAACYRJACAAAAAJMIUgAAAABgkq+7CwAAAMDlp/WfP6hyzuGZSRZUAtQMQQoAAAD1VnUCGVAXCFIAAAA1xId44PLFPVIAAAAAYBJBCgAAAABMIkgBAAAAgEkEKQAAAAAwiSAFAAAAACYRpAAAAADAJB5/DgAAUIn69mjzS/ELbuvbzwCXF85IAQAAAIBJBCkAAAAAMIlL+wAAAODE5XRA9RCkAAAALhOEJKD2cGkfAAAAAJhEkAIAAAAAkwhSAAAAAGASQQoAAAAATCJIAQAAAIBJPLUPAABYojpPjDs8M8my9wKAi0GQAgAAHsPKsAUAF4MgBQAA6hXONgHwBJfMPVLp6elq3bq1AgIC1KNHD+3cudPdJQEAAAC4RF0SZ6TeeOMNpaamasGCBerRo4fmzp2rxMREZWdnKzQ01N3lAQBQ71V1FojL7QBcbi6JM1KzZ8/W6NGjdf/99ys2NlYLFixQYGCgXn75ZXeXBgAAAOASVO/PSJWUlCgrK0uTJk1yjnl7eys+Pl6ZmZmVvqa4uFjFxcXO5YKCAknS8ePH5XA46rbgaugxY0OVc3ZM6mNBJbXL4XDo9OnT+umnn+Tn5+fuci5p9Npa9Nta9Lv2ne/fHZu3ocldy9Tlr+/It8zrgtto++ibVb5Pvf/QUcd8ywydPl0mX4e3SqvoNy4OvbZWdfr9008/WVzV+Z04cUKSZBjGBefV+99pP/74o0pLSxUWFuYyHhYWpq+//rrS18yYMUPTp0+vMB4TE1MnNdaF5s+5uwIAwOXg9+4u4DJDv61Dr61VVb898bPtiRMnFBwcfN719T5I1cSkSZOUmprqXC4rK9Px48fVrFkzeXnxfyXqSmFhoaKiovTNN98oKCjI3eVc0ui1tei3tei3dei1tei3dei1tepbvw3D0IkTJxQZGXnBefU+SDVv3lw+Pj7Kzc11Gc/NzVV4eHilr7HZbLLZbC5jISEhdVUizhEUFFQv/iO6FNBra9Fva9Fv69Bra9Fv69Bra9Wnfl/oTFS5ev+wCX9/f3Xr1k0bNvzv+u6ysjJt2LBBdrvdjZUBAAAAuFTV+zNSkpSamqrk5GR1795d119/vebOnatTp07p/vvvd3dpAAAAAC5Bl0SQuvvuu/XDDz9oypQpysnJUZcuXbRmzZoKD6CAe9lsNk2dOrXCZZWoffTaWvTbWvTbOvTaWvTbOvTaWpdqv72Mqp7rBwAAAABwUe/vkQIAAAAAqxGkAAAAAMAkghQAAAAAmESQAgAAAACTCFK4KDNmzNB1112nxo0bKzQ0VIMGDVJ2drbLnFtvvVVeXl4uf/74xz+6zDl69KiSkpIUGBio0NBQPfbYYzp79qyVu+Lxpk2bVqGP7du3d64vKipSSkqKmjVrpkaNGmnIkCEVvqiaPldf69atK/Tby8tLKSkpkjiuL9bWrVt1++23KzIyUl5eXnr33Xdd1huGoSlTpigiIkINGjRQfHy89u/f7zLn+PHjGj58uIKCghQSEqKRI0fq5MmTLnO++OIL3XzzzQoICFBUVJRmzZpV17vmcS7Ua4fDoYkTJ6pTp05q2LChIiMjNWLECH3//fcu26jsv4eZM2e6zKHXv6jq2L7vvvsq9LJfv34uczi2q6eqXlf2O9zLy0vPPvuscw7HdvVU5/NebX0O2bx5s6699lrZbDa1bdtWS5YsqevdqzGCFC7Kli1blJKSou3btysjI0MOh0MJCQk6deqUy7zRo0fr2LFjzj+//iVUWlqqpKQklZSUaNu2bXrllVe0ZMkSTZkyxerd8XgdO3Z06ePHH3/sXDdhwgS9//77WrFihbZs2aLvv/9egwcPdq6nz+bs2rXLpdcZGRmSpLvuuss5h+O65k6dOqVrrrlG6enpla6fNWuWXnjhBS1YsEA7duxQw4YNlZiYqKKiIuec4cOHa9++fcrIyNCqVau0detWPfDAA871hYWFSkhIUHR0tLKysvTss89q2rRpWrhwYZ3vnye5UK9Pnz6tzz77TE888YQ+++wzvfPOO8rOztbAgQMrzE1LS3M53seNG+dcR6//p6pjW5L69evn0svXX3/dZT3HdvVU1etf9/jYsWN6+eWX5eXlpSFDhrjM49iuWnU+79XG55BDhw4pKSlJt912m3bv3q2HH35Yo0aN0tq1ay3d32ozgFqUl5dnSDK2bNniHOvVq5cxfvz4875m9erVhre3t5GTk+Mcmz9/vhEUFGQUFxfXZbn1ytSpU41rrrmm0nX5+fmGn5+fsWLFCufYV199ZUgyMjMzDcOgzxdr/PjxxpVXXmmUlZUZhsFxXZskGStXrnQul5WVGeHh4cazzz7rHMvPzzdsNpvx+uuvG4ZhGF9++aUhydi1a5dzzocffmh4eXkZ3333nWEYhjFv3jyjSZMmLv2eOHGi0a5duzreI891bq8rs3PnTkOSceTIEedYdHS0MWfOnPO+hl5XrrJ+JycnG3fcccd5X8OxXTPVObbvuOMOo3fv3i5jHNs1c+7nvdr6HPL4448bHTt2dHmvu+++20hMTKzrXaoRzkihVhUUFEiSmjZt6jK+dOlSNW/eXHFxcZo0aZJOnz7tXJeZmalOnTq5fIFyYmKiCgsLtW/fPmsKryf279+vyMhItWnTRsOHD9fRo0clSVlZWXI4HIqPj3fObd++vVq1aqXMzExJ9PlilJSU6LXXXtMf/vAHeXl5Occ5ruvGoUOHlJOT43I8BwcHq0ePHi7Hc0hIiLp37+6cEx8fL29vb+3YscM555ZbbpG/v79zTmJiorKzs/Xzzz9btDf1T0FBgby8vBQSEuIyPnPmTDVr1kxdu3bVs88+63I5Dr02Z/PmzQoNDVW7du00ZswY/fTTT851HNt1Izc3Vx988IFGjhxZYR3Htnnnft6rrc8hmZmZLtson1O+DU/j6+4CcOkoKyvTww8/rBtvvFFxcXHO8d///veKjo5WZGSkvvjiC02cOFHZ2dl65513JEk5OTku/1FJci7n5ORYtwMerkePHlqyZInatWunY8eOafr06br55pu1d+9e5eTkyN/fv8IHn7CwMGcP6XPNvfvuu8rPz9d9993nHOO4rjvl/amsf78+nkNDQ13W+/r6qmnTpi5zYmJiKmyjfF2TJk3qpP76rKioSBMnTtSwYcMUFBTkHH/ooYd07bXXqmnTptq2bZsmTZqkY8eOafbs2ZLotRn9+vXT4MGDFRMTo4MHD+ovf/mL+vfvr8zMTPn4+HBs15FXXnlFjRs3drnUTOLYronKPu/V1ueQ880pLCzUmTNn1KBBg7rYpRojSKHWpKSkaO/evS737Uhyua67U6dOioiIUJ8+fXTw4EFdeeWVVpdZb/Xv39/5986dO6tHjx6Kjo7Wm2++6XG/WC41ixYtUv/+/RUZGekc47jGpcbhcOh3v/udDMPQ/PnzXdalpqY6/965c2f5+/vrwQcf1IwZM2Sz2awutV4bOnSo8++dOnVS586ddeWVV2rz5s3q06ePGyu7tL388ssaPny4AgICXMY5ts073+e9yxGX9qFWjB07VqtWrdKmTZvUsmXLC87t0aOHJOnAgQOSpPDw8ApPdSlfDg8Pr4NqLw0hISG6+uqrdeDAAYWHh6ukpET5+fkuc3Jzc509pM81c+TIEa1fv16jRo264DyO69pT3p/K+vfr4zkvL89l/dmzZ3X8+HGO+RooD1FHjhxRRkaGy9moyvTo0UNnz57V4cOHJdHri9GmTRs1b97c5XcHx3bt+uijj5SdnV3l73GJY7sq5/u8V1ufQ843JygoyCP/pzFBChfFMAyNHTtWK1eu1MaNGyuc/q7M7t27JUkRERGSJLvdrj179rj8w1H+D3lsbGyd1H0pOHnypA4ePKiIiAh169ZNfn5+2rBhg3N9dna2jh49KrvdLok+19TixYsVGhqqpKSkC87juK49MTExCg8PdzmeCwsLtWPHDpfjOT8/X1lZWc45GzduVFlZmTPU2u12bd26VQ6HwzknIyND7dq1uywvxzmf8hC1f/9+rV+/Xs2aNavyNbt375a3t7fzEjR6XXPffvutfvrpJ5ffHRzbtWvRokXq1q2brrnmmirncmxXrqrPe7X1OcRut7tso3xO+TY8jpsfdoF6bsyYMUZwcLCxefNm49ixY84/p0+fNgzDMA4cOGCkpaUZn376qXHo0CHjvffeM9q0aWPccsstzm2cPXvWiIuLMxISEozdu3cba9asMVq0aGFMmjTJXbvlkR555BFj8+bNxqFDh4xPPvnEiI+PN5o3b27k5eUZhmEYf/zjH41WrVoZGzduND799FPDbrcbdrvd+Xr6bF5paanRqlUrY+LEiS7jHNcX78SJE8a///1v49///rchyZg9e7bx73//2/mkuJkzZxohISHGe++9Z3zxxRfGHXfcYcTExBhnzpxxbqNfv35G165djR07dhgff/yxcdVVVxnDhg1zrs/PzzfCwsKMe++919i7d6+xfPlyIzAw0HjxxRct3193ulCvS0pKjIEDBxotW7Y0du/e7fJ7vPwpWtu2bTPmzJlj7N692zh48KDx2muvGS1atDBGjBjhfA96/T8X6veJEyeMRx991MjMzDQOHTpkrF+/3rj22muNq666yigqKnJug2O7eqr6PWIYhlFQUGAEBgYa8+fPr/B6ju3qq+rznmHUzueQ//73v0ZgYKDx2GOPGV999ZWRnp5u+Pj4GGvWrLF0f6uLIIWLIqnSP4sXLzYMwzCOHj1q3HLLLUbTpk0Nm81mtG3b1njssceMgoICl+0cPnzY6N+/v9GgQQOjefPmxiOPPGI4HA437JHnuvvuu42IiAjD39/fuOKKK4y7777bOHDggHP9mTNnjD/96U9GkyZNjMDAQOPOO+80jh075rIN+mzO2rVrDUlGdna2yzjH9cXbtGlTpb87kpOTDcP45RHoTzzxhBEWFmbYbDajT58+FX4OP/30kzFs2DCjUaNGRlBQkHH//fcbJ06ccJnz+eefGzfddJNhs9mMK664wpg5c6ZVu+gxLtTrQ4cOnff3+KZNmwzDMIysrCyjR48eRnBwsBEQEGB06NDBePrpp10++BsGvS53oX6fPn3aSEhIMFq0aGH4+fkZ0dHRxujRo10eB20YHNvVVdXvEcMwjBdffNFo0KCBkZ+fX+H1HNvVV9XnPcOovc8hmzZtMrp06WL4+/sbbdq0cXkPT+NlGIZRRye7AAAAAOCSxD1SAAAAAGASQQoAAAAATCJIAQAAAIBJBCkAAAAAMIkgBQAAAAAmEaQAAAAAwCSCFAAAAACYRJACAAAAAJMIUgAAAABgEkEKAHBJMQxD8fHxSkxMrLBu3rx5CgkJ0bfffuuGygAAlxKCFADgkuLl5aXFixdrx44devHFF53jhw4d0uOPP66///3vatmyZa2+p8PhqNXtAQA8H0EKAHDJiYqK0vPPP69HH31Uhw4dkmEYGjlypBISEtS1a1f1799fjRo1UlhYmO699179+OOPzteuWbNGN910k0JCQtSsWTMNGDBABw8edK4/fPiwvLy89MYbb6hXr14KCAjQ0qVL3bGbAAA38jIMw3B3EQAA1IVBgwapoKBAgwcP1pNPPql9+/apY8eOGjVqlEaMGKEzZ85o4sSJOnv2rDZu3ChJevvtt+Xl5aXOnTvr5MmTmjJlig4fPqzdu3fL29tbhw8fVkxMjFq3bq3nnntOXbt2VUBAgCIiIty8twAAKxGkAACXrLy8PHXs2FHHjx/X22+/rb179+qjjz7S2rVrnXO+/fZbRUVFKTs7W1dffXWFbfz4449q0aKF9uzZo7i4OGeQmjt3rsaPH2/l7gAAPAiX9gEALlmhoaF68MEH1aFDBw0aNEiff/65Nm3apEaNGjn/tG/fXpKcl+/t379fw4YNU5s2bRQUFKTWrVtLko4ePeqy7e7du1u6LwAAz+Lr7gIAAKhLvr6+8vX95Z+7kydP6vbbb9czzzxTYV75pXm33367oqOj9dJLLykyMlJlZWWKi4tTSUmJy/yGDRvWffEAAI9FkAIAXDauvfZavf3222rdurUzXP3aTz/9pOzsbL300ku6+eabJUkff/yx1WUCAOoBLu0DAFw2UlJSdPz4cQ0bNky7du3SwYMHtXbtWt1///0qLS1VkyZN1KxZMy1cuFAHDhzQxo0blZqa6u6yAQAeiCAFALhsREZG6pNPPlFpaakSEhLUqVMnPfzwwwoJCZG3t7e8vb21fPlyZWVlKS4uThMmTNCzzz7r7rIBAB6Ip/YBAAAAgEmckQIAAAAAkwhSAAAAAGASQQoAAAAATCJIAQAAAIBJBCkAAAAAMIkgBQAAAAAmEaQAAAAAwCSCFAAAAACYRJACAAAAAJMIUgAAAABgEkEKAAAAAEz6/wDkz8ejVt0jkAAAAABJRU5ErkJggg==\n"
},
"metadata": {}
}
]
},
{
"cell_type": "markdown",
"source": [
"## sanity check for outliers"
],
"metadata": {
"id": "wpqZENpnu4te"
}
},
{
"cell_type": "code",
"source": [
"oldest_paintings = paintings.sort_values('beginyear').head(5)\n",
"oldest_paintings"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 481
},
"id": "XJg-tQntu6Zf",
"outputId": "0a9eedf6-8a74-4461-c964-8cbb74ddc4a4"
},
"execution_count": 58,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" objectid accessioned accessionnum locationid \\\n",
"115268 43626 1 1956.12.1 NaN \n",
"143112 41622 1 1952.5.12 NaN \n",
"143102 37004 1 1949.7.1 NaN \n",
"143013 35 1 1937.1.1 NaN \n",
"114061 41623 1 1952.5.13 8195.0 \n",
"\n",
" title displaydate beginyear \\\n",
"115268 Portrait of a Woman 2nd century 100.0 \n",
"143112 Madonna and Child Enthroned with Four Saints c. 1240/1245 1240.0 \n",
"143102 Enthroned Madonna and Child c. 1250/1275 1250.0 \n",
"143013 Madonna and Child on a Curved Throne c. 1260/1280 1260.0 \n",
"114061 The Mourning Madonna c. 1270/1275 1270.0 \n",
"\n",
" endyear visualbrowsertimespan medium ... \\\n",
"115268 199.0 before 1300 encaustic on wood ... \n",
"143112 1245.0 before 1300 tempera on panel ... \n",
"143102 1275.0 before 1300 tempera on poplar panel ... \n",
"143013 1280.0 before 1300 tempera on linden panel ... \n",
"114061 1275.0 before 1300 tempera on panel ... \n",
"\n",
" departmentabbr portfolio series volume watermarks \\\n",
"115268 CSD NaN NaN NaN NaN \n",
"143112 CIS-R NaN NaN NaN NaN \n",
"143102 CIS-R NaN NaN NaN NaN \n",
"143013 CIS-R NaN NaN NaN NaN \n",
"114061 CIS-R NaN NaN NaN NaN \n",
"\n",
" lastdetectedmodification wikidataid \\\n",
"115268 2023-05-09 17:01:03.48-04 Q20172887 \n",
"143112 2023-05-09 17:01:03.48-04 Q20172895 \n",
"143102 2025-05-23 22:04:09.443-04 Q20172905 \n",
"143013 2025-05-23 22:04:09.443-04 Q20172916 \n",
"114061 2024-02-02 22:01:49.753-05 Q20172924 \n",
"\n",
" customprinturl \\\n",
"115268 NaN \n",
"143112 https://customprints.nga.gov/detail/461286/margaritone-darezzo-madonna-and-child-enthroned-with-four-saints-c.-12401245?lid=124135 \n",
"143102 https://customprints.nga.gov/detail/461280/byzantine-13th-century-enthroned-madonna-and-child-c.-12501275?lid=124135 \n",
"143013 https://customprints.nga.gov/detail/461282/byzantine-13th-century-madonna-and-child-on-a-curved-throne-c.-12601280?lid=124135 \n",
"114061 NaN \n",
"\n",
" height_cm width_cm \n",
"115268 34.6 11.5 \n",
"143112 49.9 1.3 \n",
"143102 130.7 77.1 \n",
"143013 84.0 53.5 \n",
"114061 82.4 33.5 \n",
"\n",
"[5 rows x 32 columns]"
],
"text/html": [
"\n",
" <div id=\"df-21cbeaf2-d2d2-4ac3-a1b6-de99e89c390c\" class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>objectid</th>\n",
" <th>accessioned</th>\n",
" <th>accessionnum</th>\n",
" <th>locationid</th>\n",
" <th>title</th>\n",
" <th>displaydate</th>\n",
" <th>beginyear</th>\n",
" <th>endyear</th>\n",
" <th>visualbrowsertimespan</th>\n",
" <th>medium</th>\n",
" <th>...</th>\n",
" <th>departmentabbr</th>\n",
" <th>portfolio</th>\n",
" <th>series</th>\n",
" <th>volume</th>\n",
" <th>watermarks</th>\n",
" <th>lastdetectedmodification</th>\n",
" <th>wikidataid</th>\n",
" <th>customprinturl</th>\n",
" <th>height_cm</th>\n",
" <th>width_cm</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>115268</th>\n",
" <td>43626</td>\n",
" <td>1</td>\n",
" <td>1956.12.1</td>\n",
" <td>NaN</td>\n",
" <td>Portrait of a Woman</td>\n",
" <td>2nd century</td>\n",
" <td>100.0</td>\n",
" <td>199.0</td>\n",
" <td>before 1300</td>\n",
" <td>encaustic on wood</td>\n",
" <td>...</td>\n",
" <td>CSD</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>2023-05-09 17:01:03.48-04</td>\n",
" <td>Q20172887</td>\n",
" <td>NaN</td>\n",
" <td>34.6</td>\n",
" <td>11.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>143112</th>\n",
" <td>41622</td>\n",
" <td>1</td>\n",
" <td>1952.5.12</td>\n",
" <td>NaN</td>\n",
" <td>Madonna and Child Enthroned with Four Saints</td>\n",
" <td>c. 1240/1245</td>\n",
" <td>1240.0</td>\n",
" <td>1245.0</td>\n",
" <td>before 1300</td>\n",
" <td>tempera on panel</td>\n",
" <td>...</td>\n",
" <td>CIS-R</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>2023-05-09 17:01:03.48-04</td>\n",
" <td>Q20172895</td>\n",
" <td>https://customprints.nga.gov/detail/461286/margaritone-darezzo-madonna-and-child-enthroned-with-four-saints-c.-12401245?lid=124135</td>\n",
" <td>49.9</td>\n",
" <td>1.3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>143102</th>\n",
" <td>37004</td>\n",
" <td>1</td>\n",
" <td>1949.7.1</td>\n",
" <td>NaN</td>\n",
" <td>Enthroned Madonna and Child</td>\n",
" <td>c. 1250/1275</td>\n",
" <td>1250.0</td>\n",
" <td>1275.0</td>\n",
" <td>before 1300</td>\n",
" <td>tempera on poplar panel</td>\n",
" <td>...</td>\n",
" <td>CIS-R</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>2025-05-23 22:04:09.443-04</td>\n",
" <td>Q20172905</td>\n",
" <td>https://customprints.nga.gov/detail/461280/byzantine-13th-century-enthroned-madonna-and-child-c.-12501275?lid=124135</td>\n",
" <td>130.7</td>\n",
" <td>77.1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>143013</th>\n",
" <td>35</td>\n",
" <td>1</td>\n",
" <td>1937.1.1</td>\n",
" <td>NaN</td>\n",
" <td>Madonna and Child on a Curved Throne</td>\n",
" <td>c. 1260/1280</td>\n",
" <td>1260.0</td>\n",
" <td>1280.0</td>\n",
" <td>before 1300</td>\n",
" <td>tempera on linden panel</td>\n",
" <td>...</td>\n",
" <td>CIS-R</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>2025-05-23 22:04:09.443-04</td>\n",
" <td>Q20172916</td>\n",
" <td>https://customprints.nga.gov/detail/461282/byzantine-13th-century-madonna-and-child-on-a-curved-throne-c.-12601280?lid=124135</td>\n",
" <td>84.0</td>\n",
" <td>53.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>114061</th>\n",
" <td>41623</td>\n",
" <td>1</td>\n",
" <td>1952.5.13</td>\n",
" <td>8195.0</td>\n",
" <td>The Mourning Madonna</td>\n",
" <td>c. 1270/1275</td>\n",
" <td>1270.0</td>\n",
" <td>1275.0</td>\n",
" <td>before 1300</td>\n",
" <td>tempera on panel</td>\n",
" <td>...</td>\n",
" <td>CIS-R</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>2024-02-02 22:01:49.753-05</td>\n",
" <td>Q20172924</td>\n",
" <td>NaN</td>\n",
" <td>82.4</td>\n",
" <td>33.5</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 32 columns</p>\n",
"</div>\n",
" <div class=\"colab-df-buttons\">\n",
"\n",
" <div class=\"colab-df-container\">\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-21cbeaf2-d2d2-4ac3-a1b6-de99e89c390c')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
" </svg>\n",
" </button>\n",
"\n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" .colab-df-buttons div {\n",
" margin-bottom: 4px;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-21cbeaf2-d2d2-4ac3-a1b6-de99e89c390c button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-21cbeaf2-d2d2-4ac3-a1b6-de99e89c390c');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
"\n",
"\n",
" <div id=\"df-d85834bc-204d-4146-8466-ae0c76d978ac\">\n",
" <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-d85834bc-204d-4146-8466-ae0c76d978ac')\"\n",
" title=\"Suggest charts\"\n",
" style=\"display:none;\">\n",
"\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <g>\n",
" <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
" </g>\n",
"</svg>\n",
" </button>\n",
"\n",
"<style>\n",
" .colab-df-quickchart {\n",
" --bg-color: #E8F0FE;\n",
" --fill-color: #1967D2;\n",
" --hover-bg-color: #E2EBFA;\n",
" --hover-fill-color: #174EA6;\n",
" --disabled-fill-color: #AAA;\n",
" --disabled-bg-color: #DDD;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-quickchart {\n",
" --bg-color: #3B4455;\n",
" --fill-color: #D2E3FC;\n",
" --hover-bg-color: #434B5C;\n",
" --hover-fill-color: #FFFFFF;\n",
" --disabled-bg-color: #3B4455;\n",
" --disabled-fill-color: #666;\n",
" }\n",
"\n",
" .colab-df-quickchart {\n",
" background-color: var(--bg-color);\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: var(--fill-color);\n",
" height: 32px;\n",
" padding: 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-quickchart:hover {\n",
" background-color: var(--hover-bg-color);\n",
" box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: var(--button-hover-fill-color);\n",
" }\n",
"\n",
" .colab-df-quickchart-complete:disabled,\n",
" .colab-df-quickchart-complete:disabled:hover {\n",
" background-color: var(--disabled-bg-color);\n",
" fill: var(--disabled-fill-color);\n",
" box-shadow: none;\n",
" }\n",
"\n",
" .colab-df-spinner {\n",
" border: 2px solid var(--fill-color);\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" animation:\n",
" spin 1s steps(1) infinite;\n",
" }\n",
"\n",
" @keyframes spin {\n",
" 0% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" border-left-color: var(--fill-color);\n",
" }\n",
" 20% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 30% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 40% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 60% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 80% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" 90% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" }\n",
"</style>\n",
"\n",
" <script>\n",
" async function quickchart(key) {\n",
" const quickchartButtonEl =\n",
" document.querySelector('#' + key + ' button');\n",
" quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n",
" quickchartButtonEl.classList.add('colab-df-spinner');\n",
" try {\n",
" const charts = await google.colab.kernel.invokeFunction(\n",
" 'suggestCharts', [key], {});\n",
" } catch (error) {\n",
" console.error('Error during call to suggestCharts:', error);\n",
" }\n",
" quickchartButtonEl.classList.remove('colab-df-spinner');\n",
" quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
" }\n",
" (() => {\n",
" let quickchartButtonEl =\n",
" document.querySelector('#df-d85834bc-204d-4146-8466-ae0c76d978ac button');\n",
" quickchartButtonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
" })();\n",
" </script>\n",
" </div>\n",
"\n",
" <div id=\"id_784dfe42-b610-49e7-af32-0690a6feaf21\">\n",
" <style>\n",
" .colab-df-generate {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-generate:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-generate {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-generate:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
" <button class=\"colab-df-generate\" onclick=\"generateWithVariable('oldest_paintings')\"\n",
" title=\"Generate code using this dataframe.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M7,19H8.4L18.45,9,17,7.55,7,17.6ZM5,21V16.75L18.45,3.32a2,2,0,0,1,2.83,0l1.4,1.43a1.91,1.91,0,0,1,.58,1.4,1.91,1.91,0,0,1-.58,1.4L9.25,21ZM18.45,9,17,7.55Zm-12,3A5.31,5.31,0,0,0,4.9,8.1,5.31,5.31,0,0,0,1,6.5,5.31,5.31,0,0,0,4.9,4.9,5.31,5.31,0,0,0,6.5,1,5.31,5.31,0,0,0,8.1,4.9,5.31,5.31,0,0,0,12,6.5,5.46,5.46,0,0,0,6.5,12Z\"/>\n",
" </svg>\n",
" </button>\n",
" <script>\n",
" (() => {\n",
" const buttonEl =\n",
" document.querySelector('#id_784dfe42-b610-49e7-af32-0690a6feaf21 button.colab-df-generate');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" buttonEl.onclick = () => {\n",
" google.colab.notebook.generateWithVariable('oldest_paintings');\n",
" }\n",
" })();\n",
" </script>\n",
" </div>\n",
"\n",
" </div>\n",
" </div>\n"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "dataframe",
"variable_name": "oldest_paintings"
}
},
"metadata": {},
"execution_count": 58
}
]
},
{
"cell_type": "code",
"source": [
"narrowest_paintings = paintings.sort_values('width_cm').head(5)\n",
"narrowest_paintings"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 412
},
"id": "FSr-OOlYNPEm",
"outputId": "f2e89492-105c-4bee-92be-cb431a56d865"
},
"execution_count": 59,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" objectid accessioned accessionnum locationid \\\n",
"82629 72174 1 1991.42.1 NaN \n",
"114112 41687 1 1952.5.72 8325.0 \n",
"5279 30212 1 1943.11.2 NaN \n",
"108236 30211 1 1943.11.1 NaN \n",
"60967 153914 1 2012.92.503 NaN \n",
"\n",
" title \\\n",
"82629 School Studies \n",
"114112 Putti with a Wine Press \n",
"5279 Feast of the Gods \n",
"108236 In Church \n",
"60967 Abstraction \n",
"\n",
" displaydate beginyear endyear \\\n",
"82629 1944 1944.0 1944.0 \n",
"114112 c. 1500 1500.0 1500.0 \n",
"5279 c. 1849/1850, with later additions by other hands 1849.0 1850.0 \n",
"108236 1855/1857 1855.0 1857.0 \n",
"60967 1944 1944.0 1944.0 \n",
"\n",
" visualbrowsertimespan medium ... departmentabbr portfolio \\\n",
"82629 1926 to 1950 oil on canvas ... CMC NaN \n",
"114112 1401 to 1500 oil on panel ... CIS-R NaN \n",
"5279 1826 to 1850 oil on wood ... CF NaN \n",
"108236 1851 to 1875 oil on wood ... CF NaN \n",
"60967 1926 to 1950 enamel on board ... CMC NaN \n",
"\n",
" series volume watermarks lastdetectedmodification wikidataid \\\n",
"82629 NaN NaN NaN 2025-02-18 22:02:19.593-05 Q20193543 \n",
"114112 NaN NaN NaN 2024-10-04 22:02:09.68-04 Q20174815 \n",
"5279 NaN NaN NaN 2024-08-21 22:01:55.343-04 Q20187933 \n",
"108236 NaN NaN NaN 2023-05-09 17:01:03.48-04 Q20188292 \n",
"60967 NaN NaN NaN 2024-09-13 22:04:00.983-04 Q20193509 \n",
"\n",
" customprinturl \\\n",
"82629 https://customprints.nga.gov/detail/511481/pippin-school-studies-1944?lid=124135 \n",
"114112 NaN \n",
"5279 NaN \n",
"108236 NaN \n",
"60967 NaN \n",
"\n",
" height_cm width_cm \n",
"82629 76.60 0.20 \n",
"114112 32.80 0.30 \n",
"5279 39.00 0.60 \n",
"108236 21.70 0.60 \n",
"60967 25.72 0.64 \n",
"\n",
"[5 rows x 32 columns]"
],
"text/html": [
"\n",
" <div id=\"df-17928be7-38dd-48b6-9d0c-e599dd4109d7\" class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>objectid</th>\n",
" <th>accessioned</th>\n",
" <th>accessionnum</th>\n",
" <th>locationid</th>\n",
" <th>title</th>\n",
" <th>displaydate</th>\n",
" <th>beginyear</th>\n",
" <th>endyear</th>\n",
" <th>visualbrowsertimespan</th>\n",
" <th>medium</th>\n",
" <th>...</th>\n",
" <th>departmentabbr</th>\n",
" <th>portfolio</th>\n",
" <th>series</th>\n",
" <th>volume</th>\n",
" <th>watermarks</th>\n",
" <th>lastdetectedmodification</th>\n",
" <th>wikidataid</th>\n",
" <th>customprinturl</th>\n",
" <th>height_cm</th>\n",
" <th>width_cm</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>82629</th>\n",
" <td>72174</td>\n",
" <td>1</td>\n",
" <td>1991.42.1</td>\n",
" <td>NaN</td>\n",
" <td>School Studies</td>\n",
" <td>1944</td>\n",
" <td>1944.0</td>\n",
" <td>1944.0</td>\n",
" <td>1926 to 1950</td>\n",
" <td>oil on canvas</td>\n",
" <td>...</td>\n",
" <td>CMC</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>2025-02-18 22:02:19.593-05</td>\n",
" <td>Q20193543</td>\n",
" <td>https://customprints.nga.gov/detail/511481/pippin-school-studies-1944?lid=124135</td>\n",
" <td>76.60</td>\n",
" <td>0.20</td>\n",
" </tr>\n",
" <tr>\n",
" <th>114112</th>\n",
" <td>41687</td>\n",
" <td>1</td>\n",
" <td>1952.5.72</td>\n",
" <td>8325.0</td>\n",
" <td>Putti with a Wine Press</td>\n",
" <td>c. 1500</td>\n",
" <td>1500.0</td>\n",
" <td>1500.0</td>\n",
" <td>1401 to 1500</td>\n",
" <td>oil on panel</td>\n",
" <td>...</td>\n",
" <td>CIS-R</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>2024-10-04 22:02:09.68-04</td>\n",
" <td>Q20174815</td>\n",
" <td>NaN</td>\n",
" <td>32.80</td>\n",
" <td>0.30</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5279</th>\n",
" <td>30212</td>\n",
" <td>1</td>\n",
" <td>1943.11.2</td>\n",
" <td>NaN</td>\n",
" <td>Feast of the Gods</td>\n",
" <td>c. 1849/1850, with later additions by other hands</td>\n",
" <td>1849.0</td>\n",
" <td>1850.0</td>\n",
" <td>1826 to 1850</td>\n",
" <td>oil on wood</td>\n",
" <td>...</td>\n",
" <td>CF</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>2024-08-21 22:01:55.343-04</td>\n",
" <td>Q20187933</td>\n",
" <td>NaN</td>\n",
" <td>39.00</td>\n",
" <td>0.60</td>\n",
" </tr>\n",
" <tr>\n",
" <th>108236</th>\n",
" <td>30211</td>\n",
" <td>1</td>\n",
" <td>1943.11.1</td>\n",
" <td>NaN</td>\n",
" <td>In Church</td>\n",
" <td>1855/1857</td>\n",
" <td>1855.0</td>\n",
" <td>1857.0</td>\n",
" <td>1851 to 1875</td>\n",
" <td>oil on wood</td>\n",
" <td>...</td>\n",
" <td>CF</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>2023-05-09 17:01:03.48-04</td>\n",
" <td>Q20188292</td>\n",
" <td>NaN</td>\n",
" <td>21.70</td>\n",
" <td>0.60</td>\n",
" </tr>\n",
" <tr>\n",
" <th>60967</th>\n",
" <td>153914</td>\n",
" <td>1</td>\n",
" <td>2012.92.503</td>\n",
" <td>NaN</td>\n",
" <td>Abstraction</td>\n",
" <td>1944</td>\n",
" <td>1944.0</td>\n",
" <td>1944.0</td>\n",
" <td>1926 to 1950</td>\n",
" <td>enamel on board</td>\n",
" <td>...</td>\n",
" <td>CMC</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>2024-09-13 22:04:00.983-04</td>\n",
" <td>Q20193509</td>\n",
" <td>NaN</td>\n",
" <td>25.72</td>\n",
" <td>0.64</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 32 columns</p>\n",
"</div>\n",
" <div class=\"colab-df-buttons\">\n",
"\n",
" <div class=\"colab-df-container\">\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-17928be7-38dd-48b6-9d0c-e599dd4109d7')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
" </svg>\n",
" </button>\n",
"\n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" .colab-df-buttons div {\n",
" margin-bottom: 4px;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-17928be7-38dd-48b6-9d0c-e599dd4109d7 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-17928be7-38dd-48b6-9d0c-e599dd4109d7');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
"\n",
"\n",
" <div id=\"df-6a7ef4cf-72d5-432c-ac58-829dba3d0f68\">\n",
" <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-6a7ef4cf-72d5-432c-ac58-829dba3d0f68')\"\n",
" title=\"Suggest charts\"\n",
" style=\"display:none;\">\n",
"\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <g>\n",
" <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
" </g>\n",
"</svg>\n",
" </button>\n",
"\n",
"<style>\n",
" .colab-df-quickchart {\n",
" --bg-color: #E8F0FE;\n",
" --fill-color: #1967D2;\n",
" --hover-bg-color: #E2EBFA;\n",
" --hover-fill-color: #174EA6;\n",
" --disabled-fill-color: #AAA;\n",
" --disabled-bg-color: #DDD;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-quickchart {\n",
" --bg-color: #3B4455;\n",
" --fill-color: #D2E3FC;\n",
" --hover-bg-color: #434B5C;\n",
" --hover-fill-color: #FFFFFF;\n",
" --disabled-bg-color: #3B4455;\n",
" --disabled-fill-color: #666;\n",
" }\n",
"\n",
" .colab-df-quickchart {\n",
" background-color: var(--bg-color);\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: var(--fill-color);\n",
" height: 32px;\n",
" padding: 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-quickchart:hover {\n",
" background-color: var(--hover-bg-color);\n",
" box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: var(--button-hover-fill-color);\n",
" }\n",
"\n",
" .colab-df-quickchart-complete:disabled,\n",
" .colab-df-quickchart-complete:disabled:hover {\n",
" background-color: var(--disabled-bg-color);\n",
" fill: var(--disabled-fill-color);\n",
" box-shadow: none;\n",
" }\n",
"\n",
" .colab-df-spinner {\n",
" border: 2px solid var(--fill-color);\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" animation:\n",
" spin 1s steps(1) infinite;\n",
" }\n",
"\n",
" @keyframes spin {\n",
" 0% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" border-left-color: var(--fill-color);\n",
" }\n",
" 20% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 30% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 40% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 60% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 80% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" 90% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" }\n",
"</style>\n",
"\n",
" <script>\n",
" async function quickchart(key) {\n",
" const quickchartButtonEl =\n",
" document.querySelector('#' + key + ' button');\n",
" quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n",
" quickchartButtonEl.classList.add('colab-df-spinner');\n",
" try {\n",
" const charts = await google.colab.kernel.invokeFunction(\n",
" 'suggestCharts', [key], {});\n",
" } catch (error) {\n",
" console.error('Error during call to suggestCharts:', error);\n",
" }\n",
" quickchartButtonEl.classList.remove('colab-df-spinner');\n",
" quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
" }\n",
" (() => {\n",
" let quickchartButtonEl =\n",
" document.querySelector('#df-6a7ef4cf-72d5-432c-ac58-829dba3d0f68 button');\n",
" quickchartButtonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
" })();\n",
" </script>\n",
" </div>\n",
"\n",
" <div id=\"id_e4969e64-1668-4a6b-ad02-e6782440f1e5\">\n",
" <style>\n",
" .colab-df-generate {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-generate:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-generate {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-generate:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
" <button class=\"colab-df-generate\" onclick=\"generateWithVariable('narrowest_paintings')\"\n",
" title=\"Generate code using this dataframe.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M7,19H8.4L18.45,9,17,7.55,7,17.6ZM5,21V16.75L18.45,3.32a2,2,0,0,1,2.83,0l1.4,1.43a1.91,1.91,0,0,1,.58,1.4,1.91,1.91,0,0,1-.58,1.4L9.25,21ZM18.45,9,17,7.55Zm-12,3A5.31,5.31,0,0,0,4.9,8.1,5.31,5.31,0,0,0,1,6.5,5.31,5.31,0,0,0,4.9,4.9,5.31,5.31,0,0,0,6.5,1,5.31,5.31,0,0,0,8.1,4.9,5.31,5.31,0,0,0,12,6.5,5.46,5.46,0,0,0,6.5,12Z\"/>\n",
" </svg>\n",
" </button>\n",
" <script>\n",
" (() => {\n",
" const buttonEl =\n",
" document.querySelector('#id_e4969e64-1668-4a6b-ad02-e6782440f1e5 button.colab-df-generate');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" buttonEl.onclick = () => {\n",
" google.colab.notebook.generateWithVariable('narrowest_paintings');\n",
" }\n",
" })();\n",
" </script>\n",
" </div>\n",
"\n",
" </div>\n",
" </div>\n"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "dataframe",
"variable_name": "narrowest_paintings"
}
},
"metadata": {},
"execution_count": 59
}
]
},
{
"cell_type": "code",
"source": [
"pd.set_option('display.max_colwidth', None)\n",
"print(df[df['objectid']==72174])"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "obpHhvcTNi79",
"outputId": "35bf1dcc-fdd2-41e1-ebe6-50559f7538cf"
},
"execution_count": 60,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
" objectid accessioned accessionnum locationid title \\\n",
"82629 72174 1 1991.42.1 NaN School Studies \n",
"\n",
" displaydate beginyear endyear visualbrowsertimespan medium \\\n",
"82629 1944 1944.0 1944.0 1926 to 1950 oil on canvas \n",
"\n",
" ... parentid isvirtual departmentabbr portfolio series volume \\\n",
"82629 ... NaN 0 CMC NaN NaN NaN \n",
"\n",
" watermarks lastdetectedmodification wikidataid \\\n",
"82629 NaN 2025-02-18 22:02:19.593-05 Q20193543 \n",
"\n",
" customprinturl \n",
"82629 https://customprints.nga.gov/detail/511481/pippin-school-studies-1944?lid=124135 \n",
"\n",
"[1 rows x 30 columns]\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"df[df['objectid']==72174]"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 147
},
"id": "GYE0enibNymS",
"outputId": "a79c4410-df63-42c0-dab4-d32adf724f10"
},
"execution_count": 61,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" objectid accessioned accessionnum locationid title \\\n",
"82629 72174 1 1991.42.1 NaN School Studies \n",
"\n",
" displaydate beginyear endyear visualbrowsertimespan medium \\\n",
"82629 1944 1944.0 1944.0 1926 to 1950 oil on canvas \n",
"\n",
" ... parentid isvirtual departmentabbr portfolio series volume \\\n",
"82629 ... NaN 0 CMC NaN NaN NaN \n",
"\n",
" watermarks lastdetectedmodification wikidataid \\\n",
"82629 NaN 2025-02-18 22:02:19.593-05 Q20193543 \n",
"\n",
" customprinturl \n",
"82629 https://customprints.nga.gov/detail/511481/pippin-school-studies-1944?lid=124135 \n",
"\n",
"[1 rows x 30 columns]"
],
"text/html": [
"\n",
" <div id=\"df-e6e6266c-744a-4041-ad15-1c0d3257b532\" class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>objectid</th>\n",
" <th>accessioned</th>\n",
" <th>accessionnum</th>\n",
" <th>locationid</th>\n",
" <th>title</th>\n",
" <th>displaydate</th>\n",
" <th>beginyear</th>\n",
" <th>endyear</th>\n",
" <th>visualbrowsertimespan</th>\n",
" <th>medium</th>\n",
" <th>...</th>\n",
" <th>parentid</th>\n",
" <th>isvirtual</th>\n",
" <th>departmentabbr</th>\n",
" <th>portfolio</th>\n",
" <th>series</th>\n",
" <th>volume</th>\n",
" <th>watermarks</th>\n",
" <th>lastdetectedmodification</th>\n",
" <th>wikidataid</th>\n",
" <th>customprinturl</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>82629</th>\n",
" <td>72174</td>\n",
" <td>1</td>\n",
" <td>1991.42.1</td>\n",
" <td>NaN</td>\n",
" <td>School Studies</td>\n",
" <td>1944</td>\n",
" <td>1944.0</td>\n",
" <td>1944.0</td>\n",
" <td>1926 to 1950</td>\n",
" <td>oil on canvas</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>CMC</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>2025-02-18 22:02:19.593-05</td>\n",
" <td>Q20193543</td>\n",
" <td>https://customprints.nga.gov/detail/511481/pippin-school-studies-1944?lid=124135</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>1 rows × 30 columns</p>\n",
"</div>\n",
" <div class=\"colab-df-buttons\">\n",
"\n",
" <div class=\"colab-df-container\">\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-e6e6266c-744a-4041-ad15-1c0d3257b532')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
" </svg>\n",
" </button>\n",
"\n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" .colab-df-buttons div {\n",
" margin-bottom: 4px;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-e6e6266c-744a-4041-ad15-1c0d3257b532 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-e6e6266c-744a-4041-ad15-1c0d3257b532');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
"\n",
"\n",
" </div>\n",
" </div>\n"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "dataframe"
}
},
"metadata": {},
"execution_count": 61
}
]
},
{
"cell_type": "code",
"source": [
"# prompt: write the first 5 rows to a file so i can read it\n",
"\n",
"paintings.to_csv('paintings_first_5_rows.csv', index=False)"
],
"metadata": {
"id": "OnWnWtBtqoLl"
},
"execution_count": 21,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"send this to get the other data we need image and name and year\n"
],
"metadata": {
"id": "K05nkPWWj6yH"
}
},
{
"cell_type": "code",
"source": [
"top_artists.to_csv('painters_top_50.csv', index=False)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 144
},
"id": "4oqsGaIxkAI0",
"outputId": "2cf87393-fc8e-41be-f3ea-38c1a518eedb"
},
"execution_count": 22,
"outputs": [
{
"output_type": "error",
"ename": "NameError",
"evalue": "name 'top_artists' is not defined",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-22-f206bdc785bd>\u001b[0m in \u001b[0;36m<cell line: 0>\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mtop_artists\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mto_csv\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'painters_top_50.csv'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mindex\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mNameError\u001b[0m: name 'top_artists' is not defined"
]
}
]
},
{
"cell_type": "code",
"source": [
"# Count paintings per artist\n",
"top_artists = (\n",
" paintings['attribution']\n",
" .value_counts()\n",
" .head(63)\n",
" .reset_index()\n",
" .rename(columns={'index': 'Artist', 'attribution': 'Paintings'})\n",
")\n",
"\n",
"print(top_artists)\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "fVAPFJj-rNxS",
"outputId": "82a7530c-a190-4226-d28f-26bb77d0ad7a"
},
"execution_count": 62,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
" Paintings count\n",
"0 George Catlin 351\n",
"1 Mark Rothko 202\n",
"2 American 19th Century 132\n",
"3 Gilbert Stuart 45\n",
"4 Auguste Renoir 45\n",
".. ... ...\n",
"58 Joseph Mallord William Turner 10\n",
"59 Thomas Chambers 10\n",
"60 John Frederick Peto 10\n",
"61 Sir Henry Raeburn 9\n",
"62 James McNeill Whistler 9\n",
"\n",
"[63 rows x 2 columns]\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"def is_named_artist(name):\n",
" if pd.isna(name):\n",
" return False\n",
" # Exclude vague/categorized attributions\n",
" return not bool(re.search(\n",
" r\"(century|anonymous|unknown|unidentified|school of|follower of|studio of|circle of)\",\n",
" name.lower()\n",
" ))\n",
"\n",
"# Apply the filter\n",
"named_paintings = paintings[paintings['attribution'].apply(is_named_artist)]\n",
"\n",
"# Top artists\n",
"top_artists_clean = (\n",
" named_paintings['attribution']\n",
" .value_counts()\n",
" .head(50)\n",
" .reset_index()\n",
" .rename(columns={'index': 'Artist', 'attribution': 'Paintings'})\n",
")\n",
"\n",
"print(top_artists_clean)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "hVXqvqIvsN7v",
"outputId": "e117d2c8-0be9-404a-d615-f6d1c223b222"
},
"execution_count": 63,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
" Paintings count\n",
"0 George Catlin 351\n",
"1 Mark Rothko 202\n",
"2 Gilbert Stuart 45\n",
"3 Auguste Renoir 45\n",
"4 Claude Monet 27\n",
"5 Robert Mangold 26\n",
"6 Eugène Boudin 25\n",
"7 Jean-Baptiste-Camille Corot 25\n",
"8 Paul Cezanne 23\n",
"9 Thomas Sully 21\n",
"10 Edgar Degas 21\n",
"11 Pierre Bonnard 21\n",
"12 Edouard Vuillard 21\n",
"13 Barnett Newman 20\n",
"14 Henri Matisse 20\n",
"15 Camille Pissarro 17\n",
"16 Sir Anthony van Dyck 17\n",
"17 Pablo Picasso 17\n",
"18 John Singer Sargent 17\n",
"19 Edouard Manet 17\n",
"20 John Singleton Copley 16\n",
"21 George Bellows 16\n",
"22 Georges Seurat 16\n",
"23 André Derain 15\n",
"24 Jean Dubuffet 14\n",
"25 Winslow Homer 14\n",
"26 Erastus Salisbury Field 14\n",
"27 John Marin 14\n",
"28 Rembrandt van Rijn 13\n",
"29 Gene Davis 13\n",
"30 Bernardino Luini 13\n",
"31 Henri Fantin-Latour 13\n",
"32 Jean-Charles Cazin 13\n",
"33 Georgia O'Keeffe 13\n",
"34 after Sir Anthony van Dyck 13\n",
"35 Paul Gauguin 13\n",
"36 Jean Honoré Fragonard 13\n",
"37 Thomas Cole 13\n",
"38 Thomas Gainsborough 13\n",
"39 Jean-Louis Forain 12\n",
"40 Jacob Eichholtz 12\n",
"41 Gustave Courbet 12\n",
"42 Henri de Toulouse-Lautrec 12\n",
"43 Amedeo Modigliani 12\n",
"44 Mary Cassatt 12\n",
"45 Raoul Dufy 11\n",
"46 Ammi Phillips 11\n",
"47 Thomas Eakins 11\n",
"48 Berthe Morisot 11\n",
"49 John Frederick Peto 10\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"# Start from value_counts\n",
"top_artists_clean = (\n",
" named_paintings['attribution']\n",
" .value_counts()\n",
" .head(50)\n",
" .reset_index()\n",
")\n",
"\n",
"# Rename columns explicitly\n",
"top_artists_clean.columns = ['Artist', 'Paintings']\n",
"\n"
],
"metadata": {
"id": "KIN9ZnFAscFe"
},
"execution_count": 64,
"outputs": []
},
{
"cell_type": "code",
"source": [
"import plotly.express as px\n",
"\n",
"fig = px.treemap(\n",
" top_artists_clean,\n",
" path=['Artist'],\n",
" values='Paintings',\n",
" title='Top Artists by Number of Paintings (NGA)',\n",
")\n",
"\n",
"fig.update_traces(textinfo='label+value')\n",
"fig.show()\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 542
},
"id": "o0cM0a0Ysrhi",
"outputId": "2c0c2053-dcc2-435a-8b15-0e1a2336cc10"
},
"execution_count": 65,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
"<html>\n",
"<head><meta charset=\"utf-8\" /></head>\n",
"<body>\n",
" <div> <script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-AMS-MML_SVG\"></script><script type=\"text/javascript\">if (window.MathJax && window.MathJax.Hub && window.MathJax.Hub.Config) {window.MathJax.Hub.Config({SVG: {font: \"STIX-Web\"}});}</script> <script type=\"text/javascript\">window.PlotlyConfig = {MathJaxConfig: 'local'};</script>\n",
" <script charset=\"utf-8\" src=\"https://cdn.plot.ly/plotly-2.35.2.min.js\"></script> <div id=\"e0721a5c-11c2-4064-bd28-30b877128571\" class=\"plotly-graph-div\" style=\"height:525px; width:100%;\"></div> <script type=\"text/javascript\"> window.PLOTLYENV=window.PLOTLYENV || {}; if (document.getElementById(\"e0721a5c-11c2-4064-bd28-30b877128571\")) { Plotly.newPlot( \"e0721a5c-11c2-4064-bd28-30b877128571\", [{\"branchvalues\":\"total\",\"domain\":{\"x\":[0.0,1.0],\"y\":[0.0,1.0]},\"hovertemplate\":\"labels=%{label}\\u003cbr\\u003ePaintings=%{value}\\u003cbr\\u003eparent=%{parent}\\u003cbr\\u003eid=%{id}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"ids\":[\"Amedeo Modigliani\",\"Ammi Phillips\",\"André Derain\",\"Auguste Renoir\",\"Barnett Newman\",\"Bernardino Luini\",\"Berthe Morisot\",\"Camille Pissarro\",\"Claude Monet\",\"Edgar Degas\",\"Edouard Manet\",\"Edouard Vuillard\",\"Erastus Salisbury Field\",\"Eugène Boudin\",\"Gene Davis\",\"George Bellows\",\"George Catlin\",\"Georges Seurat\",\"Georgia O'Keeffe\",\"Gilbert Stuart\",\"Gustave Courbet\",\"Henri Fantin-Latour\",\"Henri Matisse\",\"Henri de Toulouse-Lautrec\",\"Jacob Eichholtz\",\"Jean Dubuffet\",\"Jean Honoré Fragonard\",\"Jean-Baptiste-Camille Corot\",\"Jean-Charles Cazin\",\"Jean-Louis Forain\",\"John Frederick Peto\",\"John Marin\",\"John Singer Sargent\",\"John Singleton Copley\",\"Mark Rothko\",\"Mary Cassatt\",\"Pablo Picasso\",\"Paul Cezanne\",\"Paul Gauguin\",\"Pierre Bonnard\",\"Raoul Dufy\",\"Rembrandt van Rijn\",\"Robert Mangold\",\"Sir Anthony van Dyck\",\"Thomas Cole\",\"Thomas Eakins\",\"Thomas Gainsborough\",\"Thomas Sully\",\"Winslow Homer\",\"after Sir Anthony van Dyck\"],\"labels\":[\"Amedeo Modigliani\",\"Ammi Phillips\",\"André Derain\",\"Auguste Renoir\",\"Barnett Newman\",\"Bernardino Luini\",\"Berthe Morisot\",\"Camille Pissarro\",\"Claude Monet\",\"Edgar Degas\",\"Edouard Manet\",\"Edouard Vuillard\",\"Erastus Salisbury Field\",\"Eugène Boudin\",\"Gene Davis\",\"George Bellows\",\"George Catlin\",\"Georges Seurat\",\"Georgia O'Keeffe\",\"Gilbert Stuart\",\"Gustave Courbet\",\"Henri Fantin-Latour\",\"Henri Matisse\",\"Henri de Toulouse-Lautrec\",\"Jacob Eichholtz\",\"Jean Dubuffet\",\"Jean Honoré Fragonard\",\"Jean-Baptiste-Camille Corot\",\"Jean-Charles Cazin\",\"Jean-Louis Forain\",\"John Frederick Peto\",\"John Marin\",\"John Singer Sargent\",\"John Singleton Copley\",\"Mark Rothko\",\"Mary Cassatt\",\"Pablo Picasso\",\"Paul Cezanne\",\"Paul Gauguin\",\"Pierre Bonnard\",\"Raoul Dufy\",\"Rembrandt van Rijn\",\"Robert Mangold\",\"Sir Anthony van Dyck\",\"Thomas Cole\",\"Thomas Eakins\",\"Thomas Gainsborough\",\"Thomas Sully\",\"Winslow Homer\",\"after Sir Anthony van Dyck\"],\"name\":\"\",\"parents\":[\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],\"values\":[12,11,15,45,20,13,11,17,27,21,17,21,14,25,13,16,351,16,13,45,12,13,20,12,12,14,13,25,13,12,10,14,17,16,202,12,17,23,13,21,11,13,26,17,13,11,13,21,14,13],\"type\":\"treemap\",\"textinfo\":\"label+value\"}], {\"template\":{\"data\":{\"histogram2dcontour\":[{\"type\":\"histogram2dcontour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"choropleth\":[{\"type\":\"choropleth\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"histogram2d\":[{\"type\":\"histogram2d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmap\":[{\"type\":\"heatmap\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmapgl\":[{\"type\":\"heatmapgl\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"contourcarpet\":[{\"type\":\"contourcarpet\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"contour\":[{\"type\":\"contour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"surface\":[{\"type\":\"surface\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"mesh3d\":[{\"type\":\"mesh3d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"scatter\":[{\"fillpattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2},\"type\":\"scatter\"}],\"parcoords\":[{\"type\":\"parcoords\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolargl\":[{\"type\":\"scatterpolargl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"bar\":[{\"error_x\":{\"color\":\"#2a3f5f\"},\"error_y\":{\"color\":\"#2a3f5f\"},\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"bar\"}],\"scattergeo\":[{\"type\":\"scattergeo\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolar\":[{\"type\":\"scatterpolar\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"histogram\":[{\"marker\":{\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"histogram\"}],\"scattergl\":[{\"type\":\"scattergl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatter3d\":[{\"type\":\"scatter3d\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermapbox\":[{\"type\":\"scattermapbox\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterternary\":[{\"type\":\"scatterternary\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattercarpet\":[{\"type\":\"scattercarpet\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"carpet\":[{\"aaxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"baxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"type\":\"carpet\"}],\"table\":[{\"cells\":{\"fill\":{\"color\":\"#EBF0F8\"},\"line\":{\"color\":\"white\"}},\"header\":{\"fill\":{\"color\":\"#C8D4E3\"},\"line\":{\"color\":\"white\"}},\"type\":\"table\"}],\"barpolar\":[{\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"barpolar\"}],\"pie\":[{\"automargin\":true,\"type\":\"pie\"}]},\"layout\":{\"autotypenumbers\":\"strict\",\"colorway\":[\"#636efa\",\"#EF553B\",\"#00cc96\",\"#ab63fa\",\"#FFA15A\",\"#19d3f3\",\"#FF6692\",\"#B6E880\",\"#FF97FF\",\"#FECB52\"],\"font\":{\"color\":\"#2a3f5f\"},\"hovermode\":\"closest\",\"hoverlabel\":{\"align\":\"left\"},\"paper_bgcolor\":\"white\",\"plot_bgcolor\":\"#E5ECF6\",\"polar\":{\"bgcolor\":\"#E5ECF6\",\"angularaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"radialaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"ternary\":{\"bgcolor\":\"#E5ECF6\",\"aaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"baxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"caxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"coloraxis\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"colorscale\":{\"sequential\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"sequentialminus\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"diverging\":[[0,\"#8e0152\"],[0.1,\"#c51b7d\"],[0.2,\"#de77ae\"],[0.3,\"#f1b6da\"],[0.4,\"#fde0ef\"],[0.5,\"#f7f7f7\"],[0.6,\"#e6f5d0\"],[0.7,\"#b8e186\"],[0.8,\"#7fbc41\"],[0.9,\"#4d9221\"],[1,\"#276419\"]]},\"xaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"yaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"scene\":{\"xaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"yaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"zaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2}},\"shapedefaults\":{\"line\":{\"color\":\"#2a3f5f\"}},\"annotationdefaults\":{\"arrowcolor\":\"#2a3f5f\",\"arrowhead\":0,\"arrowwidth\":1},\"geo\":{\"bgcolor\":\"white\",\"landcolor\":\"#E5ECF6\",\"subunitcolor\":\"white\",\"showland\":true,\"showlakes\":true,\"lakecolor\":\"white\"},\"title\":{\"x\":0.05},\"mapbox\":{\"style\":\"light\"}}},\"legend\":{\"tracegroupgap\":0},\"title\":{\"text\":\"Top Artists by Number of Paintings (NGA)\"}}, {\"responsive\": true} ).then(function(){\n",
" \n",
"var gd = document.getElementById('e0721a5c-11c2-4064-bd28-30b877128571');\n",
"var x = new MutationObserver(function (mutations, observer) {{\n",
" var display = window.getComputedStyle(gd).display;\n",
" if (!display || display === 'none') {{\n",
" console.log([gd, 'removed!']);\n",
" Plotly.purge(gd);\n",
" observer.disconnect();\n",
" }}\n",
"}});\n",
"\n",
"// Listen for the removal of the full notebook cells\n",
"var notebookContainer = gd.closest('#notebook-container');\n",
"if (notebookContainer) {{\n",
" x.observe(notebookContainer, {childList: true});\n",
"}}\n",
"\n",
"// Listen for the clearing of the current output cell\n",
"var outputEl = gd.closest('.output');\n",
"if (outputEl) {{\n",
" x.observe(outputEl, {childList: true});\n",
"}}\n",
"\n",
" }) }; </script> </div>\n",
"</body>\n",
"</html>"
]
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"source": [
"xxx# prompt: load /content/nga_top_artists_sample.csv\n",
"\n",
"import pandas as pd\n",
"nga_top_artists_sample = pd.read_csv('/content/nga_top_artists_sample.csv')\n",
"print(nga_top_artists_sample.head())\n",
"print(nga_top_artists_sample.columns.tolist())\n",
"print(nga_top_artists_sample.info())\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 382
},
"id": "eUZpNxQXzjgv",
"outputId": "4f753abf-4eea-4a72-872d-6e3068211b6f"
},
"execution_count": 66,
"outputs": [
{
"output_type": "error",
"ename": "FileNotFoundError",
"evalue": "[Errno 2] No such file or directory: '/content/nga_top_artists_sample.csv'",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-66-b3c54216211f>\u001b[0m in \u001b[0;36m<cell line: 0>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mpandas\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mpd\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 4\u001b[0;31m \u001b[0mnga_top_artists_sample\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpd\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread_csv\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'/content/nga_top_artists_sample.csv'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 5\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnga_top_artists_sample\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhead\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnga_top_artists_sample\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtolist\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.11/dist-packages/pandas/io/parsers/readers.py\u001b[0m in \u001b[0;36mread_csv\u001b[0;34m(filepath_or_buffer, sep, delimiter, header, names, index_col, usecols, dtype, engine, converters, true_values, false_values, skipinitialspace, skiprows, skipfooter, nrows, na_values, keep_default_na, na_filter, verbose, skip_blank_lines, parse_dates, infer_datetime_format, keep_date_col, date_parser, date_format, dayfirst, cache_dates, iterator, chunksize, compression, thousands, decimal, lineterminator, quotechar, quoting, doublequote, escapechar, comment, encoding, encoding_errors, dialect, on_bad_lines, delim_whitespace, low_memory, memory_map, float_precision, storage_options, dtype_backend)\u001b[0m\n\u001b[1;32m 1024\u001b[0m \u001b[0mkwds\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mupdate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkwds_defaults\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1025\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1026\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0m_read\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilepath_or_buffer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkwds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1027\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1028\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.11/dist-packages/pandas/io/parsers/readers.py\u001b[0m in \u001b[0;36m_read\u001b[0;34m(filepath_or_buffer, kwds)\u001b[0m\n\u001b[1;32m 618\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 619\u001b[0m \u001b[0;31m# Create the parser.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 620\u001b[0;31m \u001b[0mparser\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mTextFileReader\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilepath_or_buffer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 621\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 622\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mchunksize\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0miterator\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.11/dist-packages/pandas/io/parsers/readers.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, f, engine, **kwds)\u001b[0m\n\u001b[1;32m 1618\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1619\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhandles\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mIOHandles\u001b[0m \u001b[0;34m|\u001b[0m \u001b[0;32mNone\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1620\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_engine\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_make_engine\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mengine\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1621\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1622\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m->\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.11/dist-packages/pandas/io/parsers/readers.py\u001b[0m in \u001b[0;36m_make_engine\u001b[0;34m(self, f, engine)\u001b[0m\n\u001b[1;32m 1878\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;34m\"b\"\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mmode\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1879\u001b[0m \u001b[0mmode\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0;34m\"b\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1880\u001b[0;31m self.handles = get_handle(\n\u001b[0m\u001b[1;32m 1881\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1882\u001b[0m \u001b[0mmode\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.11/dist-packages/pandas/io/common.py\u001b[0m in \u001b[0;36mget_handle\u001b[0;34m(path_or_buf, mode, encoding, compression, memory_map, is_text, errors, storage_options)\u001b[0m\n\u001b[1;32m 871\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mioargs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mencoding\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0;34m\"b\"\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mioargs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmode\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 872\u001b[0m \u001b[0;31m# Encoding\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 873\u001b[0;31m handle = open(\n\u001b[0m\u001b[1;32m 874\u001b[0m \u001b[0mhandle\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 875\u001b[0m \u001b[0mioargs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmode\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: '/content/nga_top_artists_sample.csv'"
]
}
]
},
{
"cell_type": "code",
"source": [
"xxx# prompt: merge nga_top_artists_sample with top_artists_clean\n",
"\n",
"import pandas as pd\n",
"# Assuming both dataframes have an 'Artist' column\n",
"# Perform an inner merge to get artists present in both lists\n",
"merged_artists = pd.merge(\n",
" nga_top_artists_sample,\n",
" top_artists_clean,\n",
" on='Artist',\n",
" suffixes=('_nga', '_clean') # Optional: add suffixes to columns if they have the same name other than 'Artist'\n",
")\n",
"\n",
"print(\"\\nMerged Artists (present in both NGA sample and clean NGA list):\")\n",
"merged_artists"
],
"metadata": {
"id": "x9cSx45iz7yY",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 216
},
"outputId": "baa28ed4-dfec-4495-dbf9-2e87fff4d83c"
},
"execution_count": 67,
"outputs": [
{
"output_type": "error",
"ename": "NameError",
"evalue": "name 'nga_top_artists_sample' is not defined",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-67-aeaf215b1b54>\u001b[0m in \u001b[0;36m<cell line: 0>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;31m# Perform an inner merge to get artists present in both lists\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6\u001b[0m merged_artists = pd.merge(\n\u001b[0;32m----> 7\u001b[0;31m \u001b[0mnga_top_artists_sample\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 8\u001b[0m \u001b[0mtop_artists_clean\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0mon\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'Artist'\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mNameError\u001b[0m: name 'nga_top_artists_sample' is not defined"
]
}
]
},
{
"cell_type": "code",
"source": [
"xxx\n",
"import plotly.express as px\n",
"import pandas as pd\n",
"\n",
"# Load your CSV\n",
"df = pd.read_csv(\"nga_top_artists_sample.csv\")\n",
"\n",
"# Create hover label\n",
"df[\"hover\"] = df[\"Artist\"] + \"<br><i>\" + df[\"Title\"] + \"</i> (\" + df[\"Year\"].astype(str) + \")\"\n",
"\n",
"# Treemap plot\n",
"fig = px.treemap(\n",
" df,\n",
" path=[\"Artist\"],\n",
" values=\"Paintings\",\n",
" hover_name=\"hover\",\n",
" title=\"Top 5 NGA Artists by Number of Paintings\"\n",
")\n",
"fig.update_traces(textinfo=\"label+value\")\n",
"fig.show()\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 542
},
"id": "J-kPtFj40cgL",
"outputId": "25e4ddbb-3a93-4979-ee7a-11fad46e46d1"
},
"execution_count": null,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
"<html>\n",
"<head><meta charset=\"utf-8\" /></head>\n",
"<body>\n",
" <div> <script src=\"https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-AMS-MML_SVG\"></script><script type=\"text/javascript\">if (window.MathJax && window.MathJax.Hub && window.MathJax.Hub.Config) {window.MathJax.Hub.Config({SVG: {font: \"STIX-Web\"}});}</script> <script type=\"text/javascript\">window.PlotlyConfig = {MathJaxConfig: 'local'};</script>\n",
" <script charset=\"utf-8\" src=\"https://cdn.plot.ly/plotly-2.35.2.min.js\"></script> <div id=\"b5fdac68-e6fe-4cc6-818d-3df3eabdb1df\" class=\"plotly-graph-div\" style=\"height:525px; width:100%;\"></div> <script type=\"text/javascript\"> window.PLOTLYENV=window.PLOTLYENV || {}; if (document.getElementById(\"b5fdac68-e6fe-4cc6-818d-3df3eabdb1df\")) { Plotly.newPlot( \"b5fdac68-e6fe-4cc6-818d-3df3eabdb1df\", [{\"branchvalues\":\"total\",\"domain\":{\"x\":[0.0,1.0],\"y\":[0.0,1.0]},\"hovertemplate\":\"\\u003cb\\u003e%{hovertext}\\u003c\\u002fb\\u003e\\u003cbr\\u003e\\u003cbr\\u003elabels=%{label}\\u003cbr\\u003ePaintings=%{value}\\u003cbr\\u003eparent=%{parent}\\u003cbr\\u003eid=%{id}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\",\"hovertext\":[\"Auguste Renoir\\u003cbr\\u003e\\u003ci\\u003ePont Neuf, Paris\\u003c\\u002fi\\u003e (1872)\",\"Claude Monet\\u003cbr\\u003e\\u003ci\\u003eWoman with a Parasol - Madame Monet and Her Son\\u003c\\u002fi\\u003e (1875)\",\"George Catlin\\u003cbr\\u003e\\u003ci\\u003eThe White Cloud, Head Chief of the Iowas\\u003c\\u002fi\\u003e (1844\\u002f1845)\",\"Gilbert Stuart\\u003cbr\\u003e\\u003ci\\u003eGeorge Washington\\u003c\\u002fi\\u003e (c. 1821)\",\"Mark Rothko\\u003cbr\\u003e\\u003ci\\u003eUntitled\\u003c\\u002fi\\u003e (1970)\"],\"ids\":[\"Auguste Renoir\",\"Claude Monet\",\"George Catlin\",\"Gilbert Stuart\",\"Mark Rothko\"],\"labels\":[\"Auguste Renoir\",\"Claude Monet\",\"George Catlin\",\"Gilbert Stuart\",\"Mark Rothko\"],\"name\":\"\",\"parents\":[\"\",\"\",\"\",\"\",\"\"],\"values\":[45,27,351,45,202],\"type\":\"treemap\",\"textinfo\":\"label+value\"}], {\"template\":{\"data\":{\"histogram2dcontour\":[{\"type\":\"histogram2dcontour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"choropleth\":[{\"type\":\"choropleth\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"histogram2d\":[{\"type\":\"histogram2d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmap\":[{\"type\":\"heatmap\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmapgl\":[{\"type\":\"heatmapgl\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"contourcarpet\":[{\"type\":\"contourcarpet\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"contour\":[{\"type\":\"contour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"surface\":[{\"type\":\"surface\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"mesh3d\":[{\"type\":\"mesh3d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"scatter\":[{\"fillpattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2},\"type\":\"scatter\"}],\"parcoords\":[{\"type\":\"parcoords\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolargl\":[{\"type\":\"scatterpolargl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"bar\":[{\"error_x\":{\"color\":\"#2a3f5f\"},\"error_y\":{\"color\":\"#2a3f5f\"},\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"bar\"}],\"scattergeo\":[{\"type\":\"scattergeo\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolar\":[{\"type\":\"scatterpolar\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"histogram\":[{\"marker\":{\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"histogram\"}],\"scattergl\":[{\"type\":\"scattergl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatter3d\":[{\"type\":\"scatter3d\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermapbox\":[{\"type\":\"scattermapbox\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterternary\":[{\"type\":\"scatterternary\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattercarpet\":[{\"type\":\"scattercarpet\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"carpet\":[{\"aaxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"baxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"type\":\"carpet\"}],\"table\":[{\"cells\":{\"fill\":{\"color\":\"#EBF0F8\"},\"line\":{\"color\":\"white\"}},\"header\":{\"fill\":{\"color\":\"#C8D4E3\"},\"line\":{\"color\":\"white\"}},\"type\":\"table\"}],\"barpolar\":[{\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"barpolar\"}],\"pie\":[{\"automargin\":true,\"type\":\"pie\"}]},\"layout\":{\"autotypenumbers\":\"strict\",\"colorway\":[\"#636efa\",\"#EF553B\",\"#00cc96\",\"#ab63fa\",\"#FFA15A\",\"#19d3f3\",\"#FF6692\",\"#B6E880\",\"#FF97FF\",\"#FECB52\"],\"font\":{\"color\":\"#2a3f5f\"},\"hovermode\":\"closest\",\"hoverlabel\":{\"align\":\"left\"},\"paper_bgcolor\":\"white\",\"plot_bgcolor\":\"#E5ECF6\",\"polar\":{\"bgcolor\":\"#E5ECF6\",\"angularaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"radialaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"ternary\":{\"bgcolor\":\"#E5ECF6\",\"aaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"baxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"caxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"coloraxis\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"colorscale\":{\"sequential\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"sequentialminus\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"diverging\":[[0,\"#8e0152\"],[0.1,\"#c51b7d\"],[0.2,\"#de77ae\"],[0.3,\"#f1b6da\"],[0.4,\"#fde0ef\"],[0.5,\"#f7f7f7\"],[0.6,\"#e6f5d0\"],[0.7,\"#b8e186\"],[0.8,\"#7fbc41\"],[0.9,\"#4d9221\"],[1,\"#276419\"]]},\"xaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"yaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"scene\":{\"xaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"yaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"zaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2}},\"shapedefaults\":{\"line\":{\"color\":\"#2a3f5f\"}},\"annotationdefaults\":{\"arrowcolor\":\"#2a3f5f\",\"arrowhead\":0,\"arrowwidth\":1},\"geo\":{\"bgcolor\":\"white\",\"landcolor\":\"#E5ECF6\",\"subunitcolor\":\"white\",\"showland\":true,\"showlakes\":true,\"lakecolor\":\"white\"},\"title\":{\"x\":0.05},\"mapbox\":{\"style\":\"light\"}}},\"legend\":{\"tracegroupgap\":0},\"title\":{\"text\":\"Top 5 NGA Artists by Number of Paintings\"}}, {\"responsive\": true} ).then(function(){\n",
" \n",
"var gd = document.getElementById('b5fdac68-e6fe-4cc6-818d-3df3eabdb1df');\n",
"var x = new MutationObserver(function (mutations, observer) {{\n",
" var display = window.getComputedStyle(gd).display;\n",
" if (!display || display === 'none') {{\n",
" console.log([gd, 'removed!']);\n",
" Plotly.purge(gd);\n",
" observer.disconnect();\n",
" }}\n",
"}});\n",
"\n",
"// Listen for the removal of the full notebook cells\n",
"var notebookContainer = gd.closest('#notebook-container');\n",
"if (notebookContainer) {{\n",
" x.observe(notebookContainer, {childList: true});\n",
"}}\n",
"\n",
"// Listen for the clearing of the current output cell\n",
"var outputEl = gd.closest('.output');\n",
"if (outputEl) {{\n",
" x.observe(outputEl, {childList: true});\n",
"}}\n",
"\n",
" }) }; </script> </div>\n",
"</body>\n",
"</html>"
]
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"source": [
"!pip install squarify"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "UIECcYG5kXu9",
"outputId": "1835942a-0c9b-444f-8a63-aeae17d24440"
},
"execution_count": 68,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Collecting squarify\n",
" Downloading squarify-0.4.4-py3-none-any.whl.metadata (600 bytes)\n",
"Downloading squarify-0.4.4-py3-none-any.whl (4.1 kB)\n",
"Installing collected packages: squarify\n",
"Successfully installed squarify-0.4.4\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"xxx\n",
"import plotly.graph_objects as go\n",
"import pandas as pd\n",
"import squarify\n",
"import requests\n",
"from PIL import Image\n",
"from io import BytesIO\n",
"import base64\n",
"\n",
"# Load and clean\n",
"df = pd.read_csv(\"/content/painters_top_50d.csv\")\n",
"df = df.rename(columns={\"Paintings\": \"Artist\", \"count\": \"Paintings\"})\n",
"df[\"Paintings\"] = pd.to_numeric(df[\"Paintings\"], errors=\"coerce\")\n",
"df = df.dropna(subset=[\"Paintings\", \"Image\"])\n",
"df = df.head(50)\n",
"\n",
"# Squarify layout\n",
"sizes = df[\"Paintings\"].tolist()\n",
"rects = squarify.normalize_sizes(sizes, 1000, 1000)\n",
"rects = squarify.squarify(rects, 0, 0, 1000, 1000)\n",
"\n",
"# Get base64 images\n",
"def get_base64_image(url):\n",
" try:\n",
" response = requests.get(url)\n",
" img = Image.open(BytesIO(response.content)).resize((200, 200)).convert(\"RGB\")\n",
" buffer = BytesIO()\n",
" img.save(buffer, format=\"PNG\")\n",
" return \"data:image/png;base64,\" + base64.b64encode(buffer.getvalue()).decode()\n",
" except:\n",
" return None\n",
"\n",
"df[\"base64img\"] = df[\"Image\"].apply(get_base64_image)\n",
"rects = [r for r, img in zip(rects, df[\"base64img\"]) if img]\n",
"imgs = [img for img in df[\"base64img\"] if img]\n",
"\n",
"# Plotly figure\n",
"fig = go.Figure()\n",
"for r, img in zip(rects, imgs):\n",
" fig.add_layout_image(\n",
" dict(\n",
" source=img,\n",
" xref=\"x\", yref=\"y\",\n",
" x=r[\"x\"], y=1000 - r[\"y\"],\n",
" sizex=r[\"dx\"], sizey=r[\"dy\"],\n",
" xanchor=\"left\", yanchor=\"top\",\n",
" layer=\"above\"\n",
" )\n",
" )\n",
"\n",
"fig.update_layout(\n",
" width=1000,\n",
" height=1000,\n",
" margin=dict(l=0, r=0, t=0, b=0),\n",
" xaxis=dict(visible=False, range=[0, 1000]),\n",
" yaxis=dict(visible=False, range=[0, 1000]),\n",
")\n",
"fig.show()\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 382
},
"id": "_akI5IhmkQr6",
"outputId": "4f6a7338-4fec-4e5d-96a6-69e309d5d551"
},
"execution_count": 69,
"outputs": [
{
"output_type": "error",
"ename": "FileNotFoundError",
"evalue": "[Errno 2] No such file or directory: '/content/painters_top_50d.csv'",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-69-dcde4f81802e>\u001b[0m in \u001b[0;36m<cell line: 0>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0;31m# Load and clean\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 10\u001b[0;31m \u001b[0mdf\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpd\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread_csv\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"/content/painters_top_50d.csv\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 11\u001b[0m \u001b[0mdf\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrename\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m{\u001b[0m\u001b[0;34m\"Paintings\"\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m\"Artist\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"count\"\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m\"Paintings\"\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[0mdf\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"Paintings\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpd\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mto_numeric\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdf\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"Paintings\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0merrors\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"coerce\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.11/dist-packages/pandas/io/parsers/readers.py\u001b[0m in \u001b[0;36mread_csv\u001b[0;34m(filepath_or_buffer, sep, delimiter, header, names, index_col, usecols, dtype, engine, converters, true_values, false_values, skipinitialspace, skiprows, skipfooter, nrows, na_values, keep_default_na, na_filter, verbose, skip_blank_lines, parse_dates, infer_datetime_format, keep_date_col, date_parser, date_format, dayfirst, cache_dates, iterator, chunksize, compression, thousands, decimal, lineterminator, quotechar, quoting, doublequote, escapechar, comment, encoding, encoding_errors, dialect, on_bad_lines, delim_whitespace, low_memory, memory_map, float_precision, storage_options, dtype_backend)\u001b[0m\n\u001b[1;32m 1024\u001b[0m \u001b[0mkwds\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mupdate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkwds_defaults\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1025\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1026\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0m_read\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilepath_or_buffer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkwds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1027\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1028\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.11/dist-packages/pandas/io/parsers/readers.py\u001b[0m in \u001b[0;36m_read\u001b[0;34m(filepath_or_buffer, kwds)\u001b[0m\n\u001b[1;32m 618\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 619\u001b[0m \u001b[0;31m# Create the parser.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 620\u001b[0;31m \u001b[0mparser\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mTextFileReader\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilepath_or_buffer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 621\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 622\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mchunksize\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0miterator\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.11/dist-packages/pandas/io/parsers/readers.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, f, engine, **kwds)\u001b[0m\n\u001b[1;32m 1618\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1619\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhandles\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mIOHandles\u001b[0m \u001b[0;34m|\u001b[0m \u001b[0;32mNone\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1620\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_engine\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_make_engine\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mengine\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1621\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1622\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m->\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.11/dist-packages/pandas/io/parsers/readers.py\u001b[0m in \u001b[0;36m_make_engine\u001b[0;34m(self, f, engine)\u001b[0m\n\u001b[1;32m 1878\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;34m\"b\"\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mmode\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1879\u001b[0m \u001b[0mmode\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0;34m\"b\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1880\u001b[0;31m self.handles = get_handle(\n\u001b[0m\u001b[1;32m 1881\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1882\u001b[0m \u001b[0mmode\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.11/dist-packages/pandas/io/common.py\u001b[0m in \u001b[0;36mget_handle\u001b[0;34m(path_or_buf, mode, encoding, compression, memory_map, is_text, errors, storage_options)\u001b[0m\n\u001b[1;32m 871\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mioargs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mencoding\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0;34m\"b\"\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mioargs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmode\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 872\u001b[0m \u001b[0;31m# Encoding\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 873\u001b[0;31m handle = open(\n\u001b[0m\u001b[1;32m 874\u001b[0m \u001b[0mhandle\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 875\u001b[0m \u001b[0mioargs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmode\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: '/content/painters_top_50d.csv'"
]
}
]
},
{
"cell_type": "code",
"source": [
"from IPython.display import display, HTML\n",
"import pandas as pd\n",
"\n",
"# Load your data\n",
"df = pd.read_csv(\"nga_top_artists_sample.csv\")\n",
"\n",
"# Sort by Paintings\n",
"df = df.sort_values(by=\"Paintings\", ascending=False)\n",
"\n",
"# Create HTML blocks\n",
"html_blocks = []\n",
"for _, row in df.iterrows():\n",
" block = f\"\"\"\n",
" <div style=\"flex: 1 0 18%; margin: 10px; padding: 10px; border: 1px solid #ccc; text-align: center; box-shadow: 2px 2px 8px #aaa;\">\n",
" <img src=\"{row['Image']}\" alt=\"{row['Title']}\" style=\"width: 100%; max-height: 200px; object-fit: cover; border-bottom: 1px solid #999;\">\n",
" <h3 style=\"margin: 8px 0 4px;\">{row['Artist']}</h3>\n",
" <p style=\"margin: 0; font-size: 0.9em; color: #555;\"><strong>{row['Paintings']}</strong> paintings</p>\n",
" <p style=\"font-style: italic; font-size: 0.9em; margin-top: 4px;\">{row['Title']} ({row['Year']})</p>\n",
" </div>\n",
" \"\"\"\n",
" html_blocks.append(block)\n",
"\n",
"# Combine into grid layout\n",
"full_html = f\"\"\"\n",
"<div style=\"display: flex; flex-wrap: wrap; justify-content: space-around;\">\n",
" {''.join(html_blocks)}\n",
"</div>\n",
"\"\"\"\n",
"\n",
"# Show it in notebook\n",
"display(HTML(full_html))\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 382
},
"id": "qsYfFD6J0sW_",
"outputId": "b7083128-588d-43fd-b132-f9e4c68204a7"
},
"execution_count": 70,
"outputs": [
{
"output_type": "error",
"ename": "FileNotFoundError",
"evalue": "[Errno 2] No such file or directory: 'nga_top_artists_sample.csv'",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-70-19ed0ff805d7>\u001b[0m in \u001b[0;36m<cell line: 0>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;31m# Load your data\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0mdf\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpd\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread_csv\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"nga_top_artists_sample.csv\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;31m# Sort by Paintings\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.11/dist-packages/pandas/io/parsers/readers.py\u001b[0m in \u001b[0;36mread_csv\u001b[0;34m(filepath_or_buffer, sep, delimiter, header, names, index_col, usecols, dtype, engine, converters, true_values, false_values, skipinitialspace, skiprows, skipfooter, nrows, na_values, keep_default_na, na_filter, verbose, skip_blank_lines, parse_dates, infer_datetime_format, keep_date_col, date_parser, date_format, dayfirst, cache_dates, iterator, chunksize, compression, thousands, decimal, lineterminator, quotechar, quoting, doublequote, escapechar, comment, encoding, encoding_errors, dialect, on_bad_lines, delim_whitespace, low_memory, memory_map, float_precision, storage_options, dtype_backend)\u001b[0m\n\u001b[1;32m 1024\u001b[0m \u001b[0mkwds\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mupdate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkwds_defaults\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1025\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1026\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0m_read\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilepath_or_buffer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkwds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1027\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1028\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.11/dist-packages/pandas/io/parsers/readers.py\u001b[0m in \u001b[0;36m_read\u001b[0;34m(filepath_or_buffer, kwds)\u001b[0m\n\u001b[1;32m 618\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 619\u001b[0m \u001b[0;31m# Create the parser.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 620\u001b[0;31m \u001b[0mparser\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mTextFileReader\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilepath_or_buffer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 621\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 622\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mchunksize\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0miterator\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.11/dist-packages/pandas/io/parsers/readers.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, f, engine, **kwds)\u001b[0m\n\u001b[1;32m 1618\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1619\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhandles\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mIOHandles\u001b[0m \u001b[0;34m|\u001b[0m \u001b[0;32mNone\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1620\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_engine\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_make_engine\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mengine\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1621\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1622\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mclose\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m->\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.11/dist-packages/pandas/io/parsers/readers.py\u001b[0m in \u001b[0;36m_make_engine\u001b[0;34m(self, f, engine)\u001b[0m\n\u001b[1;32m 1878\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;34m\"b\"\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mmode\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1879\u001b[0m \u001b[0mmode\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0;34m\"b\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1880\u001b[0;31m self.handles = get_handle(\n\u001b[0m\u001b[1;32m 1881\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1882\u001b[0m \u001b[0mmode\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.11/dist-packages/pandas/io/common.py\u001b[0m in \u001b[0;36mget_handle\u001b[0;34m(path_or_buf, mode, encoding, compression, memory_map, is_text, errors, storage_options)\u001b[0m\n\u001b[1;32m 871\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mioargs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mencoding\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0;34m\"b\"\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mioargs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmode\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 872\u001b[0m \u001b[0;31m# Encoding\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 873\u001b[0;31m handle = open(\n\u001b[0m\u001b[1;32m 874\u001b[0m \u001b[0mhandle\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 875\u001b[0m \u001b[0mioargs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmode\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'nga_top_artists_sample.csv'"
]
}
]
},
{
"cell_type": "code",
"source": [
"html_blocks = []\n",
"max_width = 300\n",
"min_width = 120\n",
"df[\"scale\"] = df[\"Paintings\"] / df[\"Paintings\"].max()\n",
"df[\"box_width\"] = (df[\"scale\"] * max_width).clip(lower=min_width).astype(int)\n",
"\n",
"for _, row in df.iterrows():\n",
" block = f\"\"\"\n",
" <div style=\"flex: 0 0 {row['box_width']}px; margin: 10px; padding: 10px;\n",
" border: 1px solid #ccc; text-align: center;\n",
" box-shadow: 2px 2px 8px #aaa; transition: 0.2s;\">\n",
" <img src=\"{row['Image']}\" alt=\"{row['Title']}\"\n",
" style=\"width: 100%; max-height: 200px; object-fit: cover;\n",
" border-bottom: 1px solid #999;\">\n",
" <h3 style=\"margin: 8px 0 4px;\">{row['Artist']}</h3>\n",
" <p style=\"margin: 0; font-size: 0.9em; color: #555;\">\n",
" <strong>{row['Paintings']}</strong> paintings\n",
" </p>\n",
" <p style=\"font-style: italic; font-size: 0.9em; margin-top: 4px;\">\n",
" {row['Title']} ({row['Year']})\n",
" </p>\n",
" </div>\n",
" \"\"\"\n",
" html_blocks.append(block)\n",
"\n",
"full_html = f\"\"\"\n",
"<div style=\"display: flex; flex-wrap: wrap; align-items: stretch;\">\n",
" {''.join(html_blocks)}\n",
"</div>\n",
"\"\"\"\n",
"\n",
"from IPython.display import HTML, display\n",
"display(HTML(full_html))\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 561
},
"id": "wUQ0OKCD1FC-",
"outputId": "78ccc1b7-0d85-4210-9e2c-83672b8a348a"
},
"execution_count": 71,
"outputs": [
{
"output_type": "error",
"ename": "KeyError",
"evalue": "'Paintings'",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m/usr/local/lib/python3.11/dist-packages/pandas/core/indexes/base.py\u001b[0m in \u001b[0;36mget_loc\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m 3804\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 3805\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcasted_key\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3806\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mKeyError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32mindex.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[0;34m()\u001b[0m\n",
"\u001b[0;32mindex.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[0;34m()\u001b[0m\n",
"\u001b[0;32mpandas/_libs/hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[0;34m()\u001b[0m\n",
"\u001b[0;32mpandas/_libs/hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[0;34m()\u001b[0m\n",
"\u001b[0;31mKeyError\u001b[0m: 'Paintings'",
"\nThe above exception was the direct cause of the following exception:\n",
"\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-71-bc00b1e70bb2>\u001b[0m in \u001b[0;36m<cell line: 0>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0mmax_width\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m300\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0mmin_width\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m120\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 4\u001b[0;31m \u001b[0mdf\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"scale\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdf\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"Paintings\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0mdf\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"Paintings\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmax\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 5\u001b[0m \u001b[0mdf\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"box_width\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mdf\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"scale\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0mmax_width\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclip\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlower\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mmin_width\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mastype\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mint\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.11/dist-packages/pandas/core/frame.py\u001b[0m in \u001b[0;36m__getitem__\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m 4100\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnlevels\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4101\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_getitem_multilevel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 4102\u001b[0;31m \u001b[0mindexer\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4103\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mis_integer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mindexer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4104\u001b[0m \u001b[0mindexer\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mindexer\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.11/dist-packages/pandas/core/indexes/base.py\u001b[0m in \u001b[0;36mget_loc\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m 3810\u001b[0m ):\n\u001b[1;32m 3811\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mInvalidIndexError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 3812\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3813\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mTypeError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3814\u001b[0m \u001b[0;31m# If we have a listlike key, _check_indexing_error will raise\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mKeyError\u001b[0m: 'Paintings'"
]
}
]
},
{
"cell_type": "code",
"source": [
"# Re-import CSV and calculate box widths for proportional layout\n",
"df2 = pd.read_csv(\"/content/painters_top_50d.csv\")"
],
"metadata": {
"id": "DvFF3Hv7l67c"
},
"execution_count": 3,
"outputs": []
},
{
"cell_type": "code",
"source": [
"df2"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 1000
},
"id": "RwFVw2mMmxoy",
"outputId": "920c292a-686e-4b65-bdd9-d9239465d6fd"
},
"execution_count": 72,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" objectid accessioned accessionnum locationid \\\n",
"0 0 1 1937.1.2.c NaN \n",
"1 1 1 1937.1.3 NaN \n",
"2 4 1 1937.1.4.c 8198.0 \n",
"3 17 1 1937.1.15 8207.0 \n",
"4 18 1 1937.1.16 8207.0 \n",
"... ... ... ... ... \n",
"143387 221200 1 2020.11.1 8459.0 \n",
"143388 221599 1 2020.15.1 8712.0 \n",
"143389 222287 1 2020.16.1 8456.0 \n",
"143391 222552 1 2020.26.1 8459.0 \n",
"143397 224919 1 2022.38.1 8355.0 \n",
"\n",
" title \\\n",
"0 Saint James Major \n",
"1 Saint Paul and a Group of Worshippers \n",
"2 Saint Bernard and Saint Catherine of Alexandria with the Virgin of the Annunciation [right panel] \n",
"3 Matteo Olivieri (?) \n",
"4 The Annunciation \n",
"... ... \n",
"143387 Merry Company on a Terrace \n",
"143388 The Forum at Pompeii \n",
"143389 Still Life with a Hanging Bunch of Grapes, Two Medlars, and a Butterfly \n",
"143391 Wooded Landscape with Travelers \n",
"143397 Lucia Bonasoni Garzoni \n",
"\n",
" displaydate beginyear endyear visualbrowsertimespan \\\n",
"0 c. 1310 1310.0 1310.0 1300 to 1400 \n",
"1 1333 1333.0 1333.0 1300 to 1400 \n",
"2 shortly before 1387 1387.0 1387.0 1300 to 1400 \n",
"3 1430s 1430.0 1440.0 1401 to 1500 \n",
"4 c. 1423/1424 1383.0 1435.0 1300 to 1400 \n",
"... ... ... ... ... \n",
"143387 1625 1625.0 1625.0 1601 to 1650 \n",
"143388 1819 1819.0 1819.0 1801 to 1825 \n",
"143389 1687 1687.0 1687.0 1651 to 1700 \n",
"143391 1610 1610.0 1610.0 1601 to 1650 \n",
"143397 c. 1590 1590.0 1590.0 1551 to 1600 \n",
"\n",
" medium ... parentid \\\n",
"0 tempera on panel ... 34.0 \n",
"1 tempera on panel ... NaN \n",
"2 tempera on poplar panel ... 206122.0 \n",
"3 tempera (and oil?) on panel transferred to canvas ... NaN \n",
"4 tempera (and possibly oil glazes) on panel ... NaN \n",
"... ... ... ... \n",
"143387 oil on panel ... NaN \n",
"143388 oil on paper ... NaN \n",
"143389 oil on canvas ... NaN \n",
"143391 oil on panel ... NaN \n",
"143397 oil on canvas\\r\\n ... NaN \n",
"\n",
" isvirtual departmentabbr portfolio series volume watermarks \\\n",
"0 0 CIS-R NaN NaN NaN NaN \n",
"1 0 CIS-R NaN NaN NaN NaN \n",
"2 0 CIS-R NaN NaN NaN NaN \n",
"3 0 CIS-R NaN NaN NaN NaN \n",
"4 0 CIS-R NaN NaN NaN NaN \n",
"... ... ... ... ... ... ... \n",
"143387 0 CNE-B NaN NaN NaN NaN \n",
"143388 0 CF NaN NaN NaN NaN \n",
"143389 0 CNE-B NaN NaN NaN NaN \n",
"143391 0 CNE-B NaN NaN NaN NaN \n",
"143397 0 CIS-R NaN NaN NaN NaN \n",
"\n",
" lastdetectedmodification wikidataid \\\n",
"0 2023-05-09 17:01:03.48-04 Q20172973 \n",
"1 2024-02-12 16:33:23.167-05 Q20173083 \n",
"2 2024-03-08 14:32:09.57-05 Q20173299 \n",
"3 2024-02-02 22:01:49.753-05 Q20173485 \n",
"4 2024-01-26 22:01:48.797-05 Q3618180 \n",
"... ... ... \n",
"143387 2023-01-18 22:01:40.62-05 Q108686501 \n",
"143388 2024-06-13 22:01:59.62-04 Q108686598 \n",
"143389 2023-01-18 22:01:40.62-05 Q108686549 \n",
"143391 2023-04-13 22:01:31.96-04 Q108686471 \n",
"143397 2023-10-25 22:01:44.39-04 NaN \n",
"\n",
" customprinturl \n",
"0 NaN \n",
"1 NaN \n",
"2 NaN \n",
"3 NaN \n",
"4 NaN \n",
"... ... \n",
"143387 https://customprints.nga.gov/detail/511202/hals-merry-company-on-a-terrace-1625?lid=124135 \n",
"143388 https://customprints.nga.gov/detail/511208/michallon-the-forum-at-pomeii-1819?lid=124135 \n",
"143389 https://customprints.nga.gov/detail/511197/coorte-still-life-with-a-hanging-bunch-of-grapes-1687?lid=124135 \n",
"143391 https://customprints.nga.gov/detail/511195/brueghel-the-elder-wooded-landscape-with-travelers-1610?lid=124135 \n",
"143397 https://customprints.nga.gov/detail/511200/fontana-lucia-bonasoni-garzoni-c.-1590?lid=124135 \n",
"\n",
"[4379 rows x 30 columns]"
],
"text/html": [
"\n",
" <div id=\"df-c2241245-682e-4d08-851e-9599b8305581\" class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>objectid</th>\n",
" <th>accessioned</th>\n",
" <th>accessionnum</th>\n",
" <th>locationid</th>\n",
" <th>title</th>\n",
" <th>displaydate</th>\n",
" <th>beginyear</th>\n",
" <th>endyear</th>\n",
" <th>visualbrowsertimespan</th>\n",
" <th>medium</th>\n",
" <th>...</th>\n",
" <th>parentid</th>\n",
" <th>isvirtual</th>\n",
" <th>departmentabbr</th>\n",
" <th>portfolio</th>\n",
" <th>series</th>\n",
" <th>volume</th>\n",
" <th>watermarks</th>\n",
" <th>lastdetectedmodification</th>\n",
" <th>wikidataid</th>\n",
" <th>customprinturl</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1937.1.2.c</td>\n",
" <td>NaN</td>\n",
" <td>Saint James Major</td>\n",
" <td>c. 1310</td>\n",
" <td>1310.0</td>\n",
" <td>1310.0</td>\n",
" <td>1300 to 1400</td>\n",
" <td>tempera on panel</td>\n",
" <td>...</td>\n",
" <td>34.0</td>\n",
" <td>0</td>\n",
" <td>CIS-R</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>2023-05-09 17:01:03.48-04</td>\n",
" <td>Q20172973</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1937.1.3</td>\n",
" <td>NaN</td>\n",
" <td>Saint Paul and a Group of Worshippers</td>\n",
" <td>1333</td>\n",
" <td>1333.0</td>\n",
" <td>1333.0</td>\n",
" <td>1300 to 1400</td>\n",
" <td>tempera on panel</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>CIS-R</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>2024-02-12 16:33:23.167-05</td>\n",
" <td>Q20173083</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>4</td>\n",
" <td>1</td>\n",
" <td>1937.1.4.c</td>\n",
" <td>8198.0</td>\n",
" <td>Saint Bernard and Saint Catherine of Alexandria with the Virgin of the Annunciation [right panel]</td>\n",
" <td>shortly before 1387</td>\n",
" <td>1387.0</td>\n",
" <td>1387.0</td>\n",
" <td>1300 to 1400</td>\n",
" <td>tempera on poplar panel</td>\n",
" <td>...</td>\n",
" <td>206122.0</td>\n",
" <td>0</td>\n",
" <td>CIS-R</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>2024-03-08 14:32:09.57-05</td>\n",
" <td>Q20173299</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>17</td>\n",
" <td>1</td>\n",
" <td>1937.1.15</td>\n",
" <td>8207.0</td>\n",
" <td>Matteo Olivieri (?)</td>\n",
" <td>1430s</td>\n",
" <td>1430.0</td>\n",
" <td>1440.0</td>\n",
" <td>1401 to 1500</td>\n",
" <td>tempera (and oil?) on panel transferred to canvas</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>CIS-R</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>2024-02-02 22:01:49.753-05</td>\n",
" <td>Q20173485</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>18</td>\n",
" <td>1</td>\n",
" <td>1937.1.16</td>\n",
" <td>8207.0</td>\n",
" <td>The Annunciation</td>\n",
" <td>c. 1423/1424</td>\n",
" <td>1383.0</td>\n",
" <td>1435.0</td>\n",
" <td>1300 to 1400</td>\n",
" <td>tempera (and possibly oil glazes) on panel</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>CIS-R</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>2024-01-26 22:01:48.797-05</td>\n",
" <td>Q3618180</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>143387</th>\n",
" <td>221200</td>\n",
" <td>1</td>\n",
" <td>2020.11.1</td>\n",
" <td>8459.0</td>\n",
" <td>Merry Company on a Terrace</td>\n",
" <td>1625</td>\n",
" <td>1625.0</td>\n",
" <td>1625.0</td>\n",
" <td>1601 to 1650</td>\n",
" <td>oil on panel</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>CNE-B</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>2023-01-18 22:01:40.62-05</td>\n",
" <td>Q108686501</td>\n",
" <td>https://customprints.nga.gov/detail/511202/hals-merry-company-on-a-terrace-1625?lid=124135</td>\n",
" </tr>\n",
" <tr>\n",
" <th>143388</th>\n",
" <td>221599</td>\n",
" <td>1</td>\n",
" <td>2020.15.1</td>\n",
" <td>8712.0</td>\n",
" <td>The Forum at Pompeii</td>\n",
" <td>1819</td>\n",
" <td>1819.0</td>\n",
" <td>1819.0</td>\n",
" <td>1801 to 1825</td>\n",
" <td>oil on paper</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>CF</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>2024-06-13 22:01:59.62-04</td>\n",
" <td>Q108686598</td>\n",
" <td>https://customprints.nga.gov/detail/511208/michallon-the-forum-at-pomeii-1819?lid=124135</td>\n",
" </tr>\n",
" <tr>\n",
" <th>143389</th>\n",
" <td>222287</td>\n",
" <td>1</td>\n",
" <td>2020.16.1</td>\n",
" <td>8456.0</td>\n",
" <td>Still Life with a Hanging Bunch of Grapes, Two Medlars, and a Butterfly</td>\n",
" <td>1687</td>\n",
" <td>1687.0</td>\n",
" <td>1687.0</td>\n",
" <td>1651 to 1700</td>\n",
" <td>oil on canvas</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>CNE-B</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>2023-01-18 22:01:40.62-05</td>\n",
" <td>Q108686549</td>\n",
" <td>https://customprints.nga.gov/detail/511197/coorte-still-life-with-a-hanging-bunch-of-grapes-1687?lid=124135</td>\n",
" </tr>\n",
" <tr>\n",
" <th>143391</th>\n",
" <td>222552</td>\n",
" <td>1</td>\n",
" <td>2020.26.1</td>\n",
" <td>8459.0</td>\n",
" <td>Wooded Landscape with Travelers</td>\n",
" <td>1610</td>\n",
" <td>1610.0</td>\n",
" <td>1610.0</td>\n",
" <td>1601 to 1650</td>\n",
" <td>oil on panel</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>CNE-B</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>2023-04-13 22:01:31.96-04</td>\n",
" <td>Q108686471</td>\n",
" <td>https://customprints.nga.gov/detail/511195/brueghel-the-elder-wooded-landscape-with-travelers-1610?lid=124135</td>\n",
" </tr>\n",
" <tr>\n",
" <th>143397</th>\n",
" <td>224919</td>\n",
" <td>1</td>\n",
" <td>2022.38.1</td>\n",
" <td>8355.0</td>\n",
" <td>Lucia Bonasoni Garzoni</td>\n",
" <td>c. 1590</td>\n",
" <td>1590.0</td>\n",
" <td>1590.0</td>\n",
" <td>1551 to 1600</td>\n",
" <td>oil on canvas\\r\\n</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>CIS-R</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>2023-10-25 22:01:44.39-04</td>\n",
" <td>NaN</td>\n",
" <td>https://customprints.nga.gov/detail/511200/fontana-lucia-bonasoni-garzoni-c.-1590?lid=124135</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>4379 rows × 30 columns</p>\n",
"</div>\n",
" <div class=\"colab-df-buttons\">\n",
"\n",
" <div class=\"colab-df-container\">\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-c2241245-682e-4d08-851e-9599b8305581')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
" </svg>\n",
" </button>\n",
"\n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" .colab-df-buttons div {\n",
" margin-bottom: 4px;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-c2241245-682e-4d08-851e-9599b8305581 button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-c2241245-682e-4d08-851e-9599b8305581');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
"\n",
"\n",
" <div id=\"df-ee7e5e49-8a6d-4c63-8bf0-f81d2cc891a0\">\n",
" <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-ee7e5e49-8a6d-4c63-8bf0-f81d2cc891a0')\"\n",
" title=\"Suggest charts\"\n",
" style=\"display:none;\">\n",
"\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <g>\n",
" <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
" </g>\n",
"</svg>\n",
" </button>\n",
"\n",
"<style>\n",
" .colab-df-quickchart {\n",
" --bg-color: #E8F0FE;\n",
" --fill-color: #1967D2;\n",
" --hover-bg-color: #E2EBFA;\n",
" --hover-fill-color: #174EA6;\n",
" --disabled-fill-color: #AAA;\n",
" --disabled-bg-color: #DDD;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-quickchart {\n",
" --bg-color: #3B4455;\n",
" --fill-color: #D2E3FC;\n",
" --hover-bg-color: #434B5C;\n",
" --hover-fill-color: #FFFFFF;\n",
" --disabled-bg-color: #3B4455;\n",
" --disabled-fill-color: #666;\n",
" }\n",
"\n",
" .colab-df-quickchart {\n",
" background-color: var(--bg-color);\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: var(--fill-color);\n",
" height: 32px;\n",
" padding: 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-quickchart:hover {\n",
" background-color: var(--hover-bg-color);\n",
" box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: var(--button-hover-fill-color);\n",
" }\n",
"\n",
" .colab-df-quickchart-complete:disabled,\n",
" .colab-df-quickchart-complete:disabled:hover {\n",
" background-color: var(--disabled-bg-color);\n",
" fill: var(--disabled-fill-color);\n",
" box-shadow: none;\n",
" }\n",
"\n",
" .colab-df-spinner {\n",
" border: 2px solid var(--fill-color);\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" animation:\n",
" spin 1s steps(1) infinite;\n",
" }\n",
"\n",
" @keyframes spin {\n",
" 0% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" border-left-color: var(--fill-color);\n",
" }\n",
" 20% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 30% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 40% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 60% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 80% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" 90% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" }\n",
"</style>\n",
"\n",
" <script>\n",
" async function quickchart(key) {\n",
" const quickchartButtonEl =\n",
" document.querySelector('#' + key + ' button');\n",
" quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n",
" quickchartButtonEl.classList.add('colab-df-spinner');\n",
" try {\n",
" const charts = await google.colab.kernel.invokeFunction(\n",
" 'suggestCharts', [key], {});\n",
" } catch (error) {\n",
" console.error('Error during call to suggestCharts:', error);\n",
" }\n",
" quickchartButtonEl.classList.remove('colab-df-spinner');\n",
" quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
" }\n",
" (() => {\n",
" let quickchartButtonEl =\n",
" document.querySelector('#df-ee7e5e49-8a6d-4c63-8bf0-f81d2cc891a0 button');\n",
" quickchartButtonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
" })();\n",
" </script>\n",
" </div>\n",
"\n",
" <div id=\"id_ffaceb76-73e2-4d50-a077-ac897a5c0ef7\">\n",
" <style>\n",
" .colab-df-generate {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-generate:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-generate {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-generate:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
" <button class=\"colab-df-generate\" onclick=\"generateWithVariable('df2')\"\n",
" title=\"Generate code using this dataframe.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M7,19H8.4L18.45,9,17,7.55,7,17.6ZM5,21V16.75L18.45,3.32a2,2,0,0,1,2.83,0l1.4,1.43a1.91,1.91,0,0,1,.58,1.4,1.91,1.91,0,0,1-.58,1.4L9.25,21ZM18.45,9,17,7.55Zm-12,3A5.31,5.31,0,0,0,4.9,8.1,5.31,5.31,0,0,0,1,6.5,5.31,5.31,0,0,0,4.9,4.9,5.31,5.31,0,0,0,6.5,1,5.31,5.31,0,0,0,8.1,4.9,5.31,5.31,0,0,0,12,6.5,5.46,5.46,0,0,0,6.5,12Z\"/>\n",
" </svg>\n",
" </button>\n",
" <script>\n",
" (() => {\n",
" const buttonEl =\n",
" document.querySelector('#id_ffaceb76-73e2-4d50-a077-ac897a5c0ef7 button.colab-df-generate');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" buttonEl.onclick = () => {\n",
" google.colab.notebook.generateWithVariable('df2');\n",
" }\n",
" })();\n",
" </script>\n",
" </div>\n",
"\n",
" </div>\n",
" </div>\n"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "dataframe",
"variable_name": "df2"
}
},
"metadata": {},
"execution_count": 72
}
]
},
{
"cell_type": "code",
"source": [
"# prompt: get the name of the columns in df\n",
"\n",
"df2.columns"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "2oaLJ8knmffA",
"outputId": "0e2fe75e-dc2a-482c-b678-5a2d83c7d782"
},
"execution_count": 73,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"Index(['objectid', 'accessioned', 'accessionnum', 'locationid', 'title',\n",
" 'displaydate', 'beginyear', 'endyear', 'visualbrowsertimespan',\n",
" 'medium', 'dimensions', 'inscription', 'markings',\n",
" 'attributioninverted', 'attribution', 'provenancetext', 'creditline',\n",
" 'classification', 'subclassification', 'visualbrowserclassification',\n",
" 'parentid', 'isvirtual', 'departmentabbr', 'portfolio', 'series',\n",
" 'volume', 'watermarks', 'lastdetectedmodification', 'wikidataid',\n",
" 'customprinturl'],\n",
" dtype='object')"
]
},
"metadata": {},
"execution_count": 73
}
]
},
{
"cell_type": "code",
"source": [
"# prompt: remove the column 'scale'\n",
"\n",
"# remove the 'scale' column\n",
"if 'scale' in df.columns:\n",
" df = df.drop(columns=['scale'])\n",
"\n",
"df.columns"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "vOkv4cfNmn5B",
"outputId": "c6e6179a-c724-42fe-cd83-09798bb77952"
},
"execution_count": 74,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"Index(['objectid', 'accessioned', 'accessionnum', 'locationid', 'title',\n",
" 'displaydate', 'beginyear', 'endyear', 'visualbrowsertimespan',\n",
" 'medium', 'dimensions', 'inscription', 'markings',\n",
" 'attributioninverted', 'attribution', 'provenancetext', 'creditline',\n",
" 'classification', 'subclassification', 'visualbrowserclassification',\n",
" 'parentid', 'isvirtual', 'departmentabbr', 'portfolio', 'series',\n",
" 'volume', 'watermarks', 'lastdetectedmodification', 'wikidataid',\n",
" 'customprinturl'],\n",
" dtype='object')"
]
},
"metadata": {},
"execution_count": 74
}
]
},
{
"cell_type": "code",
"source": [
"# prompt: take the first 20 rows of df\n",
"\n",
"xxx df2=df2.head(20)"
],
"metadata": {
"id": "lBHYiFXwl768"
},
"execution_count": 45,
"outputs": []
},
{
"cell_type": "code",
"source": [
"df_raw=df2"
],
"metadata": {
"id": "ggbfyfDYdo79"
},
"execution_count": 75,
"outputs": []
},
{
"cell_type": "code",
"source": [
"# Rename columns correctly\n",
"df = df_raw.rename(columns={\"Paintings\": \"Artist\", \"count\": \"Paintings\"})\n",
"\n",
"# Convert to numeric and drop missing values\n",
"df[\"Paintings\"] = pd.to_numeric(df[\"Paintings\"], errors=\"coerce\")\n",
"df = df.dropna(subset=[\"Paintings\"])\n",
"\n",
"# Recalculate sizes\n",
"max_width = 300\n",
"min_width = 120\n",
"df[\"scale\"] = df[\"Paintings\"] / df[\"Paintings\"].max()\n",
"df[\"box_width\"] = (df[\"scale\"] * max_width).clip(lower=min_width).astype(int)\n",
"\n",
"# Rebuild HTML with hover overlays\n",
"html_blocks = []\n",
"for _, row in df.iterrows():\n",
" block = f\"\"\"\n",
" <div style=\"position: relative; flex: 0 0 {row['box_width']}px; margin: 8px;\n",
" box-shadow: 0 2px 8px #aaa; overflow: hidden; border-radius: 6px;\n",
" aspect-ratio: 2 / 3;\">\n",
" <img src=\"{row['Image']}\" alt=\"{row['Title']}\"\n",
" style=\"width: 100%; height: 100%; object-fit: cover; display: block;\">\n",
" <div class=\"hover-overlay\">\n",
" <div>\n",
" <strong>{row['Artist']}</strong><br>\n",
" <em>{row['Title']} ({row['Year']})</em><br>\n",
" {int(row['Paintings'])} paintings\n",
" </div>\n",
" </div>\n",
" </div>\n",
" \"\"\"\n",
" html_blocks.append(block)\n",
"\n",
"# Final layout\n",
"full_html = f\"\"\"\n",
"<div style=\"display: flex; flex-wrap: wrap; justify-content: center;\">\n",
" {''.join(html_blocks)}\n",
"</div>\n",
"\n",
"<style>\n",
".hover-overlay {{\n",
" position: absolute;\n",
" top: 0; left: 0; right: 0; bottom: 0;\n",
" background: rgba(0, 0, 0, 0.75);\n",
" color: white;\n",
" opacity: 0;\n",
" transition: opacity 0.3s ease-in-out;\n",
" display: flex;\n",
" flex-direction: column;\n",
" justify-content: center;\n",
" align-items: center;\n",
" padding: 10px;\n",
" font-size: 0.85em;\n",
" text-align: center;\n",
"}}\n",
"div[style*=\"position: relative\"]:hover .hover-overlay {{\n",
" opacity: 1;\n",
"}}\n",
"</style>\n",
"\"\"\"\n",
"\n",
"HTML(full_html)\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 561
},
"id": "1TPR91MEfCOi",
"outputId": "0c932c85-075e-40d6-f83a-ce2b4a75f041"
},
"execution_count": 76,
"outputs": [
{
"output_type": "error",
"ename": "KeyError",
"evalue": "'Paintings'",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m/usr/local/lib/python3.11/dist-packages/pandas/core/indexes/base.py\u001b[0m in \u001b[0;36mget_loc\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m 3804\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 3805\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcasted_key\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3806\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mKeyError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32mindex.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[0;34m()\u001b[0m\n",
"\u001b[0;32mindex.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[0;34m()\u001b[0m\n",
"\u001b[0;32mpandas/_libs/hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[0;34m()\u001b[0m\n",
"\u001b[0;32mpandas/_libs/hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[0;34m()\u001b[0m\n",
"\u001b[0;31mKeyError\u001b[0m: 'Paintings'",
"\nThe above exception was the direct cause of the following exception:\n",
"\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-76-8f25e9fb6a63>\u001b[0m in \u001b[0;36m<cell line: 0>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;31m# Convert to numeric and drop missing values\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 5\u001b[0;31m \u001b[0mdf\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"Paintings\"\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpd\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mto_numeric\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdf\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"Paintings\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0merrors\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"coerce\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 6\u001b[0m \u001b[0mdf\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdropna\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msubset\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"Paintings\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.11/dist-packages/pandas/core/frame.py\u001b[0m in \u001b[0;36m__getitem__\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m 4100\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnlevels\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4101\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_getitem_multilevel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 4102\u001b[0;31m \u001b[0mindexer\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4103\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mis_integer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mindexer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4104\u001b[0m \u001b[0mindexer\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mindexer\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.11/dist-packages/pandas/core/indexes/base.py\u001b[0m in \u001b[0;36mget_loc\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m 3810\u001b[0m ):\n\u001b[1;32m 3811\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mInvalidIndexError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 3812\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3813\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mTypeError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3814\u001b[0m \u001b[0;31m# If we have a listlike key, _check_indexing_error will raise\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mKeyError\u001b[0m: 'Paintings'"
]
}
]
},
{
"cell_type": "code",
"source": [
"# Save the current HTML layout to a standalone file\n",
"output_path = \"nga_top_50_artists.html\"\n",
"with open(output_path, \"w\", encoding=\"utf-8\") as f:\n",
" f.write(full_html)\n",
"\n",
"output_path\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 35
},
"id": "SEncb9iafVqz",
"outputId": "755ed95c-f92f-448f-d2be-9abaa2bc7214"
},
"execution_count": 16,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"'nga_top_50_artists.html'"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "string"
}
},
"metadata": {},
"execution_count": 16
}
]
},
{
"cell_type": "code",
"source": [
"df_raw=df2"
],
"metadata": {
"id": "rH1yzf_cgqp2"
},
"execution_count": 77,
"outputs": []
},
{
"cell_type": "code",
"source": [],
"metadata": {
"id": "a0BW4XSAfa21"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"df2"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 1000
},
"id": "j6_gNyAMmXtX",
"outputId": "33623fe3-895a-4115-e658-7d3236b27f13"
},
"execution_count": 27,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" objectid accessioned accessionnum locationid \\\n",
"0 0 1 1937.1.2.c NaN \n",
"1 1 1 1937.1.3 NaN \n",
"2 4 1 1937.1.4.c 8198.0 \n",
"3 17 1 1937.1.15 8207.0 \n",
"4 18 1 1937.1.16 8207.0 \n",
"... ... ... ... ... \n",
"143387 221200 1 2020.11.1 8459.0 \n",
"143388 221599 1 2020.15.1 8712.0 \n",
"143389 222287 1 2020.16.1 8456.0 \n",
"143391 222552 1 2020.26.1 8459.0 \n",
"143397 224919 1 2022.38.1 8355.0 \n",
"\n",
" title \\\n",
"0 Saint James Major \n",
"1 Saint Paul and a Group of Worshippers \n",
"2 Saint Bernard and Saint Catherine of Alexandria with the Virgin of the Annunciation [right panel] \n",
"3 Matteo Olivieri (?) \n",
"4 The Annunciation \n",
"... ... \n",
"143387 Merry Company on a Terrace \n",
"143388 The Forum at Pompeii \n",
"143389 Still Life with a Hanging Bunch of Grapes, Two Medlars, and a Butterfly \n",
"143391 Wooded Landscape with Travelers \n",
"143397 Lucia Bonasoni Garzoni \n",
"\n",
" displaydate beginyear endyear visualbrowsertimespan \\\n",
"0 c. 1310 1310.0 1310.0 1300 to 1400 \n",
"1 1333 1333.0 1333.0 1300 to 1400 \n",
"2 shortly before 1387 1387.0 1387.0 1300 to 1400 \n",
"3 1430s 1430.0 1440.0 1401 to 1500 \n",
"4 c. 1423/1424 1383.0 1435.0 1300 to 1400 \n",
"... ... ... ... ... \n",
"143387 1625 1625.0 1625.0 1601 to 1650 \n",
"143388 1819 1819.0 1819.0 1801 to 1825 \n",
"143389 1687 1687.0 1687.0 1651 to 1700 \n",
"143391 1610 1610.0 1610.0 1601 to 1650 \n",
"143397 c. 1590 1590.0 1590.0 1551 to 1600 \n",
"\n",
" medium ... parentid \\\n",
"0 tempera on panel ... 34.0 \n",
"1 tempera on panel ... NaN \n",
"2 tempera on poplar panel ... 206122.0 \n",
"3 tempera (and oil?) on panel transferred to canvas ... NaN \n",
"4 tempera (and possibly oil glazes) on panel ... NaN \n",
"... ... ... ... \n",
"143387 oil on panel ... NaN \n",
"143388 oil on paper ... NaN \n",
"143389 oil on canvas ... NaN \n",
"143391 oil on panel ... NaN \n",
"143397 oil on canvas\\r\\n ... NaN \n",
"\n",
" isvirtual departmentabbr portfolio series volume watermarks \\\n",
"0 0 CIS-R NaN NaN NaN NaN \n",
"1 0 CIS-R NaN NaN NaN NaN \n",
"2 0 CIS-R NaN NaN NaN NaN \n",
"3 0 CIS-R NaN NaN NaN NaN \n",
"4 0 CIS-R NaN NaN NaN NaN \n",
"... ... ... ... ... ... ... \n",
"143387 0 CNE-B NaN NaN NaN NaN \n",
"143388 0 CF NaN NaN NaN NaN \n",
"143389 0 CNE-B NaN NaN NaN NaN \n",
"143391 0 CNE-B NaN NaN NaN NaN \n",
"143397 0 CIS-R NaN NaN NaN NaN \n",
"\n",
" lastdetectedmodification wikidataid \\\n",
"0 2023-05-09 17:01:03.48-04 Q20172973 \n",
"1 2024-02-12 16:33:23.167-05 Q20173083 \n",
"2 2024-03-08 14:32:09.57-05 Q20173299 \n",
"3 2024-02-02 22:01:49.753-05 Q20173485 \n",
"4 2024-01-26 22:01:48.797-05 Q3618180 \n",
"... ... ... \n",
"143387 2023-01-18 22:01:40.62-05 Q108686501 \n",
"143388 2024-06-13 22:01:59.62-04 Q108686598 \n",
"143389 2023-01-18 22:01:40.62-05 Q108686549 \n",
"143391 2023-04-13 22:01:31.96-04 Q108686471 \n",
"143397 2023-10-25 22:01:44.39-04 NaN \n",
"\n",
" customprinturl \n",
"0 NaN \n",
"1 NaN \n",
"2 NaN \n",
"3 NaN \n",
"4 NaN \n",
"... ... \n",
"143387 https://customprints.nga.gov/detail/511202/hals-merry-company-on-a-terrace-1625?lid=124135 \n",
"143388 https://customprints.nga.gov/detail/511208/michallon-the-forum-at-pomeii-1819?lid=124135 \n",
"143389 https://customprints.nga.gov/detail/511197/coorte-still-life-with-a-hanging-bunch-of-grapes-1687?lid=124135 \n",
"143391 https://customprints.nga.gov/detail/511195/brueghel-the-elder-wooded-landscape-with-travelers-1610?lid=124135 \n",
"143397 https://customprints.nga.gov/detail/511200/fontana-lucia-bonasoni-garzoni-c.-1590?lid=124135 \n",
"\n",
"[4379 rows x 30 columns]"
],
"text/html": [
"\n",
" <div id=\"df-3e7ee3ff-a3e5-4e14-8638-5187675161ee\" class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>objectid</th>\n",
" <th>accessioned</th>\n",
" <th>accessionnum</th>\n",
" <th>locationid</th>\n",
" <th>title</th>\n",
" <th>displaydate</th>\n",
" <th>beginyear</th>\n",
" <th>endyear</th>\n",
" <th>visualbrowsertimespan</th>\n",
" <th>medium</th>\n",
" <th>...</th>\n",
" <th>parentid</th>\n",
" <th>isvirtual</th>\n",
" <th>departmentabbr</th>\n",
" <th>portfolio</th>\n",
" <th>series</th>\n",
" <th>volume</th>\n",
" <th>watermarks</th>\n",
" <th>lastdetectedmodification</th>\n",
" <th>wikidataid</th>\n",
" <th>customprinturl</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1937.1.2.c</td>\n",
" <td>NaN</td>\n",
" <td>Saint James Major</td>\n",
" <td>c. 1310</td>\n",
" <td>1310.0</td>\n",
" <td>1310.0</td>\n",
" <td>1300 to 1400</td>\n",
" <td>tempera on panel</td>\n",
" <td>...</td>\n",
" <td>34.0</td>\n",
" <td>0</td>\n",
" <td>CIS-R</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>2023-05-09 17:01:03.48-04</td>\n",
" <td>Q20172973</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1937.1.3</td>\n",
" <td>NaN</td>\n",
" <td>Saint Paul and a Group of Worshippers</td>\n",
" <td>1333</td>\n",
" <td>1333.0</td>\n",
" <td>1333.0</td>\n",
" <td>1300 to 1400</td>\n",
" <td>tempera on panel</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>CIS-R</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>2024-02-12 16:33:23.167-05</td>\n",
" <td>Q20173083</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>4</td>\n",
" <td>1</td>\n",
" <td>1937.1.4.c</td>\n",
" <td>8198.0</td>\n",
" <td>Saint Bernard and Saint Catherine of Alexandria with the Virgin of the Annunciation [right panel]</td>\n",
" <td>shortly before 1387</td>\n",
" <td>1387.0</td>\n",
" <td>1387.0</td>\n",
" <td>1300 to 1400</td>\n",
" <td>tempera on poplar panel</td>\n",
" <td>...</td>\n",
" <td>206122.0</td>\n",
" <td>0</td>\n",
" <td>CIS-R</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>2024-03-08 14:32:09.57-05</td>\n",
" <td>Q20173299</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>17</td>\n",
" <td>1</td>\n",
" <td>1937.1.15</td>\n",
" <td>8207.0</td>\n",
" <td>Matteo Olivieri (?)</td>\n",
" <td>1430s</td>\n",
" <td>1430.0</td>\n",
" <td>1440.0</td>\n",
" <td>1401 to 1500</td>\n",
" <td>tempera (and oil?) on panel transferred to canvas</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>CIS-R</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>2024-02-02 22:01:49.753-05</td>\n",
" <td>Q20173485</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>18</td>\n",
" <td>1</td>\n",
" <td>1937.1.16</td>\n",
" <td>8207.0</td>\n",
" <td>The Annunciation</td>\n",
" <td>c. 1423/1424</td>\n",
" <td>1383.0</td>\n",
" <td>1435.0</td>\n",
" <td>1300 to 1400</td>\n",
" <td>tempera (and possibly oil glazes) on panel</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>CIS-R</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>2024-01-26 22:01:48.797-05</td>\n",
" <td>Q3618180</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>143387</th>\n",
" <td>221200</td>\n",
" <td>1</td>\n",
" <td>2020.11.1</td>\n",
" <td>8459.0</td>\n",
" <td>Merry Company on a Terrace</td>\n",
" <td>1625</td>\n",
" <td>1625.0</td>\n",
" <td>1625.0</td>\n",
" <td>1601 to 1650</td>\n",
" <td>oil on panel</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>CNE-B</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>2023-01-18 22:01:40.62-05</td>\n",
" <td>Q108686501</td>\n",
" <td>https://customprints.nga.gov/detail/511202/hals-merry-company-on-a-terrace-1625?lid=124135</td>\n",
" </tr>\n",
" <tr>\n",
" <th>143388</th>\n",
" <td>221599</td>\n",
" <td>1</td>\n",
" <td>2020.15.1</td>\n",
" <td>8712.0</td>\n",
" <td>The Forum at Pompeii</td>\n",
" <td>1819</td>\n",
" <td>1819.0</td>\n",
" <td>1819.0</td>\n",
" <td>1801 to 1825</td>\n",
" <td>oil on paper</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>CF</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>2024-06-13 22:01:59.62-04</td>\n",
" <td>Q108686598</td>\n",
" <td>https://customprints.nga.gov/detail/511208/michallon-the-forum-at-pomeii-1819?lid=124135</td>\n",
" </tr>\n",
" <tr>\n",
" <th>143389</th>\n",
" <td>222287</td>\n",
" <td>1</td>\n",
" <td>2020.16.1</td>\n",
" <td>8456.0</td>\n",
" <td>Still Life with a Hanging Bunch of Grapes, Two Medlars, and a Butterfly</td>\n",
" <td>1687</td>\n",
" <td>1687.0</td>\n",
" <td>1687.0</td>\n",
" <td>1651 to 1700</td>\n",
" <td>oil on canvas</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>CNE-B</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>2023-01-18 22:01:40.62-05</td>\n",
" <td>Q108686549</td>\n",
" <td>https://customprints.nga.gov/detail/511197/coorte-still-life-with-a-hanging-bunch-of-grapes-1687?lid=124135</td>\n",
" </tr>\n",
" <tr>\n",
" <th>143391</th>\n",
" <td>222552</td>\n",
" <td>1</td>\n",
" <td>2020.26.1</td>\n",
" <td>8459.0</td>\n",
" <td>Wooded Landscape with Travelers</td>\n",
" <td>1610</td>\n",
" <td>1610.0</td>\n",
" <td>1610.0</td>\n",
" <td>1601 to 1650</td>\n",
" <td>oil on panel</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>CNE-B</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>2023-04-13 22:01:31.96-04</td>\n",
" <td>Q108686471</td>\n",
" <td>https://customprints.nga.gov/detail/511195/brueghel-the-elder-wooded-landscape-with-travelers-1610?lid=124135</td>\n",
" </tr>\n",
" <tr>\n",
" <th>143397</th>\n",
" <td>224919</td>\n",
" <td>1</td>\n",
" <td>2022.38.1</td>\n",
" <td>8355.0</td>\n",
" <td>Lucia Bonasoni Garzoni</td>\n",
" <td>c. 1590</td>\n",
" <td>1590.0</td>\n",
" <td>1590.0</td>\n",
" <td>1551 to 1600</td>\n",
" <td>oil on canvas\\r\\n</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>CIS-R</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>2023-10-25 22:01:44.39-04</td>\n",
" <td>NaN</td>\n",
" <td>https://customprints.nga.gov/detail/511200/fontana-lucia-bonasoni-garzoni-c.-1590?lid=124135</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>4379 rows × 30 columns</p>\n",
"</div>\n",
" <div class=\"colab-df-buttons\">\n",
"\n",
" <div class=\"colab-df-container\">\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-3e7ee3ff-a3e5-4e14-8638-5187675161ee')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
" </svg>\n",
" </button>\n",
"\n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" .colab-df-buttons div {\n",
" margin-bottom: 4px;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-3e7ee3ff-a3e5-4e14-8638-5187675161ee button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-3e7ee3ff-a3e5-4e14-8638-5187675161ee');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
"\n",
"\n",
" <div id=\"df-ed5ef262-3c07-4d81-8610-dd1793d58ed8\">\n",
" <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-ed5ef262-3c07-4d81-8610-dd1793d58ed8')\"\n",
" title=\"Suggest charts\"\n",
" style=\"display:none;\">\n",
"\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <g>\n",
" <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
" </g>\n",
"</svg>\n",
" </button>\n",
"\n",
"<style>\n",
" .colab-df-quickchart {\n",
" --bg-color: #E8F0FE;\n",
" --fill-color: #1967D2;\n",
" --hover-bg-color: #E2EBFA;\n",
" --hover-fill-color: #174EA6;\n",
" --disabled-fill-color: #AAA;\n",
" --disabled-bg-color: #DDD;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-quickchart {\n",
" --bg-color: #3B4455;\n",
" --fill-color: #D2E3FC;\n",
" --hover-bg-color: #434B5C;\n",
" --hover-fill-color: #FFFFFF;\n",
" --disabled-bg-color: #3B4455;\n",
" --disabled-fill-color: #666;\n",
" }\n",
"\n",
" .colab-df-quickchart {\n",
" background-color: var(--bg-color);\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: var(--fill-color);\n",
" height: 32px;\n",
" padding: 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-quickchart:hover {\n",
" background-color: var(--hover-bg-color);\n",
" box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: var(--button-hover-fill-color);\n",
" }\n",
"\n",
" .colab-df-quickchart-complete:disabled,\n",
" .colab-df-quickchart-complete:disabled:hover {\n",
" background-color: var(--disabled-bg-color);\n",
" fill: var(--disabled-fill-color);\n",
" box-shadow: none;\n",
" }\n",
"\n",
" .colab-df-spinner {\n",
" border: 2px solid var(--fill-color);\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" animation:\n",
" spin 1s steps(1) infinite;\n",
" }\n",
"\n",
" @keyframes spin {\n",
" 0% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" border-left-color: var(--fill-color);\n",
" }\n",
" 20% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 30% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 40% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 60% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 80% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" 90% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" }\n",
"</style>\n",
"\n",
" <script>\n",
" async function quickchart(key) {\n",
" const quickchartButtonEl =\n",
" document.querySelector('#' + key + ' button');\n",
" quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n",
" quickchartButtonEl.classList.add('colab-df-spinner');\n",
" try {\n",
" const charts = await google.colab.kernel.invokeFunction(\n",
" 'suggestCharts', [key], {});\n",
" } catch (error) {\n",
" console.error('Error during call to suggestCharts:', error);\n",
" }\n",
" quickchartButtonEl.classList.remove('colab-df-spinner');\n",
" quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
" }\n",
" (() => {\n",
" let quickchartButtonEl =\n",
" document.querySelector('#df-ed5ef262-3c07-4d81-8610-dd1793d58ed8 button');\n",
" quickchartButtonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
" })();\n",
" </script>\n",
" </div>\n",
"\n",
" <div id=\"id_4d581ffd-dfce-4a17-9cfb-3e307563f8e7\">\n",
" <style>\n",
" .colab-df-generate {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-generate:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-generate {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-generate:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
" <button class=\"colab-df-generate\" onclick=\"generateWithVariable('df2')\"\n",
" title=\"Generate code using this dataframe.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <path d=\"M7,19H8.4L18.45,9,17,7.55,7,17.6ZM5,21V16.75L18.45,3.32a2,2,0,0,1,2.83,0l1.4,1.43a1.91,1.91,0,0,1,.58,1.4,1.91,1.91,0,0,1-.58,1.4L9.25,21ZM18.45,9,17,7.55Zm-12,3A5.31,5.31,0,0,0,4.9,8.1,5.31,5.31,0,0,0,1,6.5,5.31,5.31,0,0,0,4.9,4.9,5.31,5.31,0,0,0,6.5,1,5.31,5.31,0,0,0,8.1,4.9,5.31,5.31,0,0,0,12,6.5,5.46,5.46,0,0,0,6.5,12Z\"/>\n",
" </svg>\n",
" </button>\n",
" <script>\n",
" (() => {\n",
" const buttonEl =\n",
" document.querySelector('#id_4d581ffd-dfce-4a17-9cfb-3e307563f8e7 button.colab-df-generate');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" buttonEl.onclick = () => {\n",
" google.colab.notebook.generateWithVariable('df2');\n",
" }\n",
" })();\n",
" </script>\n",
" </div>\n",
"\n",
" </div>\n",
" </div>\n"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "dataframe",
"variable_name": "df2"
}
},
"metadata": {},
"execution_count": 27
}
]
},
{
"cell_type": "code",
"source": [
"# Create updated HTML for 5 artists with a hover overlay that works well in full-image tiles\n",
"\n",
"html_blocks = []\n",
"\n",
"for _, row in df.iterrows():\n",
" block = f\"\"\"\n",
" <div style=\"position: relative; flex: 0 0 {row['box_width']}px; margin: 8px;\n",
" box-shadow: 0 2px 8px #aaa; overflow: hidden; border-radius: 6px;\n",
" aspect-ratio: 2 / 3;\">\n",
" <img src=\"{row['Image']}\" alt=\"{row['Title']}\"\n",
" style=\"width: 100%; height: 100%; object-fit: cover; display: block;\">\n",
" <div class=\"hover-overlay\">\n",
" <div>\n",
" <strong>{row['Artist']}</strong><br>\n",
" <em>{row['Title']} ({row['Year']})</em><br>\n",
" {row['Paintings']} paintings\n",
" </div>\n",
" </div>\n",
" </div>\n",
" \"\"\"\n",
" html_blocks.append(block)\n",
"\n",
"# Full HTML with CSS scoped overlay and animation\n",
"full_html = f\"\"\"\n",
"<div style=\"display: flex; flex-wrap: wrap; justify-content: center;\">\n",
" {''.join(html_blocks)}\n",
"</div>\n",
"\n",
"<style>\n",
".hover-overlay {{\n",
" position: absolute;\n",
" top: 0; left: 0; right: 0; bottom: 0;\n",
" background: rgba(0, 0, 0, 0.75);\n",
" color: white;\n",
" opacity: 0;\n",
" transition: opacity 0.3s ease-in-out;\n",
" display: flex;\n",
" flex-direction: column;\n",
" justify-content: center;\n",
" align-items: center;\n",
" padding: 10px;\n",
" font-size: 0.85em;\n",
" text-align: center;\n",
"}}\n",
"div[style*=\"position: relative\"]:hover .hover-overlay {{\n",
" opacity: 1;\n",
"}}\n",
"</style>\n",
"\"\"\"\n",
"\n",
"HTML(full_html)\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 561
},
"id": "N4dya58g2334",
"outputId": "07152eda-b3e6-4b38-d8ba-b7685dcad3d9"
},
"execution_count": 80,
"outputs": [
{
"output_type": "error",
"ename": "KeyError",
"evalue": "'box_width'",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m/usr/local/lib/python3.11/dist-packages/pandas/core/indexes/base.py\u001b[0m in \u001b[0;36mget_loc\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m 3804\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 3805\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcasted_key\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3806\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mKeyError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32mindex.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[0;34m()\u001b[0m\n",
"\u001b[0;32mindex.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[0;34m()\u001b[0m\n",
"\u001b[0;32mpandas/_libs/hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[0;34m()\u001b[0m\n",
"\u001b[0;32mpandas/_libs/hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[0;34m()\u001b[0m\n",
"\u001b[0;31mKeyError\u001b[0m: 'box_width'",
"\nThe above exception was the direct cause of the following exception:\n",
"\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-80-15941d5164ae>\u001b[0m in \u001b[0;36m<cell line: 0>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0m_\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mrow\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mdf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0miterrows\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6\u001b[0m block = f\"\"\"\n\u001b[0;32m----> 7\u001b[0;31m \u001b[0;34m<\u001b[0m\u001b[0mdiv\u001b[0m \u001b[0mstyle\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;31m\"\u001b[0m\u001b[0mposition\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mrelative\u001b[0m\u001b[0;34m;\u001b[0m \u001b[0mflex\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;36m0\u001b[0m \u001b[0;36m0\u001b[0m \u001b[0;34m{\u001b[0m\u001b[0mrow\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'box_width'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0mpx\u001b[0m\u001b[0;34m;\u001b[0m \u001b[0mmargin\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;36m8\u001b[0m\u001b[0mpx\u001b[0m\u001b[0;34m;\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 8\u001b[0m \u001b[0mbox\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0mshadow\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;36m0\u001b[0m \u001b[0;36m2\u001b[0m\u001b[0mpx\u001b[0m \u001b[0;36m8\u001b[0m\u001b[0mpx\u001b[0m \u001b[0;31m#aaa; overflow: hidden; border-radius: 6px;\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0maspect\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0mratio\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;36m2\u001b[0m \u001b[0;34m/\u001b[0m \u001b[0;36m3\u001b[0m\u001b[0;34m;\u001b[0m\u001b[0;31m\"\u001b[0m\u001b[0;34m>\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.11/dist-packages/pandas/core/series.py\u001b[0m in \u001b[0;36m__getitem__\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m 1119\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1120\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0mkey_is_scalar\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1121\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_get_value\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1122\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1123\u001b[0m \u001b[0;31m# Convert generator to list before going through hashable part\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.11/dist-packages/pandas/core/series.py\u001b[0m in \u001b[0;36m_get_value\u001b[0;34m(self, label, takeable)\u001b[0m\n\u001b[1;32m 1235\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1236\u001b[0m \u001b[0;31m# Similar to Index.get_value, but we do not fall back to positional\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1237\u001b[0;31m \u001b[0mloc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mindex\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlabel\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1238\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1239\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mis_integer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mloc\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/usr/local/lib/python3.11/dist-packages/pandas/core/indexes/base.py\u001b[0m in \u001b[0;36mget_loc\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m 3810\u001b[0m ):\n\u001b[1;32m 3811\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mInvalidIndexError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 3812\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3813\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mTypeError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3814\u001b[0m \u001b[0;31m# If we have a listlike key, _check_indexing_error will raise\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mKeyError\u001b[0m: 'box_width'"
]
}
]
},
{
"cell_type": "markdown",
"source": [
"## when got versus when painted"
],
"metadata": {
"id": "P5vCfHUFVb_l"
}
},
{
"cell_type": "code",
"source": [
"df2.head()\n",
"\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 603
},
"id": "Vrf-S40BVfNV",
"outputId": "d3f25020-dd93-4ebc-9f5c-2f39cc026574"
},
"execution_count": 81,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" objectid accessioned accessionnum locationid \\\n",
"0 0 1 1937.1.2.c NaN \n",
"1 1 1 1937.1.3 NaN \n",
"2 4 1 1937.1.4.c 8198.0 \n",
"3 17 1 1937.1.15 8207.0 \n",
"4 18 1 1937.1.16 8207.0 \n",
"\n",
" title \\\n",
"0 Saint James Major \n",
"1 Saint Paul and a Group of Worshippers \n",
"2 Saint Bernard and Saint Catherine of Alexandria with the Virgin of the Annunciation [right panel] \n",
"3 Matteo Olivieri (?) \n",
"4 The Annunciation \n",
"\n",
" displaydate beginyear endyear visualbrowsertimespan \\\n",
"0 c. 1310 1310.0 1310.0 1300 to 1400 \n",
"1 1333 1333.0 1333.0 1300 to 1400 \n",
"2 shortly before 1387 1387.0 1387.0 1300 to 1400 \n",
"3 1430s 1430.0 1440.0 1401 to 1500 \n",
"4 c. 1423/1424 1383.0 1435.0 1300 to 1400 \n",
"\n",
" medium ... parentid isvirtual \\\n",
"0 tempera on panel ... 34.0 0 \n",
"1 tempera on panel ... NaN 0 \n",
"2 tempera on poplar panel ... 206122.0 0 \n",
"3 tempera (and oil?) on panel transferred to canvas ... NaN 0 \n",
"4 tempera (and possibly oil glazes) on panel ... NaN 0 \n",
"\n",
" departmentabbr portfolio series volume watermarks \\\n",
"0 CIS-R NaN NaN NaN NaN \n",
"1 CIS-R NaN NaN NaN NaN \n",
"2 CIS-R NaN NaN NaN NaN \n",
"3 CIS-R NaN NaN NaN NaN \n",
"4 CIS-R NaN NaN NaN NaN \n",
"\n",
" lastdetectedmodification wikidataid customprinturl \n",
"0 2023-05-09 17:01:03.48-04 Q20172973 NaN \n",
"1 2024-02-12 16:33:23.167-05 Q20173083 NaN \n",
"2 2024-03-08 14:32:09.57-05 Q20173299 NaN \n",
"3 2024-02-02 22:01:49.753-05 Q20173485 NaN \n",
"4 2024-01-26 22:01:48.797-05 Q3618180 NaN \n",
"\n",
"[5 rows x 30 columns]"
],
"text/html": [
"\n",
" <div id=\"df-d3ebee1d-c67e-4374-b566-f66909b8c18c\" class=\"colab-df-container\">\n",
" <div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>objectid</th>\n",
" <th>accessioned</th>\n",
" <th>accessionnum</th>\n",
" <th>locationid</th>\n",
" <th>title</th>\n",
" <th>displaydate</th>\n",
" <th>beginyear</th>\n",
" <th>endyear</th>\n",
" <th>visualbrowsertimespan</th>\n",
" <th>medium</th>\n",
" <th>...</th>\n",
" <th>parentid</th>\n",
" <th>isvirtual</th>\n",
" <th>departmentabbr</th>\n",
" <th>portfolio</th>\n",
" <th>series</th>\n",
" <th>volume</th>\n",
" <th>watermarks</th>\n",
" <th>lastdetectedmodification</th>\n",
" <th>wikidataid</th>\n",
" <th>customprinturl</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1937.1.2.c</td>\n",
" <td>NaN</td>\n",
" <td>Saint James Major</td>\n",
" <td>c. 1310</td>\n",
" <td>1310.0</td>\n",
" <td>1310.0</td>\n",
" <td>1300 to 1400</td>\n",
" <td>tempera on panel</td>\n",
" <td>...</td>\n",
" <td>34.0</td>\n",
" <td>0</td>\n",
" <td>CIS-R</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>2023-05-09 17:01:03.48-04</td>\n",
" <td>Q20172973</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1937.1.3</td>\n",
" <td>NaN</td>\n",
" <td>Saint Paul and a Group of Worshippers</td>\n",
" <td>1333</td>\n",
" <td>1333.0</td>\n",
" <td>1333.0</td>\n",
" <td>1300 to 1400</td>\n",
" <td>tempera on panel</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>CIS-R</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>2024-02-12 16:33:23.167-05</td>\n",
" <td>Q20173083</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>4</td>\n",
" <td>1</td>\n",
" <td>1937.1.4.c</td>\n",
" <td>8198.0</td>\n",
" <td>Saint Bernard and Saint Catherine of Alexandria with the Virgin of the Annunciation [right panel]</td>\n",
" <td>shortly before 1387</td>\n",
" <td>1387.0</td>\n",
" <td>1387.0</td>\n",
" <td>1300 to 1400</td>\n",
" <td>tempera on poplar panel</td>\n",
" <td>...</td>\n",
" <td>206122.0</td>\n",
" <td>0</td>\n",
" <td>CIS-R</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>2024-03-08 14:32:09.57-05</td>\n",
" <td>Q20173299</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>17</td>\n",
" <td>1</td>\n",
" <td>1937.1.15</td>\n",
" <td>8207.0</td>\n",
" <td>Matteo Olivieri (?)</td>\n",
" <td>1430s</td>\n",
" <td>1430.0</td>\n",
" <td>1440.0</td>\n",
" <td>1401 to 1500</td>\n",
" <td>tempera (and oil?) on panel transferred to canvas</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>CIS-R</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>2024-02-02 22:01:49.753-05</td>\n",
" <td>Q20173485</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>18</td>\n",
" <td>1</td>\n",
" <td>1937.1.16</td>\n",
" <td>8207.0</td>\n",
" <td>The Annunciation</td>\n",
" <td>c. 1423/1424</td>\n",
" <td>1383.0</td>\n",
" <td>1435.0</td>\n",
" <td>1300 to 1400</td>\n",
" <td>tempera (and possibly oil glazes) on panel</td>\n",
" <td>...</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>CIS-R</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n",
" <td>2024-01-26 22:01:48.797-05</td>\n",
" <td>Q3618180</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 30 columns</p>\n",
"</div>\n",
" <div class=\"colab-df-buttons\">\n",
"\n",
" <div class=\"colab-df-container\">\n",
" <button class=\"colab-df-convert\" onclick=\"convertToInteractive('df-d3ebee1d-c67e-4374-b566-f66909b8c18c')\"\n",
" title=\"Convert this dataframe to an interactive table.\"\n",
" style=\"display:none;\">\n",
"\n",
" <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 -960 960 960\">\n",
" <path d=\"M120-120v-720h720v720H120Zm60-500h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z\"/>\n",
" </svg>\n",
" </button>\n",
"\n",
" <style>\n",
" .colab-df-container {\n",
" display:flex;\n",
" gap: 12px;\n",
" }\n",
"\n",
" .colab-df-convert {\n",
" background-color: #E8F0FE;\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: #1967D2;\n",
" height: 32px;\n",
" padding: 0 0 0 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-convert:hover {\n",
" background-color: #E2EBFA;\n",
" box-shadow: 0px 1px 2px rgba(60, 64, 67, 0.3), 0px 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: #174EA6;\n",
" }\n",
"\n",
" .colab-df-buttons div {\n",
" margin-bottom: 4px;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert {\n",
" background-color: #3B4455;\n",
" fill: #D2E3FC;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-convert:hover {\n",
" background-color: #434B5C;\n",
" box-shadow: 0px 1px 3px 1px rgba(0, 0, 0, 0.15);\n",
" filter: drop-shadow(0px 1px 2px rgba(0, 0, 0, 0.3));\n",
" fill: #FFFFFF;\n",
" }\n",
" </style>\n",
"\n",
" <script>\n",
" const buttonEl =\n",
" document.querySelector('#df-d3ebee1d-c67e-4374-b566-f66909b8c18c button.colab-df-convert');\n",
" buttonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
"\n",
" async function convertToInteractive(key) {\n",
" const element = document.querySelector('#df-d3ebee1d-c67e-4374-b566-f66909b8c18c');\n",
" const dataTable =\n",
" await google.colab.kernel.invokeFunction('convertToInteractive',\n",
" [key], {});\n",
" if (!dataTable) return;\n",
"\n",
" const docLinkHtml = 'Like what you see? Visit the ' +\n",
" '<a target=\"_blank\" href=https://colab.research.google.com/notebooks/data_table.ipynb>data table notebook</a>'\n",
" + ' to learn more about interactive tables.';\n",
" element.innerHTML = '';\n",
" dataTable['output_type'] = 'display_data';\n",
" await google.colab.output.renderOutput(dataTable, element);\n",
" const docLink = document.createElement('div');\n",
" docLink.innerHTML = docLinkHtml;\n",
" element.appendChild(docLink);\n",
" }\n",
" </script>\n",
" </div>\n",
"\n",
"\n",
" <div id=\"df-bc58a5d8-af1d-479f-9e34-06d77a1835f6\">\n",
" <button class=\"colab-df-quickchart\" onclick=\"quickchart('df-bc58a5d8-af1d-479f-9e34-06d77a1835f6')\"\n",
" title=\"Suggest charts\"\n",
" style=\"display:none;\">\n",
"\n",
"<svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\"viewBox=\"0 0 24 24\"\n",
" width=\"24px\">\n",
" <g>\n",
" <path d=\"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z\"/>\n",
" </g>\n",
"</svg>\n",
" </button>\n",
"\n",
"<style>\n",
" .colab-df-quickchart {\n",
" --bg-color: #E8F0FE;\n",
" --fill-color: #1967D2;\n",
" --hover-bg-color: #E2EBFA;\n",
" --hover-fill-color: #174EA6;\n",
" --disabled-fill-color: #AAA;\n",
" --disabled-bg-color: #DDD;\n",
" }\n",
"\n",
" [theme=dark] .colab-df-quickchart {\n",
" --bg-color: #3B4455;\n",
" --fill-color: #D2E3FC;\n",
" --hover-bg-color: #434B5C;\n",
" --hover-fill-color: #FFFFFF;\n",
" --disabled-bg-color: #3B4455;\n",
" --disabled-fill-color: #666;\n",
" }\n",
"\n",
" .colab-df-quickchart {\n",
" background-color: var(--bg-color);\n",
" border: none;\n",
" border-radius: 50%;\n",
" cursor: pointer;\n",
" display: none;\n",
" fill: var(--fill-color);\n",
" height: 32px;\n",
" padding: 0;\n",
" width: 32px;\n",
" }\n",
"\n",
" .colab-df-quickchart:hover {\n",
" background-color: var(--hover-bg-color);\n",
" box-shadow: 0 1px 2px rgba(60, 64, 67, 0.3), 0 1px 3px 1px rgba(60, 64, 67, 0.15);\n",
" fill: var(--button-hover-fill-color);\n",
" }\n",
"\n",
" .colab-df-quickchart-complete:disabled,\n",
" .colab-df-quickchart-complete:disabled:hover {\n",
" background-color: var(--disabled-bg-color);\n",
" fill: var(--disabled-fill-color);\n",
" box-shadow: none;\n",
" }\n",
"\n",
" .colab-df-spinner {\n",
" border: 2px solid var(--fill-color);\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" animation:\n",
" spin 1s steps(1) infinite;\n",
" }\n",
"\n",
" @keyframes spin {\n",
" 0% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" border-left-color: var(--fill-color);\n",
" }\n",
" 20% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 30% {\n",
" border-color: transparent;\n",
" border-left-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 40% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-top-color: var(--fill-color);\n",
" }\n",
" 60% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" }\n",
" 80% {\n",
" border-color: transparent;\n",
" border-right-color: var(--fill-color);\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" 90% {\n",
" border-color: transparent;\n",
" border-bottom-color: var(--fill-color);\n",
" }\n",
" }\n",
"</style>\n",
"\n",
" <script>\n",
" async function quickchart(key) {\n",
" const quickchartButtonEl =\n",
" document.querySelector('#' + key + ' button');\n",
" quickchartButtonEl.disabled = true; // To prevent multiple clicks.\n",
" quickchartButtonEl.classList.add('colab-df-spinner');\n",
" try {\n",
" const charts = await google.colab.kernel.invokeFunction(\n",
" 'suggestCharts', [key], {});\n",
" } catch (error) {\n",
" console.error('Error during call to suggestCharts:', error);\n",
" }\n",
" quickchartButtonEl.classList.remove('colab-df-spinner');\n",
" quickchartButtonEl.classList.add('colab-df-quickchart-complete');\n",
" }\n",
" (() => {\n",
" let quickchartButtonEl =\n",
" document.querySelector('#df-bc58a5d8-af1d-479f-9e34-06d77a1835f6 button');\n",
" quickchartButtonEl.style.display =\n",
" google.colab.kernel.accessAllowed ? 'block' : 'none';\n",
" })();\n",
" </script>\n",
" </div>\n",
"\n",
" </div>\n",
" </div>\n"
],
"application/vnd.google.colaboratory.intrinsic+json": {
"type": "dataframe",
"variable_name": "df2"
}
},
"metadata": {},
"execution_count": 81
}
]
},
{
"cell_type": "code",
"source": [
"df2['acquisition_year'] = pd.to_datetime(\n",
" df2['accessionnum'].str.extract(r'^(\\d{4})')[0], errors='coerce'\n",
").dt.year\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "ZitDH7gJWSBp",
"outputId": "6f7722a0-e17c-4389-cbd9-6b12c49cb712"
},
"execution_count": 82,
"outputs": [
{
"output_type": "stream",
"name": "stderr",
"text": [
"<ipython-input-82-290d9fdf408a>:1: SettingWithCopyWarning:\n",
"\n",
"\n",
"A value is trying to be set on a copy of a slice from a DataFrame.\n",
"Try using .loc[row_indexer,col_indexer] = value instead\n",
"\n",
"See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
"\n"
]
}
]
},
{
"cell_type": "code",
"source": [
"df2[\"acquisition_year\"].min()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "TO_IUa12X_vw",
"outputId": "f4b6ce3c-0614-43c3-84f0-3f935254cb85"
},
"execution_count": 83,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"1937"
]
},
"metadata": {},
"execution_count": 83
}
]
},
{
"cell_type": "code",
"source": [
"df2['accessionnum'].sort_values().head(10)"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 398
},
"id": "sUYhoCCYYTyS",
"outputId": "35b4d762-5603-4477-a289-8af8f37e64b6"
},
"execution_count": 84,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"143013 1937.1.1\n",
"82687 1937.1.10\n",
"82739 1937.1.100\n",
"82740 1937.1.101\n",
"713 1937.1.102\n",
"82741 1937.1.103\n",
"24 1937.1.104\n",
"25 1937.1.105\n",
"82735 1937.1.106\n",
"82743 1937.1.107\n",
"Name: accessionnum, dtype: object"
],
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>accessionnum</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>143013</th>\n",
" <td>1937.1.1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>82687</th>\n",
" <td>1937.1.10</td>\n",
" </tr>\n",
" <tr>\n",
" <th>82739</th>\n",
" <td>1937.1.100</td>\n",
" </tr>\n",
" <tr>\n",
" <th>82740</th>\n",
" <td>1937.1.101</td>\n",
" </tr>\n",
" <tr>\n",
" <th>713</th>\n",
" <td>1937.1.102</td>\n",
" </tr>\n",
" <tr>\n",
" <th>82741</th>\n",
" <td>1937.1.103</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>1937.1.104</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>1937.1.105</td>\n",
" </tr>\n",
" <tr>\n",
" <th>82735</th>\n",
" <td>1937.1.106</td>\n",
" </tr>\n",
" <tr>\n",
" <th>82743</th>\n",
" <td>1937.1.107</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div><br><label><b>dtype:</b> object</label>"
]
},
"metadata": {},
"execution_count": 84
}
]
},
{
"cell_type": "code",
"source": [
"df2_filtered = df2[(df2['beginyear'] >= 1250) & (df2['acquisition_year'].notna())]\n",
"\n",
"plt.figure(figsize=(10, 8))\n",
"plt.scatter(df2_filtered['beginyear'], df2_filtered['acquisition_year'], alpha=0.2, s=10, color='gray')\n",
"\n",
"# Diagonal reference line\n",
"min_year = 1250\n",
"max_year = int(max(df2_filtered['beginyear'].max(), df2_filtered['acquisition_year'].max()))\n",
"plt.plot([min_year, max_year], [min_year, max_year], color='red', lw=2)\n",
"\n",
"plt.xlabel(\"Year painted\")\n",
"plt.ylabel(\"Year acquired\")\n",
"plt.title(\"When the National Gallery Acquired Paintings vs. When They Were Painted\")\n",
"plt.grid(True)\n",
"plt.xlim(1250, max_year)\n",
"plt.ylim(1250, max_year)\n",
"plt.tight_layout()\n",
"plt.show()\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 807
},
"id": "YUt-p6mcWowC",
"outputId": "945f29c7-e9c8-44be-be89-943cae945b25"
},
"execution_count": 85,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 1000x800 with 1 Axes>"
],
"image/png": "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+WrrRLjpppvwm9/8Zspo92uvvYaXX34Z559/PlpaWtDf348f//jHWLt2LbZt2watVov3ve99+MxnPoPvf//7+NKXvsSRn4kiQNlsFmvXrsWuXbtwzTXXoLOzE+vXr8cll1yCWCw2zlB86KGHkEwm8alPfQoSiQTf/OY3cfbZZ6O3txcKhQLA2Oa+t7cXl156KdxuN7Zu3Yp7770XW7duxauvvjoj0ahMJoNnn30Wa9euRUtLy7R/t379emQyGVx55ZWw2Wz417/+hXvuuQfDw8NYv379tM9DbTj++OMxMjKCT33qU2hra8PLL7+MG2+8ET6fbxwt9L777kMul8MVV1wBlUqFtrY2fOhDH+LIarVz4OGHH4YgCPjYxz42ZTsefvhh6HQ6nHHGGdBoNOju7saDDz44LqJ066234pZbbsGaNWtw2223QalU4p///CeeffZZrFu3DgDwla98BV/96ldx2mmn4bTTTsN///tfrFu3DoVCYUZ9Mx3cfvvtUCqVuP7665HP56FUKvHss8/i1FNPxerVq3HzzTdDKpXivvvuw/vf/3689NJLOPLIIwEAW7Zswbp16+BwOHDLLbegVCrh5ptvhsvl2qs27d69GwBgs9nQ29uLxx57DB/5yEfQ2dkJv9+Pn/70pzj++OOxbdu2KSPh5XIZp5xyCo466ih8+9vfxjPPPIPvfOc76O7uxpVXXgmHw4Ef//jHuPLKK/GhD30IZ599NgDwejkRprMGvf766/jABz4Aj8eDW2+9FeVyGbfddlvNWgYAW7duxRlnnIEVK1bgtttug0qlwq5duxo6Oapx3nnn4ZZbbsHo6CjcbndN27xeL0ebn376aVxwwQU48cQTceeddwIAtm/fjo0bNzZ0Nk0GtVqN1atX1zCoKGVpzZo1iMViePzxx/m7LVu2IJFINGRWXXvttbBYLLj55pvR39+Pu+66C9dccw1+97vf8TH3338/Lr74Ypxyyim48847kclk8OMf/5idzdW51lON9Vxhutf51Kc+hV/96le49NJL8ZnPfAZ9fX34wQ9+gNdffx0bN26EQqHAhRdeiN/85jf4+9//jjPOOIN/Ozo6imeffRY333zzpG059thj8Yc//AH5fB4qlQqFQgGvvfYarrzySmQyGXzxi1+EIAiQSCSIRqPYtm0bR48rlQo++MEPYsOGDbjiiiuwdOlS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H5hxOxcsWAC5XD6ufBAwFhUBME75uVwu4+STT0YkEsH//M//YMmSJdDpdBgZGcEll1wy4zZUKhWcfPLJ+OIXv9jw+0WLFtX8XR01qcZFF12Eb33rW3jsscdwwQUX4KGHHsIZZ5xRE7VoBEEQ8PDDDyOdTjc0pgOBAFKpVEM2wN5iolzGmQhH1fcH9f+3vvUtrFq1quFv9Hr9nNXRlslkOOmkkyb8/utf/zr+7//+D5dddhluv/12WK1WSKVSXHfdddOaK/OlZjyXa5tGo8GLL76I5557Do8//jj+9re/4Xe/+x3e//7346mnnpr0Hs477zzceOONWL9+Pa677jo88sgjMJlMNQa10+nEpk2b8Pe//x1PPvkknnzySdx333246KKLxokyTgc2mw1LlizBhg0bkEqlsHnz5prc4zVr1mDDhg0YHh7G4ODghJoI013H77///pqcdUL92rKvlKunc51KpQKn0zlh6cBqQ3fZsmVYvXo1HnjgAVx00UV44IEHoFQqce655055HalUiqOPPhovv/wylw+rFuBbs2YNfvnLX3Kud/W7q1Kp4NBDD8V3v/vdhudubW2t+XuitWJv37N2u33SNWBv31l786zOdA6KELG/IM5EESL2EaopZhs3bqyhoq5evRoqlQrPP/88/vnPf+K0006b1TUcDgcMBgPK5fKkL8i5wEzEvBphPtra3d2Nj3/84/jpT3+Ko446atz3jz76KC6++GJ85zvf4c9yudy4WuMzubf29nZs3rwZlUqlJuL11ltv8fczQTQaxT/+8Q/ceuut+MpXvsKfkzd/ptDpdFi7di1eeOEFjrRNhS1btmDnzp349a9/jYsuuog/ny31tbu7G6lUaq/H+ZBDDsFhhx2GBx98EC0tLRgcHMQ999wz5e9eeOEFDA8P47bbbhsniBeNRnHFFVfgsccew8c//nF0d3ejUqlg27ZtExq0NKY9PT01zrFgMDguMkORwVgsVhMZqmdAzAREmTYajZP2qcPhgEajaTh3duzYMevr1+PRRx/FCSecgF/84hc1n8diMRZZ3Fvs7XrTCE6nE2q1umG1hkafSaVSnHjiiTjxxBPx3e9+F1//+tdx00034bnnnpt0HDo7O3HkkUfid7/7Ha655hr84Q9/wFlnnQWVSlVznFKpxJlnnokzzzwTlUoFV111FX7605/i//7v/xpG46fCsccei1/+8pd46qmnUC6Xxzl6H374YVZ/nm15SpqLTqdz3t85c43u7m4888wzOOaYYyZ09FXjoosuwuc//3n4fD489NBDOP3006fNbDn22GPx5JNP4s9//jMCgUBNZZI1a9bgpptuwhNPPIFsNlszFt3d3XjjjTdw4oknzuoZ2Bd7grl+Z02Eie5/unOwet2ux1yuhyJETAQxp1uEiH0EKknz4IMPYmRkpGYDpFKpcPjhh+OHP/wh0un0rDdAMpkM55xzDn7/+983jGw2KvUyW+h0OgAYZ7BOF/PV1i9/+csoFov45je/2fCa9Z7ze+65Z1zUcSb3dtppp2F0dLQmZ7NUKuGee+6BXq/naPJ0QR7/+nbWK3zPBF/5yldQLpfx8Y9/vCHNvP5ajdogCMKsyhcBY1GQV155pSZ3mhCLxVAqlaZ9rgsvvBBPPfUU7rrrLthstnG5t41A1PIbbrgBH/7wh2v+ffKTn8TChQs52nXWWWdBKpXitttuGxehof446aSToFAocM8999T0UaMxog1hdd56Op2eVfSSsHr1anR3d+Pb3/52w/GkZ0cmk+GUU07BY489hsHBQf5++/btDcditmj0XK1fvx4jIyNzdg2tVgtg9utNI1AE/7HHHqspN7hr1y48+eSTNcdGIpFxvyenzHQYBeeddx5effVV/PKXv0QoFKqhlgMYV1pJKpVyBJLOXywW8dZbb8Hn8019cxgz9MrlMr797W9j4cKFNZHbNWvWIJVK4Uc/+tFe1YQ+5ZRTYDQa8fWvf71hSa25fOfMNc4991yUy2Xcfvvt474rlUrj5toFF1wAiUSCz372s+jt7Z1RjXB6p995553QarU1Dr0jjzwScrmc31nV7/9zzz0XIyMj+NnPfjbunNlsFul0etLr7os9wXy8sxphovfydOegx+PBqlWr8Otf/7qG8v70009j27Ztc9pWESIaQYx0ixCxj6BUKnHEEUfgpZdegkqlwurVq2u+X7NmDUdgZ2t0A2MlwJ577jkcddRR+OQnP4lly5YhEongv//9L5555pmGm8fZgNp/00034fzzz4dCocCZZ57JL8b91VaKdjcyas444wzcf//9MJlMWLZsGV555RU888wz4/JOV61aBZlMhjvvvBPxeBwqlQrvf//7G+b+XXHFFfjpT3+KSy65BP/5z3/Q0dGBRx99FBs3bsRdd93VsC72ZDAajXjf+96Hb37zmygWi2hubsZTTz3F9VBng+OOOw4/+MEPcO2112LhwoX42Mc+hiVLlqBQKGDnzp148MEHoVQqmZq3ZMkSdHd34/rrr8fIyAiMRiN+//vfzzrv8oYbbsCf//xnnHHGGVwGJp1OY8uWLXj00UfR398/7YjoRz/6UXzxi1/EH//4R1x55ZVcZm0i5PN5/P73v8fJJ58MtVrd8JgPfvCDuPvuuxEIBLBgwQLcdNNNuP3223Hcccfh7LPPhkqlwmuvvYampibccccdXPP3jjvuwBlnnIHTTjsNr7/+Op588slx97Fu3Tq0tbXh8ssvxw033ACZTIZf/vKXcDgcNYbwTCCVSvHzn/8cp556KpYvX45LL70Uzc3NGBkZwXPPPQej0cg52Lfeeiv+9re/4bjjjsNVV13FDqHly5dj8+bNs7p+Pc444wzcdtttuPTSS7FmzRps2bIFDz74YMMUmdlCo9Fg2bJl+N3vfodFixbBarXikEMOwSGHHLJX573lllvw1FNP4ZhjjsGVV16JcrmMH/zgBzjkkEOwadMmPu62227Diy++iNNPPx3t7e0IBAL40Y9+hJaWlmmt1+eeey6uv/56XH/99bBareMicp/4xCcQiUTw/ve/Hy0tLRgYGMA999yDVatWMTtjZGQES5cuxcUXX1xT63wiULteeeWVmtrxwFhKh91uxyuvvIJDDz20hoUxExiNRvz4xz/GhRdeiMMPPxznn38+z+3HH38cxxxzDOuVHGg4/vjj8alPfQp33HEHNm3ahHXr1kGhUKCnpwfr16/H3XffXVNH3eFw4AMf+ADWr18Ps9nMOhDTAdVOf+WVV7B27doayrNWq8XKlSvxyiuvwGw218zpCy+8EI888gg+/elP47nnnsMxxxyDcrmMt956C4888gj+/ve/NxTAq8Z87wnm453VCJO9l6c7B++44w6cfvrpOPbYY3HZZZchEonwetjIgSlCxJxiX8mkixAhQhBuvPFGAYCwZs2acd/94Q9/EAAIBoOhYdkYAMLVV1897vP68kyCIAh+v1+4+uqrhdbWVkGhUAhut1s48cQThXvvvZePaVRSSxAal/WZCLfffrvQ3NwsSKXSmjIgc93WiVBdMqwaPT09XBKp+v6i0ahw6aWXCna7XdDr9cIpp5wivPXWWw3b9bOf/Uzo6uri81CZkvqyTnQPdF6lUikceuih4/qP+vVb3/rWuPairhTS8PCw8KEPfUgwm82CyWQSPvKRjwher3fccdMpGVaN119/XbjooouEtrY2QalUCjqdTlixYoXwhS98oaa0kiCMlZU66aSTBL1eL9jtduGTn/wkl1yqvrfplAwThLGyLjfeeKOwYMECQalUCna7XVizZo3w7W9/WygUClP2UTVOO+00AYDw8ssvT3nPv//97wUAwi9+8YsJj3n++ecFAMLdd9/Nn/3yl78UDjvsMEGlUgkWi0U4/vjjhaeffpq/L5fLwq233ip4PB5Bo9EIa9euFd58882G9/6f//xHOOqoowSlUim0tbUJ3/3ud2dUMqz+GSW8/vrrwtlnny3YbDZBpVIJ7e3twrnnniv84x//qDnuhRdeEFavXi0olUqhq6tL+MlPfjJhKbN6UMmwyZDL5YQvfOEL3BfHHHOM8Morr4y7n4lKhjU6f6P2vfzyy3wf1c/CRCXDprsG/eMf/xAOO+wwQalUCt3d3cLPf/5z4Qtf+IKgVqtrjvl//+//CU1NTYJSqRSampqECy64YFwZvMlwzDHHCACET3ziE+O+e/TRR4V169YJTqeT58mnPvUpwefz8THUfxOVymqEpqYmAUDD9fSDH/ygAEC48sorx31H8/O1116r+ZzmZH3Zpueee0445ZRTBJPJJKjVaqG7u1u45JJLhH//+998zEzGeipMVTJsJte59957hdWrVwsajUYwGAzCoYceKnzxi1/k8pPVeOSRRwQAwhVXXDGj9gqCIBx99NECAOFLX/rSuO8+85nPCACEU089ddx3hUJBuPPOO4Xly5fzerR69Wrh1ltvFeLxOB830ZwXhPl5z1Zjb95ZE52/0bt2oveyIExvDgrC2Dth6dKlgkqlEpYtWyb84Q9/EC6++GKxZJiIeYdEEPZSLUmECBEiRIjYh/jQhz6ELVu2NMy73d/o6OjA2rVrpxWJFHHg4qyzzsLWrVvnPC9VxDsbf/rTn3DWWWfhxRdfrClxJUKECBFTQczpFiFChAgR7xj4fD48/vjjuPDCC/d3U0QcJMhmszV/9/T04IknnsDatWv3T4NEHLD42c9+hq6urr1KARMhQsS7E2JOtwgRIkSIOODR19eHjRs34uc//zkUCgU+9alP7e8miThI0NXVhUsuuQRdXV0YGBjA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ey3Q2xv9t9MJPPZYNMtNMw4z3URERERERBOhvx+4/nrgiiuGAu5jjgHefpsB9wzGTDcREREREdF4YzuwWYuZbiIiIiIiovH0wgvRjLYE3BkZwG9/G/0fA+4Zj0E3ERERERHReIhEgB/+EDjnnKH+29XVwKuvsv/2LMLp5URERERERGON7cDoAGa6iYiIiIiIxtKmTQe3A/uv/2I7sFmKmW4iIiIiIqKx8uijwOc+F9sO7NFHgfPPn9ztoknDTDcREREREdHh6u8HvvQl4FOfim0H9tZbDLhnOWa6iYiIiIiIDkd9PXDxxcDrrw89xnZgdAAz3URERERERIdK2oFJwJ2RAdx/P9uBkWLQTURERERElKpE7cCqqqLtwK65ZnK3jaYUTi8nIiIiIiJKRbJ2YH/4A1BQMHnbRVMSM91ERERERESjNVw7MAbclAAz3URERERERKPBdmB0CJjpJiIiIiIiGg7bgdFhYKabiIiIiIgoGbYDo8PETDcREREREVEibAdGY4BBNxERERERkVEkAvzoR2wHRmOC08uJiIiIiIiE1wt85jPAX/4y9BjbgdFhYKabiIiIiIgIiLYDO/74oYBb2oH97W8MuOmQMdNNRERERET06KPAtdcCgUD0305nNLv9wQ9O7nbRtDepme6XX34ZF154IUpLS2EymfAX4xQOAC0tLfjMZz6D0tJS2Gw2fOADH8COHTtintPX14frr78eBQUFyMnJwYoVK9DS0hLznH379uGCCy6AzWZDUVERbr31VoTD4fF+e0RERERENNX19wNf/nK0HZgE3EcfHW0HxoCbxsCkBt1+vx9Lly7FqlWrDvpZJBLBRz/6UezevRv/+7//i3feeQdVVVU4++yz4ff79Xk33XQTnn32WTz11FN46aWX0NjYiIsuukh/PjAwgAsuuAD9/f147bXX8PDDD+Ohhx7Ct7/97Ql5j0RERERENDVltrcj/ayzou2/xGc/Gy2YVlMzeRtGM8qkTi8///zzcX6SZvI7duzA66+/jnfffRdHHHEEAODXv/41iouL8cc//hHXXHMNvF4vHnjgATz22GN4//vfDwD43e9+h0WLFuH111/HSSedhOeeew5btmzBv/71L7jdbixbtgz//d//ja997Wv4zne+A6vVOmHvl1BQDhEAAGtcSURBVIiIiIiIpgbTiy/ijJtvRprXG30gIyMafLM6OY2xKbumOxgMAgAyDf3v0tLSkJGRgVdeeQXXXHMN3nrrLYRCIZx99tn6nIULF6KyshJr1qzBSSedhDVr1uCoo46C2+3W55x33nm47rrrsHnzZhx99NFJ/75sAwD4fD4AQCgUQigUGtP3OpXIe5vJ73G24TGdeXhMZx4e05mHx3Tm4TGdQSIRpP34x0j/1rdgHhyMPlRVhfATT0R7cvMYT1sT/Tkd7d+ZskG3BM+33XYbfvOb3yA7Oxt333036uvr0dTUBABobm6G1WqFw+GI+V23243m5mZ9jjHglp/Lz5K544478N3vfvegx5977jnYbLbDeWvTwurVqyd7E2iM8ZjOPDymMw+P6czDYzrz8JhOb2a/H8f84hcoWbtWH2s55hi89ZWvINTcDPzjH5O4dTRWJupzGpAaACOYskG3xWLBM888g6uvvhr5+flIT0/H2WefjfPPPx+RSGTc//5tt92GlStX6r99Ph8qKipw7rnnwm63j/vfnyyhUAirV6/GOeecA4vFMtmbQ2OAx3Tm4TGdeXhMZx4e05mHx3QG2LQJ5ksvhWnnTgBAxGTCtksuQeX99+Mcw+xamr4m+nMqs6FHMmWDbgA49thjsX79eni9XvT396OwsBAnnngijjvuOABAcXEx+vv70dXVFZPtbmlpQXFxsT5n3bp1Ma8r1c3lOYlkZGQgIyPjoMctFsusuNDOlvc5m/CYzjw8pjMPj+nMw2M68/CYTlMJ2oENPPQQtkUimJOZyWM6w0zU53S0f2NSq5ePVl5eHgoLC7Fjxw68+eab+MhHPgIgGpRbLBY8//zz+txt27Zh3759WL58OQBg+fLl2LRpE1pbW/U5q1evht1ux+LFiyf2jRARERER0cQZph1YJElBZ6KxNqmZ7p6eHuw8ML0DAOrq6rB+/Xrk5+ejsrISTz31FAoLC1FZWYlNmzbhxhtvxEc/+lGce+65AKLB+NVXX42VK1ciPz8fdrsdX/7yl7F8+XKcdNJJAIBzzz0XixcvxhVXXIE777wTzc3NuP3223H99dcnzGQTEREREdEMUF8PXHIJsGbN0GOf/Wy0QnlWFgum0YSZ1KD7zTffxJlnnqn/ljXUV155JR566CE0NTVh5cqVaGlpQUlJCT796U/jW9/6Vsxr3H333UhLS8OKFSsQDAZx3nnn4Z577tGfp6en429/+xuuu+46LF++HNnZ2bjyyivxve99b2LeJBERERERTawXXwQuvRRoa4v+m+3AaBJNatB9xhlnDFsU7YYbbsANN9ww7GtkZmZi1apVWLVqVdLnVFVV4R+sREhERERENLNFIsBddwG33QYcaAeGqirgT38CDtSFIppoU7qQGhERERER0ah4vcBVVwF//vPQY+edFy2iVlAwedtFs960KKRGRERERESU1LvvAscfHxtwf/vbwN//zoCbJh0z3URERERENH3FtwNzOKKPffCDk7pZRIKZbiIiIiIimn6StQN7+20G3DSlMNNNRERERETTy0jtwIimEGa6iYiIiIho+njxReCYY4YC7owM4P77gQceYMBNUxKDbiIiIiIimvoiEeDOO4Gzzx7qv11VBbzyCvtv05TG6eVERERERDS1sR0YTWPMdBMRERER0dTFdmA0zTHTTUREREREU9NjjwGf+xzbgdG0xkw3ERERERFNLf39wA03AJdfPhRwL1sGvPUWA26adpjpJiIiIiKiqaOhAbj44th2YFddBaxaxerkNC0x001ERERERFNDfDswqxW47z62A6NpjUE3ERERERFNLmM7sNbW6GOVlcCrr0bXdJtMk7t9RIeB08uJiIiIiGjyJGoHdu650YJpLtfkbRfRGGGmm4iIiIiIJkeidmDf+hbwj38w4KYZg5luIiIiIiKaeInagf3hD8AFF0zqZhGNNWa6iYiIiIho4gzXDowBN81AzHQTEREREdHEYDswmoWY6SYiIiIiovHHdmA0SzHoJiIiIiKi8cN2YDTLcXo5ERERERGND58vOn38mWeGHmM7MJplmOkmIiIiIqKxt3lztB2YMeBmOzCahZjpJiIiIiKisfXHPwLXXMN2YERgppuIiIiIiMaKtAP75CfZDozoAGa6iYiIiIjo8DU0AJdcArz22tBjn/kMcM89rE5Osxoz3UREREREdHikHZgE3FYr8JvfAA8+yICbZj0G3UREREREdGiStQN75RXg2mvZDowInF5ORERERESHgu3AiEaFmW4iIiIiIkoN24ERjRoz3URERERENHpsB0aUEma6iYiIiIhoZGwHRnRImOkmIiIiIqLhsR0Y0SFjppuIiIiIiJL797/ZDozoMDDoJiIiIiKig0UiwF13sR0Y0WHi9HIiIiIiIorFdmBEY4aZbiIiIiIiGpKoHdjtt7MdGNEhYqabiIiIiIiiHn8cuPrq2HZgv/898KEPTepmEU1nzHQTEREREc12/f3AjTcCn/jEUMC9dGm0HRgDbqLDwkw3EREREdFslqgd2JVXAr/+NauTE40BZrqJiIiIiGarZO3Afvc7BtxEY4RBNxERERHRbMN2YEQThtPLiYiIiIhmE7YDI5pQzHQTEREREc0WbAdGNOGY6SYiIiIimg3YDoxoUjDTTUREREQ0k7EdGNGkYqabiIiIiGimamwELr6Y7cCIJhEz3UREREREM9FLLx3cDuzee9kOjGiCMegmIiIiIppJIhHgxz8GzjoLaGmJPlZREW0H9vnPsx0Y0QTj9HIiIiIiopnC5wM++1ng6aeHHjvnHOCxx1idnGiSMNNNRERERDQTbN4MnHBCbMB9++3A//t/DLiJJhEz3URERERE0118O7C8vGg7sAsvnNztIiJmuomIiIiIpq3h2oEx4CaaEpjpJiIiIiKajpK1A7vnHsBmm7ztIqIYzHQTEREREU03w7UDY8BNNKUw6CYiIiIimi7YDoxo2uH0ciIiIiKi6YDtwIimJWa6iYiIiIimOrYDI5q2mOkmIiIiIprKnngi2g7M74/+m+3AiKYVZrqJiIiIiKaiUAj4yleAyy4bCrjZDoxo2mGmm4iIiIhoqmlsBC65BHj11aHH2A6MaFpippuIiIiIaCqRdmAScLMdGNG0xqCbiIiIiGgqSNYO7D//YTswommM08uJiIiIiCZbonZgZ58N/PGPrE5ONM0x001ERERENJkStQP75jeBf/6TATfRDMBMNxERERHRZGE7MKIZj5luIiIiIqKJxnZgRLMGM91ERERERBOJ7cCIZhVmuomIiIiIJgrbgRHNOgy6iYiIiIjGWyQC/OQnbAdGNAtxejkRERER0Xjq7o62A/vTn4YeYzswolmDmW4iIiIiovGyZQtw/PGxATfbgRHNKsx0ExERERGNB7YDIyIw001ERERENLZCIeCmm2LbgS1ZArz5JgNuolmImW4iIiIiorGSqB3Ypz8N/PrXrE5ONEsx001ERERENBbi24FZLNFg+6GHGHATzWIMuomIiIiIDkeidmDl5dF2YF/4AtuBEc1ynF5ORERERHSokrUDe+wxoLBw8raLiKYMZrqJiIiIiA7FcO3AGHAT0QHMdBMRERERpYrtwIholCY10/3yyy/jwgsvRGlpKUwmE/7yl7/E/Lynpwdf+tKXUF5ejqysLCxevBj33ntvzHP6+vpw/fXXo6CgADk5OVixYgVaZC3NAfv27cMFF1wAm82GoqIi3HrrrQiHw+P99oiIiIhopmE7MCJK0aQG3X6/H0uXLsWqVasS/nzlypX45z//iT/84Q/YunUrvvKVr+BLX/oS/vrXv+pzbrrpJjz77LN46qmn8NJLL6GxsREXXXSR/nxgYAAXXHAB+vv78dprr+Hhhx/GQw89hG9/+9vj/v6IiIiIaObI6OxE+rnnAj/72dCDn/40sGYNMHfupG0XEU1tkzq9/Pzzz8f555+f9OevvfYarrzySpxxxhkAgGuvvRa/+c1vsG7dOnz4wx+G1+vFAw88gMceewzvf//7AQC/+93vsGjRIrz++us46aST8Nxzz2HLli3417/+BbfbjWXLluG///u/8bWvfQ3f+c53YLVaJ+KtEhEREdE0ZvrPf3DGypVI6+qKPmCxAL/4BfD5z7M6ORENa0qv6T755JPx17/+FZ/97GdRWlqKf//739i+fTvuvvtuAMBbb72FUCiEs88+W39n4cKFqKysxJo1a3DSSSdhzZo1OOqoo+B2u/U55513Hq677jps3rwZRx99dMK/HQwGEQwG9d8+nw8AEAqFEAqFxuPtTgny3mbye5xteExnHh7TmYfHdObhMZ1BIhGk/exnSP/GN2AeGIg+VF6OgccfR+SEEwAuWZy2+DmdeSb6mI7270zpoPuXv/wlrr32WpSXl8NsNiMtLQ33338/TjvtNABAc3MzrFYrHA5HzO+53W40Nzfrc4wBt/xcfpbMHXfcge9+97sHPf7cc8/BZrMdztuaFlavXj3Zm0BjjMd05uExnXl4TGceHtPpzdzbi2W//CXKXntNH2tduhRvrVyJ/vZ24B//mMSto7HCz+nMM1HHNBAIjOp5Uz7ofv311/HXv/4VVVVVePnll3H99dejtLQ0Jrs9Hm677TasXLlS/+3z+VBRUYFzzz0Xdrt9XP/2ZAqFQli9ejXOOeccWCyWyd4cGgM8pjMPj+nMw2M68/CYzgBbt8J8ySUwbdumD23/+MdR/uCDODszcxI3jMYKP6czz0QfU5kNPZIpG3T39vbiG9/4Bv785z/jggsuAAAsWbIE69evx49//GOcffbZKC4uRn9/P7q6umKy3S0tLSguLgYAFBcXY926dTGvLdXN5TmJZGRkICMj46DHLRbLrPhQzpb3OZvwmM48PKYzD4/pzMNjOk09+STw2c/GtAMLP/ggtqanoyYzk8d0huHndOaZqGM62r8xqdXLhyNrp9PSYjcxPT0dg4ODAIBjjz0WFosFzz//vP5827Zt2LdvH5YvXw4AWL58OTZt2oTW1lZ9zurVq2G327F48eIJeCdERERENC1IO7BLLz2oHViE7cCI6BBNaqa7p6cHO3fu1H/X1dVh/fr1yM/PR2VlJU4//XTceuutyMrKQlVVFV566SU88sgj+OlPfwoAyMvLw9VXX42VK1ciPz8fdrsdX/7yl7F8+XKcdNJJAIBzzz0XixcvxhVXXIE777wTzc3NuP3223H99dcnzGQTERER0SzU1ARccgnwyitDj11xBXDvvYDNFg3IiYgOwaQG3W+++SbOPPNM/besob7yyivx0EMP4fHHH8dtt92Gyy+/HJ2dnaiqqsL//M//4Atf+IL+zt133420tDSsWLECwWAQ5513Hu655x79eXp6Ov72t7/huuuuw/Lly5GdnY0rr7wS3/ve9ybujRIRERHR1PXyy9GA+8ASRFgswM9/DnzhC2wHRkSHbVKD7jPOOAORSCTpz4uLi/G73/1u2NfIzMzEqlWrsGrVqqTPqaqqwj9YXZKIiIiIjCIR4Kc/Bb72NeBAOzCUlwN/+hNw4omTu21ENGNM2UJqRERERETjprs7WiztT38aeuzss4HHHgMKCydvu4hoxpmyhdSIiIiIiMbF1q3ACSfEBtzf+Abwz38y4CaiMcdMNxERERHNHgnageGRR4APf3hyt4uIZixmuomIiIho5humHRgDbiIaT8x0ExEREdHMNlI7MCKiccRMNxERERHNXP/5D3DMMUMBt8UC3HMP8PDDDLiJaEIw6CYiIiKimUfagZ15JtDcHH2svDwahF93HftvE9GE4fRyIiIiIppZuruBq68Gnnpq6LGzzgL++EdWJyeiCcdMNxERERHNHNIOzBhw33Yb8H//x4CbiCYFM91ERERENDPEtwOz26PtwD7ykcndLiKa1ZjpJiIiIqLpLVE7sKOOAt56iwE3EU06ZrqJiIiIaPpiOzAimuKY6SYiIiKi6YntwIhoGmDQTURERETTC9uBEdE0wunlRERERDR9sB0YEU0zzHQTERER0fTAdmBENA0x001EREREU99TT0XbgfX0RP/NdmBENE0w001EREREU1coBKxcGa1QLgE324ER0TTCTDcRERERTU1NTdHe2//5z9Bjn/oU8JvfsDo5EU0bzHQTERER0dQj7cAk4LZYgFWrolPKGXAT0TTCoJuIiIiIpo5IBLj77oPbgb38MvDFL7IdGBFNO5xeTkRERERTQ6J2YO9/P/D446xOTkTTFjPdRERERDT5ErUD+/rX2Q6MiKY9ZrqJiIiIaHKxHRgRzWDMdBMRERHR5EjWDuzNNxlwE9GMwUw3EREREU08tgMjolmCmW4iIiIimlhsB0ZEswiDbiIiIiKaGGwHRkSzEKeXExEREdH46+4GrrkGePLJocfYDoyIZgFmuomIiIhofG3dCpx4YmzAzXZgRDRLMNNNREREROPnT38CrrqK7cCIaNZippuIiIiIxl4oBNx8M3DxxWwHRkSzGjPdRERERDS2krUDu/deIDt78raLiGgSMNNNRERERGMnUTuwX/0qOqWcATcRzUIMuomIiIjo8CVqB1ZWFm0Hdv31bAdGRLMWp5cTERER0eFJ1g7sj38Eioomb7uIiKYAZrqJiIiI6NAN1w6MATcRETPdRERERHSI2A6MiGhEzHQTERERUWrYDoyIaNSY6SYiIiKi0WtuBi65hO3AiIhGiZluIiIiIhqdV14Bjj6a7cCIiFLAoJuIiIiIhheJAD/7GduBEREdAk4vJyIiIqLkenqi7cCeeGLoMbYDIyIaNWa6iYiIiCix994DTjghNuBmOzAiopQw001EREREB0vUDuzhh4GPfnRSN4uIaLphppuIiIiIhiRqB3bkkdF2YAy4iYhSxkw3EREREUUlagd2+eXAb37D6uRERIeImW4iIiIiSt4O7Pe/Z8BNRHQYGHQTERERzWbJ2oG99BLbgRERjQFOLyciIiKardgOjIho3DHTTURERDQbsR0YEdGEYKabiIiIaLZhOzAiognDTDcRERHRbBEOA7fcwnZgREQTiJluIiIiotmguRm49FLg5ZeHHmM7MCKiccdMNxEREdFM98orwDHHDAXcbAdGRDRhGHQTERERzVSRCPDzn0fbgTU1RR9jOzAiognF6eVEREREM1GidmBnngk8/jirkxMRTSBmuomIiIhmmvfeA048MTbg/trXgOeeY8BNRDTBmOkmIiIimknYDoyIaEphppuIiIhoJkjWDuyNNxhwExFNIma6iYiIiKa7RO3APvlJ4L77WJ2ciGiSMdNNRERENJ0lagf2y18Cf/gDA24ioimAmW4iIiKi6SgSAX7xi+iU8nA4+lhZGfDUU8Dy5ZO7bUREpBh0ExEREU03bAdGRDRtcHo5ERER0XTCdmBERNMKM91ERERE08XTTwOf+QzbgRERTSPMdBMRERFNdeEwcOutwMc/znZgRETTDDPdRERERFNZczNw2WXASy8NPcZ2YERE0wYz3URERERT1auvRtuBScBtNrMdGBHRNMOgm4iIiGiqiUSAn/8cOOMMoKkp+lhpabQX95e+BJhMk7p5REQ0epxeTkRERDSVJGoHdsYZ0XZgbvekbRYRER0aZrqJiIiIpopE7cC++lVg9WoG3ERE0xQz3URERERTQXw7sNzcaDuwj31sUjeLiIgODzPdRERERJMpWTuwN99kwE1ENAMw001EREQ0WdgOjIhoxmOmm4iIiGgysB0YEdGswKCbiIiIaCKxHRgR0azC6eVEREREE6WnB/jc56LtvwTbgRERzWjMdBMRERFNhG3bou3AjAE324EREc14zHQTERERjbennwauugro7o7+m+3AiIhmjUnNdL/88su48MILUVpaCpPJhL/85S8xPzeZTAn/d9ddd+lzOjs7cfnll8Nut8PhcODqq69Gj7TbOGDjxo049dRTkZmZiYqKCtx5550T8faIiIhotjO2A5OA+4gj2A6MiGgWmdSg2+/3Y+nSpVi1alXCnzc1NcX878EHH4TJZMKKFSv0OZdffjk2b96M1atX429/+xtefvllXHvttfpzn8+Hc889F1VVVXjrrbdw11134Tvf+Q7uu+++cX9/RERENHtleDxI/8AHgB//eOjBT3wCWLsWmD9/8jaMiIgm1KROLz///PNx/vnnJ/15cXFxzL//93//F2eeeSZqa2sBAFu3bsU///lPvPHGGzjuuOMAAL/85S/xwQ9+ED/+8Y9RWlqKRx99FP39/XjwwQdhtVpxxBFHYP369fjpT38aE5wTERERjRXTa6/hjJUrkebxRB8wm4Gf/pTVyYmIZqFps6a7paUFf//73/Hwww/rY2vWrIHD4dCAGwDOPvtspKWlYe3atfjYxz6GNWvW4LTTToPVatXnnHfeefjRj34Ej8cDp9OZ8O8Fg0EEg0H9t8/nAwCEQiGEQqGxfntThry3mfweZxse05mHx3Tm4TGdQSIRpP3qV0j/2tdgDoejD5WWYuCPf0Rk+fLodHOalvg5nXl4TGeeiT6mo/070ybofvjhh5Gbm4uLLrpIH2tubkZRUVHM88xmM/Lz89Hc3KzPqampiXmO+0CF0Obm5qRB9x133IHvfve7Bz3+3HPPwWazHdZ7mQ5Wr1492ZtAY4zHdObhMZ15eEynt/TeXiy75x6U/+c/+ljbkUfirVtuQdDjAf7xj0ncOhor/JzOPDymM89EHdNAIDCq502boPvBBx/E5ZdfjszMzAn5e7fddhtWrlyp//b5fKioqMC5554Lu90+IdswGUKhEFavXo1zzjkHFotlsjeHxgCP6czDYzrz8JjOANu2wXzJJTBt3aoP7fjYx1D20EM4KytrEjeMxgo/pzMPj+nMM9HHVGZDj2RaBN3/+c9/sG3bNjzxxBMxjxcXF6O1tTXmsXA4jM7OTl0PXlxcjJaWlpjnyL/j14wbZWRkICMj46DHLRbLrPhQzpb3OZvwmM48PKYzD4/pNJWgHVj4gQewxWpFdVYWj+kMw8/pzMNjOvNM1DEd7d+Y1Orlo/XAAw/g2GOPxdKlS2MeX758Obq6uvDWW2/pYy+88AIGBwdx4okn6nNefvnlmPn2q1evxoIFC5JOLSciIiIa0TDtwCIf/eikbhoREU0dkxp09/T0YP369Vi/fj0AoK6uDuvXr8e+ffv0OT6fD0899RSuueaag35/0aJF+MAHPoDPfe5zWLduHV599VV86UtfwmWXXYbS0lIAwCc/+UlYrVZcffXV2Lx5M5544gn8/Oc/j5k6TkRERJSSlhbgnHPYDoyIiEY0qdPL33zzTZx55pn6bwmEr7zySjz00EMAgMcffxyRSASf+MQnEr7Go48+ii996Us466yzkJaWhhUrVuAXv/iF/jwvLw/PPfccrr/+ehx77LFwuVz49re/zXZhREREdGheew24+GKgsTH6b7YDIyKiYUxq0H3GGWcgEokM+5xrr7122AA5Pz8fjz322LCvsWTJEvzHUEmUiIiIKGWRCPDLXwI33zzU+qu0FHjqKeDkkyd324iIaMqaFoXUiIiIiCZVTw9w7bXAH/849NgZZwCPPw4caEVKRESUyLQopEZEREQ0abZvB046KTbgvvVWYPVqBtxERDQiZrqJiIiIknnmGeAzn4lpB4aHHgIuumgyt4qIiKYRZrqJiIiI4kk7sBUrYtuBvfEGA24iIkoJM91ERERERi0twGWXAf/+99Bjn/gEcN99QE7OpG0WERFNT6MKun0+36hf0G63H/LGEBEREU2qRO3AfvIT4MtfZjswIiI6JKMKuh0OB0yj/KIZGBg4rA0iIiIimnDJ2oE9+STwvvdN7rYREdG0Nqqg+8UXX9T/3rNnD77+9a/jM5/5DJYvXw4AWLNmDR5++GHccccd47OVREREROOF7cCIiGgcjSroPv300/W/v/e97+GnP/0pPvGJT+hjH/7wh3HUUUfhvvvuw5VXXjn2W0lEREQ0HrZvjxZG27x56LFbbwV+8IPo1HIiIqLDlHL18jVr1uC444476PHjjjsO69atG5ONIiIiIhp3zzwDHHfcUMCdmws8/TRw550MuImIaMykHHRXVFTg/vvvP+jx3/72t6ioqBiTjSIiIiIaN+Ew8NWvsh0YERFNiJSHce+++26sWLEC/+///T+ceOKJAIB169Zhx44dePrpp8d8A4mIiIjGDNuBERHRBEs50/3BD34Q27dvx4UXXojOzk50dnbiwgsvxPbt2/HBD35wPLaRiIiI6PC99hpwzDFDAbfZDPz858CjjzLgJiKicXNIC5YqKirwgx/8YKy3hYiIiGjsRSLAr34FrFzJdmBERDThUs50A8B//vMffOpTn8LJJ5+MhoYGAMDvf/97vPLKK2O6cURERESHxe8HLr8cuOGGoYD79NOBt99mwE1ERBMi5aD76aefxnnnnYesrCy8/fbbCAaDAACv18vsNxEREU0d27cDJ54Y23/71luBf/2L/beJiGjCpBx0f//738e9996L+++/HxaLRR9/3/veh7fffntMN46IiIjokCRqB/anP7EdGBERTbiUg+5t27bhtNNOO+jxvLw8dHV1jcU2ERERER2aRO3AFi+OtgNbsWJyt42IiGallIPu4uJi7Ny586DHX3nlFdTW1o7JRhERERGlrKUFOOcc4K67hh677DJg7VpgwYLJ2y4iIprVUg66P/e5z+HGG2/E2rVrYTKZ0NjYiEcffRS33HILrrvuuvHYRiIiIqLhJWsH9thjbAdGRESTKuVFTV//+tcxODiIs846C4FAAKeddhoyMjJwyy234Mtf/vJ4bCMRERFRYmwHRkREU1xKQffAwABeffVVXH/99bj11luxc+dO9PT0YPHixcjhKDIRERFNJL8f+NznYquTn3468MQTrE5ORERTRkpBd3p6Os4991xs3boVDocDixcvHq/tIiIiIkpu+3bgoouGqpMD0XZgP/gBq5MTEdGUkvKa7iOPPBK7d+8ej20hIiIiGtmf/8x2YERENG0cUp/uW265BX/729/Q1NQEn88X8z8iIiKicREOA1/7WjTDzXZgREQ0TaQ8HPzBD34QAPDhD38YJpNJH49EIjCZTBgYGBi7rSMiIiICou3APvEJ4MUXhx677DLg/vtZnZyIiKa0lIPuF41fdkRERETjbc0a4OMfBxobo/82m4Gf/AT48pcBQwKAiIhoKko56D799NPHYzuIiIiIYiVqB1ZSAjz1FNuBERHRtDGqoHvjxo048sgjkZaWho0bNw773CVLlozJhhEREdEslqwd2OOPA8XFk7ddREREKRpV0L1s2TI0NzejqKgIy5Ytg8lkQiQSOeh5XNNNREREhy1RO7BbbgHuuIPVyYmIaNoZ1TdXXV0dCgsL9b+JiIiIxsWf/wxceeVQdfKcHOB3v4uu6SYiIpqGRhV0V1VVJfxvIiIiojERDgPf/Ga017ZYtAh45hlg4cLJ2y4iIqLDlPIcrUceeWTYn3/6058+5I0hIiKiWShRO7BLLwV++1u2AyMiomkv5aD7xhtvjPl3KBRCIBCA1WqFzWZj0E1ERESjx3ZgREQ0w6Wl+gsejyfmfz09Pdi2bRtOOeUU/NFYYZSIiIgoGWkHdvrpQwF3SQnw738DN9zAgJuIiGaMlIPuRObNm4cf/vCHB2XBiYiIiA7i9wOf+lQ0mx0KRR87/XTg7bfZf5uIiGacMQm6AcBsNqNRRqqJiIiIEtm+HTjpJOCxx4Yeu+UW4F//Yv9tIiKakVJe0/3Xv/415t+RSARNTU341a9+hfdxdJqIiIiS+fOfgc98BvD5ov9mOzAiIpoFUg66P/rRj8b822QyobCwEO9///vxk5/8ZKy2i4iIiGaKcBi4/XbgRz8aeoztwIiIaJZIOegeHBwcj+0gIiKimYjtwIiIaJYbszXdRERERDHWrAGOOWYo4DabgZ/9DPjjHxlwExHRrJFypnvlypWjfu5Pf/rTVF+eiIiIprtIBFi1Cli5cqg6eUkJ8OSTwCmnTO62ERERTbCUg+533nkH77zzDkKhEBYsWAAA2L59O9LT03HMMcfo80zsr0lERDT7+P3AtdfGVic/7TTgiSdYnZyIiGallIPuCy+8ELm5uXj44YfhdDoBAB6PB1dddRVOPfVU3HzzzWO+kURERDQNbN8OrFgBvPvu0GM33wzccQdgsUzedhEREU2ilNd0/+QnP8Edd9yhATcAOJ1OfP/732f1ciIiotnqz38Gjj9+KODOyQGeegr48Y8ZcBMR0ayWctDt8/nQ1tZ20ONtbW3o7u4ek40iIiKiaSIcBr7+deCii4b6by9aBLzxBvtvExER4RCC7o997GO46qqr8Mwzz6C+vh719fV4+umncfXVV+Oiiy4aj20kIiKiqai1FTj33Nj+25deCqxbx/7bREREB6S8pvvee+/FLbfcgk9+8pMIHahIajabcfXVV+Ouu+4a8w0kIiKiKWjNGuDii4GGhui/zeboVPIbbgBYTJWIiEilHHTbbDbcc889uOuuu7Br1y4AwJw5c5CdnT3mG0dERERTDNuBERERpSTloNvr9WJgYAD5+flYsmSJPt7Z2Qmz2Qy73T6mG0hERERThN8PfP7zwKOPDj3GdmBERETDSnlN92WXXYbHH3/8oMeffPJJXHbZZWOyUURERDTF7NgBnHRSbMB9883Av/7FgJuIiGgYKQfda9euxZlnnnnQ42eccQbWrl07JhtFREREU8hf/gIcdxzbgRERER2ClIPuYDCIcDh80OOhUAi9vb1jslFEREQ0BUg7sI99jO3AiIiIDlHKQfcJJ5yA++6776DH7733Xhx77LFjslFEREQ0yRK1A7vkErYDIyIiSlHKhdS+//3v4+yzz8aGDRtw1llnAQCef/55vPHGG3juuefGfAOJiIhogiVqB3bXXcCNN7IdGBERUYpSznS/733vw5o1a1BRUYEnn3wSzz77LObOnYuNGzfi1FNPHY9tJCIiookQiQC/+hVw+ulDAXdxMfDii8BXvsKAm4iI6BCknOkGgGXLluFRY/VSIiIimt7YDoyIiGhcHFLQLfr6+tDf3x/zGPt0ExERTTM7dgAXXTRUnRyItgO74w5WJyciIjpMKU8vDwQC+NKXvoSioiJkZ2fD6XTG/I+IiIimEbYDIyIiGlcpB9233norXnjhBfz6179GRkYGfvvb3+K73/0uSktL8cgjj4zHNhIREdFYYzswIiKiCZHy9PJnn30WjzzyCM444wxcddVVOPXUUzF37lxUVVXh0UcfxeWXXz4e20lERERjpbUV+MQngBdeGHrskkuABx6IZrqJiIhozKSc6e7s7ERtbS2A6Prtzs5OAMApp5yCl19+eWy3joiIiMbW668DxxwzFHCbzcDddwOPP86Am4iIaBykHHTX1tairq4OALBw4UI8+eSTAKIZcIfDMaYbR0RERGMkEgFWrYpWJGc7MCIiogmTctB91VVXYcOGDQCAr3/961i1ahUyMzNx00034dZbbx3zDSQiIqLD5PcDn/408KUvAaFQ9LFTTwXefhs45ZTJ3TYiIqIZLuU13TfddJP+99lnn4333nsPb731FubOnYslS5aM6cYRERHRYUrUDmzlSuCHP2R1ciIioglwWH26AaCqqgpVVVVjsS1EREQ0lv7yF+DKK4eqk+fkAA8+CFx88aRuFhER0WyS8vRyIiIimuKStQNbt44BNxER0QQ77Ew3ERERTSGJ2oFdfHG0HVhu7uRtFxER0SzFTDcREdFMEd8OLD0d+OlPgSeeYMBNREQ0SVIKusPhMB555BG0tLSM1/YQERFRqoZrB3bTTWwHRkRENIlSCrrNZjO+8IUvoK+vb7y2h4iIiFIxXDuwU0+d3G0jIiKi1KeXn3DCCVi/fv04bAoRERGlZMcOYPly4A9/GHps5Urg+eeBkpLJ2y4iIiJSKRdS++IXv4iVK1di//79OPbYY5GdnR3zc/bqJiIimgD/+7/RDDfbgREREU1pKQfdl112GQDghhtu0MdMJhMikQhMJhMGBgbGbuuIiIgoVjgMfOtbwA9/OPTYokXA009H/5+IiIimlJSD7rq6uvHYDiIiIhoJ24ERERFNOykH3VVVVeOxHURERDSc11+PBtj19dF/p6cDd90FfOUrrE5OREQ0haUcdIstW7Zg37596O/vj3n8wx/+8GFvFBERER0QiQD33BNt/SXVyYuLgSefZHVyIiKiaSDloHv37t342Mc+hk2bNulabiC6rhsA13QTERGNFb8f+MIXYquTn3oq8MQTrE5OREQ0TaTcMuzGG29ETU0NWltbYbPZsHnzZrz88ss47rjj8O9//3scNpGIiGgWStQO7Kab2A6MiIhomkk5071mzRq88MILcLlcSEtLQ1paGk455RTccccduOGGG/DOO++Mx3YSERHNHvHtwLKzo+3ALrlkcreLiIiIUpZypntgYAC5ByqkulwuNDY2AogWWNu2bVtKr/Xyyy/jwgsvRGlpKUwmE/7yl78c9JytW7fiwx/+MPLy8pCdnY3jjz8e+/bt05/39fXh+uuvR0FBAXJycrBixQq0tLTEvMa+fftwwQUXwGazoaioCLfeeivC4XCK75yIiGichcPAbbcBH/3oUMC9cCHwxhsMuImIiKaplIPuI488Ehs2bAAAnHjiibjzzjvx6quv4nvf+x5qa2tTei2/34+lS5di1apVCX++a9cunHLKKVi4cCH+/e9/Y+PGjfjWt76FzMxMfc5NN92EZ599Fk899RReeuklNDY24qKLLtKfDwwM4IILLkB/fz9ee+01PPzww3jooYfw7W9/O9W3TkRENG6sXV1Iv+CC2P7bF18MrFvH/ttERETTWMrTy2+//Xb4/X4AwPe+9z186EMfwqmnnoqCggI88cQTKb3W+eefj/PPPz/pz7/5zW/igx/8IO688059bM6cOfrfXq8XDzzwAB577DG8//3vBwD87ne/w6JFi/D666/jpJNOwnPPPYctW7bgX//6F9xuN5YtW4b//u//xte+9jV85zvfgdVqTWmbiYiIxppp3TqccfPNSOvoiD7AdmBEREQzRspB93nnnaf/PXfuXLz33nvo7OyE0+nUCuZjYXBwEH//+9/x1a9+Feeddx7eeecd1NTU4LbbbsNHP/pRAMBbb72FUCiEs88+W39v4cKFqKysxJo1a3DSSSdhzZo1OOqoo+B2u2Pew3XXXYfNmzfj6KOPTvj3g8EggsGg/tt3YJpfKBRCSFq2zEDy3mbye5xteExnHh7TGSQSQdpvfoP0m2+G+cDxjBQXY+CxxxA55ZTodHOalvg5nXl4TGceHtOZZ6KP6Wj/ziH36d65cyd27dqF0047Dfn5+do6bKy0traip6cHP/zhD/H9738fP/rRj/DPf/4TF110EV588UWcfvrpaG5uhtVqhcPhiPldt9uN5uZmAEBzc3NMwC0/l58lc8cdd+C73/3uQY8/99xzsNlsh/nupr7Vq1dP9ibQGOMxnXl4TKe39GAQS++5BxUvvaSPtS9ejDdvuQVBnw/4xz8mcetorPBzOvPwmM48PKYzz0Qd00AgMKrnpRx0d3R04JJLLsGLL74Ik8mEHTt2oLa2FldffTWcTid+8pOfpLyxiQwODgIAPvKRj+Cmm24CACxbtgyvvfYa7r33Xpx++ulj8neSue2227By5Ur9t8/nQ0VFBc4991zY7fZx/duTKRQKYfXq1TjnnHNgsVgme3NoDPCYzjw8pjPAzp0wX3IJTO++O/TQhz+M0kcewVmzYGB3NuDndObhMZ15eExnnok+pjIbeiQpB9033XQTLBYL9u3bh0WGwi6XXnopVq5cOWZBt8vlgtlsxuLFi2MeX7RoEV555RUAQHFxMfr7+9HV1RWT7W5paUFxcbE+Z926dTGvIdXN5TmJZGRkICMj46DHLRbLrPhQzpb3OZvwmM48PKbT1F//Gm0H5vVG/52djfB992FzdjaqbDYe0xmGn9OZh8d05uExnXkm6piO9m+kXL38ueeew49+9COUl5fHPD5v3jzs3bs31ZdLymq14vjjjz+oDdn27dtRVVUFADj22GNhsVjw/PPP68+3bduGffv2Yfny5QCA5cuXY9OmTWhtbdXnrF69Gna7/aCAnoiIaNyEw8A3vgF85CNDAfeBdmCRiy+e3G0jIiKicZNyptvv9ydc09zZ2ZkwMzycnp4e7Ny5U/9dV1eH9evXIz8/H5WVlbj11ltx6aWX4rTTTsOZZ56Jf/7zn3j22Wfx73//GwCQl5eHq6++GitXrkR+fj7sdju+/OUvY/ny5TjppJMAAOeeey4WL16MK664AnfeeSeam5tx++234/rrr095e4mIiA5JayvwiU8AL7ww9NjFFwMPPADk5gIs4kNERDRjjTrT3djYCAA49dRT8cgjj+jjJpMJg4ODuPPOO3HmmWem9MfffPNNHH300VpBfOXKlTj66KO1h/bHPvYx3Hvvvbjzzjtx1FFH4be//S2efvppnHLKKfoad999Nz70oQ9hxYoVOO2001BcXIxnnnlGf56eno6//e1vSE9Px/Lly/GpT30Kn/70p/G9730vpW0lIiI6JGvXAsceOxRwp6cDP/kJ8MQT0YCbiIiIZrRRZ7qPOOIIrFq1CnfddRfe//73480330R/fz+++tWvYvPmzejs7MSrr76a0h8/44wzRqx6/tnPfhaf/exnk/48MzMTq1atwqpVq5I+p6qqCv9gFVgiIppIkQjw619He21LJru4OBpsn3bapG4aERERTZxRB93/8z//g89//vP4wAc+gC1btuDee+9Fbm4uenp6cNFFF+H6669HSUnJ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aigqKkpxcXEyDMPV28MVjB49Wrt27bLdleDJmHRXU7Vr11aLFi10++23a8GCBfL29taCBQskSaGhoTp+/Ljd+gsXLignJ0ehoaG2NZc+JbDkdckaVI2UlBQdP35cTZo0kbe3t7y9vXXgwAGNGzdOTZs2lURNzaB58+aqX7++fvjhB0nU1NPUr19f3t7euuWWW+yOt2nTxvb08tDQUJ0/f165ubl2a44dO0ZN3VxKSor27t2rESNG2B3ne+pZzp07pxdeeEHTp09Xv3791L59eyUmJurBBx/UtGnTJPE99USdOnVSZmamcnNzdeTIEa1evVonT55U8+bNJVFTd5WYmKhVq1Zpw4YNaty4se24o+pV0ZqAgADVrFnT0ZdD0w2r4uJi29+9dOvWTbm5ucrIyLCdX79+vYqLi9W1a1fbmuTkZBUWFtrWJCUlqVWrVqpbt27Vbr6aGzp0qLKyspSZmWn7CQsL0/jx421PYKSmnu/QoUM6efKkGjVqJImaehpfX1916dKlTOzJd999p4iICEnWfzH08fHRunXrbOf37t2rgwcPqlu3bpKsNf3mm2/sGrmkpCQFBASUaehRdRYsWKBOnTrZno1Sgu+pZyksLFRhYaG8vOz/9bhGjRq2u1X4nnquwMBANWjQQN9//73S09PVv39/SdTU3RiGocTERK1YsULr169Xs2bN7M47ql7dunWze4+SNSXv4YwLg8mcPn3a2LFjh7Fjxw5DkjF9+nRjx44dxoEDB4z8/HxjwoQJRmpqqrF//34jPT3dePTRRw0/Pz+7JzvGxsYakZGRRlpamrF582bj5ptvNoYMGWI7n5ubazRs2NAYOnSosWvXLmP58uVGrVq1jLlz57rikk3vcjUtz6VPLzcMaupuLlfT06dPG88++6yRmppqZGdnG19++aXRsWNH4+abbzZ+/fVX23tQU/dype/pJ598Yvj4+Bjz5s0zvv/+e2PmzJlGjRo1jJSUFNt7jBo1ymjSpImxfv16Iz093ejWrZvRrVs32/kLFy4Y7dq1M6Kjo43MzExj9erVRoMGDYwJEyZU+fVWB5X5395ffvnFqFWrljFnzpxy34PvqXu5Uk179epltG3b1tiwYYPx448/GosWLTL8/f2N2bNn296D76l7uVJN/+///s/YsGGDsW/fPmPlypVGRESEMWjQILv3oKbu48knnzQCAwONjRs3GkeOHLH9nD171rbGEfX68ccfjVq1ahnjx4839uzZY8yaNcuoUaOGsXr1aqdcF023CW3YsMGQVOZn2LBhxrlz54yBAwcaYWFhhq+vr9GoUSPjvvvuM7Zt22b3HidPnjSGDBli1KlTxwgICDAeffRR4/Tp03Zrdu7caXTv3t3w8/MzbrzxRuPVV1+tysusVi5X0/KU13RTU/dyuZqePXvWiI6ONho0aGD4+PgYERERxuOPP24XfWEY1NTdVOZ7umDBAqNFixaGv7+/0aFDB2PlypV273Hu3DnjqaeeMurWrWvUqlXLGDhwoHHkyBG7Nfv37zfi4uKMmjVrGvXr1zfGjRtnFBYWVsUlVjuVqencuXONmjVrGrm5ueW+B99T93Klmh45csQYPny4ERYWZvj7+xutWrUy/vGPfxjFxcW29+B76l6uVNMZM2YYjRs3Nnx8fIwmTZoYf/nLX8rEfFFT91FeLSUZixYtsq1xVL02bNhg3HbbbYavr6/RvHlzu89wNMtvFwcAAAAAAByMv+kGAAAAAMBJaLoBAAAAAHASmm4AAAAAAJyEphsAAAAAACeh6QYAAAAAwElougEAAAAAcBKabgAAAAAAnISmGwAAAAAAJ6HpBgAADjdp0iTddtttLvv8pk2b6o033nDZ5wMAUIKmGwAAN2AYhqKiohQTE1Pm3OzZsxUUFKRDhw65YGfX5tlnn9W6deuu6ndolAEAZkTTDQCAG7BYLFq0aJHS0tI0d+5c2/Hs7Gw999xzmjlzpho3buzQzywsLHTo+12sTp06qlevntPeHwAAT0HTDQCAmwgPD9eMGTP07LPPKjs7W4ZhKCEhQdHR0YqMjFRcXJzq1Kmjhg0baujQoTpx4oTtd1evXq3u3bsrKChI9erV07333qt9+/bZzu/fv18Wi0UffPCBevXqJX9/fy1btqzcfVgsFs2ZM0dxcXGqWbOmmjdvro8++shuzfPPP6+WLVuqVq1aat68uV588UW7Jv7S28uHDx+uAQMGaNq0aWrUqJHq1aun0aNH237nzjvv1IEDB/TMM8/IYrHIYrHYfnfz5s3q0aOHatasqfDwcD399NM6c+aM7fzx48fVr18/1axZU82aNavwugAAcAWabgAA3MiwYcPUu3dvPfbYY3rrrbe0a9cuzZ07V3fffbciIyOVnp6u1atX69ixY3rggQdsv3fmzBmNHTtW6enpWrdunby8vDRw4EAVFxfbvf+f/vQn/fGPf9SePXvKvZW9xIsvvqj7779fO3fuVHx8vAYPHqw9e/bYzt9www1avHixvv32W82YMUPz58/X66+/ftlr27Bhg/bt26cNGzZoyZIlWrx4sRYvXixJ+uSTT9S4cWO9/PLLOnLkiI4cOSJJ2rdvn2JjY3X//fcrKytLH3zwgTZv3qzExETb+w4fPlw//fSTNmzYoI8++kizZ8/W8ePHK/3fOQAAzmQxDMNw9SYAAECp48ePq23btsrJydHHH3+sXbt2KSUlRWvWrLGtOXTokMLDw7V37161bNmyzHucOHFCDRo00DfffKN27dpp//79atasmd544w398Y9/vOznWywWjRo1SnPmzLEdu/3229WxY0fNnj273N+ZNm2ali9frvT0dEnWSffKlSuVmZkpydoYb9y4Ufv27VONGjUkSQ888IC8vLy0fPlySda/6R4zZozGjBlje98RI0aoRo0adrfcb968Wb169dKZM2d08OBBtWrVStu2bVOXLl0kSf/5z3/Upk0bvf7663bvBQCAKzDpBgDAzYSEhOiJJ55QmzZtNGDAAO3cuVMbNmxQnTp1bD+tW7eWJNst5N9//72GDBmi5s2bKyAgQE2bNpUkHTx40O69O3fuXKk9dOvWrczriyfdH3zwge644w6FhoaqTp06+stf/lLmsy7Vtm1bW8MtSY0aNbriRHrnzp1avHix3bXHxMSouLhY2dnZ2rNnj7y9vdWpUyfb77Ru3VpBQUGVuk4AAJzN29UbAAAAZXl7e8vb2/p/0/n5+erXr5+mTJlSZl2jRo0kSf369VNERITmz5+vsLAwFRcXq127djp//rzd+tq1a1/33lJTUxUfH6/JkycrJiZGgYGBWr58uf7xj39c9vd8fHzsXlssljK3v18qPz9fTzzxhJ5++uky55o0aaLvvvvu6i8AAIAqRNMNAICb69ixoz7++GM1bdrU1ohf7OTJk9q7d6/mz5+vHj16SLLegn09tm7dqkceecTudWRkpCRpy5YtioiI0J///Gfb+QMHDlzX50mSr6+vioqK7I517NhR3377rVq0aFHu77Ru3VoXLlxQRkaG7fbyvXv3Kjc397r3AwCAI3B7OQAAbm706NHKycnRkCFDtH37du3bt09r1qzRo48+qqKiItWtW1f16tXTvHnz9MMPP2j9+vUaO3bsdX3mhx9+qIULF+q7777TSy+9pG3bttkeXnbzzTfr4MGDWr58ufbt26c333xTK1asuO7rbNq0qZKTk3X48GHbk9mff/55bdmyRYmJicrMzNT333+vTz/91LaXVq1aKTY2Vk888YTS0tKUkZGhESNGqGbNmte9HwAAHIGmGwAANxcWFqavvvpKRUVFio6O1q233qoxY8YoKChIXl5etoeRZWRkqF27dnrmmWc0derU6/rMyZMna/ny5Wrfvr3effddvf/++7rlllskSffdd5+eeeYZJSYm6rbbbtOWLVv04osvXvd1vvzyy9q/f79uuukmNWjQQJLUvn17bdq0Sd9995169OihyMhITZw4UWFhYbbfW7RokcLCwtSrVy8NGjRII0eOVEhIyHXvBwAAR+Dp5QAAwI7FYtGKFSs0YMAAV28FAACPx6QbAAAAAAAnoekGAAAAAMBJeHo5AACww1+eAQDgOEy6AQAAAABwEppuAAAAAACchKYbAAAAAAAnoekGAAAAAMBJaLoBAAAAAHASmm4AAAAAAJyEphsAAAAAACeh6QYAAAAAwElougEAAAAAcJL/D2pmYxCXmyBNAAAAAElFTkSuQmCC\n"
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"source": [
"import matplotlib.pyplot as plt\n",
"\n",
"# Filter rows with both years\n",
"df_years = df2.dropna(subset=['beginyear', 'acquisition_year'])\n",
"\n",
"plt.figure(figsize=(10, 8))\n",
"plt.scatter(df_years['beginyear'], df_years['acquisition_year'], alpha=0.2, s=10, color='gray')\n",
"\n",
"# Diagonal reference line\n",
"min_year = 1250\n",
"# min_year = int(min(df_years['beginyear'].min(), df_years['acquisition_year'].min()))\n",
"max_year = int(max(df_years['beginyear'].max(), df_years['acquisition_year'].max()))\n",
"plt.plot([min_year, max_year], [min_year, max_year], color='red', lw=2)\n",
"\n",
"plt.xlabel(\"Year painted\")\n",
"plt.ylabel(\"Year acquired\")\n",
"plt.title(\"When the National Gallery Acquired Paintings vs. When They Were Painted\")\n",
"plt.grid(True)\n",
"plt.tight_layout()\n",
"plt.show()\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 807
},
"id": "ko7kHcBsVf5P",
"outputId": "3d96e2ca-790f-4318-ea77-3228e017024b"
},
"execution_count": 86,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 1000x800 with 1 Axes>"
],
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA94AAAMWCAYAAAAH1l7yAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzsvXecXHX1//+ae2fu9D7bd7PJJiENQiDSQov0pj8EFSw0UZTmxwJ+PpavUlQ+2BF7ARUBJajoR0CK1IQiKpBAKBs32b47O733+/tjOYeZ3dnNbpJNgfN8PPKAmblz7/u+792Zeb3POa9j0HVdhyAIgiAIgiAIgiAIc4KypwcgCIIgCIIgCIIgCG9lRHgLgiAIgiAIgiAIwhwiwlsQBEEQBEEQBEEQ5hAR3oIgCIIgCIIgCIIwh4jwFgRBEARBEARBEIQ5RIS3IAiCIAiCIAiCIMwhIrwFQRAEQRAEQRAEYQ4R4S0IgiAIgiAIgiAIc4gIb0EQBEEQBEEQBEGYQ0R4C8I+gsFgwBVXXLGnhzEj9qWxzpa1a9di7dq1e3oYAIBf/epXMBgM2LZt2x4bwzXXXAODwVDz3Pz583HhhRfumQHtw+zOe6vedZtrtm3bBoPBgF/96le7dL974lze6tBnyz//+c89PZRZc+GFF8LhcOzpYQh12Bu+s+px4YUXYv78+Xt6GMLbABHegjDH3HXXXTAYDPjTn/406bUDDzwQBoMBjz766KTX5s2bhzVr1uyOIe4QTz31FK655hrEYrE9Nob58+fDYDDgyiuvnPTaY489BoPBgLvvvnvW+928eTOuueaave7Hwc6yceNGXHTRRViwYAEsFgscDgdWrVqFz33uc+jp6dnTw9stxGIxWCwWGAwGvPLKK3t6OHs9F154IQwGA/9zuVw48MAD8e1vfxv5fH63jSOTyeCaa67BY489ttuOua9y2mmnwev1Qtf1mueff/55GAwGdHZ2TnrPI488AoPBgJ/97Ge7a5gzhsTa9v7tjcLpsssug6IoiEQiNc9HIhEoigKz2YxcLlfzWk9PDwwGA77whS/szqFOCX3P0r/GxkYcffTRdX/TzCVv1e9l4e2FCG9BmGOOOuooAMD69etrnk8kEnjppZdgNBqxYcOGmtf6+/vR39/P790beeqpp3DttdfuUeFN/PznP8fQ0NAu29/mzZtx7bXX1v2Cf/DBB/Hggw/usmPtLn7+85/j4IMPxv3334+zzjoLN998M775zW/iyCOPxG9+8xssXboU5XJ5Tw9zzlm3bh0MBgOam5tx++237+nh1LC33ltmsxm33XYbbrvtNnz961+Hz+fDVVddhQsuuGBW++ns7EQ2m8V555036zFkMhlce+21dYX3l770JWSz2Vnv863KUUcdhVgshpdeeqnm+Q0bNsBoNKKvrw8DAwOTXqP37m0cc8wxfP/RP7PZjKOPPrrmue9973t7eqiTOOqoo6Dr+qTv+KeeegqKoqBYLE7KKtgbr8WqVat4nq+66ioMDQ3hrLPOwk9+8pNZ7ee8885DNputu/izPab7XhaEfQXjnh6AILzVaW1txYIFCyYJ76effhq6ruN973vfpNfo8d70xbu3smLFCrz22mv43//9X3z/+9+f8+Npmjbnx9jVPPXUU7j00ktx5JFH4q9//SucTmfN69/+9rfxta99bQ+NbnpKpRIqlcoum/ff/va3OO2009DZ2Yk77rgDX/3qV3fJfncFMznHXC4HTdOgKLtv3dxoNOLDH/4wP77ssstw2GGH4fe//z2+853voLW1dUb7MRgMsFgsczI+o1F+zhDVi70HHHAAP79hwwacdtppeOSRR7B+/Xqce+65/Nr69evh9/uxbNmy3T7e7dHV1YWurq6a5z7xiU+gq6ur5r7cG6m+Fu9617v4+Q0bNmDlypXIZrNYv359zXf9+vXroSjKTme8VSoVFAqFXfI319bWVjPX559/PhYtWoTvfve7+MQnPjHj/aiqClVVd3o8grCvIhFvQdgNHHXUUXj++edrojIbNmzAihUrcOqpp+KZZ55BpVKpec1gMODII4+ctK977rkH+++/P8xmM1asWIG//e1vk7YZHBzERz7yETQ1NfF2t9xyS802lIp911134Wtf+xra29thsVhw/PHHY8uWLdOezzXXXIOrr74aALBgwQJOQZu4Er2rxjod8+fPx/nnnz+jqHdvby8uu+wyLFmyBFarFX6/H+973/tqxv2rX/0K73vf+wAA73znO/ncKNJWrw43GAzi4osvRlNTEywWCw488ED8+te/rtmG6lu/9a1v4Wc/+xkWLlwIs9mMQw45BM8991zNths3bsSFF16Irq4uWCwWNDc34yMf+QjC4fCM56Waa6+9FgaDAbfffvsk0Q0AFosF119/fc0PoieffBLve9/7MG/ePJjNZnR0dODTn/70DkcWY7EYPvWpT6GjowNmsxmLFi3CjTfeWHPfV8/R9773PZ6jf/zjH7Db7fiv//qvSfsdGBiAqqq44YYbtjuGvr4+PPnkkzj33HNx7rnnYuvWrXjqqafqbvvb3/4Whx56KGw2G7xeL4455piaaLSu6/jqV7+K9vZ22Gw2vPOd78TLL788qb59qvrjerWOE+8t+hv93e9+hy996Utoa2uDzWZDIpEAADz77LM45ZRT4Ha7YbPZcOyxx06KrAHjP+QPOeQQWCwWLFy4ED/96U+3O1fToSgKj3Pbtm2IRCK46qqrcMABB8DhcMDlcuHUU0/Fiy++WPO+ejXeVI87ODiIM888Ew6HAw0NDbjqqqs4A2Pbtm1oaGgA8Oa9bDAYcM011wCoP8fkMzGTz6DHHnsM73jHO2rmp94+H3roIRx11FHweDxwOBxYsmTJdtOB999/f7zzne+c9HylUkFbWxve+9738nO/+93vsHr1ajidTrhcLhxwwAG46aabpt1/PQ499FBomjbpXtiwYQOOOeYYHHrooTWvVSoVPPPMM1izZs2kc87n8/jMZz6DhoYG2O12vOc978HY2NikY95///04+uijYbfb4XQ6cfrpp+Pll1+u2WYm13pXMpPjVCoVfO9738OKFStgsVjQ1NSEj3/844hGo7zNBRdcgEAggGKxOOkYJ510EpYsWTLlGObNm4eOjo661+LII4/EmjVr6r62YsUKeDweAOPX4Ctf+QoWLVrEn8Wf+9znJpV60D1/++23Y8WKFTCbzXy/7+z37ESam5uxbNkybN26FcDMv7Pqfe7Nnz8fZ5xxBtavX49DDz0UFosFXV1d+M1vflPzvum+l4GZ3YPAm79LLBYL9t9//92eMi+8vZElYkHYDRx11FG47bbb8Oyzz/IP1g0bNmDNmjVYs2YN4vE4XnrpJaxcuZJfW7p0Kfx+f81+1q9fjz/+8Y+47LLL4HQ68f3vfx9nn302+vr6eNvR0VEcfvjh/CXc0NCA+++/HxdffDESiQQ+9alP1ezzf//3f6EoCq666irE43F84xvfwIc+9CE8++yzU57PWWedhddffx133nknvvvd7yIQCAAA/zieq7FOxRe/+EX85je/2W7U+7nnnsNTTz2Fc889F+3t7di2bRt+/OMfY+3atdi8eTNsNhuOOeYYfPKTn8T3v/99fOELX+AI0FSRoGw2i7Vr12LLli244oorsGDBAqxbtw4XXnghYrHYJLF4xx13IJlM4uMf/zgMBgO+8Y1v4KyzzkJPTw9MJhOA8R/4PT09uOiii9Dc3IyXX34ZP/vZz/Dyyy/jmWeemZWRVCaTwSOPPIK1a9eivb19xu9bt24dMpkMLr30Uvj9fvzjH//AzTffjIGBAaxbt27G+6ExHHvssRgcHMTHP/5xzJs3D0899RQ+//nPY3h4eFKK6K233opcLodLLrkEZrMZ8+bNw3ve8x6OsFYvENx5553QdR0f+tCHtjuOO++8E3a7HWeccQasVisWLlyI22+/fVJk6dprr8U111yDNWvW4LrrroOmaXj22WfxyCOP4KSTTgIAfPnLX8ZXv/pVnHbaaTjttNPw73//GyeddBIKhcKs5mYmXH/99dA0DVdddRXy+Tw0TcMjjzyCU089FatXr8ZXvvIVKIqCW2+9FccddxyefPJJHHrooQCATZs24aSTTkJDQwOuueYalEolfOUrX0FTU9NOjek///kPAMDv96Onpwf33HMP3ve+92HBggUYHR3FT3/6Uxx77LHYvHnzdiPi5XIZJ598Mg477DB861vfwsMPP4xvf/vbWLhwIS699FI0NDTgxz/+MS699FK85z3vwVlnnQUA/Hk5FTP5DHr++edxyimnoKWlBddeey3K5TKuu+66ms8yAHj55ZdxxhlnYOXKlbjuuutgNpuxZcuWugsd1Zxzzjm45pprMDIygubm5pqxDQ0NcdT5oYcewgc+8AEcf/zxuPHGGwEAr7zyCjZs2FB3wWk6LBYLVq9eXZNJReVLa9asQSwWw7333suvbdq0CYlEom6G1ZVXXgmv14uvfOUr2LZtG773ve/hiiuuwO9//3ve5rbbbsMFF1yAk08+GTfeeCMymQx+/OMf84Jzde319q71rmKmx/n4xz+OX/3qV7jooovwyU9+Elu3bsUPfvADPP/889iwYQNMJhPOO+88/OY3v8EDDzyAM844g987MjKCRx55BF/5ylemHctRRx2FP/7xj8jn8zCbzSgUCnjuuedw6aWXIpPJ4HOf+xx0XYfBYEA0GsXmzZs5ilypVPDud78b69evxyWXXIJly5Zh06ZN+O53v4vXX38d99xzT82xHnnkEdx111244oorEAgEMH/+/F32PVtNsVhEf38//x3t7HfWli1b8N73vhcXX3wxLrjgAtxyyy248MILsXr1aqxYsWK738szvQcffPBBnH322Vi+fDluuOEGhMNhXHTRRbP6bhSEnUIXBGHOefnll3UA+vXXX6/ruq4Xi0Xdbrfrv/71r3Vd1/Wmpib9hz/8oa7rup5IJHRVVfWPfexjNfsAoGuapm/ZsoWfe/HFF3UA+s0338zPXXzxxXpLS4seCoVq3n/uuefqbrdbz2Qyuq7r+qOPPqoD0JctW6bn83ne7qabbtIB6Js2bZr2nL75zW/qAPStW7dOem1Xj3UqOjs79dNPP13XdV2/6KKLdIvFog8NDdWc37p163j7evt7+umndQD6b37zG35u3bp1OgD90UcfnbT9scceqx977LH8+Hvf+54OQP/tb3/LzxUKBf2II47QHQ6HnkgkdF3X9a1bt+oAdL/fr0ciEd72z3/+sw5A/7//+79px3nnnXfqAPQnnniCn7v11lunvAYEzfunPvWpSa+Fw2F9bGyM/1XfB/XGcMMNN+gGg0Hv7e3l577yla/oE79KOjs79QsuuIAfX3/99brdbtdff/31mu3+53/+R1dVVe/r69N1/c05crlcejAYrNn2gQce0AHo999/f83zK1eurLke03HAAQfoH/rQh/jxF77wBT0QCOjFYpGf6+7u1hVF0d/znvfo5XK55v2VSkXXdV0PBoO6pmn66aefzs/R/gDUnHu9+dH1+tdu4r1F93BXV1fN9ahUKvrixYv1k08+ueb4mUxGX7BggX7iiSfyc2eeeaZusVhqrtnmzZt1VVXrjmsiF1xwgW632/ke2bJli/71r39dNxgM+sqVK3Vd1/VcLjdprrZu3aqbzWb9uuuuq3kOgH7rrbfW7B9AzXa6rusHHXSQvnr1an48NjamA9C/8pWvTBpjvTme6WfQu971Lt1ms+mDg4P8XHd3t240Gmv2+d3vflcHoI+NjU03XZN47bXXJh1T13X9sssu0x0OB1/X//qv/9JdLpdeKpVmtf+puPrqq3UA+sDAgK7r458fFotFz+fz+n333aerqsqfTT/4wQ90APqGDRv4/XR/nnDCCTX32Kc//WldVVU9Fovpuq7ryWRS93g8k76vRkZGdLfbXfP8TK/1TLDb7TV/Z9XM9DhPPvmkDkC//fbba7b729/+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NBontRYCxqMjACY5QpfLZZx44omIRCL47//+byxduhR2ux2Dg4O48MILZz2GSqWCE088EZ/73Ofqvr7ffvvVPK6OnlRz/vnn45vf/CbuuecefOADH8Add9yBM844oyZ6UQ9d13HnnXcinU7XFdTBYBCpVKpuVsDOMlVt42zMpCbOB83/N7/5TaxataruexwOxy7rs62qKk444YQpX//617+O//f//h8+8pGP4Prrr4fP54OiKPjUpz41o3tlrlyOd+Vnm9VqxRNPPIFHH30U9957L/72t7/h97//PY477jg8+OCD057DOeecg89//vNYt24dPvWpT+Guu+6C2+2uEdWNjY144YUX8MADD+D+++/H/fffj1tvvRXnn3/+JKPGmeD3+7F06VKsX78eqVQKGzdurKlFXrNmDdavX4+BgQH09fVN6ZEw08/x2267raaGnZj42bK7HK1ncpxKpYLGxsYp2wpWi93ly5dj9erV+O1vf4vzzz8fv/3tb6FpGt7//vdv9ziKouCII47AU089xa3Fqk351qxZg1tuuYVrv6u/uyqVCg444AB85zvfqbvvjo6OmsdTfVbs7PdsIBCY9jNgZ7+zduZvdbb3oCDsSeRuFITdRHW62YYNG2rSUlevXg2z2YzHHnsMzz77LE477bQdOkZDQwOcTifK5fK0X5K7gtkYfNVjLsa6cOFCfPjDH8ZPf/pTHHbYYZNev/vuu3HBBRfg29/+Nj+Xy+Um9SKfzbl1dnZi48aNqFQqNZGvV199lV+fDdFoFH//+99x7bXX4stf/jI/T6v6s8Vut2Pt2rV4/PHHOeK2PTZt2oTXX38dv/71r3H++efz8zuaBrtw4UKkUqmdvs77778/DjroINx+++1ob29HX18fbr755u2+7/HHH8fAwACuu+66SSZ50WgUl1xyCe655x58+MMfxsKFC1GpVLB58+YpRS1d0+7u7poFsrGxsUkRGooQxmKxmgjRxEyI2UDp0y6Xa9o5bWhogNVqrXvvvPbaazt8/IncfffdeOc734lf/vKXNc/HYjE2XtxZdvbzph6NjY2wWCx1uzjUe05RFBx//PE4/vjj8Z3vfAdf//rX8cUvfhGPPvrotNdhwYIFOPTQQ/H73/8eV1xxBf74xz/izDPPhNlsrtlO0zS8613vwrve9S5UKhVcdtll+OlPf4r/9//+X92o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caLCw8OtjoLTYK3sg7WyD9bKPlgr+2Ct7IO1so9AXSsurgYAAAAAgBdxxhsAAAAAAC+ieAMAAAAA4EUUbwAAAAAAvIjiDZ82ZcoUXXTRRapatapiY2PVp08fbdq0ye2YTp06yeFwuP2666673I7ZsWOHevXqpcjISMXGxmr06NEqLCysyIfi91JTU49bhyZNmrj2Hz16VEOHDlWNGjVUpUoV9evXT7t373a7D9apYpx77rnHrZXD4dDQoUMl8Zyy0vLly9W7d2/Fx8fL4XDovffec9tvGIZSUlJUp04dVapUSV27dtXPP//sdkxOTo4GDBigqKgoRUdHa9CgQcrLy3M7Zv369erQoYMiIiKUkJCgadOmefuh+Z1TrZXT6dSYMWPUsmVLVa5cWfHx8br55pu1c+dOt/s40XPx0UcfdTuGtTp7p3te3XLLLcetQ/fu3d2O4XlVMU63Vif6t8vhcGj69OmuY3heeV9Zfj731M99n332mS644AKFh4erUaNGmjdvnrcfntdQvOHTPv/8cw0dOlSrVq1SRkaGnE6nkpOTdejQIbfj7rjjDu3atcv169i/QIuKitSrVy8VFBRo5cqVmj9/vubNm6eUlJSKfjh+r3nz5m7r8MUXX7j2jRgxQh9++KHeeustff7559q5c6f69u3r2s86VZyvvvrKbZ0yMjIkSf/+979dx/CcssahQ4fUunVrzZo164T7p02bpqeeekqzZ8/W6tWrVblyZXXr1k1Hjx51HTNgwABt2LBBGRkZWrRokZYvX67Bgwe79ufm5io5OVmJiYlat26dpk+frtTUVM2ZM8frj8+fnGqtDh8+rK+//loTJkzQ119/rXfeeUebNm3SVVddddyxkyZNcnuu3XPPPa59rJVnnO55JUndu3d3W4fXX3/dbT/Pq4pxurU6do127dqluXPnyuFwqF+/fm7H8bzyrrL8fO6Jn/u2bt2qXr16qXPnzsrKytJ9992n22+/XR9//HGFPl6PMQAb2bNnjyHJ+Pzzz123XX755ca999570q/56KOPjKCgICM7O9t123PPPWdERUUZ+fn53owbUCZOnGi0bt36hPv2799vhIaGGm+99Zbrto0bNxqSjMzMTMMwWCcr3XvvvUbDhg2N4uJiwzB4TvkKSca7777r2i4uLjbi4uKM6dOnu27bv3+/ER4ebrz++uuGYRjGDz/8YEgyvvrqK9cx//vf/wyHw2H8/vvvhmEYxrPPPmtUr17dba3GjBljNG7c2MuPyH/9fa1OZM2aNYYkY/v27a7bEhMTjZkzZ570a1grzzvRWg0cONC4+uqrT/o1PK+sUZbn1dVXX21cccUVbrfxvKp4f//53FM/9z3wwANG8+bN3b7XddddZ3Tr1s3bD8krOOMNWzlw4IAkKSYmxu32BQsWqGbNmmrRooXGjh2rw4cPu/ZlZmaqZcuWql27tuu2bt26KTc3Vxs2bKiY4AHi559/Vnx8vBo0aKABAwZox44dkqR169bJ6XSqa9eurmObNGmievXqKTMzUxLrZJWCggK9+uqruu222+RwOFy385zyPVu3blV2drbb86hatWpq37692/MoOjpaF154oeuYrl27KigoSKtXr3Yd07FjR4WFhbmO6datmzZt2qR9+/ZV0KMJPAcOHJDD4VB0dLTb7Y8++qhq1Kihtm3bavr06W4vs2StKs5nn32m2NhYNW7cWEOGDNHevXtd+3he+abdu3frv//9rwYNGnTcPp5XFevvP5976ue+zMxMt/soOabkPuwmxOoAQFkVFxfrvvvu06WXXqoWLVq4br/hhhuUmJio+Ph4rV+/XmPGjNGmTZv0zjvvSJKys7PdntSSXNvZ2dkV9wD8XPv27TVv3jw1btxYu3btUlpamjp06KDvv/9e2dnZCgsLO+4Hztq1a7vWgHWyxnvvvaf9+/frlltucd3Gc8o3lfzenuj3/tjnUWxsrNv+kJAQxcTEuB1Tv3794+6jZF/16tW9kj+QHT16VGPGjNH111+vqKgo1+3Dhw/XBRdcoJiYGK1cuVJjx47Vrl27NGPGDEmsVUXp3r27+vbtq/r162vLli166KGH1KNHD2VmZio4OJjnlY+aP3++qlat6vbyZYnnVUU70c/nnvq572TH5Obm6siRI6pUqZI3HpLXULxhG0OHDtX333/v9r5hSW7vsWrZsqXq1KmjLl26aMuWLWrYsGFFxwxYPXr0cM2tWrVS+/btlZiYqDfffNN2fzEGkpdeekk9evRQfHy86zaeU4DnOJ1OXXvttTIMQ88995zbvpEjR7rmVq1aKSwsTHfeeaemTJmi8PDwio4asPr37++aW7ZsqVatWqlhw4b67LPP1KVLFwuT4VTmzp2rAQMGKCIiwu12nlcV62Q/n+N4vNQctjBs2DAtWrRIy5YtU926dU95bPv27SVJmzdvliTFxcUddxXFku24uDgvpIUkRUdH6/zzz9fmzZsVFxengoIC7d+/3+2Y3bt3u9aAdap427dv1yeffKLbb7/9lMfxnPINJb+3J/q9P/Z5tGfPHrf9hYWFysnJ4blmgZLSvX37dmVkZLid7T6R9u3bq7CwUNu2bZPEWlmlQYMGqlmzptvfeTyvfMuKFSu0adOm0/77JfG88qaT/XzuqZ/7TnZMVFSULU/qULzh0wzD0LBhw/Tuu+9q6dKlx7006ESysrIkSXXq1JEkJSUl6bvvvnP7R7PkB6BmzZp5JTekvLw8bdmyRXXq1FG7du0UGhqqTz/91LV/06ZN2rFjh5KSkiSxTlZ4+eWXFRsbq169ep3yOJ5TvqF+/fqKi4tzex7l5uZq9erVbs+j/fv3a926da5jli5dquLiYtd/oCQlJWn58uVyOp2uYzIyMtS4cWNeYulBJaX7559/1ieffKIaNWqc9muysrIUFBTkelkza2WN3377TXv37nX7O4/nlW956aWX1K5dO7Vu3fq0x/K88rzT/XzuqZ/7kpKS3O6j5JiS+7Adiy/uBpzSkCFDjGrVqhmfffaZsWvXLtevw4cPG4ZhGJs3bzYmTZpkrF271ti6davx/vvvGw0aNDA6duzouo/CwkKjRYsWRnJyspGVlWUsXrzYqFWrljF27FirHpZfuv/++43PPvvM2Lp1q/Hll18aXbt2NWrWrGns2bPHMAzDuOuuu4x69eoZS5cuNdauXWskJSUZSUlJrq9nnSpWUVGRUa9ePWPMmDFut/OcstbBgweNb775xvjmm28MScaMGTOMb775xnUl7EcffdSIjo423n//fWP9+vXG1VdfbdSvX984cuSI6z66d+9utG3b1li9erXxxRdfGOedd55x/fXXu/bv37/fqF27tnHTTTcZ33//vbFw4UIjMjLSeP755yv88drZqdaqoKDAuOqqq4y6desaWVlZbv9+lVytd+XKlcbMmTONrKwsY8uWLcarr75q1KpVy7j55ptd34O18oxTrdXBgweNUaNGGZmZmcbWrVuNTz75xLjggguM8847zzh69KjrPnheVYzT/R1oGIZx4MABIzIy0njuueeO+3qeVxXjdD+fG4Znfu775ZdfjMjISGP06NHGxo0bjVmzZhnBwcHG4sWLK/TxegrFGz5N0gl/vfzyy4ZhGMaOHTuMjh07GjExMUZ4eLjRqFEjY/To0caBAwfc7mfbtm1Gjx49jEqVKhk1a9Y07r//fsPpdFrwiPzXddddZ9SpU8cICwszzjnnHOO6664zNm/e7Np/5MgR4+677zaqV69uREZGGtdcc42xa9cut/tgnSrOxx9/bEgyNm3a5HY7zylrLVu27IR/5w0cONAwDPMjxSZMmGDUrl3bCA8PN7p06XLcGu7du9e4/vrrjSpVqhhRUVHGrbfeahw8eNDtmG+//da47LLLjPDwcOOcc84xHn300Yp6iH7jVGu1devWk/77tWzZMsMwDGPdunVG+/btjWrVqhkRERFG06ZNjUceecSt7BkGa+UJp1qrw4cPG8nJyUatWrWM0NBQIzEx0bjjjjvcPuLIMHheVZTT/R1oGIbx/PPPG5UqVTL2799/3NfzvKoYp/v53DA893PfsmXLjDZt2hhhYWFGgwYN3L6H3TgMwzC8dDIdAAAAAICAx3u8AQAAAADwIoo3AAAAAABeRPEGAAAAAMCLKN4AAAAAAHgRxRsAAAAAAC+ieAMAAAAA4EUUbwAAAAAAvIjiDQAAAACAF1G8AQCAx6WmpqpNmzaWff9zzz1XTzzxhGXfHwCAY1G8AQDwAYZhqGvXrurWrdtx+5599llFR0frt99+syDZmRk1apQ+/fTTcn0NZRkA4K8o3gAA+ACHw6GXX35Zq1ev1vPPP++6fevWrXrggQf09NNPq27duh79nk6n06P3d6wqVaqoRo0aXrt/AADshOINAICPSEhI0JNPPqlRo0Zp69atMgxDgwYNUnJystq2basePXqoSpUqql27tm666Sb9+eefrq9dvHixLrvsMkVHR6tGjRr65z//qS1btrj2b9u2TQ6HQ2+88YYuv/xyRUREaMGCBSfM4XA49Nxzz6lHjx6qVKmSGjRooP/85z9ux4wZM0bnn3++IiMj1aBBA02YMMGtyP/9pea33HKL+vTpo8cee0x16tRRjRo1NHToUNfXdOrUSdu3b9eIESPkcDjkcDhcX/vFF1+oQ4cOqlSpkhISEjR8+HAdOnTItX/Pnj3q3bu3KlWqpPr165/0cQEAYBWKNwAAPmTgwIHq0qWLbrvtNj3zzDP6/vvv9fzzz+uKK65Q27ZttXbtWi1evFi7d+/Wtdde6/q6Q4cOaeTIkVq7dq0+/fRTBQUF6ZprrlFxcbHb/T/44IO69957tXHjxhO+rL3EhAkT1K9fP3377bcaMGCA+vfvr40bN7r2V61aVfPmzdMPP/ygJ598Ui+88IJmzpx5yse2bNkybdmyRcuWLdP8+fM1b948zZs3T5L0zjvvqG7dupo0aZJ27dqlXbt2SZK2bNmi7t27q1+/flq/fr3eeOMNffHFFxo2bJjrfm+55Rb9+uuvWrZsmf7zn//o2Wef1Z49e8r8ew4AgLc5DMMwrA4BAABK7dmzR82bN1dOTo7efvttff/991qxYoU+/vhj1zG//fabEhIStGnTJp1//vnH3ceff/6pWrVq6bvvvlOLFi20bds21a9fX0888YTuvffeU35/h8Ohu+66S88995zrtksuuUQXXHCBnn322RN+zWOPPaaFCxdq7dq1kswz3u+9956ysrIkmeX4s88+05YtWxQcHCxJuvbaaxUUFKSFCxdKMt/jfd999+m+++5z3e/tt9+u4OBgt5fff/HFF7r88st16NAh7dixQ40bN9aaNWt00UUXSZJ+/PFHNW3aVDNnznS7LwAArMIZbwAAfExsbKzuvPNONW3aVH369NG3336rZcuWqUqVKq5fTZo0kSTXy8l//vlnXX/99WrQoIGioqJ07rnnSpJ27Njhdt8XXnhhmTIkJSUdt33sGe833nhDl156qeLi4lSlShWNHz/+uO/1d82bN3eVbkmqU6fOac9Mf/vtt5o3b57bY+/WrZuKi4u1detWbdy4USEhIWrXrp3ra5o0aaLo6OgyPU4AACpCiNUBAADA8UJCQhQSYv4znZeXp969e2vq1KnHHVenTh1JUu/evZWYmKgXXnhB8fHxKi4uVosWLVRQUOB2fOXKlc86W2ZmpgYMGKC0tDR169ZN1apV08KFC/X444+f8utCQ0Pdth0Ox3Evhf+7vLw83XnnnRo+fPhx++rVq6effvqp/A8AAIAKRvEGAMDHXXDBBXr77bd17rnnusr4sfbu3atNmzbphRdeUIcOHSSZL8c+G6tWrdLNN9/stt22bVtJ0sqVK5WYmKhx48a59m/fvv2svp8khYWFqaioyO22Cy64QD/88IMaNWp0wq9p0qSJCgsLtW7dOtdLzTdt2qT9+/efdfhGVQIAAAH4SURBVB4AADyFl5oDAODjhg4dqpycHF1//fX66quvtGXLFn388ce69dZbVVRUpOrVq6tGjRqaM2eONm/erKVLl2rkyJFn9T3feustzZ07Vz/99JMmTpyoNWvWuC5odt5552nHjh1auHChtmzZoqeeekrvvvvuWT/Oc889V8uXL9fvv//uumL7mDFjtHLlSg0bNkxZWVn6+eef9f7777uyNG7cWN27d9edd96p1atXa926dbr99ttVqVKls84DAICnULwBAPBx8fHx+vLLL1VUVKTk5GS1bNlS9913n6KjoxUUFOS6QNm6devUokULjRgxQtOnTz+r75mWlqaFCxeqVatWeuWVV/T666+rWbNmkqSrrrpKI0aM0LBhw9SmTRutXLlSEyZMOOvHOWnSJG3btk0NGzZUrVq1JEmtWrXS559/rp9++kkdOnRQ27ZtlZKSovj4eNfXvfzyy4qPj9fll1+uvn37avDgwYqNjT3rPAAAeApXNQcAAG4cDofeffdd9enTx+ooAAD4Bc54AwAAAADgRRRvAAAAAAC8iKuaAwAAN7wLDQAAz+KMNwAAAAAAXkTxBgAAAADAiyjeAAAAAAB4EcUbAAAAAAAvongDAAAAAOBFFG8AAAAAALyI4g0AAAAAgBdRvAEAAAAA8CKKNwAAAAAAXvT/FHJA7OO4eL4AAAAASUVORK5CYII=\n"
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"source": [
"import matplotlib.pyplot as plt\n",
"\n",
"# Compute acquisition lag (how long after it was painted the work was acquired)\n",
"df2[\"acquisition_year\"] = pd.to_numeric(df2[\"acquisition_year\"], errors=\"coerce\")\n",
"df2[\"beginyear\"] = pd.to_numeric(df2[\"beginyear\"], errors=\"coerce\")\n",
"\n",
"# Filter to valid rows\n",
"df_lag = df2.dropna(subset=[\"beginyear\", \"acquisition_year\"]).copy()\n",
"df_lag[\"acquisition_lag\"] = df_lag[\"acquisition_year\"] - df_lag[\"beginyear\"]\n",
"\n",
"# Filter to reasonable lags (remove negative or overly large)\n",
"df_lag = df_lag[(df_lag[\"acquisition_lag\"] >= 0) & (df_lag[\"acquisition_lag\"] <= 300)]\n",
"\n",
"# Plot histogram\n",
"plt.figure(figsize=(10, 6))\n",
"plt.hist(df_lag[\"acquisition_lag\"], bins=30, color=\"steelblue\", edgecolor=\"white\")\n",
"plt.title(\"How Long After Painting Was Each Work Acquired?\")\n",
"plt.xlabel(\"Years between painting and acquisition\")\n",
"plt.ylabel(\"Number of works\")\n",
"plt.grid(True)\n",
"plt.tight_layout()\n",
"plt.show()\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 607
},
"id": "KiRfmsGjz9lG",
"outputId": "7b3da0ff-7ef6-4615-ca14-f23005cb12b4"
},
"execution_count": 87,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 1000x600 with 1 Axes>"
],
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA90AAAJOCAYAAACqS2TfAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAdJhJREFUeJzt3Xl8TGf///H3JLJIIiISWSpi33ctUmttsVQpbbW6pOqm1ShFq9WqrQvV6nqjm+JWupfe3GoXalelVFUFRUtoqESoiOT6/eGX+RoJJuTMJPF6Ph55PDLnXHOuzzlzzWTeOZvNGGMEAAAAAADynYe7CwAAAAAAoKgidAMAAAAAYBFCNwAAAAAAFiF0AwAAAABgEUI3AAAAAAAWIXQDAAAAAGARQjcAAAAAABYhdAMAAAAAYBFCNwAAAAAAFiF0AwBc6rXXXlPFihXl6emp+vXru7ucfNG6dWu1bt06X5f5+++/y2azacaMGfm6XFyb7Nfj9ddfd3cp16x8+fK6/fbb3V2GZcaMGSObzeaSvhISEmSz2ZSQkOCS/gAUboRuADeEGTNmyGaz6Ycffsh1fuvWrVW7dm0XV5VTYf9SPHz4cNlsNvXq1SvX+UuWLNHw4cPVrFkzTZ8+Xa+88ooOHz6sMWPGaNu2bS6rM/sLc/aPl5eXKlasqIceekj79u1zWR2SNGfOHL311lsu7fNKNm3aJJvNpjfffDPHvG7duslms2n69Ok55rVs2VI33XSTK0rUww8/7PD6Xfzj6+vrkhryojBs07xo3LixbDabpk6d6u5SCpSFCxeqc+fOioiIUFBQkNq3b6+ffvrJ3WUBKAAI3QCAfGGM0aeffqry5ctr/vz5OnXqVI42K1askIeHh6ZNm6aHHnpInTt31uHDhzV27FiXhu5sgwYN0qxZs/TBBx+oS5cu+vzzz3XLLbfo8OHDeVrOkiVLtGTJkmuq4XKhOzo6Wv/8848efPDBa1rutWrYsKH8/Py0Zs2aHPPWrVunYsWKae3atQ7Tz507p82bN6tZs2auKlM+Pj6aNWtWjp/cwqu7FZZt6ow9e/Zo8+bNKl++vGbPnu3uchyMHDlS//zzj9v6v/322+Xl5aVRo0ZpxIgR+vnnn9W+fXv99ddfbqsJQMFQzN0FAACKhoSEBP3xxx9asWKFYmNj9c033yguLs6hzbFjx1S8eHF5e3tbXs/p06fl7+9/xTYtWrTQXXfdJUnq06ePqlatqkGDBmnmzJkaMWKE031ZsT7u2mtbrFgxNWnSJEcI3L17t5KTk9W7d+8c4XHLli06e/asmjdv7tI6H3jgAZf1dz3cvU3PnDkjPz+/616OJH3yyScqU6aMJk2apLvuuku///67ypcvny/Lvl7FihVTsWJX/mqblZWlc+fOWfLeWr9+vZo0aWJ/3KBBA8XGxmrJkiW6//77870/AIUHe7oB4DLOnz+vF198UZUqVZKPj4/Kly+v5557Tunp6fY2Q4cOVenSpWWMsU974oknZLPZ9M4779inHT16NN8Ox3SmLun/DlVfs2aNGjduLF9fX1WsWFH/+c9/cixz+/btatWqlYoXL66yZcvqpZde0vTp02Wz2fT77787Vdfs2bNVs2ZN3XbbbWrXrl2OvWDZh9CePn3afijwjBkzdMstt0i6EHovnp5t48aN6tixo0qWLCk/Pz+1atUqR3jJPpfzl19+Ue/evVWqVKlrCitt2rSRJO3fv1+SNH36dLVp00ZlypSRj4+PatasmetreOk53dmHr3/xxRd6+eWXVbZsWfn6+qpt27ZKTEx0eN7//vc/HThwwL7u2QEmt3O6H374YQUEBOjPP/9U9+7dFRAQoNDQUD311FPKzMx0qOn48eN68MEHFRgYqKCgIMXFxemnn35y6jzx5s2b6+jRow61rl27VoGBgerfv789LF48L/t5kvTtt9+qS5cuioyMlI+PjypVqqQXX3wxR4179uxRz549FR4eLl9fX5UtW1b33nuvUlJSrlifs06cOKGnnnpKderUUUBAgAIDA9WpU6dcD/k9e/asxowZo6pVq8rX11cRERHq0aOH9u7dm6PtBx98YH//3XLLLdq8efNVa7nebSpJU6ZMUa1ateTj46PIyEjFx8fr5MmTDv1knyqzZcsWtWzZUn5+fnruuecuW9fMmTNVrFgxPf3001ddB+nCkRl33XWXbr/9dpUsWVJz5szJtd3GjRvVuXNnlSpVSv7+/qpbt67efvtthzbz5s1T7dq15evrq9q1a2vu3Ll6+OGHHUL85c6dzu39kds53TabTQMHDtTs2bPt227RokWSpD///FOPPPKIwsLC5OPjo1q1aunjjz/OsS5//PGHunfvLn9/f5UpU0ZDhgzJ8XkrySFwS7IH+3PnzuW6jQDcONjTDeCGkpKS4vDFNltGRkaOaf/61780c+ZM3XXXXRo2bJg2btyo8ePHa9euXZo7d66kC3tK33zzTe3cudN+Tvj3338vDw8Pff/99xo0aJB9mnThHM3r5Uxd2RITE3XXXXepb9++iouL08cff6yHH35YjRo1Uq1atSRd+OJ52223yWazacSIEfL399dHH30kHx8fp2tKT0/X119/rWHDhkmS7rvvPvXp00dJSUkKDw+XJPth3Js2bdJHH30kSapSpYrGjRunUaNGqX///mrRooUk6dZbb5V04XD0Tp06qVGjRho9erQ8PDzsQfj7779X48aNHeq4++67VaVKFb3yyisO/whxVnbAKl26tCRp6tSpqlWrlu644w4VK1ZM8+fP1+OPP66srCzFx8dfdXkTJkyQh4eHnnrqKaWkpGjixIm6//77tXHjRknS888/r5SUFP3xxx/2830DAgKuuMzMzEzFxsaqSZMmev3117Vs2TJNmjRJlSpV0oABAyRd2JvXtWtXbdq0SQMGDFD16tX17bff5jjy4HKyg96aNWtUuXJlSRdCYNOmTdWkSRN5eXlp3bp1uuOOO+zzSpQooXr16km6cA2FgIAADR06VAEBAVqxYoVGjRql1NRUvfbaa5IuBJHY2Filp6friSeeUHh4uP78808tWLBAJ0+eVMmSJa9aZ27vZW9vbwUGBkqS9u3bp3nz5unuu+9WhQoVdPToUb3//vtq1aqVfvnlF0VGRtq36e23367ly5fr3nvv1eDBg3Xq1CktXbpUP//8sypVqmRf/pw5c3Tq1Ck9+uijstlsmjhxonr06KF9+/bJy8vLsm06ZswYjR07Vu3atdOAAQO0e/duTZ06VZs3b9batWsd+j5+/Lg6deqke++9Vw888IDCwsJyremDDz7QY489pueee04vvfTSVbf3xo0blZiYqOnTp8vb21s9evTQ7Nmzc4T6pUuX6vbbb1dERIQGDx6s8PBw7dq1SwsWLNDgwYMlXTglo2fPnqpZs6bGjx+v48ePq0+fPipbtuxV68irFStW6IsvvtDAgQMVEhKi8uXL6+jRo2ratKk9lIeGhuq7775T3759lZqaqieffFKS9M8//6ht27Y6ePCgBg0apMjISM2aNUsrVqy4Yp9nz57Vc889p9KlS6tbt275vk4AChkDADeA6dOnG0lX/KlVq5a9/bZt24wk869//cthOU899ZSRZFasWGGMMebYsWNGkpkyZYoxxpiTJ08aDw8Pc/fdd5uwsDD78wYNGmSCg4NNVlbWFeuMjo42Xbp0uex8Z+vKXpYks3r1avu0Y8eOGR8fHzNs2DD7tCeeeMLYbDazdetW+7Tjx4+b4OBgI8ns37//ijUbY8xXX31lJJk9e/YYY4xJTU01vr6+5s0333RoFxcXZ/z9/R2mbd682Ugy06dPd5ielZVlqlSpYmJjYx2225kzZ0yFChVM+/bt7dNGjx5tJJn77rvvqrUaY8zKlSuNJPPxxx+bv/76yxw+fNj873//M+XLlzc2m81s3rzZ3telYmNjTcWKFR2mtWrVyrRq1SrH8mvUqGHS09Pt099++20jyezYscM+rUuXLiY6OjpHP/v378+xXeLi4owkM27cOIe2DRo0MI0aNbI//vrrr40k89Zbb9mnZWZmmjZt2uS6rS+VmppqPD09Td++fe3TqlWrZsaOHWuMMaZx48bm6aefts8LDQ11eD1y226PPvqo8fPzM2fPnjXGGLN161YjyXz55ZdXrCU32dsht5/Y2Fh7u7Nnz5rMzEyH5+7fv9/4+Pg4bMOPP/7YSDJvvPFGjr6yx17261G6dGlz4sQJ+/xvv/3WSDLz58+/Ys3Xs02PHTtmvL29TYcOHRzW59///rd9HGdr1aqVkWTee++9HDVc/Pny9ttvG5vNZl588cUr1n2xgQMHmqioKPs2WbJkiZHk8Nlx/vx5U6FCBRMdHW3+/vtvh+df/D6uX7++iYiIMCdPnrRPy17exe+H7PfSypUrHZaV2/sj+3PgYpKMh4eH2blzp8P0vn37moiICJOcnOww/d577zUlS5a0j+G33nrLSDJffPGFvc3p06dN5cqVc63LGGMyMjJM586djY+Pj0lISMgxH8CNh8PLAdxQJk+erKVLl+b4qVu3rkO7hQsXSrpw+PjFsvfk/u9//5MkhYaGqnr16lq9erWkC3unPD099fTTT+vo0aPas2ePpAt7ups3b37dt7Nxtq5sNWvWtO89zq63WrVqDlfoXrRokWJiYhxu3xUcHJyncxBnz56tm2++2b4Hr0SJEurSpct1XWhp27Zt2rNnj3r37q3jx48rOTlZycnJOn36tNq2bavVq1crKyvL4TmPPfZYnvp45JFHFBoaqsjISHXp0kWnT5/WzJkzdfPNN0uSihcvbm+bfZREq1attG/fPqcOge7Tp4/D+d7Zr8X1XiH90vVs0aJFjtfUy8tL/fr1s0/z8PBwau+8dOH1q1u3rv084+TkZO3evdt+BEKzZs3shz//9ttv+uuvvxwOg754u506dUrJyclq0aKFzpw5o19//VWS7HuyFy9erDNnzji97tl8fX1zfS9PmDDB3sbHx0ceHhe+6mRmZur48eMKCAhQtWrV9OOPP9rbff311woJCdETTzyRo59L37O9evVSqVKl7I+dfU2vZ5suW7ZM586d05NPPmlfH0nq16+fAgMDc7zvfXx81KdPn8vWMnHiRA0ePFivvvqqRo4cecW6s50/f16ff/65evXqZd8m2adeXPw+37p1q/bv368nn3xSQUFBDsvIft6RI0e0bds2xcXFORzR0L59e9WsWdOpevKiVatWDss1xujrr79W165dZYyxf7YkJycrNjZWKSkp9vGxcOFCRURE2K/9IEl+fn7q37//ZfsbO3asvvvuO82ePVutWrXK9/UBUPhweDmAG0rjxo3tgepipUqVcjhU9cCBA/Lw8LCHyGzh4eEKCgrSgQMH7NNatGhhD8Pff/+9br75Zt18880KDg7W999/r7CwMP3000/q3bv3ddefl7okqVy5crmu699//+2wzJiYmBztLu3jck6ePKmFCxdq4MCBDuerNmvWTF9//bV+++03Va1a1allXSz7HxZXOiQ6JSXFIQBVqFAhT32MGjVKLVq0kKenp0JCQlSjRg2HCzGtXbtWo0eP1vr163MEw5SUlKseAn3p9s+u9eLtn1e+vr4KDQ3NsdxLX9OIiIgcF89y9jWVLhwO/e677yo5OVnr1q2Tp6enmjZtKunC4f9TpkxRenp6ruce79y5UyNHjtSKFSuUmprqsNzsf1ZUqFBBQ4cO1RtvvKHZs2erRYsWuuOOO/TAAw84dWi5p6en2rVrd8U2WVlZevvttzVlyhTt37/f4Zzy7FMIpAunFVSrVu2qF+GSru81vdZtmv2+rlatmsPyvL29VbFixRzv+5tuuumyF/dbtWqV/ve//+mZZ55x+jxu6cLh4H/99ZcaN27s8D6/7bbb9Omnn+rVV1+Vh4eH/RSNK92CMbveKlWq5Jh36T9E8sOlnwt//fWXTp48qQ8++EAffPBBrs85duyYvdbKlSvn+OfLpa/FxWbNmqX27durZ8+e11k5gKKC0A0AV+DMnunmzZvrww8/1L59+/T999+rRYsWstlsat68ub7//ntFRkYqKyvLYY+zK+qSLgST3JhrON/5cr788kulp6dr0qRJmjRpUo75s2fP1tixY/O83Oy92K+99prDXviLXXr+88V7WJ1Rp06dywa3vXv3qm3btqpevbreeOMNRUVFydvbWwsXLtSbb76ZYy97bqzY/pdbZn7LDohr167VunXr7Bcjky4ExPT0dG3evFlr1qxRsWLF7OHx5MmTatWqlQIDAzVu3DhVqlRJvr6++vHHH/XMM884bLdJkybp4Ycf1rfffqslS5Zo0KBBGj9+vDZs2JAv5/a+8soreuGFF/TII4/oxRdfVHBwsDw8PPTkk0869frl5npe02vdpnl1pfdBrVq1dPLkSc2aNUuPPvqo0/+oyt6bfc899+Q6f9WqVbrtttvyXuxVXO6z7tKL8l3Jpdsj+7V/4IEHLvtPvUuPfsqL48ePKyIi4pqfD6DoIXQDQC6io6OVlZWlPXv2qEaNGvbpR48e1cmTJxUdHW2flh2mly5dqs2bN+vZZ5+VdOGiaVOnTlVkZKT8/f3VqFEjl9aVl2VevOcqW27TcjN79mzVrl1bo0ePzjHv/fff15w5c64Yui/3pTr74lWBgYFX3aNphfnz5ys9PV3//e9/HfZurly5Ml/7ud5TDnITHR2tlStX5rhVlLOvqeR44a/169c73C86MjJS0dHRWrt2rdauXasGDRrY+0lISNDx48f1zTffOFw4MPuK8JeqU6eO6tSpo5EjR2rdunVq1qyZ3nvvPacu7HU1X331lW677TZNmzbNYfrJkycVEhJif1ypUiVt3LhRGRkZV7wY2vW61m2a/b7evXu3KlasaH/OuXPntH///jy9P0JCQvTVV1+pefPmatu2rdasWWO/oNzlnD59Wt9++6169erlcJh1tkGDBmn27Nm67bbb7O/bn3/++bJ1Za9P9tEsF9u9e7fD4+wjCS69Svule/fzIjQ0VCVKlFBmZuZVt110dLR+/vlnGWMc3quX1nmx/v37q0GDBtdcH4Cih3O6ASAXnTt3liS99dZbDtPfeOMNSVKXLl3s0ypUqKCbbrpJb775pjIyMuxfpFu0aKG9e/fqq6++UtOmTZ06dDU/63JWbGys1q9fr23bttmnnThxwqnzsQ8dOqTVq1frnnvu0V133ZXjp0+fPkpMTLRfrTs32ffSvvRLdaNGjVSpUiW9/vrrSktLy/G8v/76y7kVvEbZezQv3oOZkpKi6dOn52s//v7++XaLrGyxsbHKyMjQhx9+aJ+WlZWlyZMnO72MyMhIVahQQcuXL9cPP/xgP/c426233qp58+Zp9+7dDoeW57bdzp07pylTpjg8PzU1VefPn3eYVqdOHXl4eOR6O6Zr4enpmWMP9Jdffqk///zTYVrPnj2VnJysf//73zmWkZ9HhVzrNm3Xrp28vb31zjvvONQzbdo0paSk5Pl9X7ZsWS1btkz//POP2rdvr+PHj1+x/dy5c3X69GnFx8fn+j6//fbb9fXXXys9PV0NGzZUhQoV9NZbb+V4T2fXHhERofr162vmzJkOY3/p0qX65ZdfHJ4THR0tT09P+3Uzsl06nvLC09NTPXv21Ndff62ff/45x/yLP1s6d+6sw4cP66uvvrJPO3PmzGUPS5cunGvftm3ba64PQNHDnm4AyEW9evUUFxenDz74wH647KZNmzRz5kx17949x2GULVq00GeffaY6derY98w0bNhQ/v7++u233/J0PndiYmKue/kaNGigLl265KkuZwwfPlyffPKJ2rdvryeeeMJ+y7By5crpxIkTV9wTO2fOHBlj7Lc5ulTnzp1VrFgxzZ49O8c9bLNVqlRJQUFBeu+991SiRAn5+/urSZMmqlChgj766CN16tRJtWrVUp8+fXTTTTfpzz//1MqVKxUYGKj58+fneX2d1aFDB3l7e6tr16569NFHlZaWpg8//FBlypTRkSNH8q2fRo0a6fPPP9fQoUN1yy23KCAgQF27dr2uZXbv3l2NGzfWsGHDlJiYqOrVq+u///2vTpw4Icn5vevNmzfXrFmzJMlhr6x0ISB++umn9nYXTy9VqpTi4uI0aNAg2Ww2zZo1K0d4XbFihQYOHKi7775bVatW1fnz5zVr1ix7ILqa8+fP65NPPsl13p133il/f3/dfvvtGjdunPr06aNbb71VO3bs0OzZsx32FkvSQw89pP/85z8aOnSoNm3apBYtWuj06dNatmyZHn/88Xy95dO1bNPQ0FCNGDFCY8eOVceOHXXHHXdo9+7dmjJlim655RY98MADea6jcuXKWrJkiVq3bq3Y2FitWLHCfqu1S82ePVulS5fO8U+CbHfccYc+/PBD/e9//1OPHj00depUde3aVfXr11efPn0UERGhX3/9VTt37tTixYslSePHj1eXLl3UvHlzPfLIIzpx4oTeffdd1apVy+GfbCVLltTdd9+td999VzabTZUqVdKCBQvs51xfqwkTJmjlypVq0qSJ+vXrp5o1a+rEiRP68ccftWzZMvt7pV+/fvr3v/+thx56SFu2bFFERIRmzZqV43oJF6tRo4bi4uIc7iEO4AbnjkumA4CrZd8yLPtWUJdq1aqVwy3DjLlw25exY8eaChUqGC8vLxMVFWVGjBhhv+XRxSZPnmwkmQEDBjhMb9eunZFkli9f7lSd2bf5yu0n+1ZDztZ1uduPXXp7K2Mu3L6pRYsWxsfHx5QtW9aMHz/evPPOO0aSSUpKumy9derUMeXKlbviOrVu3dqUKVPGZGRk5HrLMGMu3HapZs2aplixYjluA7R161bTo0cPU7p0aePj42Oio6PNPffc47BNs28V9Ndff12xlmzZtyG62u2q/vvf/5q6desaX19fU758efPqq6/aby918a3ULnfLsEuXn9ttjtLS0kzv3r1NUFCQw+2SLnfLsNy2X263Svrrr79M7969TYkSJUzJkiXNww8/bNauXWskmc8+++zKG+j/e//9940kc9NNN+WY9+OPP9rH5tGjRx3mrV271jRt2tQUL17cREZGmuHDh5vFixc73GJp37595pFHHjGVKlUyvr6+Jjg42Nx2221m2bJlV63rSrcMu/i1OXv2rBk2bJiJiIgwxYsXN82aNTPr16/P9T1w5swZ8/zzz9vfV+Hh4eauu+4ye/fuNcb83+vx2muv5ahHkhk9evTVN6i59m1qzIVbhFWvXt14eXmZsLAwM2DAgBy35crtsyxbbp8JGzduNCVKlDAtW7bM9VZvR48eNcWKFTMPPvjgZdfpzJkzxs/Pz9x55532aWvWrDHt27c3JUqUMP7+/qZu3brm3XffdXje119/bWrUqGF8fHxMzZo1zTfffGPi4uJy3ELvr7/+Mj179jR+fn6mVKlS5tFHHzU///yz07cMi4+Pz7Xuo0ePmvj4eBMVFWV/zdu2bWs++OADh3YHDhwwd9xxh/Hz8zMhISFm8ODBZtGiRZe9ZZgkExcXd9ntBeDGYzMmH4+bAgAUGU8++aTef/99paWlueziXbDWvHnzdOedd2rNmjU5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7LyoqCitWrXqqsuIjo7WwoUL87MsAAAAAADyRYG5TzcAAAAAAEUNoRsAAAAAAIsQugEAAAAAsAihGwAAAAAAixC6AQAAAACwCKEbAAAAAACLELoBAAAAALAIoRsAAAAAAIsQugEAAAAAsAihGwAAAAAAixC6AQAAAACwCKEbAAAAAACLELoBAAAAALAIoRsAAAAAAIsQugEAAAAAsAihGwAAAAAAixC6AQAAAACwCKEbAAAAAACLELoBAAAAALAIoRsAAAAAAIsQugEAAAAAsAihGwAAAAAAixC6AQAAAACwCKEbAAAAAACLELoBAAAAALAIoRsAAAAAAIsQugEAAAAAsAihGwAAAAAAixC6AQAAAACwCKEbAAAAAACLELoBAAAAALAIoRsAAAAAAIsQugEAlivl76PMLOPSPl3dHwAAQG6KubsAAEDRF+BbTJ4eNk2Yu1WHktMs7y8qJEDP3tnA8n4AAACuhtANAHCZQ8lpSkxKdXcZAAAALsPh5QAAAAAAWITQDQAAAACARQjdAAAAAABYhNANAAAAAIBFCN0AAAAAAFiE0A0AAAAAgEUI3QAAAAAAWITQDQAAAACARQjdAAAAAABYhNANAAAAAIBFCN0AAAAAAFiE0A0AAAAAgEUI3QAAAAAAWITQDQAAAACARQjdAAAAAABYhNANAAAAAIBFCN0AAAAAAFiE0A0AAAAAgEUI3QAAAAAAWITQDQAAAACARdwauqdOnaq6desqMDBQgYGBiomJ0XfffWeff/bsWcXHx6t06dIKCAhQz549dfToUYdlHDx4UF26dJGfn5/KlCmjp59+WufPn3f1qgAAAAAAkINbQ3fZsmU1YcIEbdmyRT/88IPatGmjbt26aefOnZKkIUOGaP78+fryyy+1atUqHT58WD169LA/PzMzU126dNG5c+e0bt06zZw5UzNmzNCoUaPctUoAAAAAANgVc2fnXbt2dXj88ssva+rUqdqwYYPKli2radOmac6cOWrTpo0kafr06apRo4Y2bNigpk2basmSJfrll1+0bNkyhYWFqX79+nrxxRf1zDPPaMyYMfL29nbHagEAAAAAIMnNoftimZmZ+vLLL3X69GnFxMRoy5YtysjIULt27extqlevrnLlymn9+vVq2rSp1q9frzp16igsLMzeJjY2VgMGDNDOnTvVoEGDXPtKT09Xenq6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s2f17LPPKikpSVu3brWiRgAAAAAACqU8X718woQJCg0N1ejRo9WjRw9VrVrViroAAAAAACj08hy6t27dqlWrVikhIUGTJk2St7e3WrVqpdatW6t169aEcAAAAAAA/r88h+569eqpXr16GjRokCTpp59+0ptvvqn4+HhlZWUpMzMz34sEAAAAAKAwynPoNsZo69atSkhIUEJCgtasWaPU1FTVrVtXrVq1sqJGAAAAAAAKpTyH7uDgYKWlpalevXpq1aqV+vXrpxYtWigoKMiC8gAAAAAAKLzyHLo/+eQTtWjRQoGBgVbUAwAAAABAkZHn0N2lSxcr6gAAAAAAoMjJ8326AQAAAACAcwjdAAAAAABYhNANAAAAAIBFnArdDRs21N9//y1JGjdunM6cOZMvnY8fP1633HKLSpQooTJlyqh79+7avXu3Q5uzZ88qPj5epUuXVkBAgHr27KmjR486tDl48KC6dOkiPz8/lSlTRk8//bTOnz+fLzUCAAAAAHCtnArdu3bt0unTpyVJY8eOVVpaWr50vmrVKsXHx2vDhg1aunSpMjIy1KFDB3tfkjRkyBDNnz9fX375pVatWqXDhw+rR48e9vmZmZnq0qWLzp07p3Xr1mnmzJmaMWOGRo0alS81AgAAAABwrZy6enn9+vXVp08fNW/eXMYYvf766woICMi1bV7C7qJFixwez5gxQ2XKlNGWLVvUsmVLpaSkaNq0aZozZ47atGkjSZo+fbpq1KihDRs2qGnTplqyZIl++eUXLVu2TGFhYapfv75efPFFPfPMMxozZoy8vb2drgcAAAAAgPzkVOieMWOGRo8erQULFshms+m7775TsWI5n2qz2a5rD3NKSookKTg4WJK0ZcsWZWRkqF27dvY21atXV7ly5bR+/Xo1bdpU69evV506dRQWFmZvExsbqwEDBmjnzp1q0KDBNdcDAAAAAMD1cCp0V6tWTZ999pkkycPDQ8uXL1eZMmXytZCsrCw9+eSTatasmWrXri1JSkpKkre3t4KCghzahoWFKSkpyd7m4sCdPT97Xm7S09OVnp5uf5yamipJysjIUEZGRr6sT37Lrqug1oer87QZeXkYy/vxUJbL+vO0GcZkIZX9urlyXGZkZLisP8Zm/uHvD5zBOIGzGCtwRmEZJ87W51TovlhWVlaei3FGfHy8fv75Z61Zs8aS5V9s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AAC4cXBONwAAAAAAFiF0AwAAAABgEUI3AAAAAAAWIXQDAAAAAGARQjcAAAAAABYhdAMAAAAAYBFCNwAAAAAAFiF0AwAAAABgEUI3AKBQKF++vN566y13l1Ho2Ww2zZs377qXU9hfj4cffljdu3d3dxlXNWbMGNWvXz/f2v7++++y2Wzatm3bddcGAHAOoRsAbnDGGLVr106xsbE55k2ZMkVBQUH6448/3FBZ/stLgCmqjhw5ok6dOjndfsaMGQoKCsoxffPmzerfv38+VobcPPXUU1q+fPk1tc3tHwtRUVE6cuSIateunZ9lAgCugNANADc4m82m6dOna+PGjXr//fft0/fv36/hw4fr3XffVdmyZfO1z4yMjHxdHpwXHh4uHx+f615OaGio/Pz88qEiXElAQIBKly6db209PT0VHh6uYsWK5Ud5AAAnELoBAIqKitLbb7+tp556Svv375cxRn379lWHDh3UoEEDderUSQEBAQoLC9ODDz6o5ORk+3MXLVqk5s2bKygoSKVLl9btt9+uvXv32udnH876+eefq1WrVvL19dXs2bN14MABde3aVaVKlZK/v79q1aqlhQsXXrHOU6dO6b777pO/v79uuukmTZ482WH+yZMn9a9//UuhoaEKDAxUmzZt9NNPP0m6sMd27Nix+umnn2Sz2WSz2TRjxgw99dRTuv322+3LeOutt2Sz2bRo0SL7tMqVK+ujjz6yP/7oo49Uo0YN+fr6qnr16poyZYpDHYcOHdI999yjoKAgBQcHq1u3bvr999/t87P3QL7++uuKiIhQ6dKlFR8ff8V/RmTvpX///fcVFRUlPz8/3XPPPUpJSbG32bx5s9q3b6+QkBCVLFlSrVq10o8//uiwnIsPL89+bb755hvddttt8vPzU7169bR+/XpJUkJCgvr06aOUlBT7NhszZoyknIeX22w2ffTRR7rzzjvl5+enKlWq6L///a9D3//9739VpUoV+fr66rbbbtPMmTNls9l08uTJy673G2+8oTp16sjf319RUVF6/PHHlZaWZp+fvSd+8eLFqlGjhgICAtSxY0cdOXLE3iYzM1NDhw61j9Hhw4fLGHPZPiXp+PHjuu+++3TTTTfJz89PderU0aeffurQJisrSxMnTlTlypXl4+OjcuXK6eWXX7bP37Rpkxo0aCBfX1/dfPPNmjt3rsOh3bkdRTBv3jzZbDb740uPzkhISFDjxo3l7++voKAgNWvWTAcOHMjRdsyYMZo5c6a+/fZb+2uXkJCQ6+Hlq1atUuPGjeXj46OIiAg9++yzOn/+vH1+69atNWjQIA0fPlzBwcEKDw+3jwMAwNURugEAkqS4uDi1bdtWjzzyiP7973/r559/1vvvv682bdqoQYMG+uGHH7Ro0SIdPXpU99xzj/15p0+f1tChQ/XDDz9o+fLl8vDw0J133qmsrCyH5T/77LMaPHiwdu3apdjYWMXHxys9PV2rV6/Wjh079OqrryogIOCKNb722muqV6+etm7dal/e0qVL7fPvvvtuHTt2TN999522bNmihg0bqm3btjpx4oR69eqlYcOGqVatWjpy5IiOHDmiXr16qVWrVlqzZo0yMzMlXQggISEhSkhIkCT9+eef2rt3r1q3bi1Jmj17tkaNGqWXX35Zu3bt0iuvvKIXXnhBM2fOlHRhL35sbKxKlCih77//XmvXrrUHwXPnztlrXblypfbu3auVK1dq5syZmjFjhmbMmHHF9U9MTNQXX3yh+fPna9GiRdq6dasef/xx+/xTp04pLi5Oa9as0YYNG1SlShV17txZp06duuJyn3/+eT311FPatm2bqlatqvvuu0/nz5/XrbfeqrfeekuBgYH2bfbUU09ddjljx47VPffco+3bt6tz5866//77deLECUkXjpy466671L17d/3000969NFH9fzzz1+xLkny8PDQO++8o507d2rmzJlasWKFhg8f7tDmzJkzev311zVr1iytXr1aBw8edKhz0qRJmjFjhj7++GOtWbNGJ06c0Ny5c6/Y79mzZ9WoUSP973//088//6z+/fvrwQcf1KZNm+xtRowYoQkTJuiFF17QL7/8ojlz5igsLEySlJaWpttvv101a9bUli1bNGbMmCtuO2ecP39e3bt3V6tWrbR9+3atX79e/fv3dwjp2Z566indc8899n9AHDlyRLfeemuOdn/++ac6d+6sW265RT/99JOmTp2qadOm6aWXXnJoN3PmTPn7+2vjxo2aOHGixo0b5/DeAwBcgQEA4P87evSoCQkJMR4eHmbu3LnmxRdfNB06dHBoc+jQISPJ7N69O9dl/PXXX0aS2bFjhzHGmP379xtJ5q233nJoV6dOHTNmzBina4uOjjYdO3Z0mNarVy/TqVMnY4wx33//vQkMDDRnz551aFOpUiXz/vvvG2OMGT16tKlXr57D/L///tt4eHiYzZs3m6ysLBMcHGzGjx9vmjRpYowx5pNPPjE33XSTw/LmzJnjsIwXX3zRxMTEGGOMmTVrlqlWrZrJysqyz09PTzfFixc3ixcvNsYYExcXZ6Kjo8358+ftbe6++27Tq1evy67/6NGjjaenp/njjz/s07777jvj4eFhjhw5kutzMjMzTYkSJcz8+fPt0ySZuXPnGmP+77X56KOP7PN37txpJJldu3YZY4yZPn26KVmyZI5lR0dHmzfffNNhuSNHjrQ/TktLM5LMd999Z4wx5plnnjG1a9d2WMbzzz9vJJm///77sut9qS+//NKULl3a/nj69OlGkklMTLRPmzx5sgkLC7M/joiIMBMnTrQ/zsjIMGXLljXdunVzul9jjOnSpYsZNmyYMcaY1NRU4+PjYz788MNc277//vumdOnS5p9//rFPmzp1qpFktm7daq/90m07d+5cc/HXs4vH7PHjx40kk5CQkGufl47vuLi4HOuY/Zpn1/Dcc8/lGK+TJ082AQEBJjMz0xhjTKtWrUzz5s0dlnPLLbeYZ555Jtc6AACO2NMNALArU6aMHn30UdWoUcO+R3LlypUKCAiw/1SvXl2S7IeQ79mzR/fdd58qVqyowMBAlS9fXpJ08OBBh2XffPPNDo8HDRqkl156Sc2aNdPo0aO1ffv2q9YXExOT4/GuXbskST/99JPS0tJUunRph3r379/vcLj7pYKCglSvXj0lJCRox44d8vb2Vv/+/bV161alpaVp1apVatWqlaQLe/X37t2rvn37OvTx0ksv2fv46aeflJiYqBIlStjnBwcH6+zZsw511KpVS56envbHEREROnbs2BXXv1y5crrpppsc1j8rK0u7d++WJB09elT9+vVTlSpVVLJkSQUGBiotLS3Ha3GpunXrOtQh6aq1XG05/v7+CgwMtC9n9+7duuWWWxzaN27c+KrLXLZsmdq2baubbrpJJUqU0IMPPqjjx4/rzJkz9jZ+fn6qVKmSwzpk95uSkqIjR46oSZMm9vnFihXLMR4vlZmZqRdffFF16tRRcHCwAgICtHjxYvu23LVrl9LT09W2bdtcn79r1y7VrVtXvr6+9mmXjt+8Cg4O1sMPP6zY2Fh17dpVb7/9tsNh9Ndi165diomJcdhb3qxZM6WlpTlcQPHi11ZybrwCAC7gKhoAAAfFihWzX2QpLS1NXbt21auvvpqjXXY469q1q6Kjo/Xhhx8qMjJSWVlZql27tsOh1NKFEHaxf/3rX4qNjdX//vc/LVmyROPHj9ekSZP0xBNPXFPdaWlpioiIsB8WfrHcrr59sdatWyshIUE+Pj5q1aqVgoODVaNGDa1Zs0arVq3SsGHD7H1I0ocffugQ4iTZA3RaWpoaNWqk2bNn5+gnNDTU/ruXl5fDPJvNluOQ/LyKi4vT8ePH9fbbbys6Olo+Pj6KiYnJ8Vpc6uJassPXtdSS3+v0+++/6/bbb9eAAQP08ssvKzg4WGvWrFHfvn117tw5+4XccuvXXOWc7at57bXX9Pbbb+utt96yn1P+5JNP2rdl8eLFr2v50oVD5y+t82oXGZw+fboGDRqkRYsW6fPPP9fIkSO1dOlSNW3a9LrruRIrxisA3CgI3QCAy2rYsKG+/vprlS9fPterHR8/fly7d+/Whx9+qBYtWkiS1qxZ4/Tyo6Ki9Nhjj+mxxx7TiBEj9OGHH14xdG/YsCHH4xo1athrTUpKUrFixex72y/l7e1tP3f7Yq1atdLHH3+sYsWKqWPHjpIuBPFPP/1Uv/32m/187rCwMEVGRmrfvn26//77c+2jYcOG+vzzz1WmTBkFBgZebRPkycGDB3X48GFFRkZKurD+Hh4eqlatmiRp7dq1mjJlijp37izpwgXdLr7o3bW43DbLq2rVquW4UN7mzZuv+JwtW7YoKytLkyZNkofHhYPzvvjiizz1W7JkSUVERGjjxo1q2bKlpAvnRmef8385a9euVbdu3fTAAw9IuvBPiN9++001a9aUJFWpUkXFixfX8uXL9a9//SvH82vUqKFZs2bp7Nmz9r3dl47f0NBQnTp1SqdPn7b/U8qZ+2c3aNBADRo00IgRIxQTE6M5c+bkGrqdee1q1Kihr7/+WsYY+z9c1q5dqxIlSuT7XQsA4EbF4eUAgMuKj4/XiRMndN9992nz5s3au3evFi9erD59+igzM1OlSpVS6dKl9cEHHygxMVErVqzQ0KFDnVr2k08+qcWLF2v//v368ccftXLlSnuAvpy1a9dq4sSJ+u233zR58mR9+eWXGjx4sCSpXbt2iomJUffu3bVkyRL9/vvvWrdunZ5//nn98MMPki5ccXv//v3atm2bkpOTlZ6eLklq2bKlTp06pQULFtgDduvWrTV79mxFRESoatWq9hrGjh2r8ePH65133tFvv/2mHTt2aPr06XrjjTckSffff79CQkLUrVs3ff/999q/f78SEhI0aNCg677fua+vr+Li4vTTTz/p+++/16BBg3TPPfcoPDxc0oUgOGvWLO3atUsbN27U/ffff917ZMuXL6+0tDQtX75cycnJDod158Wjjz6qX3/9Vc8884x+++03ffHFF/YLx+V2ITDpwlXjMzIy9O6772rfvn2aNWuW3nvvvTz3PXjwYE2YMEHz5s3Tr7/+qscff/yKV0yXLmzLpUuXat26ddq1a5ceffRRHT161D7f19dXzzzzjIYPH67//Oc/2rt3rzZs2KBp06ZJknr37i2bzaZ+/frpl19+0cKFC/X666879NGkSRP5+fnpueee0969ezVnzpwrXkxv//79GjFihNavX68DBw5oyZIl2rNnz2XfN+XLl9f27du1e/duJScn57oX/fHHH9ehQ4f0xBNP6Ndff9W3336r0aNHa+jQofZ/dAAArg+fpgCAy4qMjNTatWuVmZmpDh06qE6dOnryyScVFBQkDw8PeXh46LPPPtOWLVtUu3ZtDRkyRK+99ppTy87MzFR8fLxq1Kihjh07qmrVqjluvXWpYcOG6YcfflCDBg300ksv6Y033lBsbKykC8Ft4cKFatmypfr06aOqVavq3nvv1YEDB+xXlO7Zs6c6duyo2267TaGhofZbQJUqVUp16tRRaGio/Zz1li1bKisry34+d7Z//etf+uijjzR9+nTVqVNHrVq10owZM1ShQgVJF84vXr16tcqVK6cePXqoRo0a6tu3r86ePXvde74rV66sHj16qHPnzurQoYPq1q3rsM2mTZumv//+Ww0bNtSDDz6oQYMGqUyZMtfV56233qrHHntMvXr1UmhoqCZOnHhNy6lQoYK++uorffPNN6pbt66mTp1qv3r55e4bXq9ePb3xxht69dVXVbt2bc2ePVvjx4/Pc9/Dhg3Tgw8+qLi4OMXExKhEiRK68847r/ickSNHqmHDhoqNjVXr1q0VHh6u7t27O7R54YUXNGzYMI0aNUo1atRQr1697Oc5BwQEaP78+dqxY4caNGig559/PsdpGsHBwfrkk0+0cOFC+y3JrnQrLj8/P/3666/q2bOnqlatqv79+ys+Pl6PPvporu379eunatWq6eabb1ZoaKjWrl2bo81NN92khQsXatOmTapXr54ee+wx9e3bVyNHjrzi9gEAOM9mrvekJwAAYLkxY8Zo3rx5Th1+XFi8/PLLeu+993To0CF3l+ISv//+uypUqKCtW7c63HsbAFC0cU43AABwiSlTpuiWW25R6dKltXbtWr322msaOHCgu8sCAMBShG4AAOASe/bs0UsvvaQTJ06oXLlyGjZsmEaMGOHusgAAsBSHlwMAAAAAYBEupAYAAAAAgEUI3QAAAAAAWITQDQAAAACARQjdAAAAAABYhNANAAAAAIBFCN0AAAAAAFiE0A0AAAAAgEUI3QAAAAAAWITQDQAAAACARf4fX1LLkJ+j7UgAAAAASUVORK5CYII=\n"
},
"metadata": {}
}
]
},
{
"cell_type": "code",
"source": [
"\n",
"\n",
"# Filter to valid rows\n",
"df_valid = df_lag.copy()\n",
"df_valid = df_valid[(df_valid[\"beginyear\"] >= 1300) & (df_valid[\"acquisition_year\"] >= 1937)]\n",
"\n",
"# Plot\n",
"plt.figure(figsize=(12, 8))\n",
"plt.scatter(df_valid[\"beginyear\"], df_valid[\"acquisition_year\"],\n",
" s=8, alpha=0.3, color='black')\n",
"\n",
"plt.xlabel(\"Year painted\")\n",
"plt.ylabel(\"Year acquired\")\n",
"plt.title(\"Each Painting's Year Painted vs Year Acquired\")\n",
"plt.grid(True)\n",
"plt.tight_layout()\n",
"plt.show()\n"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 684
},
"id": "FaC-Kalw1-15",
"outputId": "dd4b8d40-2cf5-4371-d099-1fec7bbb60cf"
},
"execution_count": 88,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": [
"<Figure size 1200x800 with 1 Axes>"
],
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment