{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Class 6: Advanced `pandas`" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Currently, `pandas`' `Series` and `DataFrame` might seem to us as no more than tables with complicated indexing methods. In this lesson, we will learn more about what makes `pandas` so powerful and how we can use it to write efficient and readable code." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "````{note}\n", "Some of the features described below only work with pandas >= 1.0.0. Make sure you have the latest pandas installation when running this notebook. To check the version of your pandas (or any other package), import it and print its `__version__` attribute:\n", "```python\n", ">>> import pandas as pd\n", ">>> print(pd.__version__)\n", "'1.2.0'\n", "```\n", "````" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Missing Data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The last question in the previous class pointed us to [working with missing data](https://pandas.pydata.org/pandas-docs/stable/user_guide/missing_data.html). But how and why do missing data occur?\n", "\n", "One option is pandas' index alignment, the property that makes sure that each value will have the same index throughout the entire computation process." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 NaN\n", "1 5.0\n", "2 9.0\n", "3 NaN\n", "dtype: float64" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "import numpy as np\n", "\n", "\n", "A = pd.Series([2, 4, 6], index=[0, 1, 2])\n", "B = pd.Series([1, 3, 5], index=[1, 2, 3])\n", "A + B" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The NaNs we have are what we call missing data, and this is how they are represented in pandas. We'll discuss that in more detail in a few moments.\n", "\n", "The same thing occurs with DataFrames:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
AB
0611
195
\n", "
" ], "text/plain": [ " A B\n", "0 6 11\n", "1 9 5" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A = pd.DataFrame(np.random.randint(0, 20, (2, 2)),\n", " columns=list('AB'))\n", "A" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
BAC
0681
1281
2837
\n", "
" ], "text/plain": [ " B A C\n", "0 6 8 1\n", "1 2 8 1\n", "2 8 3 7" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "B = pd.DataFrame(np.random.randint(0, 10, (3, 3)),\n", " columns=list('BAC'))\n", "B" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " A B C\n", "0 14.0 17.0 NaN\n", "1 17.0 7.0 NaN\n", "2 NaN NaN NaN\n", "\n", "Returned dtypes:\n", "A float64\n", "B float64\n", "C float64\n", "dtype: object\n" ] } ], "source": [ "new = A + B\n", "print(new)\n", "print(f\"\\nReturned dtypes:\\n{new.dtypes}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "```{note}\n", "Note how `new.dtypes` itself returns a `Series` of dtypes, with it's own `object` dtype.\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The dataframe's shape is the shape of the larger dataframe, and the \"extra\" row (index 2) was filled with NaNs. Since we have NaNs, the data type of the column is implicitly converted to a floating point type. To have integer dataframes with NaNs, we have to explicitly say we want them available. More on that later." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Another way to introduce missing data is through reindexing. If we \"resample\" our data we can achieve the following:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
onetwothree
a1.2223740.9410360.380220
c-0.9503801.3593081.245010
e-0.0381100.3233880.881577
f0.706950-0.555918-0.000683
h1.451893-1.8160210.791840
\n", "
" ], "text/plain": [ " one two three\n", "a 1.222374 0.941036 0.380220\n", "c -0.950380 1.359308 1.245010\n", "e -0.038110 0.323388 0.881577\n", "f 0.706950 -0.555918 -0.000683\n", "h 1.451893 -1.816021 0.791840" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.DataFrame(np.random.randn(5, 3), index=['a', 'c', 'e', 'f', 'h'],\n", " columns=['one', 'two', 'three'])\n", "df" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
onetwothree
a1.2223740.9410360.380220
bNaNNaNNaN
c-0.9503801.3593081.245010
dNaNNaNNaN
e-0.0381100.3233880.881577
f0.706950-0.555918-0.000683
gNaNNaNNaN
h1.451893-1.8160210.791840
\n", "
" ], "text/plain": [ " one two three\n", "a 1.222374 0.941036 0.380220\n", "b NaN NaN NaN\n", "c -0.950380 1.359308 1.245010\n", "d NaN NaN NaN\n", "e -0.038110 0.323388 0.881577\n", "f 0.706950 -0.555918 -0.000683\n", "g NaN NaN NaN\n", "h 1.451893 -1.816021 0.791840" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df2 = df.reindex(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])\n", "df2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "But what is `NaN`? Is it the same as `None`? To better answer the former, let's first have a closer look at the latter." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### The `None` object" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`None` is the standard null value in Python, and is used extensively in normal usage of the language. For example, functions that don't have a `return` statement, implicitly return `None`. While `None` can be used as a missing data type, it's probably not the best choice." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([1, None, 3, 4], dtype=object)" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "vals1 = np.array([1, None, 3, 4])\n", "vals1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The `dtype` is `object`, because the best common type of `int`s and a `None` is a Python `object`. This slows down computation time on these arrays:" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "dtype = object\n", "43.1 ms ± 181 µs per loop (mean ± std. dev. of 7 runs, 10 loops each)\n", "\n", "dtype = int\n", "341 µs ± 1.47 µs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)\n", "\n" ] } ], "source": [ "for dtype in ['object', 'int']:\n", " print(\"dtype =\", dtype)\n", " %timeit np.arange(1E6, dtype=dtype).sum()\n", " print()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If you recall from a couple of lessons ago, the performance of `object` arrays is very similar to that of standard lists (generally speaking, the two data structures are effectively identical)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Another thing we can't do is aggregation:" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "ename": "TypeError", "evalue": "unsupported operand type(s) for +: 'int' and 'NoneType'", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", "Cell \u001b[0;32mIn[18], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mvals1\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msum\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n", "File \u001b[0;32m~/Projects/courses/python_for_neuroscientists/textbook-public/venv/lib/python3.10/site-packages/numpy/core/_methods.py:49\u001b[0m, in \u001b[0;36m_sum\u001b[0;34m(a, axis, dtype, out, keepdims, initial, where)\u001b[0m\n\u001b[1;32m 47\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_sum\u001b[39m(a, axis\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m, dtype\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m, out\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m, keepdims\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m,\n\u001b[1;32m 48\u001b[0m initial\u001b[38;5;241m=\u001b[39m_NoValue, where\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m):\n\u001b[0;32m---> 49\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mumr_sum\u001b[49m\u001b[43m(\u001b[49m\u001b[43ma\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43maxis\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdtype\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mout\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mkeepdims\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43minitial\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mwhere\u001b[49m\u001b[43m)\u001b[49m\n", "\u001b[0;31mTypeError\u001b[0m: unsupported operand type(s) for +: 'int' and 'NoneType'" ] } ], "source": [ "vals1.sum()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### The `NaN` value" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`NaN` is a special floating-point value recognized by all programming languages that conform to the IEEE standard (which means most of them). As we mentioned before, it forces the entire array to have a floating point type:" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "dtype('float64')" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "vals2 = np.array([1, np.nan, 3, 4])\n", "vals2.dtype" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Creating floating point arrays is very fast, so performance isn't hindered. NaN is sometimes described as a \"data virus\", since it infects objects it touches:" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "nan" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "1 + np.nan" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "nan" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "0 * np.nan" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(nan, nan, nan)" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "vals2.sum(), vals2.min(), vals2.max()" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "False" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.nan == np.nan" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Numpy has `nan`-aware counterparts to many of its aggregation functions, which can work with NaNs correctly. They usually have the same name as their non-NaN sibling, but with the \"nan\" prefix:" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "8.0\n", "2.6666666666666665\n" ] } ], "source": [ "print(np.nansum(vals2))\n", "print(np.nanmean(vals2))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "However, pandas objects account for NaNs in their calculations, as we'll soon see.\n", "\n", "Pandas can handle both `NaN` and `None` interchangeably:" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 1.0\n", "1 NaN\n", "2 2.0\n", "3 NaN\n", "dtype: float64" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ser = pd.Series([1, np.nan, 2, None])\n", "ser" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### The `NaT` value\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "When dealing with datetime values or indices, the missing value is represented as `NaT`, or not-a-time:\n", "
" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
onetwothreetimestamp
a1.2223740.9410360.3802202018-01-01
c-0.9503801.3593081.2450102018-01-01
e-0.0381100.3233880.8815772018-01-01
f0.706950-0.555918-0.0006832018-01-01
h1.451893-1.8160210.7918402018-01-01
\n", "
" ], "text/plain": [ " one two three timestamp\n", "a 1.222374 0.941036 0.380220 2018-01-01\n", "c -0.950380 1.359308 1.245010 2018-01-01\n", "e -0.038110 0.323388 0.881577 2018-01-01\n", "f 0.706950 -0.555918 -0.000683 2018-01-01\n", "h 1.451893 -1.816021 0.791840 2018-01-01" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df['timestamp'] = pd.Timestamp('20180101')\n", "df" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
onetwothreetimestamp
a1.2223740.9410360.3802202018-01-01
bNaNNaNNaNNaT
c-0.9503801.3593081.2450102018-01-01
dNaNNaNNaNNaT
e-0.0381100.3233880.8815772018-01-01
f0.706950-0.555918-0.0006832018-01-01
gNaNNaNNaNNaT
h1.451893-1.8160210.7918402018-01-01
\n", "
" ], "text/plain": [ " one two three timestamp\n", "a 1.222374 0.941036 0.380220 2018-01-01\n", "b NaN NaN NaN NaT\n", "c -0.950380 1.359308 1.245010 2018-01-01\n", "d NaN NaN NaN NaT\n", "e -0.038110 0.323388 0.881577 2018-01-01\n", "f 0.706950 -0.555918 -0.000683 2018-01-01\n", "g NaN NaN NaN NaT\n", "h 1.451893 -1.816021 0.791840 2018-01-01" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df2 = df.reindex(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])\n", "df2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Operations and calculations with missing data" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
onetwo
00.3070070.608862
10.989388NaN
20.0681040.519292
30.8818030.572062
40.1766680.570929
\n", "
" ], "text/plain": [ " one two\n", "0 0.307007 0.608862\n", "1 0.989388 NaN\n", "2 0.068104 0.519292\n", "3 0.881803 0.572062\n", "4 0.176668 0.570929" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a = pd.DataFrame(np.random.random((5, 2)), columns=['one', 'two'])\n", "a.iloc[1, 1] = np.nan\n", "a" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
onetwothree
00.1789860.3828300.402055
10.1948000.3869100.853929
20.8032600.155697NaN
30.8088050.5321030.392492
40.1111700.9757440.667562
50.9837060.3106770.742454
\n", "
" ], "text/plain": [ " one two three\n", "0 0.178986 0.382830 0.402055\n", "1 0.194800 0.386910 0.853929\n", "2 0.803260 0.155697 NaN\n", "3 0.808805 0.532103 0.392492\n", "4 0.111170 0.975744 0.667562\n", "5 0.983706 0.310677 0.742454" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "b = pd.DataFrame(np.random.random((6, 3)), columns=['one', 'two', 'three'])\n", "b.iloc[2, 2] = np.nan\n", "b" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
onethreetwo
00.485993NaN0.991692
11.184189NaNNaN
20.871363NaN0.674988
31.690608NaN1.104164
40.287838NaN1.546673
5NaNNaNNaN
\n", "
" ], "text/plain": [ " one three two\n", "0 0.485993 NaN 0.991692\n", "1 1.184189 NaN NaN\n", "2 0.871363 NaN 0.674988\n", "3 1.690608 NaN 1.104164\n", "4 0.287838 NaN 1.546673\n", "5 NaN NaN NaN" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a + b" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As we see, missing values propagate naturally through these arithmetic operations. Statistics also works:" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
onethreetwo
count5.0000000.04.000000
mean0.903998NaN1.079379
std0.559622NaN0.360647
min0.287838NaN0.674988
25%0.485993NaN0.912516
50%0.871363NaN1.047928
75%1.184189NaN1.214791
max1.690608NaN1.546673
\n", "
" ], "text/plain": [ " one three two\n", "count 5.000000 0.0 4.000000\n", "mean 0.903998 NaN 1.079379\n", "std 0.559622 NaN 0.360647\n", "min 0.287838 NaN 0.674988\n", "25% 0.485993 NaN 0.912516\n", "50% 0.871363 NaN 1.047928\n", "75% 1.184189 NaN 1.214791\n", "max 1.690608 NaN 1.546673" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "(a + b).describe()\n", "# Summation - NaNs are zero.\n", "# If everything is NaN - the result is NaN as well.\n", "# pandas' cumsum and cumprod ignore NaNs but preserve them in the resulting arrays." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can also receive a boolean mask of the NaNs in a dataframe:" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
onethreetwo
0FalseTrueFalse
1FalseTrueTrue
2FalseTrueFalse
3FalseTrueFalse
4FalseTrueFalse
5TrueTrueTrue
\n", "
" ], "text/plain": [ " one three two\n", "0 False True False\n", "1 False True True\n", "2 False True False\n", "3 False True False\n", "4 False True False\n", "5 True True True" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mask = (a + b).isnull() # also isna(), and the opposite .notnull()\n", "mask" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Filling missing values" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The simplest option is to use the `fillna` method:" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
onethreetwo
00.485993NaN0.991692
11.184189NaNNaN
20.871363NaN0.674988
31.690608NaN1.104164
4NaNNaN1.546673
5NaNNaNNaN
\n", "
" ], "text/plain": [ " one three two\n", "0 0.485993 NaN 0.991692\n", "1 1.184189 NaN NaN\n", "2 0.871363 NaN 0.674988\n", "3 1.690608 NaN 1.104164\n", "4 NaN NaN 1.546673\n", "5 NaN NaN NaN" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "summed = a + b\n", "summed.iloc[4, 0] = np.nan\n", "summed" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
onethreetwo
00.4859930.00.991692
11.1841890.00.000000
20.8713630.00.674988
31.6906080.01.104164
40.0000000.01.546673
50.0000000.00.000000
\n", "
" ], "text/plain": [ " one three two\n", "0 0.485993 0.0 0.991692\n", "1 1.184189 0.0 0.000000\n", "2 0.871363 0.0 0.674988\n", "3 1.690608 0.0 1.104164\n", "4 0.000000 0.0 1.546673\n", "5 0.000000 0.0 0.000000" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "summed.fillna(0)" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
onethreetwo
00.485993missing0.991692
11.184189missingmissing
20.871363missing0.674988
31.690608missing1.104164
4missingmissing1.546673
5missingmissingmissing
\n", "
" ], "text/plain": [ " one three two\n", "0 0.485993 missing 0.991692\n", "1 1.184189 missing missing\n", "2 0.871363 missing 0.674988\n", "3 1.690608 missing 1.104164\n", "4 missing missing 1.546673\n", "5 missing missing missing" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "summed.fillna('missing') # changed dtype to \"object\"" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/tmp/ipykernel_1151799/1540442133.py:1: FutureWarning: DataFrame.fillna with 'method' is deprecated and will raise in a future version. Use obj.ffill() or obj.bfill() instead.\n", " summed.fillna(method='pad') # The NaN column remained the same, but values were propagated forward\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
onethreetwo
00.485993NaN0.991692
11.184189NaN0.991692
20.871363NaN0.674988
31.690608NaN1.104164
41.690608NaN1.546673
51.690608NaN1.546673
\n", "
" ], "text/plain": [ " one three two\n", "0 0.485993 NaN 0.991692\n", "1 1.184189 NaN 0.991692\n", "2 0.871363 NaN 0.674988\n", "3 1.690608 NaN 1.104164\n", "4 1.690608 NaN 1.546673\n", "5 1.690608 NaN 1.546673" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "summed.fillna(method='pad') # The NaN column remained the same, but values were propagated forward\n", "# We can also use the \"backfill\" method to fill in values to the back" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/tmp/ipykernel_1151799/1451676853.py:1: FutureWarning: DataFrame.fillna with 'method' is deprecated and will raise in a future version. Use obj.ffill() or obj.bfill() instead.\n", " summed.fillna(method='pad', limit=1) # No more than one padded NaN in a row\n" ] }, { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
onethreetwo
00.485993NaN0.991692
11.184189NaN0.991692
20.871363NaN0.674988
31.690608NaN1.104164
41.690608NaN1.546673
5NaNNaN1.546673
\n", "
" ], "text/plain": [ " one three two\n", "0 0.485993 NaN 0.991692\n", "1 1.184189 NaN 0.991692\n", "2 0.871363 NaN 0.674988\n", "3 1.690608 NaN 1.104164\n", "4 1.690608 NaN 1.546673\n", "5 NaN NaN 1.546673" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "summed.fillna(method='pad', limit=1) # No more than one padded NaN in a row" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
onethreetwo
00.485993NaN0.991692
11.184189NaN1.079379
20.871363NaN0.674988
31.690608NaN1.104164
41.058038NaN1.546673
51.058038NaN1.079379
\n", "
" ], "text/plain": [ " one three two\n", "0 0.485993 NaN 0.991692\n", "1 1.184189 NaN 1.079379\n", "2 0.871363 NaN 0.674988\n", "3 1.690608 NaN 1.104164\n", "4 1.058038 NaN 1.546673\n", "5 1.058038 NaN 1.079379" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "summed.fillna(summed.mean()) # each column received its respective mean. The NaN column is untouched." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Dropping missing values" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We've already seen in the short exercise the `dropna` method, that allows us to drop missing values:" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
onethreetwo
00.485993NaN0.991692
11.184189NaNNaN
20.871363NaN0.674988
31.690608NaN1.104164
4NaNNaN1.546673
5NaNNaNNaN
\n", "
" ], "text/plain": [ " one three two\n", "0 0.485993 NaN 0.991692\n", "1 1.184189 NaN NaN\n", "2 0.871363 NaN 0.674988\n", "3 1.690608 NaN 1.104164\n", "4 NaN NaN 1.546673\n", "5 NaN NaN NaN" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "summed" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
onethreetwo
00.485993NaN0.991692
11.184189NaN1.079379
20.871363NaN0.674988
31.690608NaN1.104164
41.058038NaN1.546673
51.058038NaN1.079379
\n", "
" ], "text/plain": [ " one three two\n", "0 0.485993 NaN 0.991692\n", "1 1.184189 NaN 1.079379\n", "2 0.871363 NaN 0.674988\n", "3 1.690608 NaN 1.104164\n", "4 1.058038 NaN 1.546673\n", "5 1.058038 NaN 1.079379" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "filled = summed.fillna(summed.mean())\n", "filled" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
onetwo
00.4859930.991692
11.1841891.079379
20.8713630.674988
31.6906081.104164
41.0580381.546673
51.0580381.079379
\n", "
" ], "text/plain": [ " one two\n", "0 0.485993 0.991692\n", "1 1.184189 1.079379\n", "2 0.871363 0.674988\n", "3 1.690608 1.104164\n", "4 1.058038 1.546673\n", "5 1.058038 1.079379" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "filled.dropna(axis=1) # each column containing NaN is dropped" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
onethreetwo
\n", "
" ], "text/plain": [ "Empty DataFrame\n", "Columns: [one, three, two]\n", "Index: []" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "filled.dropna(axis=0) # each row containing a NaN is dropped" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Interpolation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The last way to to fill in missing values is through [interpolation](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.interpolate.html).\n", "\n", "The default interpolation methods perform linear interpolation on the data, based on its ordinal index:" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
onethreetwo
00.485993NaN0.991692
11.184189NaNNaN
20.871363NaN0.674988
31.690608NaN1.104164
4NaNNaN1.546673
5NaNNaNNaN
\n", "
" ], "text/plain": [ " one three two\n", "0 0.485993 NaN 0.991692\n", "1 1.184189 NaN NaN\n", "2 0.871363 NaN 0.674988\n", "3 1.690608 NaN 1.104164\n", "4 NaN NaN 1.546673\n", "5 NaN NaN NaN" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "summed" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
onethreetwo
00.485993NaN0.991692
11.184189NaN0.833340
20.871363NaN0.674988
31.690608NaN1.104164
41.690608NaN1.546673
51.690608NaN1.546673
\n", "
" ], "text/plain": [ " one three two\n", "0 0.485993 NaN 0.991692\n", "1 1.184189 NaN 0.833340\n", "2 0.871363 NaN 0.674988\n", "3 1.690608 NaN 1.104164\n", "4 1.690608 NaN 1.546673\n", "5 1.690608 NaN 1.546673" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "summed.interpolate() # notice all the details in the interpolation of the three columns" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can also interpolate with the actual index values in mind:" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0
2018-01-011.0
2018-01-04NaN
2018-01-055.0
2018-01-07NaN
2018-01-088.0
\n", "
" ], "text/plain": [ " 0\n", "2018-01-01 1.0\n", "2018-01-04 NaN\n", "2018-01-05 5.0\n", "2018-01-07 NaN\n", "2018-01-08 8.0" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Create \"missing\" index\n", "timeindex = pd.Series(['1/1/2018', '1/4/2018', '1/5/2018', '1/7/2018', '1/8/2018'])\n", "timeindex = pd.to_datetime(timeindex)\n", "data_to_interp = [1, np.nan, 5, np.nan, 8]\n", "df_to_interp = pd.DataFrame(data_to_interp, index=timeindex)\n", "df_to_interp" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0
2018-01-011.0
2018-01-043.0
2018-01-055.0
2018-01-076.5
2018-01-088.0
\n", "
" ], "text/plain": [ " 0\n", "2018-01-01 1.0\n", "2018-01-04 3.0\n", "2018-01-05 5.0\n", "2018-01-07 6.5\n", "2018-01-08 8.0" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_to_interp.interpolate() # the index values aren't taken into account" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0
2018-01-011.0
2018-01-044.0
2018-01-055.0
2018-01-077.0
2018-01-088.0
\n", "
" ], "text/plain": [ " 0\n", "2018-01-01 1.0\n", "2018-01-04 4.0\n", "2018-01-05 5.0\n", "2018-01-07 7.0\n", "2018-01-08 8.0" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_to_interp.interpolate(method='index') # notice how the data obtains the \"right\" values" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Pandas has many other interpolation methods, based on SciPy's. " ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
AB
01.00.25
12.1NaN
2NaNNaN
34.74.00
45.612.20
56.814.40
\n", "
" ], "text/plain": [ " A B\n", "0 1.0 0.25\n", "1 2.1 NaN\n", "2 NaN NaN\n", "3 4.7 4.00\n", "4 5.6 12.20\n", "5 6.8 14.40" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_inter_2 = pd.DataFrame({'A': [1, 2.1, np.nan, 4.7, 5.6, 6.8],\n", " 'B': [.25, np.nan, np.nan, 4, 12.2, 14.4]})\n", "df_inter_2" ] }, { "cell_type": "code", "execution_count": 49, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
AB
01.0000000.250000
12.100000-2.703846
23.451351-1.453846
34.7000004.000000
45.60000012.200000
56.80000014.400000
\n", "
" ], "text/plain": [ " A B\n", "0 1.000000 0.250000\n", "1 2.100000 -2.703846\n", "2 3.451351 -1.453846\n", "3 4.700000 4.000000\n", "4 5.600000 12.200000\n", "5 6.800000 14.400000" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_inter_2.interpolate(method='polynomial', order=2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Missing Values in Non-Float Columns" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Starting from pandas v1.0.0 pandas gained support for NaN values in non-float columns. This feature is a bit experimental currently, so the default behavior still converts integers to floats for example, but the support is there if you know where to look. By default:" ] }, { "cell_type": "code", "execution_count": 50, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "0 1.0\n", "1 2.0\n", "2 NaN\n", "3 4.0\n", "dtype: float64" ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" } ], "source": [ "nanint = pd.Series([1, 2, np.nan, 4])\n", "nanint # the result has a dtype of float64 even though all numbers are integers." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can try to force pandas' hand here, but it won't work:" ] }, { "cell_type": "code", "execution_count": 51, "metadata": { "scrolled": true }, "outputs": [ { "ename": "ValueError", "evalue": "cannot convert float NaN to integer", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", "Cell \u001b[0;32mIn[51], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m nanint \u001b[38;5;241m=\u001b[39m \u001b[43mpd\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mSeries\u001b[49m\u001b[43m(\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m1\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m2\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mnp\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mnan\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m4\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdtype\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mint32\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n", "File \u001b[0;32m~/Projects/courses/python_for_neuroscientists/textbook-public/venv/lib/python3.10/site-packages/pandas/core/series.py:584\u001b[0m, in \u001b[0;36mSeries.__init__\u001b[0;34m(self, data, index, dtype, name, copy, fastpath)\u001b[0m\n\u001b[1;32m 582\u001b[0m data \u001b[38;5;241m=\u001b[39m data\u001b[38;5;241m.\u001b[39mcopy()\n\u001b[1;32m 583\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m--> 584\u001b[0m data \u001b[38;5;241m=\u001b[39m \u001b[43msanitize_array\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdata\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mindex\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdtype\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcopy\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 586\u001b[0m manager \u001b[38;5;241m=\u001b[39m _get_option(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mmode.data_manager\u001b[39m\u001b[38;5;124m\"\u001b[39m, silent\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m)\n\u001b[1;32m 587\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m manager \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mblock\u001b[39m\u001b[38;5;124m\"\u001b[39m:\n", "File \u001b[0;32m~/Projects/courses/python_for_neuroscientists/textbook-public/venv/lib/python3.10/site-packages/pandas/core/construction.py:651\u001b[0m, in \u001b[0;36msanitize_array\u001b[0;34m(data, index, dtype, copy, allow_2d)\u001b[0m\n\u001b[1;32m 648\u001b[0m subarr \u001b[38;5;241m=\u001b[39m np\u001b[38;5;241m.\u001b[39marray([], dtype\u001b[38;5;241m=\u001b[39mnp\u001b[38;5;241m.\u001b[39mfloat64)\n\u001b[1;32m 650\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m dtype \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m--> 651\u001b[0m subarr \u001b[38;5;241m=\u001b[39m \u001b[43m_try_cast\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdata\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdtype\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcopy\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 653\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 654\u001b[0m subarr \u001b[38;5;241m=\u001b[39m maybe_convert_platform(data)\n", "File \u001b[0;32m~/Projects/courses/python_for_neuroscientists/textbook-public/venv/lib/python3.10/site-packages/pandas/core/construction.py:818\u001b[0m, in \u001b[0;36m_try_cast\u001b[0;34m(arr, dtype, copy)\u001b[0m\n\u001b[1;32m 813\u001b[0m \u001b[38;5;66;03m# GH#15832: Check if we are requesting a numeric dtype and\u001b[39;00m\n\u001b[1;32m 814\u001b[0m \u001b[38;5;66;03m# that we can convert the data to the requested dtype.\u001b[39;00m\n\u001b[1;32m 815\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m dtype\u001b[38;5;241m.\u001b[39mkind \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124miu\u001b[39m\u001b[38;5;124m\"\u001b[39m:\n\u001b[1;32m 816\u001b[0m \u001b[38;5;66;03m# this will raise if we have e.g. floats\u001b[39;00m\n\u001b[0;32m--> 818\u001b[0m subarr \u001b[38;5;241m=\u001b[39m \u001b[43mmaybe_cast_to_integer_array\u001b[49m\u001b[43m(\u001b[49m\u001b[43marr\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdtype\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 819\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m copy:\n\u001b[1;32m 820\u001b[0m subarr \u001b[38;5;241m=\u001b[39m np\u001b[38;5;241m.\u001b[39masarray(arr, dtype\u001b[38;5;241m=\u001b[39mdtype)\n", "File \u001b[0;32m~/Projects/courses/python_for_neuroscientists/textbook-public/venv/lib/python3.10/site-packages/pandas/core/dtypes/cast.py:1657\u001b[0m, in \u001b[0;36mmaybe_cast_to_integer_array\u001b[0;34m(arr, dtype)\u001b[0m\n\u001b[1;32m 1650\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m np_version_gt2:\n\u001b[1;32m 1651\u001b[0m warnings\u001b[38;5;241m.\u001b[39mfilterwarnings(\n\u001b[1;32m 1652\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mignore\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 1653\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mNumPy will stop allowing conversion of \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 1654\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mout-of-bound Python int\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 1655\u001b[0m \u001b[38;5;167;01mDeprecationWarning\u001b[39;00m,\n\u001b[1;32m 1656\u001b[0m )\n\u001b[0;32m-> 1657\u001b[0m casted \u001b[38;5;241m=\u001b[39m \u001b[43mnp\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43masarray\u001b[49m\u001b[43m(\u001b[49m\u001b[43marr\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdtype\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mdtype\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1658\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 1659\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m warnings\u001b[38;5;241m.\u001b[39mcatch_warnings():\n", "\u001b[0;31mValueError\u001b[0m: cannot convert float NaN to integer" ] } ], "source": [ "nanint = pd.Series([1, 2, np.nan, 4], dtype=\"int32\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To our rescue comes the new `pd.Int32Dtype`:" ] }, { "cell_type": "code", "execution_count": 52, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "0 1\n", "1 2\n", "2 \n", "3 4\n", "dtype: Int32" ] }, "execution_count": 52, "metadata": {}, "output_type": "execute_result" } ], "source": [ "nanint = pd.Series([1, 2, np.nan, 4], dtype=\"Int32\")\n", "nanint" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It worked! We have a series with integers and a missing value! Notice the changes we had to made:\n", "1. The `NaN` is `` now. It's actually a new type of `NaN` called `pd.NA`.\n", "2. The data type had to be mentioned explictly, meaning that the conversion will work only if we know in advance that we'll have NA values.\n", "3. The data type is `Int32`. It's CamelCase and it's actually a class underneath. Standard datatypes are lowercase.\n", "\n", "Caveats aside, this is definitely useful for scientists who sometimes have integer values and do not want to convert them to float to supports NAs." ] }, { "cell_type": "code", "execution_count": 53, "metadata": { "scrolled": false, "tags": [ "remove-input", "remove-output" ] }, "outputs": [ { "data": { "application/papermill.record/image/png": "iVBORw0KGgoAAAANSUhEUgAAAiIAAAGzCAYAAAASZnxRAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAAA7AUlEQVR4nO3de3RU9b3//9ckkOGa4RZIkICAVI0IKgoGQdBCRVu89NRjOfor2B56pNhja+sCuioUuzSl9rS1rQtbtOD30IrVekNPOeWA4uWAIJdKRKliEAqJKMgEUYJm9u+PnBlzm8xMMnv257P387HWrEV2djIfdvbs/d6fz/vz/oQcx3EEAADggTyvGwAAAIKLQAQAAHiGQAQAAHiGQAQAAHiGQAQAAHiGQAQAAHiGQAQAAHiGQAQAAHiGQAQAAHiGQAQAAHiGQATwuRUrVigUCiVenTp10imnnKJZs2bpwIEDXjdPe/fubdK+zp07q1+/fho/frx+8IMfaN++fe3+3QcPHtSPfvQj7dixI3sNBpBVnbxuAIDcuOOOOzR06FCdOHFCmzZt0ooVK/Tiiy+qsrJSXbp08bp5mjFjhq644grFYjF98MEH2rJli375y1/qnnvu0QMPPKCvfvWrGf/OgwcPavHixTr11FN1zjnnZL/RADqMQAQIiMsvv1znn3++JOlf//Vf1a9fPy1ZskRPPfWU/vmf/9nj1knnnXeebrjhhibb3nnnHX3hC1/QzJkzdeaZZ2r06NEetQ6AWxiaAQJq4sSJkqQ9e/Yktp08eVILFy7UmDFjFIlE1L17d02cOFHPPvtsk58977zz9OUvf7nJtrPPPluhUEivvvpqYtvDDz+sUCik119/vV1tHDJkiFasWKGTJ0/qpz/9aWL7kSNH9P3vf19nn322evToocLCQl1++eX629/+ltjnueee0wUXXCBJuvHGGxNDPytWrJAkvfDCC7r22ms1ePBghcNhlZaW6rvf/a4+/vjjdrUVQPvQIwIE1N69eyVJvXv3Tmyrra3V/fffrxkzZmj27Nk6duyYHnjgAV122WXavHlzYnhj4sSJeuihhxI/d+TIEb322mvKy8vTCy+8oFGjRklquNkXFRXpzDPPbHc7y8vLNXz4cK1duzax7e2339YTTzyha6+9VkOHDtW7776r3/72t5o0aZJ27dqlgQMH6swzz9Qdd9yhhQsX6pvf/GYi8Bo/frwk6ZFHHtFHH32kOXPmqG/fvtq8ebN+/etf6x//+IceeeSRdrcXQIYcAL62fPlyR5LzP//zP857773n7N+/33n00UedoqIiJxwOO/v370/s++mnnzp1dXVNfv6DDz5wBgwY4Hz9619PbHvkkUccSc6uXbscx3Gcp556ygmHw86VV17pXHfddYn9Ro0a5VxzzTVttq+qqsqR5Nx9991J97nqqqscSU40GnUcx3FOnDjh1NfXt/g94XDYueOOOxLbtmzZ4khyli9f3uJ3fvTRRy22VVRUOKFQyHnnnXfabDOA7GFoBgiIKVOmqKioSKWlpfrKV76i7t2766mnntKgQYMS++Tn56ugoECSFIvFdOTIEX366ac6//zztW3btsR+8d6F559/XlJDz8cFF1ygqVOn6oUXXpAkHT16VJWVlYl9O6JHjx6SpGPHjkmSwuGw8vIaLl/19fU6fPiwevToodNPP71JO9vStWvXxL+PHz+u999/X+PHj5fjONq+fXuH2wwgPQQiQEDce++9Wrt2rR599FFdccUVev/99xUOh1vs9+CDD2rUqFHq0qWL+vbtq6KiIj3zzDOKRqOJfQYMGKARI0Ykgo4XXnhBEydO1MUXX6yDBw/q7bff1ksvvaRYLJaVQOTDDz+UJPXs2VNSQ5D0i1/8QiNGjFA4HFa/fv1UVFSkV199tUk727Jv3z7NmjVLffr0UY8ePVRUVKRJkyZJUtq/A0DHkSMCBMTYsWMTs2auvvpqTZgwQf/yL/+i3bt3J3ocVq5cqVmzZunqq6/Wbbfdpv79+ys/P18VFRVNklolacKECVq3bp0+/vhjbd26VQsXLtTIkSPVq1cvvfDCC3r99dfVo0cPnXvuuR1ue2Vlpfr376/CwkJJ0l133aXbb79dX//61/XjH/9Yffr0UV5enr7zne8oFoul/H319fWaOnWqjhw5onnz5umMM85Q9+7ddeDAAc2aNSut3wEgOwhEgACKBxeXXHKJfvOb32j+/PmSpEcffVTDhg3TY489plAolNh/0aJFLX7HxIkTtXz5cq1atUr19fUaP3688vLyNGHChEQgMn78eOXn53eorRs3btSePXuaTO199NFHdckll+iBBx5osu/Ro0fVr1+/xNeN/w+N7dy5U3//+9/14IMP6mtf+1pie+OEWAC5wdAMEFCTJ0/W2LFj9ctf/lInTpyQpETQ4DhOYr+XX35ZGzdubPHz8SGXJUuWaNSoUYpEIont69at0yuvvNLhYZl33nlHs2bNUkFBgW677bbE9vz8/CZtlBpmwTSvFNu9e3dJDQFKY639Px3H0T333NOh9gLIHD0iQIDddtttuvbaa7VixQrddNNN+tKXvqTHHntM11xzjb74xS+qqqpK9913n8rKyhJ5GnGnnXaaiouLtXv3bn37299ObL/44os1b948ScooENm2bZtWrlypWCymo0ePasuWLfrzn/+sUCik//zP/0xMCZakL33pS7rjjjt04403avz48dq5c6f+8Ic/aNiwYU1+5/Dhw9WrVy/dd9996tmzp7p3765x48bpjDPO0PDhw/X9739fBw4cUGFhof785z/rgw8+aM9hBNARns7ZAeC6+PTdLVu2tPhefX29M3z4cGf48OHOp59+6sRiMeeuu+5yhgwZ4oTDYefcc891nn76aWfmzJnOkCFDWvz8tdde60hyHn744cS2kydPOt26dXMKCgqcjz/+OGX74tN3469OnTo5ffr0ccaNG+csWLCg1am0J06ccL73ve85JSUlTteuXZ2LLrrI2bhxozNp0iRn0qRJTfZ98sknnbKyMqdTp05NpvLu2rXLmTJlitOjRw+nX79+zuzZs52//e1vSaf7AnBHyHGa9W8CAADkCDkiAADAMwQiAADAMwQiAADAMwQiAADAMwQiAADAMwQiAADAM0YXNIvFYjp48KB69uyZtFQzAAAwi+M4OnbsmAYOHJhYKTsZowORgwcPqrS01OtmAACAdti/f78GDRrU5j5GByLxJb/379+fWHUTAACYrba2VqWlpYn7eFuMDkTiwzGFhYUEIgAAWCadtAqSVQEAgGcIRAAAgGcIRAAAgGcIRAAAgGcIRAAAgGcIRAAAgGcIRAAAgGcIRAAAgGeMLmgGf6qPOdpcdUSHjp1Q/55dNHZoH+XnsZYQAAQRgUgj3CDdt6ayWotX71J19ERiW0mkixZNL9O0kSUetiw1zo/c4ni7j2OcWxzv1rkaiCxdulRLly7V3r17JUlnnXWWFi5cqMsvv9zNt22X/3q1Wj98slJHjp9MbDP9BmnbSb2mslpzVm6T02x7TfSE5qzcpqU3nGfssbYxgLLt/GjMxuNtG45xbnG8kws5jtP8vpA1q1evVn5+vkaMGCHHcfTggw/q7rvv1vbt23XWWWel/Pna2lpFIhFFo1FX15q585ldWvZCVavfC0lG3iBtO6nrY44mLFnfpL2NhSQVR7roxXmXGnezTBZAxVvJ+ZFd//Vqtb71x20ttpt8vG1j4zltsyAe70zu364mq06fPl1XXHGFRowYoc997nO688471aNHD23atKnV/evq6lRbW9vk5bY7n3ktaRAiSY6kxat3qT7mWryWsfhJ3fymHu9ZWFNZ7VHLkttcdSRpECI1HOfq6AltrjqSu0aloT7maPHqXS0uIJIS2zg/sue/Xj2omx9qGYRI5h5v29h4TidTH3O0cc9hPbnjgDbuOWxkm/10vN2Ss1kz9fX1WrVqlY4fP67y8vJW96moqFAkEkm8SktLXW3Tf716UMte2JtyP5NukLae1IeOJQ9C2rNfrtgWQNl6fkgNAdS3/rhdbTXNtONto3TP6U17DueuUe2wprJaE5as14xlm3TLqh2asWyTJixZb1ygbds1xAuuByI7d+5Ujx49FA6HddNNN+nxxx9XWVlZq/suWLBA0Wg08dq/f79r7aqPOfrhk5Vp7792V41rbcmErSd1/55dsrpfrtgWQNl6fsQDqHSZcrxtlO6xm/tHc3vPbOr1s+0a4gXXA5HTTz9dO3bs0Msvv6w5c+Zo5syZ2rWr9QtOOBxWYWFhk5dbNlcd0ZHjn6S9/5M7DhrxFGnrST12aB+VRLooWfZHSA05DGOH9slls1KyLYCy9fxIFUA1Z8rxtlG6x+7ox58Yd1OX7Ov1s+0a4gXXA5GCggKddtppGjNmjCoqKjR69Gjdc889br9tSpleiA8fP2nEU6StJ3V+XkiLpjf0hDUPRuJfL5peZlyiqm0BlK3nRyafR5OOt2RHnkJjqc7p5ky6qUv29frZdg3xQs4rq8ZiMdXV1eX6bVtoz4XYhKdIm0/qaSNLtPSG81QcaXrsiyNdjM0aty2AsvX8yOTzeOXoEmOOty15Co01PqdTMe2mLtnX62fbNcQLrgYiCxYs0PPPP6+9e/dq586dWrBggZ577jldf/31br5tWuIX7EyY8BRp+0k9bWSJXpx3qR6afaHu+eo5emj2hXpx3qVGBiFxNgVQbZ0fUsON5YqRxdpcdcSop9xMntJ/93yVETd6m/IUmouf0726dk5rf1Nu6pKdvX42XUO84GodkW984xtat26dqqurFYlENGrUKM2bN09Tp05N6+fdriOSbG53a3p166ytP5xqzA3e5joRNmlcFKxf97AUkt7/sM74AmGtFegLSU3O9eLCsH505VnGnC/pfh5NqDljc12cxl56631df//LKfd7aPaFKh/eNwctSi1+7GuiJ1o9V0w+9jYXGcxUJvdvVwORjspFQbPWbujJ3GdY5Bqkk9oLtgZ7mZzTklnn9ZrKav3g8Z1pJZJ7eXPcuOewZixrvR5SYybdwFtj6009HrRKTYNrPxcIs40xBc1sMLWsWD/7ymh9a/IwdemU/HCEZF7SVn5eSOXD++qqc05R+fC+Rl0obGdrt3uydrdl/mM7jTmvp40s0e1fSl11WfJ2uMC2PIVkbB3qZajDXwK96F0mT46Nk7ZMfsJBx6WaHhgPSqeWFRt1gW6r3W05+tEn2rTnsC4a0c+VdmWquND8HAAb8xSSid/Um18Liw3v/Zs2skRTy4rpFfaBwAYimeSHNGb6Ew46LpPpgSYFpZnW4mhs49vvGxOIxBNXUw0XeDnzx4Y2ZsKWm3prw9EmfQbRPoEMRNr75CjZ8YSDjrG1271j7THnhhMfLpizcluLBFtThgtsaGOm4kO9prI1ZwupBTJHpD1PjqbWX0D22drt3pH2mHYDsiEHwIY2+oWtOVtITyB7RDJ9crT1CQftY2u3e6p2J9O7W2ddOMysQESyY7jAhjbaztacLaQvkD0imT458oQTLLbOJEhVzCyZii+fbdz/Jc6GmWE2tNFmtpV0R+YCGYikU8WxT/fO+sV1dlT+RPbZ2u2erN29unVWr25Nq2iWRLoYVUMEaI2tOVtIXyCHZtJJNLvrmrO5QAecrd3uydotybr/C2BrzhbSF8hARLJ37jxyy/SZBMkka7eN/xcE2wfHUy+SykQCuwU2EJHsfeIFgCCojzn68TOvp9zv9i+al7OF9AU6EJHsfeIFAL9Lt9RC7+4FOWgN3BL4QARoLxYdBNxFomowEIgA7UCVR8B9JKoGQyCn7wIdQZVHIDdSlVqg4rU/EIgAGUhV5VFqqPJYH2vPSkYAGrO1uCAyQyACZIAqj0Bu2VpcMB31MUcb9xzWkzsOaOOew4F9gCFHBMgAyXNA7vmx1AJ5Zp8hELEMMzW8RfIc4A0/lVqI55k17/+I55nZ3tOTKQIRixBBe8/WlXkBmIHVhFsiR8QSzNQwA8lzADqCPLOWCEQswEwNs/g5eQ6Au8gza4mhGQtkEkH7ZQzVdH5MngPgPvLMWiIQsQARtJn8lDwHIDfIM2uJoRkLZBpBMzcdAMxEnllL9IhYIJMImpk1AGC2eJ5Z82t1cUCv1SHHcYx9XK6trVUkElE0GlVhYaHXzfFUfNaMpCbBSDxmXnrDeZLU6tz0xvsE7QQHAFP5uS5UJvdvhmYskWqmxtSyYmbWAIBF4nlmV51zisqH9/VNEJIphmYs0tZMjY17DjOzBkCb/PwEDnsRiKRg2gc32UwNZtYAaAv5YzAVgUgbbPrgMjcdQDKsbQKTkSOShG0l1eMza5L11YTUEEQFaW46ACozw3wEIq2w8YPL3HQArWFtE5iOQKQVtn5wWQMl9ygeB9ORPwbTkSPSCps/uKatgWJasm822ZRDhOAifwymIxBphe0fXFPWQPHzjZrkP9iCtU1gOoZmWkHiZ8fZluybCRtziJpjSCk4yB+D6QIZiKS6CPPB7Rg/3KjbYmsOUdyaympNWLJeM5Zt0i2rdmjGsk2asGS91cEh2kb+GEwWuKGZdIcL4h/cHz31mmpq6xLbBxSG9aMrz+KD24ZMbtQmDCFlyuYcIoaUgsu0/DEgLlA9Iu0bLkjWJ4JkbL5Rp8PWHCK/91QhNdY2gYkCE4hkehGOBy01tU1vlu/W2p/j4DZbb9TpsjWHyPYhJQD+FJhAJJOLME+OHWPrjTpdtuYQ+b2nCoCdAhOIZHIR5smxY2y9UWfCxuQ/v/dU5RKzjoDsCUyyaiYXYZ4cOy5+o26eGFzskzoikn3Jf9STyA4/18cBvBCYQCSTi3C6PR08ObbNtht1e5hSPC4d8Z6qOSu3KSQ1+Rz4pafKbcw6ArLP1aGZiooKXXDBBerZs6f69++vq6++Wrt373bzLZPKZLjA7zkOuUSWvllsHFIyBbljgDtc7RHZsGGD5s6dqwsuuECffvqpfvCDH+gLX/iCdu3ape7du7v51q1Kd7iAJ0f4WRB6qtzg9/o4gFdcDUTWrFnT5OsVK1aof//+2rp1qy6++OIW+9fV1amu7rPiYbW1tVlvU7oX4SDkOCC4bBpSMgW5Y4A7cpojEo1GJUl9+rQ+pFFRUaHFixe73o50L8I8OQKIY9YR4I6Q4zg5GdCMxWK68sordfToUb344out7tNaj0hpaami0agKCwtz0UwAaFV9zNGEJetTJry/OO9SHlYQeLW1tYpEImndv3NWR2Tu3LmqrKzUqlWrku4TDodVWFjY5AUAJghCfRzACzkJRG6++WY9/fTTevbZZzVo0KBcvCUAZB2zjoDsczVHxHEcffvb39bjjz+u5557TkOHDnXz7XyrPuaQpwIYgtwxILtcDUTmzp2rP/7xj3ryySfVs2dP1dTUSJIikYi6du3q5lv7RkeqOBLAAO5g1hGQPa4mq4ZCrd/0li9frlmzZqX8+UySXfwoWRXH+FFtqyuYMtQAAK8Yk6zqOE6rr3SCkKDrSBXHeADTvPhSvAz1msrq7DcYAIB2CMzqu7Zp7wrAlKEGANiEQMRQ7a3i2N4ABgAALxCIGKq9VRwpQw0AsAmBiKHauwIwZagBADYhEDFUe6s4tjeAAQDACwQiBmtPFUfKUAMAbJKzRe/aI+h1ROLaU5iMOiK5RfE4APhMJvdvAhEf4+aYGwR9ANAUgQiQIx2pfgsgOR6k7JbJ/dvVtWYAP0tVPC6khuJxU8uKuYACGaCXMVhIVgXaieJxQPaxREXwEIgA7UTxOCC7WKIimAhEgHaieByQXfQyBhM5IkA7xYvH1URPtPoEF1JDzReKxwHpyVYvI4mudiEQAdopXjxuzsptCklNghGKxwGZy0YvI4mu9mFoBuiA9lS/BdC6ji5RQaKrnegRATpo2sgSTS0rpisY6KCO9DIynd5e9IgAWZCfF1L58L666pxTVD68Lxc6oJ3a28tIoqu96BEBABilPb2MTKe3F4EIAMA48V7GdDGd3l4MzQAArNfRRFd4h0AEAGC9eKKrpBbBCNPpzUYgAgDwBabT24kcEQCAbzCd3j4EIgAAX8k00RXeYmgGAAB4hkAEAAB4hkAEAAB4hhwRIEtYehwAMkcgAmQBS48DQPswNAN0EEuPA0D7EYgAHZBq6XGpYenx+lhrewAACESADmDpcQDoGAIRoANYehwAOoZABOgAlh4HgI4hEAE6gKXHAaBjCESADmDpcQDoGAIRoINYehwA2o+CZkAWsPQ4ALQPgQiQJSw9DgCZY2gGAAB4hkAEAAB4hkAEAAB4hkAEAAB4hkAEAAB4xtVA5Pnnn9f06dM1cOBAhUIhPfHEE26+HQAAsIyrgcjx48c1evRo3XvvvW6+DQAAsJSrdUQuv/xyXX755W6+BQAAsJhRBc3q6upUV1eX+Lq2ttbD1gAAALcZlaxaUVGhSCSSeJWWlnrdJAAA4CKjApEFCxYoGo0mXvv37/e6SQAAwEVGDc2Ew2GFw2GvmwEAAHLEqEAETdXHHFZzBQD4mquByIcffqi33nor8XVVVZV27NihPn36aPDgwW6+tfXWVFZr8epdqo6eSGwriXTRoullmjayxMOWAQCQPSHHcRy3fvlzzz2nSy65pMX2mTNnasWKFSl/vra2VpFIRNFoVIWFhS600ExrKqs1Z+U2Nf/DxPtClt5wXiCCEXqEAMBOmdy/Xe0RmTx5slyMc3ypPuZo8epdLYIQSXLUEIwsXr1LU8uKfX1TpkcIAILBqFkzkDZXHWly823OkVQdPaHNVUdy16gci/cINT8ONdETmrNym9ZUVnvUMgBAthGIGObQseRBSHv2s02qHiGpoUeoPkZPGwD4AYGIYfr37JLV/WxDjxAABAuBiGHGDu2jkkgXJcv+CKkhV2Ls0D65bFbOBL1HCACChkDEMPl5IS2aXiZJLYKR+NeLppf5NlE16D1CABA0BCIGmjayREtvOE/FkaY32+JIF99P3Q16j5BX6mOONu45rCd3HNDGPYfJwfEB/qawBZVVDTVtZImmlhUHro5GvEdozsptCklNklaD0CPkBaZK+w9/U9iEHhFDBbmYV5B7hHKNqdL+w98UtnG1smpHBbmyKk8zwQ7GcqE+5mjCkvVJZymF1BD8vTjvUo67JfibwhSZ3L/pETEMTzOfyc8LqXx4X111zikqH96XC2eWMVXaf/ibwkYEIgahmBdyianS/sPfFDYiEDEITzPIJaZK+w9/U9iIQMQgPM0gl5gq7T/8TZEJU6Z4M33XIDzNIJeYKu0//E2RLpMmRdAjYhCeZpBrTJX2H/6mSMW0SRFM3zVM/ASRWn+a4UICNzBV2n/4m6I1uZrincn9m6EZw8SfZpp3mRUHsI4Icic+VRr+wd8UrclkUkSuzh8CEQMFtbw7AMBdJk6KIBAxFE8zAIBsM3FSBMmqAAAEhImTIghEAAAIiPgUb0ktghGvpngTiCBrTCmOAwBIzrQp3uSIICtMKo4DAGibSZMiqCOCDovXPml+IlH7xC7UnQCQLdQRQc6kWjE4pIYVg6eWFXNTMxg9WgC8Qo4IOoQVg+1nWrlnAMFCIIIOMbE4DtKXqkdLaujRIvEYgFsIRNAhJhbHQfro0QLMFKRZiOSIoEPixXFqoidafaqOL6DEisFmokcLME/QcrboEUGHmFgcB+mjRwswSxBztghE0GGmFcdB+kws9wxkk01DHEHN2WJoBllhUnEcpC/eozVn5TaFpCYXQHq0YDvbhjgyydny06Ko9Igga+IrBl91zikqH96Xm5cl6NGCH9k4xBHUnC16RADQowVfsbXQYlBztghEAEj6rEcLsJ2tQxxBnYXI0AwAwFdsHeII6ixEAhEAgK+kO3Sx9/2PXG5J5oKYs8XQDADAV8YO7aPiwrBqauva3G/Vln26+dLTjOthCFrOFoEIAq0+5gTmww4ERX5eSDPGDtYv/ufNNvczMU8kLkg5WwQiAcJNtynbagzkAucI/OLUft3T2s+0PJEgIhAJCG66TcVrDDTPTI/XGPDrWGxbOEfgJ0GdCmsjklUDwMbCPm4KahnltnCOwG9YvsAeBCI+x023pUxqDAQB5whMkO01YYI6FdZGDM34nK2Ffdxka40Bt3COwGtuDQvGp8I2/93FDDkahUDE57jptsTYcVOcI/CS2/laQZsKa6OcDM3ce++9OvXUU9WlSxeNGzdOmzdvzsXbQtx0W8PYcVOcI/BKroYFWZDTbK4HIg8//LBuvfVWLVq0SNu2bdPo0aN12WWX6dChQ26/NcRNtzWMHTfFOQKvkK8FKQeByM9//nPNnj1bN954o8rKynTfffepW7du+v3vf+/2W0PcdJMJYhnlZDhH4BWGBSG5nCNy8uRJbd26VQsWLEhsy8vL05QpU7Rx48YW+9fV1amu7rOSvLW1tW42LzBI2GodY8ef4RyBFxgWhORyIPL++++rvr5eAwYMaLJ9wIABeuONN1rsX1FRocWLF7vZpMDiptu6IJVRToVzBLkW1GXv0ZRRs2YWLFigW2+9NfF1bW2tSktLPWyRv3DTRSqcI8il+LDgnJXbFJKaBCMMCwaHqzki/fr1U35+vt59990m2999910VFxe32D8cDquwsLDJCwD8KNsFvGxFvhZc7REpKCjQmDFjtG7dOl199dWSpFgspnXr1unmm292860BwFis69MUw4LB5vrQzK233qqZM2fq/PPP19ixY/XLX/5Sx48f14033uj2WwOAcVhwsXUMCwaX64HIddddp/fee08LFy5UTU2NzjnnHK1Zs6ZFAisA+F2qAl4hNRTwmlpWTG8AAiPkOI6xA5O1tbWKRCKKRqPkiwCw3sY9hzVj2aaU+z00+0J6B2C1TO7frL4LADlCAS+gJQIRAMgRCngBLRGIAECOsK4P0BKBCADkCOv6AC0RiABADlHAC2jKqBLvQDL1MYdiR/ANCngBnyEQgfGoQgk/ooAX0IChGRgtXoWycRAifVaFck1ltUctAwBkA4EIjJWqCqXUUIUyqIuFAYAfEIjAWJurjrToCWnMkVQdPaHNVUdy1ygAQFYRiMBYVKEEAP8jEIGxqEIJAP5HIAJjUYUSAPyPQATGogolAPgfgQiMRhVKAPA3CprBeFShBAD/IhCBFahCCQD+xNAMAADwDIEIAADwDIEIAADwDIEIAADwDIEIAADwDLNmAACBUB9zKANgIAIRAIDvrams1uLVu5qs6F0S6aJF08sojOgxhmYAAL62prJac1ZuaxKESFJN9ITmrNymNZXVHrUMEoEIAMDH6mOOFq/eJaeV78W3LV69S/Wx1vZALhCIAC6qjznauOewntxxQBv3HOZiB+TY5qojLXpCGnMkVUdPaHPVkdw1Ck2QIwK4hDFpwHuHjiUPQtqzH7KPHhHABYxJ242eLP/o37NL6p0y2A/ZR48IkGWpxqRDahiTnlpWzNRBA9GT5S9jh/ZRSaSLaqInWv1MhiQVRxqm8sIb9IgAWcaYtL3oyfKf/LyQFk0vk9QQdDQW/3rR9DIeCjxEIAJkGWPSdmJ2hX9NG1mipTecp+JI0+GX4kgXLb3hPHq6PMbQDKxhS1VExqTtlElPVvnwvrlrGLJi2sgSTS0rtuIaEjQEIrCCTeP2jEnbiZ4s/8vPCxFEGoihGRjPtnF7xqTtRE9WZphZhGyhRwRGs3UGSnxMunkvTrGhvTigJysTNvVQwnwEIjCazeP2jEnbJd6TNWflNoWkJsEIPVmfifdQNg/W4j2UJH8iUwzNwGi2j9vHx6SvOucUlQ/vG/ibmOmYXdE2ZhbBDfSIwGiM2yPX6MlKzuYeSpiLQARGY9weXmB2Rets76GEmRiagdGYgQKYgx5KuIFABMZj3B4wQ7yHMlnYH1LD7Bl6KJEJhmZgBcbtAe8xswhuCDmOY2x6c21trSKRiKLRqAoLC71uDgBA1BFBapncv+kRAQBkhB5KZJNrgcidd96pZ555Rjt27FBBQYGOHj3q1lsBAHKMmUXIFteSVU+ePKlrr71Wc+bMcestAACA5VzrEVm8eLEkacWKFW69BQAAsJxROSJ1dXWqq6tLfF1bW+thawAAgNuMqiNSUVGhSCSSeJWWlnrdJMAILLkOwK8yCkTmz5+vUCjU5uuNN95od2MWLFigaDSaeO3fv7/dvwvwizWV1ZqwZL1mLNukW1bt0IxlmzRhyXqtqaz2umkA0GEZDc1873vf06xZs9rcZ9iwYe1uTDgcVjgcbvfPA37DkusA/C6jQKSoqEhFRUVutQVAI6mWXA+pYcn1qWXF1G8AYC3XklX37dunI0eOaN++faqvr9eOHTskSaeddpp69Ojh1tsCvsGS6wCCwLVAZOHChXrwwQcTX5977rmSpGeffVaTJ092620B32DJdQBB4NqsmRUrVshxnBYvghAgPSy5DiAIjJq+C+AzLLkOIAgIRABDxZdcl9QiGGHJdTRHrRnYyqjKqgCamjayREtvOK/FkuvFLLmORtZUVrc4R0o4R2CJkOM4xobNtbW1ikQiikajKiws9Lo5gGfqYw5LrqNVyWrNxM8Oas3AC5ncv+kRASzAkutoDbVm4AfkiACApTKpNQOYikAEACxFrRn4AYEIAFiKWjPwAwIRALAUtWbgBwQiAGApas3ADwhEAMBi8VozxZGmwy/FkS5M3U2C4m9mYfouAFhu2sgSTS0rptZMGij+Zh4KmgEAAoHib7mTyf2boRkAgO+lKv4mNRR/Y5gm9whEAAC+R/E3cxGIAAB8j+Jv5iIQAQD4HsXfzEUgAgDwvXjxt7ZQ/M0bBCIAAN/LzwvpytFtz4i5cnQJU549QCACAPC9+pijp/5W3eY+T/2tmlkzHiAQAQD4XqpZMxKzZrxCIAIA8D1mzZiLEu9ol/qYQzlpANZg1oy5CESQMdZqAGCb+KyZmuiJVqurhtSwUCCzZnKPoRlkJL5WQ/Ox1proCc1ZuU1rKttOBgMAL+TnhbRoepmkz9aWiYt/vWh6GT27HiAQQdpYqwGAzaaNLNHSG85TcbN6IsWRLix45yGGZpC2TNZqKB/eN3cNA4A0TRtZoqllxeS4GYRABGkj6xyAH+TnhXhYMghDM0gbWecAgGwjEEHa4lnnyTowQ2KtBgBAZghEkDayzgEA2UYggoyQdQ4AyCaSVZExss4BANlCIIJ2IescAJANDM0AAADPEIgAAADPEIgAAADPEIgAAADPEIgAAADPEIgAAADPMH034OpjDvVAAACeIRAJsDWV1Vq8epeqo5+tllsS6aJF08uokIoEglUAbiIQCag1ldWas3KbnGbba6InNGflNsq1QxLBKgD3kSMSQPUxR4tX72oRhEhKbFu8epfqY63tgaCIB6uNgxDps2B1TWW1Ry0D4CcEIgG0uepIi5tLY46k6ugJba46krtGwSgEqwByxbVAZO/evfrGN76hoUOHqmvXrho+fLgWLVqkkydPuvWWSNOhY8mDkPbsB/8hWAWQK67liLzxxhuKxWL67W9/q9NOO02VlZWaPXu2jh8/rp/97GduvS3S0L9nl6zuB/8hWLUDicTwA9cCkWnTpmnatGmJr4cNG6bdu3dr6dKlBCIeGzu0j0oiXVQTPdFq13tIUnGk4aKGYCJYNR+JxPCLnOaIRKNR9emT/OZWV1en2traJi9kX35eSIuml0lqCDoai3+9aHoZT1YuqI852rjnsJ7ccUAb9xw2NsciHqwmOwNCarjpEax6g0Ri+EnOApG33npLv/71r/Vv//ZvSfepqKhQJBJJvEpLS3PVvMCZNrJES284T8WRpk+0xZEuTN11yZrKak1Ysl4zlm3SLat2aMayTZqwZL2RNw2CVXORSBxstjzMZCLkOE5G/4v58+dryZIlbe7z+uuv64wzzkh8feDAAU2aNEmTJ0/W/fffn/Tn6urqVFdXl/i6trZWpaWlikajKiwszKSZSFOmY8yMSbdPsrot8SNnavBH9795Nu45rBnLNqXc76HZF6p8eN8ctAi5YtPnsba2VpFIJK37d8aByHvvvafDhw+3uc+wYcNUUFAgSTp48KAmT56sCy+8UCtWrFBeXvqdMJn8R+A+mz4EzXkZQNXHHE1Ysj7pLJR4Ts6L8y41Mqgj+DTLkzsO6JZVO1Lud89Xz9FV55zifoOQE7Y9zGRy/844WbWoqEhFRUVp7XvgwAFdcsklGjNmjJYvX55REAKz2FyJ1esAKpOpsCY+webnhYxsV1CRSBw8qYbjQmoYjptaVmzlQ4JrkcGBAwc0efJkDR48WD/72c/03nvvqaamRjU1NW69JVxi85i0CUl9TIVFNpFIHDx+r+vjWiCydu1avfXWW1q3bp0GDRqkkpKSxAt2sfVDYEoAxRMssolE4uDx+8OMa4HIrFmz5DhOqy/YxdYPgSkBFE+wyDZmvQWL3x9mWH0XKdn6ITAlgIo/wc5ZuU0hqUkPDU+waK9pI0t06RkD9J8b9+qdIx9pSJ9u+v/KT1VBJ3Lx/MbvRSg5Y5GSrU/0JgVQPMEi29ZUVmvS3c/qx8+8rv+38R39+JnXNenuZ42sS4OO8ftwXMbTd3OJ6bvmiCd9Sq0/0Zt4M41Pm031FJHLabNMhUUq6Zwjtk3lRHZ4PQMwE67WEcklAhGz2PQhiLMxgEJwpfMZs70uDTrGlocZAhG4xpYPQWM2BlAInnR7OaisChu4WtAMwWZjcatpI0s0tazYugAKwZFJwSpTkrCBbCEQQSDYGEAhODKZam5SEjaQDcyaAQCPZdLLYessNiAZApEs8+MSzQDclUkvh9+nciJ4GJrJIpIiATt5nYSdqmCV1LSXI16Xpvn1ppjrDSzErJksYV4/YCdTHiCSXUPi/u3ioVpwRVmTbV4HUEAymdy/GZrJAlMWVwOQGRNWZ46bNrJE37x4aNLv/+75qhbtiSdhX3XOKSof3pcgBFYiEMkCUxZXA5A+0x4g6mOOnvpb24FP4/aQjwa/IEckC5jXD9gnkweIXEz9zqQ90Y9PGjGclCmGktAaApEsYF4/YB/THiDSfZ+1u2q0/KW9LXpy4sNJpuajmZKLA/MwNJMFzOsH7GPaA0S67/PEjoPGDCely6RcHJiHQCQLmNcP2Me0B4h02tOne2cdOX4y6e8wMR/NtFyc5si18R6BSJbE5/UXR5o+1RRHuhjbVQoEmWkPEI3bk8w155yS1u8yKR/N5GT+NZXVmrBkvWYs26RbVu3QjGWbNGHJenpocowckSxicTXALqYVBotP4V32QpUaP5jnhaTZE4dq8ukD9MBLe1P+HpPy0UzLxYlLVrfF9FwbPyIQyTIWVwPsYtIDxJrKav3u+aoWN0fHaagjMnpQrzYrsIbUEESZlI9mWi6OlNlqxzxIuo+hGQCBZ0JhsHRyKX78zOu6/YvmDCelw7RcHMns4aIgIhABAAOke3Ps3b3Aqnw003JxJHOHi4KKoRkAMEAmN8erzjnFmOGkdJiWi2PicFGQEYgAgAEyvTnalo9mUi5OqtWOTcy18TOGZgDAACbmUmSbCbk48XaYNlwUZAQiAGAAv98cTSscRu0nc4QcxzG2jFxtba0ikYii0agKCwu9bg4AuM6Pa7KY/H9iIT53ZHL/JhBxCSc3gPby0/UjWeGw+P+G3gd/yuT+TbKqC0yO/gGYz7ZE1GQoHIZ0kCOSZawymXumjT0DaEDhMKSDHpEsIvrPPXqfAHNROAzpoEcki4j+c4veJ8BsFA5DOghEsojoP3fSWZdj8epdDNMAHgpCbRR0HIFIFvkh+rcl34LeJ8B8fq+N4jVbrtepkCOSRbaXDbYp34LeJ2TCT9NhbWPaOjN+YdP1OhUCkSyKR/9zVm5TSGoSjJge/Seb6x/PtzBtrr8fep8kO2+QtrXZTxdsW5m0zowf2Ha9ToWCZi6w7cJXH3M0Ycn6pEMd8Z6cF+ddasyFI97mVL1PJrW5OdvOE8m+NlNMC35jy/U6k/s3OSIumDayRC/Ou1QPzb5Q93z1HD00+0K9OO9SYy94NuZb2D72bOOMH9vaTEIz/MjG63UqBCIuMWWVyXTYmm9h66JVNt4gbWyzHy/YtvJLUqUJbL1et4UcEVidb2Hj2HMmN0hTynzb2GY/XrBt0TiPaO/7H+mhzftUU2vHcJ7pbL5eJ0MggpSzfSSpV7fOxs72sW1dDhtvkDa22Y8XbBu0lkfUnK1JlSawfXZmaxiaQSLfoq3O0qMffaK1u2py1iY/s/EGaWOb4xfsVD44fjIHrQmGZHlEzZk6nGcD2/PjWkMgAknS1LJi9erWOen34+vkcNHoOBurTdrY5vy8kG7/4pkp9/vxM5zX2dBWHlFryNFpP1vz45JhaAaSGnIAjn70SdLvm5gDkIzpdS5srDdjY5slqXf3cMp9OK+zI1UeUTImDefZxMb8uGQIRCDJzhyA1thS58LGapM2tjnd83XtrhqjAxEbzuv2XhtMGs6zjW35ccm4GohceeWV2rFjhw4dOqTevXtrypQpWrJkiQYOHOjm26IdbMwBaM62aoM2PtHY1uZ0z9ffv7RXY4f2Mer8iLPlvM702mBjUiXc4WqOyCWXXKI//elP2r17t/785z9rz549+spXvuLmW6KdbMwBaMzGOheSXfVm4mxqc7oJq6bmQNl0Xqe6hjRm8nAecs/VQOS73/2uLrzwQg0ZMkTjx4/X/PnztWnTJn3ySfJcBHjD9kxsilehNY3P67aYen7YdF63dQ1pztakSrgjZzkiR44c0R/+8AeNHz9enTu3Pjujrq5OdXV1ia9ra2tz1TzIzhyAOL/kuCD7po0s0TcuOlUPvLQ35b6mnR+2nddJryGFYc0YO1in9utu/HAecs/1QGTevHn6zW9+o48++kgXXnihnn766aT7VlRUaPHixW43CW2wLQcgzg85LnDPlLLitAIR084PG89rW68h8E7GQzPz589XKBRq8/XGG28k9r/tttu0fft2/fWvf1V+fr6+9rWvKdmCvwsWLFA0Gk289u/f3/7/GdrNphyAONtzXOAuW88PW9tt4zUE3gk5yaKCJN577z0dPny4zX2GDRumgoKCFtv/8Y9/qLS0VP/7v/+r8vLylO+VyTLCQHx2gdR6nQvGpIPN1vPD1nYj2DK5f2c8NFNUVKSioqJ2NSwWi0lSkzwQIFtsznGB+2w9P2xtN5CujHtE0vXyyy9ry5YtmjBhgnr37q09e/bo9ttv17vvvqvXXntN4XDqiof0iKA9TK9ACW/Zen7Y2m4Ek6s9Iunq1q2bHnvsMS1atEjHjx9XSUmJpk2bph/+8IdpBSFAe/ml2iDcYev5YWu7gVRcC0TOPvtsrV+/3q1fDwAAfIDVdwEAgGcIRAAAgGcIRAAAgGcIRAAAgGcIRAAAgGcIRAAAgGcIRAAAgGcIRAAAgGdcK2iWDfHq87W1tR63BAAApCt+305nFRmjA5Fjx45JkkpLSz1uCQAAyNSxY8cUiUTa3Me1Re+yIRaL6eDBg+rZs6dCoewu7lRbW6vS0lLt37+fBfVawfFJjWPUNo5PahyjtnF82mby8XEcR8eOHdPAgQOVl9d2FojRPSJ5eXkaNGiQq+9RWFho3B/QJByf1DhGbeP4pMYxahvHp22mHp9UPSFxJKsCAADPEIgAAADPBDYQCYfDWrRokcLhsNdNMRLHJzWOUds4PqlxjNrG8WmbX46P0cmqAADA3wLbIwIAALxHIAIAADxDIAIAADxDIAIAADxDIAIAADwTyEDk3nvv1amnnqouXbpo3Lhx2rx5s9dN8szzzz+v6dOna+DAgQqFQnriiSeafN9xHC1cuFAlJSXq2rWrpkyZojfffNObxnqgoqJCF1xwgXr27Kn+/fvr6quv1u7du5vsc+LECc2dO1d9+/ZVjx499E//9E969913PWpxbi1dulSjRo1KVHYsLy/XX/7yl8T3g3xskvnJT36iUCik73znO4ltQT5OP/rRjxQKhZq8zjjjjMT3g3xsGjtw4IBuuOEG9e3bV127dtXZZ5+tV155JfF9m6/VgQtEHn74Yd16661atGiRtm3bptGjR+uyyy7ToUOHvG6aJ44fP67Ro0fr3nvvbfX7P/3pT/WrX/1K9913n15++WV1795dl112mU6cOJHjlnpjw4YNmjt3rjZt2qS1a9fqk08+0Re+8AUdP348sc93v/tdrV69Wo888og2bNiggwcP6stf/rKHrc6dQYMG6Sc/+Ym2bt2qV155RZdeeqmuuuoqvfbaa5KCfWxas2XLFv32t7/VqFGjmmwP+nE666yzVF1dnXi9+OKLie8F/dhI0gcffKCLLrpInTt31l/+8hft2rVL//Ef/6HevXsn9rH6Wu0EzNixY525c+cmvq6vr3cGDhzoVFRUeNgqM0hyHn/88cTXsVjMKS4udu6+++7EtqNHjzrhcNh56KGHPGih9w4dOuRIcjZs2OA4TsPx6Ny5s/PII48k9nn99dcdSc7GjRu9aqanevfu7dx///0cm2aOHTvmjBgxwlm7dq0zadIk55ZbbnEch3No0aJFzujRo1v9XtCPTdy8efOcCRMmJP2+7dfqQPWInDx5Ulu3btWUKVMS2/Ly8jRlyhRt3LjRw5aZqaqqSjU1NU2OVyQS0bhx4wJ7vKLRqCSpT58+kqStW7fqk08+aXKMzjjjDA0ePDhwx6i+vl6rVq3S8ePHVV5ezrFpZu7cufriF7/Y5HhInEOS9Oabb2rgwIEaNmyYrr/+eu3bt08Sxybuqaee0vnnn69rr71W/fv317nnnqtly5Ylvm/7tTpQgcj777+v+vp6DRgwoMn2AQMGqKamxqNWmSt+TDheDWKxmL7zne/ooosu0siRIyU1HKOCggL16tWryb5BOkY7d+5Ujx49FA6HddNNN+nxxx9XWVkZx6aRVatWadu2baqoqGjxvaAfp3HjxmnFihVas2aNli5dqqqqKk2cOFHHjh0L/LGJe/vtt7V06VKNGDFC//3f/605c+bo3//93/Xggw9Ksv9a3cnrBgC2mDt3riorK5uMX0M6/fTTtWPHDkWjUT366KOaOXOmNmzY4HWzjLF//37dcsstWrt2rbp06eJ1c4xz+eWXJ/49atQojRs3TkOGDNGf/vQnde3a1cOWmSMWi+n888/XXXfdJUk699xzVVlZqfvuu08zZ870uHUdF6gekX79+ik/P79FxvW7776r4uJij1plrvgx4XhJN998s55++mk9++yzGjRoUGJ7cXGxTp48qaNHjzbZP0jHqKCgQKeddprGjBmjiooKjR49Wvfccw/H5v9s3bpVhw4d0nnnnadOnTqpU6dO2rBhg371q1+pU6dOGjBgAMepkV69eulzn/uc3nrrLc6h/1NSUqKysrIm284888zEEJbt1+pABSIFBQUaM2aM1q1bl9gWi8W0bt06lZeXe9gyMw0dOlTFxcVNjldtba1efvnlwBwvx3F088036/HHH9f69es1dOjQJt8fM2aMOnfu3OQY7d69W/v27QvMMWouFouprq6OY/N/Pv/5z2vnzp3asWNH4nX++efr+uuvT/yb4/SZDz/8UHv27FFJSQnn0P+56KKLWpQN+Pvf/64hQ4ZI8sG12uts2VxbtWqVEw6HnRUrVji7du1yvvnNbzq9evVyampqvG6aJ44dO+Zs377d2b59uyPJ+fnPf+5s377deeeddxzHcZyf/OQnTq9evZwnn3zSefXVV52rrrrKGTp0qPPxxx973PLcmDNnjhOJRJznnnvOqa6uTrw++uijxD433XSTM3jwYGf9+vXOK6+84pSXlzvl5eUetjp35s+f72zYsMGpqqpyXn31VWf+/PlOKBRy/vrXvzqOE+xj05bGs2YcJ9jH6Xvf+57z3HPPOVVVVc5LL73kTJkyxenXr59z6NAhx3GCfWziNm/e7HTq1Mm58847nTfffNP5wx/+4HTr1s1ZuXJlYh+br9WBC0Qcx3F+/etfO4MHD3YKCgqcsWPHOps2bfK6SZ559tlnHUktXjNnznQcp2Fa2O233+4MGDDACYfDzuc//3ln9+7d3jY6h1o7NpKc5cuXJ/b5+OOPnW9961tO7969nW7dujnXXHONU11d7V2jc+jrX/+6M2TIEKegoMApKipyPv/5zyeCEMcJ9rFpS/NAJMjH6brrrnNKSkqcgoIC55RTTnGuu+4656233kp8P8jHprHVq1c7I0eOdMLhsHPGGWc4v/vd75p83+ZrdchxHMebvhgAABB0gcoRAQAAZiEQAQAAniEQAQAAniEQAQAAniEQAQAAniEQAQAAniEQAQAAniEQAQAAniEQAQAAniEQAQAAniEQAQAAnvn/Ab5zIJd7FilVAAAAAElFTkSuQmCC", "application/papermill.record/text/plain": "
" }, "metadata": { "scrapbook": { "mime_prefix": "application/papermill.record/", "name": "fig1" } }, "output_type": "display_data" }, { "data": { "application/papermill.record/image/png": "iVBORw0KGgoAAAANSUhEUgAAAiIAAAGzCAYAAAASZnxRAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAACNk0lEQVR4nO29eXzcVb3//5qZZCb72mxtQtu0bG1paSt0EwqytLig9wJ6r3oteH8IXLiK4AJepYhLvS4obiB4pah8LwoKiFdAZLdQCi2lQNnadEnXpEmzL5PMfH5/1E9I0szM+5zPWZPzfDzm8WiTMzMnn/nMOe/zXl7vkOd5HhwOh8PhcDg0ENY9AYfD4XA4HBMXZ4g4HA6Hw+HQhjNEHA6Hw+FwaMMZIg6Hw+FwOLThDBGHw+FwOBzacIaIw+FwOBwObThDxOFwOBwOhzacIeJwOBwOh0MbzhBxOBwOh8OhDWeIOByS2blzJ0KhENauXat7Kg4C06ZNw8UXXyz0NS+++GJMmzZN6Gs6HOMFZ4g4HAFYu3YtQqEQXnrpJd1TkcaNN96IUCiEQ4cOMT933759uPHGG7F582bxEzOMifS3OhwiydI9AYdjvDN16lT09vYiOztb91SUs2/fPnz961/HtGnTcPLJJ+uejlTS/a133HEHksmknok5HIbjPCIOh2RCoRBycnIQiUR0TyUlPT09uqfARHd3t+4pMJGdnY1YLKZ7Gg6HkThDxOGQzFg5IhdffDEKCgqwd+9efOQjH0FBQQEqKirwhS98AYlEYsTzk8kkfvSjH2H27NnIyclBVVUVLrvsMhw+fHjEuAcffBAf+MAHMHnyZMRiMcyYMQPf+MY3jnq9M844A3PmzMHGjRtx+umnIy8vD1/5yleY/ib/NbZu3YozzzwTeXl5mDJlCr773e8OjXnqqadwyimnAAAuueQShEKho67DCy+8gJUrV6K4uBh5eXlYvnw51q1bN+K9/NDQ1q1b8fGPfxylpaV473vfO+I6NjQ0YMWKFcjPz8fkyZNx0003YXRj8e7ublx77bWoq6tDLBbD8ccfj+9///tHjRtNa2srvvCFL+Ckk05CQUEBioqKcN555+GVV14h/61j5YhQ5xMKhXDVVVfhgQcewJw5cxCLxTB79mw88sgjaeftcNiCM0QcDk0kEgmsWLEC5eXl+P73v4/ly5fjBz/4AW6//fYR4y677DJ88YtfxLJly3DLLbfgkksuwd13340VK1ZgYGBgaNzatWtRUFCAa665BrfccgsWLlyIG264Adddd91R793S0oLzzjsPJ598Mn70ox/hzDPPZJ7/4cOHsXLlSsybNw8/+MEPcMIJJ+DLX/4yHn74YQDAiSeeiJtuugkA8JnPfAa/+c1v8Jvf/Aann346AOCJJ57A6aefjo6ODqxevRrf/va30dbWhve9733YsGHDUe930UUXoaenB9/+9rdx6aWXjriOK1euRFVVFb773e9i4cKFWL16NVavXj00xvM8nH/++fjhD3+IlStX4uabb8bxxx+PL37xi7jmmmvS/p0NDQ144IEH8MEPfhA333wzvvjFL+LVV1/F8uXLsW/fPtLfOhrW+fz973/Hf/zHf+Bf/uVf8N3vfhd9fX244IIL0NLSknbuDocVeA6Hg5s777zTA+C9+OKLKcfs2LHDA+DdeeedQz9btWqVB8C76aabRoydP3++t3DhwqH/P/vssx4A7+677x4x7pFHHjnq5z09PUe992WXXebl5eV5fX19Qz9bvny5B8C77bbbSH/j6tWrPQBec3PzUa/x61//euhn/f39XnV1tXfBBRcM/ezFF1886m/3PM9LJpPescce661YscJLJpMj/obp06d755xzzlHv/6//+q9Hzc2/jv/5n/854rU/8IEPeNFodGjODzzwgAfA++Y3vzni+RdeeKEXCoW8bdu2Df1s6tSp3qpVq4b+39fX5yUSiRHP27FjhxeLxUZ8fqn+Vn+eU6dOHfo/y3wAeNFodMTPXnnlFQ+A95Of/OSo93I4bMN5RBwOjVx++eUj/n/aaaehoaFh6P/33nsviouLcc455+DQoUNDj4ULF6KgoABPPvnk0Njc3Nyhf3d2duLQoUM47bTT0NPTgzfffHPE+8RiMVxyySWB5l5QUIBPfvKTQ/+PRqM49dRTR8w/FZs3b8Y777yDj3/842hpaRn6u7q7u3HWWWfhmWeeOSq5c/S1Gs5VV1019G8/lBGPx/G3v/0NAPCXv/wFkUgEn/3sZ0c879prr4XneUNenLGIxWIIh48slYlEAi0tLSgoKMDxxx+PTZs2Zfxbx4J1PmeffTZmzJgx9P+5c+eiqKiIdK0dDtNxVTMOhyZycnJQUVEx4melpaUjcj/eeecdtLe3o7KycszX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HEZtba3U9ygqKjL+A9WJuz6pcdcmPe76pMddn/S465MaW65NJk+Ij0tWdTgcDofDoQ1niDgcDofD4dDGhDVEYrEYVq9ejVgspnsqRuKuT2rctUmPuz7pcdcnPe76pGa8Xhujk1UdDofD4XCMbyasR8ThcDgcDod+nCHicDgcDodDG84QcTgcDofDoQ1niDgcDofD4dCGM0QcDofD4XBoY0IaIj/72c8wbdo05OTkYNGiRdiwYYPuKWnhmWeewYc+9CFMnjwZoVAIDzzwwIjfe56HG264ATU1NcjNzcXZZ5+Nd955R89kNbBmzRqccsopKCwsRGVlJT7ykY/grbfeGjGmr68PV155JcrLy1FQUIALLrgABw8e1DRjddx6662YO3fukMLjkiVL8PDDDw/9fqJel1R85zvfQSgUwtVXXz30s4l8jW688UaEQqERjxNOOGHo9xP52vjs3bsXn/zkJ1FeXo7c3FycdNJJeOmll4Z+P57W5wlniPzud7/DNddcg9WrV2PTpk2YN28eVqxYgaamJt1TU053dzfmzZuHn/3sZ2P+/rvf/S5+/OMf47bbbsMLL7yA/Px8rFixAn19fYpnqoenn34aV155JdavX4/HHnsMAwMDOPfcc9Hd3T005vOf/zweeugh3HvvvXj66aexb98+/PM//7PGWauhtrYW3/nOd7Bx40a89NJLeN/73ocPf/jDeP311wFM3OsyFi+++CJ+8YtfYO7cuSN+PtGv0ezZs7F///6hx9///veh3030a3P48GEsW7YM2dnZePjhh7F161b84Ac/QGlp6dCYcbU+exOMU0891bvyyiuH/p9IJLzJkyd7a9as0Tgr/QDw7r///qH/J5NJr7q62vve97439LO2tjYvFot5//u//6thhvppamryAHhPP/2053lHrkd2drZ37733Do154403PADe888/r2ua2igtLfV++ctfuusyjM7OTu/YY4/1HnvsMW/58uXe5z73Oc/z3L2zevVqb968eWP+bqJfG8/zvC9/+cvee9/73pS/H2/r84TyiMTjcWzcuBFnn3320M/C4TDOPvtsPP/88xpnZh47duzAgQMHRlyr4uJiLFq0aMJeq/b2dgBAWVkZAGDjxo0YGBgYcY1OOOEEHHPMMRPqGiUSCdxzzz3o7u7GkiVL3HUZxpVXXokPfOADI64F4O4dAHjnnXcwefJk1NfX4xOf+AR2794NwF0bAPjTn/6E97znPbjoootQWVmJ+fPn44477hj6/XhbnyeUIXLo0CEkEglUVVWN+HlVVRUOHDigaVZm4l8Pd62OkEwmcfXVV2PZsmWYM2cOgCPXKBqNoqSkZMTYiXKNXn31VRQUFCAWi+Hyyy/H/fffj1mzZk346+Jzzz33YNOmTVizZs1Rv5vo12jRokVYu3YtHnnkEdx6663YsWMHTjvtNHR2dk74awMADQ0NuPXWW3Hsscfi0UcfxRVXXIHPfvazuOuuuwCMv/U5S/cEHA4buPLKK/Haa6+NiGNPdI4//nhs3rwZ7e3tuO+++7Bq1So8/fTTuqdlBI2Njfjc5z6Hxx57DDk5ObqnYxznnXfe0L/nzp2LRYsWYerUqfj973+P3NxcjTMzg2Qyife85z349re/DQCYP38+XnvtNdx2221YtWqV5tmJZ0J5RCZNmoRIJHJU9vXBgwdRXV2taVZm4l8Pd62Aq666Cn/+85/x5JNPora2dujn1dXViMfjaGtrGzF+olyjaDSKmTNnYuHChVizZg3mzZuHW265ZcJfF+BIeKGpqQkLFixAVlYWsrKy8PTTT+PHP/4xsrKyUFVVNeGv0XBKSkpw3HHHYdu2be7+AVBTU4NZs2aN+NmJJ544FL4ab+vzhDJEotEoFi5ciMcff3zoZ8lkEo8//jiWLFmicWbmMX36dFRXV4+4Vh0dHXjhhRcmzLXyPA9XXXUV7r//fjzxxBOYPn36iN8vXLgQ2dnZI67RW2+9hd27d0+YazScZDKJ/v5+d10AnHXWWXj11VexefPmocd73vMefOITnxj690S/RsPp6urC9u3bUVNT4+4fAMuWLTtKKuDtt9/G1KlTAYzD9Vl3tqxq7rnnHi8Wi3lr1671tm7d6n3mM5/xSkpKvAMHDuiemnI6Ozu9l19+2Xv55Zc9AN7NN9/svfzyy96uXbs8z/O873znO15JSYn34IMPelu2bPE+/OEPe9OnT/d6e3s1z1wNV1xxhVdcXOw99dRT3v79+4cePT09Q2Muv/xy75hjjvGeeOIJ76WXXvKWLFniLVmyROOs1XDdddd5Tz/9tLdjxw5vy5Yt3nXXXeeFQiHvr3/9q+d5E/e6pGN41YznTexrdO2113pPPfWUt2PHDm/dunXe2Wef7U2aNMlramryPG9iXxvP87wNGzZ4WVlZ3re+9S3vnXfe8e6++24vLy/P++1vfzs0ZjytzxPOEPE8z/vJT37iHXPMMV40GvVOPfVUb/369bqnpIUnn3zSA3DUY9WqVZ7nHSkR+9rXvuZVVVV5sVjMO+uss7y33npL76QVMta1AeDdeeedQ2N6e3u9//iP//BKS0u9vLw875/+6Z+8/fv365u0Ij796U97U6dO9aLRqFdRUeGdddZZQ0aI503c65KO0YbIRL5GH/vYx7yamhovGo16U6ZM8T72sY9527ZtG/r9RL42Pg899JA3Z84cLxaLeSeccIJ3++23j/j9eFqfQ57neXp8MQ6Hw+FwOCY6EypHxOFwOBwOh1k4Q8ThcDgcDoc2nCHicDgcDodDG84QcTgcDofDoQ1niDgcDofD4dCGM0QcDofD4XBowxkiDofD4XA4tOEMEYfD4XA4HNpwhojD4XA4HA5tOEPE4XA4HA6HNpwh4nA4HA6HQxv/P8E/amuc0jhQAAAAAElFTkSuQmCC", "application/papermill.record/text/plain": "
" }, "metadata": { "scrapbook": { "mime_prefix": "application/papermill.record/", "name": "fig2" } }, "output_type": "display_data" }, { "data": { "application/papermill.record/image/png": "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Se3fu+WWWzwA3htvvNH+vcOHD3tlZWXeiBEjvGg06nme523bts0D4D388MPt7br7PP785z97ALzXX3+9z7813s+Onz+1P6+++qoHwDv22GO95ubm9ra//OUvPQDeunXrjnovhjEBu2aYhObw4cMAgAEDBvTaLv7zeHsR0tPT2/+/pqYG+/fvx6xZs7B161bU1NQAAF566SW0tLTgW9/6VifXzi233NLj6379619HJBLp8b1aW1tx4MABjBo1Crm5uVi1apVw3wHgqaeeQkFBAb71rW8d9bOubigqc+bM6WRJmTBhArKzs7F169Y+f/fpp59GLBbDl770Jezfv7/9a/DgwRg9ejReffXVTu1TU1NxzTXXdPtaQ4YM6WRByM7OxlVXXYXVq1djz549AIB//vOfmDJlCk455ZT2dllZWfjGN76BioqKXrOqOn4eTU1N2L9/P6ZOnQoAvj8P0f5cc801neJ+4pY/ylgzjA5YiDAJDVVgHD58GKFQqN1sLsJbb72FOXPmIDMzE7m5uSgsLGyPU4gLke3btwMARo8e3el3CwsLMXDgwG5ft7vA2cbGRixcuBClpaVITU1FQUEBCgsLcejQofb3EmXLli045phjkJQkz5M7bNiwo743cOBAHDx4sM/f3bRpEzzPw+jRo1FYWNjp69///jeqqqo6tR86dGiPAbijRo06SkyNGTMGANpjNLZv345jjjnmqN+Nu7Lin113VFdX4+abb8agQYOQnp6OwsLC9s/N7+ch2p+uYx2fT5SxZhgdcIwIk9Dk5ORgyJAhWLt2ba/t1q5di5KSkvYNrSdLQDQa7fTvLVu24PTTT8fYsWPx85//HKWlpUhJScE///lP/OIXv0AsFvPd946n7Tjf+ta38PDDD+OWW27BtGnTkJOTg1AohMsvvzzQe8mmqyUnjud5ff5uLBZDKBTCv/71r25fJysrq9O/uxsnXXzpS1/C8uXL8d3vfhcnnHACsrKyEIvFcNZZZ2n7PIKMNcPogIUIk/Ccf/75eOCBB/Dmm292MnfHeeONN1BRUYFbb721/XsDBw7stuZD19Pos88+i+bmZvzjH//odDLt6j4YPnw4gCOn/fLy8vbv79u3T+jk+uSTT2Lu3Ln42c9+1v69pqamo/oq4lIZOXIk3nnnHbS2tiI5OZn8e0HpqY8jR46E53koKytrt174ZfPmzfA8r9N7ffzxxwDQnhU1fPhwbNy48ajf/eijj9p/3h0HDx7Eyy+/jLvuugsLFy5s//6mTZuOaivyefjtD8PYCrtmmITntttuQ0ZGBq677rpOaZXAEdP69ddfj+zsbNx4443t3x85ciRqamo6WVJ2796NZ555ptPvx0+jHU+fNTU1ePjhhzu1mzNnDpKTk3Hfffd1avs///M/Qn9LJBI56qR73333HWWpidccoRQLu+SSS7B//378+te/PupnKk/VPfXx4osvRiQSwV133XXU+3ued9Rn2Bu7du3q9JnV1tbi0UcfxQknnIDBgwcDAM455xysXLkSb7/9dnu7+vp6PPjggxgxYgTGjRvX7Wt399kD3X+mIp+H3/4wjK2wRYRJeEaNGoVHH30U/+///T8cf/zxuPbaa1FWVoaKigr87ne/w8GDB/H44493ism4/PLL8b3vfQ8XXXQRbrrpJjQ0NGDx4sUYM2ZMpyDEM844AykpKTj//PNx3XXXoa6uDg899BCKioqwe/fu9naFhYW47bbbsGjRIpx33nk455xzsHr1avzrX/8Siks577zz8Ic//AE5OTkYN24c3n77bbz00kvIz8/v1O6EE05AJBLBf//3f6OmpgapqanttU66ctVVV+HRRx/FrbfeipUrV+LUU09FfX09XnrpJdxwww248MILRYabzIknnggA+P73v4/LL78cycnJOP/88zFy5EjcfffdWLBgASoqKvDFL34RAwYMwLZt2/DMM8/gG9/4Bm677TbSe4wZMwbXXnst3n33XQwaNAi///3vsXfv3k5Ccf78+fjzn/+Ms88+GzfddBPy8vLwyCOPYNu2bXjqqacQDnd/nsvOzsbMmTPx4x//GK2trRg6dChefPFFbNu2jfy3dlekzm9/GMZazCTrMIx9rFu3zvuP//gPb/DgwV44HPYAeGlpad769eu7bf/iiy9648eP91JSUrxjjjnGe+yxx7pN3/3HP/7hTZgwwUtLS/NGjBjh/fd//3d7SmzHdM1oNOrdddddXnFxsZeenu7Nnj3b+/DDD49K34yn77777rtH9engwYPeNddc4xUUFHhZWVnemWee6X300UdHvYbned5DDz3klZeXe5FIpFMqb9f0Xc87kob6/e9/3ysrK/OSk5O9wYMHe5deeqm3ZcuWXse0p/TdefPmHdW2uz7+13/9lzd0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", "application/papermill.record/text/plain": "
" }, "metadata": { "scrapbook": { "mime_prefix": "application/papermill.record/", "name": "fig3" } }, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiIAAAGzCAYAAAASZnxRAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAAA7AUlEQVR4nO3de3RU9b3//9ckkOGa4RZIkICAVI0IKgoGQdBCRVu89NRjOfor2B56pNhja+sCuioUuzSl9rS1rQtbtOD30IrVekNPOeWA4uWAIJdKRKliEAqJKMgEUYJm9u+PnBlzm8xMMnv257P387HWrEV2djIfdvbs/d6fz/vz/oQcx3EEAADggTyvGwAAAIKLQAQAAHiGQAQAAHiGQAQAAHiGQAQAAHiGQAQAAHiGQAQAAHiGQAQAAHiGQAQAAHiGQAQAAHiGQATwuRUrVigUCiVenTp10imnnKJZs2bpwIEDXjdPe/fubdK+zp07q1+/fho/frx+8IMfaN++fe3+3QcPHtSPfvQj7dixI3sNBpBVnbxuAIDcuOOOOzR06FCdOHFCmzZt0ooVK/Tiiy+qsrJSXbp08bp5mjFjhq644grFYjF98MEH2rJli375y1/qnnvu0QMPPKCvfvWrGf/OgwcPavHixTr11FN1zjnnZL/RADqMQAQIiMsvv1znn3++JOlf//Vf1a9fPy1ZskRPPfWU/vmf/9nj1knnnXeebrjhhibb3nnnHX3hC1/QzJkzdeaZZ2r06NEetQ6AWxiaAQJq4sSJkqQ9e/Yktp08eVILFy7UmDFjFIlE1L17d02cOFHPPvtsk58977zz9OUvf7nJtrPPPluhUEivvvpqYtvDDz+sUCik119/vV1tHDJkiFasWKGTJ0/qpz/9aWL7kSNH9P3vf19nn322evToocLCQl1++eX629/+ltjnueee0wUXXCBJuvHGGxNDPytWrJAkvfDCC7r22ms1ePBghcNhlZaW6rvf/a4+/vjjdrUVQPvQIwIE1N69eyVJvXv3Tmyrra3V/fffrxkzZmj27Nk6duyYHnjgAV122WXavHlzYnhj4sSJeuihhxI/d+TIEb322mvKy8vTCy+8oFGjRklquNkXFRXpzDPPbHc7y8vLNXz4cK1duzax7e2339YTTzyha6+9VkOHDtW7776r3/72t5o0aZJ27dqlgQMH6swzz9Qdd9yhhQsX6pvf/GYi8Bo/frwk6ZFHHtFHH32kOXPmqG/fvtq8ebN+/etf6x//+IceeeSRdrcXQIYcAL62fPlyR5LzP//zP857773n7N+/33n00UedoqIiJxwOO/v370/s++mnnzp1dXVNfv6DDz5wBgwY4Hz9619PbHvkkUccSc6uXbscx3Gcp556ygmHw86VV17pXHfddYn9Ro0a5VxzzTVttq+qqsqR5Nx9991J97nqqqscSU40GnUcx3FOnDjh1NfXt/g94XDYueOOOxLbtmzZ4khyli9f3uJ3fvTRRy22VVRUOKFQyHnnnXfabDOA7GFoBgiIKVOmqKioSKWlpfrKV76i7t2766mnntKgQYMS++Tn56ugoECSFIvFdOTIEX366ac6//zztW3btsR+8d6F559/XlJDz8cFF1ygqVOn6oUXXpAkHT16VJWVlYl9O6JHjx6SpGPHjkmSwuGw8vIaLl/19fU6fPiwevToodNPP71JO9vStWvXxL+PHz+u999/X+PHj5fjONq+fXuH2wwgPQQiQEDce++9Wrt2rR599FFdccUVev/99xUOh1vs9+CDD2rUqFHq0qWL+vbtq6KiIj3zzDOKRqOJfQYMGKARI0Ykgo4XXnhBEydO1MUXX6yDBw/q7bff1ksvvaRYLJaVQOTDDz+UJPXs2VNSQ5D0i1/8QiNGjFA4HFa/fv1UVFSkV199tUk727Jv3z7NmjVLffr0UY8ePVRUVKRJkyZJUtq/A0DHkSMCBMTYsWMTs2auvvpqTZgwQf/yL/+i3bt3J3ocVq5cqVmzZunqq6/Wbbfdpv79+ys/P18VFRVNklolacKECVq3bp0+/vhjbd26VQsXLtTIkSPVq1cvvfDCC3r99dfVo0cPnXvuuR1ue2Vlpfr376/CwkJJ0l133aXbb79dX//61/XjH/9Yffr0UV5enr7zne8oFoul/H319fWaOnWqjhw5onnz5umMM85Q9+7ddeDAAc2aNSut3wEgOwhEgACKBxeXXHKJfvOb32j+/PmSpEcffVTDhg3TY489plAolNh/0aJFLX7HxIkTtXz5cq1atUr19fUaP3688vLyNGHChEQgMn78eOXn53eorRs3btSePXuaTO199NFHdckll+iBBx5osu/Ro0fVr1+/xNeN/w+N7dy5U3//+9/14IMP6mtf+1pie+OEWAC5wdAMEFCTJ0/W2LFj9ctf/lInTpyQpETQ4DhOYr+XX35ZGzdubPHz8SGXJUuWaNSoUYpEIont69at0yuvvNLhYZl33nlHs2bNUkFBgW677bbE9vz8/CZtlBpmwTSvFNu9e3dJDQFKY639Px3H0T333NOh9gLIHD0iQIDddtttuvbaa7VixQrddNNN+tKXvqTHHntM11xzjb74xS+qqqpK9913n8rKyhJ5GnGnnXaaiouLtXv3bn37299ObL/44os1b948ScooENm2bZtWrlypWCymo0ePasuWLfrzn/+sUCik//zP/0xMCZakL33pS7rjjjt04403avz48dq5c6f+8Ic/aNiwYU1+5/Dhw9WrVy/dd9996tmzp7p3765x48bpjDPO0PDhw/X9739fBw4cUGFhof785z/rgw8+aM9hBNARns7ZAeC6+PTdLVu2tPhefX29M3z4cGf48OHOp59+6sRiMeeuu+5yhgwZ4oTDYefcc891nn76aWfmzJnOkCFDWvz8tdde60hyHn744cS2kydPOt26dXMKCgqcjz/+OGX74tN3469OnTo5ffr0ccaNG+csWLCg1am0J06ccL73ve85JSUlTteuXZ2LLrrI2bhxozNp0iRn0qRJTfZ98sknnbKyMqdTp05NpvLu2rXLmTJlitOjRw+nX79+zuzZs52//e1vSaf7AnBHyHGa9W8CAADkCDkiAADAMwQiAADAMwQiAADAMwQiAADAMwQiAADAMwQiAADAM0YXNIvFYjp48KB69uyZtFQzAAAwi+M4OnbsmAYOHJhYKTsZowORgwcPqrS01OtmAACAdti/f78GDRrU5j5GByLxJb/379+fWHUTAACYrba2VqWlpYn7eFuMDkTiwzGFhYUEIgAAWCadtAqSVQEAgGcIRAAAgGcIRAAAgGcIRAAAgGcIRAAAgGcIRAAAgGcIRAAAgGcIRAAAgGeMLmgGf6qPOdpcdUSHjp1Q/55dNHZoH+XnsZYQAAQRgUgj3CDdt6ayWotX71J19ERiW0mkixZNL9O0kSUetiw1zo/c4ni7j2OcWxzv1rkaiCxdulRLly7V3r17JUlnnXWWFi5cqMsvv9zNt22X/3q1Wj98slJHjp9MbDP9BmnbSb2mslpzVm6T02x7TfSE5qzcpqU3nGfssbYxgLLt/GjMxuNtG45xbnG8kws5jtP8vpA1q1evVn5+vkaMGCHHcfTggw/q7rvv1vbt23XWWWel/Pna2lpFIhFFo1FX15q585ldWvZCVavfC0lG3iBtO6nrY44mLFnfpL2NhSQVR7roxXmXGnezTBZAxVvJ+ZFd//Vqtb71x20ttpt8vG1j4zltsyAe70zu364mq06fPl1XXHGFRowYoc997nO688471aNHD23atKnV/evq6lRbW9vk5bY7n3ktaRAiSY6kxat3qT7mWryWsfhJ3fymHu9ZWFNZ7VHLkttcdSRpECI1HOfq6AltrjqSu0aloT7maPHqXS0uIJIS2zg/sue/Xj2omx9qGYRI5h5v29h4TidTH3O0cc9hPbnjgDbuOWxkm/10vN2Ss1kz9fX1WrVqlY4fP67y8vJW96moqFAkEkm8SktLXW3Tf716UMte2JtyP5NukLae1IeOJQ9C2rNfrtgWQNl6fkgNAdS3/rhdbTXNtONto3TP6U17DueuUe2wprJaE5as14xlm3TLqh2asWyTJixZb1ygbds1xAuuByI7d+5Ujx49FA6HddNNN+nxxx9XWVlZq/suWLBA0Wg08dq/f79r7aqPOfrhk5Vp7792V41rbcmErSd1/55dsrpfrtgWQNl6fsQDqHSZcrxtlO6xm/tHc3vPbOr1s+0a4gXXA5HTTz9dO3bs0Msvv6w5c+Zo5syZ2rWr9QtOOBxWYWFhk5dbNlcd0ZHjn6S9/5M7DhrxFGnrST12aB+VRLooWfZHSA05DGOH9slls1KyLYCy9fxIFUA1Z8rxtlG6x+7ox58Yd1OX7Ov1s+0a4gXXA5GCggKddtppGjNmjCoqKjR69Gjdc889br9tSpleiA8fP2nEU6StJ3V+XkiLpjf0hDUPRuJfL5peZlyiqm0BlK3nRyafR5OOt2RHnkJjqc7p5ky6qUv29frZdg3xQs4rq8ZiMdXV1eX6bVtoz4XYhKdIm0/qaSNLtPSG81QcaXrsiyNdjM0aty2AsvX8yOTzeOXoEmOOty15Co01PqdTMe2mLtnX62fbNcQLrgYiCxYs0PPPP6+9e/dq586dWrBggZ577jldf/31br5tWuIX7EyY8BRp+0k9bWSJXpx3qR6afaHu+eo5emj2hXpx3qVGBiFxNgVQbZ0fUsON5YqRxdpcdcSop9xMntJ/93yVETd6m/IUmouf0726dk5rf1Nu6pKdvX42XUO84GodkW984xtat26dqqurFYlENGrUKM2bN09Tp05N6+fdriOSbG53a3p166ytP5xqzA3e5joRNmlcFKxf97AUkt7/sM74AmGtFegLSU3O9eLCsH505VnGnC/pfh5NqDljc12cxl56631df//LKfd7aPaFKh/eNwctSi1+7GuiJ1o9V0w+9jYXGcxUJvdvVwORjspFQbPWbujJ3GdY5Bqkk9oLtgZ7mZzTklnn9ZrKav3g8Z1pJZJ7eXPcuOewZixrvR5SYybdwFtj6009HrRKTYNrPxcIs40xBc1sMLWsWD/7ymh9a/IwdemU/HCEZF7SVn5eSOXD++qqc05R+fC+Rl0obGdrt3uydrdl/mM7jTmvp40s0e1fSl11WfJ2uMC2PIVkbB3qZajDXwK96F0mT46Nk7ZMfsJBx6WaHhgPSqeWFRt1gW6r3W05+tEn2rTnsC4a0c+VdmWquND8HAAb8xSSid/Um18Liw3v/Zs2skRTy4rpFfaBwAYimeSHNGb6Ew46LpPpgSYFpZnW4mhs49vvGxOIxBNXUw0XeDnzx4Y2ZsKWm3prw9EmfQbRPoEMRNr75CjZ8YSDjrG1271j7THnhhMfLpizcluLBFtThgtsaGOm4kO9prI1ZwupBTJHpD1PjqbWX0D22drt3pH2mHYDsiEHwIY2+oWtOVtITyB7RDJ9crT1CQftY2u3e6p2J9O7W2ddOMysQESyY7jAhjbaztacLaQvkD0imT458oQTLLbOJEhVzCyZii+fbdz/Jc6GmWE2tNFmtpV0R+YCGYikU8WxT/fO+sV1dlT+RPbZ2u2erN29unVWr25Nq2iWRLoYVUMEaI2tOVtIXyCHZtJJNLvrmrO5QAecrd3uydotybr/C2BrzhbSF8hARLJ37jxyy/SZBMkka7eN/xcE2wfHUy+SykQCuwU2EJHsfeIFgCCojzn68TOvp9zv9i+al7OF9AU6EJHsfeIFAL9Lt9RC7+4FOWgN3BL4QARoLxYdBNxFomowEIgA7UCVR8B9JKoGQyCn7wIdQZVHIDdSlVqg4rU/EIgAGUhV5VFqqPJYH2vPSkYAGrO1uCAyQyACZIAqj0Bu2VpcMB31MUcb9xzWkzsOaOOew4F9gCFHBMgAyXNA7vmx1AJ5Zp8hELEMMzW8RfIc4A0/lVqI55k17/+I55nZ3tOTKQIRixBBe8/WlXkBmIHVhFsiR8QSzNQwA8lzADqCPLOWCEQswEwNs/g5eQ6Au8gza4mhGQtkEkH7ZQzVdH5MngPgPvLMWiIQsQARtJn8lDwHIDfIM2uJoRkLZBpBMzcdAMxEnllL9IhYIJMImpk1AGC2eJ5Z82t1cUCv1SHHcYx9XK6trVUkElE0GlVhYaHXzfFUfNaMpCbBSDxmXnrDeZLU6tz0xvsE7QQHAFP5uS5UJvdvhmYskWqmxtSyYmbWAIBF4nlmV51zisqH9/VNEJIphmYs0tZMjY17DjOzBkCb/PwEDnsRiKRg2gc32UwNZtYAaAv5YzAVgUgbbPrgMjcdQDKsbQKTkSOShG0l1eMza5L11YTUEEQFaW46ACozw3wEIq2w8YPL3HQArWFtE5iOQKQVtn5wWQMl9ygeB9ORPwbTkSPSCps/uKatgWJasm822ZRDhOAifwymIxBphe0fXFPWQPHzjZrkP9iCtU1gOoZmWkHiZ8fZluybCRtziJpjSCk4yB+D6QIZiKS6CPPB7Rg/3KjbYmsOUdyaympNWLJeM5Zt0i2rdmjGsk2asGS91cEh2kb+GEwWuKGZdIcL4h/cHz31mmpq6xLbBxSG9aMrz+KD24ZMbtQmDCFlyuYcIoaUgsu0/DEgLlA9Iu0bLkjWJ4JkbL5Rp8PWHCK/91QhNdY2gYkCE4hkehGOBy01tU1vlu/W2p/j4DZbb9TpsjWHyPYhJQD+FJhAJJOLME+OHWPrjTpdtuYQ+b2nCoCdAhOIZHIR5smxY2y9UWfCxuQ/v/dU5RKzjoDsCUyyaiYXYZ4cOy5+o26eGFzskzoikn3Jf9STyA4/18cBvBCYQCSTi3C6PR08ObbNtht1e5hSPC4d8Z6qOSu3KSQ1+Rz4pafKbcw6ArLP1aGZiooKXXDBBerZs6f69++vq6++Wrt373bzLZPKZLjA7zkOuUSWvllsHFIyBbljgDtc7RHZsGGD5s6dqwsuuECffvqpfvCDH+gLX/iCdu3ape7du7v51q1Kd7iAJ0f4WRB6qtzg9/o4gFdcDUTWrFnT5OsVK1aof//+2rp1qy6++OIW+9fV1amu7rPiYbW1tVlvU7oX4SDkOCC4bBpSMgW5Y4A7cpojEo1GJUl9+rQ+pFFRUaHFixe73o50L8I8OQKIY9YR4I6Q4zg5GdCMxWK68sordfToUb344out7tNaj0hpaami0agKCwtz0UwAaFV9zNGEJetTJry/OO9SHlYQeLW1tYpEImndv3NWR2Tu3LmqrKzUqlWrku4TDodVWFjY5AUAJghCfRzACzkJRG6++WY9/fTTevbZZzVo0KBcvCUAZB2zjoDsczVHxHEcffvb39bjjz+u5557TkOHDnXz7XyrPuaQpwIYgtwxILtcDUTmzp2rP/7xj3ryySfVs2dP1dTUSJIikYi6du3q5lv7RkeqOBLAAO5g1hGQPa4mq4ZCrd/0li9frlmzZqX8+UySXfwoWRXH+FFtqyuYMtQAAK8Yk6zqOE6rr3SCkKDrSBXHeADTvPhSvAz1msrq7DcYAIB2CMzqu7Zp7wrAlKEGANiEQMRQ7a3i2N4ABgAALxCIGKq9VRwpQw0AsAmBiKHauwIwZagBADYhEDFUe6s4tjeAAQDACwQiBmtPFUfKUAMAbJKzRe/aI+h1ROLaU5iMOiK5RfE4APhMJvdvAhEf4+aYGwR9ANAUgQiQIx2pfgsgOR6k7JbJ/dvVtWYAP0tVPC6khuJxU8uKuYACGaCXMVhIVgXaieJxQPaxREXwEIgA7UTxOCC7WKIimAhEgHaieByQXfQyBhM5IkA7xYvH1URPtPoEF1JDzReKxwHpyVYvI4mudiEQAdopXjxuzsptCklNghGKxwGZy0YvI4mu9mFoBuiA9lS/BdC6ji5RQaKrnegRATpo2sgSTS0rpisY6KCO9DIynd5e9IgAWZCfF1L58L666pxTVD68Lxc6oJ3a28tIoqu96BEBABilPb2MTKe3F4EIAMA48V7GdDGd3l4MzQAArNfRRFd4h0AEAGC9eKKrpBbBCNPpzUYgAgDwBabT24kcEQCAbzCd3j4EIgAAX8k00RXeYmgGAAB4hkAEAAB4hkAEAAB4hhwRIEtYehwAMkcgAmQBS48DQPswNAN0EEuPA0D7EYgAHZBq6XGpYenx+lhrewAACESADmDpcQDoGAIRoANYehwAOoZABOgAlh4HgI4hEAE6gKXHAaBjCESADmDpcQDoGAIRoINYehwA2o+CZkAWsPQ4ALQPgQiQJSw9DgCZY2gGAAB4hkAEAAB4hkAEAAB4hkAEAAB4hkAEAAB4xtVA5Pnnn9f06dM1cOBAhUIhPfHEE26+HQAAsIyrgcjx48c1evRo3XvvvW6+DQAAsJSrdUQuv/xyXX755W6+BQAAsJhRBc3q6upUV1eX+Lq2ttbD1gAAALcZlaxaUVGhSCSSeJWWlnrdJAAA4CKjApEFCxYoGo0mXvv37/e6SQAAwEVGDc2Ew2GFw2GvmwEAAHLEqEAETdXHHFZzBQD4mquByIcffqi33nor8XVVVZV27NihPn36aPDgwW6+tfXWVFZr8epdqo6eSGwriXTRoullmjayxMOWAQCQPSHHcRy3fvlzzz2nSy65pMX2mTNnasWKFSl/vra2VpFIRNFoVIWFhS600ExrKqs1Z+U2Nf/DxPtClt5wXiCCEXqEAMBOmdy/Xe0RmTx5slyMc3ypPuZo8epdLYIQSXLUEIwsXr1LU8uKfX1TpkcIAILBqFkzkDZXHWly823OkVQdPaHNVUdy16gci/cINT8ONdETmrNym9ZUVnvUMgBAthGIGObQseRBSHv2s02qHiGpoUeoPkZPGwD4AYGIYfr37JLV/WxDjxAABAuBiGHGDu2jkkgXJcv+CKkhV2Ls0D65bFbOBL1HCACChkDEMPl5IS2aXiZJLYKR+NeLppf5NlE16D1CABA0BCIGmjayREtvOE/FkaY32+JIF99P3Q16j5BX6mOONu45rCd3HNDGPYfJwfEB/qawBZVVDTVtZImmlhUHro5GvEdozsptCklNklaD0CPkBaZK+w9/U9iEHhFDBbmYV5B7hHKNqdL+w98UtnG1smpHBbmyKk8zwQ7GcqE+5mjCkvVJZymF1BD8vTjvUo67JfibwhSZ3L/pETEMTzOfyc8LqXx4X111zikqH96XC2eWMVXaf/ibwkYEIgahmBdyianS/sPfFDYiEDEITzPIJaZK+w9/U9iIQMQgPM0gl5gq7T/8TZEJU6Z4M33XIDzNIJeYKu0//E2RLpMmRdAjYhCeZpBrTJX2H/6mSMW0SRFM3zVM/ASRWn+a4UICNzBV2n/4m6I1uZrincn9m6EZw8SfZpp3mRUHsI4Icic+VRr+wd8UrclkUkSuzh8CEQMFtbw7AMBdJk6KIBAxFE8zAIBsM3FSBMmqAAAEhImTIghEAAAIiPgUb0ktghGvpngTiCBrTCmOAwBIzrQp3uSIICtMKo4DAGibSZMiqCOCDovXPml+IlH7xC7UnQCQLdQRQc6kWjE4pIYVg6eWFXNTMxg9WgC8Qo4IOoQVg+1nWrlnAMFCIIIOMbE4DtKXqkdLaujRIvEYgFsIRNAhJhbHQfro0QLMFKRZiOSIoEPixXFqoidafaqOL6DEisFmokcLME/QcrboEUGHmFgcB+mjRwswSxBztghE0GGmFcdB+kws9wxkk01DHEHN2WJoBllhUnEcpC/eozVn5TaFpCYXQHq0YDvbhjgyydny06Ko9Igga+IrBl91zikqH96Xm5cl6NGCH9k4xBHUnC16RADQowVfsbXQYlBztghEAEj6rEcLsJ2tQxxBnYXI0AwAwFdsHeII6ixEAhEAgK+kO3Sx9/2PXG5J5oKYs8XQDADAV8YO7aPiwrBqauva3G/Vln26+dLTjOthCFrOFoEIAq0+5gTmww4ERX5eSDPGDtYv/ufNNvczMU8kLkg5WwQiAcJNtynbagzkAucI/OLUft3T2s+0PJEgIhAJCG66TcVrDDTPTI/XGPDrWGxbOEfgJ0GdCmsjklUDwMbCPm4KahnltnCOwG9YvsAeBCI+x023pUxqDAQB5whMkO01YYI6FdZGDM34nK2Ffdxka40Bt3COwGtuDQvGp8I2/93FDDkahUDE57jptsTYcVOcI/CS2/laQZsKa6OcDM3ce++9OvXUU9WlSxeNGzdOmzdvzsXbQtx0W8PYcVOcI/BKroYFWZDTbK4HIg8//LBuvfVWLVq0SNu2bdPo0aN12WWX6dChQ26/NcRNtzWMHTfFOQKvkK8FKQeByM9//nPNnj1bN954o8rKynTfffepW7du+v3vf+/2W0PcdJMJYhnlZDhH4BWGBSG5nCNy8uRJbd26VQsWLEhsy8vL05QpU7Rx48YW+9fV1amu7rOSvLW1tW42LzBI2GodY8ef4RyBFxgWhORyIPL++++rvr5eAwYMaLJ9wIABeuONN1rsX1FRocWLF7vZpMDiptu6IJVRToVzBLkW1GXv0ZRRs2YWLFigW2+9NfF1bW2tSktLPWyRv3DTRSqcI8il+LDgnJXbFJKaBCMMCwaHqzki/fr1U35+vt59990m2999910VFxe32D8cDquwsLDJCwD8KNsFvGxFvhZc7REpKCjQmDFjtG7dOl199dWSpFgspnXr1unmm292860BwFis69MUw4LB5vrQzK233qqZM2fq/PPP19ixY/XLX/5Sx48f14033uj2WwOAcVhwsXUMCwaX64HIddddp/fee08LFy5UTU2NzjnnHK1Zs6ZFAisA+F2qAl4hNRTwmlpWTG8AAiPkOI6xA5O1tbWKRCKKRqPkiwCw3sY9hzVj2aaU+z00+0J6B2C1TO7frL4LADlCAS+gJQIRAMgRCngBLRGIAECOsK4P0BKBCADkCOv6AC0RiABADlHAC2jKqBLvQDL1MYdiR/ANCngBnyEQgfGoQgk/ooAX0IChGRgtXoWycRAifVaFck1ltUctAwBkA4EIjJWqCqXUUIUyqIuFAYAfEIjAWJurjrToCWnMkVQdPaHNVUdy1ygAQFYRiMBYVKEEAP8jEIGxqEIJAP5HIAJjUYUSAPyPQATGogolAPgfgQiMRhVKAPA3CprBeFShBAD/IhCBFahCCQD+xNAMAADwDIEIAADwDIEIAADwDIEIAADwDIEIAADwDLNmAACBUB9zKANgIAIRAIDvrams1uLVu5qs6F0S6aJF08sojOgxhmYAAL62prJac1ZuaxKESFJN9ITmrNymNZXVHrUMEoEIAMDH6mOOFq/eJaeV78W3LV69S/Wx1vZALhCIAC6qjznauOewntxxQBv3HOZiB+TY5qojLXpCGnMkVUdPaHPVkdw1Ck2QIwK4hDFpwHuHjiUPQtqzH7KPHhHABYxJ242eLP/o37NL6p0y2A/ZR48IkGWpxqRDahiTnlpWzNRBA9GT5S9jh/ZRSaSLaqInWv1MhiQVRxqm8sIb9IgAWcaYtL3oyfKf/LyQFk0vk9QQdDQW/3rR9DIeCjxEIAJkGWPSdmJ2hX9NG1mipTecp+JI0+GX4kgXLb3hPHq6PMbQDKxhS1VExqTtlElPVvnwvrlrGLJi2sgSTS0rtuIaEjQEIrCCTeP2jEnbiZ4s/8vPCxFEGoihGRjPtnF7xqTtRE9WZphZhGyhRwRGs3UGSnxMunkvTrGhvTigJysTNvVQwnwEIjCazeP2jEnbJd6TNWflNoWkJsEIPVmfifdQNg/W4j2UJH8iUwzNwGi2j9vHx6SvOucUlQ/vG/ibmOmYXdE2ZhbBDfSIwGiM2yPX6MlKzuYeSpiLQARGY9weXmB2Rets76GEmRiagdGYgQKYgx5KuIFABMZj3B4wQ7yHMlnYH1LD7Bl6KJEJhmZgBcbtAe8xswhuCDmOY2x6c21trSKRiKLRqAoLC71uDgBA1BFBapncv+kRAQBkhB5KZJNrgcidd96pZ555Rjt27FBBQYGOHj3q1lsBAHKMmUXIFteSVU+ePKlrr71Wc+bMcestAACA5VzrEVm8eLEkacWKFW69BQAAsJxROSJ1dXWqq6tLfF1bW+thawAAgNuMqiNSUVGhSCSSeJWWlnrdJMAILLkOwK8yCkTmz5+vUCjU5uuNN95od2MWLFigaDSaeO3fv7/dvwvwizWV1ZqwZL1mLNukW1bt0IxlmzRhyXqtqaz2umkA0GEZDc1873vf06xZs9rcZ9iwYe1uTDgcVjgcbvfPA37DkusA/C6jQKSoqEhFRUVutQVAI6mWXA+pYcn1qWXF1G8AYC3XklX37dunI0eOaN++faqvr9eOHTskSaeddpp69Ojh1tsCvsGS6wCCwLVAZOHChXrwwQcTX5977rmSpGeffVaTJ092620B32DJdQBB4NqsmRUrVshxnBYvghAgPSy5DiAIjJq+C+AzLLkOIAgIRABDxZdcl9QiGGHJdTRHrRnYyqjKqgCamjayREtvOK/FkuvFLLmORtZUVrc4R0o4R2CJkOM4xobNtbW1ikQiikajKiws9Lo5gGfqYw5LrqNVyWrNxM8Oas3AC5ncv+kRASzAkutoDbVm4AfkiACApTKpNQOYikAEACxFrRn4AYEIAFiKWjPwAwIRALAUtWbgBwQiAGApas3ADwhEAMBi8VozxZGmwy/FkS5M3U2C4m9mYfouAFhu2sgSTS0rptZMGij+Zh4KmgEAAoHib7mTyf2boRkAgO+lKv4mNRR/Y5gm9whEAAC+R/E3cxGIAAB8j+Jv5iIQAQD4HsXfzEUgAgDwvXjxt7ZQ/M0bBCIAAN/LzwvpytFtz4i5cnQJU549QCACAPC9+pijp/5W3eY+T/2tmlkzHiAQAQD4XqpZMxKzZrxCIAIA8D1mzZiLEu9ol/qYQzlpANZg1oy5CESQMdZqAGCb+KyZmuiJVqurhtSwUCCzZnKPoRlkJL5WQ/Ox1proCc1ZuU1rKttOBgMAL+TnhbRoepmkz9aWiYt/vWh6GT27HiAQQdpYqwGAzaaNLNHSG85TcbN6IsWRLix45yGGZpC2TNZqKB/eN3cNA4A0TRtZoqllxeS4GYRABGkj6xyAH+TnhXhYMghDM0gbWecAgGwjEEHa4lnnyTowQ2KtBgBAZghEkDayzgEA2UYggoyQdQ4AyCaSVZExss4BANlCIIJ2IescAJANDM0AAADPEIgAAADPEIgAAADPEIgAAADPEIgAAADPEIgAAADPMH034OpjDvVAAACeIRAJsDWV1Vq8epeqo5+tllsS6aJF08uokIoEglUAbiIQCag1ldWas3KbnGbba6InNGflNsq1QxLBKgD3kSMSQPUxR4tX72oRhEhKbFu8epfqY63tgaCIB6uNgxDps2B1TWW1Ry0D4CcEIgG0uepIi5tLY46k6ugJba46krtGwSgEqwByxbVAZO/evfrGN76hoUOHqmvXrho+fLgWLVqkkydPuvWWSNOhY8mDkPbsB/8hWAWQK67liLzxxhuKxWL67W9/q9NOO02VlZWaPXu2jh8/rp/97GduvS3S0L9nl6zuB/8hWLUDicTwA9cCkWnTpmnatGmJr4cNG6bdu3dr6dKlBCIeGzu0j0oiXVQTPdFq13tIUnGk4aKGYCJYNR+JxPCLnOaIRKNR9emT/OZWV1en2traJi9kX35eSIuml0lqCDoai3+9aHoZT1YuqI852rjnsJ7ccUAb9xw2NsciHqwmOwNCarjpEax6g0Ri+EnOApG33npLv/71r/Vv//ZvSfepqKhQJBJJvEpLS3PVvMCZNrJES284T8WRpk+0xZEuTN11yZrKak1Ysl4zlm3SLat2aMayTZqwZL2RNw2CVXORSBxstjzMZCLkOE5G/4v58+dryZIlbe7z+uuv64wzzkh8feDAAU2aNEmTJ0/W/fffn/Tn6urqVFdXl/i6trZWpaWlikajKiwszKSZSFOmY8yMSbdPsrot8SNnavBH9795Nu45rBnLNqXc76HZF6p8eN8ctAi5YtPnsba2VpFIJK37d8aByHvvvafDhw+3uc+wYcNUUFAgSTp48KAmT56sCy+8UCtWrFBeXvqdMJn8R+A+mz4EzXkZQNXHHE1Ysj7pLJR4Ts6L8y41Mqgj+DTLkzsO6JZVO1Lud89Xz9FV55zifoOQE7Y9zGRy/844WbWoqEhFRUVp7XvgwAFdcsklGjNmjJYvX55REAKz2FyJ1esAKpOpsCY+webnhYxsV1CRSBw8qYbjQmoYjptaVmzlQ4JrkcGBAwc0efJkDR48WD/72c/03nvvqaamRjU1NW69JVxi85i0CUl9TIVFNpFIHDx+r+vjWiCydu1avfXWW1q3bp0GDRqkkpKSxAt2sfVDYEoAxRMssolE4uDx+8OMa4HIrFmz5DhOqy/YxdYPgSkBFE+wyDZmvQWL3x9mWH0XKdn6ITAlgIo/wc5ZuU0hqUkPDU+waK9pI0t06RkD9J8b9+qdIx9pSJ9u+v/KT1VBJ3Lx/MbvRSg5Y5GSrU/0JgVQPMEi29ZUVmvS3c/qx8+8rv+38R39+JnXNenuZ42sS4OO8ftwXMbTd3OJ6bvmiCd9Sq0/0Zt4M41Pm031FJHLabNMhUUq6Zwjtk3lRHZ4PQMwE67WEcklAhGz2PQhiLMxgEJwpfMZs70uDTrGlocZAhG4xpYPQWM2BlAInnR7OaisChu4WtAMwWZjcatpI0s0tazYugAKwZFJwSpTkrCBbCEQQSDYGEAhODKZam5SEjaQDcyaAQCPZdLLYessNiAZApEs8+MSzQDclUkvh9+nciJ4GJrJIpIiATt5nYSdqmCV1LSXI16Xpvn1ppjrDSzErJksYV4/YCdTHiCSXUPi/u3ioVpwRVmTbV4HUEAymdy/GZrJAlMWVwOQGRNWZ46bNrJE37x4aNLv/+75qhbtiSdhX3XOKSof3pcgBFYiEMkCUxZXA5A+0x4g6mOOnvpb24FP4/aQjwa/IEckC5jXD9gnkweIXEz9zqQ90Y9PGjGclCmGktAaApEsYF4/YB/THiDSfZ+1u2q0/KW9LXpy4sNJpuajmZKLA/MwNJMFzOsH7GPaA0S67/PEjoPGDCely6RcHJiHQCQLmNcP2Me0B4h02tOne2cdOX4y6e8wMR/NtFyc5si18R6BSJbE5/UXR5o+1RRHuhjbVQoEmWkPEI3bk8w155yS1u8yKR/N5GT+NZXVmrBkvWYs26RbVu3QjGWbNGHJenpocowckSxicTXALqYVBotP4V32QpUaP5jnhaTZE4dq8ukD9MBLe1P+HpPy0UzLxYlLVrfF9FwbPyIQyTIWVwPsYtIDxJrKav3u+aoWN0fHaagjMnpQrzYrsIbUEESZlI9mWi6OlNlqxzxIuo+hGQCBZ0JhsHRyKX78zOu6/YvmDCelw7RcHMns4aIgIhABAAOke3Ps3b3Aqnw003JxJHOHi4KKoRkAMEAmN8erzjnFmOGkdJiWi2PicFGQEYgAgAEyvTnalo9mUi5OqtWOTcy18TOGZgDAACbmUmSbCbk48XaYNlwUZAQiAGAAv98cTSscRu0nc4QcxzG2jFxtba0ikYii0agKCwu9bg4AuM6Pa7KY/H9iIT53ZHL/JhBxCSc3gPby0/UjWeGw+P+G3gd/yuT+TbKqC0yO/gGYz7ZE1GQoHIZ0kCOSZawymXumjT0DaEDhMKSDHpEsIvrPPXqfAHNROAzpoEcki4j+c4veJ8BsFA5DOghEsojoP3fSWZdj8epdDNMAHgpCbRR0HIFIFvkh+rcl34LeJ8B8fq+N4jVbrtepkCOSRbaXDbYp34LeJ2TCT9NhbWPaOjN+YdP1OhUCkSyKR/9zVm5TSGoSjJge/Seb6x/PtzBtrr8fep8kO2+QtrXZTxdsW5m0zowf2Ha9ToWCZi6w7cJXH3M0Ycn6pEMd8Z6cF+ddasyFI97mVL1PJrW5OdvOE8m+NlNMC35jy/U6k/s3OSIumDayRC/Ou1QPzb5Q93z1HD00+0K9OO9SYy94NuZb2D72bOOMH9vaTEIz/MjG63UqBCIuMWWVyXTYmm9h66JVNt4gbWyzHy/YtvJLUqUJbL1et4UcEVidb2Hj2HMmN0hTynzb2GY/XrBt0TiPaO/7H+mhzftUU2vHcJ7pbL5eJ0MggpSzfSSpV7fOxs72sW1dDhtvkDa22Y8XbBu0lkfUnK1JlSawfXZmaxiaQSLfoq3O0qMffaK1u2py1iY/s/EGaWOb4xfsVD44fjIHrQmGZHlEzZk6nGcD2/PjWkMgAknS1LJi9erWOen34+vkcNHoOBurTdrY5vy8kG7/4pkp9/vxM5zX2dBWHlFryNFpP1vz45JhaAaSGnIAjn70SdLvm5gDkIzpdS5srDdjY5slqXf3cMp9OK+zI1UeUTImDefZxMb8uGQIRCDJzhyA1thS58LGapM2tjnd83XtrhqjAxEbzuv2XhtMGs6zjW35ccm4GohceeWV2rFjhw4dOqTevXtrypQpWrJkiQYOHOjm26IdbMwBaM62aoM2PtHY1uZ0z9ffv7RXY4f2Mer8iLPlvM702mBjUiXc4WqOyCWXXKI//elP2r17t/785z9rz549+spXvuLmW6KdbMwBaMzGOheSXfVm4mxqc7oJq6bmQNl0Xqe6hjRm8nAecs/VQOS73/2uLrzwQg0ZMkTjx4/X/PnztWnTJn3ySfJcBHjD9kxsilehNY3P67aYen7YdF63dQ1pztakSrgjZzkiR44c0R/+8AeNHz9enTu3Pjujrq5OdXV1ia9ra2tz1TzIzhyAOL/kuCD7po0s0TcuOlUPvLQ35b6mnR+2nddJryGFYc0YO1in9utu/HAecs/1QGTevHn6zW9+o48++kgXXnihnn766aT7VlRUaPHixW43CW2wLQcgzg85LnDPlLLitAIR084PG89rW68h8E7GQzPz589XKBRq8/XGG28k9r/tttu0fft2/fWvf1V+fr6+9rWvKdmCvwsWLFA0Gk289u/f3/7/GdrNphyAONtzXOAuW88PW9tt4zUE3gk5yaKCJN577z0dPny4zX2GDRumgoKCFtv/8Y9/qLS0VP/7v/+r8vLylO+VyTLCQHx2gdR6nQvGpIPN1vPD1nYj2DK5f2c8NFNUVKSioqJ2NSwWi0lSkzwQIFtsznGB+2w9P2xtN5CujHtE0vXyyy9ry5YtmjBhgnr37q09e/bo9ttv17vvvqvXXntN4XDqiof0iKA9TK9ACW/Zen7Y2m4Ek6s9Iunq1q2bHnvsMS1atEjHjx9XSUmJpk2bph/+8IdpBSFAe/ml2iDcYev5YWu7gVRcC0TOPvtsrV+/3q1fDwAAfIDVdwEAgGcIRAAAgGcIRAAAgGcIRAAAgGcIRAAAgGcIRAAAgGcIRAAAgGcIRAAAgGdcK2iWDfHq87W1tR63BAAApCt+305nFRmjA5Fjx45JkkpLSz1uCQAAyNSxY8cUiUTa3Me1Re+yIRaL6eDBg+rZs6dCoewu7lRbW6vS0lLt37+fBfVawfFJjWPUNo5PahyjtnF82mby8XEcR8eOHdPAgQOVl9d2FojRPSJ5eXkaNGiQq+9RWFho3B/QJByf1DhGbeP4pMYxahvHp22mHp9UPSFxJKsCAADPEIgAAADPBDYQCYfDWrRokcLhsNdNMRLHJzWOUds4PqlxjNrG8WmbX46P0cmqAADA3wLbIwIAALxHIAIAADxDIAIAADxDIAIAADxDIAIAADwTyEDk3nvv1amnnqouXbpo3Lhx2rx5s9dN8szzzz+v6dOna+DAgQqFQnriiSeafN9xHC1cuFAlJSXq2rWrpkyZojfffNObxnqgoqJCF1xwgXr27Kn+/fvr6quv1u7du5vsc+LECc2dO1d9+/ZVjx499E//9E969913PWpxbi1dulSjRo1KVHYsLy/XX/7yl8T3g3xskvnJT36iUCik73znO4ltQT5OP/rRjxQKhZq8zjjjjMT3g3xsGjtw4IBuuOEG9e3bV127dtXZZ5+tV155JfF9m6/VgQtEHn74Yd16661atGiRtm3bptGjR+uyyy7ToUOHvG6aJ44fP67Ro0fr3nvvbfX7P/3pT/WrX/1K9913n15++WV1795dl112mU6cOJHjlnpjw4YNmjt3rjZt2qS1a9fqk08+0Re+8AUdP348sc93v/tdrV69Wo888og2bNiggwcP6stf/rKHrc6dQYMG6Sc/+Ym2bt2qV155RZdeeqmuuuoqvfbaa5KCfWxas2XLFv32t7/VqFGjmmwP+nE666yzVF1dnXi9+OKLie8F/dhI0gcffKCLLrpInTt31l/+8hft2rVL//Ef/6HevXsn9rH6Wu0EzNixY525c+cmvq6vr3cGDhzoVFRUeNgqM0hyHn/88cTXsVjMKS4udu6+++7EtqNHjzrhcNh56KGHPGih9w4dOuRIcjZs2OA4TsPx6Ny5s/PII48k9nn99dcdSc7GjRu9aqanevfu7dx///0cm2aOHTvmjBgxwlm7dq0zadIk55ZbbnEch3No0aJFzujRo1v9XtCPTdy8efOcCRMmJP2+7dfqQPWInDx5Ulu3btWUKVMS2/Ly8jRlyhRt3LjRw5aZqaqqSjU1NU2OVyQS0bhx4wJ7vKLRqCSpT58+kqStW7fqk08+aXKMzjjjDA0ePDhwx6i+vl6rVq3S8ePHVV5ezrFpZu7cufriF7/Y5HhInEOS9Oabb2rgwIEaNmyYrr/+eu3bt08Sxybuqaee0vnnn69rr71W/fv317nnnqtly5Ylvm/7tTpQgcj777+v+vp6DRgwoMn2AQMGqKamxqNWmSt+TDheDWKxmL7zne/ooosu0siRIyU1HKOCggL16tWryb5BOkY7d+5Ujx49FA6HddNNN+nxxx9XWVkZx6aRVatWadu2baqoqGjxvaAfp3HjxmnFihVas2aNli5dqqqqKk2cOFHHjh0L/LGJe/vtt7V06VKNGDFC//3f/605c+bo3//93/Xggw9Ksv9a3cnrBgC2mDt3riorK5uMX0M6/fTTtWPHDkWjUT366KOaOXOmNmzY4HWzjLF//37dcsstWrt2rbp06eJ1c4xz+eWXJ/49atQojRs3TkOGDNGf/vQnde3a1cOWmSMWi+n888/XXXfdJUk699xzVVlZqfvuu08zZ870uHUdF6gekX79+ik/P79FxvW7776r4uJij1plrvgx4XhJN998s55++mk9++yzGjRoUGJ7cXGxTp48qaNHjzbZP0jHqKCgQKeddprGjBmjiooKjR49Wvfccw/H5v9s3bpVhw4d0nnnnadOnTqpU6dO2rBhg371q1+pU6dOGjBgAMepkV69eulzn/uc3nrrLc6h/1NSUqKysrIm284888zEEJbt1+pABSIFBQUaM2aM1q1bl9gWi8W0bt06lZeXe9gyMw0dOlTFxcVNjldtba1efvnlwBwvx3F088036/HHH9f69es1dOjQJt8fM2aMOnfu3OQY7d69W/v27QvMMWouFouprq6OY/N/Pv/5z2vnzp3asWNH4nX++efr+uuvT/yb4/SZDz/8UHv27FFJSQnn0P+56KKLWpQN+Pvf/64hQ4ZI8sG12uts2VxbtWqVEw6HnRUrVji7du1yvvnNbzq9evVyampqvG6aJ44dO+Zs377d2b59uyPJ+fnPf+5s377deeeddxzHcZyf/OQnTq9evZwnn3zSefXVV52rrrrKGTp0qPPxxx973PLcmDNnjhOJRJznnnvOqa6uTrw++uijxD433XSTM3jwYGf9+vXOK6+84pSXlzvl5eUetjp35s+f72zYsMGpqqpyXn31VWf+/PlOKBRy/vrXvzqOE+xj05bGs2YcJ9jH6Xvf+57z3HPPOVVVVc5LL73kTJkyxenXr59z6NAhx3GCfWziNm/e7HTq1Mm58847nTfffNP5wx/+4HTr1s1ZuXJlYh+br9WBC0Qcx3F+/etfO4MHD3YKCgqcsWPHOps2bfK6SZ559tlnHUktXjNnznQcp2Fa2O233+4MGDDACYfDzuc//3ln9+7d3jY6h1o7NpKc5cuXJ/b5+OOPnW9961tO7969nW7dujnXXHONU11d7V2jc+jrX/+6M2TIEKegoMApKipyPv/5zyeCEMcJ9rFpS/NAJMjH6brrrnNKSkqcgoIC55RTTnGuu+4656233kp8P8jHprHVq1c7I0eOdMLhsHPGGWc4v/vd75p83+ZrdchxHMebvhgAABB0gcoRAQAAZiEQAQAAniEQAQAAniEQAQAAniEQAQAAniEQAQAAniEQAQAAniEQAQAAniEQAQAAniEQAQAAniEQAQAAnvn/Ab5zIJd7FilVAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiIAAAGzCAYAAAASZnxRAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAACNk0lEQVR4nO29eXzcVb3//5qZZCb72mxtQtu0bG1paSt0EwqytLig9wJ6r3oteH8IXLiK4AJepYhLvS4obiB4pah8LwoKiFdAZLdQCi2lQNnadEnXpEmzL5PMfH5/1E9I0szM+5zPWZPzfDzm8WiTMzMnn/nMOe/zXl7vkOd5HhwOh8PhcDg0ENY9AYfD4XA4HBMXZ4g4HA6Hw+HQhjNEHA6Hw+FwaMMZIg6Hw+FwOLThDBGHw+FwOBzacIaIw+FwOBwObThDxOFwOBwOhzacIeJwOBwOh0MbzhBxOBwOh8OhDWeIOByS2blzJ0KhENauXat7Kg4C06ZNw8UXXyz0NS+++GJMmzZN6Gs6HOMFZ4g4HAFYu3YtQqEQXnrpJd1TkcaNN96IUCiEQ4cOMT933759uPHGG7F582bxEzOMifS3OhwiydI9AYdjvDN16lT09vYiOztb91SUs2/fPnz961/HtGnTcPLJJ+uejlTS/a133HEHksmknok5HIbjPCIOh2RCoRBycnIQiUR0TyUlPT09uqfARHd3t+4pMJGdnY1YLKZ7Gg6HkThDxOGQzFg5IhdffDEKCgqwd+9efOQjH0FBQQEqKirwhS98AYlEYsTzk8kkfvSjH2H27NnIyclBVVUVLrvsMhw+fHjEuAcffBAf+MAHMHnyZMRiMcyYMQPf+MY3jnq9M844A3PmzMHGjRtx+umnIy8vD1/5yleY/ib/NbZu3YozzzwTeXl5mDJlCr773e8OjXnqqadwyimnAAAuueQShEKho67DCy+8gJUrV6K4uBh5eXlYvnw51q1bN+K9/NDQ1q1b8fGPfxylpaV473vfO+I6NjQ0YMWKFcjPz8fkyZNx0003YXRj8e7ublx77bWoq6tDLBbD8ccfj+9///tHjRtNa2srvvCFL+Ckk05CQUEBioqKcN555+GVV14h/61j5YhQ5xMKhXDVVVfhgQcewJw5cxCLxTB79mw88sgjaeftcNiCM0QcDk0kEgmsWLEC5eXl+P73v4/ly5fjBz/4AW6//fYR4y677DJ88YtfxLJly3DLLbfgkksuwd13340VK1ZgYGBgaNzatWtRUFCAa665BrfccgsWLlyIG264Adddd91R793S0oLzzjsPJ598Mn70ox/hzDPPZJ7/4cOHsXLlSsybNw8/+MEPcMIJJ+DLX/4yHn74YQDAiSeeiJtuugkA8JnPfAa/+c1v8Jvf/Aann346AOCJJ57A6aefjo6ODqxevRrf/va30dbWhve9733YsGHDUe930UUXoaenB9/+9rdx6aWXjriOK1euRFVVFb773e9i4cKFWL16NVavXj00xvM8nH/++fjhD3+IlStX4uabb8bxxx+PL37xi7jmmmvS/p0NDQ144IEH8MEPfhA333wzvvjFL+LVV1/F8uXLsW/fPtLfOhrW+fz973/Hf/zHf+Bf/uVf8N3vfhd9fX244IIL0NLSknbuDocVeA6Hg5s777zTA+C9+OKLKcfs2LHDA+DdeeedQz9btWqVB8C76aabRoydP3++t3DhwqH/P/vssx4A7+677x4x7pFHHjnq5z09PUe992WXXebl5eV5fX19Qz9bvny5B8C77bbbSH/j6tWrPQBec3PzUa/x61//euhn/f39XnV1tXfBBRcM/ezFF1886m/3PM9LJpPescce661YscJLJpMj/obp06d755xzzlHv/6//+q9Hzc2/jv/5n/854rU/8IEPeNFodGjODzzwgAfA++Y3vzni+RdeeKEXCoW8bdu2Df1s6tSp3qpVq4b+39fX5yUSiRHP27FjhxeLxUZ8fqn+Vn+eU6dOHfo/y3wAeNFodMTPXnnlFQ+A95Of/OSo93I4bMN5RBwOjVx++eUj/n/aaaehoaFh6P/33nsviouLcc455+DQoUNDj4ULF6KgoABPPvnk0Njc3Nyhf3d2duLQoUM47bTT0NPTgzfffHPE+8RiMVxyySWB5l5QUIBPfvKTQ/+PRqM49dRTR8w/FZs3b8Y777yDj3/842hpaRn6u7q7u3HWWWfhmWeeOSq5c/S1Gs5VV1019G8/lBGPx/G3v/0NAPCXv/wFkUgEn/3sZ0c879prr4XneUNenLGIxWIIh48slYlEAi0tLSgoKMDxxx+PTZs2Zfxbx4J1PmeffTZmzJgx9P+5c+eiqKiIdK0dDtNxVTMOhyZycnJQUVEx4melpaUjcj/eeecdtLe3o7KycszX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HEZtba3U9ygqKjL+A9WJuz6pcdcmPe76pMddn/S465MaW65NJk+Ij0tWdTgcDofDoQ1niDgcDofD4dDGhDVEYrEYVq9ejVgspnsqRuKuT2rctUmPuz7pcdcnPe76pGa8Xhujk1UdDofD4XCMbyasR8ThcDgcDod+nCHicDgcDodDG84QcTgcDofDoQ1niDgcDofD4dCGM0QcDofD4XBoY0IaIj/72c8wbdo05OTkYNGiRdiwYYPuKWnhmWeewYc+9CFMnjwZoVAIDzzwwIjfe56HG264ATU1NcjNzcXZZ5+Nd955R89kNbBmzRqccsopKCwsRGVlJT7ykY/grbfeGjGmr68PV155JcrLy1FQUIALLrgABw8e1DRjddx6662YO3fukMLjkiVL8PDDDw/9fqJel1R85zvfQSgUwtVXXz30s4l8jW688UaEQqERjxNOOGHo9xP52vjs3bsXn/zkJ1FeXo7c3FycdNJJeOmll4Z+P57W5wlniPzud7/DNddcg9WrV2PTpk2YN28eVqxYgaamJt1TU053dzfmzZuHn/3sZ2P+/rvf/S5+/OMf47bbbsMLL7yA/Px8rFixAn19fYpnqoenn34aV155JdavX4/HHnsMAwMDOPfcc9Hd3T005vOf/zweeugh3HvvvXj66aexb98+/PM//7PGWauhtrYW3/nOd7Bx40a89NJLeN/73ocPf/jDeP311wFM3OsyFi+++CJ+8YtfYO7cuSN+PtGv0ezZs7F///6hx9///veh3030a3P48GEsW7YM2dnZePjhh7F161b84Ac/QGlp6dCYcbU+exOMU0891bvyyiuH/p9IJLzJkyd7a9as0Tgr/QDw7r///qH/J5NJr7q62vve97439LO2tjYvFot5//u//6thhvppamryAHhPP/2053lHrkd2drZ37733Do154403PADe888/r2ua2igtLfV++ctfuusyjM7OTu/YY4/1HnvsMW/58uXe5z73Oc/z3L2zevVqb968eWP+bqJfG8/zvC9/+cvee9/73pS/H2/r84TyiMTjcWzcuBFnn3320M/C4TDOPvtsPP/88xpnZh47duzAgQMHRlyr4uJiLFq0aMJeq/b2dgBAWVkZAGDjxo0YGBgYcY1OOOEEHHPMMRPqGiUSCdxzzz3o7u7GkiVL3HUZxpVXXokPfOADI64F4O4dAHjnnXcwefJk1NfX4xOf+AR2794NwF0bAPjTn/6E97znPbjoootQWVmJ+fPn44477hj6/XhbnyeUIXLo0CEkEglUVVWN+HlVVRUOHDigaVZm4l8Pd62OkEwmcfXVV2PZsmWYM2cOgCPXKBqNoqSkZMTYiXKNXn31VRQUFCAWi+Hyyy/H/fffj1mzZk346+Jzzz33YNOmTVizZs1Rv5vo12jRokVYu3YtHnnkEdx6663YsWMHTjvtNHR2dk74awMADQ0NuPXWW3Hsscfi0UcfxRVXXIHPfvazuOuuuwCMv/U5S/cEHA4buPLKK/Haa6+NiGNPdI4//nhs3rwZ7e3tuO+++7Bq1So8/fTTuqdlBI2Njfjc5z6Hxx57DDk5ObqnYxznnXfe0L/nzp2LRYsWYerUqfj973+P3NxcjTMzg2Qyife85z349re/DQCYP38+XnvtNdx2221YtWqV5tmJZ0J5RCZNmoRIJHJU9vXBgwdRXV2taVZm4l8Pd62Aq666Cn/+85/x5JNPora2dujn1dXViMfjaGtrGzF+olyjaDSKmTNnYuHChVizZg3mzZuHW265ZcJfF+BIeKGpqQkLFixAVlYWsrKy8PTTT+PHP/4xsrKyUFVVNeGv0XBKSkpw3HHHYdu2be7+AVBTU4NZs2aN+NmJJ544FL4ab+vzhDJEotEoFi5ciMcff3zoZ8lkEo8//jiWLFmicWbmMX36dFRXV4+4Vh0dHXjhhRcmzLXyPA9XXXUV7r//fjzxxBOYPn36iN8vXLgQ2dnZI67RW2+9hd27d0+YazScZDKJ/v5+d10AnHXWWXj11VexefPmocd73vMefOITnxj690S/RsPp6urC9u3bUVNT4+4fAMuWLTtKKuDtt9/G1KlTAYzD9Vl3tqxq7rnnHi8Wi3lr1671tm7d6n3mM5/xSkpKvAMHDuiemnI6Ozu9l19+2Xv55Zc9AN7NN9/svfzyy96uXbs8z/O873znO15JSYn34IMPelu2bPE+/OEPe9OnT/d6e3s1z1wNV1xxhVdcXOw99dRT3v79+4cePT09Q2Muv/xy75hjjvGeeOIJ76WXXvKWLFniLVmyROOs1XDdddd5Tz/9tLdjxw5vy5Yt3nXXXeeFQiHvr3/9q+d5E/e6pGN41YznTexrdO2113pPPfWUt2PHDm/dunXe2Wef7U2aNMlramryPG9iXxvP87wNGzZ4WVlZ3re+9S3vnXfe8e6++24vLy/P++1vfzs0ZjytzxPOEPE8z/vJT37iHXPMMV40GvVOPfVUb/369bqnpIUnn3zSA3DUY9WqVZ7nHSkR+9rXvuZVVVV5sVjMO+uss7y33npL76QVMta1AeDdeeedQ2N6e3u9//iP//BKS0u9vLw875/+6Z+8/fv365u0Ij796U97U6dO9aLRqFdRUeGdddZZQ0aI503c65KO0YbIRL5GH/vYx7yamhovGo16U6ZM8T72sY9527ZtG/r9RL42Pg899JA3Z84cLxaLeSeccIJ3++23j/j9eFqfQ57neXp8MQ6Hw+FwOCY6EypHxOFwOBwOh1k4Q8ThcDgcDoc2nCHicDgcDodDG84QcTgcDofDoQ1niDgcDofD4dCGM0QcDofD4XBowxkiDofD4XA4tOEMEYfD4XA4HNpwhojD4XA4HA5tOEPE4XA4HA6HNpwh4nA4HA6HQxv/P8E/amuc0jhQAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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Se3fu+WWWzwA3htvvNH+vcOHD3tlZWXeiBEjvGg06nme523bts0D4D388MPt7br7PP785z97ALzXX3+9z7813s+Onz+1P6+++qoHwDv22GO95ubm9ra//OUvPQDeunXrjnovhjEBu2aYhObw4cMAgAEDBvTaLv7zeHsR0tPT2/+/pqYG+/fvx6xZs7B161bU1NQAAF566SW0tLTgW9/6VifXzi233NLj6379619HJBLp8b1aW1tx4MABjBo1Crm5uVi1apVw3wHgqaeeQkFBAb71rW8d9bOubigqc+bM6WRJmTBhArKzs7F169Y+f/fpp59GLBbDl770Jezfv7/9a/DgwRg9ejReffXVTu1TU1NxzTXXdPtaQ4YM6WRByM7OxlVXXYXVq1djz549AIB//vOfmDJlCk455ZT2dllZWfjGN76BioqKXrOqOn4eTU1N2L9/P6ZOnQoAvj8P0f5cc801neJ+4pY/ylgzjA5YiDAJDVVgHD58GKFQqN1sLsJbb72FOXPmIDMzE7m5uSgsLGyPU4gLke3btwMARo8e3el3CwsLMXDgwG5ft7vA2cbGRixcuBClpaVITU1FQUEBCgsLcejQofb3EmXLli045phjkJQkz5M7bNiwo743cOBAHDx4sM/f3bRpEzzPw+jRo1FYWNjp69///jeqqqo6tR86dGiPAbijRo06SkyNGTMGANpjNLZv345jjjnmqN+Nu7Lin113VFdX4+abb8agQYOQnp6OwsLC9s/N7+ch2p+uYx2fT5SxZhgdcIwIk9Dk5ORgyJAhWLt2ba/t1q5di5KSkvYNrSdLQDQa7fTvLVu24PTTT8fYsWPx85//HKWlpUhJScE///lP/OIXv0AsFvPd946n7Tjf+ta38PDDD+OWW27BtGnTkJOTg1AohMsvvzzQe8mmqyUnjud5ff5uLBZDKBTCv/71r25fJysrq9O/uxsnXXzpS1/C8uXL8d3vfhcnnHACsrKyEIvFcNZZZ2n7PIKMNcPogIUIk/Ccf/75eOCBB/Dmm292MnfHeeONN1BRUYFbb721/XsDBw7stuZD19Pos88+i+bmZvzjH//odDLt6j4YPnw4gCOn/fLy8vbv79u3T+jk+uSTT2Lu3Ln42c9+1v69pqamo/oq4lIZOXIk3nnnHbS2tiI5OZn8e0HpqY8jR46E53koKytrt174ZfPmzfA8r9N7ffzxxwDQnhU1fPhwbNy48ajf/eijj9p/3h0HDx7Eyy+/jLvuugsLFy5s//6mTZuOaivyefjtD8PYCrtmmITntttuQ0ZGBq677rpOaZXAEdP69ddfj+zsbNx4443t3x85ciRqamo6WVJ2796NZ555ptPvx0+jHU+fNTU1ePjhhzu1mzNnDpKTk3Hfffd1avs///M/Qn9LJBI56qR73333HWWpidccoRQLu+SSS7B//378+te/PupnKk/VPfXx4osvRiQSwV133XXU+3ued9Rn2Bu7du3q9JnV1tbi0UcfxQknnIDBgwcDAM455xysXLkSb7/9dnu7+vp6PPjggxgxYgTGjRvX7Wt399kD3X+mIp+H3/4wjK2wRYRJeEaNGoVHH30U/+///T8cf/zxuPbaa1FWVoaKigr87ne/w8GDB/H44493ism4/PLL8b3vfQ8XXXQRbrrpJjQ0NGDx4sUYM2ZMpyDEM844AykpKTj//PNx3XXXoa6uDg899BCKioqwe/fu9naFhYW47bbbsGjRIpx33nk455xzsHr1avzrX/8Siks577zz8Ic//AE5OTkYN24c3n77bbz00kvIz8/v1O6EE05AJBLBf//3f6OmpgapqanttU66ctVVV+HRRx/FrbfeipUrV+LUU09FfX09XnrpJdxwww248MILRYabzIknnggA+P73v4/LL78cycnJOP/88zFy5EjcfffdWLBgASoqKvDFL34RAwYMwLZt2/DMM8/gG9/4Bm677TbSe4wZMwbXXnst3n33XQwaNAi///3vsXfv3k5Ccf78+fjzn/+Ms88+GzfddBPy8vLwyCOPYNu2bXjqqacQDnd/nsvOzsbMmTPx4x//GK2trRg6dChefPFFbNu2jfy3dlekzm9/GMZazCTrMIx9rFu3zvuP//gPb/DgwV44HPYAeGlpad769eu7bf/iiy9648eP91JSUrxjjjnGe+yxx7pN3/3HP/7hTZgwwUtLS/NGjBjh/fd//3d7SmzHdM1oNOrdddddXnFxsZeenu7Nnj3b+/DDD49K34yn77777rtH9engwYPeNddc4xUUFHhZWVnemWee6X300UdHvYbned5DDz3klZeXe5FIpFMqb9f0Xc87kob6/e9/3ysrK/OSk5O9wYMHe5deeqm3ZcuWXse0p/TdefPmHdW2uz7+13/9lzd06ND2z6PjeD311FPeKaec4mVmZnqZmZne2LFjvXnz5nkbN27s9f07vt+5557rvfDCC96ECRO81NRUb+zYsd4TTzxxVNstW7Z4l156qZebm+ulpaV5U6ZM8Z577rlObbpL3925c6d30UUXebm5uV5OTo532WWXebt27fIAeHfccQfpb+1uXCj9iafvdv17uusnw5gk5HkcscQw3fHoo4/i6quvxpVXXolHH33UdHcYyYwYMQLjx4/Hc889Z7orDJPQsGuGYXrgqquuwu7duzF//nyUlJTgRz/6kekuMQzD9DvYIsIwTELCFhGGsQOOamIYhmEYxhhsEWEYhmEYxhhsEWEYhmEYxhgsRBiGYRiGMYbVWTOxWAy7du3CgAEDfN/yyTAMwzCMXjzPw+HDhzFkyJA+i+xZLUR27dqF0tJS091gGIZhGMYHlZWVKCkp6bWN1UIkfkV7ZWUlsrOzDfeGYRiGYRgKtbW1KC0tbd/He8NqIRJ3x2RnZ7MQYRiGYRjHoIRVcLAqwzAMwzDGYCHCMAzDMIwxWIgwDMMwDGMMFiIMwzAMwxiDhQjDMAzDMMZgIcIwDMMwjDFYiDAMwzAMYwwWIgzDMAzDGMPqgmY6aWyJ4j+f+xArtlYjJRLGRZOG4qunlCMlibWabFraYvjdm1vwzOpdaI3GML08Hz847zikp0RMd61XGlui+NE/N6DiQANG5Gfg9nPGWd9n4Mh4/+HtCmyvbsDwvAx8ZdoIntdMO67Oa6b/EPI8zzPdiZ6ora1FTk4OampqlFZW/fqj72Lphqpuf3bdzDIsOGecsvcOwr7aZsz40Uto6fC90QWZePKGGcjJSDbWr95Y9M8NeOD1bd3+7AvjivDQVZ/T3CMac3+/Ess+3nfU92eOzMGjXz/FQI9o3Pyn1fj72l1Hfd/med3YEsWNS17Dy1ub2r+XkRzG0m/PxtC8dHMd64dc8/BKvLrx6Hl9StkAPHbdTAM9orFx12Gc+avXO33vsaum4JRxhYZ61Dfvbz2ISx5c3ul7f7r6ZEwfW2CoR2oR2b+VCpHFixdj8eLFqKioAAAcd9xxWLhwIc4++2zS7+sQIr2JkDg2LtoT7nwBtU1tPf58eH46ln338xp71De9iZA4NoqRMd//J1qiPT8mSWFg84/O1dgjGiPm/1+vP7dxXvf1PKZEQvj4nnM09ohO140mMzmMF79tr3jqaw0JAdh2r3vzuoL7bAUi+7dS+2xJSQnuvfdevP/++3jvvffw+c9/HhdeeCHWr1+v8m3JNLZE+xQhAPDA69vQ0hbT0CMafS0gALD9QCNm/eQVTT3qm5a2WJ8iBACWbqhCY0tUQ49oTL7r+V5FCAC0xYDxd76gqUc0+lr4APvmNeVQ0BL1MOb7/9TUIzoj5v/fUafd+tYYZvz4FSv7e+4vX+tzDfEAjLas75R5TWmjExf7rBulQuT888/HOeecg9GjR2PMmDG45557kJWVhRUrVnTbvrm5GbW1tZ2+VDLz3hfJbS9a/HrfjTSwr7a5zwUkzvYDjahpaFXcIxoX//Y1cttZP35JXUcEqK5rQXUjTRTVNbVhX22z4h7R+NYf3yK3nXbvUoU9oUM9FABHxMgn1Y2Ke0Snr03ENvFU19SG9bvrSW1bLRrrjbsOk9tOsORgcOp/0QXGuB/+S2FP7EZbxFo0GsXjjz+O+vp6TJs2rds2ixYtQk5OTvtXaWmpsv40tkSxr4F+Glz/Sb0Vp8cLfv2GUPsrHhBrr4KWthg+3EVfzKrq2qywilx6P31DB4BzfvGyop7QaWmL4dl1h8jtD9S1oY4obFXyg2fWCbX/vCXWPupGY5N4uuGP7wu1t2Wsu8aE9EZtUxuq61r6bqiQuqY2VNL0HgCgoTVmzWFGN8qFyLp165CVlYXU1FRcf/31eOaZZzBuXPd+6QULFqCmpqb9q7KyUlm/7vjbh8K/s3jZxwp6IsZuwYn64V7zi98Dr20R/p0f/v0DBT0RY+v+BqH2+xrNx30/+Lr4WN/42EoFPRHjmdWfCLVvNj/UwhvNrB/bsaG/tXm/UHsbxtqPZffiX78mvyMCiAo+wI7DjAmUC5FjjjkGa9aswTvvvINvfvObmDt3LjZs2NBt29TUVGRnZ3f6UsWz68QWPgC4/xXxRV4mNlgJ/PDQm1uFf+fZ1bsV9IRONOZv9TVtNXv4rb7jcLryxuaDCnpCJxrz4GfUTFtybvyT2EbTBv/zSiZ9hDx1i2kX71W/796d3xsVh8z2WVTwAXYcZkygXIikpKRg1KhROPHEE7Fo0SJMnDgRv/zlL1W/bZ80top/4MRwAWXc9ay/IF/Ti8hhHxtGs2Ev2Ksf0eIVuvLQG5sl90SMg/Xin7Vpeet3rL/1x3cl90SMt7ceEP6d19bvVdATOn4PM1f97/K+Gylkwy618YIq8CP4AHcPnEHQXtUoFouhuTkx/WBBeWH9Hl+/N/d3b0vuiRguavz/es6f6PvDcnGLhEzMRzGJ858+x3r55mrJPRGjuU18Zt/xnFgsjGz8HmbW7aqT3BMxWn1ObFObepDDnw1uad0oFSILFizA66+/joqKCqxbtw4LFizAa6+9hiuuuELl2/ZJkMlp0vRe2+hvcq8XiDaXTRBTtMmx3l3T1Hejbqg6bM5dEGSsTZ7CPjnoL47JhtgFUXbWmA2g9HuYcVHgAsCdz5oRfnMffsf37z63xqxb2gRKhUhVVRWuuuoqHHPMMTj99NPx7rvv4oUXXsAXvvAFlW/bJ//p81QAAL9701yciF9Tnw8vlDSWdVO1kYrJsW71OdgmF+w3N/kf64X/WCuxJ2L4ndcmMR2f4pe6JjvS+UUIIpJf2WDGFfbvAK6kpsTzzKgVIr/73e9QUVGB5uZmVFVV4aWXXjIuQgDg1Y3+fNIA8OR76jJ5VGHyVpGfvviR7981OdYO7o24f5l/4fbCOn8n5UTlpj+vMt0FX/h1cQDmAm2DHBxrGs0Ixr6KIDKdScibrw75dHEAwK5DZtJhgywCJk/p2w8I5Dd2wdRYB8XUgv3RHv8uuDpD0cFBLQumXErv7/CfaWTS5RgK8LvLN4lngcggyMHRlBxgGSJGQgqRaNT/QmBqDQlidgfMLX5tAU4GpsY66Ob2ZgB3VBAaWvxv6qEgO1QAgloWTMUANASYIw+/JZ7OLosgG+Rf39surR8iBDk4mkDGQcRV159fElKIBMHUgu2nUFVHTC1+kZD/h9LUWAcxBQPA4mWbJPVEjFiABdDUre9BLAuAuRgAL8BYP7/OTDBiUIH93nYzWUqhmP8TiQnjZNBDIwDc9Kf3JPTEHRJTiAQ4aUcMbY6bq/y7OABzi1+QdcDUWAcxBQPAvwO4SExhypQcxLIAgHzvkmySA6ycFQfMpMLe7TNNOo6peItwgLGOevpdpUFiteK8W2G2yKBuEk6IRGMeghj6TLkLGlqCmSe3VwcTMn4J4AUztjkGNYu2tBkKew8w1k1tZmJbglgWACBsSKwGiUX0U39EBsu3iBdg64jnmel30Gmp21UaJFYrTrMF95rpJOGESFCzWWvMTLxFAA8HgGCxGn6Jxjy0uLg5esGERMTA7hhUYANmghGDut9MjXWQeW2KwwFTd02MNQAECH0CANz/ut5qx0FiteIkG3KVmiLhhEjQWAvATLxFLKB9IGbgNLPcx10LR72Ggc0xEsQWDCAS0v9YyRjrJ97fIaEnYgRJJwWAcKA8EH8EHetUQz7HaDSgwDYwr1vaYoGvINiyT68rLCxhrfU8Q6Y+QyScENmyL7iL4oUP9ddcCAc8OppYRJ58f2fg1zARqZ8U8OQXDmq+8sETEmqurN9VI6EndGRYFhsNWCeDzuuQoSjsWEDR1hYgaNQvS3xc4tiVtiD+YR8EPMcAALwESwBOOCHSKsF/v6dWf32LoJtjxMAn/e/dwTe2oFkVfgjqCw96yvfDKgnjdLBBb/nx3/u4lbkrJlylQed1k6EYkaCGmPpWT7ur1G9J+o6kJun1c0jwzBiLRTRFwgmRFBlmUQPrSNDsAhNpbPXNwZ/I+mb9gZ9Bi3vVtcS0L9h1EsZa88ERT68KbjED9LtKg87rhlb98wMAUpOCL/e6XaV7a/3d+dQRnQaoaMyTcqWGqVhEUyScEAlWW9AMLW2xwPcPHGqKal/8ZETZ63ant7TFpCwkuhfssAR1rHus9x2WY4HR7SqVMa/NBAYH/4B1xxHFDLiDgiAjViuOycJ3ukk4IdJsKrUyADL8pIC5Es1B0G1WlTXWuhdsGadd3WPdGpVTl8KEqzQoJgKDDwa4mj7Oht3+L3NLBGTExcUxVfvJBAknRFy8i0iGnxQws/gFJaw5ZVDWWOtesGWcdnXHUAYNwG7HwWda9/xoaYuhUUJsiozU1P7MBokB36ZqP5kg4YRIpqla1gGQ4ScF3DzNpAcpYekDWWPNC3bfBA3Adhnd80OWpc9F0VejsfpudX2ztNfSHbNlkoQTIg0Sgvp0I8tP6uLmmKLZXSDNJ+3ggt2kOTguxUQqly1onh+yLH2mUo+DUN8S0xb42SYxDs/UFRcmSKiVoKUthkMSrjvXqbBlEtIcqBs00wcwUC7d0Yc/6IVmAHCwoU1rQPNhBw8FstC9ocuy9Om2UMpCV+CnTPGgO2bLJG7OKp/IMk/qVNgy0bmIRGMeDgVN9QGwp1aeqZNChqTayjo3mmjMw0EJY+1BX0BzNOahXkZ6kgEOSQj61L2hy7L06bZQyhDYAPDiej23NMsIGo+jOz7OJAklRGSZJwHgkeWSfK4UJM1HnYuIrDS2Os2iT9YY6dxoZKYM6gpoltlnnbS0xdAgIehT94YuC50WSlkCGwBqGvUcaGQeQFy1Pvkhcf5SAHsPyzFPAsA7W4PdZCmCrFO6zkVEZhqbznx6WWOkc6OROdb/lnBzKAWZfdbpKpVlVW3VHYkoaX/UWVJfplhNibgn/FwVq35IKCGSJtGBt+uQvtoFsiZkQ6s+IfLvPfLS2HSZVQF5C61O0SdzrD1Pz0Yjo/x/HJ2u0hc3yLGq6r5LRNZhJqqx/oFMsapL+Mmo1RJn1yF5B2fbSSghIlNh6jzRyNrUdAarehKDHnWZVQEgXZKPt1rigtQXMsda18lRRvn/juiymtU2yvlcdZ/QZa19VXUt2gKapQpsDcJPVq2WOIea2pyMRfRDQgmRloDXYHdE54lmd42cjVhnRkSyxNRMnYt2oySr0aFGfRkoMsdalyVHRpn0jugq8y6r9smuGr2nXVmfa8wDVmzR45Z2TWBLq9XSAa2xiAZJKCEi0yKga3NsaYuhXtJ1rjpPMzJFny7rUzTm4ZMaOfef6FywZY61zhgAmciM/+oNWWN9qFHvaVfm5/rG5ippr9UbMgW2jjVEZjJEHJ2xiCZJKCHi2sQG5KpsnZujTNGny/okO5ND14Itc6xluab6RLKXUFe/ZY61ztNunSSXEgB8sOOQtNfqDdcs2LJqtXREZyyiSRJKiLg2sQF5wXFxXDzNpCYlSXut3nhK0rX0cXQt2FLHOlnPWFODJ6l2R10ZBjLHWtdpt6UthhoJhRzj7JdYxrw3ZIo+HWtIjBjonZkSRm4abb5qz64yhJ5VxxJcdM3ICo6Ls7ZSXgBYb8gUfSmaah1XVjdIfT1dC7bMIkq6xpoqHEIhkMqh61qwZY71bk1xIo8sr5D6erLje3pCbpyZ+nlNFdfF2alACDjU1Le1Q3d2lSkSSoi46JqRfTFYY6uemgsyRV+LppTBJsnpzboWbJnjo2usD9TRRBp1CHUt2DLHR5foW7lNruVFl4VSpujbXycn9qs3qOJaxHrnYv0TPySUa0bmpW+6Fj7qw0idrs2SAl/7Qq5rRs80bW6jzY8k4v6ha8GWuaHpuBgxGvOwt45m6aPOVl0Ltsyx1iX6ZFtedAkomeOzq7ZJeaA+NTOppS1KPsgmimsmYYRINOaholreA9ms6Z4M6sMYIn6Suia2zA1NlxChWnGoy7CLC/b26kblC/YKgdgI6hDqmtcuWkSolcKpT5kuASVzfKIx9YH61MykxrYY+SCbKK6ZhBEisjMidChsgP4whiwyYUdjHrZLFH26LpCjWnGo3dG1YNc3y4sj0pFZ9ZbAxXopREOHrgXbRYsI9X2SiaY+XQcD2eOjOlCfmrmVnhQmW0t1WVVNkzBCRHZGhA6FDQhYRCxyF6zYekDqtrC7Rk8KWyrx6EgN29Fx4pVt6QPUL9gf7DxEbpufmUpqp8s1s11iQLOuDZ06D8PEp1ZXv2UKbEB9oL5IjAj1M9FlNTNNwggR2RkRgJ5UWOpEjBB3Rx2LiMiJl8L2A+rdBQCQTkxdpVpodJx4Vdxiq3rBrjpME5YhAKlEk4iOSqUtbTFUN7jncqTPQ6L1VYOFUoXAVh2oX00MwG6JRsmfiS6rmWkSRohQMyIGpNCHREcqLHUiUjM0dCx+IideCjEAyyWLm+6gZ7nQ2uk4zci29AFAk+oy78RhHpydgjBRYOuoVCo7DVaXy5E6D6nzX0fmnYjATiUaw1ok3gPTlWjMwx5iAHYoFGKLSBcSRohQP9CRhZnkYETlCzYEzKrERU3H4teoIPPiyVWV0l+zK83EjYxqnNFxmhGx9I0qTCe1S5WY8dQd1FicgRkpOHZwDvl1VVcqlZ0Gq2P9AOjzkDyvFW7ocUQEdl5mCqmdyk1dRDgVZKaSP5Md1VxZtV9B/eBbY8BoSxZsgN7vqEWnGeqGPjSbtoAAwM6D6h9Iar+py7CO0wzV0pefkYyiAbR5rVqsUovdtUSjuPTEEvLrqq5UKjsNVsf6Ach37za0qBdQIgJ7YAZtHVF5MBARThOH5SKNWPzsQENrQtzAmzBCJIUYEZ6SFEKBJQs2ID9gS8dphjrWRTlpGDzA/Gmm/T2I/ab2RE8RJVpvhuWnk0WoarFKT5MOYfqoAvLrqq5USk2DpXp3dblmZG/AlQcblMdsiQhs6qau0i0tIpxOHVWE0rwMcvtEuIE3YYQINRAxPTnJmgU7GvOwgxiwRc3k0FGwSmSsywuzSG31iD5iQTPiSfaTGvUp3iJjTRWhqsUq1TWTHAkjEg5hRF4aqb1qsUrd0KlxLbsVXJLWHVSxSs0aa9OQMSgisKkCQ6UQoQqncAiYOjIfl0y2x9JnAwkjRKiBWJ7nWbNgr9h6gFxZMpmYOrZDQ8EqkbG2SfRtqqKdatKJJ7CYpz7IVmSsbQmQE904MlOTSe1Vx+RQN0fqoaCyWr1lAaCL1cwUemr/W1v2+e0OCRGBTT2kqDzMUJ+Z4XnpiITtsvTZQMIIkWZi5cXmaMwKhQ0Ay7fQNzGqnzSqoWAVNdaiuS1mleijvsOwPJrrDlAfZCsyr21JGRTthy0CSmRzpKDDsgAAW/fVkdplp9GFyE4F5RA64tphhjqnMz4Ve5FwCGX5xFhETWneJun/f+GnpBEtBmlJEWuEyE6BiOlTRtIVtur6JyJCxJaxFql9cub4YnKciOogWxfnNfVOn3g7WwSUihR51ZaFlrYY9hymxSqlpySRNwTV8U9CAtuCw4wfsTw4m+ZyZCHSnyBf4+lZYeoDgH2HaSa5pDDwg/OPI7+u+gqD9MBgWzZHkdon18woJ2dWqT6li5wcbRnruiaaPz0e1GpLv6kCO4Nalx7AJ4qFqkjtk9K8DAwnntJVpx67JrD9iGVb9hkbSBghkplG8zNnpiWTHzLVDyP19UvzMpCeEkFRFu1vVN1v1/y7AN1sWzQgBSlJYWsyq0ROjjaMdTTmkU/o8aBWGzYagC5EUpLC5Nuw6UX0/LGygu76uXRyKYpzaPOaKhT84prA9mMRsWWfsYGEESJTyvLI7aj5/arrAFAf9uJPTXwjiRkoqvstsojY8jBSx3rUp2PsWr/TkiJW9Fmk8NOQ3CObog0CChDLPhlZlElqq9rF0dBMz+aYProA+cTiYNR2flEhsKsb5JZC6Igfi4gt+4wN9P+/8FPmTi/r068firezZOET2dABexZsocBgSx5G0QXYxX5T+1LXpC6oT6Tw08nl+QDo1irVmVUilr4sYuCnaqEai9GexVGFmYiEQzhQTxNG1HZ+ERHY1PVmU1WdsiwlPxYRW9ZrG1C6Si5atAif+9znMGDAABQVFeGLX/wiNm7cqPIteyQlKYxvzCzrtc03ZpYhJSlMXhxU1wEQ2dABe07pdU20k0daUsSah1F0AXax3+Ew7XHful9dWmnlQXq2xdzpR55XG4IRAUF3gSVClbqGxIWTLWuIyFiXDqQVB1OZTu/HImLLWNuA0qdg2bJlmDdvHlasWIGlS5eitbUVZ5xxBurr61W+bY8sOGccrpt5tGUkBOC6mWVYcM44AHQ1rroOgMipALDjlC5SjwMWuWZE++FivzOIt4O1xTxlaaXUuTckJw0pSXbFiOwhHjxsiccBxNcQ0faqEDmEiRQHU5VO78ciYsN6bQv0xHEfPP/8853+vWTJEhQVFeH999/HzJkzVb51jyw4Zxy+c8ZY/OHtCmyvbsDwvAx8ZdqI9kUPAAoH0NKq4nUAZoymp86K4KJrRqQeR2ZaMjyi9USluwBwU/QBwO5DtKyLtKQIpozIx9INtNTtNzZXKZnX1Dk9vEOtFqrAqCNWxvVDNOZh+wH6WNsiVEXXEFtiRESsqtNHFSAE2h1QqtLp99U1k9px1kz3aJVaNTVH0kbz8roPHG1ubkZtbW2nLxWkJIVx7anl+M8Lx+PaU8s7iRAAKBEoWKWyDoCLrhmRehxTyvKscBcA4guwDYtIS1sMu2tprpmCrBTMnT6C/NqqUrxFaszEsWGOiFQ5LshKcdKyAIi7KFUgalWNhENG0+mjMQ87D9GESEdRbcN6bQvahEgsFsMtt9yCGTNmYPz48d22WbRoEXJyctq/SktLdXWvE9MFioOprDDoollVpB7H3OllVrgLAPEF2IZFRKRGREleBlKSwsZTvP0IERvmiEiV45K8DGssC6Jrgg3zWtSqCsBoOr1IJljHy+5sWK9tQZsQmTdvHj788EM8/vjjPbZZsGABampq2r8qK9WWx+6JqeX5VlQYdNGsKlqPY8qIfPJrq7Q+iS7ANiwiIjUiZowsBACMKhpAaq+q33586SJzRFXVYJHCYzNGFlphWQDE1wQb5rWI6IuXZTApoEQywS6d/NnhmvrZtBDFu8toESI33ngjnnvuObz66qsoKek5sCg1NRXZ2dmdvkwQCYesqDDoollVtB6HiLvAJuuTDaKPWiMiKRzC1JH5Qv1R1W8/2QU2uJRiRJdPcuTIWNtgWQDE14SCrFRSe2o7P4hcbRHPrDIZs0XNBIvXaolDrWuyZmeNlssRTaJUiHiehxtvvBHPPPMMXnnlFZSV9Z4+axM2VBh00awqutGlJIVRnE37HZXWp4IsWh/i7WwQffmZNDfLCaU5iHx6JazpfouU///s/827lPYTgxHLC47U47AlmFl0TaB6LlTGT1KvtuiYWWUyZov6GY4uymp/DgE7XI62oPQpmDdvHh577DH86U9/woABA7Bnzx7s2bMHjY1q71eQgemTIwA0E90cNplV/Wx0xbnmrU+iC5kNtWaofR7aYXxNi1W/N9iadilRxyPz083FhmBmQN2asIuYreUH6lgPzvnMKmNyXlNd6HkZncW0LW5pG1AqRBYvXoyamhrMnj0bxcXF7V9/+ctfVL6tFEyfHKMxD6t30rKGqj/tgw0+Rz8Lgg2nR4E7EQHQN9TtB9Rlcoj2GTAvVkXjnuKYPhi4aJ0E1I3bBwrdBX7mqMl5LepCjyPiclR9OaJplLtmuvu6+uqrVb6tFEwvJCu2HgD1Oc9IPbIp2uBz9LMg2HB63LiHFlsQN9FPLMkltVdZzZHqLujYzvSG7nfRNn0wUBX0uaeG9hn6RVXF4JaoOneBnzlqcl77FUEpSWGU5dNqVqm+HNE0/b9km09Mnxz9RI7b4HP0syCYFn3RmIePiXUL4mmlIsW+VFVz9DNupjd0v8+V6TkiOm7Uooi7apqUWih319BO0vFxGzrQfA0lP3PU5Lz2a+UDgOIcWnl61ZcjmoaFSA+YPjmKmOLikeM2+Bz9LAimRZ9I3YKSTxfqqeX5fV6iGEdVNUc/42Z6Q99/mDYWXRdt03NEdNxEiiI+snybrz71hWg1WECshpIqd4GfOWpyXvu18gHmn0dbYCHSA6ZPjtR0wZGFGe2R4zb4HP08WKZFn4j1KV4HIBIOYUwR7TSj6g4U0UwfwOyGHo152LSPNu+6pvmaniOi4yayoa/cVu2rT30hUg12QmkOgCMCm5jYpAzXYkSCvLdpgW0LLER6wLRSpfr/B3UwAdvgc/TzYJkWfVRRlhTuXAfgmME5pN9TVXPBT2yNyToRyzfvF7Y8xTE9R0SF0NTyfISJG3qDojtyRK5bOHVUEYAjAvuEYblK+kPFj8A2Oa+DuGZsqNtiAyxEesC0UvUrhEz7HP0sIqZFH3UhmVSa26kOAO2aLZF2OjDXZ78VKAHzc0RUCEXCIUwqoRVkzFNkxaFet9Cx4B3QOd3bDFSTjPizuIsYMyNCENeMDXVbbICFSA+4ZgqOY3rB9rOImBZ9VIZ0WaCpYs6mQDOTffZbgRIwP0d8paUTU7xVWXGo1y2U5qV3Edhm8ZMNdqCemDFYKT9j0PTc7A+wEOkB06ZgP5YFwPxD4WcRcdU8aV70iWOyEJvfCpSA+TniYmAwtc/F2TR3ri78jJvJjMEgh9Ygbp3+BAuRHjBfOdOPedL8gi2aLngEsy4OP4XBAPOiz0+/qYXYKqsbpZ8cqQv2mKKsbr5rdo64FhjctS8y2unCz7iZzBgMcmh10aqqAhYiPWBywQb8WRYAsz5HP+mCgPmH0e9YmxZ9fvpNLcSm4uTo8oJNL2n+2YNl2r1rQ6FAP/gRUCYzBv0dvnr+HvV3+xMsRHrA5IIN+J+gJk19ftIFAfPWJ79jbTrQzE+/RQqxyT45Bll0Tc6RaMzDKuKtvgc6xS2YvxjRRXbV0D7DjgLKVMag38NXb9+j/m5/goVID4gs2G9srpL+/n4nqMmTo0g9jni6IGDe+uTqYlDXRAtG7NjvqeX5oP4VO6tpwaVUgoyzyTni57oFwN3TrsnDTDTmYc2OQ75+10TGoN/DVxzTVlVbYCHSA1PL88mDs5Z4WhLBr3/X5OJHNXmmRDqnC5q2Pvkda9ML9paqelLbjv2OhEMYWZRJ+j3ZYjWIq8LkHPFz3QJgXuD6jX0yeZhZsfUA2nw+LibWPj+1Wjpi2qpqCyxEeiASDmF4vrnr6f36d00uftRqsBNKcjplRZi2Pvkda9MLNnXWleR1PilmpdGsC7LndRBXhUmXkp/rFgDzp12/sU8mDzMioq/rvTgm1j6/tVqYzrAQ6YXiHJoQsclkb3Lxoy58KV3SOE1bn/ziyoI9Y2Rhp3+bEqtBxkuk9LjsYESqRavjdQuf/ib1HYT7RMHveJs8zIh8dl3ntYm1z9VaLbbBQqQXzJYN9tfOpKnP78Jn2vrkFxcW7K5uMMDcvA4yXpFwCBO78bF3h6maC+OHdO6f6Uwfv+PtQrn07ua1ibVPV60WetaWm7AQ6RVzJxq/ZlWTBNlo2PokBnXBntjFDQaYE6tB61qkEj972Ru730OB6WBVv+PtQtxCd/PaRMxW0DlNdQt/sFN+RVibYCHSCyZPNH5z000GUAZ5KE370/1AXYipn6UKupalN4u/In1xTG3sfg8FVNG8p0bNYcLVOiIUupvXZtbrYHO6a5xLT7RE1QTq2wILkV4wtfAFyU2nPmQb99YJ96svgi187l0gx6cZMYJa+VyLbSkcQDPH76ppQksbNQm0f+PX+gSYWa+DzunpI80FYdsEC5FeMLXwBclNp94EuXlfnVWbo2l/uh/4NCNG0I3CtdiWkjy6NeqR5duE+mQDKuIWgmzsJtbroHPaZBC2TbAQ6QVTC5/fwmAAUDqQVtQnGoNVm6PR+ic+F1SR04yKtGO/mHLf+SnA1hHXYltE5sfKbdVCfVKJSUtfkHXAxHodVPxEwiGcMCxXWn9chYVIL5ha+IJkRFwyuYT8PjaZ+kxZn4JUcnQ17diE9clvATYb8OtynFqeD2rGZkMzTaSJ4Fdgm7T0BVkHTKzXMi4WHGpVHJcZWIhYSJCMiOmjCsgfqk2mPlPWpyCVHF1NOzZhfQpSgM1VIuEQJhNTjvMlz+tozMOq7Yd8/a6IJeftrXTrLQXXbgyWERBsMsHAFliI9ILtE6S7yPFIOITJw3P1dyYgpqxPQSo5Am6mHZuwPgUpwOYy9KwluWvI8s37yXFmXef11PJ8pBA/etlhZv0506cnXIyPkw0LkV5wdYKwqY9OkEqOgJtpxyb6vLPav7vRZUytIU+t2klu23VeR8IhnDehmPS7OenJQv1SCfVA6NdlpQrT9WZsgIVIL/AE0Ycp61OQSo6AG8WfumKiz/sO0652LyvI7LEUtu0Wyu4wtYZUHqTdnBwJo9t5PYho6TvUaM8h7EB9K6ndmkp5QbZB0o3jmL4c0QZYiPSCqQkiY3K7hu3Wp+7icRg61I02M7XnZ8nUHAnyPJpaQ1IjtKV9VGFWt/N6F9FSSG2ng4xe5k5HZN7QLKMCtotWVdmwEOkF6gffQqzdQcXF8u6Ae8WIRLCrQqkeZNaJkLEhu1ZZFTC3yVCDOY8ZlCX1fU0yZQTdpScrY1DGnHTRqiobFiK9ECaegNdKzqe3fVPuiY17aCmqthQjSlRM1ImQkQ3hWmXVI5ipGJyIQZ9zp48gt5WVMRi0Ng5zBBYivWAqnz7ogmvClx6Nefi4iuaXbu6mnLUp61MiYmJey9gYTVkXgmw2trscbSOIVTUlKYzyAn2WS5dr49gGC5FeMHUPQNDTo4nFb8XWA+QzXUk3G6Ep61Mi4ur9FiYuGQy62bhq3TRFEKsqABw/NFdib3onEWvjqIKFSC+Yugcg6OnRxOInUifi0smlR32P723Rh6v3W5hwKQXdbNjlSCeoVVU3iVobRwUsRHohEg5hIrEyok0pgyYWP+qGlRQGpo8++kTu6indRVy938KEWA262XBGBJ2gVlXdBLmKg+kMC5E+SCVu1jb5eE0sflQhNqk0t9t0wanl+aDKop3VtFOTDkzVthhCXIh7aqe76J2MlHQTYjX4ZmMmWNVFglpVdRPkKg6mMyxE+sBFH6/N6WA9pcFGwiGMLMokvYZNos9UMOJeYhxEbrodQXIyUtJNuJSCbjYcrEonqFXVVhIx9V8UFiJ9wD5efWSlJZHa2ST6TAjVaMzDc2t3k9rWNNKqTapGxjjZ7FLqabOh/t27a2mVZ/szQa2qjLuwEOkD9vHqw0XRZ6LPK7YeQAtR19iyXssaJ9fuUUpPponryupGzgYjkqgWBpkFBm2DhUgf2Ozm6G+4KPpM1D8R8aVPK7fDhO3a9e6ymFiSS2ons+w44xYmssFsg4WIhei6HdI2hW1C9AUNojRR/0RGtL7uINtErPQJADMEYhne2FylsCeJgYsXI3LpAhYi1hGNeViz41Cg12CFTSdoEKWJRURGtD4HUephank+eZFdW0kr5sX0jIvzmksXsBCxjhVbD6CNqA162gRZYdMJGkRp8yLSmy9dd5CtLiufbUTCIQzPpz2PNgVhu4rOeS3rlnRXCwzKhIWIZcio1mfz5mgbQS+tcnUR0RlkK8PK5zLFOTQhYlMQtqvonNeybkm3ORtMFyxELEOG/9/VzVE3Mi6tcnUR0RkYLMPK5zImgrDXfXJI2mv1hm1xZjrHWqb1xbVsMNmwELEMGf5/VzdH3ci6tEr3IhK0qiqgNzA40e/k0B2E3dIWw9b9wQSCq3FmOsfaxXIDtsJCxFH6yqVPdIVNwdUNklot1Zaqqol+J4fuTI5HlleQ23KcmX8SNSVdBSxEGGvQvWC7ukEeaqRF/FPbqSbR7+TQncmxsoIuDBI1zkyGSylRU9JVoFSIvP766zj//PMxZMgQhEIh/O1vf1P5dozj6F6wXd0gdx+ilQOntrOF/loxU3eGUkMz7XWSwv0vzsxVl1Kio1SI1NfXY+LEifjNb36j8m2YfoKtFwzatkG6WLQpkdEdS5CfmUxqd0Jp/4szY5eSmygVImeffTbuvvtuXHTRRSrfxgpsix53EQ7+sg+e18HRnTVDtQr0FUfmYpxZf3cp9VdoNzJporm5Gc3Nn+Vc19bWGuzNEagP9erKQ4jGPKtM+K5h4t6WREXUhG3LvHbRL8/3Vekj7lKipIvb5FJKdKwKVl20aBFycnLav0pLS013iWzqa4sByzfRszD6GzIqZ5q4tyVRcdWEXZybJrWdDtiVpg+dLiW2FsrDKiGyYMEC1NTUtH9VVlaa7pKQqe/JVeb7awJZlTNd3RxdxFUTtu7UZRkC28X7T1xGh0spGvPwwU7a3UD9sUifbKwSIqmpqcjOzu70ZZqp5fmgWkx3JqipT1blTFc3RxdxNStCZ+qyLIFtaxB2X+h2g7l0H9GKrQfQEqUtejbVILIVq4SIjUTCIYwp6rmqZkdSkxJzOGUVBnN1c3QRV7MidhE/9/e2VQd+L1kC29UgbJ1uMNfuI6KueWlJYatqENmK0p2zrq4Oa9aswZo1awAA27Ztw5o1a7Bjxw6VbyudYwbnkNrJvCvCJWQVBnN1c9SNjBLvgJtZETrrRMgS2K4GYet0g7l2HxF1zZtgWQ0iW1EqRN577z1MmjQJkyZNAgDceuutmDRpEhYuXKjybaXDUe+9I7MwmIubo25cK/EuE51xRLIEtqtB2DrdYK5dt0Bd84pz7AmathmlQmT27NnwPO+oryVLlqh8W8ZSbCsM5iqulXiXic44IlkC29UgbKobjNquN1y9boGRQ2IGNTCMw/TXEu8UbIwj6ktgi4inNzZXBe2Ok7h63QIjBxYiDOMYOw82kNr1x7oULsYRTS3PJy+0aytpKaGJSqJbVftr7RIWIgyjCRmLiGvZBSpwLY4oEg5heD6tz7al8DJ6SPTL+liIWIbuXPr+qrApUA0GfbXTuYi4ll3AHKE4h/ZZ2JbC6yIuXgPgahyRLFiIWITM026iK2wK++ua+25EaKdzEXEtu8BlZKVJA/ovvktkXLwGINGLObIQsQiZp91EV9gUdtfQrEF9mct1LiIuZhfItvLpOvHKTJPmEgD6cDG9fWp5Pqi2sJ3VtBgxl2AhYhEyT7uJrrD7IhrzsP0AbYPsy1yuM5PDtewCFTEtuk68rqZJu1QqXQUufm6RcAgjizJJbfvjnUQsRCxC5mnXxjRHm1ix9QCodSwnlPZeWdfGTA5bsgtUxLToOvHKTJPWdQMvBzPrrX8ik6y0JFK7/hjQzEKEgC5TsMzTro2bo02IWJ9OHVXUZxvXMjl0oSKmRdeJV6Z40HUDr4lg5kQOeJeJq3cSyYCFCAHbgp+op13eHHvGxVgLF1Exzi6eeHXdwCtT+HHAu14SOaCZhQgBF4OfADfT2HThWqxFHJmZHDqgivPTxhZZNc6y0XXalSn8dAa8uzavVZDIAc0sRAi4GPwE2GfJcRFbYi3iuCaKqf2YPGyg4p6YRddpV6bA1hnwbmJes0vJHmjRMQmOi6ZgwL1Ni+kb10Sxa/1VhW2nXYrAjge8U2JOgga8y5wnoi4lP5a4/mLBicY8rNxWjarDTSgakIYpZXlGLJMsRCRim8LmTaD/YeLCuyDzWkV/2eWoh3jA+3vbDyl/L5nzRNSlNGM03fITpz8c8p7/cDfu/McG7Kn9bEwHZ6fhzgvG4azxxVr7wq4ZAq4Gbemy5JioW2Cb6NOFzEwOHfNaRdoquxz1oSvgXeY80eFScv2Q9/yHu3H9Y6s6iRAA2FPbhOsfW4XnP9yttT8sRAhwldKekV23wFXR5yKuzmsXT6O66ogwemoombBMyiIa8zD/6XW9tlnw9Dqt6ysLEQJcpbRnZNctcHVzdBFX57WLp1FqfZCNe+sU96T/o6OG0s6DtDLrNgrLFVsP4FBDa69tDja0YsVWfesrCxECXKW0Z2QXrHJ1c3QRV+e1i8HjzVFaHd/N++rY0icBlS4l16vXvk08wFHbyYCFCAGuUtozsgtWubo5ukgkHMKk4bS02UQM/JQZh1Q6MIPULhpDQlr6XLofx0T1Wpl4ILoJie1kwEKECFcp7R7ZhcFY9OnlpBE0IZJogZ/RmIcPdtaQ2lI2m0sml5DfO9Esfa5ZGFRcW6CT7LRkqe1kwEKE0YJIYTAWffpwMfBTR/ruiq0H0BKliWySy3FUAXmxTTRLn2sWBtevh1i94yCpXU1j73EkMmEhwjAScLW2hYuBn1TrTGOr/3tbqKfetKQwabOJhEOYPDzXd3/6M65ZGFy+tiAa8/DqRprFTWfXWYgwjARcrW2hOvBTRQXKvAxaGfTXP97nO/CTeuqdIHAXEVv6usc1C4PpawuCxC6t2HoAzW20wOlp5eKF3vzCQoRhJOCii0MHKsalYABNiDS2xnwHflJjn4pz7BKWLuLaBZSqrIg6aihRM2Golj5ZsBBhGAnocnG4lF0AqBmXwdn0zd+mwE8uahYMWy6gVFXMTEcNJWomzOyxhVpFHwsRi3Btk2E+g+q6eG9bte/3cC27AFCzaE8py0MqMcfbpsBPalEzajvGDKoEpY4aStRMmEmlem/DZiFiCSY3mUS9t0UmOsyqrmUXAGoW7Ug4hAkluaS2NgUHN7XRgmep7Zj+hY4aStRMGJ0ZMwALEWtQscnwvS09I9v6pMOs6lp2gUpcrH+SlhSR2k4H7E7Sh44aSlRdrlu/sxAhojo9U8Umw/e2dI8K65MOs6pr2QUqcTE4uCCLFmRLbdcdsgU2u5P0ojqzysZiZgALETKq0zNVbDJ8b0v3qLA+6TCrupZdoBIX65+oPo2qENhUN9HuWvtumVWFipR0XbBrxnFUn8BUbDKu3tviovXJptL0tmQXAEATsaiY6KLt4sV3qlEhsNOTk0jtKqsbE8a966I1Lg67ZhzHlhOYyCZj0+YogovWJ4ALVnUlGvPw2sc0S1tehn2LtmuoENgTiUHBbbHEce/ashf4gV0zjuPqCczFzdFF6xNzNEeqONLGWjQuwtWS+ipRIbBnjGb3bldU1RHRAbtmGIaILScOm1wcLiJyQh+cIzbWrpbUV4mKO1Bcde+qxOVMInbNMAwRV61PqnEtSI66MaUnhzGlLE/otV3206tCxR0orrp3qZaw3TX2WS1Uwq4ZhmEC4drmSz0Rjh+SLewCs8VqJoLqk7SqMXHRvUsNxl3ro4aSaweCjtj63LAQkUyiVSnlsvT6MLmIqJzXflxgLlrNqLU2Nu6t8/X6LscuyIZauqCpTfxiRNcOBB2xdY6wECHCVUqPxvTdJ7aJPtUBlCoWEZXzWuXJ0cVg1eYo7fr1zfvqfK0hLscuyGZqeT5SIrTPXjTI1larAgVbY6tYiBBRXaWUujbYtIaouvvEVdGn+iFXsdGonNcqT462Lqi9UTowg9QuGkPCpMKqIhIOYWJJDqmtaJCtrVYFCrZac1iIEBGpUvr2Vnq2QJz9dc1S2+lA1d0nrpamt/Uh7w2V1XdVnhxVj7UKa84lk0vIbRMlFVYlqrLeXLY8cfqu4xwx9dHa+jmku3gzp6rCYK6WpnfRZKsyPVPlyVH1WKsQOtNHFZAX3ERJhQU4zkwnnL7rOJFwCOdNKCa1zUkXT33qzzdzihYGc7V2gYsBlCrTM1WeHFWP9art1aR2IkInEg5h8vBcX/3pr5iOM/ODy1kznL7bDxhELLrk5xRWkEU7WVHb2YSoidTV2gWu4mJ6pspg1WjMwysfVZHailpzXBxrlaiKM1PJ3hqauPXjFlQdhG2r1ZaFiAAqT2EuZgGohBdsfaiaeypPjiqDVVdsPYBWWoILhlgUDOsiquLMVBGNeXhu7W5SWz9xFqqDsG0NtNUiRH7zm99gxIgRSEtLw8knn4yVK1fqeFuGYQioWvxUBpSqfG3XNkeXURVnpooVWw+ghRim5+eaKup83VvjL2nB1mwz5ULkL3/5C2699VbccccdWLVqFSZOnIgzzzwTVVU00ydjLy77SpnPULWpqzQDq3xt1zZHl3HtAsq3BbL0ppXTg+7j1DbRrCj/XLfbV+kCWzP7lAuRn//85/j617+Oa665BuPGjcP999+PjIwM/P73v1f91k7hYuS4rZO6v6Jqjqja1FWagVW6SV3bHBMBWy6g9ECbG2lJYV8iNQTafPJTERZI0PTdlpYWvP/++5gzZ85nbxgOY86cOXj77bePat/c3Iza2tpOX4mAi5HjgL2BT/0RlXNE1aauMmvGhpgqWzZHRh/UbJJzji/2JVKnCYgXP6ULEjJ9d//+/YhGoxg0aFCn7w8aNAh79uw5qv2iRYuQk5PT/lVaWqqye8KoWvxsiBz3Uy5d5YnXho1GFX7GWmSOJAJUH3Zjqz11dwC3i2Ex9EPVoJxUX6+vunQBp+8SWLBgAWpqatq/KisrTXepE6oCfVQGx6ksl65yUVUZVKXKxaFyrEXmiC1pjipjiPIyaAv96x/vs+oaAOrFd9R2jF5UZ52oLl1gqxVbqRApKChAJBLB3r17O31/7969GDx48FHtU1NTkZ2d3enLJlTFRKgMjuNy6Z1R6eJQOdYipx9bMjlUxhAVDKAJkcZWf750VaisoOxinJlr6LBoqSxdkJDpuykpKTjxxBPx8ssvt38vFovh5ZdfxrRp01S+tRJUqUmVwXFcLr0zKt1gKseaOkdsyuRQefoanE23hNk0r1VVULYhzsy227BV4HqmYGNLG6md7vTdJNVvcOutt2Lu3Lk46aSTMGXKFPzP//wP6uvrcc0116h+a+mYLuHtJzgu7nOkbL6JUC5dpRvMhrG2KZND5elrSlke0pLDaCJUHttl0S2oBVk0Sw61XRyVAlvU5WjL/FOBy5mC0ZiH1z6mifK8jH6WvvvlL38ZP/3pT7Fw4UKccMIJWLNmDZ5//vmjAlgZNXC59M6odIPZMNY2ZXKoNGNHwiHMGk2zQOk+3fWGqqwFlQLbVfeuCmyNsaCwYusBNBPVqqgQDoqWYNUbb7wR27dvR3NzM9555x2cfPLJOt6W+RQul/4ZqmtE8Fh/hmoz9uTheaR2Np5OZaNSYLvq3lWBrTEWFESKsQ0m3qsmC6uyZhjGFmyyLLiKajO2y6dT2VCtPqeNLRIW2FPL80GNWNlZ3SD02q7hcvo1tRhbVmoEU8poIl8WLEQE6M+1LRhGNqu2V5Pa+RUKpmO2bIIq5iYPGyj82pFwCCOLMkltbUo7VrFeuxysSq0Ncsa4wdrjfFiICGDrhUF9wQKK0U005mHZJlrcgl8zdn+e16IZKKqtQ1lptLwG0bRjG25oFil653KwqupibEFgISKAq5PQVQHFuMvKbdWkjBYAGOJz3rk4r1UVvVMdu6Aq7Vjlmqqi6J3L7kCb41tYiAjg6iRUVogtAeoGiMKn9CPsqaUvZn4LsLl4MFCVgaI6dkFV2rHKNVVF0TubN/O+sFm4sxARQN3lYHLbdUXFw25DASXAviJKNj/sPaHilL7/cDOpXXqyv1tKATcPBq5moKhKO1a5sasoeudysKrNwp2FiAJEN8f9dbRFm9quKyoElOqL+lTe26ISmx/2nlBxSq9uoM3VmWMKfQfGuRisqvpSM9dQubFPKctDKnGwqWPtcrCqzcKdhYgA1M3xw121QpujyvsnVKGygBLgbhElmx/2nlBxSqeeYNOTxWIKXMeGoneJQiQcwvFDc6S+posHjTg2u5VYiAhA3RwbW2NYuY2WugioCwRTicoCSoC7Jmw+pR9BhwlbVTyO6tgnLnr3Ga6NtYsHjTg2u41ZiAggsjnuqaE/YAVZNPVMbacD1RVK2YStDxWndB0mbBULqy2xT4mAi2Nts1WhL2y25rAQEWBqeT7Z5ygSz9GfMy38VihlE7ZeZJ8cdSx6Kt5DdewT8xkujrXNVoW+sNmaw0JEgEg4hNljaPEO1Q32meZcg03Y7qJj0VPxHqpjnwC3My9komOsZWOTVUE0KcJmaw4LEUHSiMF1IjEAXI+D6W/oWPRUxOOojn0C6GXQbSqXrgIdYy0bHQJbVcagzQKYhYhhXPSTMvpZ98kh010QwuZFrzdUxz4BbmbJqUDHWMtGh8BWlTFoc+oxCxHDuOgnZfTS0hbD1v1uWc10LHomY6uC3M7sYpacSWy6CVtHjIiqjEGb3EpdYSFiGBf9pIxeHlleQW5ri1jVsei5Gjiooly6auHnqoVLNnuJ2ZBB5rWqjEEOVu1HyD6F2eQnta1cuooTry3xOCJjvbKCbn71K1Zlj7WORc/mE15vqCiXrnosqPEqG/fW+Xp9F4jGPDy/fi+pbU1jq+/3UZUxyMGq/QjZpzAdflIVwU8u1onQEY+jYqwbmmmxAklh/2JV9ljrWPRsPuHpRvVYNEdpNylv3ldn1ZULMlm5rRoNLbRxCBrSoiJj0GYLIgsRQWSfPKiWzOIc/xNTRfCTi3UidMTjqBjr/MxkUrsTSv2LVdljrWPRc7GKrSpUC7/SgRmkdtEYrLpyQSYiN0pPK6fHeejCZgsiCxFBZJ88VF94B6gJfnKxToSOeBwVY021sgQ5Rckea5sWPdtcjirYebCB1M5vDMclk0vIbW26ckEmOm6UVonNFkQWIoLIPoXpSOVTEfzkYp0IHfE4rpamlz3WLtdbcA0dLsfpowrIm4VN81omOm6UVgnHiDA9oiOVT0Xwk4tR9Dricbg0/RFcrrfgGjpcjpFwCJOH5/r63f6C6zdK27xmsxAxjK4L77hcOp2gdQt4rO2rt/D2VrpbzjV0lQBI9Hlt80ZOgQuaMT3Sny+8YxIXHTEiU8vzkUI8fLromaHGtthUAqA/Y/NGTsGmuK2usBBhGEY6OmJEIuEQzptQTGqbk07LPNKB7NgWF0ul2wZF9Nm8kVNYtb2a1I6DVRmGOQqqpdcmi7CuwLhBxLR2m2qJmIptsalUui5kij6bs076IhrzsGwTzYXHwaoMwxyFjhRvKlR3ga7iSS7WElF1lwhzNDJFn81ZJ32xcls1mlppxdiGcEEzxhVsKZWeCOhI8ZbtLnDdjK0SV1O8XQzWlCn6bK5M2hcixdhM3GnGQkQQDi7VU7dAhP5esEpHirdsd4HLZmzVuJriTb1vhtpOBzJFn8vi2vZibCxEBJF/1wztfS06ZGipWwBwwao4OlK8ZbsLXDZj68DFVFgdljnZyBR9OsW17AOv7cXYWIgIIlsV2+T/p6KtbgEXrAKgxwon213wieKS46pgl2PPyLbM6RprWaJPp7g2dQmlqWJsLEQEoardVTsOktq5eMrQVbeAg/r0IfPkGI15+GBnDaltEIsZIFek2eZytI2CrFRp7Vwca50xMvIvV7U7voeFiCBUZfnqR1Ukd0FdUxvp9YL4/2Wjq26Bq0F9snHt5Lhi6wG0RGlzJGhgnMyToy6Xo6tQDW6Udi6Otc6CZokWY8VCRBCZ7oJozMOWqnrS6wUt8W6CoHULXA3qk4mLJ0eq6y4tKXhgnMyToy6XI+PmWOsMVpWdlm57VVgWIoLIdBes2HoAVIdLSV4G+X37Ey4G9clE5ORoC1Tr1AQJlT5lnhy5VLo+dI61LPedjVYKasag7Rk/LEQEkekucPFUwOhFZI7YYsKmuu6Kc4LXW5B5cuRS6frQOday3Hc6g1VlZwzaKKI6wkJEEJnuAj6BMX0hEvtii1i13QwclEQslS6CzLo+MsZaljVAZ8Cn7IxB29PpWYj4QJa7gE9gTF9Q54hNYtV2MzCjFtvq+siyBugU2LIzBjlrhukR6mdeTLzYSwb9uUqpbTUiZI61TWLVdjMw4w+qu8C2uj6y3Hc6BXaiZQyyEDGIzmJmMn2OLpredWafmKgIa5O7wHYzMOMPkRik/ljXR6fATrSMQRYiBtFZzEymz9FF07vOugUyx9rFKwBsNwMz/hBxF/SHU3pXdAtsmRmDth8eWYgYRMdlZnFk+hxdNL3rzFCSOdYuXgFg+6LX39DlchRxF/RHXBbYth8eWYgYRMdlZnGmlucjmfhp7+pD0btoeteZoSTTv+viFQC2L3r9CZ0ux0RzF3TFZYFt++GRhYhBdFxmFicSDuHzY4tIbfvKp3fxZKAzQ0nmgq3TaiYLGxe9/hqErbtUeiIXGNxbI7d4mE5sPzyyEEkgJg/PI7Wz8UHShaygT1kLtk6rmSxcLvzkGlwUUQ/RmIfn1u4mta1pbFXcG3FsPzwqEyL33HMPpk+fjoyMDOTm5qp6G6fRHYho40mV6R2dVjNZuFz4yTb6suRwUUQ9HLnIkdbWkix6p1AmRFpaWnDZZZfhm9/8pqq3cB7dgYiyL1Ji1ONi1oxOZBd+0oUsS47uooi2n6xVIWJ5mlZOn5PMEZJUvfBdd90FAFiyZImqt3AeFwMRGb1w1kzvxAODKXESNqWUilpyZowOtrnJcjnur6NZS6ntbOLDXTU9/owtT2qxKkakubkZtbW1nb76My4GIjJ6sVGs9uUu0Jk1EwmHMGn4QFJbm9xXrlpybJyPfUH93Lfsa0BLW6zbn7l+HYftGT9WCZFFixYhJyen/au0tNR0l5TiYiAioxedYlWWu0B3LNJJI2hChHoLqw5cLeHt4uFJJFvokeXbuv0+dYM+qYyWEKAb21PqhYTI/PnzEQqFev366KOPfHdmwYIFqKmpaf+qrKz0/Vou4GIgImDfnS1A/03P1ClWZQV+6k4VlHe7Ku39ZIQ/uFqToyArVWo7HYhYn1Zuq+72+7Zv5H2xanv3f1dXTCUqCMWIfOc738HVV1/da5vy8nLfnUlNTUVqqj0TWDU2buh9obOAEiB+Su/JLGq7abIn6AIruFidPrIAv3l1C6ntW1v29Ri3oDugUZYFZuOenmMEOiIrHmdobjre235IymvpgnomsunsNLU8H+EQQMnebmhu6/b7LmccRmMeXvmoitTWVB0RISFSWFiIwkLORZeB7g1dFtoLKEkK6nPxRBONeVhVSdscD0jYHF0N/JSRDRaNefi4qoH0Os09xBEwdHQewiLhECaX5uC9HX0/S/k9WHJsLwjWGyu2HkArccoOMeS+VBYjsmPHDqxZswY7duxANBrFmjVrsGbNGtTV1al6S+vo7TQrsqHbxFub9BZQkhXU5+KJZsXWA6RTHABkpAZPgHPVXSCDFVsPgPo4llhmNXMNE4ewoQMzSO16suS4nLbsQtE7Zem7CxcuxCOPPNL+70mTJgEAXn31VcyePVvV22pBhrtAZHLIsCzI4oOdh0jtksJy0thkndJdPNGIzJEpkoLkZLgLXHSDiYz1pZP7dxB9b8jYkHVbVRMdF1KPlVlElixZAs/zjvpyXYQAcoL6REzbNpVmbmzt3ofaldK8dClpbJFwCBNLc0hte1v8dJ9oZLyfyByZO72M3FY1LrrBqGOdFAamB6zp4TIy6oi4cELvT7iQemxV+q4ryHAXUCeHbQVyqGl5xdnyfI2pxPe0qYiSjAU7RvTLjCzMQEqSPY+y7RH63UF9HieV5lpZJ0IX1Pogu2t7tiy6cEJ3CVkZg7KK3vnBntXLIXTWALCtQI6J2icuFlGS0WdqdsagAfbUx3AhQj8IJhdrG0hPpnnzK6sbe6w1QxXYEyxa+0y4GxPpQkcWIj7QGdRn28JnovaJi0WUZPTZRQHmQoQ+45+JJbmkdm2xnt3SVIGdErFnezLhbuzvFzp2xJ5P2jGCXvPOl5nRcbGIErUvLdGed20XBZgJ/7/LGQ2uIXLnTU9uaRcFtomsO1kZgy4Ej7MQMYSLl5mZwsUiSmGiSXltL2bV/Eza6YraTgcm/P/9+SI225DhlnZRYJvIupMVAuBC8DgLEUPYfCroj+XSdVexlWFWPVBP2zip7XRgIkLf5mepvyEji83FO7ZMWN1khQC4UEOJhYghTJwKEin4qSMmCijJMKu6uMGauBzMxRO2LD45SKsGK9MrFTSLzdU7tkwQNAQAcKOGEgsRQ5g4FSRS8FNHTBRQSlQTtgkzsIsxRDLQfQVAHBcFciLjQgwVCxFjUNW+vFOByCn9jc20FEwXMBFAKcOs6mKMiAkzsIsxRDLQfQVAHBcFMmM3LER8ElRlmghWnVqeT/7A1xJPWi5gqoBSULOqizEiNpuB+1vsk4krAIDEtUAx6mAh4pOgkfomzJuRcAjD82mbY38yq7pQ4rg7XDSBmzADJ2rsk6krABLVAsWog4WIT4JuEqbMm8U5NCGSiGZV24rHsQmchozYJ5vr+vRkyaGKOdlXALgQcyAb3Vl3iQYLEZ8E3SRMpbCxWdUdXIwRMYGMDCUTrlJdlpzxQ2jptlT6c92W7kRfNOZh3Sf9x1VtIyxEfBJ0QzeVwuaiWTXoCczm025vfLy3ltTOphgRE8jIUDLhBnM1i81FlyF1HV1deego0bdyWzWaiWl3srLuEg0WIj4JuqGbyP+XgYl+U09WG/fW9fD77lWxjcY8fFxFG+vmNuLlLhL5cJc9J0QZGUom3GCySnjrxkWXIVUgtMWA5Zs6BwHv6eUm4a7IyrpLNFiIGMBU/n9QTPW7uZf7WDqyeV9dtyZsF09wyzfvB1XLlRi48XPLvga0GBBAPRE0Q8mEq1TnLd4ycdG9KyL6nlxV2enf+w/T1rL05LDUrLtEgoWIAUzl/wfFVL9LB2aQ2kVj6NaE7eIJ7qlVO8ltL51cKu19RUzLjyzfJu19TbOrhnbqlekq1XmLt0xcdO9OLc8nV2Ta2UX0VTfQhMjMMYVWZd25BAsRA5jK/w+KqX5fMrmE3LY7E7aLd1tUEl1g4RAwXeBG1L4QOTmu3FYt7X1NYuIKgDgySnjrJmjMlokMlEg4hDFFtANNapcMI2rNm/Rkew4yHXEh44eFiGK686Wbyv8Piql+Tx9VQJ6o3fXRVGBwkAU7NUL7i0cXZUk9hU0tzwf15Rqa26S9b1CCjLWJKwBkYCoIO0jWjEnRd8xgWvZQV5eSy+nKJsdbBBYiPgniS48R/Ruy8/+DYqpuQSQcwuThudJeTxdBFmzqWOdlJAv1qS8i4RAmE29XzbcoBiDIWJu4AkAGpoKwqbFUu7sJ8jQp+lx0KQXFFZFtzy7nGEF86dSFYdCANKE+UdCh7mXXLQDcNGEHCZKlBuhS24kwlBiTY9OCHWSsTV0BEBRTQdjpybT4r8rqxqOCx10VfaYIul67Mt4sRHwSxJduMoujPxcjso0gQbIuBtiaJMh4uXoFgKk5MrEkl9SuLXZ0/RNXRZ8pgpYucGW8WYj4JIgv3eQm42IqK+CmnzZImiNXVRVDR0qpbVcAmArCniEQHN01eNxV0WeKoKULXBlvFiI+CeJLN5nF4epJ20VLThCftIs37wLmIvQT0f9vKgh7ank+qKvDzmpa9ldXbBN9pghauoCK6fFmIRIA/7506sIgf9UMcnI0WSrdVUsOhe7utzD59/q1PrkSod8Vk/PaRUtfJBzCyKJMUlubDgYujnXQ0gWuwEIkAH4ntsmS49TD0e6aozdHk/0OYskxVU4/yKVmJi1Xfq1PJiP0g2wyJue1i5Y+AMhKowWs2nQwcHGsg5YucAUWIgHwO7FNnnaDbI4m++3XkmOynH6QS81Mnt78fs4mI/SDbDIm53WgbB+Dhar8CmW2qorhaukCUViIBMDvxDZ52g2yOZrst98YAJPl9INcaka9yE7FhXd+P2eTEfpBNhmT89rve5t2g/k9GLhoVTV9e3eQ0gWm+06FhUgA/E5skxkRIpvjG5urOv3bxVLpJsvpBwnqMylE/G4yJiP0g4gJk/Pa71iLuMFU4Pdg4KJV1fTt3a66HUVgIRIAvxPbZEbE1PJ88oe+totLw1SUfhBMltMPEtRXVUu0LlCvbxVAdQaKigh96rPY0k06pMl57XesRQS2ioqZfjdHF62qpl06rrodRWAhEgAXJ3YkHMLwfNrC1PX9XcwuMFWWPo6foL6Wthj21dPucaFWuRTBxeyCMNHCsqbyULf1FlxDRGCrqJjpd3N00apquuSBq25HEViIBMDFUwEAFOfQhEjX9+/P2QUqytID/j7rR5ZXkF9/ArGWjQguZhdQT/1tMWD5Jro1wVaoa4+qipl+N0eT1ifqmHUNAjYtnlx1O4rAQiQAfhfsZuJDrGpy+HUpuZhdYDpYy89Yr6ygFyY6dVSRcJ/6whVzbkdEYp+eXFWpsCdq6O4WbwqqKmaaPkz54UB9K6ndmsrOGYOmXdJBaj+Z7jsVFiIB8LNgR2MePiCmk6qbHNRd1x5Ljt/3Nh2s5cd919BMm1dJYTWnXepY1xP7qYOp5fnk8n87u7g1TIpVv7d4U/tCtX6K4j+gmfb6KsY6I5U2r7vekWMyTfoI/tZrl2AhEgA/m6PpaHfATUuO32BE06d7P+67WIyWCVNekKHktFtIvPV5Sw/3W5ggEg5hTBGt0nFql1ggk2LV7y3epgW2383RZL+njKCL9ng6vek0acBNV6koLEQC4CcN13S0O+DfkrN6hzlLjt9gRNMmZD+LCDUlN0ty3ZM4JXluxluMGZRNatf1uTUpVv3e4m1aYLtYzHHu9BHktvFgYJPVguOY/qx1wEIkANT02o+rPrui2XS0O+Bvc16+eT+oFStUPJB+gxFNB2v5WURM1hAB3I238JsWX9dEy1BSIVb93uJtWmC7WMwxJSmMsnyatS9uoTRZLThOkDEzHSNHhYVIAPxc0RwjmrKTFUW7A/78u0+t2kl+fRUPpP/N0dwFg4C/RYRaG0RFDREgWLyFSfxa+rZU1ZN+T4VY9XuLt2mB7XdzNB2oX5xDc9/FLTkmqwXHCRKsunEPzYrNBc0cxs8VzdQPvLwgU4n//wji/t1K4sVxkTCUPJB+N0fTvnQ/iwi1NoiKGiJAsHgLk/iN2aIatEvyaGMiir9bvM0KbOq83nu4qf3/Tbt3AXGxSj04TlCUnXQEf/E40ZiHj6to67Yq6yoVe1YRBxG5ojleLp36IGQSI7z94Me/mxqhTZVRhVlKHki/m6N5/6r4ImJDQTE/8RamzcB+YrbeEohxUWV69/N5mxbY1Jitjtk+pt27gLhYpY5fCnF99EOQ27Cpj1qJovGmwkIkANNHFZDPG/Fy6aZ9u4C/zZlqKj1mUJavPpFeezDNhN3xtGZ6vFUGq6o8xfiJtzC9Ofrp8wc7D5F+R1WqNOBvjpgW2H6yfUy7dwFxC6XpcRZ57d21TZ3+LRLfcunkUqE+yYaFSAAi4RBGCJZLN3nhXRx/m7NZU/ARxK0LpsfbxWBVwF+/TS/aft6/sZUWqFqal67M9O6n36YFtp9sH9Pu3SOIrSGmxxmgu2C3H2jolDFIjW9JCgPTR9M/TxWwEAnI4GxaFHbctWHywrs4fjZn06fdI68tfnI0Pd5+ioOlRIjBqsR2fvCzAJtetFX2uZj4nPvBT79NB6v6yfYx7d4FxNcQ0+MMABNLckntYl7njEFqfMsJpbkK41tosBAJiGgJXdOnRsBf2rEN/XbxlE41BW/dX99+mmmJ0hYQajs/+BGrphdtF/sM+LXambVQRsIhTCqhxRHlfdpv6t85pkide1d0PbChRPoMAWtFx4xBG+JbqJjvgeOITmzTp0bAX9qxDf3204fdxPLMqvpNDeprjX5WVrq+mXYnhkqLiB9LEvU+FFWLtj/rl3mXo4vxOACQSnQZxPtt2joJiK8hpgOwAf8Zg6YPYSIoEyIVFRW49tprUVZWhvT0dIwcORJ33HEHWlrcLUPbHaIT23TMAuAv7diGfosGmrW0xbC7ljbfVJ14RYL63tqyD9GYh4rqpr4bQ61FRHQRa2mLYet+szVF/Cy8Nmzofvq9u4Y21jZZKG3YGEXXEBvmh9+MQRsOj1SUCZGPPvoIsVgMDzzwANavX49f/OIXuP/++3H77bereksjiG7QNpwK/KQd29Bv0UCzR5ZXkF9ZVY0IkaC+Tw42YvlmeqR7cY49cQsiY60qNZMag9CxkqoNm6PoWEdjHioOmLX0ibx2vJ0dG6PYGmLD/AD8pdPbcHikoqYiEoCzzjoLZ511Vvu/y8vLsXHjRixevBg//elPu/2d5uZmNDd/pixra2tVdU8aohu0DRM7nnZMeSTjacc29Fs00GxlxYE+Wn6GqnTBqeX5iACkolme5wmlOJ5criqzQHwRs2Gsw2GaENm870g8TiQcsmJzFB3r5Zv3k7fTCcSqrX4QtS7YsDGKriE2zA/A30HQjsMjDa0xIjU1NcjLy+vx54sWLUJOTk77V2mp2dxmCi7GiPhJO7ah36Jj3UC8pl5ljYhIOISRRZmktvvrWlBZTUtxBIC508v8dqtPRBcxG8aaes17x+wCG4rHiY61iFg9dVSRrz7RELMu2LAxiq4hNognwM1AfRG0CZHNmzfjvvvuw3XXXddjmwULFqCmpqb9q7LSngu1eoJqDo63s2HhA8TTjm3ot6gYisVoQbnlBRlK09ey0miGx6a2KJpaaYtCfkYyUhSWVxdfsJNJ7U8oVVcKW+Sa93h2ATVwm9rOD6JjbUc9DnHrgg0bo6j7zgbxBIjvM4Adh0cqwivZ/PnzEQqFev366KOPOv3OJ598grPOOguXXXYZvv71r/f42qmpqcjOzu70ZTui6V17ammBiCoXPkC83zYs2KKnE2pfqELBLyKLCDUTZlie2pLM4vEWtH4PyVHXb5Fr3uPZBTYs1tTX3lNzxG1tQz0OwE1rMNV9t3X/keJgNognwF8asS3WHArCK/B3vvMdXH311b22KS8vb///Xbt24bTTTsP06dPx4IMPCnfQdqiVGRtb26wJMgPEF5G6JlpKqcp+i55ObFj4ALFFxIYaIoD4gm1DdkFKUhiDB6Rgz+G+50lc8NmwWBcOoFknd9U0oaUtRrY65mXQrFR+EU+FNW9Vpbrv2mJH0uk7Bjb3hm3rNWCPNYeCsBApLCxEYSEt2OyTTz7BaaedhhNPPBEPP/wweXFziZY24sbR5lkTZAaIndKjMQ+biLc4qkyopz6Mm/fVfdoV8wsfILaI2FBVFRBfsG05OZYXZmHP4eo+28XFoQ2LdYmAdeuR5dussE4C6iyUKvs9ZUQ+lm6oIrV9Y3MVtlTVk9qqLHgH+HPN2PJMUlCmDD755BPMnj0bw4YNw09/+lPs27cPe/bswZ49e1S9pRGo16DvO9xsUZCZ2Cld5BbHzDR1pzDqnQtVh1vQ0hazYuEDxBYRWywiIvEWb2yussb6JGKhBOyoxyF6b4stY+2ihVLEfffBjkOkbDdAbWVVkdfv2M6G8aaiTIgsXboUmzdvxssvv4ySkhIUFxe3f/Un0lOIm2NdC3YQMyJUB5kBYmpZ5Kr0KWU9Z0UFhXrnAnDk5GjLgyiyiNhiERFZsNdW1ljh4gDELJTRmIftFrhKRSpn1je1OmnpA4D9h2ljrbLfKUlhFGfT5iB1vQbU1caJIyqwAXsswhSUCZGrr74anud1+9WfENkc9x+mBaqqDjIDxE7p1KvSAbUppSJ3LqzcVm3NgyiyYNtiEUlJCqMwkyayG1vbrHBxAHQLZWpSGCu2HgDVFqbS9B4JhzCaWDkToZA1lj6RINtozMOmfTQhonpuF+fSREN9C23zB9TVxokjIrDjbNlX10vLz1A9Tyj0v6ANzYhsjjUNtEVYdZAZIHZKp6rxogEpSlNKRU+OzW3EBZvYzi8qsmZUW0QAoCibtmC3tNmTXSAiREQsfaoq78bJTKWLPlssfSJBtss27iO7d0sUWxeoz2OUeHttkgYLNnVeN7R8duVCVZ35BAMqLEQCIrI5NhOVvg6FKmLqo07UUYXqbs0EfJwcLREiLmbNAGKbui2bo8hYi1j6bDrx2mLpEwmy/dnSj/pu9CmXTlZbyJI6R6hCpHSg2jpEAJCWTHtuKg8eyWITuXJBdWIEBRYiAYmEQxieRzsZUOeqDoXq4sIHAFnEYNimtihSkojWBWI7v4iIPhtu3o0jIkRsmSMiY01tqyNmS2SsbRHYIkG21IrB4RAwXcDK7Afq504VIhkp6tdrqvWp7dOLSkWuXFCdGEGBhYgEMlNpmyNViOgoMEPdyBpa2qxZ+AAxNwc1y4bazi9U0bd9fwO2W3DzbhwR64ItcQvNrcR+tMaELH3KY7YcFCIi1uBWYl+G5qQpH2vq80hF9UEGELM+vbG5yoorF0RgISIB6qZOFNhaCswQ12vsqG60ZuEDxDbHrcRgLdWndKpZtbqxjexHp25cQVDhvlNt7WslCp3WqD2FwQA3M6tEXKUh4swuGKD+EEZ9dqiCSPVBBhCzPq2trLHmegsqLEQkQD2dUg+x1PtGgkC9Qj7qAU3E6HEd7gLq5ljf3EKqsAmoty6UKgh0VPGaXRFx39mQmgkAHnHDO9xsl6VPRPTtI1an1WE1o7pKQRRaOjZ1qhCh7s86XNJTBW7abmylz+0sYpC0aliISIC8ARMnrI6Fb0oZfWIfbKTFLehY+KibY/xeDgqqo/QvmVwi/TVVB/QB9HmdHIY1qZlpybSNsaq2xSohQp3Xza0x7DxEm9s6rGZUV6lNmzrV+kS1YOuYH5FwCCW5qaS2LW2eVXObAgsRCcheXHX4HEUKVjVaZBGhvkcj1fcE9Zv69FFyg+90BPQB9Hld3dBqTWom1dIXA9DU7N68biZaTgA9VjMXN3XZwaq6NvPCLJoQSYnY476jwkJEAtQPM2KReVKkYBV1EdFiEaGmQBMXhzDUb+qRcAhjqGnHBHQE9AH0eV1LvBARUC/6RCx9VfX2uDio77GPWBsC0GM1o9aFsWlTp1qfqJ+6rs1cJLXfpjIAFFiISID6YcYsSXGMQy1YZdMDSX0PanDc8Px0LZs6tWAVhdRkuxa+emKEvg5Ljoilj5rJYdO8psaP6bKayXbN2DTWxHhPbZu5iJWDLSIJCPXDpGYu6jL1ufhA0kUf7fUyiHcFBUVmymCInDQZDGqMAdULpsOSk5IUxsB0WmaOTZY+6hi2WDTWgMhlb7R2No019ZFli0hwWIhIgPphtlrkJxV5H/IDqSG2Rb7oo/vcgyBzsUomnkKDQr3QkYrqq9I/ex+aL51qeNSx0VBjW6joGmtqvEUb2aWq/nmUPdZsEQkOCxEJyI5Ol/2g9AS15gIVHbEt1NMM+fpuTdYFmeKyJao+vRsQu9CRgq4Fm5rCS+2Ojn6LxLZQ0DXW5HgL4mOm43mUPda61mu2iDC9IvvkeLJAzngQqAs2FR13Fsh+6HVZF2SKPl3iSeRCRwq6Tl8pEaJrhvh6Ok7pIrEtFGyz9FGnv47nUfZY61qv2SLC9Irsk+Pc6WVSX68nUpPkCigddxbIPs3oqLUAyBV9usSTSBElCvpO6XItRjnpNFdPEERiWyjoEqvUz5T6yVOrEAchJSmMnFR576NrvRapDbKdeLcPW0T6ETJPjvkZyUjRtDnKVMPhkPqLwQD5pxldD6JM0Sd7o+2JSDiEoTnyYg10nb4aJcdYnXHcIKmv1xPU2BYKusSqbCGvo/YJAAyVVM8mNz1J23pNtaruPNiA6gaaRUzXQawv7OiF48g8OQ4TuNwoKDLjFooGpOipbSH55GibCZuC7I22N2RmFekSfemSF9drZpRLfb2ekGk107XByHZL66h9AshzlQ7RFB8CACHi+lrbTP/bdAm/vmAhIoFIOITBki5r0mkqkxm3MEDjnQUyT44uBqumazBfx5G5OWoTfRIv1tNroZTXb13riEy3dAh6ap8A8ua1LuskABw7WH4Mni7h1xcsRCSRlSZnEdG1WAOgpvaT0GUKBtyMt2ijFq0gMK44W9pr9YXMzVFb3ILEzWFghj6BLfNgIFIKPggy3dJDc/XUPgHkzWud1slLT5R7Z5VO4dcXLEQkIWti61qsAaBogDw3kM6TgczNUUdwHABkp8u7Sv6yE4dJe62+kLk56hJ9TRKtATo3GpkCW1e/Zbql0zRVDAbkrVey3YC9IfvOKp3Cry9YiEhC1oKt07Ig06wqcslcUGSKHl0+0jPGDZbyOrpPMTI3R131TwYNkOe317nRyBTYutx3kXAIg7PkiGydh7AGYqn8vpDpBuwL2cHjaRoKUFJhISIJF32OMs2quu7HAeQtIoA+H+nVM+Sk+A3SFBQcR+bmqCMNFgDOPE6O6AP0bjQyn32d7rs8STFbOg9hsvS1zvUakCswdVr7+oKFiCRc9DlKrROhUVzLOjnptC6kJIWRmRz8ccvL1FO6O47MhVZXGqws0Qfo3WhkPvs63XeyxkjnWNPvyOkdnZZgQO4hTKe1ry/s6YnjuOhzjIRDGCTJrJqhMZMjXcKGDuj3kRbnBD856j6BydwcdaXBpiSFkS7J7Kxzo5H1DOl238maIzrHWtZt2LKrU/eFTPeVTmtfX7AQkYSLPkcAiEiqb6Gz37LeS7ePVEa/dZ/AMiXVichKCWtLgwWAgRlyBLZOl2NRtrwiWzoFtqzDk86xPrZYTiqsrtu748g6hAH6DzW9wUJEEuGQnKHUlcXRjqRnf0iuvkJsslJhdW/qMh58nYs1IG/Bzk7Tu2BLQ6NWlRU8LnOzomDTyZqKrFRYnbE4gNyx1r3+9QYLEUkMypYTqW9LpTtRdF38BMhLhdW9qcv07+pCdu0C19B54pV9yaAupJ2sNYo+WamwOmNxALlWDN3rX2+wEJGErEh9WyrdiaLr4idAXiqsdux57snIrl3gGjpPvLIvGdSFLIE9WJJrikIkHEJOavDtT3dBMKmHGXuyd1mIyEJGpL5Nle5ESImEtPr/ZWZFOIfmxSMSDqEo0z23iqzTns4Tr6zNUTey3NJnjtd7wAgaR5ORHNZeEEzWWAN6hV9fuDfrLUVGpL7uIDNZZKXo9kmHobEIo1XoDo4DgDaLTLhUZNy1YuJg4OLzL8strSurKk7QKWKiIJissQb0C7/eYCEikaCR+mkG8rrD4eDvaeIq6QEy7vbRvI7IGGvdwXEAILHKuzaSJQT15aTpPxhovPNSGjLc0pmas6oAIBzQV2oixkJmsT7dwq83WIhIJOjEbDaQTiVHYes/GaRIqMKo2zQpY6x1B8cBgJQMb81TZGRhZuDXCIf0bzQujrUMV2m2xtu7ZRHz9K97stzSGcn6hV9v2NOTfkDQq95NnDxlKGwTAqpFwmDpNk3KGGsTMUQyRJ9ul9I3Zo4M/BomrBMuCuyUpDCCemdNrCGtAYVE1NO/YMsYa8Cue2YAFiJSCVrfwsTElqGwTSzYMmqJ6DZNBh3rrBT9wXGAHNGn26V0yujCwK8hqdafEK0S5rUJ3396SjBXmIk1JCugFSYsqUy8KHkSivXZ5gJkISKRWEDXjImJLSPwU+ddVe0EHKvUCLSbJlOSwgiyXEcMLXyehEh93S6lSDgU+ORoIgZARmyLCd9/0HgLE6LvtGOKAv1+kcTAURFkHAxMjHdvsBCRSHIkmMI2NbGzAqYMDs8L7o8XJS8j2L0taYaqQWYG2B1NWMwAoDAr+EV7JlxKSQGtRzEDsU9BY1tMCGwg+CVyJkTfwvOPC/T7lxgq9ifDGmxTMTOAhYhUCgcEW7BNTeymgLEtZx1fLKkndGaMClb8ydSmHuR9o5JK24ty8eRg8zIlYiYtNeiFZJmp+sVq0NgWU+m/QTdHE6IvqDvp2lOCxyH5IRoLvnY1W+abYSEikaALtrGJHXBOmjAF/+C8YKcZU5t6kDXE1Nrx1VPsSfMTIeiefOKwgXI6IkDg2BZDcyTo2xYOCH4ztR+CTBFTWSehUHCBnGzEn94zdvXGcYIs2GGYm9hBTNjhkJl+Bz3NBDUl+yUW4H1N1JkBjny+Qd7ZlBU46IL9pZOGS+oJnUg4FChmK2Qg5RgAMlKCBVCasga7SJaECySPHTxAQk/kwUJEIkE2ZJMCNUhqpcmgpyCXjKYaSl8LMtYmipnFcbDgZ+AF28XrFgwZ+jCqKFhsiylrcNA4IhMEDbIFgG/OGi2hJ/JgIWIJJqtXDgsQbGqy30FO2iPys+R1RICxAU4iJhePIBuc7mvp4wRZsCMhc/EWQVxwMq+JFyFIbEsI5qzBRdn+XEJpBnfOoEG2AHDKMcHT22XCQkQyLg7oWRbdOSBEgH3CRIAtAFw/y/+CbXLxCLInm7LkBFmwTSYVRAKYGU2Z3IPEtpgMm7ziZH/ut2kj8yT3hE5Qt7RJkd0TLu6bVuNX2QdNoQ1CkEJbJvsd5I4bU/csBFmwTS4eaQEWP1OWnKALtinyM/1n35kaa9s2NipfO9XfOnDfFZ+T3BMxgoy2ZZm7AFiISKfcZx2AM483Z5UIYhY12e/h+f5dSqZMwa4u2McPzfH9u7aZgSmYvPokiEvJxbEOXifUP74PjhICRoNgoZYIhNLV+IILLsCwYcOQlpaG4uJifOUrX8GuXbtUvqVxbjtjrK/f+88LJkjuiRh+t0eT/fY71qbx89CZvhIsiEvJpPjyu8BNCCC8ghLEpWRyrJN9vvfIogzJPRGjWDBOZIDphxHBAvUty9wFoFiInHbaafjrX/+KjRs34qmnnsKWLVtw6aWXqnxL48zyeSIxbUZO8emXNtlvv2NtmgIfhe9OGaW/pkWn95dwd4sJ/BYlu2H2GMk9oWN6LfCL38DP7505TnJPxPjHjacKtV962+mKekInK82/Hal0oJkK3r2hVIh8+9vfxtSpUzF8+HBMnz4d8+fPx4oVK9Da2qrybY0SCYeErQs2GOuPHWIuNdQvfk9/E4r1l6TvyN0XHi/8O7++coqCntDxO9ZphvfUs30GJbvo4sgxUxOsHb+BnzOPDZ6OGoTC7FTyHVBpSWEMzjW/kQe5yfuyz+m994mCNiNNdXU1/vjHP2L69OlITu5ezTU3N6O2trbTl4ucOkqs/sCNpwe/ATcoj1xzsvDvZJl07n5Kuo/qT3/4+gwFPaFz+rhBwr9j2icNABk+7MHnnWAmOynOXReM9/V7pmN5ctPFP++vzRqloCcC7+8z8NP0WAPAlnvPJbX76O6zFfeExh0B3Hemarb0hnIh8r3vfQ+ZmZnIz8/Hjh078Pe//73HtosWLUJOTk77V2lpqeruKeG3V54o1P5bp5mPdcjxcbX0zy6epKAnYpx//FDh3/Hzt8okEg7h9rPpi8FLt8xS2Bs61/mIE/mvCycq6AkdP26OEbnmFfa9F4vHXl0302yRKj+Bn4Xp5kVInIp7z+11Q6wgihUdBHHfmQrU7w3hHs2fPx+hUKjXr48++qi9/Xe/+12sXr0aL774IiKRCK666qoeb/5bsGABampq2r8qKyv9/2UGyUpLwoQSmqvjupll1kyMGSPFLpKbM9HsaRcA7vqi2Ik337D5Os43ZtHEZwjAqMFmiq915ZuzxU7cYdgR73C8oNvx6Rtnq+mIAF8QNL0nwY4N5uIThgi1/+e3zcdbdGTrvefi1VtnI/XTmLnUSAiv3jrbKhESxx4JF5yQJ3gf8L59+3DgwIFe25SXlyMl5eiAvJ07d6K0tBTLly/HtGnT+nyv2tpa5OTkoKamBtnZ7sUwXPDrN7B2Z8/upetmlmHBOWYDtTpS19SG8Xe+QGp7x3njcM0p5l1KAHDZr5bi3V0tpLbv3j4HhT6D6lQwYv7/9fizEIBtli2AN//5bfz9g2pS2xXzT7fCn17T0IqJ//kiqW1OWhI+uPNMxT2i8b+vb8Td/9xMamvLWDe2RHHswudJbTOSw9jwX3a4OlzkgvvewNpPxMIXZo3MxSOaXNMi+7ewhC4sLMTYsWN7/epOhABA7NOrR5ubm0Xf1kn+ceOp+PDOMzGxi6HhPyaX4uO7z7ZKhABilhxbRAgAPHHTF0jtstOSrBIhwBFz77M3nNLpe5HQEXeMbSIEAH75//o+QABHyrrbsDECR1xxw/PTSW1tESEA8LWZx5Da2TTW6SkRfGEcLfiURUgw/nDtVOHf+c1XxGMBdSBsEaHyzjvv4N1338Upp5yCgQMHYsuWLfjhD3+IvXv3Yv369UhN7XtDcN0i4ip9WXJsNFMCvVsXstOSsNaiTcZ1ehvr9OQw/m3hJjPrJ69g+4HGHn/u4ry2day//ui7WLqhqsef2zrWrnHc/P9DPbHtyIIMvHzbaUr70xGR/VuZEFm3bh1uvvlmfPDBB6ivr0dxcTHOOuss/OAHP8DQobQAQxYi5qhrasPXf/cG3q5sAHCkgM6/bpplTbxCT6ypOIQv3v9W+78Ls5Lxz5tmWWcJ6Q+s21GD83/7Zvu/c9MieP6W2daczrujpqEVX/z5i9hW99n3/vq1aZgyytzdIRQ27KzFOb9+o/3fLox1Y0sUNz36OpZubmj/3p+uPhnTx7p3q7HN9CZUO6Jb/FkhRGTAQoRhGIZheqcvMWLCAiWyf5svTsAwDMMwjG8q7j0Xyz/aj/9Y8k6n77tg7QNYiDAMwzCM80wfW+Bs7I35xHOGYRiGYRIWFiIMwzAMwxiDhQjDMAzDMMZgIcIwDMMwjDFYiDAMwzAMYwwWIgzDMAzDGIOFCMMwDMMwxmAhwjAMwzCMMViIMAzDMAxjDKsrq8avwamt7fkmWIZhGIZh7CK+b1Ous7NaiBw+fBgAUFpaargnDMMwDMOIcvjwYeTk5PTaxurbd2OxGHbt2oUBAwYgFApJfe3a2lqUlpaisrKSb/btBh6fvuEx6h0en77hMeodHp/esXl8PM/D4cOHMWTIEITDvUeBWG0RCYfDKCkpUfoe2dnZ1n2ANsHj0zc8Rr3D49M3PEa9w+PTO7aOT1+WkDgcrMowDMMwjDFYiDAMwzAMY4yEFSKpqam44447kJqaarorVsLj0zc8Rr3D49M3PEa9w+PTO/1lfKwOVmUYhmEYpn+TsBYRhmEYhmHMw0KEYRiGYRhjsBBhGIZhGMYYLEQYhmEYhjEGCxGGYRiGYYyRkELkN7/5DUaMGIG0tDScfPLJWLlypekuGeP111/H+eefjyFDhiAUCuFvf/tbp597noeFCxeiuLgY6enpmDNnDjZt2mSmswZYtGgRPve5z2HAgAEoKirCF7/4RWzcuLFTm6amJsybNw/5+fnIysrCJZdcgr179xrqsV4WL16MCRMmtFd2nDZtGv71r3+1/zyRx6Yn7r33XoRCIdxyyy3t30vkcbrzzjsRCoU6fY0dO7b954k8Nh355JNPcOWVVyI/Px/p6ek4/vjj8d5777X/3OW1OuGEyF/+8hfceuutuOOOO7Bq1SpMnDgRZ555Jqqqqkx3zQj19fWYOHEifvOb33T78x//+Mf41a9+hfvvvx/vvPMOMjMzceaZZ6KpqUlzT82wbNkyzJs3DytWrMDSpUvR2tqKM844A/X19e1tvv3tb+PZZ5/FE088gWXLlmHXrl24+OKLDfZaHyUlJbj33nvx/vvv47333sPnP/95XHjhhVi/fj2AxB6b7nj33XfxwAMPYMKECZ2+n+jjdNxxx2H37t3tX2+++Wb7zxJ9bADg4MGDmDFjBpKTk/Gvf/0LGzZswM9+9jMMHDiwvY3Ta7WXYEyZMsWbN29e+7+j0ag3ZMgQb9GiRQZ7ZQcAvGeeeab937FYzBs8eLD3k5/8pP17hw4d8lJTU70///nPBnponqqqKg+At2zZMs/zjoxHcnKy98QTT7S3+fe//+0B8N5++21T3TTKwIEDvf/93//lsenC4cOHvdGjR3tLly71Zs2a5d18882e5/EcuuOOO7yJEyd2+7NEH5s43/ve97xTTjmlx5+7vlYnlEWkpaUF77//PubMmdP+vXA4jDlz5uDtt9822DM72bZtG/bs2dNpvHJycnDyyScn7HjV1NQAAPLy8gAA77//PlpbWzuN0dixYzFs2LCEG6NoNIrHH38c9fX1mDZtGo9NF+bNm4dzzz2303gAPIcAYNOmTRgyZAjKy8txxRVXYMeOHQB4bOL84x//wEknnYTLLrsMRUVFmDRpEh566KH2n7u+VieUENm/fz+i0SgGDRrU6fuDBg3Cnj17DPXKXuJjwuN1hFgshltuuQUzZszA+PHjARwZo5SUFOTm5nZqm0hjtG7dOmRlZSE1NRXXX389nnnmGYwbN47HpgOPP/44Vq1ahUWLFh31s0Qfp5NPPhlLlizB888/j8WLF2Pbtm049dRTcfjw4YQfmzhbt27F4sWLMXr0aLzwwgv45je/iZtuugmPPPIIAPfX6iTTHWAYV5g3bx4+/PDDTv5rBjjmmGOwZs0a1NTU4Mknn8TcuXOxbNky092yhsrKStx8881YunQp0tLSTHfHOs4+++z2/58wYQJOPvlkDB8+HH/961+Rnp5usGf2EIvFcNJJJ+FHP/oRAGDSpEn48MMPcf/992Pu3LmGexechLKIFBQUIBKJHBVxvXfvXgwePNhQr+wlPiY8XsCNN96I5557Dq+++ipKSkravz948GC0tLTg0KFDndon0hilpKRg1KhROPHEE7Fo0SJMnDgRv/zlL3lsPuX9999HVVUVJk+ejKSkJCQlJWHZsmX41a9+haSkJAwaNIjHqQO5ubkYM2YMNm/ezHPoU4qLizFu3LhO3zv22GPbXViur9UJJURSUlJw4okn4uWXX27/XiwWw8svv4xp06YZ7JmdlJWVYfDgwZ3Gq7a2Fu+8807CjJfnebjxxhvxzDPP4JVXXkFZWVmnn5944olITk7uNEYbN27Ejh07EmaMuhKLxdDc3Mxj8ymnn3461q1bhzVr1rR/nXTSSbjiiiva/5/H6TPq6uqwZcsWFBcX8xz6lBkzZhxVNuDjjz/G8OHDAfSDtdp0tKxuHn/8cS81NdVbsmSJt2HDBu8b3/iGl5ub6+3Zs8d014xw+PBhb/Xq1d7q1as9AN7Pf/5zb/Xq1d727ds9z/O8e++918vNzfX+/ve/e2vXrvUuvPBCr6yszGtsbDTccz1885vf9HJycrzXXnvN2717d/tXQ0NDe5vrr7/eGzZsmPfKK6947733njdt2jRv2rRpBnutj/nz53vLli3ztm3b5q1du9abP3++FwqFvBdffNHzvMQem97omDXjeYk9Tt/5zne81157zdu2bZv31ltveXPmzPEKCgq8qqoqz/MSe2zirFy50ktKSvLuueceb9OmTd4f//hHLyMjw3vsscfa27i8ViecEPE8z7vvvvu8YcOGeSkpKd6UKVO8FStWmO6SMV599VUPwFFfc+fO9TzvSFrYD3/4Q2/QoEFeamqqd/rpp3sbN24022mNdDc2ALyHH364vU1jY6N3ww03eAMHDvQyMjK8iy66yNu9e7e5Tmvkq1/9qjd8+HAvJSXFKyws9E4//fR2EeJ5iT02vdFViCTyOH35y1/2iouLvZSUFG/o0KHel7/8ZW/z5s3tP0/ksenIs88+640fP95LTU31xo4d6z344IOdfu7yWh3yPM8zY4thGIZhGCbRSagYEYZhGIZh7IKFCMMwDMMwxmAhwjAMwzCMMViIMAzDMAxjDBYiDMMwDMMYg4UIwzAMwzDGYCHCMAzDMIwxWIgwDMMwDGMMFiIMwzAMwxiDhQjDMAzDMMZgIcIwDMMwjDH+P9jHwU1JkL0cAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "from myst_nb import glue\n", "\n", "n_cycles = 10\n", "n_samples = 10000\n", "amplitude = 3\n", "phase = np.pi / 4\n", "end = 2 * np.pi * n_cycles\n", "x = np.linspace(0, end, num=n_samples)\n", "y = amplitude * np.sin(x + phase)\n", "\n", "chosen_idx = np.random.choice(n_samples, size=100, replace=False)\n", "data = pd.DataFrame(np.nan, index=x, columns=['raw'])\n", "data.iloc[chosen_idx, 0] = y[chosen_idx]\n", "\n", "# plotting\n", "fig1, ax1 = plt.subplots()\n", "ax1.set_title('Raw Data')\n", "data.raw.plot(marker='o', ax=ax1)\n", "data['lin_inter'] = data.raw.interpolate(method='index')\n", "fig2, ax2 = plt.subplots()\n", "ax2.set_title('Linear Interpolation')\n", "data.lin_inter.plot(marker='o', ax=ax2)\n", "data['quad_inter'] = data.raw.interpolate(method='quadratic')\n", "fig3, ax3 = plt.subplots()\n", "ax3.set_title('Quadratic Interpolation')\n", "data.quad_inter.plot(marker='o', ax=ax3)\n", "\n", "glue(\"fig1\", fig1, display=False)\n", "glue(\"fig2\", fig2, display=False)\n", "glue(\"fig3\", fig3, display=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`````{admonition} Exercise: Missing Data\n", "* Create a vector of 10000 measurements from a 10-cycle sinus wave. Remember that a single period of sine starts at 0 and ends at 2$\\pi$, so 10 periods span between 0 and 20$\\pi$.\n", "````{dropdown} Solution\n", "```python\n", "n_cycles = 10\n", "n_samples = 10000\n", "amplitude = 3\n", "phase = np.pi / 4\n", "end = 2 * np.pi * n_cycles\n", "x = np.linspace(0, end, num=n_samples)\n", "y = amplitude * np.sin(x + phase)\n", "```\n", "````\n", "* Using `np.random.choice(replace=False)` sample 100 points from the wave and place them in a Series.\n", "````{dropdown} Solution\n", "```python\n", "chosen_idx = np.random.choice(n_samples, size=100, replace=False)\n", "data = pd.DataFrame(np.nan, index=x, columns=['raw'])\n", "data.iloc[chosen_idx, 0] = y[chosen_idx]\n", "```\n", "````\n", "* Plot the chosen points.\n", "````{dropdown} Solution\n", "```python\n", "fig1, ax1 = plt.subplots()\n", "ax1.set_title('Raw data pre-interpolation')\n", "data.raw.plot(marker='o', ax=ax1)\n", "```\n", "```{glue:figure} fig1\n", " :figwidth: 500px\n", "```\n", "````\n", "* Interpolate the points using linear interpolation and plot them on a different graph.\n", "````{dropdown} Solution\n", "```python\n", "data['lin_inter'] = data.raw.interpolate(method='index')\n", "fig2, ax2 = plt.subplots()\n", "ax2.set_title('Linear interpolation')\n", "data.lin_inter.plot(marker='o', ax=ax2)\n", "```\n", "```{glue:figure} fig2\n", " :figwidth: 500px\n", "```\n", "````\n", "* Interpolate the points using quadratic interpolation and plot them on a different graph. \n", "````{dropdown} Solution\n", "```python\n", "data['quad_inter'] = data.raw.interpolate(method='quadratic')\n", "fig3, ax3 = plt.subplots()\n", "ax3.set_title('Quadratic interpolation')\n", "data.quad_inter.plot(marker='o', ax=ax3)\n", "```\n", "```{glue:figure} fig3\n", " :figwidth: 500px\n", "```\n", "````\n", "`````" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Categorical Data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "So far, we've used examples with quantitative data. Let's now have a look at [categorical data](https://pandas.pydata.org/pandas-docs/stable/user_guide/categorical.html), i.e. data can only have one of a specific set, or categories, of values. For example, if we have a column which marks the weekday, then it can obviously only be one of seven options. Same for boolean data, colors, and other examples. These data columns should be marked as \"categorical\" to reduce memory consumption and improve performance. It also tells the code readers more about the nature of that data column." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The easiest way to create a categorical variable is to declare it as such, or to convert as existing column to a categorical data type:" ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 a\n", "1 b\n", "2 c\n", "3 a\n", "dtype: category\n", "Categories (3, object): ['a', 'b', 'c']" ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s = pd.Series([\"a\", \"b\", \"c\", \"a\"], dtype=\"category\")\n", "s" ] }, { "cell_type": "code", "execution_count": 55, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "DataFrame:\n", " A B\n", "0 a a\n", "1 b b\n", "2 c c\n", "3 a a\n", "\n", "Data types:\n", "A object\n", "B category\n", "dtype: object\n" ] } ], "source": [ "df = pd.DataFrame({\"A\": [\"a\", \"b\", \"c\", \"a\"]})\n", "df[\"B\"] = df[\"A\"].astype(\"category\")\n", "print(f\"DataFrame:\\n{df}\")\n", "print(f\"\\nData types:\\n{df.dtypes}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can also force order between our categories, or force specific categories on our data, using the special CategoricalDtype (which we won't show).\n", "\n", "As we said, memory usage is reduced when working with categorical data:" ] }, { "cell_type": "code", "execution_count": 56, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ab
00.066624a
10.854047a
20.544826a
30.464085a
40.405314a
.........
99950.823350a
99960.744166a
99970.059290a
99980.256323a
99990.298485a
\n", "

10000 rows × 2 columns

\n", "
" ], "text/plain": [ " a b\n", "0 0.066624 a\n", "1 0.854047 a\n", "2 0.544826 a\n", "3 0.464085 a\n", "4 0.405314 a\n", "... ... ..\n", "9995 0.823350 a\n", "9996 0.744166 a\n", "9997 0.059290 a\n", "9998 0.256323 a\n", "9999 0.298485 a\n", "\n", "[10000 rows x 2 columns]" ] }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_obj = pd.DataFrame({'a': np.random.random(10_000), 'b': ['a'] * 10_000})\n", "df_obj" ] }, { "cell_type": "code", "execution_count": 57, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ab
00.066624a
10.854047a
20.544826a
30.464085a
40.405314a
.........
99950.823350a
99960.744166a
99970.059290a
99980.256323a
99990.298485a
\n", "

10000 rows × 2 columns

\n", "
" ], "text/plain": [ " a b\n", "0 0.066624 a\n", "1 0.854047 a\n", "2 0.544826 a\n", "3 0.464085 a\n", "4 0.405314 a\n", "... ... ..\n", "9995 0.823350 a\n", "9996 0.744166 a\n", "9997 0.059290 a\n", "9998 0.256323 a\n", "9999 0.298485 a\n", "\n", "[10000 rows x 2 columns]" ] }, "execution_count": 57, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_cat = pd.DataFrame({'a': df_obj['a'], 'b': df_obj['b'].astype('category')})\n", "df_cat" ] }, { "cell_type": "code", "execution_count": 58, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index 128\n", "a 80000\n", "b 80000\n", "dtype: int64" ] }, "execution_count": 58, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_obj.memory_usage()" ] }, { "cell_type": "code", "execution_count": 59, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "Index 128\n", "a 80000\n", "b 10116\n", "dtype: int64" ] }, "execution_count": 59, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_cat.memory_usage()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A factor of 8 in memory reduction." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Hierarchical Indexing" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Last time we mentioned that while a DataFrame is inherently a 2D object, it can contain multi-dimensional data. The way a DataFrame (and a Series) does that is with [hierarchical indexing](https://pandas.pydata.org/pandas-docs/stable/user_guide/advanced.html), or sometimes Multi-Indexing." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Simple Example: Temperature in a Grid" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this example, our data is the temperature sampled across a 2-dimensional grid. First, we need to generate the required set of indices, $(x, y)$, which point to a specific location inside the square. These coordinates can then be assigned the designated temperature values. A list of such coordinates can be a simple `Series`:" ] }, { "cell_type": "code", "execution_count": 60, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(r0, c0) 1.20\n", "(r0, c1) 0.80\n", "(r0, c2) 3.10\n", "(r1, c0) 0.10\n", "(r1, c1) 0.05\n", "(r1, c2) 1.00\n", "(r2, c0) 1.40\n", "(r2, c1) 2.10\n", "(r2, c2) 2.90\n", "Name: temperature, dtype: float64" ] }, "execution_count": 60, "metadata": {}, "output_type": "execute_result" } ], "source": [ "values = np.array([1.2, 0.8, 3.1, 0.1, 0.05, 1, 1.4, 2.1, 2.9])\n", "coords = [('r0', 'c0'), ('r0', 'c1'), ('r0', 'c2'), \n", " ('r1', 'c0'), ('r1', 'c1'), ('r1', 'c2'), \n", " ('r2', 'c0'), ('r2', 'c1'), ('r2', 'c2')] # r is row, c is column\n", "points = pd.Series(values, index=coords, name='temperature')\n", "points" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It is important we understand that this is a series because _the data is one-dimensional_. The actual data is contained in that rightmost column, a one-dimensional array. We do have two coordinates for each point, but the data itself, the temperature, is one-dimensional.\n", "\n", "Currently, the index is a simple tuple of coordinates. It's a single column, containing tuples. Pandas can help us to index this data in a more intuitive manner, using a MultiIndex object." ] }, { "cell_type": "code", "execution_count": 61, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "MultiIndex([('r0', 'c0'),\n", " ('r0', 'c1'),\n", " ('r0', 'c2'),\n", " ('r1', 'c0'),\n", " ('r1', 'c1'),\n", " ('r1', 'c2'),\n", " ('r2', 'c0'),\n", " ('r2', 'c1'),\n", " ('r2', 'c2')],\n", " )" ] }, "execution_count": 61, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mindex = pd.MultiIndex.from_tuples(coords)\n", "mindex" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We received something which looks quite similar to the list of tuples we had before, but it's a [`MultiIndex`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.MultiIndex.html) instance. Let's see how it helps us by `reindex`ing our data with it:" ] }, { "cell_type": "code", "execution_count": 62, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "r0 c0 1.20\n", " c1 0.80\n", " c2 3.10\n", "r1 c0 0.10\n", " c1 0.05\n", " c2 1.00\n", "r2 c0 1.40\n", " c1 2.10\n", " c2 2.90\n", "Name: temperature, dtype: float64" ] }, "execution_count": 62, "metadata": {}, "output_type": "execute_result" } ], "source": [ "points = points.reindex(mindex)\n", "points" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This looks good. Each index level is represented by a column, with the data being the last one. The \"missing\" values indicate that the value in that cell is the same as the value above it.\n", "\n", "You might have assumed that accessing the data now is much more intuitive. Let's look at the values of all the points in the first row, `r0`:" ] }, { "cell_type": "code", "execution_count": 63, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "c0 1.2\n", "c1 0.8\n", "c2 3.1\n", "Name: temperature, dtype: float64" ] }, "execution_count": 63, "metadata": {}, "output_type": "execute_result" } ], "source": [ "points.loc['r0', :] # .loc() is label-based indexing" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Or the values of points in the second column:" ] }, { "cell_type": "code", "execution_count": 64, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "r0 0.80\n", "r1 0.05\n", "r2 2.10\n", "Name: temperature, dtype: float64" ] }, "execution_count": 64, "metadata": {}, "output_type": "execute_result" } ], "source": [ "points.loc[:, 'c1']" ] }, { "cell_type": "code", "execution_count": 65, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "r0 c0 1.20\n", " c1 0.80\n", " c2 3.10\n", "r1 c0 0.10\n", " c1 0.05\n", " c2 1.00\n", "r2 c0 1.40\n", " c1 2.10\n", " c2 2.90\n", "Name: temperature, dtype: float64" ] }, "execution_count": 65, "metadata": {}, "output_type": "execute_result" } ], "source": [ "points.loc[:, :] # all values - each level of the index has its own colon (:)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that `.iloc` disregards the MultiIndex, treating our data as a simple one-dimensional vector (as it actually is):" ] }, { "cell_type": "code", "execution_count": 66, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1.4" ] }, "execution_count": 66, "metadata": {}, "output_type": "execute_result" } ], "source": [ "points.iloc[6]\n", "# points.iloc[0, 1] # ERRORS" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Besides making the syntax cleaner, these slicing operations are as efficient as their single-dimension counterparts." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It should be clear that a MultiIndex can have more than two levels. Modelling a 3D cube (with the temperatures inside it) is as easy as:" ] }, { "cell_type": "code", "execution_count": 67, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "r0 c0 z0 1.20\n", " z1 0.80\n", " c1 z0 3.10\n", " z1 0.10\n", "r1 c0 z0 0.05\n", " z1 1.00\n", " c1 z0 1.40\n", " z1 2.10\n", "r2 c0 z0 2.90\n", " z1 0.30\n", " c1 z0 2.40\n", " z1 1.90\n", "Name: temp_cube, dtype: float64" ] }, "execution_count": 67, "metadata": {}, "output_type": "execute_result" } ], "source": [ "values3d = np.array([1.2, 0.8, \n", " 3.1, 0.1, \n", " 0.05, 1, \n", " 1.4, 2.1, \n", " 2.9, 0.3,\n", " 2.4, 1.9])\n", "# 3D coordinates with a shape of (r, c, z) = (3, 2, 2)\n", "coords3d = [('r0', 'c0', 'z0'), ('r0', 'c0', 'z1'), \n", " ('r0', 'c1', 'z0'), ('r0', 'c1', 'z1'),\n", " ('r1', 'c0', 'z0'), ('r1', 'c0', 'z1'),\n", " ('r1', 'c1', 'z0'), ('r1', 'c1', 'z1'), \n", " ('r2', 'c0', 'z0'), ('r2', 'c0', 'z1'),\n", " ('r2', 'c1', 'z0'), ('r2', 'c1', 'z1')] # we'll soon see an easier way to create this index\n", "cube = pd.Series(values3d, index=pd.MultiIndex.from_tuples(coords3d), name='temp_cube')\n", "cube" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can even name the individual levels, which helps with some slicing operations we'll see below:" ] }, { "cell_type": "code", "execution_count": 68, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "x y z \n", "r0 c0 z0 1.20\n", " z1 0.80\n", " c1 z0 3.10\n", " z1 0.10\n", "r1 c0 z0 0.05\n", " z1 1.00\n", " c1 z0 1.40\n", " z1 2.10\n", "r2 c0 z0 2.90\n", " z1 0.30\n", " c1 z0 2.40\n", " z1 1.90\n", "Name: temp_cube, dtype: float64" ] }, "execution_count": 68, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cube.index.names = ['x', 'y', 'z']\n", "cube" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Again, you have to remember that this is one-dimensional data, with a three-dimensional index. In statistical term, we might term the indices a fixed, independent categorical variable, while the values are the dependent variable. Pandas actually has a [`CategoricalIndex`](https://pandas.pydata.org/docs/reference/api/pandas.CategoricalIndex.html) object which you'll meet in one of your future homework assignments (but don't be afraid to hit the link and check it out on your own if you just can't wait)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### More on extra dimensions" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the previous square example, it's very appealing to ditch the MultiIndex altogether and just work with a dataframe, or even a simple NumPy array. This is because the two indices represented rows and columns. A quick way to turn one representation into the other is the [`stack()`\\\\`unstack()`](https://pandas.pydata.org/docs/user_guide/reshaping.html) method:" ] }, { "cell_type": "code", "execution_count": 69, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "rows columns\n", "r0 c0 1.20\n", " c1 0.80\n", " c2 3.10\n", "r1 c0 0.10\n", " c1 0.05\n", " c2 1.00\n", "r2 c0 1.40\n", " c1 2.10\n", " c2 2.90\n", "Name: temperature, dtype: float64" ] }, "execution_count": 69, "metadata": {}, "output_type": "execute_result" } ], "source": [ "points.index.names = ['rows', 'columns']\n", "points" ] }, { "cell_type": "code", "execution_count": 70, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
columnsc0c1c2
rows
r01.20.803.1
r10.10.051.0
r21.42.102.9
\n", "
" ], "text/plain": [ "columns c0 c1 c2\n", "rows \n", "r0 1.2 0.80 3.1\n", "r1 0.1 0.05 1.0\n", "r2 1.4 2.10 2.9" ] }, "execution_count": 70, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pts_df = points.unstack()\n", "pts_df" ] }, { "cell_type": "code", "execution_count": 71, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "rows columns\n", "r0 c0 1.20\n", " c1 0.80\n", " c2 3.10\n", "r1 c0 0.10\n", " c1 0.05\n", " c2 1.00\n", "r2 c0 1.40\n", " c1 2.10\n", " c2 2.90\n", "dtype: float64" ] }, "execution_count": 71, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pts_df.stack() # back to a series" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we want to turn the indices into \"real\" columns, we can use the `reset_index()` method:" ] }, { "cell_type": "code", "execution_count": 72, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
rowscolumnstemperature
0r0c01.20
1r0c10.80
2r0c23.10
3r1c00.10
4r1c10.05
5r1c21.00
6r2c01.40
7r2c12.10
8r2c22.90
\n", "
" ], "text/plain": [ " rows columns temperature\n", "0 r0 c0 1.20\n", "1 r0 c1 0.80\n", "2 r0 c2 3.10\n", "3 r1 c0 0.10\n", "4 r1 c1 0.05\n", "5 r1 c2 1.00\n", "6 r2 c0 1.40\n", "7 r2 c1 2.10\n", "8 r2 c2 2.90" ] }, "execution_count": 72, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pts_df_reset = points.reset_index()\n", "pts_df_reset" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "So why bother with these (you haven't seen nothing yet) complicated multi-indices?\n", "\n", "As you might have guessed, adding data points, i.e. increasing the dimensionality of the data, is very easy and intuitive. Data remains aligned through addition and deletion of data. Moreover, treating these categorical variables as an index can help the mental modeling of the problem, especially when you wish to perform statistical modeling with your analysis." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Constructing a MultiIndex" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Creating a hierarchical index can be done in several ways:" ] }, { "cell_type": "code", "execution_count": 73, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "MultiIndex([('a', 1),\n", " ('a', 2),\n", " ('b', 1),\n", " ('b', 2)],\n", " )" ] }, "execution_count": 73, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.MultiIndex.from_arrays([['a', 'a', 'b', 'b'], [1, 2, 1, 2]])" ] }, { "cell_type": "code", "execution_count": 74, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "MultiIndex([('a', 1),\n", " ('a', 2),\n", " ('b', 1),\n", " ('b', 2)],\n", " )" ] }, "execution_count": 74, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.MultiIndex.from_tuples([('a', 1), ('a', 2), ('b', 1), ('b', 2)])" ] }, { "cell_type": "code", "execution_count": 75, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "MultiIndex([('a', 1),\n", " ('a', 2),\n", " ('b', 1),\n", " ('b', 2)],\n", " )" ] }, "execution_count": 75, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.MultiIndex.from_product([['a', 'b'], [1, 2]]) # Cartesian product" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The most common way to construct a MultiIndex, though, is to add to the existing index one of the columns of the dataframe. We'll see how it's done below." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Another important note is that with dataframes, the column and row index is symmetric. In effect this means that the columns could also contain a MultiIndex:" ] }, { "cell_type": "code", "execution_count": 76, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
subjectBobGuidoSue
typeHRTempHRTempHRTemp
yearvisit
2013121.038.143.036.939.036.7
218.039.128.038.530.036.5
2014127.036.139.039.128.035.2
246.037.927.037.250.036.7
\n", "
" ], "text/plain": [ "subject Bob Guido Sue \n", "type HR Temp HR Temp HR Temp\n", "year visit \n", "2013 1 21.0 38.1 43.0 36.9 39.0 36.7\n", " 2 18.0 39.1 28.0 38.5 30.0 36.5\n", "2014 1 27.0 36.1 39.0 39.1 28.0 35.2\n", " 2 46.0 37.9 27.0 37.2 50.0 36.7" ] }, "execution_count": 76, "metadata": {}, "output_type": "execute_result" } ], "source": [ "index = pd.MultiIndex.from_product([[2013, 2014], [1, 2]],\n", " names=['year', 'visit'])\n", "columns = pd.MultiIndex.from_product([['Bob', 'Guido', 'Sue'], ['HR', 'Temp']],\n", " names=['subject', 'type'])\n", "\n", "# mock some data\n", "data = np.round(np.random.randn(4, 6), 1)\n", "data[:, ::2] *= 10\n", "data += 37\n", "\n", "# create the DataFrame\n", "health_data = pd.DataFrame(data, index=index, columns=columns)\n", "health_data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This sometimes might seem too much, and so usually people prefer to keep the column index as a simple list of names, moving any nestedness to the row index. This is due to the fact that usually columns represent the measured dependent variable." ] }, { "cell_type": "code", "execution_count": 77, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
HRTemp
yearvisitsubject
20131Bob32.036.7
Guido50.035.9
Sue60.037.5
2Bob32.036.8
Guido49.036.0
Sue18.038.3
20141Bob11.038.0
Guido24.036.4
Sue26.036.4
2Bob32.037.9
Guido54.037.6
Sue48.036.7
\n", "
" ], "text/plain": [ " HR Temp\n", "year visit subject \n", "2013 1 Bob 32.0 36.7\n", " Guido 50.0 35.9\n", " Sue 60.0 37.5\n", " 2 Bob 32.0 36.8\n", " Guido 49.0 36.0\n", " Sue 18.0 38.3\n", "2014 1 Bob 11.0 38.0\n", " Guido 24.0 36.4\n", " Sue 26.0 36.4\n", " 2 Bob 32.0 37.9\n", " Guido 54.0 37.6\n", " Sue 48.0 36.7" ] }, "execution_count": 77, "metadata": {}, "output_type": "execute_result" } ], "source": [ "index = pd.MultiIndex.from_product([[2013, 2014], [1, 2], ['Bob', 'Guido', 'Sue']],\n", " names=['year', 'visit', 'subject'])\n", "columns = ['HR', 'Temp']\n", "\n", "# mock some data\n", "data = np.round(np.random.randn(12, 2), 1)\n", "data[:, ::2] *= 10\n", "data += 37\n", "\n", "# create the DataFrame\n", "health_data_row = pd.DataFrame(data, index=index, columns=columns)\n", "health_data_row" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Creating a MultiIndex from a data column" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "While all of the above methods work, and could be useful sometimes, the most common method of creating an index is from an existing data column. " ] }, { "cell_type": "code", "execution_count": 78, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
locationdaytemphumidity
0ALSUN12.331
1ALSUN14.145
2NYTUE21.341
3NYWED20.941
4NYSAT18.849
5VASAT16.552
\n", "
" ], "text/plain": [ " location day temp humidity\n", "0 AL SUN 12.3 31\n", "1 AL SUN 14.1 45\n", "2 NY TUE 21.3 41\n", "3 NY WED 20.9 41\n", "4 NY SAT 18.8 49\n", "5 VA SAT 16.5 52" ] }, "execution_count": 78, "metadata": {}, "output_type": "execute_result" } ], "source": [ "location = ['AL', 'AL', 'NY', 'NY', 'NY', 'VA']\n", "day = ['SUN', 'SUN', 'TUE', 'WED', 'SAT', 'SAT']\n", "temp = [12.3, 14.1, 21.3, 20.9, 18.8, 16.5]\n", "humidity = [31, 45, 41, 41, 49, 52]\n", "states = pd.DataFrame(dict(location=location, day=day, \n", " temp=temp, humidity=humidity))\n", "states" ] }, { "cell_type": "code", "execution_count": 79, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
locationtemphumidity
day
SUNAL12.331
SUNAL14.145
TUENY21.341
WEDNY20.941
SATNY18.849
SATVA16.552
\n", "
" ], "text/plain": [ " location temp humidity\n", "day \n", "SUN AL 12.3 31\n", "SUN AL 14.1 45\n", "TUE NY 21.3 41\n", "WED NY 20.9 41\n", "SAT NY 18.8 49\n", "SAT VA 16.5 52" ] }, "execution_count": 79, "metadata": {}, "output_type": "execute_result" } ], "source": [ "states.set_index(['day'])" ] }, { "cell_type": "code", "execution_count": 80, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
temphumidity
daylocation
SUNAL12.331
AL14.145
TUENY21.341
WEDNY20.941
SATNY18.849
VA16.552
\n", "
" ], "text/plain": [ " temp humidity\n", "day location \n", "SUN AL 12.3 31\n", " AL 14.1 45\n", "TUE NY 21.3 41\n", "WED NY 20.9 41\n", "SAT NY 18.8 49\n", " VA 16.5 52" ] }, "execution_count": 80, "metadata": {}, "output_type": "execute_result" } ], "source": [ "states.set_index(['day', 'location'])" ] }, { "cell_type": "code", "execution_count": 81, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
temphumidity
daylocation
0SUNAL12.331
1SUNAL14.145
2TUENY21.341
3WEDNY20.941
4SATNY18.849
5SATVA16.552
\n", "
" ], "text/plain": [ " temp humidity\n", " day location \n", "0 SUN AL 12.3 31\n", "1 SUN AL 14.1 45\n", "2 TUE NY 21.3 41\n", "3 WED NY 20.9 41\n", "4 SAT NY 18.8 49\n", "5 SAT VA 16.5 52" ] }, "execution_count": 81, "metadata": {}, "output_type": "execute_result" } ], "source": [ "states.set_index(['day', 'location'], append=True)" ] }, { "cell_type": "code", "execution_count": 82, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
locationtemphumidity
day
iSUNAL12.331
iiSUNAL14.145
iiiTUENY21.341
ivWEDNY20.941
vSATNY18.849
viSATVA16.552
\n", "
" ], "text/plain": [ " location temp humidity\n", " day \n", "i SUN AL 12.3 31\n", "ii SUN AL 14.1 45\n", "iii TUE NY 21.3 41\n", "iv WED NY 20.9 41\n", "v SAT NY 18.8 49\n", "vi SAT VA 16.5 52" ] }, "execution_count": 82, "metadata": {}, "output_type": "execute_result" } ], "source": [ "states.set_index([['i', 'ii', 'iii', 'iv', 'v', 'vi'], 'day'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Indexing and Slicing a MultiIndex" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We'll use these dataframes as an example:" ] }, { "cell_type": "code", "execution_count": 83, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
subjectBobGuidoSue
typeHRTempHRTempHRTemp
yearvisit
2013121.038.143.036.939.036.7
218.039.128.038.530.036.5
2014127.036.139.039.128.035.2
246.037.927.037.250.036.7
\n", "
" ], "text/plain": [ "subject Bob Guido Sue \n", "type HR Temp HR Temp HR Temp\n", "year visit \n", "2013 1 21.0 38.1 43.0 36.9 39.0 36.7\n", " 2 18.0 39.1 28.0 38.5 30.0 36.5\n", "2014 1 27.0 36.1 39.0 39.1 28.0 35.2\n", " 2 46.0 37.9 27.0 37.2 50.0 36.7" ] }, "execution_count": 83, "metadata": {}, "output_type": "execute_result" } ], "source": [ "health_data" ] }, { "cell_type": "code", "execution_count": 84, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
HRTemp
yearvisitsubject
20131Bob32.036.7
Guido50.035.9
Sue60.037.5
2Bob32.036.8
Guido49.036.0
Sue18.038.3
20141Bob11.038.0
Guido24.036.4
Sue26.036.4
2Bob32.037.9
Guido54.037.6
Sue48.036.7
\n", "
" ], "text/plain": [ " HR Temp\n", "year visit subject \n", "2013 1 Bob 32.0 36.7\n", " Guido 50.0 35.9\n", " Sue 60.0 37.5\n", " 2 Bob 32.0 36.8\n", " Guido 49.0 36.0\n", " Sue 18.0 38.3\n", "2014 1 Bob 11.0 38.0\n", " Guido 24.0 36.4\n", " Sue 26.0 36.4\n", " 2 Bob 32.0 37.9\n", " Guido 54.0 37.6\n", " Sue 48.0 36.7" ] }, "execution_count": 84, "metadata": {}, "output_type": "execute_result" } ], "source": [ "health_data_row" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If all we wish to do is to examine a column, indexing is very easy. Don't forget the dataframe as dictionary analogy:" ] }, { "cell_type": "code", "execution_count": 85, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
typeHRTemp
yearvisit
2013143.036.9
228.038.5
2014139.039.1
227.037.2
\n", "
" ], "text/plain": [ "type HR Temp\n", "year visit \n", "2013 1 43.0 36.9\n", " 2 28.0 38.5\n", "2014 1 39.0 39.1\n", " 2 27.0 37.2" ] }, "execution_count": 85, "metadata": {}, "output_type": "execute_result" } ], "source": [ "health_data['Guido'] # works for the column MultiIndex as expected" ] }, { "cell_type": "code", "execution_count": 86, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "year visit subject\n", "2013 1 Bob 32.0\n", " Guido 50.0\n", " Sue 60.0\n", " 2 Bob 32.0\n", " Guido 49.0\n", " Sue 18.0\n", "2014 1 Bob 11.0\n", " Guido 24.0\n", " Sue 26.0\n", " 2 Bob 32.0\n", " Guido 54.0\n", " Sue 48.0\n", "Name: HR, dtype: float64" ] }, "execution_count": 86, "metadata": {}, "output_type": "execute_result" } ], "source": [ "health_data_row['HR'] # that's a Series!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Accessing single elements is also pretty straight-forward:" ] }, { "cell_type": "code", "execution_count": 87, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "HR 50.0\n", "Temp 35.9\n", "Name: (2013, 1, Guido), dtype: float64" ] }, "execution_count": 87, "metadata": {}, "output_type": "execute_result" } ], "source": [ "health_data_row.loc[2013, 1, 'Guido'] # index triplet" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can even slice easily using the first `MultiIndex` (year in our case):" ] }, { "cell_type": "code", "execution_count": 88, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
HRTemp
yearvisitsubject
20131Bob32.036.7
Guido50.035.9
Sue60.037.5
2Bob32.036.8
Guido49.036.0
Sue18.038.3
20141Bob11.038.0
Guido24.036.4
Sue26.036.4
2Bob32.037.9
Guido54.037.6
Sue48.036.7
\n", "
" ], "text/plain": [ " HR Temp\n", "year visit subject \n", "2013 1 Bob 32.0 36.7\n", " Guido 50.0 35.9\n", " Sue 60.0 37.5\n", " 2 Bob 32.0 36.8\n", " Guido 49.0 36.0\n", " Sue 18.0 38.3\n", "2014 1 Bob 11.0 38.0\n", " Guido 24.0 36.4\n", " Sue 26.0 36.4\n", " 2 Bob 32.0 37.9\n", " Guido 54.0 37.6\n", " Sue 48.0 36.7" ] }, "execution_count": 88, "metadata": {}, "output_type": "execute_result" } ], "source": [ "health_data_row.loc[2013:2017] # 2017 doesn't exist, but Python's slicing rules prevent an exception here\n", "# health_data_row.loc[1] # doesn't work" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Slicing is a bit more difficult when we want to take into account all available indices. This is due to the possible conflicts between the different indices and the columns.\n", "\n", "Assuming we want to look at all the years, with all the visits, only by Bob - we would want to write something like this:" ] }, { "cell_type": "code", "execution_count": 89, "metadata": { "scrolled": true }, "outputs": [ { "ename": "SyntaxError", "evalue": "invalid syntax (514763098.py, line 1)", "output_type": "error", "traceback": [ "\u001b[0;36m Cell \u001b[0;32mIn[89], line 1\u001b[0;36m\u001b[0m\n\u001b[0;31m health_data_row.loc[(:, :, 'Bob'), :] # doesn't work\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n" ] } ], "source": [ "health_data_row.loc[(:, :, 'Bob'), :] # doesn't work" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This pickle is solved in two possible ways:\n", "\n", "First option is the [`slice`](https://www.programiz.com/python-programming/methods/built-in/slice) object:\n" ] }, { "cell_type": "code", "execution_count": 90, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "year visit subject\n", "2013 1 Bob 32.0\n", " 2 Bob 32.0\n", "2014 1 Bob 11.0\n", " 2 Bob 32.0\n", "Name: HR, dtype: float64" ] }, "execution_count": 90, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bobs_data = (slice(None), slice(None), 'Bob') # all years, all visits, of Bob\n", "health_data_row.loc[bobs_data, 'HR']\n", "# arr[slice(None), 1] is the same as arr[:, 1]" ] }, { "cell_type": "code", "execution_count": 91, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "year visit subject\n", "2013 1 Bob 32.0\n", " Guido 50.0\n", " 2 Bob 32.0\n", " Guido 49.0\n", "2014 1 Bob 11.0\n", " Guido 24.0\n", " 2 Bob 32.0\n", " Guido 54.0\n", "Name: HR, dtype: float64" ] }, "execution_count": 91, "metadata": {}, "output_type": "execute_result" } ], "source": [ "row_idx = (slice(None), slice(None), slice('Bob', 'Guido')) # all years, all visits, Bob + Guido\n", "health_data_row.loc[row_idx, 'HR']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Another option is the [`IndexSlice`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.IndexSlice.html) object:" ] }, { "cell_type": "code", "execution_count": 92, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
HRTemp
yearvisitsubject
20131Bob32.036.7
2Bob32.036.8
20141Bob11.038.0
2Bob32.037.9
\n", "
" ], "text/plain": [ " HR Temp\n", "year visit subject \n", "2013 1 Bob 32.0 36.7\n", " 2 Bob 32.0 36.8\n", "2014 1 Bob 11.0 38.0\n", " 2 Bob 32.0 37.9" ] }, "execution_count": 92, "metadata": {}, "output_type": "execute_result" } ], "source": [ "\n", "idx = pd.IndexSlice\n", "health_data_row.loc[idx[:, :, 'Bob'], :] # very close to the naive implementation" ] }, { "cell_type": "code", "execution_count": 93, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "year visit subject\n", "2013 1 Bob 36.7\n", " Guido 35.9\n", "2014 1 Bob 38.0\n", " Guido 36.4\n", "Name: Temp, dtype: float64" ] }, "execution_count": 93, "metadata": {}, "output_type": "execute_result" } ], "source": [ "idx2 = pd.IndexSlice\n", "health_data_row.loc[idx2[2013:2015, 1, 'Bob':'Guido'], 'Temp']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally, there's one more way to index into a `MultiIndex` which is very straight-forward and explicit; the [cross-section](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.xs.html)." ] }, { "cell_type": "code", "execution_count": 94, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
HRTemp
subject
Bob32.036.7
Guido50.035.9
Sue60.037.5
\n", "
" ], "text/plain": [ " HR Temp\n", "subject \n", "Bob 32.0 36.7\n", "Guido 50.0 35.9\n", "Sue 60.0 37.5" ] }, "execution_count": 94, "metadata": {}, "output_type": "execute_result" } ], "source": [ "health_data_row.xs(key=(2013, 1), level=('year', 'visit'))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Small caveat: unsorted indices" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Having an unsorted index in your `MultiIndex` might make the interpreter pop a few exceptions at you:" ] }, { "cell_type": "code", "execution_count": 95, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "char int\n", "a 1 0.306670\n", " 2 0.989591\n", "c 1 0.793785\n", " 2 0.844271\n", "b 1 0.847586\n", " 2 0.780704\n", "dtype: float64" ] }, "execution_count": 95, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# char index in unsorted\n", "index = pd.MultiIndex.from_product([['a', 'c', 'b'], [1, 2]])\n", "data = pd.Series(np.random.rand(6), index=index)\n", "data.index.names = ['char', 'int']\n", "data" ] }, { "cell_type": "code", "execution_count": 96, "metadata": {}, "outputs": [ { "ename": "UnsortedIndexError", "evalue": "'Key length (1) was greater than MultiIndex lexsort depth (0)'", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mUnsortedIndexError\u001b[0m Traceback (most recent call last)", "Cell \u001b[0;32mIn[96], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[43mdata\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43ma\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m:\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mb\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m]\u001b[49m\n", "File \u001b[0;32m~/Projects/courses/python_for_neuroscientists/textbook-public/venv/lib/python3.10/site-packages/pandas/core/series.py:1146\u001b[0m, in \u001b[0;36mSeries.__getitem__\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m 1142\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_get_values_tuple(key)\n\u001b[1;32m 1144\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(key, \u001b[38;5;28mslice\u001b[39m):\n\u001b[1;32m 1145\u001b[0m \u001b[38;5;66;03m# Do slice check before somewhat-costly is_bool_indexer\u001b[39;00m\n\u001b[0;32m-> 1146\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_getitem_slice\u001b[49m\u001b[43m(\u001b[49m\u001b[43mkey\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1148\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m com\u001b[38;5;241m.\u001b[39mis_bool_indexer(key):\n\u001b[1;32m 1149\u001b[0m key \u001b[38;5;241m=\u001b[39m check_bool_indexer(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mindex, key)\n", "File \u001b[0;32m~/Projects/courses/python_for_neuroscientists/textbook-public/venv/lib/python3.10/site-packages/pandas/core/generic.py:4349\u001b[0m, in \u001b[0;36mNDFrame._getitem_slice\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m 4344\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 4345\u001b[0m \u001b[38;5;124;03m__getitem__ for the case where the key is a slice object.\u001b[39;00m\n\u001b[1;32m 4346\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 4347\u001b[0m \u001b[38;5;66;03m# _convert_slice_indexer to determine if this slice is positional\u001b[39;00m\n\u001b[1;32m 4348\u001b[0m \u001b[38;5;66;03m# or label based, and if the latter, convert to positional\u001b[39;00m\n\u001b[0;32m-> 4349\u001b[0m slobj \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mindex\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_convert_slice_indexer\u001b[49m\u001b[43m(\u001b[49m\u001b[43mkey\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mkind\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mgetitem\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 4350\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(slobj, np\u001b[38;5;241m.\u001b[39mndarray):\n\u001b[1;32m 4351\u001b[0m \u001b[38;5;66;03m# reachable with DatetimeIndex\u001b[39;00m\n\u001b[1;32m 4352\u001b[0m indexer \u001b[38;5;241m=\u001b[39m lib\u001b[38;5;241m.\u001b[39mmaybe_indices_to_slice(\n\u001b[1;32m 4353\u001b[0m slobj\u001b[38;5;241m.\u001b[39mastype(np\u001b[38;5;241m.\u001b[39mintp, copy\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mFalse\u001b[39;00m), \u001b[38;5;28mlen\u001b[39m(\u001b[38;5;28mself\u001b[39m)\n\u001b[1;32m 4354\u001b[0m )\n", "File \u001b[0;32m~/Projects/courses/python_for_neuroscientists/textbook-public/venv/lib/python3.10/site-packages/pandas/core/indexes/base.py:4281\u001b[0m, in \u001b[0;36mIndex._convert_slice_indexer\u001b[0;34m(self, key, kind)\u001b[0m\n\u001b[1;32m 4279\u001b[0m indexer \u001b[38;5;241m=\u001b[39m key\n\u001b[1;32m 4280\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m-> 4281\u001b[0m indexer \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mslice_indexer\u001b[49m\u001b[43m(\u001b[49m\u001b[43mstart\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mstop\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mstep\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 4283\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m indexer\n", "File \u001b[0;32m~/Projects/courses/python_for_neuroscientists/textbook-public/venv/lib/python3.10/site-packages/pandas/core/indexes/base.py:6662\u001b[0m, in \u001b[0;36mIndex.slice_indexer\u001b[0;34m(self, start, end, step)\u001b[0m\n\u001b[1;32m 6618\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mslice_indexer\u001b[39m(\n\u001b[1;32m 6619\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 6620\u001b[0m start: Hashable \u001b[38;5;241m|\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[1;32m 6621\u001b[0m end: Hashable \u001b[38;5;241m|\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[1;32m 6622\u001b[0m step: \u001b[38;5;28mint\u001b[39m \u001b[38;5;241m|\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[1;32m 6623\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28mslice\u001b[39m:\n\u001b[1;32m 6624\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 6625\u001b[0m \u001b[38;5;124;03m Compute the slice indexer for input labels and step.\u001b[39;00m\n\u001b[1;32m 6626\u001b[0m \n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 6660\u001b[0m \u001b[38;5;124;03m slice(1, 3, None)\u001b[39;00m\n\u001b[1;32m 6661\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m-> 6662\u001b[0m start_slice, end_slice \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mslice_locs\u001b[49m\u001b[43m(\u001b[49m\u001b[43mstart\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mend\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mstep\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mstep\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 6664\u001b[0m \u001b[38;5;66;03m# return a slice\u001b[39;00m\n\u001b[1;32m 6665\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m is_scalar(start_slice):\n", "File \u001b[0;32m~/Projects/courses/python_for_neuroscientists/textbook-public/venv/lib/python3.10/site-packages/pandas/core/indexes/multi.py:2904\u001b[0m, in \u001b[0;36mMultiIndex.slice_locs\u001b[0;34m(self, start, end, step)\u001b[0m\n\u001b[1;32m 2852\u001b[0m \u001b[38;5;250m\u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 2853\u001b[0m \u001b[38;5;124;03mFor an ordered MultiIndex, compute the slice locations for input\u001b[39;00m\n\u001b[1;32m 2854\u001b[0m \u001b[38;5;124;03mlabels.\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 2900\u001b[0m \u001b[38;5;124;03m sequence of such.\u001b[39;00m\n\u001b[1;32m 2901\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 2902\u001b[0m \u001b[38;5;66;03m# This function adds nothing to its parent implementation (the magic\u001b[39;00m\n\u001b[1;32m 2903\u001b[0m \u001b[38;5;66;03m# happens in get_slice_bound method), but it adds meaningful doc.\u001b[39;00m\n\u001b[0;32m-> 2904\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mslice_locs\u001b[49m\u001b[43m(\u001b[49m\u001b[43mstart\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mend\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mstep\u001b[49m\u001b[43m)\u001b[49m\n", "File \u001b[0;32m~/Projects/courses/python_for_neuroscientists/textbook-public/venv/lib/python3.10/site-packages/pandas/core/indexes/base.py:6879\u001b[0m, in \u001b[0;36mIndex.slice_locs\u001b[0;34m(self, start, end, step)\u001b[0m\n\u001b[1;32m 6877\u001b[0m start_slice \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 6878\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m start \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m-> 6879\u001b[0m start_slice \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_slice_bound\u001b[49m\u001b[43m(\u001b[49m\u001b[43mstart\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mleft\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 6880\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m start_slice \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 6881\u001b[0m start_slice \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m0\u001b[39m\n", "File \u001b[0;32m~/Projects/courses/python_for_neuroscientists/textbook-public/venv/lib/python3.10/site-packages/pandas/core/indexes/multi.py:2848\u001b[0m, in \u001b[0;36mMultiIndex.get_slice_bound\u001b[0;34m(self, label, side)\u001b[0m\n\u001b[1;32m 2846\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(label, \u001b[38;5;28mtuple\u001b[39m):\n\u001b[1;32m 2847\u001b[0m label \u001b[38;5;241m=\u001b[39m (label,)\n\u001b[0;32m-> 2848\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_partial_tup_index\u001b[49m\u001b[43m(\u001b[49m\u001b[43mlabel\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mside\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mside\u001b[49m\u001b[43m)\u001b[49m\n", "File \u001b[0;32m~/Projects/courses/python_for_neuroscientists/textbook-public/venv/lib/python3.10/site-packages/pandas/core/indexes/multi.py:2908\u001b[0m, in \u001b[0;36mMultiIndex._partial_tup_index\u001b[0;34m(self, tup, side)\u001b[0m\n\u001b[1;32m 2906\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_partial_tup_index\u001b[39m(\u001b[38;5;28mself\u001b[39m, tup: \u001b[38;5;28mtuple\u001b[39m, side: Literal[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mleft\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mright\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mleft\u001b[39m\u001b[38;5;124m\"\u001b[39m):\n\u001b[1;32m 2907\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(tup) \u001b[38;5;241m>\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_lexsort_depth:\n\u001b[0;32m-> 2908\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m UnsortedIndexError(\n\u001b[1;32m 2909\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mKey length (\u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mlen\u001b[39m(tup)\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m) was greater than MultiIndex lexsort depth \u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 2910\u001b[0m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m(\u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_lexsort_depth\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m)\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 2911\u001b[0m )\n\u001b[1;32m 2913\u001b[0m n \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mlen\u001b[39m(tup)\n\u001b[1;32m 2914\u001b[0m start, end \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m0\u001b[39m, \u001b[38;5;28mlen\u001b[39m(\u001b[38;5;28mself\u001b[39m)\n", "\u001b[0;31mUnsortedIndexError\u001b[0m: 'Key length (1) was greater than MultiIndex lexsort depth (0)'" ] } ], "source": [ "data['a':'b']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`lexsort` means \"lexicography-sorted\", or sorted by either number or letter. Sorting an index is done with the [`sort_index()`](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.sort_index.html) method:" ] }, { "cell_type": "code", "execution_count": 97, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "char int\n", "a 1 0.306670\n", " 2 0.989591\n", "b 1 0.847586\n", " 2 0.780704\n", "c 1 0.793785\n", " 2 0.844271\n", "dtype: float64\n", "char int\n", "a 1 0.306670\n", " 2 0.989591\n", "b 1 0.847586\n", " 2 0.780704\n", "dtype: float64\n" ] } ], "source": [ "data.sort_index(inplace=True)\n", "print(data)\n", "print(data['a':'b']) # now it works" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Data Aggregation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Data aggregation using a `MultiIndex` is super simple:" ] }, { "cell_type": "code", "execution_count": 98, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
locationdaytemphumidity
0ALSUN12.331
1ALSUN14.145
2NYTUE21.341
3NYWED20.941
4NYSAT18.849
5VASAT16.552
\n", "
" ], "text/plain": [ " location day temp humidity\n", "0 AL SUN 12.3 31\n", "1 AL SUN 14.1 45\n", "2 NY TUE 21.3 41\n", "3 NY WED 20.9 41\n", "4 NY SAT 18.8 49\n", "5 VA SAT 16.5 52" ] }, "execution_count": 98, "metadata": {}, "output_type": "execute_result" } ], "source": [ "states" ] }, { "cell_type": "code", "execution_count": 99, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
temphumidity
locationday
ALSUN12.331
SUN14.145
NYTUE21.341
WED20.941
SAT18.849
VASAT16.552
\n", "
" ], "text/plain": [ " temp humidity\n", "location day \n", "AL SUN 12.3 31\n", " SUN 14.1 45\n", "NY TUE 21.3 41\n", " WED 20.9 41\n", " SAT 18.8 49\n", "VA SAT 16.5 52" ] }, "execution_count": 99, "metadata": {}, "output_type": "execute_result" } ], "source": [ "states.set_index(['location', 'day'], inplace=True)\n", "states" ] }, { "cell_type": "code", "execution_count": 102, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
temphumidity
location
AL13.20000038.000000
NY20.33333343.666667
VA16.50000052.000000
\n", "
" ], "text/plain": [ " temp humidity\n", "location \n", "AL 13.200000 38.000000\n", "NY 20.333333 43.666667\n", "VA 16.500000 52.000000" ] }, "execution_count": 102, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# mean all days under each location\n", "states.groupby('location').mean()\n" ] }, { "cell_type": "code", "execution_count": 105, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
temphumidity
day
SAT17.6550.5
SUN13.2038.0
TUE21.3041.0
WED20.9041.0
\n", "
" ], "text/plain": [ " temp humidity\n", "day \n", "SAT 17.65 50.5\n", "SUN 13.20 38.0\n", "TUE 21.30 41.0\n", "WED 20.90 41.0" ] }, "execution_count": 105, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# median all locations under each day\n", "states.groupby('day').median()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`````{admonition} Exercise: Replacing Values\n", "````{hint}\n", "When we wish to replace values in a Series or a DataFrame, two main options come to mind:\n", "\n", "1. A boolean mask (e.g. `df[mask] = \"new value\"`).\n", "2. The [`replace()`](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.replace.html) method.\n", "\n", "In the following exercise try and explore the second method, which provides powerful custom replacement options.\n", "\n", "````\n", "* Create a (10, 2) dataframe with increasing integer values 0-9 in both columns.\n", "````{dropdown} Solution\n", "```python\n", "data = np.tile(np.arange(10), (2, 1)).T\n", "df = pd.DataFrame(data)\n", "```\n", "````\n", "* Use the `.replace()` method to replace the value 3 in the first column with 99.\n", "````{dropdown} Solution\n", "```python\n", "df.replace({0: 3}, {0: 99})\n", "```\n", "````\n", "* Use it to replace 3 in column 0, and 1 in column 2, with 99.\n", "````{dropdown} Solution\n", "```python\n", "df.replace({0: 3, 1: 1}, 99)\n", "```\n", "````\n", "* Use its `method` keyword to replace values in the range [3, 6) of the first column with 6.\n", "````{dropdown} Solution\n", "```python\n", "df[0].replace(np.arange(3, 6), method='bfill')\n", "```\n", "````\n", "`````" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`````{admonition} MultiIndex Construction and Indexing\n", "* Construct a `MultiIndex` with three levels composed from the product of the following lists:\n", " - `['a', b', 'c', 'd']`\n", " - `['i', 'ii', 'iii']`\n", " - `['x', 'y', 'z']`\n", "````{dropdown} Solution\n", "```python\n", "letters = ['a', 'b', 'c', 'd']\n", "roman = ['i', 'ii', 'iii']\n", "coordinates = ['x', 'y', 'z']\n", "index = pd.MultiIndex.from_product((letters, roman, coordinates))\n", "```\n", "````\n", "* Instantiate a dataframe with the created index and populate it with random values in two columns.\n", "````{dropdown} Solution\n", "```python\n", "size = len(letters) * len(roman) * len(coordinates)\n", "data = np.random.randint(20, size=(size, 2))\n", "df = pd.DataFrame(data, columns=['today', 'tomorrow'], index=index)\n", "```\n", "````\n", "* Use two different methods to extract only the values with an index of `('a', 'ii', 'z')`.\n", "````{dropdown} Solution\n", "Option \\#1:\n", "```python\n", "df.loc['a', 'ii', 'z']\n", "```\n", "Option \\#2:\n", "```python\n", "df.xs(key=('a', 'ii', 'z'))\n", "```\n", "Option \\#3:\n", "```python\n", "idx = pd.IndexSlice\n", "df.loc[idx['a', 'ii', 'z'], :]\n", "```\n", "````\n", "* Slice in two ways the values with an index of `'x'`.\n", "````{dropdown} Solution\n", "Option \\#1:\n", "```python\n", "idx = pd.IndexSlice\n", "df.loc[idx[:, :, 'x'], :]\n", "```\n", "Option \\#2:\n", "```python\n", "df.xs(key='x', level=2)\n", "```\n", "Option \\#3:\n", "```python\n", "df.loc[(slice(None), slice(None), 'x'), :]\n", "```\n", "````\n", "`````" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## _n_-Dimensional Containers" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "While technically a dataframe is a two-dimensional container, in the next lesson we'll see why it can perform quite efficiently as a pseudo n-dimensional container. \n", "\n", "If you wish to have _true_ n-dimensional DataFrame-like data structures, you should use the `xarray` package and its `xr.DataArray` and `xr.Dataset` objects, which we'll discuss in the next lessons." ] } ], "metadata": { "anaconda-cloud": {}, "celltoolbar": "Tags", "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.10.12" } }, "nbformat": 4, "nbformat_minor": 2 }