From ace8008d5e594a95c78389eb44ade8d460c3a17a Mon Sep 17 00:00:00 2001 From: Stefan Machmeier Date: Wed, 8 May 2024 10:32:37 +0200 Subject: [PATCH] Update examples --- example/DGA_dgta_EDA.ipynb | 158 +++++-------------------------------- 1 file changed, 20 insertions(+), 138 deletions(-) diff --git a/example/DGA_dgta_EDA.ipynb b/example/DGA_dgta_EDA.ipynb index 9dc7e72..911ba74 100644 --- a/example/DGA_dgta_EDA.ipynb +++ b/example/DGA_dgta_EDA.ipynb @@ -22,7 +22,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -48,125 +48,7 @@ }, { "cell_type": "code", - "execution_count": 3, - "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", - "
domainclass
0b'0dev.null.googlepages.com'legit
1b'0.static.wix.com'legit
2b'a2sportsguy.googlepages.com'legit
3b'a2zexperts.googlepages.com'legit
4b'a2zvs.setmore.com'legit
.........
84943b'adsunflower.com'legit
84945b'meride.tv'legit
84947b'sanalpazar.com'legit
84948b'continular.com'legit
84949b'ilsemedia.nl'legit
\n", - "

1657234 rows × 2 columns

\n", - "
" - ], - "text/plain": [ - " domain class\n", - "0 b'0dev.null.googlepages.com' legit\n", - "1 b'0.static.wix.com' legit\n", - "2 b'a2sportsguy.googlepages.com' legit\n", - "3 b'a2zexperts.googlepages.com' legit\n", - "4 b'a2zvs.setmore.com' legit\n", - "... ... ...\n", - "84943 b'adsunflower.com' legit\n", - "84945 b'meride.tv' legit\n", - "84947 b'sanalpazar.com' legit\n", - "84948 b'continular.com' legit\n", - "84949 b'ilsemedia.nl' legit\n", - "\n", - "[1657234 rows x 2 columns]" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "pd_dgta = pd.read_parquet(\"../data/dgta/dgta-benchmark.parquet\")\n", - "pd_dgta" - ] - }, - { - "cell_type": "code", - "execution_count": 4, + "execution_count": 2, "metadata": {}, "outputs": [ { @@ -200,7 +82,7 @@ "└───────────────┴───────┘" ] }, - "execution_count": 4, + "execution_count": 2, "metadata": {}, "output_type": "execute_result" } @@ -214,14 +96,14 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "/tmp/ipykernel_4764/1026783953.py:10: DeprecationWarning: `map` is deprecated. It has been renamed to `map_batches`.\n", + "/tmp/ipykernel_291405/1026783953.py:10: DeprecationWarning: `map` is deprecated. It has been renamed to `map_batches`.\n", " pl.col('query').map(custom_decode)\n" ] }, @@ -256,7 +138,7 @@ "└─────────────────────────────┴───────┘" ] }, - "execution_count": 5, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -279,7 +161,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -309,7 +191,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -362,7 +244,7 @@ "└────────────┴───────┴────────────┴────────────┴───┴───────────┴───────────┴───────────┴───────────┘" ] }, - "execution_count": 7, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -441,7 +323,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -494,7 +376,7 @@ "└────────────┴───────┴────────────┴────────────┴───┴───────────┴───────────┴───────────┴───────────┘" ] }, - "execution_count": 8, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -521,7 +403,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -537,13 +419,13 @@ "" ] }, - "execution_count": 9, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAk8AAAGvCAYAAABCazFxAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/OQEPoAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAa2ElEQVR4nO3deXCV5fn44TsEE1A2cWHRKIKCVnFXqsiIjo7bqGgtzGgR3C1o3XCvX9y3QWrdq7WgHUcKrVirqKgVrUhHh8pIK+ICCq1b3QguDZC8vz/8mWkUMTclCQeuayYznjfPec+dx+j5zHtOkrKiKIoAAKBRWrX0AAAApUQ8AQAkiCcAgATxBACQIJ4AABLEEwBAgngCAEgQTwAACa1beoA1TV1dXbzzzjvRvn37KCsra+lxAIBGKIoiFi9eHN27d49WrVZ8bUk8rWLvvPNOVFVVtfQYAMBKWLhwYWy66aYrXCOeVrH27dtHxFeb36FDhxaeBgBojOrq6qiqqqp/Hl8R8bSKff1SXYcOHcQTAJSYxrzlxhvGAQASxBMAQIJ4AgBIEE8AAAniCQAgQTwBACSIJwCABPEEAJAgngAAEsQTAECCeAIASBBPAAAJ4gkAIKF1Sw+wptpu9OPRqnLdlh4DANYob117SEuP4MoTAECGeAIASBBPAAAJ4gkAIEE8AQAkiCcAgATxBACQIJ4AABLEEwBAgngCAEgQTwAACeIJACBBPAEAJIgnAIAE8QQAkCCeAAASxBMAQIJ4AgBIEE8AAAniCQAgQTwBACSIJwCABPEEAJAgngAAEsQTAECCeAIASBBPAAAJ4gkAIEE8AQAkiCcAgATxBACQIJ4AABLEEwBAgngCAEgQTwAACeIJACBBPAEAJIgnAIAE8QQAkCCeAAASxBMAQIJ4AgBIEE8AAAniCQAgQTwBACSIJwCABPEEAJAgngAAEsQTAECCeAIASBBPAAAJ4gkAIEE8AQAkiCcAgATxBACQIJ4AABLEEwBAgngCAEgQTwAACeIJACBBPAEAJIgnAIAE8QQAkCCeAAASxBMAQIJ4AgBIEE8AAAniCQAgQTwBACSIJwCABPEEAJAgngAAEsQTAECCeAIASBBPAAAJ4gkAIEE8AQAkiCcAgATxBACQIJ4AABLEEwBAgngCAEgQTwAACeIJACBBPAEAJIgnAIAE8QQAkCCeAAASxBMAQIJ4AgBIEE8AAAniCQAgQTwBACSIJwCABPEEAJAgngAAEsQTAECCeAIASBBPAAAJ4gkAIEE8AQAkiCcAgATxBACQIJ4AABLEEwBAgngCAEgQTwAACeIJACBBPAEAJIgnAIAE8QQAkCCeAAASxBMAQIJ4AgBIEE8AAAniCQAgQTwBACSIJwCABPEEAJAgngAAEsQTAECCeAIASBBPAAAJ4gkAIEE8AQAkiCcAgATxBACQIJ4AABLEEwBAgngCAEgQTwAACeIJACBBPAEAJIgnAIAE8QQAkCCeAAASxBMAQIJ4AgBIEE8AAAniCQAgQTwBACSIJwCABPEEAJAgngAAEsQTAECCeAIASBBPAAAJ4gkAIEE8AQAkiCcAgATxBACQIJ4AABLEEwBAgngCAEgQTwAACeIJACBBPAEAJIgnAIAE8QQAkCCeAAASxBMAQIJ4AgBIKNl4GjhwYJx55pmr7HyXXnpp7LjjjqvsfADAmqlk42lVGzVqVDz11FP1t4cPHx6DBg1quYEAgNVS65YeYHXRrl27aNeuXUuPAQCs5taIK081NTUxatSo2GSTTWK99daLfv36xbRp0xqsueuuu6KqqirWXXfdOOKII2Ls2LHRqVOn+s//98t2l156adxzzz3xxz/+McrKyqKsrOxb5wMA1k5rxJWn0047LV555ZWYMGFCdO/ePSZPnhwHHnhgzJ49O7baaquYPn16nHrqqXHdddfFYYcdFk8++WRccskl33m+UaNGxZw5c6K6ujrGjRsXERGdO3de7tqampqoqampv11dXb1qvzgAYLVS8vG0YMGCGDduXCxYsCC6d+8eEV/Fz2OPPRbjxo2Lq6++Om6++eY46KCDYtSoURER0bt373j++efj4YcfXu4527VrF23bto2ampro2rXrCh//mmuuicsuu2zVflFAyXjr2kNaegSgmZX8y3azZ8+O2tra6N27d/37ltq1axfPPPNMvPnmmxERMXfu3Nh9990b3O+bt1fWhRdeGIsWLar/WLhw4So5LwCweir5K0+fffZZlJeXx8yZM6O8vLzB55rjDeCVlZVRWVnZ5I8DAKweSj6edtppp6itrY0PPvggBgwYsNw1ffr0iRdffLHBsW/e/qaKioqora1dZXMCAGuGkn/Zrnfv3nHMMcfEscceGw888EDMnz8/XnjhhbjmmmvikUceiYiI008/PaZMmRJjx46N119/PX71q1/Fo48+GmVlZd953h49esTLL78cc+fOjQ8//DCWLl3aXF8SALAaK/l4iogYN25cHHvssXHOOedEnz59YtCgQfHiiy/GZpttFhER/fv3jzvuuCPGjh0bO+ywQzz22GNx1llnRZs2bb7znCeddFL06dMndt1119hoo41i+vTpzfXlAACrsbKiKIqWHqIlnHTSSfHqq6/GX/7yl1V63urq6ujYsWNUnTkxWlWuu0rPDax+/LQdrBm+fv5etGhRdOjQYYVrS/49T401ZsyY2H///WO99daLRx99NO6555647bbbWnosAKDErDXx9MILL8T1118fixcvjp49e8ZNN90UJ554YkuPBQCUmLUmniZOnNjSIwAAa4A14g3jAADNRTwBACSIJwCABPEEAJAgngAAEsQTAECCeAIASBBPAAAJ4gkAIEE8AQAkiCcAgATxBACQIJ4AABLEEwBAgngCAEgQTwAACeIJACBBPAEAJIgnAIAE8QQAkCCeAAASxBMAQIJ4AgBIEE8AAAniCQAgQTwBACSIJwCABPEEAJAgngAAEsQTAECCeAIASBBPAAAJ4gkAIEE8AQAkiCcAgATxBACQIJ4AABLEEwBAgngCAEgQTwAACeIJACBBPAEAJIgnAIAE8QQAkCCeAAASxBMAQIJ4AgBIEE8AAAniCQAgQTwBACSIJwCABPEEAJAgngAAEsQTAECCeAIASBBPAAAJ4gkAIEE8AQAkiCcAgATxBACQIJ4AABLEEwBAgngCAEgQTwAACeIJACBBPAEAJIgnAIAE8QQAkCCeAAASxBMAQIJ4AgBIEE8AAAniCQAgQTwBACSIJwCABPEEAJAgngAAEsQTAECCeAIASBBPAAAJ4gkAIEE8AQAkiCcAgATxBACQIJ4AABLEEwBAgngCAEgQTwAACeIJACBBPAEAJIgnAIAE8QQAkCCeAAASxBMAQIJ4AgBIEE8AAAniCQAgQTwBACSIJwCABPEEAJAgngAAEsQTAECCeAIASBBPAAAJ4gkAIEE8AQAkiCcAgATxBACQIJ4AABLEEwBAgngCAEgQTwAACeIJACBBPAEAJIgnAIAE8QQAkCCeAAASxBMAQIJ4AgBIEE8AAAniCQAgQTwBACSIJwCABPEEAJAgngAAEsQTAECCeAIASBBPAAAJ4gkAIEE8AQAkiCcAgATxBACQIJ4AABLEEwBAgngCAEgQTwAACeIJACBBPAEAJIgnAIAE8QQAkCCeAAASxBMAQIJ4AgBIEE8AAAniCQAgQTwBACSIJwCABPEEAJAgngAAEsQTAECCeAIASBBPAAAJ4gkAIKHF42n48OExaNCg+tsDBw6MM888s1H3nTZtWpSVlcWnn37aJLMBAHxT65Ye4JseeOCBWGeddRq1ds8994x33303Onbs2MRTAQB8ZbWLp86dOzd6bUVFRXTt2rUJpwEAaCj1st3AgQPj9NNPjzPPPDPWX3/96NKlS9x1113x+eefx3HHHRft27ePLbfcMh599NGIiKitrY0TTjghtthii2jbtm306dMnfvnLX37vY/z3y3Y1NTVx/vnnR1VVVVRWVsaWW24Zd999d0Qs/2W7P/zhD7HttttGZWVl9OjRI2644YYG5y8rK4sHH3ywwbFOnTrF+PHjIyJiyZIlcdppp0W3bt2iTZs2sfnmm8c111yT2SYAYA2WvvJ0zz33xHnnnRcvvPBC/O53v4uf/vSnMXny5DjiiCPioosuil/84hcxdOjQWLBgQayzzjqx6aabxqRJk2KDDTaI559/Pk4++eTo1q1bDB48uFGPd+yxx8aMGTPipptuih122CHmz58fH3744XLXzpw5MwYPHhyXXnppDBkyJJ5//vkYMWJEbLDBBjF8+PBGPd5NN90UDz30UEycODE222yzWLhwYSxcuPA719fU1ERNTU397erq6kY9DgBQooqEvffeu9hrr73qby9btqxYb731iqFDh9Yfe/fdd4uIKGbMmLHcc4wcObL40Y9+VH972LBhxeGHH97gMc4444yiKIpi7ty5RUQUTzzxxHLP9fTTTxcRUXzyySdFURTF0UcfXey///4N1px77rnFD37wg/rbEVFMnjy5wZqOHTsW48aNK4qiKE4//fRi3333Lerq6pb7mN80evToIiK+9bFo0aJG3R8AaHmLFi1q9PN3+qfttt9++/p/Li8vjw022CD69u1bf6xLly4REfHBBx9ERMStt94au+yyS2y00UbRrl27uPPOO2PBggWNeqxZs2ZFeXl57L333o1aP2fOnOjfv3+DY/3794/XX389amtrG3WO4cOHx6xZs6JPnz7xs5/9LKZOnbrC9RdeeGEsWrSo/mNFV6kAgNKXjqdv/iRcWVlZg2NlZWUREVFXVxcTJkyIUaNGxQknnBBTp06NWbNmxXHHHRdLlixp1GO1bds2O973Kisri6IoGhxbunRp/T/vvPPOMX/+/Ljiiiviyy+/jMGDB8dRRx31neerrKyMDh06NPgAANZcTfrTdtOnT48999wzRowYUX/szTffbPT9+/btG3V1dfHMM8/Efvvt973rt9lmm5g+ffq3Zujdu3eUl5dHRMRGG20U7777bv3nX3/99fjiiy8a3KdDhw4xZMiQGDJkSBx11FFx4IEHxscff5z6SUAAYM3UpPG01VZbxb333huPP/54bLHFFvHb3/42Xnzxxdhiiy0adf8ePXrEsGHD4vjjj69/w/jbb78dH3zwwXLfcH7OOefEbrvtFldccUUMGTIkZsyYEbfcckvcdttt9Wv23XffuOWWW2KPPfaI2traOP/88xtcORs7dmx069Ytdtppp2jVqlVMmjQpunbtGp06dfqf9wMAKH1N+hvGTznllDjyyCNjyJAh0a9fv/joo48aXIVqjNtvvz2OOuqoGDFiRGy99dZx0kknxeeff77ctTvvvHNMnDgxJkyYENttt1383//9X1x++eUNftLuhhtuiKqqqhgwYEAcffTRMWrUqFh33XXrP9++ffu4/vrrY9ddd43ddtst3nrrrZgyZUq0atXiv4wdAFgNlBXffAMQ/5Pq6uro2LFjLFq0yPufAKBEZJ6/XU4BAEgQTwAACeIJACBBPAEAJIgnAIAE8QQAkCCeAAASxBMAQIJ4AgBIaNK/bbc2+voXtldXV7fwJABAY339vN2YP7winlaxjz76KCIiqqqqWngSACBr8eLF0bFjxxWuEU+rWOfOnSMiYsGCBd+7+eRVV1dHVVVVLFy40N8OXMXsbdOyv03H3jattWV/i6KIxYsXR/fu3b93rXhaxVq1+uptZB07dlyjv8laWocOHexvE7G3Tcv+Nh1727TWhv1t7EUPbxgHAEgQTwAACeJpFausrIzRo0dHZWVlS4+yRrK/TcfeNi3723TsbdOyv99WVjTmZ/IAAIgIV54AAFLEEwBAgngCAEgQTwAACeJpJdx6663Ro0ePaNOmTfTr1y9eeOGFFa6fNGlSbL311tGmTZvo27dvTJkypZkmLU2Z/b3rrrtiwIABsf7668f6668f++233/f++1ibZb93vzZhwoQoKyuLQYMGNe2AJS67v59++mmMHDkyunXrFpWVldG7d2//f/gO2b298cYbo0+fPtG2bduoqqqKs846K/7zn/8007Sl49lnn41DDz00unfvHmVlZfHggw9+732mTZsWO++8c1RWVsaWW24Z48ePb/I5VzsFKRMmTCgqKiqK3/zmN8U//vGP4qSTTio6depUvP/++8tdP3369KK8vLy4/vrri1deeaX4+c9/XqyzzjrF7Nmzm3ny0pDd36OPPrq49dZbi5deeqmYM2dOMXz48KJjx47FP//5z2aefPWX3duvzZ8/v9hkk02KAQMGFIcffnjzDFuCsvtbU1NT7LrrrsXBBx9cPPfcc8X8+fOLadOmFbNmzWrmyVd/2b297777isrKyuK+++4r5s+fXzz++ONFt27dirPOOquZJ1/9TZkypbj44ouLBx54oIiIYvLkyStcP2/evGLdddctzj777OKVV14pbr755qK8vLx47LHHmmfg1YR4Stp9992LkSNH1t+ura0tunfvXlxzzTXLXT948ODikEMOaXCsX79+xSmnnNKkc5aq7P5+07Jly4r27dsX99xzT1ONWLJWZm+XLVtW7LnnnsWvf/3rYtiwYeJpBbL7e/vttxc9e/YslixZ0lwjlqzs3o4cObLYd999Gxw7++yzi/79+zfpnKWuMfF03nnnFdtuu22DY0OGDCkOOOCAJpxs9eNlu4QlS5bEzJkzY7/99qs/1qpVq9hvv/1ixowZy73PjBkzGqyPiDjggAO+c/3abGX295u++OKLWLp0af0faOYrK7u3l19+eWy88cZxwgknNMeYJWtl9vehhx6KPfbYI0aOHBldunSJ7bbbLq6++uqora1trrFLwsrs7Z577hkzZ86sf2lv3rx5MWXKlDj44IObZeY1mee0r/jDwAkffvhh1NbWRpcuXRoc79KlS7z66qvLvc9777233PXvvfdek81ZqlZmf7/p/PPPj+7du3/rP+613crs7XPPPRd33313zJo1qxkmLG0rs7/z5s2LP//5z3HMMcfElClT4o033ogRI0bE0qVLY/To0c0xdklYmb09+uij48MPP4y99toriqKIZcuWxamnnhoXXXRRc4y8Rvuu57Tq6ur48ssvo23bti00WfNy5Yk1xrXXXhsTJkyIyZMnR5s2bVp6nJK2ePHiGDp0aNx1112x4YYbtvQ4a6S6urrYeOON484774xddtklhgwZEhdffHHccccdLT1ayZs2bVpcffXVcdttt8Xf/va3eOCBB+KRRx6JK664oqVHYw3hylPChhtuGOXl5fH+++83OP7+++9H165dl3ufrl27ptavzVZmf782ZsyYuPbaa+PJJ5+M7bffvinHLEnZvX3zzTfjrbfeikMPPbT+WF1dXUREtG7dOubOnRu9evVq2qFLyMp873br1i3WWWedKC8vrz+2zTbbxHvvvRdLliyJioqKJp25VKzM3l5yySUxdOjQOPHEEyMiom/fvvH555/HySefHBdffHG0auW6wcr6rue0Dh06rDVXnSJceUqpqKiIXXbZJZ566qn6Y3V1dfHUU0/FHnvssdz77LHHHg3WR0Q88cQT37l+bbYy+xsRcf3118cVV1wRjz32WOy6667NMWrJye7t1ltvHbNnz45Zs2bVfxx22GGxzz77xKxZs6Kqqqo5x1/trcz3bv/+/eONN96oj9KIiNdeey26desmnP7LyuztF1988a1A+jpSC3/O9X/iOe3/a+l3rJeaCRMmFJWVlcX48eOLV155pTj55JOLTp06Fe+9915RFEUxdOjQ4oILLqhfP3369KJ169bFmDFjijlz5hSjR4/2qwpWILu/1157bVFRUVH8/ve/L9599936j8WLF7fUl7Dayu7tN/lpuxXL7u+CBQuK9u3bF6eddloxd+7c4uGHHy423njj4sorr2ypL2G1ld3b0aNHF+3bty/uv//+Yt68ecXUqVOLXr16FYMHD26pL2G1tXjx4uKll14qXnrppSIiirFjxxYvvfRS8fbbbxdFURQXXHBBMXTo0Pr1X/+qgnPPPbeYM2dOceutt/pVBTTOzTffXGy22WZFRUVFsfvuuxd//etf6z+39957F8OGDWuwfuLEiUXv3r2LioqKYtttty0eeeSRZp64tGT2d/PNNy8i4lsfo0ePbv7BS0D2e/e/iafvl93f559/vujXr19RWVlZ9OzZs7jqqquKZcuWNfPUpSGzt0uXLi0uvfTSolevXkWbNm2KqqqqYsSIEcUnn3zS/IOv5p5++unl/j/06/0cNmxYsffee3/rPjvuuGNRUVFR9OzZsxg3blyzz93SyorCNUwAgMbynicAgATxBACQIJ4AABLEEwBAgngCAEgQTwAACeIJACBBPAEAJeHZZ5+NQw89NLp37x5lZWXx4IMPps9RFEWMGTMmevfuHZWVlbHJJpvEVVddlTqHPwwMAJSEzz//PHbYYYc4/vjj48gjj1ypc5xxxhkxderUGDNmTPTt2zc+/vjj+Pjjj1Pn8BvGAYCSU1ZWFpMnT45BgwbVH6upqYmLL7447r///vj0009ju+22i+uuuy4GDhwYERFz5syJ7bffPv7+979Hnz59VvqxvWwHAKwRTjvttJgxY0ZMmDAhXn755fjxj38cBx54YLz++usREfGnP/0pevbsGQ8//HBsscUW0aNHjzjxxBPTV57EEwBQ8hYsWBDjxo2LSZMmxYABA6JXr14xatSo2GuvvWLcuHERETFv3rx4++23Y9KkSXHvvffG+PHjY+bMmXHUUUelHst7ngCAkjd79uyora2N3r17NzheU1MTG2ywQURE1NXVRU1NTdx777316+6+++7YZZddYu7cuY1+KU88AQAl77PPPovy8vKYOXNmlJeXN/hcu3btIiKiW7du0bp16waBtc0220TEV1euxBMAsNbYaaedora2Nj744IMYMGDActf0798/li1bFm+++Wb06tUrIiJee+21iIjYfPPNG/1YftoOACgJn332WbzxxhsR8VUsjR07NvbZZ5/o3LlzbLbZZvGTn/wkpk+fHjfccEPstNNO8e9//zueeuqp2H777eOQQw6Jurq62G233aJdu3Zx4403Rl1dXYwcOTI6dOgQU6dObfQc4gkAKAnTpk2LffbZ51vHhw0bFuPHj4+lS5fGlVdeGffee2/861//ig033DB++MMfxmWXXRZ9+/aNiIh33nknTj/99Jg6dWqst956cdBBB8UNN9wQnTt3bvQc4gkAIMGvKgAASBBPAAAJ4gkAIEE8AQAkiCcAgATxBACQIJ4AABLEEwBAgngCAEgQTwAACeIJACBBPAEAJPw/KSg3qctNl/AAAAAASUVORK5CYII=", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAk8AAAGvCAYAAABCazFxAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/OQEPoAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAa1ElEQVR4nO3de5DVdf348deyuAvKTUS52MpNFx1F8kqKjFg23saixmBGQ0jFDLS8UGpmeEvIkMxrZQbaNBEUWCkqZqEJNDgEIwXiBRTKW2a6qH0X2P38/vDnTquI+yJ2lwOPx8zOuJ/9nM95nber5zmf8zlny4qiKAIAgCZp09oDAACUEvEEAJAgngAAEsQTAECCeAIASBBPAAAJ4gkAIEE8AQAktG3tAXY09fX18eKLL0bHjh2jrKystccBAJqgKIpYv3599OrVK9q02fK5JfG0jb344otRVVXV2mMAAFth3bp18bGPfWyL+4inbaxjx44R8e7id+rUqZWnAQCaoqamJqqqqhqex7dEPG1j771U16lTJ/EEACWmKZfcuGAcACBBPAEAJIgnAIAE8QQAkCCeAAASxBMAQIJ4AgBIEE8AAAniCQAgQTwBACSIJwCABPEEAJAgngAAEtq29gA7qoMmPhRtKndt7TGAZvb85FNaewSghTnzBACQIJ4AABLEEwBAgngCAEgQTwAACeIJACBBPAEAJIgnAIAE8QQAkCCeAAASxBMAQIJ4AgBIEE8AAAniCQAgQTwBACSIJwCABPEEAJAgngAAEsQTAECCeAIASBBPAAAJ4gkAIEE8AQAkiCcAgATxBACQIJ4AABLEEwBAgngCAEgQTwAACeIJACBBPAEAJIgnAIAE8QQAkCCeAAASxBMAQIJ4AgBIEE8AAAniCQAgQTwBACSIJwCABPEEAJAgngAAEsQTAECCeAIASBBPAAAJ4gkAIEE8AQAkiCcAgATxBACQIJ4AABLEEwBAgngCAEgQTwAACeIJACBBPAEAJIgnAIAE8QQAkCCeAAASxBMAQIJ4AgBIEE8AAAniCQAgQTwBACSIJwCABPEEAJAgngAAEsQTAECCeAIASBBPAAAJ4gkAIEE8AQAkiCcAgATxBACQIJ4AABLEEwBAgngCAEgQTwAACeIJACBBPAEAJIgnAIAE8QQAkCCeAAASxBMAQIJ4AgBIEE8AAAniCQAgQTwBACSIJwCABPEEAJAgngAAEsQTAECCeAIASBBPAAAJ4gkAIEE8AQAkiCcAgATxBACQIJ4AABLEEwBAgngCAEgQTwAACeIJACBBPAEAJIgnAIAE8QQAkCCeAAASxBMAQIJ4AgBIEE8AAAniCQAgQTwBACSIJwCABPEEAJAgngAAEsQTAECCeAIASBBPAAAJ4gkAIEE8AQAkiCcAgATxBACQIJ4AABLEEwBAgngCAEgQTwAACeIJACBBPAEAJIgnAIAE8QQAkCCeAAASxBMAQIJ4AgBIEE8AAAniCQAgQTwBACSIJwCABPEEAJAgngAAEsQTAECCeAIASBBPAAAJ4gkAIEE8AQAkiCcAgATxBACQIJ4AABLEEwBAgngCAEgQTwAACeIJACBBPAEAJIgnAIAE8QQAkCCeAAASxBMAQIJ4AgBIEE8AAAniCQAgQTwBACSIJwCABPEEAJAgngAAElo9nsaMGRPDhw9v+H7YsGFx4YUXNum28+fPj7KysnjjjTeaZTYAgPdr29oDvN/s2bNjl112adK+Rx99dLz00kvRuXPnZp4KAOBd2108de3atcn7VlRURI8ePZpxGgCAxlIv2w0bNiwuuOCCuPDCC2P33XeP7t27x5133hlvv/12fOlLX4qOHTvGvvvuGw888EBERNTV1cXZZ58dffv2jfbt28eAAQPiBz/4wUfex3+/bFdbWxuXXnppVFVVRWVlZey7775x1113RcTmX7b79a9/HQceeGBUVlZGnz594sYbb2x0/LKysrj33nsbbevSpUtMnz49IiI2bNgQ559/fvTs2TPatWsXvXv3jkmTJmWWCQDYgaXPPN19993xjW98IxYvXhy//OUv4ytf+UrMmTMnPve5z8U3v/nN+P73vx+jRo2KtWvXxi677BIf+9jHYtasWbHHHnvEwoUL49xzz42ePXvGiBEjmnR/Z555ZixatChuvvnmGDRoUKxZsyZee+21ze67ZMmSGDFiRFx11VUxcuTIWLhwYYwbNy722GOPGDNmTJPu7+abb47f/va3MXPmzNhnn31i3bp1sW7dug/dv7a2Nmpraxu+r6mpadL9AAClKR1PgwYNim9961sREXH55ZfH5MmTo1u3bjF27NiIiPj2t78dd9xxRzz55JPxiU98Iq6++uqG2/bt2zcWLVoUM2fObFI8Pf300zFz5sx4+OGH4/jjj4+IiH79+n3o/lOnTo1PfepTceWVV0ZERHV1daxYsSK+973vNTme1q5dG/vtt18cc8wxUVZWFr17997i/pMmTWr0GIGdS5/L7m/tEWCn8vzkU1p7hPy77Q4++OCGfy4vL4899tgjBg4c2LCte/fuERHx6quvRkTEbbfdFocddljsueee0aFDh/jxj38ca9eubdJ9LVu2LMrLy+PYY49t0v4rV66MIUOGNNo2ZMiQeOaZZ6Kurq5JxxgzZkwsW7YsBgwYEF/96ldj3rx5W9z/8ssvjzfffLPha0tnqQCA0peOp/e/E66srKzRtrKysoiIqK+vjxkzZsSECRPi7LPPjnnz5sWyZcviS1/6UmzYsKFJ99W+ffvseB+prKwsiqJotG3jxo0N/3zooYfGmjVr4tprr43//Oc/MWLEiDjttNM+9HiVlZXRqVOnRl8AwI6rWd9tt2DBgjj66KNj3LhxDduee+65Jt9+4MCBUV9fH48++mjDy3ZbcsABB8SCBQs+MEN1dXWUl5dHRMSee+4ZL730UsPPn3nmmXjnnXca3aZTp04xcuTIGDlyZJx22mlx4oknxuuvv556JyAAsGNq1njab7/94p577omHHnoo+vbtGz/72c/iiSeeiL59+zbp9n369InRo0fHWWed1XDB+AsvvBCvvvrqZq+ZuuSSS+KII46Ia6+9NkaOHBmLFi2KW2+9NW6//faGfT75yU/GrbfeGkcddVTU1dXFpZde2ujM2dSpU6Nnz55xyCGHRJs2bWLWrFnRo0eP6NKly/+8HgBA6WvWTxj/8pe/HJ///Odj5MiRMXjw4PjXv/7V6CxUU9xxxx1x2mmnxbhx42L//fePsWPHxttvv73ZfQ899NCYOXNmzJgxIw466KD49re/Hddcc02ji8VvvPHGqKqqiqFDh8bpp58eEyZMiF133bXh5x07dowbbrghDj/88DjiiCPi+eefj7lz50abNq3+YewAwHagrHj/BUD8T2pqaqJz585RdeHMaFO560ffAABosuZ6t917z99vvvnmR16/7HQKAECCeAIASBBPAAAJ4gkAIEE8AQAkiCcAgATxBACQIJ4AABLEEwBAgngCAEgQTwAACeIJACBBPAEAJIgnAIAE8QQAkCCeAAASxBMAQIJ4AgBIEE8AAAniCQAgQTwBACSIJwCABPEEAJAgngAAEsQTAECCeAIASBBPAAAJ4gkAIEE8AQAkiCcAgATxBACQIJ4AABLEEwBAgngCAEgQTwAACeIJACBBPAEAJIgnAIAE8QQAkCCeAAASxBMAQIJ4AgBIEE8AAAniCQAgQTwBACSIJwCABPEEAJAgngAAEsQTAECCeAIASBBPAAAJ4gkAIEE8AQAkiCcAgATxBACQIJ4AABLEEwBAgngCAEgQTwAACeIJACBBPAEAJIgnAIAE8QQAkCCeAAASxBMAQIJ4AgBIEE8AAAniCQAgQTwBACSIJwCABPEEAJAgngAAEsQTAECCeAIASBBPAAAJ4gkAIEE8AQAkiCcAgATxBACQIJ4AABLEEwBAgngCAEgQTwAACeIJACBBPAEAJIgnAIAE8QQAkCCeAAASxBMAQIJ4AgBIEE8AAAniCQAgQTwBACSIJwCABPEEAJAgngAAEsQTAECCeAIASBBPAAAJ4gkAIEE8AQAkiCcAgATxBACQIJ4AABLEEwBAgngCAEgQTwAACeIJACBBPAEAJIgnAIAE8QQAkCCeAAASxBMAQIJ4AgBIEE8AAAniCQAgQTwBACSIJwCABPEEAJAgngAAEsQTAECCeAIASBBPAAAJ4gkAIEE8AQAkiCcAgATxBACQIJ4AABLEEwBAgngCAEgQTwAACeIJACBBPAEAJIgnAIAE8QQAkCCeAAASxBMAQIJ4AgBIEE8AAAniCQAgQTwBACSIJwCABPEEAJAgngAAEsQTAECCeAIASBBPAAAJ4gkAIEE8AQAkiCcAgATxBACQIJ4AABLEEwBAgngCAEgQTwAACeIJACChZONp2LBhceGFF26z41111VXx8Y9/fJsdDwDYMZVsPG1rEyZMiEceeaTh+zFjxsTw4cNbbyAAYLvUtrUH2F506NAhOnTo0NpjAADbuR3izFNtbW1MmDAh9t5779htt91i8ODBMX/+/Eb73HnnnVFVVRW77rprfO5zn4upU6dGly5dGn7+3y/bXXXVVXH33XfHb37zmygrK4uysrIPHA8A2DntEGeezj///FixYkXMmDEjevXqFXPmzIkTTzwxli9fHvvtt18sWLAgzjvvvPjud78bn/nMZ+L3v/99XHnllR96vAkTJsTKlSujpqYmpk2bFhERXbt23ey+tbW1UVtb2/B9TU3Ntn1wAMB2peTjae3atTFt2rRYu3Zt9OrVKyLejZ8HH3wwpk2bFtdff33ccsstcdJJJ8WECRMiIqK6ujoWLlwY991332aP2aFDh2jfvn3U1tZGjx49tnj/kyZNiquvvvoD2/969QnRqVOn//HRAQDbm5J/2W758uVRV1cX1dXVDdctdejQIR599NF47rnnIiJi1apVceSRRza63fu/31qXX355vPnmmw1f69at2ybHBQC2TyV/5umtt96K8vLyWLJkSZSXlzf6WUtcAF5ZWRmVlZXNfj8AwPah5OPpkEMOibq6unj11Vdj6NChm91nwIAB8cQTTzTa9v7v36+ioiLq6uq22ZwAwI6h5F+2q66ujjPOOCPOPPPMmD17dqxZsyYWL14ckyZNivvvvz8iIi644IKYO3duTJ06NZ555pn40Y9+FA888ECUlZV96HH79OkTTz75ZKxatSpee+212LhxY0s9JABgO1by8RQRMW3atDjzzDPjkksuiQEDBsTw4cPjiSeeiH322SciIoYMGRI//OEPY+rUqTFo0KB48MEH46KLLop27dp96DHHjh0bAwYMiMMPPzz23HPPWLBgQUs9HABgO1ZWFEXR2kO0hrFjx8ZTTz0Vf/rTn7bpcWtqaqJz587x5ptvercdAJSIzPN3yV/z1FRTpkyJT3/607HbbrvFAw88EHfffXfcfvvtrT0WAFBidpp4Wrx4cdxwww2xfv366NevX9x8881xzjnntPZYAECJ2WniaebMma09AgCwA9ghLhgHAGgp4gkAIEE8AQAkiCcAgATxBACQIJ4AABJ2mo8qaCnvfWB7TU1NK08CADTVe8/bTfnDK+JpG/vXv/4VERFVVVWtPAkAkLV+/fro3LnzFvcRT9tY165dIyJi7dq1H7n45NXU1ERVVVWsW7fO3w7cxqxt87K+zcfaNq+dZX2Looj169dHr169PnJf8bSNtWnz7mVknTt33qF/yVpbp06drG8zsbbNy/o2H2vbvHaG9W3qSQ8XjAMAJIgnAIAE8bSNVVZWxsSJE6OysrK1R9khWd/mY22bl/VtPta2eVnfDyormvKePAAAIsKZJwCAFPEEAJAgngAAEsQTAECCeNoKt912W/Tp0yfatWsXgwcPjsWLF29x/1mzZsX+++8f7dq1i4EDB8bcuXNbaNLSlFnfO++8M4YOHRq777577L777nH88cd/5L+PnVn2d/c9M2bMiLKyshg+fHjzDljisuv7xhtvxPjx46Nnz55RWVkZ1dXV/v/wIbJre9NNN8WAAQOiffv2UVVVFRdddFH83//9XwtNWzoee+yxOPXUU6NXr15RVlYW995770feZv78+XHooYdGZWVl7LvvvjF9+vRmn3O7U5AyY8aMoqKiovjpT39a/O1vfyvGjh1bdOnSpXjllVc2u/+CBQuK8vLy4oYbbihWrFhRfOtb3yp22WWXYvny5S08eWnIru/pp59e3HbbbcXSpUuLlStXFmPGjCk6d+5c/P3vf2/hybd/2bV9z5o1a4q99967GDp0aPHZz362ZYYtQdn1ra2tLQ4//PDi5JNPLh5//PFizZo1xfz584tly5a18OTbv+za/vznPy8qKyuLn//858WaNWuKhx56qOjZs2dx0UUXtfDk27+5c+cWV1xxRTF79uwiIoo5c+Zscf/Vq1cXu+66a3HxxRcXK1asKG655ZaivLy8ePDBB1tm4O2EeEo68sgji/Hjxzd8X1dXV/Tq1auYNGnSZvcfMWJEccoppzTaNnjw4OLLX/5ys85ZqrLr+36bNm0qOnbsWNx9993NNWLJ2pq13bRpU3H00UcXP/nJT4rRo0eLpy3Iru8dd9xR9OvXr9iwYUNLjViysms7fvz44pOf/GSjbRdffHExZMiQZp2z1DUlnr7xjW8UBx54YKNtI0eOLE444YRmnGz742W7hA0bNsSSJUvi+OOPb9jWpk2bOP7442PRokWbvc2iRYsa7R8RccIJJ3zo/juzrVnf93vnnXdi48aNDX+gmXdt7dpec801sddee8XZZ5/dEmOWrK1Z39/+9rdx1FFHxfjx46N79+5x0EEHxfXXXx91dXUtNXZJ2Jq1Pfroo2PJkiUNL+2tXr065s6dGyeffHKLzLwj85z2Ln8YOOG1116Lurq66N69e6Pt3bt3j6eeemqzt3n55Zc3u//LL7/cbHOWqq1Z3/e79NJLo1evXh/4j3tntzVr+/jjj8ddd90Vy5Yta4EJS9vWrO/q1avjD3/4Q5xxxhkxd+7cePbZZ2PcuHGxcePGmDhxYkuMXRK2Zm1PP/30eO211+KYY46Joihi06ZNcd5558U3v/nNlhh5h/Zhz2k1NTXxn//8J9q3b99Kk7UsZ57YYUyePDlmzJgRc+bMiXbt2rX2OCVt/fr1MWrUqLjzzjujW7durT3ODqm+vj722muv+PGPfxyHHXZYjBw5Mq644or44Q9/2Nqjlbz58+fH9ddfH7fffnv85S9/idmzZ8f9998f1157bWuPxg7CmaeEbt26RXl5ebzyyiuNtr/yyivRo0ePzd6mR48eqf13Zluzvu+ZMmVKTJ48OX7/+9/HwQcf3JxjlqTs2j733HPx/PPPx6mnntqwrb6+PiIi2rZtG6tWrYr+/fs379AlZGt+d3v27Bm77LJLlJeXN2w74IAD4uWXX44NGzZERUVFs85cKrZmba+88soYNWpUnHPOORERMXDgwHj77bfj3HPPjSuuuCLatHHeYGt92HNap06ddpqzThHOPKVUVFTEYYcdFo888kjDtvr6+njkkUfiqKOO2uxtjjrqqEb7R0Q8/PDDH7r/zmxr1jci4oYbbohrr702HnzwwTj88MNbYtSSk13b/fffP5YvXx7Lli1r+PrMZz4Txx13XCxbtiyqqqpacvzt3tb87g4ZMiSeffbZhiiNiHj66aejZ8+ewum/bM3avvPOOx8IpPcitfDnXP8nntP+v9a+Yr3UzJgxo6isrCymT59erFixojj33HOLLl26FC+//HJRFEUxatSo4rLLLmvYf8GCBUXbtm2LKVOmFCtXriwmTpzoowq2ILu+kydPLioqKopf/epXxUsvvdTwtX79+tZ6CNut7Nq+n3fbbVl2fdeuXVt07NixOP/884tVq1YV9913X7HXXnsV1113XWs9hO1Wdm0nTpxYdOzYsfjFL35RrF69upg3b17Rv3//YsSIEa31ELZb69evL5YuXVosXbq0iIhi6tSpxdKlS4sXXnihKIqiuOyyy4pRo0Y17P/eRxV8/etfL1auXFncdtttPqqAprnllluKffbZp6ioqCiOPPLI4s9//nPDz4499thi9OjRjfafOXNmUV1dXVRUVBQHHnhgcf/997fwxKUls769e/cuIuIDXxMnTmz5wUtA9nf3v4mnj5Zd34ULFxaDBw8uKisri379+hXf+c53ik2bNrXw1KUhs7YbN24srrrqqqJ///5Fu3btiqqqqmLcuHHFv//975YffDv3xz/+cbP/D31vPUePHl0ce+yxH7jNxz/+8aKioqLo169fMW3atBafu7WVFYVzmAAATeWaJwCABPEEAJAgngAAEsQTAECCeAIASBBPAAAJ4gkAIEE8AQAl4bHHHotTTz01evXqFWVlZXHvvfemj1EURUyZMiWqq6ujsrIy9t577/jOd76TOoY/DAwAlIS33347Bg0aFGeddVZ8/vOf36pjfO1rX4t58+bFlClTYuDAgfH666/H66+/njqGTxgHAEpOWVlZzJkzJ4YPH96wrba2Nq644or4xS9+EW+88UYcdNBB8d3vfjeGDRsWERErV66Mgw8+OP7617/GgAEDtvq+vWwHAOwQzj///Fi0aFHMmDEjnnzyyfjCF74QJ554YjzzzDMREfG73/0u+vXrF/fdd1/07ds3+vTpE+ecc076zJN4AgBK3tq1a2PatGkxa9asGDp0aPTv3z8mTJgQxxxzTEybNi0iIlavXh0vvPBCzJo1K+65556YPn16LFmyJE477bTUfbnmCQAoecuXL4+6urqorq5utL22tjb22GOPiIior6+P2trauOeeexr2u+uuu+Kwww6LVatWNfmlPPEEAJS8t956K8rLy2PJkiVRXl7e6GcdOnSIiIiePXtG27ZtGwXWAQccEBHvnrkSTwDATuOQQw6Jurq6ePXVV2Po0KGb3WfIkCGxadOmeO6556J///4REfH0009HRETv3r2bfF/ebQcAlIS33nornn322Yh4N5amTp0axx13XHTt2jX22Wef+OIXvxgLFiyIG2+8MQ455JD45z//GY888kgcfPDBccopp0R9fX0cccQR0aFDh7jpppuivr4+xo8fH506dYp58+Y1eQ7xBACUhPnz58dxxx33ge2jR4+O6dOnx8aNG+O6666Le+65J/7xj39Et27d4hOf+ERcffXVMXDgwIiIePHFF+OCCy6IefPmxW677RYnnXRS3HjjjdG1a9cmzyGeAAASfFQBAECCeAIASBBPAAAJ4gkAIEE8AQAkiCcAgATxBACQIJ4AABLEEwBAgngCAEgQTwAACeIJACDh/wFztn1HY8OXdAAAAABJRU5ErkJggg==", "text/plain": [ "
" ] @@ -566,7 +448,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 8, "metadata": {}, "outputs": [], "source": [ @@ -585,7 +467,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -614,7 +496,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 10, "metadata": {}, "outputs": [ { @@ -639,7 +521,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -661,7 +543,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -711,7 +593,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 13, "metadata": {}, "outputs": [ {