Skip to content

Instantly share code, notes, and snippets.

@alastair
Created February 14, 2018 16:07
Show Gist options
  • Save alastair/fbd86f2a243cf04393e8f7c04cbe0657 to your computer and use it in GitHub Desktop.
Save alastair/fbd86f2a243cf04393e8f7c04cbe0657 to your computer and use it in GitHub Desktop.
Checking if people apply the 'classic rock' tag to newer music each year
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy\n",
"import seaborn as sns\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"%load_ext sql\n",
"%config SqlMagic.feedback=False"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'Connected: musicbrainzro@musicbrainz'"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%sql postgres://musicbrainzro@asplab-db.s.upf.edu/musicbrainz"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"result = %sql SELECT * from recording_tag where tag = 987;"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"data = []\n",
"for r in result:\n",
" data.append({'recording': r['recording'], 'tag_date': r['last_updated'].year})"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"for row in data:\n",
" rec = row['recording']\n",
" years = %sql select first_release_date_year from release_group_meta, release, medium, track where track.recording = :rec and track.medium = medium.id and medium.release = release.id and release_group_meta.id = release.release_group;\n",
" dates = [r[0] for r in years if r[0]]\n",
" if dates:\n",
" row['release_date'] = min(dates)\n",
" else:\n",
" row['release_date'] = 0"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"tag_dates = set([i['tag_date'] for i in data])\n",
"tag_date_to_release = {}\n",
"for td in tag_dates:\n",
" vals = [d['release_date'] for d in data if d['tag_date'] == td and d['release_date']]\n",
" tag_date_to_release[td] = vals"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2011: mean 1988.69 total 532\n",
"2012: mean 1989.18 total 238\n",
"2013: mean 1991.58 total 273\n",
"2014: mean 1991.87 total 297\n",
"2015: mean 1991.74 total 861\n",
"2016: mean 1981.92 total 721\n",
"2017: mean 1980.06 total 1425\n",
"2018: mean 1977.32 total 151\n"
]
}
],
"source": [
"totals = []\n",
"for d in sorted(list(tag_dates)):\n",
" vals = tag_date_to_release[d]\n",
" totals.append(len(vals))\n",
" print(\"%s: mean %.2f total %s\" % (d, numpy.mean(vals), len(vals)))"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"562.25"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"numpy.mean(totals)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"x_es = sorted(tag_date_to_release.keys())\n",
"y_es = [tag_date_to_release[x] for x in x_es]"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"([<matplotlib.axis.XTick at 0x7fcfebaa86d8>,\n",
" <matplotlib.axis.XTick at 0x7fcfebaad6d8>,\n",
" <matplotlib.axis.XTick at 0x7fcfe99d3940>,\n",
" <matplotlib.axis.XTick at 0x7fcfe996ccc0>,\n",
" <matplotlib.axis.XTick at 0x7fcfe9972400>,\n",
" <matplotlib.axis.XTick at 0x7fcfe9972b00>,\n",
" <matplotlib.axis.XTick at 0x7fcfe9978240>,\n",
" <matplotlib.axis.XTick at 0x7fcfe9978940>],\n",
" <a list of 8 Text xticklabel objects>)"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA4EAAAHwCAYAAAAYS2qBAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzs3Xl0VPX9//HXZEISkrAlZmGTsuOhCEFWEZCwiUgMi4IgYLBsViCCViBsIlixilgRKCAgtSiLYQuIlCABW8oiFLQVFEsUFBJIWMyeTOb3B1/mRyQwBObOhNzn4xwPN3fu3Pf7zmfi4cXnLha73W4XAAAAAMAUvDzdAAAAAADAfQiBAAAAAGAihEAAAAAAMBFCIAAAAACYCCEQAAAAAEyEEAgAAAAAJkIIBAAPOn36tBo2bKiCggJD9r9o0SLFxcUZsu9b1bBhQ/3www8e7eFOvfvuu3rxxRclST///LMiIiJks9k83JXrlIbvyY1s2rRJw4YN80jt3/3ud1q/fr1HagOAkQiBAGCQyMhInT592qM9jBo1SrNnz/ZoDzfTsGFDT7dQYtWqVdPhw4dltVpdvu+JEyfq7bffdvl+nbmT78nEiRPVsGFD7dixo8j61157TQ0bNlR8fPwd9RYVFaVly5Y53e7dd99V48aNFRERoYiICPXo0UOfffbZHdVeunSpevfufUf7AIDSiBAIALgpu92uwsJCj/Zg1Ezpr5WGY70b/eY3v9HGjRsdPxcUFOjTTz/Vvffe69Y+evToocOHD+vw4cOaPHmyXnrpJZ0/f77Ybd31nQKA0ogQCABukJOTo9dff12dOnXSAw88oKeeeko5OTnXbffJJ5+oR48eioiIUOfOnfXxxx87XktPT9fIkSPVokULtWrVSgMHDnQElsWLF6t9+/aKiIhQ9+7dtXfvXklFT2OUpIMHD2rAgAFq0aKFOnbseMNZmsGDB+vtt9/WgAED1LRpU506dUopKSkaNWqUWrVqpa5du2rNmjWO7W02mxYtWqQuXbooIiJCffr00ZkzZ67b78GDB9WxY0ft27fP6WcWGRmpxYsXq1evXmrWrJkKCgqUkpKiMWPGqE2bNoqMjNTKlStvqYdDhw6pb9++euCBB9S3b18dOnTopsd66tQpPf3004qIiFBMTIwuXLjg2P7Xp/AOHjxY8+bN04ABAxQREaFhw4YpPT3dsf2GDRvUqVMntW7dWu+9954iIyP1z3/+87rjXb16tTZv3qz3339fERERGjVqlKQrY3v1mB599FH9/e9/L3LMr7/+ulq3bq3IyEh9+OGHRXqLj49X586dFRERocjISG3atKnYz/ra78nV41u/fr0efvhhtW7dWgsXLnQ6Vl9++aUuXbokSdqzZ48aNmyoe+65p9gaxX2ON+o1Pj5eTz31lON93333nWJiYtSqVSs9+OCDWrRoUbE9tW/fXgEBAfrxxx8lSfv27VOHDh20ePFitWvXTpMmTdKlS5c0cuRItWnTRi1bttTIkSN19uxZxz4GDx6stWvXFuljzpw5atmypSIjI5WUlCRJOnz4sGMGMiIiQk2aNFFkZORNPzMA8CRvTzcAAGXVzp07Hctz5szRiRMn9PHHH+uee+7RkSNH5OV1/b/DBQcH6y9/+Ytq1qypAwcOaPjw4WrSpIkaN26s5cuXKywszBHwjhw5IovFov/973/629/+pnXr1iksLEynT58udjbrp59+0vDhw/Xqq6+qe/fuysjIKPIX3l/buHGjlixZotq1a8tut+uZZ55R/fr1tWfPHv3vf/9TTEyMatasqbZt22r58uXasmWLFi9erNq1a+v48ePy8/Mrsr/du3dr6tSpevfdd3X//fdLko4fP37Tz/DqPqtUqSIvLy+NHj1akZGReuutt5SSkqJnnnlGtWvXVvv27W/Yw8WLFzVy5EjFxcXpscce07Zt2zRy5Eht375dVapUKfZYn376aTVr1kzLli3TkSNHNGLECHXu3PmGfSYkJGjJkiWqWrWqhg8frmXLlunFF1/UiRMn9Morr2jJkiW6//779fbbbyslJaXYffTv31+HDx9WWFiYXnjhBcf6mjVr6m9/+5tCQkK0bds2vfTSS9q+fbtCQ0O1Zs0a7d69Wxs3blT58uU1btw4x/uysrI0a9YsrVu3TnXq1FFqaqojpN2KL7/8Utu2bVNycrL69eunbt26qW7dusVu6+Pjo86dO2vLli0aOHCgNmzYoOjoaP3tb3+7pVq32mtGRoZiYmI0bNgwLVq0SPn5+fr++++v285utyspKUn5+fmqV6+eY/358+d16dIlff755yosLFR2drb69OmjefPmyWazafLkyZo5c6YWLFhQbJ9Hjx5V79699a9//Uur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3hIYGKgpU6YoNjZWLVu2VEJCQpFr0X744QfHDSf69++vp556Sm3atFFeXp7eeusttW7dWg899JDS09M1fvz463qoVq2alixZouXLl6tVq1aKjo52ep3XtebOnauffvpJ7du31/PPP68xY8bowQcflCTFxMSoR48eGjZsmJo3b664uDjl5uZeV3/FihVasmSJ446LJWG1WrVo0SIdO3ZMnTt3Vps2bTRlyhTH7OSNeqhSpYoWLVqk5cuXq3Xr1lq6dKkWLVrkCFbFeeutt3TkyBHHHT2Lm9m6FfXr19fUqVM1fvx4tW/fXv7+/goKCir2elBJ6tevn06cOKEWLVroueeeU7169TRs2DANGDBADz74oL799ls1b97csf2TTz6pdu3aKSoqStHR0erYsaO8vb1ltVpVWFioFStWqH379mrVqpUOHDigGTNm3NZx3KrKlSurbdu2xV732K5dOz366KOKiopSnz591KlTJ8drt9prYGCgli1bps8//1zt2rVT9+7di9xp9tNPP3XcobNfv36KiIjQ888/f8N+hw4dqtzcXLVp00b9+/dX+/btb+u49+7dq/Pnz2vcuHGO+j179rytfQGAO1jst3POAwAAKLHMzEy1bNlSn3322S1dI1pSSUlJmjFjxm3PXAIAzIGZQAAADLRz505lZ2crKytLc+bMUYMGDVSjRg2X7DsnJ0dJSUmOZyi+9957Jb4rJwDAfAiBAAAYKDExUe3bt1f79u31ww8/aO7cuSV+TMSN2O12/fnPf1bLli0VHR2tunXrFnlWIAAAxTHsdNAzZ87oD3/4g9LS0mSxWPTkk09q6NChunjxol544QX99NNPql69uubNm6dKlSpp06ZNjgvaAwICNGPGDDVq1EjSlQcMz549W4WFhXriiSeuew4SAAAAAODWGBYCU1NTde7cOTVu3FgZGRnq27ev3nvvPcXHx6ty5coaMWKEFi9erEuXLumll17SoUOHVLduXVWqVElJSUmaP3++1q5dK5vNpu7du2v58uUKCwtTv379NHfu3Jve7QsAAAAAUDzDTgcNDQ1V48aNJV25m1edOnWUkpKixMREx13WoqOjtWPHDklS8+bNValSJUlSs2bNHM86Onr0qGrVqqWaNWvKx8dHPXv2VGJiolFtAwAAAECZ5u2OIqdPn9Y333yjpk2bKi0tTaGhoZKuPOQ2LS3tuu3XrVunDh06SJJSUlIUHh7ueC0sLMzxTKibOXfuFxd1DwAAAAB3n5CQCsWuNzwEZmZmauzYsZo8ebICAwOLvGaxWK67OP5f//qX1q1bd9sPE76qShV/eXtb72gfAAAAAFDWGBoC8/PzNXbsWPXq1UvdunWTJAUHBys1NVWhoaFKTU0t8rDeY8eOacqUKVqyZImqVKki6crM39VTQ6UrM4NhYWFOa1+4kOXiowEAAACAu8eNZgINuybQbrcrLi5OderUUUxMjGN9ZGSkNmzYIEnasGGDOnfuLEn6+eefNWbMGL3xxhuqXbu2Y/smTZooOTlZp06dUl5enrZs2aLIyEij2gYAAACAMs2wu4MePHhQgwYNUoMGDeTldSVrjh8/Xvfff79iY2N15swZVatWTfPmzVPlypUVFxen7du3q1q1apIkq9Wq+Ph4SVJSUpJee+012Ww29e3bV6NHj3Zan2sCAQAAAJjZjWYCDQuBnkYIBAAAAGBmbj8dFAAAAABQ+hACAQAAAMBECIEAAAAAYCKEQAAAAAAwEUIgAAAAAJgIIRAAAAAATIQQCAAAAAAmQggEAAAAABMhBAIAAACAiRACAQAAAMBECIEAAACAwZ5+up+efrqfp9sAJBECAQAAAMBUCIEAAACAga6dAWQ2EKUBIRAAAAAATIQQCAAAAAAmQggEAAAAABMhBAIAAAAG+vDDdcUuA55CCAQAAAAAEyEEAgAAAAb69NPNxS4DnkIIBAAAAAwUH7+22GXAUwiBAAAAAGAihEAAAADAQH36PFHsMuAphEAAAADAQD169Cp2GfAUQiAAAAAAmAghEAAAADDQ0KH9i10GPMXb0w0AAAD3WbVqpfbv31ui92RmZkiSAgICS/S+Vq3aauDAISV6DxijsshmsxW7DHgKM4EAAOCmcnNzlZub6+k2cBOMEYCSsNjtdrunmzDCuXO/eLoFAADKhNjY0ZKkefMWergT3AhjVLoNHdrfMQNotVr1wQerPdwRzCIkpEKx65kJBAAAAAx0begjAKI0IAQCAAAAgIkQAgEAAADARAiBAAAAgIGeffbpYpcBT+EREQAAl+L29gBQVG5uTrHLgKcwEwgA8Dhubw8AgPswEwgAcKmBA4eUeHaO29sDKMt8ff0cM4C+vn4e7gZgJhAAAAAw1Pvvf1jsMuAphEAAAAAAMBFCIAAAAGCguXPnFLsMeArXBALXuJ27Gkrc2RAAANzYoUMHil0GPIWZQMAFuLMhAAAA7hbMBALXuJ27Gkrc2RAAANxY8+YtHTOAzZu39HA3ADOBAAAAgKHGj3+52GXAU5gJBAAAAAx2zz0hnm4BcCAEAgAAAAZLT0/zdAuAA6eDAgAAAAZasWKJCgsLVVhYqBUrlni6HYCZQAB3l9t5jAeP8AAAeNLOnX8vsvzMM8M92A3ATCAAE+ARHgAAAP8fM4EA7iq38xgPHuEBAPCkyMiu2rHjM8cy4GnMBAIAAAAGuvb0T04FRWlACAQAAAAAEyEEAgAAAAYaOrR/scuApxACAQAAAAPZbLZilwFPIQQCAAAAgIkQAgEAAAADWa3WYpcBTyEEAgAAAAb64IPVxS4DnmJYCDxz5owGDx6sRx99VD179tQHH3wgSbp48aJiYmLUrVs3xcTE6NKlS5Kk77//Xv3799dvf/tbvf/++0X2tXv3bnXv3l1du3bV4sWLjWoZAAAAAMo8w0Kg1WrVxIkTtXXrVq1evVqrVq3SiRMntHjxYrVt21bbt29X27ZtHaGucuXKiouL07PPPltkPzabTTNnztTSpUu1ZcsWJSQk6MSJE0a1DQAAALjUyy+/UOwy4CneRu04NDRUoaGhkqTAwEDVqVNHKSkpSkxM1F//+ldJUnR0tAYPHqyXXnpJwcHBCg4OVlJSUpH9HD16VLVq1VLNmjUlST179lRiYqLq1atnVOuGWrVqpfbv31ui92RmZkiSAgICS/S+Vq3aauDAISV6DwAAAFzrp59OFbsMeIphIfBap0+f1jfffKOmTZsqLS3NEQ5DQkKUlpZ20/empKQoPDzc8XNYWJiOHj3qtGaVKv7y9i59F976+/vIai3ZBGxubq4kqWLFiiWuFRJSoUTvwe25OqZ83qUT41P6MUalG+NT+jFGdxfGCZ5meAjMzMzU2LFjNXnyZAUGFp3JslgsslgshtS9cCHLkP3eqejoAYqOHlCi98TGjpYkvfXWeyWud+7cLyV+D0rOZiuUxOddWjE+pR9jVLoxPqUfY1S6Va9e0zEDWL16TcYJbnOjf3Aw9O6g+fn5Gjt2rHr16qVu3bpJkoKDg5WamipJSk1NVVBQ0E33ERYWprNnzzp+TklJUVhYmHFNAwAAAC40Z87bxS4DnmJYCLTb7YqLi1OdOnUUExPjWB8ZGakNGzZIkjZs2KDOnTvfdD9NmjRRcnKyTp06pby8PG3ZskWRkZFGtQ0AAAC4nJFnwAElZdjpoF9++aU2btyoBg0a6PHHH5ckjR8/XiNGjFBsbKzWrVunatWqad68eZKkc+fOqW/fvsrIyJCXl5c++OADbd26VYGBgZo2bZp+97vfyWazqW/fvqpfv75RbQMAAAAuZ7fbPd0C4GBYCGzRooWOHz9e7GtXnxl4rZCQEO3evbvY7Tt27KiOHTu6tD8AAADAHZ577tkiywsWvH+TrQHjGXpNIAAAAGB2ly9fKnYZ8BRCIAAAAACYCCEQAAAAMFDFipWKXQY8hRAIAAAAGOjaawC5HhClgeEPiwcAAADMjhlAlCaEQAAAAMBgzACiNOF0UAAAAAAwEUIgAAAAAJgIIRAAAAAATIQQCAAAAAAmQggEAAAAABMhBAIAAACAifCICAAA7lIzZ05Renqa4XWu1oiNHW14LUkKCgrWtGmz3FILuB2rVq3U/v17S/SezMwMSVJAQGCJ3teqVVsNHDikRO8xO8bHOUIgAAB3qfT0NJ1POy8F+BtbyGqVJJ3PyTK2jiRluqEG4AG5ubmSSh4y4B5mGx9CIAAAd7MAf5V7qq+nu3CZ/I8+8XQLgFMDBw4p8ezP1Zn0efMWGtESrsH4OMc1gQAAAABgIoRAAAAAADARQiAAAAAAmAghEAAAAABMhBvDAABuqCw+goDHDwAAzI4QCAC4oSuPIDgnBZYzttCVJxDofO5FY+tk5Bu7fwAA7gKEQADAzQWWk/Xphp7uwiVsHx73dAsAAHgc1wQCAAAAgIkQAgEAAADARAiBAAAAAGAiXBOIMstddzWUuLMhAAAA7h6EQJRZ6elpSk87p4rlja9V7v/m1Auyzhla53K2obsHAACACRACUaZVLC+9+IiPp9twmTe35Xm6BQAAANzluCYQAAAAAEyEEAgAAAAAJkIIBAAAAAATIQQCAAAAgIkQAgEAAADARAiBAAAAAGAihEAAAAAAMBFCIAAAAACYCCEQAAAAAEyEEAgAAAAAJuLt6QYAmNfMmVOUnp5meJ2rNWJjRxteKygoWNOmzTK8DgAAwO0iBALwmPT0NKWlnVN5f2PreFmv/JmVfc7QOtlZhu4eAADAJQiBADyqvL/0SG9Pd+Ea29Z7ugMAAADnuCYQAAAAAEyEEAgAAAAAJkIIBAAAAAATIQQCAAAAgIkQAgEAAADARAiBAAAAAGAihEAAAAAAMBFCIAAAAACYCCEQAAAAAEyEEAgAAAAAJkIIBAAAAAATIQQCAAAAgIkQAgEAAADARAwLgWfOnNHgwYP16KOPqmfPnvrggw8kSRcvXlRMTIy6deummJgYXbp0SZJkt9s1a9Ysde3aVb169dJ//vMfx77Wr1+vbt26qVu3blq/fr1RLQMAAABAmWdYCLRarZo4caK2bt2q1atXa9WqVTpx4oQWL16stm3bavv27Wrbtq0WL14sSdq9e7eSk5O1fft2vfrqq5oxY4akK6Fx/vz5WrNmjdauXav58+c7giMAAAAAoGQMC4GhoaFq3LixJCkwMFB16tRRSkqKEhMTFR0dLUmKjo7Wjh07JMmx3mKxqFmzZrp8+bJSU1P1xRdfqF27dqpcubIqVaqkdu3aac+ePUa1DQAAAABlmluuCTx9+rS++eYbNW3aVGlpaQoNDZUkhYSEKC0tTZKUkpKi8PBwx3vCw8OVkpJy3fqwsDClpKS4o20AAAAAKHO8jS6QmZmpsWPHavLkyQoMDCzymsVikcViMaRulSr+8va2GrJvd7Nar2T1kJAKHu7k7mK1eqnA000YwGr1KjPfhavf7bKkLI2PxBiVdmVxfKSyNUbuwt8VSj/GqHQz2/gYGgLz8/M1duxY9erVS926dZMkBQcHKzU1VaGhoUpNTVVQUJCkKzN8Z8+edbz37NmzCgsLU1hYmPbv3+9Yn5KSolatWjmtfeFClouPxnNstkJJ0rlzv3i4k7vL1c+trLHZCsvMd6EsjlFZGh+JMSrtyuL4SGVrjNyFvyuUfoxR6VZWx+dGodawf0K02+2Ki4tTnTp1FBMT41gfGRmpDRs2SJI2bNigzp07F1lvt9v173//WxUqVFBoaKgeeughffHFF7p06ZIuXbqkL774Qg899JBRbQMAAABAmWbYTOCXX36pjRs3qkGDBnr88cclSePHj9eIESMUGxurdevWqVq1apo3b54kqWPHjkpKSlLXrl1Vvnx5vfbaa5KkypUr67nnnlO/fv0kSb///e9VuXJlo9oGAAAAgDLNsBDYokULHT9+vNjXrj4z8FoWi0XTp08vdvt+/fo5QiAAAAAA4PaVzSvKAQAAAADFIgQCAAAAgIkQAgEAAADARAiBAAAAAGAihEAAAAAAMBFCIAAAAACYCCEQAAAAAEyEEAgAAAAAJkIIBAAAAAATIQQCAAAAgIkQAgEAAADARAiBAAAAAGAi3p5u4G42c+YUpaenGV7nao3Y2NGG1woKCta0abMMrwMAAADAMwiBdyA9PU3paecV5OdvaB1fL+uVhcwsQ+uk5xi7fwAAAACeRwi8Q0F+/prXvY+n23CJ2M/iPd0CAAAAAINxTSAAAAAAmAghEAAAAABMhBAIAAAAACZCCAQAAAAAEyEEAgAAAICJcHdQlFmZmRnKyZHe3Jbn6VZc5lK25GfP8HQbAAAAuIsxEwgAAAAAJsIqYMc4AAAgAElEQVRMIMqsgIBA+Vqy9eIjPp5uxWXe3JYnb/9AT7cBAACAuxgzgQAAAABgIoRAAAAAADARQiAAAAAAmMhNQ6DNZtOUKVPc1QsAAAAAwGA3DYFWq1XHjx93Vy8AAAAAAIM5vTtomzZtNHPmTEVHR8vf39+xvl69eoY2BgAAAABwPachcMuWLZKkXbt2OdZZLBYlJiYa1hQAAAAAwBhOQ+DOnTvd0QcAAAAAwA1u+WHxaWlpys3NdfxcrVo1QxoCAAAAABjHaQjcu3evJk6cqLS0NHl5eSk/P1+VK1fW3r173dEfAMCDMjMzpJx82T4sIzcJy8hXZkGGp7sAAMCjnD4n8E9/+pNWrFihevXq6ciRI5o5c6aefPJJd/QGAAAAAHCxWzodtHbt2iooKJDFYtETTzyhPn366IUXXjC6NwCAhwUEBCrbu0DWpxt6uhWXsH14XAG+gZ5uAwAAj3IaAr29r2wSFhamnTt3qnr16rp06ZLhjQEAAAAAXM9pCBwyZIguXbqkcePGacKECfrll180adIkd/QGAAAAAHAxpyHwsccekyTdf//9+vvf/254QwAAAAAA4zi9MUx2drbefvttTZgwQZL0/fffa8eOHYY3BgAAAABwPaczgTNmzFBISIiOHTsmSQoPD9eECRPUpUsXw5sr7TIzM5Sbk6PYz+I93YpLpOdkyVeFnm4DAAAAgIGczgQeP35cL774osqVKydJCggIUGEhQQEAAAAA7kZOZwJ9fHyK/Jybmyu73W5YQ3eTgIBABchL87r38XQrLhH7WbwU4O/pNgAAAAAYyGkIbNGihRYtWqS8vDzt27dPy5cvV2RkpDt6AwAAAAC4mNPTQV944QXZ7XYFBAToT3/6k+6//36NGTPGHb0BAAAAAFzM6UxgYWGhRo8erdGjR7ujHwAAAACAgZyGwMjISEVFRWngwIGqWbOmO3oCYBKZmRnKyZG2rfd0J66RnSXZCzM83QZMJDMzQ8rJUf5Hn3i6FdfJzFKmrezcgG7mzClKT08zvM7VGrGxxv+jfVBQsKZNm2V4HQDGcRoCN23apNWrV2vIkCGqW7euBg0apE6dOrmjNwAAgLtaenqazqelyRJQ0dA6duuVu7in5eQbWyfzsqH7B+AeTkNgcHCwnnvuOY0cOVKJiYl65ZVX9Oqrr+rpp5/WoEGD5Ovr644+AZRBAQGBsnhl65Henu7ENbatl/zLB3q6DZhIQECgsq1eKvdUX0+34jL5H32iAL+ydadqS0BFBQ582dNtuETGqjmebgGACzi9MYwkZWdna+3atZo/f77uvfdevfDCC/rf//6n4cOHG90fAAAAAMCFnM4Ezpw5U9u3b1dkZKTefPNNNWjQQJLUq1cvPfLII4Y3CAAAAABwHachsHr16tqyZYsqVap03WsrV640pCkAAAAAgDGchsBnn332hq+Fhoa6tBkAAAAAgLFu6ZpAAAAAAEDZQAgEAAAAABMhBAIAAACAiTgNgWlpaXrxxRc1aNAgSdKxY8f00UcfOd3xpEmT1LZtWz322GOOdceOHVP//v3Vq1cvjRo1ShkZGZKkvLw8TZo0Sb169VJUVJT27dvneM/XX3+tXr16qWvXrpo1a5bsdnuJDxIAAAAAcIXTEDhlyhQ98MADunz5siSpTp06WrVqldMd9+nTR0uXLi2yLi4uThMmTNDmzZvVpUsXx+tr166VJG3evFnLly/XnDlzVFhYKEmaMWOGXn31VW3fvl3JycnavXt3yY4QAAAAAODgNASmpKToqaeektVqlST5+PjIy8v5WaQtW7a87rESycnJatmypSSpXbt22r59uyTpxIkTat26tSQpODhYFSpU0Ndff63U1FRlZGSoWbNmslgsio6OVmJiYsmOEAAAAADg4DTNeXsXfYrE5cuXb/uUzPr16ztC3LZt23TmzBlJUqNGjbRz504VFBTo1KlT+s9//qMzZ84oJSVF4eHhjveHh4crJSXltmoDAAAAAG7hOYFdu3bVtGnTlJmZqfj4eK1atUp9+/a9rWKzZ8/W7NmztWDBAkVGRsrHx0eS1LdvX33//ffq27evqlWrpoiICMfM4+2qUsVf3t53tg9nrFYv2Qyt4H5Wq5dCQip4ug2XsFq9VODpJgxQ1saorClL4yMxRqVdWRwfiTEq7crS+LjT1e8Cn13pZLbxcRoChw8frk2bNuny5ctKSkrS4MGD9fjjj99Wsbp162rZsmWSpJMnT2rXrl1XmvD21uTJkx3bDRgwQL/5zW9UsWJFnT171rH+7NmzCgsLu6VaFy5k3VaPJWGzFRpew91stkKdO/eLp9twibI4PhJjVNqVpfGRGKPSriyOj8QYlXZlaXzc6ep3gc+udCqr43OjUOs0BEpSVFSUoqKi7riJtLQ0BQcHq7CwUAsXLtSAAQMkSdnZ2bLb7fL399c//vEPWa1W1atXT5IUGBiof//732ratKk2bNigwYMH33EfAAAAAGBWTkPg66+/rt///vcqX768hgwZov/+97965ZVXnM4Gjh8/Xvv379eFCxfUoUMHjRkzRllZWY47i3bt2tVxWmlaWpqeffZZeXl5KSwsTG+88YZjP9OnT9ekSZOUk5OjDh06qEOHDndyvAAAAABgak5D4D//+U9NnDhRu3btUlhYmN5++22NGDHCaQicO3duseuHDh163boaNWros88+K3b7Jk2aKCEhwVmbAAAAAIBbcMtXKx84cEBdu3ZVWFiYLBaLkT0BAAAAAAziNAQGBwdr+vTp+vTTT9WuXTsVFBTIZitr98QEAAAAAHNwGgLfeust1a5dW3PnzlWlSpV09uxZxcTEuKM3AAAAAICLOb0mMCgoSM8884zj5xo1aqhGjRpG9gQAAAAAMIjTEHjmzBn96U9/0rFjx5Sbm+tYn5iYaGhjAAAAAADXc3o66OTJk9W2bVvZ7Xa9+eabeuCBB9S7d2939AYAAAAAcDGnIfDChQt64okn5O3trYiICL3++utKSkpyR28AAAAAABdzGgLLlSsnSfL399fPP/+sgoICpaenG94YAAAAAMD1nF4T2KJFC128eFFPPfWU+vTpIx8fH3Xv3t0dvQEAAAAAXMxpCHz55ZclSdHR0WrVqpUyMjLUoEEDwxsDAAAAALie09NBJWnv3r368MMPVa1aNQUFBenkyZNG9wUAAAAAMIDTELh48WLNnz9fK1eulCQVFBRo8uTJhjcGAAAAAHA9pyEwISFBK1askL+/vyQpPDxcGRkZhjcGAAAAAHA9pyHQz8/PcYfQqywWi2ENAQAAAACM4/TGMOHh4Tp48KAsFosKCwu1aNEi1a9f3x29AQAAAABczOlM4NSpU7VgwQJ99913atq0qQ4cOMA1gQAAAABwl3I6ExgSEqJly5YpOztbhYWFCggIcEdfAAAAAAAD3DAEnjhx4qZvrFevnsubAQAAAAAY64YhcMSIETd8k8ViUWJioiENAQAAAACMc8MQuHPnTnf2AQAAAABwA6c3hpGkvXv36sMPP5QkpaWl6eTJk4Y2BQAAAAAwhtMQuHjxYs2fP18rV66UJOXn53N3UAAAAAC4SzkNgQkJCVqxYoX8/f0lXXluYEZGhuGNAQAAAABcz2kI9PPzU7ly5Yqss1gshjUEAAAAADCO0+cEhoeH6+DBg7JYLCosLNSiRYtUv359d/QGAAAAAHAxpzOBU6dO1YIFC/Tdd9+padOmOnDgANcEAgAAAMBd6qYzgYWFhUpLS9OyZcuUnZ2twsJCBQQEuKs3AAAAwDAzZ05RenqaW2pdrRMbO9rwWkFBwZo2bZbhddzBXWNktvG5aQj08vLSSy+9pM2bN6t8+fLu6gkAAAAwXHp6mtLS0hQYEGR4LavVV5KUm2M3tE5GZrqh+3e39PQ0paelKci3sqF1fC0+VxYybIbWSc+9aOj+b5XTawJr1aql06dPq0aNGu7oBwAAAHCbwIAgPfvkO55uw2XeXzPO0y24XJBvZb3VYbqn23CJCbtf8XQLkm4hBGZmZioqKkoPPPCA4zERkvTOO2XnlwUAAAAAzMJpCIyKilJUVJQ7egEAAAAAGMxpCOzdu7c7+gAAAAAAuIHTEAgARsrOkratN7ZGXt6VP318jK2TnSX5cw8tAABQyhECAXhMUFCwW+rkZF+57bN/eWPr+Zd33zEBAADcLkIgAI9x1zNyrj7zZ968hW6pBwAAUJp53cpGe/fu1YcffihJOn/+vE6ePGloUwAAAAAAYzgNgYsXL9b8+fO1cuVKSVJBQYEmT55seGMAAAAAANdzGgITEhK0YsUKxzMCw8PDlZGRYXhjAAAAAADXcxoC/fz8VK5cuSLrLBaLYQ0BAAAAAIzj9MYw4eHhOnjwoCwWiwoLC7Vo0SLVr1/fHb0BAAAAAFzM6Uzg1KlTtWDBAn333Xdq2rSpDhw4wDWBAAAAAHCXcjoTGBISomXLlik7O1uFhYUKCAhwR18AAAAAAAM4DYFJSUnXrQsMDFSDBg1UoUIFQ5oCAAAAABjDaQhcsGCBvvrqKzVs2FCS9O2336phw4ZKSUnRrFmz1KlTJ8ObBAAAAAC4htNrAu+9916tWbNG69ev1/r167VmzRrVqVNHK1eu1Lx589zRIwAAAADARZyGwGPHjum3v/2t4+fGjRvr22+/Vd26dWW32w1tDgAAAADgWk5DYPny5ZWQkOD4OSEhQX5+fpJ4XiAAAAAA3G2cXhP4xz/+US+99JLjsRD16tXTnDlzlJWVpT/84Q+GNwgAAAAAcB2nIbBu3bqKj49XRkaGpCt3Br2qXbt2xnUGAAAAAHA5pyFQkn755RedPHlSubm5jnUtW7Y0rCkAAAAAgDGchsCtW7dqzpw5unz5skJDQ/Xjjz+qUaNGWr9+vTv6AwAAAAC4kNMbwyxatEjx8fGqVauWPvvsMy1dulRNmjRxR28AAAAAABdzGgK9vb0VHBwsm80m6cp1gF999ZXhjQEAAAAAXM/p6aA+Pj6y2+2qVauW/vrXv6p69erKyspyR28AAAAAABdzGgLHjRunjIwMvfjii5oxY4Z++eUXTZ8+3R29AQAAAABc7KYh0Gaz6ccff1Tbtm1VoUIFrVix4pZ3PGnSJO3atUvBwcGOh80fO3ZM06dPV1ZWlqpXr64333xTgYGBys/P15QpU/Tf//5XBQUFio6O1siRIyVJu3fv1uzZs1VYWKgnnnhCI0aMuP2jBQAAAACTu+k1gVarVatXr76tHffp00dLly4tsi4uLk4TJkzQ5s2b1aVLF8fr27ZtU15enjZv3qz4+HitXr1ap0+fls1m08yZM7V06VJt2bJFCQkJOnHixG31AwAAAAC4hRvDtG7dWtu2bSvxjlu2bKlKlSoVWZecnOx4vmC7du20fft2SZLFYlF2drYKCgqUk5OjcuXKKTAwUEePHlWtWrVUs2ZN+fj4qGfPnkpMTCxxLwAAAACAK5xeE7h+/XotX75cfn5+Kl++vOx2uywWi/bu3VviYvXr11diYqK6dOmibdu26cyZM5Kk7t27KzExUQ899JBycnI0adIkVa5cWSkpKQoPD3e8PywsTEePHi1xXQAAAADAFU5D4CeffOKyYrNnz9bs2bO1YMECRUZGysfHR5J09OhReXl5ac+ePbp8+bIGDhyoBx988I5qVaniL29vqyvaviGr1Us2Qyu4n9XqpZCQCp5uwyWsVi8VeLoJA5SlMXIXq/XKSQ98biV39bMrS8rS71BZHB+JMSrtyt74lLW/zZW9MbKVsTEqDePjNARWr15dGRkZ+uGHH9S4ceM7Kla3bl0tW7ZMknTy5Ent2rVLkpSQkKD27durXLlyCg4OVvPmzfXVV1+patWqOnv2rOP9KSkpCgsLu6VaFy4Y/xgLm63Q8BruZrMV6ty5XzzdhkuUxfGRytYYucvV7wKfW8mVxd+jsvQ7VBbHR2KMSjvGp/RjjEo3d47PjcKm03+eSkpKUs+ePTVmzBhJ0ldffaVRo0bdVhNpaWmSpMLCQi1cuFADBgyQJFWtWlX79u2TJGVlZenIkSOqU6eOmjRpouTkZJ06dUp5eXnasmWLIiMjb6s2AAAAAOAWZgL//Oc/a926dRo+fLgkqUmTJvrxxx+d7nj8+PHav3+/Lly4oA4dOmjMmDHKysrSqlWrJEldu3ZV3759JUmDBg3SpEmT1LNnT9ntdvXp00eNGjWSJE2bNk2/+93vZLPZ1LdvX9WvX/+2DxYAAAAAzM5pCJSkkJCQIj9fvZbvZubOnVvs+qFDh163LiAgQH/+85+L3b5jx47q2LHjLXQJAAAAAHDGaQgMCAjQ+fPnZbFYJEn79u1ThQpl40JTV0jPyVLsZ/GG1sjMz5MkBZRzHr7vRHpOloIC/A2tAQAAAMCznIbACRMmaPjw4Tp9+rQGDx6s5ORkLVy40B29lXpBQcFuqZObni1JCjA4oAUF+LvtmAAAAAB4htMQ2LRpU61cuVKHDh2SJEVERKhixYqGN3Y3mDZtllvqxMaOliTNm0f4BgAAAHBnnIbA9957T3369OG6PAAAAAAoA5w+IiIjI0NPPvmknnnmGW3atEm5ubnu6AsAAAAAYACnIfDll1/Wrl27NGTIEO3YsUOdOnXStGnT3NEbAAAAAMDFbukREVarVZGRkapRo4aWLVumTz75RDNnzjS6NwAAgLtaZmaG7Dk5ylg1x9OtuIQ985IybX6ebgPAHXIaAi9evKiEhATFx8crMzNTvXv31o4dO9zRGwAAAADAxZyGwEceeURdu3ZVXFycHnjgAXf0BAAAUCYEBAQqx+qrwIEve7oVl8hYNUcBfuU83QaAO+Q0BO7atUt+fkWn/Q8ePKgWLVoY1hQAAAAAwBhOQ+DVAJiamqr169crPj5edrtd27dvN7w5AAAAAIBr3TQEFhQUKDExUevWrdPRo0dVUFCg999/X82aNXNXfwAAAAAAF7rhIyJee+01dezYUatXr1ZUVJSSkpJUqVIlAiAAAAAA3MVuOBO4evVqNWvWTCNGjFCbNm0kSRaLxW2NAQAAAABc74YhcM+ePdq8ebPeeOMNXbp0SdHR0bLZbO7sDQAAAADgYjc8HbRixYoaNGiQ4uPj9d577+ny5cvKzc3VoEGD9PHHH7uzRwAAAACAi9wwBF6rUaNGiouL0+7du/X0008rMTHR6L4AAAAAAAZw+oiIa5UrV049evRQjx49jOoHAAAAAGCgW5oJBAAAAACUDSWaCQQAmFBGvmwfHje2Rs7/3XjMz2psnYx8ydfYEgDuHpmZGcrJydX7a8Z5uhWXychMV4GN/9Hh5giBAIAbCgoKdkud9My0K/V8KxtbyNd9xwQAQGlFCAQA3NC0abPcUic2drQkad68hW6pBwCSFBAQKG9rgJ598h1Pt+Iy768ZJ18/nu2Nm+OaQAAAAAAwEUIgAAAAAJgIIRAAAAAATIQQCAAAAAAmwo1hAAC4m2VmKf+jT4ytkZt35U9fH2PrSFJmluTnb3wdAHeFzMwM5ebkasLuVzzdikuk51yUr8Xzj/AgBAIAcJdy2yM8srKv1HNHOPPz5zEeAGAwQiAAAHcpHuEBoKwLCAhUgL283uow3dOtuMSE3a9IAVZPt8E1gQAAAABgJoRAAAAAADARQiAAAAAAmAghEAAAAABMhBAIAAAAACZCCAQAAAAAEyEEAgAAAICJEAIBAAAAwEQIgQAAAABgIoRAAAAAADARQiAAAAAAmAghEAAAAABMhBAIAAAAACZCCAQAAAAAEyEEAgAAAICJEAIBAAAAwES8Pd0AAABAWWbPvKyMVXOMrZGbLUmy+JY3tk7mZckv2NAaAIxHCAQAADBIUJB7AlN61uUr9fwqGlvIL9htxwTAOIRAAAAAg0ybNsstdWJjR0uS5s1b6JZ6AO5uXBMIAAAAACZCCAQAAAAAEyEEAgAAAICJEAIBAAAAwEQIgQAAAABgIoRAAAAAADARQiAAAAAAmIhhIXDSpElq27atHnvsMce6Y8eOqX///urVq5dGjRqljIwMSdKmTZv0+OOPO/5r1KiRvvnmG0nS119/rV69eqlr166aNWuW7Ha7US0DAAAAQJlnWAjs06ePli5dWmRdXFycJkyYoM2bN6tLly6O16OiorRx40Zt3LhRb7zxhmrUqKH77rtPkjRjxgy9+uqr2r59u5KTk7V7926jWgYAAACAMs/bqB23bNlSp0+fLrIuOTlZLVu2lCS1a9dOzz77rGJjY4tss2XLFvXs2VOSlJqaqoyMDDVr1kySFB0drcTERHXs2NGotgEAAGAiGZnpen/NOMPr5ORmSpL8fAMMrZORmS5fv2BDa7hbeu5FTdj9iqE1MvOzJEkB5fwNrZOee1FBgZ4fH8NCYHHq16+vxMREdenSRdu2bdOZM2eu22br1q1asGCBJCklJUXh4eGO18LDw5WSknJLtapU8Ze3t9U1jXuY1XplwjYkpIKHO7m7WK1eKvB0EwawWr34LpQQv0OlH2NUujE+pR9jdHvCwkIdn53RMrNyJUn+ARUNreMfEKJ77rmnzHwX3DVGuefyJEkVK1UytE6ISsf4uDUEzp49W7Nnz9aCBQsUGRkpHx+fIq8fOXJE5cuXV4MGDe641oULWXe8j9LCZiuUJJ0794uHO7m7XP3cyhqbrZDvQgnxO1T6MUalG+NT+jFGt2fSJGNnl64VGztakvTWW++5pV5Z+S64a4zK6vjcKGy6NQTWrVtXy5YtkySdPHlSu3btKvL6taeCSlJYWJjOnj3r+Pns2bMKCwtzS68AAAAAUBa59RERaWlpkqTCwkItXLhQAwYMcLxWWFioTz/9tEgIDA0NVWBgoP7973/Lbrdrw4YN6ty5sztbBgAAAIAyxbCZwPHjx2v//v26cOGCOnTooDFjxigrK0urVq2SJHXt2lV9+/Z1bH/gwAFVrVpVNWvWLLKf6dOna9KkScrJyVGHDh3UoUMHo1pGGXQ5W3pzW57hdbL/r0R5n5tvd6cuZ0tBxl6vDAAAgDLOsBA4d+7cYtcPHTq02PWtW7fWmjVrrlvfpEkTJSQkuLQ3mENQkPvuvJSfc2WWu4K/sTWD/N17XAAAACh73HpNIOBO06bNclutqxcTz5u30G01AQAAgNvh1msCAQAAAACeRQgEAAAAABMhBAIAAACAiRACAQAAAMBECIEAAAAAYCKEQAAAAAAwEUIgAAAAAJgIIRAAAAAATIQQCAAAAAAmQggEAAAAABMhBAIAAACAiRACAQAAAMBECIEAAAAAYCKEQAAAAAAwEUIgAAAAAJgIIRAAAAAATIQQCAAAAAAmQggEAAAAABPx9nQDAFASq1at1P79e0v0nvT0NElSbOzoEr2vVau2GjhwSIneAwAAUNoRAgGUeb6+vp5uAQAAoNQgBAK4qwwcOITZOQAAgDvANYEAAAAAYCKEQAAAAAAwEUIgAAAAAJgIIRAAAAAATIQQCAAAAAAmQggEAAAAABMhBAIAAACAiRACAQAAAMBECIEAAAAAYCKEQAAAAAAwEW9PNwCUJqtWrdT+/XtL/L709LT/1969B0V13n8c/6wgqNwUg5c06TRqkjZStY6gKCGBqKUglyJ4wQnR0sZkYoyDcSjaabSpOs3FZhytTWxMNC0xhkFt46VOIF4S8FLTesU6E2smdhQNoHJd2OX5/eFk+zOKET3LRs77NeMMnOPznO+zX/bsfji7iyRpzpyn2zUuOjpG2dk57T4eANyqWznPcY4DgM6FEAhYIDAw0NclAIDXcI4DgM6FEAj8P9nZOfzWGkCnxnkOAMB7AgEAAADARgiBAAAAAGAjhEAAAAAAsBFCIAAAAADYCCEQAAAAAGyEEAgAAAAANkIIBAAAAAAbIQQCAAAAgI0QAgEAAADARgiBAAAAAGAjhEAAAAAAsBFCIAAAAADYCCEQAAAAAGyEEAgAAAAANkIIBAAAAAAbIQQCAAAAgI0QAgEAAADARgiBAAAAAGAjhEAAAAAAsBGvhcCCggLFxMRowoQJnm0nTpzQ5MmTlZKSoqeeekp1dXXX7EtOTlZKSoqcTqck6ejRo0pJSdG4ceP029/+VsYYb5UMAAAAAJ2e10JgRkaG/vSnP121bcGCBZo7d67+9re/aezYsZ79LpdL8+bN06JFi7RlyxatW7dO/v7+kqSFCxfqxRdf1I4dO3T69Gnt3r3bWyUDAAAAQKfntRAYFRWlsLCwq7adPn1aUVFRkqQxY8Zox44dkqRPPvlEDz74oL7//e9Lknr16iU/Pz+dP39edXV1GjZsmBwOh9LT01VSUuKtkgEAAACg0/PvyIPdf//9Kikp0dixY7V9+3adPXtWkvSf//xHDodDubm5qq6uVlJSkn7xi1+osrJS/fr184zv16+fKisrO7JkAEA7FRau0/795e0aU11dJUmaM+fpdo2Ljo5RdnZOu8YAADo3Hoe+WYeGwMWLF2vx4sX6wx/+oISEBAUEBEiS3G63Dh48qKKiInXv3l3Tp09XZGSkgoODb/lYvXr1kL+/n1Wl+5Sf35ULthERIT6uBAC+WY8eAZ7z1s3q1q2bJLV7XI8eAZwbAfFc4U5AjzoOj0PfrEND4MCBA7VmzRpJV67+7dy5U9KVK3xRUVEKDw+XJMXFxenYsWNKTU3VuXPnPOPPnTunvn373tSxamoarC3eh9zuVknShQu1Pq4EAL5ZevoUpadP6bDjcW4EeK5wJ6BHHYfHof9pK6B26J+IqKq6cpm1tbVVq1at0pQpV5oTGxurkydPqrGxUS6XSwcOHNCgQYPUp08fBQcH61//+peMMdq0aZMee+yxjiwZAAAAADoVr10JzMvL0/79+1VTU6O4uDg9++yzamhoUGFhoSRp3LhxmjhxoiQpLCxM06dPV2ZmphwOh+Li4vToo49Kkl544QUVFBSoqalJcXFxiouL81bJAAAAANDpeUCKAjgAABBRSURBVC0ELlu27Lrbn3jiietuT0tLU1pa2jXbf/jDH+qDDz6wtDYAAAAAsKsOfTkoAAAAAMC3CIEAAAAAYCOEQAAAAACwEUIgAAAAANgIIRAAAAAAbIQQCAAAAAA2QggEAAAAABshBAIAAACAjRACAQAAAMBGCIEAAAAAYCOEQAAAAACwEUIgAAAAANgIIRAAAAAAbMTf1wXYTWHhOu3fX96uMdXVVZKkOXOebte46OgYZWfntGsMAADwLZ4rAPA2QuAdIDAw0NclAACAbzGeKwBoD4cxxvi6CG+4cKHW1yUAAAAAkv53lfa111b5uBLYSUREyHW3855AAAAAALARQiAAAAAA2AghEAAAAABshBAIAAAAADZCCAQAAAAAGyEEAgAAAICNEAIBAAAAwEYIgQAAAABgI4RAAAAAALARQiAAAAAA2IjDGGN8XYQ3XLhQ6+sSAAAA0AkVFq7T/v3l7RpTXV0lSQoP792ucdHRMcrOzmnXGOArEREh193u38F1AAAAALYTGBjo6xIAD64EAgAAAEAn1NaVQN4TCAAAAAA2QggEAAAAABshBAIAAACAjRACAQAAAMBGCIEAAAAAYCOEQAAAAACwEUIgAAAAANgIIRAAAAAAbIQQCAAAAAA2QggEAAAAABshBAIAAACAjRACAQAAAMBGCIEAAAAAYCOEQAAAAACwEUIgAAAAANgIIRAAAAAAbIQQCAAAAAA2QggEAAAAABtxGGOMr4sAAAAAAHQMrgQCAAAAgI0QAgEAAADARgiBAAAAAGAjhEAAAAAAsBFCIAAAAADYCCEQAAAAAGyEEOgjZ8+e1eOPP66kpCQlJydr7dq1kqSLFy9qxowZGj9+vGbMmKFLly5Jkj777DNNnjxZkZGRevPNN6+aq6CgQDExMZowYUKHr6Mzs6pHbc2D22NVf5xOpzIzM5Wamqrk5GQtX77cJ+vpjKw8z0mS2+1Wenq6Zs6c2aHr6Kys7E9CQoJSUlKUlpamjIyMDl9LZ2Vljy5fvqzZs2crMTFRP/nJT/TPf/6zw9fTGVnVo1OnTiktLc3zb/jw4Xr77bd9saROxcr70Ntvv63k5GRNmDBBeXl5cjqdHb4eK/F3An3k/PnzunDhggYPHqy6ujpNnDhRK1euVHFxsXr27Kknn3xSb7zxhi5duqR58+apqqpK//3vf1VSUqLQ0FDl5uZ65jpw4IB69Oih/Px8ffDBBz5cVediVY/ammfQoEE+XuGdzar+GGPU0NCgoKAgtbS0KDs7WwsWLNCwYcN8vMI7n5XnOUl66623dPToUdXV1en111/30ao6Dyv7k5CQoKKiIoWHh/twRZ2PlT3Kz8/XiBEjlJWVpebmZjU1NSk0NNSHq+scrD7PSVd+4RUXF6cNGzboO9/5jg9W1XlY1Z/KykpNnTpVW7duVbdu3fTcc8/pkUceuaN/6cWVQB/p06ePBg8eLEkKDg7WgAEDVFlZqZKSEqWnp0uS0tPT9eGHH0qSevfurSFDhsjf3/+auaKiohQWFtZxxduEVT1qax7cHqv643A4FBQUJElyuVxyuVxyOBwduJLOy8rz3Llz57Rz505lZmZ23AI6OSv7A++wqke1tbU6cOCA5/4TEBBAALSIN+5H5eXluvfeewmAFrCyP263W01NTXK5XGpqalKfPn06biFeQAj8Fjhz5owqKio0dOhQVVVVeX6oIiIiVFVV5ePqIFnXo/8/D6xzu/1xu91KS0vT6NGjNXr0aPrjBbfboyVLlmjevHnq0oWHLW+w4hyXm5urjIwMvffee94s1bZup0dnzpxReHi4CgoKlJ6ergULFqihoaEjyrYVq54rbNmyhbf4eMHt9Kdv37762c9+pvj4eMXGxio4OFixsbEdUbbX8GjqY/X19Zo9e7bmz5+v4ODgq/Y5HA6uSHwLWNWjG82DW2dFf/z8/LR582bt2rVLhw8f1smTJ71Vri3dbo8++ugjhYeHKzIy0ptl2pYV96F3331XGzdu1OrVq/WXv/xFBw4c8Fa5tnS7PXK5XDp+/LimTp2qTZs2qXv37nrjjTe8WbLtWPVcobm5WaWlpUpMTPRGmbZ1u/25dOmSSkpKVFJSoj179qixsVGbN2/2ZsleRwj0oZaWFs2ePVspKSkaP368pCuXoc+fPy/pyuuYeX+Fb1nVo+vNg9tn9X0oNDRUI0eO1J49e7xSrx1Z0aNPP/1UpaWlSkhIUF5envbu3avnn3/e67XbgVX3ob59+3rGjhs3TocPH/Ze0TZjRY/69eunfv36eV7lkJiYqOPHj3u3cBux8rFo9+7dGjx4sO666y6v1Ws3VvSnrKxM99xzj8LDw9W1a1eNHz/+jv9wJUKgjxhjtGDBAg0YMEAzZszwbE9ISNCmTZskSZs2bdJjjz3mqxJtz6oetTUPbo9V/amurtbly5clSU1NTSorK9OAAQO8V7iNWNWjuXPnavfu3SotLdWyZcs0atQovfLKK16t3Q6s6k9DQ4Pq6uo8X3/yySe6//77vVe4jVjVo4iICPXr10+nTp2SdOU9ZwMHDvRe4TZi9fO5LVu2KDk52Su12pFV/bn77rt16NAhNTY2yhjTKe5DfDqoj/zjH//QtGnT9MADD3je45KXl6chQ4Zozpw5Onv2rO6++2699tpr6tmzpy5cuKCJEyeqrq5OXbp0UY8ePbR161YFBwcrLy9P+/fvV01NjXr37q1nn31WWVlZPl7hnc+qHp04ceK68zzyyCO+XN4dz6r+nDlzRr/85S/ldrtljFFiYqJmzZrl49V1Dlae576yb98+rVmzhk8HtYBV/ampqdEzzzwj6cr7aydMmKCnn37al0vrNKy8D1VUVGjBggVqaWnRvffeq6VLl/KhchawskcNDQ2Kj4/Xhx9+qJCQEB+vrHOwsj/Lly/X1q1b5e/vrx/84AdavHixAgICfLzCW0cIBAAAAAAb4eWgAAAAAGAjhEAAAAAAsBFCIAAAAADYCCEQAAAAAGyEEAgAAAAANkIIBABYoqCgQC+//PJV26ZPn67CwkKvHbO8vFxlZWWe7z///HONGTOm3fMcO3ZM27dvv+njdEY3uu1u9XYtKyvTpEmTbrc0AIDFCIEAAEvMnz9f27Zt06FDhyRJ69evl8Ph0NSpUy2Z3+VyXbNt7969loSz48eP6+9//3ub+606DgAA3wb+vi4AANA5hISE6MUXX1RBQYFWrlypVatW6d1335XD4ZAkFRUVaf369XK73QoNDdWiRYv0ve99TxUVFfrNb36jpqYmNTc3a8qUKXr88cclSc8//7y6deumU6dOqampScXFxZ7jVVRUqKioSMYY7dmzRykpKRo3bpwk6ZVXXtHHH3+spqYmLVmyRMOHD1dzc7OeeuopXbx4UU6nU0OHDtWiRYt0+fJlrVy5UvX19UpLS9PIkSM1f/78Gx4nJyfnunN17dpVzc3NWrhwoQ4ePKjw8HA9+OCDunTpkn7/+99fdXvt3LlT7733nlatWqXKykrFxcVpxYoVGjdunP74xz/K6XTqueee05IlS3Tw4EG1tLSod+/eWrJkifr3768LFy5o7ty5qqmpkSTFxsYqPz//mr60NV6S1q1bp3feeUchISF6+OGHrxp3o30fffSRXn/9dTU3NysgIEDz58/XkCFDJEmvvvqqtm/frtDQUEVHR7f/BwkA4H0GAAAL/frXvzbDhw8377//vmfb3r17zcyZM43T6TTGGFNSUmKmTZtmjDGmtrbWs722ttaMHz/enDp1yhhjzNy5c01mZqZpaGi47rGWLVtmXn75Zc/3p0+fNg888IDZtWuXMcaY4uJiz3HcbrepqanxfJ2Xl2c2bNhgjDFmw4YNZs6cOW2u6evHudFcb731lnnyySeNy+UyjY2NJiMj47pz19bWmujoaONyuczGjRvN5MmTzaJFi4wxxuTk5Jh9+/YZY4ypqqryjCksLDRz5841xhizevVqs3DhQs++ixcvXrf2tsYfO3bMPPzww+bLL780xhjzq1/9yowePfob9506dcpMnjzZ1NXVGWOMqaioMPHx8cYYY3bs2GFSU1NNfX29aWlpMT//+c9NVlZWm7crAMA3uBIIALBUbm6utm3bpszMTM+20tJSHT9+XFlZWZIkY4zq6+slSQ0NDXrhhRd08uRJORwOffnll/r3v/+t++67T5KUmJio7t273/TxQ0JCFBcXJ0kaOnSo5wpca2urVq9erY8//litra26ePGiwsLCbmmNN5pr7969SktLk5+fn/z8/JScnKwjR45cM0dwcLDuu+8+HTlyROXl5Zo1a5ZeeuklOZ1OVVRUaNiwYZKkXbt2qbCwUI2NjWppaVHXrl0lScOGDdOf//xnde/eXdHR0YqNjb1urW2N37dvn+Lj49W7d29J0qRJk1RaWvqN+/bs2aPPP/9c2dnZnmM0NzerpqZG+/btU3Jysnr06CFJmjhxotasWXNLtzEAwHsIgQAAS3Xp0sXzEtCvGGM0adIkzZo165r//+qrr6p///566aWX5Ofnp5ycHDmdTs/+rwLFzQoMDPR87efnJ7fbLUnavHmzDh8+rMLCQgUFBWnFihU6e/Zsu+b+ilVzjRo1SuXl5Tp8+LAWL16ssLAwbdmyRZGRkQoICNAXX3yh3/3udyoqKtI999yjAwcOeF6qOmLECBUXF6usrEzFxcV688039c4771w1/43G3ypjjB599FEtXbr0tuYBAPgOHwwDAPC6+Ph4bdq0SZWVlZIkt9uto0ePSpIuX76s/v37y8/PTydOnNCnn3560/MGBwertrb2pv5vbW2tevXqpaCgIF26dElbtmzx7AsKCrrhPF8/zo3mGjlypP7617/K7XbL6XRq27Ztbc4bExOj999/X9/97nfl7++vUaNGacWKFRo1apTnOIGBgYqIiFBra6vWr1/vGfvFF18oJCREEyZMUH5+vo4cOSJjzDVrbmv8yJEjtXPnTlVXV0u68p7Nm9kXGxurXbt26bPPPpN0JRQePnxY0pVQu23bNjU2Nsrtdmvjxo1trh0A4DtcCQQAeF1MTIxmzZqlmTNnqrW1VS6XS0lJSYqMjNQzzzyj/Px8rV+/XgMGDNCIESNuet4f//jHmjVrltLS0q76YJjr+elPf6rS0lIlJibqrrvuUlRUlOcq4ZgxY7R27VqlpqZq1KhR11wt+/pxsrKy2pxr2rRpOnnypJKSktSrVy8NGjTI8xLMr/vRj36kqqoq5eTkeG6n5cuXe0LgQw89pISEBCUlJalnz56Ki4vzBK69e/dq7dq18vPzU2trqxYtWnTNFdgbjX/ooYeUm5urKVOmKDg4+KoPf7nRvoEDB2rp0qXKz89Xc3OzWlpaFBUVpSFDhmjs2LE6dOiQUlNTPR8Mc/DgwW9uJACgQznM139tCAAAbkt9fb2CgoLkdDo1c+ZMpaamKiMjw9dlAQAgiSuBAABYqrW1VU888YRaWlrkdDoVGxurtLQ0X5cFAIAHVwIBAAAAwEb4YBgAAAAAsBFCIAAAAADYCCEQAAAAAGyEEAgAAAAANkIIBAAAAAAbIQQCAAAAgI38HwWTjvDbfbuyAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fd014053f28>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sns.set(rc={\"figure.figsize\": (15, 8)})\n",
"ax = sns.boxplot(data=y_es, width=.5)\n",
"ax.set_xlabel('Year that tag was added')\n",
"ax.set_ylabel('Average release year')\n",
"ax.set_title(\"'classic rock' recording tags in MusicBrainz\")\n",
"plt.xticks(plt.xticks()[0], x_es)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment