aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJ08nY2025-04-02 22:43:55 +0200
committerJ08nY2025-04-16 12:25:07 +0200
commite4796abf6ad1aaa2853d4c315d00890794a62f88 (patch)
treea3e11ea93f8dc3de00f31d197dcfdd0ac948cc76
parentbe1110496fbbc4a3599203ac7f69e302f9f664c9 (diff)
downloadECTester-e4796abf6ad1aaa2853d4c315d00890794a62f88.tar.gz
ECTester-e4796abf6ad1aaa2853d4c315d00890794a62f88.tar.zst
ECTester-e4796abf6ad1aaa2853d4c315d00890794a62f88.zip
-rw-r--r--epare/countermeasures.ipynb1473
1 files changed, 234 insertions, 1239 deletions
diff --git a/epare/countermeasures.ipynb b/epare/countermeasures.ipynb
index f695521..58c654d 100644
--- a/epare/countermeasures.ipynb
+++ b/epare/countermeasures.ipynb
@@ -10,7 +10,7 @@
},
{
"cell_type": "code",
- "execution_count": 2,
+ "execution_count": 69,
"id": "33ee6084-2ac3-4f95-9610-0fbc06026538",
"metadata": {},
"outputs": [],
@@ -18,7 +18,10 @@
"import io\n",
"import random\n",
"import itertools\n",
+ "import warnings\n",
+ "\n",
"import cypari2\n",
+ "from cysignals.alarm import alarm, AlarmInterrupt\n",
"\n",
"from matplotlib import pyplot as plt\n",
"from collections import Counter\n",
@@ -38,7 +41,7 @@
},
{
"cell_type": "code",
- "execution_count": 3,
+ "execution_count": null,
"id": "b1b9596c-1eba-4ace-af84-8cb279d84cc2",
"metadata": {},
"outputs": [],
@@ -49,7 +52,7 @@
},
{
"cell_type": "code",
- "execution_count": 4,
+ "execution_count": null,
"id": "b0afb195-8390-44c5-931e-75a70ccd4e9e",
"metadata": {},
"outputs": [],
@@ -61,7 +64,7 @@
},
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": null,
"id": "52c877e1-5021-4ec2-9daa-dd20bec6bcb2",
"metadata": {},
"outputs": [],
@@ -83,7 +86,7 @@
},
{
"cell_type": "code",
- "execution_count": 208,
+ "execution_count": null,
"id": "c3088419-161b-4193-a1b6-6f623f217fcd",
"metadata": {},
"outputs": [],
@@ -98,27 +101,10 @@
},
{
"cell_type": "code",
- "execution_count": 209,
+ "execution_count": null,
"id": "a8dde7e6-cd48-4f99-9677-23a19e4c2e5b",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "prime:\t0xc381bb0394f34b5ed061c9107b66974f4d0a8ec89b9fe73b98b6d1368c7d974d\n",
- "a:\t0x5ca6c5ee0a10097af291a8f125303fb1a3e35e8100411902245d691e0e5cb497\n",
- "b:\t0x385a5a8bb8af94721f6fd10b562606d9b9df931f7fd966e96859bb9bd7c05836\n",
- "G:\t[0x4616af1898b92cac0f902a9daee24bbae63571cead270467c6a7886ced421f5e,\n",
- "\t 0x34e896bdb1337e0ae5960fa3389fb59c2c8d6c7dbfd9aac33a844f8f98e433ef]\n",
- "n:\t0x412b3e5686fbc3ca4575edb0292232702ae721a7d4a230cc170a5561aa70e00f\n",
- "3n:\t0xc381bb0394f34b5ed061c9107b66975080b564f77de69264451f0024ff52a02d\n",
- "\n",
- "P:\t[0x4a48addb2e471767b7cd0f6f1d4c27fe46f4a828fc20f950bd1f72c939b36a84,\n",
- "\t 0x13384d38c353f862832c0f067e46a3e510bb6803c20745dfb31929f4a18d890d]\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"print(f\"prime:\\t0x{params3n.curve.prime:x}\")\n",
"print(f\"a:\\t0x{params3n.curve.parameters['a']:x}\")\n",
@@ -131,7 +117,7 @@
},
{
"cell_type": "code",
- "execution_count": 210,
+ "execution_count": null,
"id": "cd6f8500-7509-45b0-8b23-471ee5014f42",
"metadata": {},
"outputs": [],
@@ -205,34 +191,10 @@
},
{
"cell_type": "code",
- "execution_count": 211,
+ "execution_count": null,
"id": "86532d50-2db7-4370-b449-c545b330a852",
"metadata": {},
- "outputs": [
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "b0a80fc9b8f14b2992f10c7bb66a9a83",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- " 0%| | 0/1000 [00:00<?, ?it/s]"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "k:\t326\n",
- "k + 1n:\t341\n",
- "k + 2n:\t333\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"test_3n_fixed_scalar(gsr, 1000)"
]
@@ -247,33 +209,10 @@
},
{
"cell_type": "code",
- "execution_count": 212,
+ "execution_count": null,
"id": "ad421630-606f-4666-9bbf-1a446eec1b59",
"metadata": {},
- "outputs": [
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "0d0f2e87f3044516924fbd74ba68f983",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- " 0%| | 0/1000 [00:00<?, ?it/s]"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "k:\t500\n",
- "k + 1n:\t500\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"test_3n_fixed_scalar(asplit, 1000)"
]
@@ -288,34 +227,10 @@
},
{
"cell_type": "code",
- "execution_count": 213,
+ "execution_count": null,
"id": "3ed5d7f3-0ba1-4b62-9635-aeb492499175",
"metadata": {},
- "outputs": [
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "9eb1217838fa4931bb0f0f9cd86aba09",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- " 0%| | 0/1000 [00:00<?, ?it/s]"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "k:\t221\n",
- "k + 1n:\t544\n",
- "k + 2n:\t235\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"test_3n_fixed_scalar(msplit, 1000)"
]
@@ -330,32 +245,10 @@
},
{
"cell_type": "code",
- "execution_count": 214,
+ "execution_count": null,
"id": "314447c6-a1fb-4d3a-8988-b34c8912dd5e",
"metadata": {},
- "outputs": [
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "1c6788e6f3614ea1a7a6c8c6cd761bb5",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- " 0%| | 0/1000 [00:00<?, ?it/s]"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "k:\t1000\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"test_3n_fixed_scalar(esplit, 1000)"
]
@@ -370,32 +263,10 @@
},
{
"cell_type": "code",
- "execution_count": 215,
+ "execution_count": null,
"id": "f41dfc1d-1017-4aa0-bcd4-6569c53bf81e",
"metadata": {},
- "outputs": [
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "9290687728e144329fd7dca7dcebabd8",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- " 0%| | 0/1000 [00:00<?, ?it/s]"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "k + 2n:\t1000\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"test_3n_fixed_scalar(bt, 1000)"
]
@@ -418,34 +289,10 @@
},
{
"cell_type": "code",
- "execution_count": 216,
+ "execution_count": null,
"id": "7255321a-6ad6-4938-8ec9-dd8d977686db",
"metadata": {},
- "outputs": [
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "63db299beb5b47679019f469b446d2c9",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- " 0%| | 0/1000 [00:00<?, ?it/s]"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "k:\t324\n",
- "k + 1n:\t337\n",
- "k + 2n:\t339\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"test_3n_random_scalar(gsr, 1000)"
]
@@ -460,33 +307,10 @@
},
{
"cell_type": "code",
- "execution_count": 217,
+ "execution_count": null,
"id": "b0146a9a-0803-43c4-ab29-8ba6e15934b5",
"metadata": {},
- "outputs": [
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "639cadec2edd4719b7bcbd5f6d9b80ae",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- " 0%| | 0/1000 [00:00<?, ?it/s]"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "k:\t491\n",
- "k + 1n:\t509\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"test_3n_random_scalar(asplit, 1000)"
]
@@ -501,34 +325,10 @@
},
{
"cell_type": "code",
- "execution_count": 218,
+ "execution_count": null,
"id": "5645ae6f-f5f4-419d-ba47-248532dc2114",
"metadata": {},
- "outputs": [
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "f3c8933bed464791b7d36ef8dbf8bf2b",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- " 0%| | 0/1000 [00:00<?, ?it/s]"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "k:\t341\n",
- "k + 1n:\t308\n",
- "k + 2n:\t351\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"test_3n_random_scalar(msplit, 1000)"
]
@@ -543,32 +343,10 @@
},
{
"cell_type": "code",
- "execution_count": 219,
+ "execution_count": null,
"id": "c9fc4f35-1c25-4cac-bb63-8bd70263db47",
"metadata": {},
- "outputs": [
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "85635506a91c4665b65d5377c06549b1",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- " 0%| | 0/1000 [00:00<?, ?it/s]"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "k:\t1000\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"test_3n_random_scalar(esplit, 1000)"
]
@@ -583,33 +361,10 @@
},
{
"cell_type": "code",
- "execution_count": 220,
+ "execution_count": null,
"id": "4fd6b288-08a9-4dbe-9145-e96401805315",
"metadata": {},
- "outputs": [
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "c46f2d9115ca4f17b229c5b0da6baf7b",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- " 0%| | 0/1000 [00:00<?, ?it/s]"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "k + 1n:\t36\n",
- "k + 2n:\t964\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"test_3n_random_scalar(bt, 1000)"
]
@@ -632,91 +387,10 @@
},
{
"cell_type": "code",
- "execution_count": 221,
+ "execution_count": null,
"id": "6c46fdbb-2ffb-4169-8e00-6d93b8407ee5",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "k = 0 mod 3\n"
- ]
- },
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "7561669af4664bfebcbcf2d5e5629d2e",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- " 0%| | 0/1000 [00:00<?, ?it/s]"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "k:\t340\n",
- "k + 1n:\t308\n",
- "k + 2n:\t352\n",
- "\n",
- "k = 1 mod 3\n"
- ]
- },
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "25e114540bef47d89efe10138dbe13cf",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- " 0%| | 0/1000 [00:00<?, ?it/s]"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "k:\t325\n",
- "k + 1n:\t337\n",
- "k + 2n:\t338\n",
- "\n",
- "k = 2 mod 3\n"
- ]
- },
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "a8a2dcd9e5954ecd8a0d2f6b54f4d436",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- " 0%| | 0/1000 [00:00<?, ?it/s]"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "k:\t312\n",
- "k + 1n:\t356\n",
- "k + 2n:\t332\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"test_3n_random_scalar_projected(gsr, 1000)"
]
@@ -731,88 +405,10 @@
},
{
"cell_type": "code",
- "execution_count": 222,
+ "execution_count": null,
"id": "344a4f90-3470-40e9-a75f-b925a88c2480",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "k = 0 mod 3\n"
- ]
- },
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "bc8d0b7c8f414943af7d3f133e43bd78",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- " 0%| | 0/1000 [00:00<?, ?it/s]"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "k:\t482\n",
- "k + 1n:\t518\n",
- "\n",
- "k = 1 mod 3\n"
- ]
- },
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "df03bde64059413fbe6a5208c458f5f9",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- " 0%| | 0/1000 [00:00<?, ?it/s]"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "k:\t513\n",
- "k + 1n:\t487\n",
- "\n",
- "k = 2 mod 3\n"
- ]
- },
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "d953bea042794219bf4aa32c1d16ad92",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- " 0%| | 0/1000 [00:00<?, ?it/s]"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "k:\t497\n",
- "k + 1n:\t503\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"test_3n_random_scalar_projected(asplit, 1000)"
]
@@ -827,91 +423,10 @@
},
{
"cell_type": "code",
- "execution_count": 223,
+ "execution_count": null,
"id": "616a7726-01e6-4e9c-b7f2-fe8f14b60071",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "k = 0 mod 3\n"
- ]
- },
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "4f329714588d4127bd4273dda2695222",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- " 0%| | 0/1000 [00:00<?, ?it/s]"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "k:\t563\n",
- "k + 1n:\t225\n",
- "k + 2n:\t212\n",
- "\n",
- "k = 1 mod 3\n"
- ]
- },
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "5f8e4efe89454eb5817d889b2fe77210",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- " 0%| | 0/1000 [00:00<?, ?it/s]"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "k:\t234\n",
- "k + 1n:\t221\n",
- "k + 2n:\t545\n",
- "\n",
- "k = 2 mod 3\n"
- ]
- },
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "0712286b1d8242c7ae0ea2255eda2f37",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- " 0%| | 0/1000 [00:00<?, ?it/s]"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "k:\t210\n",
- "k + 1n:\t578\n",
- "k + 2n:\t212\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"test_3n_random_scalar_projected(msplit, 1000)"
]
@@ -926,85 +441,10 @@
},
{
"cell_type": "code",
- "execution_count": 224,
+ "execution_count": null,
"id": "adced4e4-37a7-43ed-97b5-01cb5d274d6b",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "k = 0 mod 3\n"
- ]
- },
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "9588400d40a041e088d86352e7512a06",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- " 0%| | 0/1000 [00:00<?, ?it/s]"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "k:\t1000\n",
- "\n",
- "k = 1 mod 3\n"
- ]
- },
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "e3014e90730b44209d9bf87cd89598a3",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- " 0%| | 0/1000 [00:00<?, ?it/s]"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "k:\t1000\n",
- "\n",
- "k = 2 mod 3\n"
- ]
- },
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "1fe4739a9dd3482a9e0f1e7d379c57b3",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- " 0%| | 0/1000 [00:00<?, ?it/s]"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "k:\t1000\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"test_3n_random_scalar_projected(esplit, 1000)"
]
@@ -1019,88 +459,10 @@
},
{
"cell_type": "code",
- "execution_count": 225,
+ "execution_count": null,
"id": "fe8d8295-3e69-4b60-b8c3-5710deaeb0b3",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "k = 0 mod 3\n"
- ]
- },
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "2101fd299ebd49358729bf7dc7aa204a",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- " 0%| | 0/1000 [00:00<?, ?it/s]"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "k + 1n:\t39\n",
- "k + 2n:\t961\n",
- "\n",
- "k = 1 mod 3\n"
- ]
- },
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "ae5b94fb0d5b4395b98a6f905ea29a80",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- " 0%| | 0/1000 [00:00<?, ?it/s]"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "k + 1n:\t29\n",
- "k + 2n:\t971\n",
- "\n",
- "k = 2 mod 3\n"
- ]
- },
- {
- "data": {
- "application/vnd.jupyter.widget-view+json": {
- "model_id": "b3155abae413412bae324c579e5c7de5",
- "version_major": 2,
- "version_minor": 0
- },
- "text/plain": [
- " 0%| | 0/1000 [00:00<?, ?it/s]"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "k + 1n:\t33\n",
- "k + 2n:\t967\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"test_3n_random_scalar_projected(bt, 1000)"
]
@@ -1116,7 +478,7 @@
},
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": null,
"id": "20a26f27-620d-4d7f-92bd-b949482b5c9a",
"metadata": {},
"outputs": [],
@@ -1126,7 +488,7 @@
},
{
"cell_type": "code",
- "execution_count": 7,
+ "execution_count": null,
"id": "144340bd-5372-4beb-a46e-fd60c596b254",
"metadata": {},
"outputs": [],
@@ -1141,24 +503,10 @@
},
{
"cell_type": "code",
- "execution_count": 8,
+ "execution_count": null,
"id": "f103129c-17d3-4217-999b-94ecb4ec523d",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "prime:\t0xa9fa3419aca88bade2cba14e317816c79d52481d463dc9bcb12c37f45aa3b4e1\n",
- "a:\t0x2ea3bfe6659f8e035735349b91fbfa2baf0cf8e640315f0fe03c1136813dec99\n",
- "b:\t0x2b07c518e04b02158651e3dbbef7720015dd496bf15af02f8439f8e1503b8370\n",
- "G:\t[0x90fb04b1af19e8e20396ac052f260a9fb5f736b97e3cd4af08fe81a1e75dac6d,\n",
- "\t 0x2302bcf700d3d5899f04d0c7441f5017c9758bfafd6ce15dbe36fb4eea76baec]\n",
- "n+92:\t0xa9fa3419aca88bade2cba14e317816c6828910c6ce04fcd2a2e857d25df507d1 (fake order, given to the target, prime)\n",
- "n:\t0xa9fa3419aca88bade2cba14e317816c6828910c6ce04fcd2a2e857d25df50775 (real order, composite)\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"print(f\"prime:\\t0x{params92pn.curve.prime:x}\")\n",
"print(f\"a:\\t0x{params92pn.curve.parameters['a']:x}\")\n",
@@ -1185,7 +533,7 @@
},
{
"cell_type": "code",
- "execution_count": 9,
+ "execution_count": null,
"id": "08d99bd5-2b87-4a04-995d-7a87f9b67102",
"metadata": {},
"outputs": [],
@@ -1197,7 +545,7 @@
},
{
"cell_type": "code",
- "execution_count": 10,
+ "execution_count": null,
"id": "2a869bed-8e21-46af-8f70-065f4afd6a82",
"metadata": {},
"outputs": [],
@@ -1208,7 +556,7 @@
},
{
"cell_type": "code",
- "execution_count": 11,
+ "execution_count": null,
"id": "e440399a-bc01-488b-8822-08cc0bf1672d",
"metadata": {},
"outputs": [],
@@ -1221,19 +569,10 @@
},
{
"cell_type": "code",
- "execution_count": 12,
+ "execution_count": null,
"id": "7ea6d6ae-a6f5-4b53-8c40-787d79970cb6",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "3188254931\n",
- "32\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"mask = int((dlog - key) / 92)\n",
"mask_len = mask.bit_length()\n",
@@ -1254,7 +593,7 @@
"$$ d = (k r^{-1})\\pmod{n+92}\\: r = k + t (n + 92) $$\n",
"\n",
"However, the dlog is computed $\\mod n$ so we really get: $ d = k + t 92$. We extract the $t$ out of this.\n",
- "Note that $t$ will have roughly the same size as the mask $r$, since at the left side we have $(k r^{-1})_{\\mod (n+92)}$\n",
+ "Note that $t$ will have roughly the same size as the mask $r$, since at the left side we have $(k r^{-1}) {\\mod (n+92)}$\n",
"of size $n$ and $r$ of size of the mask and on the right size we have $t n$ that dominates.\n",
"Thus at this point we have recovered the mask size.\n",
"However, $t$ is always smaller than $r$, sometimes also in bitsize.\n",
@@ -1270,7 +609,7 @@
},
{
"cell_type": "code",
- "execution_count": 13,
+ "execution_count": 80,
"id": "b5f398fc-90d7-455e-97bd-62b682d55961",
"metadata": {},
"outputs": [],
@@ -1282,9 +621,17 @@
" value *= prime**power\n",
" yield value\n",
"\n",
- "def pari_factor(number):\n",
+ "def pari_factor(number, flag=1+8, duration=5*60):\n",
+ " # Use the 1 + 8 option to factorint to skip some costly factorization methods, we don't need the huge factors.\n",
+ " # This means that some factors may remain, which in turn means that sometimes we may not find the true mask.\n",
" pari = cypari2.Pari(256_000_000, 2_000_000_000)\n",
- " factors = pari.factor(number)\n",
+ " with warnings.catch_warnings(category=RuntimeWarning):\n",
+ " warnings.simplefilter(\"ignore\")\n",
+ " try:\n",
+ " alarm(duration)\n",
+ " factors = pari.factorint(number, flag)\n",
+ " except AlarmInterrupt:\n",
+ " return None\n",
" primes = list(map(int, factors[0]))\n",
" powers = list(map(int, factors[1]))\n",
" return primes, powers\n",
@@ -1300,19 +647,19 @@
},
{
"cell_type": "code",
- "execution_count": 17,
+ "execution_count": 81,
"id": "5f03e586-33df-4525-a722-f5f63d6ca28d",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "f6984b3117d940a98a6a79a427492f2d",
+ "model_id": "c3b98a7bfa2e4e568f83ee3d035266bb",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
- "Collecting scalarmults: 0%| | 0/100 [00:00<?, ?it/s]"
+ "Collecting scalarmults: 0%| | 0/1000 [00:00<?, ?it/s]"
]
},
"metadata": {},
@@ -1321,12 +668,12 @@
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "d646ad0b77344351a0cf9acbbbaac484",
+ "model_id": "3768e6da82324ae9891666bcf6d952b7",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
- "Computing dlogs: 0%| | 0/100 [00:00<?, ?it/s]"
+ "Computing dlogs: 0%| | 0/1000 [00:00<?, ?it/s]"
]
},
"metadata": {},
@@ -1336,21 +683,22 @@
"name": "stdout",
"output_type": "stream",
"text": [
- "32\n"
+ "32 True\n"
]
}
],
"source": [
"key = 0x20959f2b437de1e522baf6d814911938157390d3ea5118660b852ab0d5387006 # any key works\n",
"msplit = MultiplicativeSplitting(mult, rand_bits=32) # change the mask size here to your liking\n",
- "tries = 100\n",
- "num_workers = 20\n",
+ "tries = 1000\n",
+ "num_workers = 30\n",
"\n",
"blens = [None for _ in range(tries)]\n",
+ "dlogs = [None for _ in range(tries)]\n",
"ts = [None for _ in range(tries)]\n",
"\n",
- "results = []\n",
- "rs = []\n",
+ "results = [None for _ in range(tries)]\n",
+ "rs = [None for _ in range(tries)]\n",
"\n",
"with TaskExecutor(max_workers=num_workers) as pool:\n",
" for i in trange(tries, desc=\"Collecting scalarmults\"):\n",
@@ -1360,8 +708,11 @@
" \n",
" affine_res = res.to_affine()\n",
" affine_gen = params92pn.generator.to_affine()\n",
- " results.append(affine_res)\n",
- " ctx.actions[0].walk(lambda action: rs.append(int(action.result)) if isinstance(action, RandomModAction) else None)\n",
+ " results[i] = affine_res\n",
+ " \n",
+ " rval = []\n",
+ " ctx.actions[0].walk(lambda action: rval.append(int(action.result)) if isinstance(action, RandomModAction) else None)\n",
+ " rs[i] = rval[0]\n",
" \n",
" pool.submit_task(i,\n",
" pari_dlog,\n",
@@ -1373,29 +724,33 @@
" \n",
" for i, future in tqdm(pool.as_completed(), desc=\"Computing dlogs\", total=len(pool.tasks)):\n",
" dlog = future.result()\n",
- " t = int((dlog - key) / 92)\n",
+ " val = dlog - key\n",
+ " if val % 92 != 0:\n",
+ " print(f\"Bad val! {i}\")\n",
+ " t = val // 92\n",
" ts[i] = t\n",
+ " dlogs[i] = dlog\n",
" blens[i] = t.bit_length()\n",
"\n",
"mask_len = max(blens)\n",
- "print(mask_len)"
+ "print(mask_len, mask_len == msplit.rand_bits)"
]
},
{
"cell_type": "code",
- "execution_count": 20,
+ "execution_count": 85,
"id": "5fbf8a38-983d-49a6-9cac-5350f960dc3e",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "4a1915bb130e4c68bd8c450c37f9fd25",
+ "model_id": "8237fd8893084365a474553995944794",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
- "Factoring: 0%| | 0/100 [00:00<?, ?it/s]"
+ "Factoring: 0%| | 0/1000 [00:00<?, ?it/s]"
]
},
"metadata": {},
@@ -1410,550 +765,190 @@
" fulls.append(full)\n",
" pool.submit_task(t,\n",
" pari_factor,\n",
- " full)\n",
+ " full, flag=0)\n",
" facts = [None for _ in ts]\n",
" for t, future in tqdm(pool.as_completed(), desc=\"Factoring\", total=len(ts)):\n",
" result = future.result()\n",
+ " if result is None:\n",
+ " print(\"Timed out.\")\n",
" facts[ts.index(t)] = result"
]
},
{
"cell_type": "code",
- "execution_count": 38,
+ "execution_count": 86,
"id": "0973fe4b-cdf5-4e91-850b-25375eeabb7e",
- "metadata": {
- "scrolled": true
- },
+ "metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
- "Only one candidate, we got the mask: 2921741201 True\n",
- "Only one candidate, we got the mask: 2072087159 True\n",
- "Several candidates for r\n",
- "true r = 4039527236\n",
- "t = 713461330\n",
- "full = k + t (n + 92) = 54853006610429443711102562796765991385990914712382307462633349524199986834658739412728\n",
- "-----\n",
- "candidate = 3539175297\n",
- "candidate^-1 = 26490707025138842871232299283028891918970647143044648555061130998090929713163\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 54853006610429443711102562796765991385990914712382307462633349524199986834658739412728\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 1010980488\n",
- "candidate^-1 = 65382395850142385046254203937937214383274413673251102786718616383197090673492\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 54853006610429443711102562796765991385990914712382307462633349524199986834658739412728\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 1131335308\n",
- "candidate^-1 = 68241665580096390720464305945366132997268084763730630597092100846220368619186\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 54853006610429443711102562796765991385990914712382307462633349524199986834658739412728\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 1468796812\n",
- "candidate^-1 = 42974788306596910581678149765329273626138664755529162589164596291869762059227\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 54853006610429443711102562796765991385990914712382307462633349524199986834658739412728\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 2262670616\n",
- "candidate^-1 = 34120832790048195360232152972683066498634042381865315298546050423110184309593\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 54853006610429443711102562796765991385990914712382307462633349524199986834658739412728\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 2937593624\n",
- "candidate^-1 = 59928865533177637950767892719235074044242216512664024713011202452441507430870\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 54853006610429443711102562796765991385990914712382307462633349524199986834658739412728\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 1123577112\n",
- "candidate^-1 = 28797267645146503647782014101216400393084893568537834892905377895952751088363\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 54853006610429443711102562796765991385990914712382307462633349524199986834658739412728\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 2019763618\n",
- "candidate^-1 = 14492196383530008016252425678693741785643004999654181923797869651794644589503\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 54853006610429443711102562796765991385990914712382307462633349524199986834658739412728\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 3394005924\n",
- "candidate^-1 = 22747221860032130240154768648455377665756028254576876865697366948740122873062\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 54853006610429443711102562796765991385990914712382307462633349524199986834658739412728\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 1101597609\n",
- "candidate^-1 = 57299717742129214108904199687105698168184886340705550118886128389159682745636\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 54853006610429443711102562796765991385990914712382307462633349524199986834658739412728\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 1179725099\n",
- "candidate^-1 = 2589178315658163293839262175945801294566173159335058828325584381259536336976\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 54853006610429443711102562796765991385990914712382307462633349524199986834658739412728\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 3634715564\n",
- "candidate^-1 = 63500943916056123744437126756972853187061581127739385731937263938095743759671\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 54853006610429443711102562796765991385990914712382307462633349524199986834658739412728\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 1804895148\n",
- "candidate^-1 = 32692374163422277729585303046592231763960313081236584094052860741701608831649\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 54853006610429443711102562796765991385990914712382307462633349524199986834658739412728\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 4044771768\n",
- "candidate^-1 = 52010472181905874507274875250078108352478979351338650049500167853209533299960\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 54853006610429443711102562796765991385990914712382307462633349524199986834658739412728\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 2726036673\n",
- "candidate^-1 = 33412630048235921446011078560536554607851595990453256418011146175452156477886\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 54853006610429443711102562796765991385990914712382307462633349524199986834658739412728\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 4039527236\n",
- "candidate^-1 = 45687569571644186668055030675917308123994386634726534380327839132403948696008\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 54853006610429443711102562796765991385990914712382307462633349524199986834658739412728\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 734398406\n",
- "candidate^-1 = 9066633853435455843498663857517672789931561241259438341471383970726271315941\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 54853006610429443711102562796765991385990914712382307462633349524199986834658739412728\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 1203263432\n",
- "candidate^-1 = 10597089865254233934449136733317910414767585486955432722650386806045786846217\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 54853006610429443711102562796765991385990914712382307462633349524199986834658739412728\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 1009881809\n",
- "candidate^-1 = 28984392767060016032504851357387483571286009999308363847595739303589289179006\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 54853006610429443711102562796765991385990914712382307462633349524199986834658739412728\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 1697002962\n",
- "candidate^-1 = 45494443720064260480309537296910755331512056509153753731394733897480245746124\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 54853006610429443711102562796765991385990914712382307462633349524199986834658739412728\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 2203195218\n",
- "candidate^-1 = 28649858871064607054452099843552849084092443170352775059443064194579841372818\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 54853006610429443711102562796765991385990914712382307462633349524199986834658739412728\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 1817357782\n",
- "candidate^-1 = 50118945072353882169016617840804831911777393985679884627016719263178234716829\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 54853006610429443711102562796765991385990914712382307462633349524199986834658739412728\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 2359450198\n",
- "candidate^-1 = 1294589157829081646919631087972900647283086579667529414162792190629768168488\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 54853006610429443711102562796765991385990914712382307462633349524199986834658739412728\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 902447574\n",
- "candidate^-1 = 65384748326844555459170606093184463527920626162473168188105721483403217663298\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 54853006610429443711102562796765991385990914712382307462633349524199986834658739412728\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 3609790296\n",
- "candidate^-1 = 54787658461590321524721469359866553113153040675517735465455334677357430817081\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 54853006610429443711102562796765991385990914712382307462633349524199986834658739412728\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 2022385884\n",
- "candidate^-1 = 27138001604053383694692114827015342242612190432878413262142527093405813797407\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 54853006610429443711102562796765991385990914712382307462633349524199986834658739412728\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 1348257256\n",
- "candidate^-1 = 2265531026200892882109354403952576132745401514418176474784886333602094294854\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 54853006610429443711102562796765991385990914712382307462633349524199986834658739412728\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 848501481\n",
- "candidate^-1 = 14105944680370155640761438920680636200678344748508620625931659181947238689735\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 54853006610429443711102562796765991385990914712382307462633349524199986834658739412728\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 3959673578\n",
- "candidate^-1 = 8514341200062059445867282316798770218884343036808910622475199011346783490837\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 54853006610429443711102562796765991385990914712382307462633349524199986834658739412728\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 908678891\n",
- "candidate^-1 = 23354947384949399018175600008468789361209019701560882417175629913343216631145\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 54853006610429443711102562796765991385990914712382307462633349524199986834658739412728\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 1011192942\n",
- "candidate^-1 = 54276003208106767389384229654030684485224380865756826524285054186811627594814\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 54853006610429443711102562796765991385990914712382307462633349524199986834658739412728\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 3029645427\n",
- "candidate^-1 = 9661464255686672010834950452462494523762003333102787949198579767863096393002\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 54853006610429443711102562796765991385990914712382307462633349524199986834658739412728\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 1979836789\n",
- "candidate^-1 = 17028682400124118891734564633597540437768686073617821244950398022693566981674\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 54853006610429443711102562796765991385990914712382307462633349524199986834658739412728\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 1258968696\n",
- "candidate^-1 = 11695781644483879685362356889647048665988891413217912935596458034008096001175\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 54853006610429443711102562796765991385990914712382307462633349524199986834658739412728\n",
- "above == full? True\n",
- "-----\n",
- "---------------------\n",
- "Several candidates for r\n",
- "true r = 2546266567\n",
- "t = 1548864186\n",
- "full = k + t (n + 92) = 119081236569616103969202985151515360402172033984486476071765168905412656991728103589856\n",
- "-----\n",
- "candidate = 3968039777\n",
- "candidate^-1 = 47199999723628001336554368590553381329909688423987679279501585692741942222130\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 119081236569616103969202985151515360402172033984486476071765168905412656991728103589856\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 2546266567\n",
- "candidate^-1 = 53261354779930768597409107118256662925077636528602413316194826191853234093722\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 119081236569616103969202985151515360402172033984486476071765168905412656991728103589856\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 2441870632\n",
- "candidate^-1 = 57479263860955910841936440041364026045516801621530257119975624597452342910333\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 119081236569616103969202985151515360402172033984486476071765168905412656991728103589856\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 2857178584\n",
- "candidate^-1 = 75748083438556289408418666080557136798495350712469032724680328085740307176009\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 119081236569616103969202985151515360402172033984486476071765168905412656991728103589856\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 1757828696\n",
- "candidate^-1 = 17227168816999813895475622948114925759056198231882304548407742991291781760271\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 119081236569616103969202985151515360402172033984486476071765168905412656991728103589856\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 3736310456\n",
- "candidate^-1 = 48879952893042060686454552217703589967985177807205861867478155758152793393123\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 119081236569616103969202985151515360402172033984486476071765168905412656991728103589856\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 3133866544\n",
- "candidate^-1 = 33664482913723953820412695074440929318832358645764599964801070204254096100835\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 119081236569616103969202985151515360402172033984486476071765168905412656991728103589856\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 3515657392\n",
- "candidate^-1 = 47055055788379089607666629310627900110700983250840595692632775802152517281392\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 119081236569616103969202985151515360402172033984486476071765168905412656991728103589856\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 3329733203\n",
- "candidate^-1 = 63341901525758342256800386523708293549278712718872106311460104915244606307703\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 119081236569616103969202985151515360402172033984486476071765168905412656991728103589856\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 1566933272\n",
- "candidate^-1 = 67328965827447907640825390148881858637664717291529199929602140408508192201670\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 119081236569616103969202985151515360402172033984486476071765168905412656991728103589856\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 1868155228\n",
- "candidate^-1 = 20876963026325756053051468762266305473624587344612836898098502903292333983733\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 119081236569616103969202985151515360402172033984486476071765168905412656991728103589856\n",
- "above == full? True\n",
- "-----\n",
- "---------------------\n",
- "Several candidates for r\n",
- "true r = 586356740\n",
- "t = 404263194\n",
- "full = k + t (n + 92) = 31080944018917461343795538061263727736823600975872546557801979004011543724824943696960\n",
- "-----\n",
- "candidate = 938170784\n",
- "candidate^-1 = 52975562029403857607630522378170505964905977660731390116544502276802695405629\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 31080944018917461343795538061263727736823600975872546557801979004011543724824943696960\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 1876341568\n",
- "candidate^-1 = 64929252394581111463744079025655690213625872965265138476701155444907974104071\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 31080944018917461343795538061263727736823600975872546557801979004011543724824943696960\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 437122240\n",
- "candidate^-1 = 34960422445902541801696735185321223222583924317096364308996315884209127750875\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 31080944018917461343795538061263727736823600975872546557801979004011543724824943696960\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 1222440419\n",
- "candidate^-1 = 68600022163021642948955277628963692751947775934147947283493669830758786832741\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 31080944018917461343795538061263727736823600975872546557801979004011543724824943696960\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 586356740\n",
- "candidate^-1 = 23254545039239479916322727266560109973972949641331114716984956752473710406996\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 31080944018917461343795538061263727736823600975872546557801979004011543724824943696960\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 2444880838\n",
- "candidate^-1 = 72741482461390004134406456651052283607146772101973417060175739221886019817627\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 31080944018917461343795538061263727736823600975872546557801979004011543724824943696960\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 1172713480\n",
- "candidate^-1 = 11627272519619739958161363633280054986986474820665557358492478376236855203498\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 31080944018917461343795538061263727736823600975872546557801979004011543724824943696960\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 469085392\n",
- "candidate^-1 = 29068181299049349895403409083200137467466187051663893396231195940592138008745\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 31080944018917461343795538061263727736823600975872546557801979004011543724824943696960\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 2345426960\n",
- "candidate^-1 = 5813636259809869979080681816640027493493237410332778679246239188118427601749\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 31080944018917461343795538061263727736823600975872546557801979004011543724824943696960\n",
- "above == full? True\n",
- "-----\n",
- "---------------------\n",
- "Several candidates for r\n",
- "true r = 4099981182\n",
- "t = 2642778076\n",
- "full = k + t (n + 92) = 203184555558590712836289545636923662903278351877540745889142089702149488986478501195426\n",
- "-----\n",
- "candidate = 3228686923\n",
- "candidate^-1 = 67416396472256627079998760927485239166988608007947808690086396876984288458738\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 203184555558590712836289545636923662903278351877540745889142089702149488986478501195426\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 3923474478\n",
- "candidate^-1 = 53037483928698273854873915437268008099102139343418152750051187589693742832853\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 203184555558590712836289545636923662903278351877540745889142089702149488986478501195426\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 2767445934\n",
- "candidate^-1 = 27397167377793821380093463966638862719922863829406518913862257281139501333519\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 203184555558590712836289545636923662903278351877540745889142089702149488986478501195426\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 3082729947\n",
- "candidate^-1 = 67502252272888712178930437829250192126129995527986739863701511477792036332722\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 203184555558590712836289545636923662903278351877540745889142089702149488986478501195426\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 4099981182\n",
- "candidate^-1 = 53728758251263460792603093081868749337569947904541549081333778030796416192083\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 203184555558590712836289545636923662903278351877540745889142089702149488986478501195426\n",
- "above == full? True\n",
- "-----\n",
- "---------------------\n",
- "Only one candidate, we got the mask: 4240436952 True\n",
- "Several candidates for r\n",
- "true r = 1054759622\n",
- "t = 694271292\n",
- "full = k + t (n + 92) = 53377620017317855809796612613608262425705269850145672571876348376319535218874908447234\n",
- "-----\n",
- "candidate = 2082978083\n",
- "candidate^-1 = 70926800923833726814245799453581520027922406161928168992184434104522114548589\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 53377620017317855809796612613608262425705269850145672571876348376319535218874908447234\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 1465316453\n",
- "candidate^-1 = 60239579291535863658082545576886406273278056948782152971212929977157790371263\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 53377620017317855809796612613608262425705269850145672571876348376319535218874908447234\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 4165956166\n",
- "candidate^-1 = 73904871841796046067051717563361197245134087215863527914521121358767683675551\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 53377620017317855809796612613608262425705269850145672571876348376319535218874908447234\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 1054759622\n",
- "candidate^-1 = 32916166462770436865868266168928274812999826737500918380668592970627433533542\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 53377620017317855809796612613608262425705269850145672571876348376319535218874908447234\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 1150690474\n",
- "candidate^-1 = 71499038532384546579941614468655340824282611408865892492623092957903951282093\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 53377620017317855809796612613608262425705269850145672571876348376319535218874908447234\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 2930632906\n",
- "candidate^-1 = 68561261025647114488970090625013640367811912609290519904035369295085521586888\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 53377620017317855809796612613608262425705269850145672571876348376319535218874908447234\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 891931754\n",
- "candidate^-1 = 71506829279038074109757883564477355140976176319499648868114881886397351037606\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 53377620017317855809796612613608262425705269850145672571876348376319535218874908447234\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 1582042478\n",
- "candidate^-1 = 3588093433295855163732315625904528984462656656446659629430225432413461610135\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 53377620017317855809796612613608262425705269850145672571876348376319535218874908447234\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 2863810801\n",
- "candidate^-1 = 68817051866482904589958336845935410415616665963668120410224486154991202020843\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 53377620017317855809796612613608262425705269850145672571876348376319535218874908447234\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 4027416659\n",
- "candidate^-1 = 9445019186430103977146513323452829598031350649704699735484053900399235680239\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 53377620017317855809796612613608262425705269850145672571876348376319535218874908447234\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 791021239\n",
- "candidate^-1 = 7176186866591710327464631251809057968925313312893319258860450864826923220270\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 53377620017317855809796612613608262425705269850145672571876348376319535218874908447234\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 1328364218\n",
- "candidate^-1 = 61241335234879901001880976060972940299803372432205022907074540241147849493070\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 53377620017317855809796612613608262425705269850145672571876348376319535218874908447234\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 2538649658\n",
- "candidate^-1 = 40460798138314952610978306328523747705796793263233053748780937033651947724626\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 53377620017317855809796612613608262425705269850145672571876348376319535218874908447234\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 1269324829\n",
- "candidate^-1 = 4038653516871539902098976983906620949247818256667220660704065454290642646739\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 53377620017317855809796612613608262425705269850145672571876348376319535218874908447234\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 2131580798\n",
- "candidate^-1 = 13269399537091224226648020073813398658821185281376945290634379651910514289428\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 53377620017317855809796612613608262425705269850145672571876348376319535218874908447234\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 1065790399\n",
- "candidate^-1 = 26538799074182448453296040147626797317642370562753890581268759303821028578856\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 53377620017317855809796612613608262425705269850145672571876348376319535218874908447234\n",
- "above == full? True\n",
- "-----\n",
- "---------------------\n",
- "Several candidates for r\n",
- "true r = 3634113672\n",
- "t = 2680190962\n",
- "full = k + t (n + 92) = 206060968331406077945547732896592415701478405398401148885296351493997971930068100577944\n",
- "-----\n",
- "candidate = 3634113672\n",
- "candidate^-1 = 37634033022565823810085029464398851788513344511265489647294862481459002347491\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 206060968331406077945547732896592415701478405398401148885296351493997971930068100577944\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 4048089192\n",
- "candidate^-1 = 71468722554076888672183327062398623529815128497721212450005095375489413086598\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 206060968331406077945547732896592415701478405398401148885296351493997971930068100577944\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 3735061274\n",
- "candidate^-1 = 44928566482470354552499773065160058438807120959047383098649899561745326911344\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 206060968331406077945547732896592415701478405398401148885296351493997971930068100577944\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 3201481092\n",
- "candidate^-1 = 1161365723043170098011311460592818537044462272356022390519677080027379528226\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 206060968331406077945547732896592415701478405398401148885296351493997971930068100577944\n",
- "above == full? True\n",
- "-----\n",
- "---------------------\n",
- "Several candidates for r\n",
- "true r = 2376091517\n",
- "t = 1953095034\n",
- "full = k + t (n + 92) = 150159693718128688257542828458944146909547607961398772887284238536472708007326310110880\n",
- "-----\n",
- "candidate = 3246914120\n",
- "candidate^-1 = 44590844092197648231531019613425704807242597656472481439265521332832917097606\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 150159693718128688257542828458944146909547607961398772887284238536472708007326310110880\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 2376091517\n",
- "candidate^-1 = 19772973002144164969938083673165593098966704920762394800382781683851452496636\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 150159693718128688257542828458944146909547607961398772887284238536472708007326310110880\n",
- "above == full? True\n",
- "-----\n",
- "candidate = 2597531296\n",
- "candidate^-1 = 17297083735367877629484956680211693777880362935691158380652997359534519970751\n",
- "(key * candidate^-1)_mod(n+92) * candidate = 150159693718128688257542828458944146909547607961398772887284238536472708007326310110880\n",
- "above == full? True\n",
- "-----\n",
- "---------------------\n",
- "Only one candidate, we got the mask: 3341139537 True\n",
- "Only one candidate, we got the mask: 3722808561 True\n",
- "Only one candidate, we got the mask: 2045751181 True\n",
- "Only one candidate, we got the mask: 2166075112 True\n",
- "Only one candidate, we got the mask: 1985265929 True\n",
- "Only one candidate, we got the mask: 4284624218 True\n",
- "Only one candidate, we got the mask: 3985300601 True\n",
- "Only one candidate, we got the mask: 3864453118 True\n",
- "Only one candidate, we got the mask: 2479654721 True\n",
- "Total recovered masks: 12 out of 100\n"
+ "Only one candidate, we got the mask: 2842006421 True \n",
+ "Only one candidate, we got the mask: 1367232818 True \n",
+ "Only one candidate, we got the mask: 2240904829 True \n",
+ "Only one candidate, we got the mask: 1039351451 True \n",
+ "Only one candidate, we got the mask: 108996955 True \n",
+ "Only one candidate, we got the mask: 2881524907 True \n",
+ "Only one candidate, we got the mask: 2189838553 True \n",
+ "Only one candidate, we got the mask: 3969096149 True \n",
+ "Only one candidate, we got the mask: 2287426132 True \n",
+ "Only one candidate, we got the mask: 4074964099 True \n",
+ "Only one candidate, we got the mask: 2669990606 True \n",
+ "Only one candidate, we got the mask: 1456246563 True \n",
+ "Only one candidate, we got the mask: 2710951939 True \n",
+ "Only one candidate, we got the mask: 2825913889 True \n",
+ "Only one candidate, we got the mask: 1638243357 True \n",
+ "Only one candidate, we got the mask: 3811276388 True \n",
+ "Only one candidate, we got the mask: 3123140239 True \n",
+ "Only one candidate, we got the mask: 3595726430 True \n",
+ "Only one candidate, we got the mask: 4044959749 True \n",
+ "Only one candidate, we got the mask: 1018157261 True \n",
+ "Only one candidate, we got the mask: 3129245929 True \n",
+ "Only one candidate, we got the mask: 2809475199 True \n",
+ "Only one candidate, we got the mask: 3952225418 True \n",
+ "Only one candidate, we got the mask: 832268494 True \n",
+ "Only one candidate, we got the mask: 1264726273 True \n",
+ "Only one candidate, we got the mask: 616082151 True \n",
+ "Only one candidate, we got the mask: 2208359603 True \n",
+ "Only one candidate, we got the mask: 4071547089 True \n",
+ "Only one candidate, we got the mask: 12516967 True \n",
+ "Only one candidate, we got the mask: 3559760625 True \n",
+ "Only one candidate, we got the mask: 2760746593 True \n",
+ "Only one candidate, we got the mask: 3819292718 True \n",
+ "Only one candidate, we got the mask: 2244540383 True \n",
+ "Only one candidate, we got the mask: 3057851337 True \n",
+ "Only one candidate, we got the mask: 2604694145 True \n",
+ "Only one candidate, we got the mask: 2715382871 True \n",
+ "Only one candidate, we got the mask: 4149507669 True \n",
+ "Only one candidate, we got the mask: 2502506233 True \n",
+ "Only one candidate, we got the mask: 4060064857 True \n",
+ "Only one candidate, we got the mask: 3733544567 True \n",
+ "Only one candidate, we got the mask: 4274624339 True \n",
+ "Only one candidate, we got the mask: 2590849447 True \n",
+ "Only one candidate, we got the mask: 3426697997 True \n",
+ "Only one candidate, we got the mask: 3882456323 True \n",
+ "Only one candidate, we got the mask: 3269089457 True \n",
+ "Only one candidate, we got the mask: 3761164241 True \n",
+ "Only one candidate, we got the mask: 2802249770 True \n",
+ "Only one candidate, we got the mask: 2199311258 True \n",
+ "Only one candidate, we got the mask: 4044571507 True \n",
+ "Only one candidate, we got the mask: 2531874111 True \n",
+ "Only one candidate, we got the mask: 3110772661 True \n",
+ "Only one candidate, we got the mask: 1450255847 True \n",
+ "Only one candidate, we got the mask: 3506577773 True \n",
+ "Only one candidate, we got the mask: 864589123 True \n",
+ "Only one candidate, we got the mask: 2460981459 True \n",
+ "Only one candidate, we got the mask: 1852927003 True \n",
+ "Only one candidate, we got the mask: 4049366217 True \n",
+ "Only one candidate, we got the mask: 4139493739 True \n",
+ "Only one candidate, we got the mask: 1970200502 True \n",
+ "Only one candidate, we got the mask: 2982933973 True \n",
+ "Only one candidate, we got the mask: 1185834757 True \n",
+ "Only one candidate, we got the mask: 4057506562 True \n",
+ "Only one candidate, we got the mask: 3553777159 True \n",
+ "Only one candidate, we got the mask: 3228784961 True \n",
+ "Only one candidate, we got the mask: 3361181844 True \n",
+ "Only one candidate, we got the mask: 1946286323 True \n",
+ "Only one candidate, we got the mask: 3295077587 True \n",
+ "Only one candidate, we got the mask: 5406775 True \n",
+ "Only one candidate, we got the mask: 2712315191 True \n",
+ "Only one candidate, we got the mask: 97620847 True \n",
+ "Only one candidate, we got the mask: 3352788414 True \n",
+ "Only one candidate, we got the mask: 2067199152 True \n",
+ "Only one candidate, we got the mask: 2780511079 True \n",
+ "Only one candidate, we got the mask: 2422242923 True \n",
+ "Only one candidate, we got the mask: 1410524515 True \n",
+ "Only one candidate, we got the mask: 1313538691 True \n",
+ "Only one candidate, we got the mask: 2212262809 True \n",
+ "Only one candidate, we got the mask: 1889821971 True \n",
+ "Only one candidate, we got the mask: 4205618623 True \n",
+ "Only one candidate, we got the mask: 368456507 True \n",
+ "Only one candidate, we got the mask: 3659588587 True \n",
+ "Only one candidate, we got the mask: 3907266774 True \n",
+ "Only one candidate, we got the mask: 1421268181 True \n",
+ "Only one candidate, we got the mask: 3594406679 True \n",
+ "Only one candidate, we got the mask: 2835610927 True \n",
+ "Only one candidate, we got the mask: 1750708313 True \n",
+ "Only one candidate, we got the mask: 3994812597 True \n",
+ "Only one candidate, we got the mask: 3416127039 True \n",
+ "Only one candidate, we got the mask: 2918932879 True \n",
+ "Only one candidate, we got the mask: 2903903777 True \n",
+ "Only one candidate, we got the mask: 3751353247 True \n",
+ "Only one candidate, we got the mask: 1914133021 True \n",
+ "Only one candidate, we got the mask: 1041740814 True \n",
+ "Only one candidate, we got the mask: 2717146511 True \n",
+ "Only one candidate, we got the mask: 3787563800 True \n",
+ "Only one candidate, we got the mask: 2532401805 True \n",
+ "Only one candidate, we got the mask: 1580928500 True \n",
+ "Only one candidate, we got the mask: 3553660109 True \n",
+ "Only one candidate, we got the mask: 3548089540 True \n",
+ "Only one candidate, we got the mask: 3102746041 True \n",
+ "Only one candidate, we got the mask: 4065155265 True \n",
+ "Only one candidate, we got the mask: 3111552963 True \n",
+ "Only one candidate, we got the mask: 922382643 True \n",
+ "Only one candidate, we got the mask: 1896551582 True \n",
+ "Only one candidate, we got the mask: 4036077281 True \n",
+ "Only one candidate, we got the mask: 1202517347 True \n",
+ "Only one candidate, we got the mask: 4166638824 True \n",
+ "Only one candidate, we got the mask: 4196515943 True \n",
+ "Only one candidate, we got the mask: 2409770161 True \n",
+ "Only one candidate, we got the mask: 2156195057 True \n",
+ "Only one candidate, we got the mask: 3303218539 True \n",
+ "Only one candidate, we got the mask: 4019401523 True \n",
+ "Only one candidate, we got the mask: 3383631109 True \n",
+ "Only one candidate, we got the mask: 4045144939 True \n",
+ "Total recovered masks: 114 out of 1000\n"
]
}
],
"source": [
"candidate_amounts = []\n",
- "for t, blen, r, (primes, powers), full, result in zip(ts, blens, rs, facts, fulls, results):\n",
- " #print(primes, powers)\n",
- " #print(s, blen, r, r.bit_length())\n",
+ "i = 0\n",
+ "for dlog, t, blen, r, fact, full, result in zip(dlogs, ts, blens, rs, facts, fulls, results):\n",
+ " if fact is None:\n",
+ " continue\n",
+ " \n",
+ " (primes, powers) = fact\n",
+ " complete = True\n",
+ " for prime in primes:\n",
+ " if not pari.isprime(prime):\n",
+ " complete = False\n",
+ " break\n",
+ "\n",
+ " i += 1\n",
" candidates = set()\n",
" for divisor in divisors(primes, powers):\n",
- " if blen <= divisor.bit_length() <= mask_len and divisor > t:\n",
+ " if divisor.bit_length() <= mask_len and divisor >= t:\n",
" candidates.add(divisor)\n",
- " #print(f\"Candidates: {len(candidates)}, {r in candidates}\")\n",
" candidate_amounts.append(len(candidates))\n",
" if len(candidates) == 1:\n",
" candidate = candidates.pop()\n",
- " print(\"Only one candidate, we got the mask:\", candidate, candidate == r)\n",
- " else:\n",
- " if len(candidate_amounts) > 10:\n",
- " # Do not print everything\n",
- " continue\n",
- " print(\"Several candidates for r\")\n",
- " print(f\"true r = {r}\")\n",
- " print(f\"t = {t}\")\n",
- " print(f\"full = k + t (n + 92) = {full}\")\n",
- " print(\"-----\")\n",
- " for candidate in candidates:\n",
- " print(f\"candidate = {candidate}\") \n",
- " candidate_inverse = mod(candidate, real_n + 92).inverse() \n",
- " print(f\"candidate^-1 = {candidate_inverse}\")\n",
- " multiplied = candidate * int(candidate_inverse * key)\n",
- " print(f\"(key * candidate^-1)_mod(n+92) * candidate = {multiplied}\")\n",
- " print(f\"above == full? {multiplied == full}\")\n",
- " print(\"-----\")\n",
- " print(\"---------------------\")\n",
- " #print(\"--\")\n",
- "print(f\"Total recovered masks: {len(list(filter(lambda a: a == 1, candidate_amounts)))} out of {tries}\")"
+ " print(\"Only one candidate, we got the mask:\", candidate, candidate == r, \"incomplete factoring this may not be the r\" if not complete else \"\")\n",
+ "print(f\"Total recovered masks: {len(list(filter(lambda a: a == 1, candidate_amounts)))} out of {i}\")"
]
},
{
"cell_type": "code",
- "execution_count": 36,
+ "execution_count": 89,
"id": "6274ff91-325f-4c6b-a4d7-d66b994d730f",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "aba07231a8d44a2f92c75ef741f73f50",
+ "model_id": "3a03974d3d6c4f159824b17e4bfb0467",
"version_major": 2,
"version_minor": 0
},
- "image/png": "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s7O1b98+SVLnzp118803X4+yAAAAqIBDA2BhYaHuv/9+bd26VY0bN5YknT59WrfffrtWr16tZs2aObI8AAAAKuDQTwGPHz9eZ86c0VdffaUffvhBP/zwg/bu3avi4mJNmDDBkaUBAABQCYfuAKanp2vz5s3q2LGjra1Tp05asmSJBgwY4MjSAAAAqIRDdwCtVqtcXV0va3d1dZXVanVkaQAAAFTCoQHwjjvu0MSJE3X8+HFb27FjxzR58mT179/fkaUBAABQCYcGwMWLF6u4uFihoaFq06aN2rRpo1atWqm4uFiLFi2q1lhLlixRaGioPDw8FB0drZ07d16x/9q1a9WhQwd5eHgoPDxc77///mV99u3bpyFDhsjHx0cNGzZUjx49lJeXV615AQAA1DcOvQYwKChIOTk52rx5s7755htJUseOHRUbG1utcdasWaOkpCQtW7ZM0dHRSk1NVVxcnPbv3y8/P7/L+m/btk0jRoxQSkqK7rrrLq1atUrx8fHKyclRly5dJEmHDh1Snz59NGbMGM2ZM0fe3t766quv5OHhce0LBwAAqMMshmEYtT2Jq4mOjlaPHj20ePFiSb9eWxgUFKTx48dr6tSpl/VPSEhQSUmJNmzYYGu75ZZbFBERoWXLlkmS7r//frm6uuqNN96o8byKi4vl4+OjoqIieXt7V+mY0Kkba1zPbL6bO9jhNRz987geawAAVE9NXr9vNA59C1iSMjIydNddd9neAr7rrru0efPmKh9//vx5ZWdnl9s1dHJyUmxsrLKysio8Jisr67Jdxri4OFt/q9WqjRs3ql27doqLi5Ofn5+io6OVlpZW/QUCAADUMw4NgH/5y180cOBAeXl5aeLEiZo4caK8vb115513asmSJVUa49SpUyorK5O/v3+5dn9/f+Xn51d4TH5+/hX7FxYW6uzZs5o7d64GDhyojz76SEOHDtW9996rzMzMSudSWlqq4uLicg8AAID6xqHXAD7zzDN64YUXNG7cOFvbhAkT1Lt3bz3zzDMaO3asI8tX6uItaO655x5NnjxZkhQREaFt27Zp2bJl6tevX4XHpaSkaM6cOddtngAAAI7g0B3A06dPa+DAgZe1DxgwQEVFRVUaw9fXV87OziooKCjXXlBQoICAgAqPCQgIuGJ/X19fubi4qFOnTuX6dOzY8YqfAp42bZqKiopsj6NH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nTt32nX8Tz75RHfffbcCAwNlsVhsv8PYXlJSUtSjRw95eXnJz89P8fHx2r9/v11rLF26VF27drXdzDMmJkYffPCBXWtcau7cubZb/NjLk08+KYvFUu7RoUMHu40vSceOHdNvf/tbNW3aVJ6engoPD9euXbvsNn5oaOhla7BYLBo7dqzdapSVlWnmzJlq1aqVPD091aZNGz311FN2/12bZ86c0aRJkxQSEiJPT0/16tVLX3zxRY3Hu9q5ZhiGZs2apebNm8vT01OxsbE6ePCg3cZ/5513NGDAADVt2lQWi0W5ubl2XcOFCxc0ZcoUhYeHq2HDhgoMDNSoUaN0/Phxu9WQfj1POnTooIYNG+qmm25SbGysduzYYdca/+3RRx+VxWJRamqqXWs8+OCDl50nAwcOtOsa9u3bpyFDhsjHx0cNGzZUjx49lJeXZ7caFZ3rFotFzz33nN1qnD17VuPGjVPLli3l6empTp06admyZVUevyo1CgoK9OCDDyowMFANGjTQwIEDq3XuVeV17ueff9bYsWPVtGlTNWrUSMOGDbvsl0jcqAiANbBmzRolJSVp9uzZysnJUbdu3RQXF6fCwkK71SgpKVG3bt20ZMkSu4353zIzMzV27Fht375dmzZt0oULFzRgwACVlJTYrUbLli01d+5cZWdna9euXbrjjjt0zz336KuvvrJbjf/2xRdf6KWXXlLXrl3tPnbnzp114sQJ2+Ozzz6z29g//vijevfuLVdXV33wwQf6+uuvNX/+fN100012q/HFF1+Um/+mTZskScOHD7dbjWeffVZLly7V4sWLtW/fPj377LOaN2+eFi1aZLcakvTwww9r06ZNeuONN7Rnzx4NGDBAsbGxOnbsWI3Gu9q5Nm/ePL344otatmyZduzYoYYNGyouLk4///yzXcYvKSlRnz599Oyzz9Zo/lerce7cOeXk5GjmzJnKycnRO++8o/3792vIkCF2qyFJ7dq10+LFi7Vnzx599tlnCg0N1YABA3Ty5Em71bho3bp12r59uwIDA6u1hqrWGDhwYLnz5a233rLb+IcOHVKfPn3UoUMHbd26Vf/85z81c+bMKt9+rCo1/nvuJ06c0CuvvCKLxaJhw4bZrUZSUpLS09P15ptvat++fZo0aZLGjRun9evX26WGYRiKj4/Xv/71L7377rvavXu3QkJCFBsbW+XXqaq8zk2ePFnvvfee1q5dq8zMTB0/flz33ntvlddQrxmotp49expjx461fV1WVmYEBgYaKSkpDqknyVi3bp1Dxr6osLDQkGRkZmY6tM5NN91kvPzyy3Yf98yZM0ZYWJixadMmo1+/fsbEiRPtNvbs2bONbt262W28S02ZMsXo06ePw8avyMSJE402bdoYVqvVbmMOHjzYeOihh8q13XvvvcbIkSPtVuPcuXOGs7OzsWHDhnLt3bt3N5544olrHv/Sc81qtRoBAQHGc889Z2s7ffq04e7ubrz11lvXPP5/O3z4sCHJ2L17d7XHrWqNi3bu3GlIMo4cOeKwGkVFRYYkY/PmzXat8e9//9to0aKFsXfvXiMkJMR44YUXajR+ZTUSExONe+65p8ZjXm38hIQE47e//a1dxq+sxqXuuece44477rBrjc6dOxt/+tOfyrVdy3l4aY39+/cbkoy9e/fa2srKyoxmzZoZK1asqFGNS1/nTp8+bbi6uhpr16619dm3b58hycjKyqpRjfqEHcBqOn/+vLKzsxUbG2trc3JyUmxsrLKysmpxZtemqKhIkhz2i7HLysq0evVqlZSUOORX7Y0dO1aDBw8u93Oxp4MHDyowMFCtW7fWyJEjq/V2zdWsX79eUVFRGj58uPz8/HTzzTdrxYoVdhv/UufPn9ebb76phx56SBaLxW7j9urVSxkZGTpw4IAk6csvv9Rnn32mQYMG2a3GL7/8orKysst2Szw9Pe26K3vR4cOHlZ+fX+7/Kx8fH0VHR9f7891isahx48YOGf/8+fNavny5fHx81K1bN7uNa7Va9cADDyg5OVmdO3e227iX2rp1q/z8/NS+fXv9/ve/1/fff2+Xca1WqzZu3Kh27dopLi5Ofn5+io6OtvslPv+toKBAGzdu1JgxY+w6bq9evbR+/XodO3ZMhmFoy5YtOnDggAYMGGCX8UtLSyWp3Lnu5OQkd3f3Gp/rl77OZWdn68KFC+XO7w4dOig4OLhen99VRQCsplOnTqmsrMz2G0gu8vf3V35+fi3N6tpYrVZNmjRJvXv3LvebUuxhz549atSokdzd3fXoo49q3bp16tSpk11rrF69Wjk5ObZfA2hv0dHReu2115Senq6lS5fq8OHDuvXWW3XmzBm7jP+vf/1LS5cuVVhYmD788EP9/ve/14QJE/TXv/7VLuNfKi0tTadPn9aDDz5o13GnTp2q+++/Xx06dJCrq6tuvvlmTZo0SSNHjrRbDS8vL8XExOipp57S8ePHVVZWpjfffFNZWVk6ceKE3epcdPGcvpHO959//llTpkzRiBEj5O3tbdexN2zYoEaNGsnDw0MvvPCCNm3aJF9fX7uN/+yzz8rFxUUTJkyw25iXGjhwoF5//XVlZGTo2WefVWZmpgYNGqSysrJrHruwsFBnz57V3LlzNXDgQH300UcaOnSo7r33XmVmZtph9pf761//Ki8vL7u/rblo0SJ16tRJLVu2lJubmwYOHKglS5aob9++dhn/YhCbNm2afvzxR50/f17PPvus/v3vf9foXK/odS4/P19ubm6X/UOoPp/f1VFvfhUcHGfs2LHau3evQ3ZQ2rdvr9zcXBUVFenvf/+7EhMTlZmZabcQePToUU2cOFGbNm2q1jU01fHfO1hdu3ZVdHS0QkJC9Pbbb9vlX9VWq1VRUVF65plnJEk333yz9u7dq2XLlikxMfGax7/UypUrNWjQoBpdP3Ulb7/9tv72t79p1apV6ty5s3JzczVp0iQFBgbadR1vvPGGHnroIbVo0ULOzs7q3r27RowYoezsbLvVuFFduHBB9913nwzD0NKlS+0+/u23367c3FydOnVKK1as0H333acdO3bIz8/vmsfOzs7WwoULlZOTY9ed60vdf//9tj+Hh4era9euatOmjbZu3ar+/ftf09hWq1WSdM8992jy5MmSpIiICG3btk3Lli1Tv379rmn8irzyyisaOXKk3f9+XLRokbZv367169crJCREn3zyicaOHavAwEC7vBPj6uqqd955R2PGjFGTJk3k7Oys2NhYDRo0qEYfLHPk61x9xQ5gNfn6+srZ2fmyTwkVFBQoICCglmZVc+PGjdOGDRu0ZcsWtWzZ0u7ju7m5qW3btoqMjFRKSoq6deumhQsX2m387OxsFRYWqnv37nJxcZGLi4syMzP14osvysXFxS7/ar9U48aN1a5dO3377bd2Ga958+aXBeKOHTva9W3mi44cOaLNmzfr4YcftvvYycnJtl3A8PBwPfDAA5o8ebLdd2bbtGmjzMxMnT17VkePHtXOnTt14cIFtW7d2q51JNnO6RvhfL8Y/o4cOaJNmzbZffdPkho2bKi2bdvqlltu0cqVK+Xi4qKVK1faZexPP/1UhYWFCg4O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4hoA3Hi4BhBAtXh6el7x+aysLI0cOVJ33nmnNmzYoN27d+uJJ57Q+fPny/VzdXUt97XFYpHVarX7fGsyt0udPXtWzZs3V25ubrnH/v37lZycfMVj/3udFoulwrb/XndiYqJyc3O1cOFCbdu2Tbm5uWratKltjkFBQdq/f7/+8pe/yNPTU3/4wx/Ut2/fctdY3nrrrSorK9Pbb79dbi7Ozs7atGmTPvjgA3Xq1EmLFi1S+/btdfjw4at85wDcaAiAAKolLCxMnp6etg8VXGrbtm0KCQnRE088oaioKIWFhenIkSPVqtGmTRu5urpqx44dtrYff/xRBw4cqPSYjh076ujRozpx4oStbfv27dWem5ubm8rKysq1de/eXfn5+XJxcVHbtm3LPXx9fau1tqv5/PPPNWHCBN15553q3Lmz3N3dderUqXJ9PD09dffdd+vFF1/U1q1blZWVpT179tie79mzpz744AM988wzev7558sda7FY1Lt3b82ZM0e7d++Wm5ub1q1bZ9c1AKj7eAsYQLV4eHhoypQpevzxx+Xm5qbevXvr5MmT+uqrrzRmzBiFhYUpLy9Pq1evVo8ePbRx48ZqB4xGjRppzJgxSk5OVtOmTeXn56cnnnhCTk6V/5s1NjZW7dq1U2Jiop577jkVFxfriSeeKNenKnMLDQ3V4cOHlZubq5YtW8rLy0uxsbGKiYlRfHy85s2bp3bt2un48ePauHGjhg4dqqioqGqt70rCwsL0xhtvKCoqSsXFxUpOTi636/raa6+prKxM0dHRatCggd588015enoqJCSk3Di9evXS+++/r0GDBsnFxUWTJk3Sjh07lJGRoQEDBsjPz087duzQyZMn1bFjR7vNH0D9wA4ggGqbOXOmHnvsMc2aNUsdO3ZUQkKC7Tq2IUOGaPLkyRo3bpwiIiK0bds2zZw5s9o1nnvuOd166626++67FRsbqz59+igyMrLS/k5OTlq3bp1++ukn9ezZUw8//HC5W9NUdW7Dhg3TwIEDdfvtt6tZs2Z66623ZLFY9P7776tv374aPXq02rVrp/vvv19HjhyxXddnLytXrtSPP/6o7t2764EHHtCECRPk5+dne75x48ZasWKFevfura5du2rz5s167733Lrs+UZL69OmjjRs3asaMGVq0aJG8vb31ySef6M4771S7du00Y8YMzZ8/X4MGDbLrGgDUfRbD4PP/AAAAZsIOIAAAgMkQAAEAAEyGAAgAAGAyBEAAAACTIQACAACYDAEQAADAZAiAAAAAJkMABAAAMBkCIAAAgMkQAAEAAEyGAAgAAGAyBEAAAACT+X/vy2kjNTMj9AAAAABJRU5ErkJggg==",
+ "image/png": "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rV271t6+SZMmCgwMdGhTUFCgrVu3XrRPAACAG0GlmAGUpISEBA0ePFidOnVSly5dNGPGDBUWFmrIkCGSpEGDBql+/fpKSkqSJMXHx6t79+6aNm2aevfuraVLl2r79u2aP3++JMlms2n06NGaPHmymjdvriZNmmjixIkKDg5WbGxseW0mAACAy1WaABgXF6djx45p0qRJysnJUYcOHZScnGy/iCMrK8thKjcqKkpLlizRs88+qwkTJqh58+ZasWKF2rVrZ2/z1FNPqbCwUI888ohOnjypW265RcnJyfL29i7TmLy8vJSYmFjqYWFnuRFq3AjbQI2K0z81KlaNG2EbqFFx+r+RalR0leY+gAAAAHCOSnEOIAAAAJyHAAgAAGAxBEAAAACLIQACAABYDAHwKs2ZM0eNGzeWt7e3IiIilJaW5tT+v/jiC919990KDg6WzWazP8PYWZKSktS5c2fVqFFD9erVU2xsrPbu3evUGnPnzlX79u3tN/OMjIzU559/7tQa55syZYr9Fj/O8txzz8lmszm8WrVq5bT+JenIkSP685//rDp16sjHx0ehoaHavn270/pv3LjxBdtgs9k0fPhwp9UoLi7WxIkT1aRJE/n4+Oimm27Siy++6PRnbf70008aPXq0QkJC5OPjo6ioKG3btu2q+7vcvmaM0aRJkxQUFCQfHx9FR0dr//79Tuv/ww8/VM+ePVWnTh3ZbDZlZmY6dRuKior09NNPKzQ0VNWqVVNwcLAGDRqko0ePOq2G9Nt+0qpVK1WrVk21atVSdHS0tm7d6tQavzds2DDZbDbNmDHDqTUefPDBC/aTXr16OXUbdu/erT59+sjPz0/VqlVT586dlZWV5bQape3rNptNr776qtNqnDp1SiNGjFCDBg3k4+OjNm3aaN68eWXuvyw1cnNz9eCDDyo4OFhVq1ZVr169rmjfK8v33C+//KLhw4erTp06ql69uvr373/BQyRuVATAq7Bs2TIlJCQoMTFRGRkZCgsLU0xMjPLy8pxWo7CwUGFhYZozZ47T+vy9jRs3avjw4dqyZYvWrl2roqIi9ezZU4WFhU6r0aBBA02ZMkXp6enavn27br/9dvXt21dff/2102r83rZt2/S3v/1N7du3d3rfbdu2VXZ2tv315ZdfOq3vH3/8Ud26dZOHh4c+//xzffPNN5o2bZpq1arltBrbtm1zGP/atWslSffee6/TakydOlVz587V7NmztXv3bk2dOlWvvPKKZs2a5bQakvTwww9r7dq1evfdd7Vz50717NlT0dHROnLkyFX1d7l97ZVXXtEbb7yhefPmaevWrapWrZpiYmL0yy+/OKX/wsJC3XLLLZo6depVjf9yNU6fPq2MjAxNnDhRGRkZ+vDDD7V371716dPHaTUkqUWLFpo9e7Z27typL7/8Uo0bN1bPnj117Ngxp9U456OPPtKWLVsUHBx8RdtQ1hq9evVy2F/ee+89p/V/4MAB3XLLLWrVqpU2bNigr776ShMnTizz7cfKUuP3Y8/Oztbbb78tm82m/v37O61GQkKCkpOTtXjxYu3evVujR4/WiBEjtHLlSqfUMMYoNjZW3333nT7++GPt2LFDISEhio6OLvP3VFm+58aMGaNPPvlEy5cv18aNG3X06FHdc889Zd6GSs3ginXp0sUMHz7c/nNxcbEJDg42SUlJLqknyXz00Ucu6fucvLw8I8ls3LjRpXVq1apl3nzzTaf3+9NPP5nmzZubtWvXmu7du5v4+Hin9Z2YmGjCwsKc1t/5nn76aXPLLbe4rP/SxMfHm5tuusmUlJQ4rc/evXubhx56yGHZPffcYx544AGn1Th9+rRxc3Mzq1atclh+8803m2eeeeaa+z9/XyspKTGBgYHm1VdftS87efKk8fLyMu+999419/97Bw8eNJLMjh07rrjfstY4Jy0tzUgyhw4dclmN/Px8I8msW7fOqTW+//57U79+fbNr1y4TEhJiXn/99avq/2I1Bg8ebPr27XvVfV6u/7i4OPPnP//ZKf1frMb5+vbta26//Xan1mjbtq154YUXHJZdy354fo29e/caSWbXrl32ZcXFxaZu3bpmwYIFV1Xj/O+5kydPGg8PD7N8+XJ7m927dxtJJjU19apqVCbMAF6hs2fPKj09XdHR0fZlVapUUXR0tFJTU8txZNcmPz9fklz2YOzi4mItXbpUhYWFLnnU3vDhw9W7d2+H34sz7d+/X8HBwWratKkeeOCBKzpcczkrV65Up06ddO+996pevXrq2LGjFixY4LT+z3f27FktXrxYDz30kGw2m9P6jYqKUkpKivbt2ydJ+s9//qMvv/xSd955p9Nq/PrrryouLr5gtsTHx8eps7LnHDx4UDk5OQ5/rvz8/BQREVHp93ebzaaaNWu6pP+zZ89q/vz58vPzU1hYmNP6LSkp0cCBAzV27Fi1bdvWaf2eb8OGDapXr55atmypxx57TCdOnHBKvyUlJfr000/VokULxcTEqF69eoqIiHD6KT6/l5ubq08//VRDhw51ar9RUVFauXKljhw5ImOM1q9fr3379qlnz55O6f/MmTOS5LCvV6lSRV5eXle9r5//PZeenq6ioiKH/btVq1Zq1KhRpd6/y4oAeIWOHz+u4uJi+xNIzgkICFBOTk45jeralJSUaPTo0erWrZvDk1KcYefOnapevbq8vLw0bNgwffTRR2rTpo1TayxdulQZGRn2xwA6W0REhBYtWqTk5GTNnTtXBw8e1P/7f/9PP/30k1P6/+677zR37lw1b95cq1ev1mOPPaZRo0bp73//u1P6P9+KFSt08uRJPfjgg07td9y4cbr//vvVqlUreXh4qGPHjho9erQeeOABp9WoUaOGIiMj9eKLL+ro0aMqLi7W4sWLlZqaquzsbKfVOefcPn0j7e+//PKLnn76aQ0YMEC+vr5O7XvVqlWqXr26vL299frrr2vt2rXy9/d3Wv9Tp06Vu7u7Ro0a5bQ+z9erVy+98847SklJ0dSpU7Vx40bdeeedKi4uvua+8/LydOrUKU2ZMkW9evXSmjVr1K9fP91zzz3auHGjE0Z/ob///e+qUaOG0w9rzpo1S23atFGDBg3k6empXr16ac6cOfrDH/7glP7PBbHx48frxx9/1NmzZzV16lR9//33V7Wvl/Y9l5OTI09Pzwv+IVSZ9+8rUWkeBQfXGT58uHbt2uWSGZSWLVsqMzNT+fn5+uc//6nBgwdr48aNTguBhw8fVnx8vNauXXtF59Bcid/PYLVv314REREKCQnR+++/75R/VZeUlKhTp056+eWXJUkdO3bUrl27NG/ePA0ePPia+z/fW2+9pTvvvPOqzp+6lPfff1//+Mc/tGTJErVt21aZmZkaPXq0goODnbod7777rh566CHVr19fbm5uuvnmmzVgwAClp6c7rcaNqqioSPfdd5+MMZo7d67T+7/tttuUmZmp48ePa8GCBbrvvvu0detW1atX75r7Tk9P18yZM5WRkeHUmevz3X///fb/Dw0NVfv27XXTTTdpw4YN6tGjxzX1XVJSIknq27evxowZI0nq0KGDNm/erHnz5ql79+7X1H9p3n77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CAAAYDEEQAAAAIshAAIAAFgMARBAqW699VaNHj26vIdhZ4zRI488otq1a8tmsykzM7O8h2S3aNEi1axZ0/7zc889pw4dOlxynQcffLDMTxO5EZTlMwFw/RAAAVQKycnJWrRokVatWqXs7GynPerPFZ588kmH54s6w3//+98KF3wBVF48CxjAdVNcXCybzXbBQ+TL4sCBAwoKClJUVJQLRuZc1atXV/Xq1ct7GABwUcwAAhXYrbfeqlGjRumpp55S7dq1FRgYqOeee87+fmmzQidPnpTNZrM/XH7Dhg2y2WxavXq1OnbsKB8fH91+++3Ky8vT559/rtatW8vX11f/93//p9OnTzvU//XXXzVixAj5+fnJ399fEydO1O+fHnnmzBk9+eSTql+/vqpVq6aIiAiHh9qfOzS6cuVKtWnTRl5eXsrKyip1Wzdu3KguXbrIy8tLQUFBGjdunH799VdJvx0uHTlypLKysmSz2dS4ceOLfmabNm3SrbfeqqpVq6pWrVqKiYnRjz/+KOm3WcRbbrlFNWvWVJ06dXTXXXfpwIEDF3yeH374oW677TZVrVpVYWFhSk1NdaixaNEiNWrUSFWrVlW/fv104sQJh/fPP9xZXFyshIQEe92nnnpK5z+F83Jja9KkiSSpY8eOstlsuvXWW+3vvfnmm2rdurW8vb3VqlUr/fWvf73o5yP99udq5MiRGj16tGrVqqWAgAAtWLBAhYWFGjJkiGrUqKFmzZrp888/d9iGoUOHqkmTJvLx8VHLli01c+ZMh343bNigLl26qFq1aqpZs6a6deumQ4cOlTqGAwcOqGnTphoxYoSMMTp06JDuvvtu1apVS9WqVVPbtm312WefXXI7AFyD8nwQMYBL6969u/H19TXPPfec2bdvn/n73/9ubDabWbNmjTHGmIMHDxpJZseOHfZ1fvzxRyPJrF+/3hjzvweud+3a1Xz55ZcmIyPDNGvWzHTv3t307NnTZGRkmC+++MLUqVPHTJkyxaF29erVTXx8vNmzZ49ZvHixqVq1qpk/f769zcMPP2yioqLMF198Yb799lvz6quvGi8vL7Nv3z5jjDELFy40Hh4eJioqymzatMns2bPHFBYWXrCd33//valatap5/PHHze7du81HH31k/P39TWJiojHGmJMnT5oXXnjBNGjQwGRnZ5u8vLxSP68dO3YYLy8v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ZGj9+vUXrAvAeQiAQCX39ttv69dff1V4eLhGjx6tyZMnO63vQYMG6eeff1aXLl00fPhwxcfH65FHHrG/v3DhQg0aNEhPPPGEWrZsqdjYWG3btk2NGjW6ojr169fXZ599prS0NIWFhWnYsGEaOnToFYfZFi1aaM2aNfrPf/6jLl26KDIyUh9//LHc3d1VpUoVLV26VOnp6WrXrp3GjBmjV1999Yr6l347L3LBggWaOXOmwsLCtGbNmsuO84knntDAgQM1ePBgRUZGqkaNGurXr5/9/bKMzd3dXW+88Yb+9re/KTg4WH379pX026HTN998UwsXLlRoaKi6d++uRYsWOX0G8NFHH9U999yjuLg4RURE6MSJE3r88cft71etWlV79uxR//791aJFCz3yyCMaPny4Hn300Qv6ql69uj7//HMZY9S7d28VFhaquLhYw4cPV+vWrdWrVy+1aNHisrezAXD1bMacdzMqAAAA3NCYAQQAALAYAiAAAIDFEAABAAAshgAIAABgMQRAAAAAiyEAAgAAWAwBEAAAwGIIgAAAABZDAAQAALAYAiAAAIDFEAABAAAshgAIAABgMf8fc4D/5Gd+91sAAAAASUVORK5CYII=",
"text/html": [
"\n",
" <div style=\"display: inline-block;\">\n",
" <div class=\"jupyter-widgets widget-label\" style=\"text-align: center;\">\n",
" Figure\n",
" </div>\n",
- " <img src='data:image/png;base64,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s7O1b98+SVLnzp118803X4+yAAAAqIBDA2BhYaHuv/9+bd26VY0bN5YknT59WrfffrtWr16tZs2aObI8AAAAKuDQTwGPHz9eZ86c0VdffaUffvhBP/zwg/bu3avi4mJNmDDBkaUBAABQCYfuAKanp2vz5s3q2LGjra1Tp05asmSJBgwY4MjSAAAAqIRDdwCtVqtcXV0va3d1dZXVanVkaQAAAFTCoQHwjjvu0MSJE3X8+HFb27FjxzR58mT179/fkaUBAABQCYcGwMWLF6u4uFihoaFq06aN2rRpo1atWqm4uFiLFi2q1lhLlixRaGioPDw8FB0drZ07d16x/9q1a9WhQwd5eHgoPDxc77///mV99u3bpyFDhsjHx0cNGzZUjx49lJeXV615AQAA1DcOvQYwKChIOTk52rx5s7755htJUseOHRUbG1utcdasWaOkpCQtW7ZM0dHRSk1NVVxcnPbv3y8/P7/L+m/btk0jRoxQSkqK7rrrLq1atUrx8fHKyclRly5dJEmHDh1Snz59NGbMGM2ZM0fe3t766quv5OHhce0LBwAAqMMshmEYtT2Jq4mOjlaPHj20ePFiSb9eWxgUFKTx48dr6tSpl/VPSEhQSUmJNmzYYGu75ZZbFBERoWXLlkmS7r//frm6uuqNN96o8byKi4vl4+OjoqIieXt7V+mY0Kkba1zPbL6bO9jhNRz987geawAAVE9NXr9vNA59C1iSMjIydNddd9neAr7rrru0efPmKh9//vx5ZWdnl9s1dHJyUmxsrLKysio8Jisr67Jdxri4OFt/q9WqjRs3ql27doqLi5Ofn5+io6OVlpZW/QUCAADUMw4NgH/5y180cOBAeXl5aeLEiZo4caK8vb115513asmSJVUa49SpUyorK5O/v3+5dn9/f+Xn51d4TH5+/hX7FxYW6uzZs5o7d64GDhyojz76SEOHDtW9996rzMzMSudSWlqq4uLicg8AAID6xqHXAD7zzDN64YUXNG7cOFvbhAkT1Lt3bz3zzDMaO3asI8tX6uItaO655x5NnjxZkhQREaFt27Zp2bJl6tevX4XHpaSkaM6cOddtngAAAI7g0B3A06dPa+DAgZe1DxgwQEVFRVUaw9fXV87OziooKCjXXlBQoICAgAqPCQgIuGJ/X19fubi4qFOnTuX6dOzY8YqfAp42bZqKiopsj6NH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nTt32nX8Tz75RHfffbcCAwNlsVhsv8PYXlJSUtSjRw95eXnJz89P8fHx2r9/v11rLF26VF27drXdzDMmJkYffPCBXWtcau7cubZb/NjLk08+KYvFUu7RoUMHu40vSceOHdNvf/tbNW3aVJ6engoPD9euXbvsNn5oaOhla7BYLBo7dqzdapSVlWnmzJlq1aqVPD091aZNGz311FN2/12bZ86c0aRJkxQSEiJPT0/16tVLX3zxRY3Hu9q5ZhiGZs2apebNm8vT01OxsbE6ePCg3cZ/5513NGDAADVt2lQWi0W5ubl2XcOFCxc0ZcoUhYeHq2HDhgoMDNSoUaN0/Phxu9WQfj1POnTooIYNG+qmm25SbGysduzYYdca/+3RRx+VxWJRamqqXWs8+OCDl50nAwcOtOsa9u3bpyFDhsjHx0cNGzZUjx49lJeXZ7caFZ3rFotFzz33nN1qnD17VuPGjVPLli3l6empTp06admyZVUevyo1CgoK9OCDDyowMFANGjTQwIEDq3XuVeV17ueff9bYsWPVtGlTNWrUSMOGDbvsl0jcqAiANbBmzRolJSVp9uzZysnJUbdu3RQXF6fCwkK71SgpKVG3bt20ZMkSu4353zIzMzV27Fht375dmzZt0oULFzRgwACVlJTYrUbLli01d+5cZWdna9euXbrjjjt0zz336KuvvrJbjf/2xRdf6KWXXlLXrl3tPnbnzp114sQJ2+Ozzz6z29g//vijevfuLVdXV33wwQf6+uuvNX/+fN100012q/HFF1+Um/+mTZskScOHD7dbjWeffVZLly7V4sWLtW/fPj377LOaN2+eFi1aZLcakvTwww9r06ZNeuONN7Rnzx4NGDBAsbGxOnbsWI3Gu9q5Nm/ePL344otatmyZduzYoYYNGyouLk4///yzXcYvKSlRnz599Oyzz9Zo/lerce7cOeXk5GjmzJnKycnRO++8o/3792vIkCF2qyFJ7dq10+LFi7Vnzx599tlnCg0N1YABA3Ty5Em71bho3bp12r59uwIDA6u1hqrWGDhwYLnz5a233rLb+IcOHVKfPn3UoUMHbd26Vf/85z81c+bMKt9+rCo1/nvuJ06c0CuvvCKLxaJhw4bZrUZSUpLS09P15ptvat++fZo0aZLGjRun9evX26WGYRiKj4/Xv/71L7377rvavXu3QkJCFBsbW+XXqaq8zk2ePFnvvfee1q5dq8zMTB0/flz33ntvlddQrxmotp49expjx461fV1WVmYEBgYaKSkpDqknyVi3bp1Dxr6osLDQkGRkZmY6tM5NN91kvPzyy3Yf98yZM0ZYWJixadMmo1+/fsbEiRPtNvbs2bONbt262W28S02ZMsXo06ePw8avyMSJE402bdoYVqvVbmMOHjzYeOihh8q13XvvvcbIkSPtVuPcuXOGs7OzsWHDhnLt3bt3N5544olrHv/Sc81qtRoBAQHGc889Z2s7ffq04e7ubrz11lvXPP5/O3z4sCHJ2L17d7XHrWqNi3bu3GlIMo4cOeKwGkVFRYYkY/PmzXat8e9//9to0aKFsXfvXiMkJMR44YUXajR+ZTUSExONe+65p8ZjXm38hIQE47e//a1dxq+sxqXuuece44477rBrjc6dOxt/+tOfyrVdy3l4aY39+/cbkoy9e/fa2srKyoxmzZoZK1asqFGNS1/nTp8+bbi6uhpr16619dm3b58hycjKyqpRjfqEHcBqOn/+vLKzsxUbG2trc3JyUmxsrLKysmpxZtemqKhIkhz2i7HLysq0evVqlZSUOORX7Y0dO1aDBw8u93Oxp4MHDyowMFCtW7fWyJEjq/V2zdWsX79eUVFRGj58uPz8/HTzzTdrxYoVdhv/UufPn9ebb76phx56SBaLxW7j9urVSxkZGTpw4IAk6csvv9Rnn32mQYMG2a3GL7/8orKysst2Szw9Pe26K3vR4cOHlZ+fX+7/Kx8fH0VHR9f7891isahx48YOGf/8+fNavny5fHx81K1bN7uNa7Va9cADDyg5OVmdO3e227iX2rp1q/z8/NS+fXv9/ve/1/fff2+Xca1WqzZu3Kh27dopLi5Ofn5+io6OtvslPv+toKBAGzdu1JgxY+w6bq9evbR+/XodO3ZMhmFoy5YtOnDggAYMGGCX8UtLSyWp3Lnu5OQkd3f3Gp/rl77OZWdn68KFC+XO7w4dOig4OLhen99VRQCsplOnTqmsrMz2G0gu8vf3V35+fi3N6tpYrVZNmjRJvXv3LvebUuxhz549atSokdzd3fXoo49q3bp16tSpk11rrF69Wjk5ObZfA2hv0dHReu2115Senq6lS5fq8OHDuvXWW3XmzBm7jP+vf/1LS5cuVVhYmD788EP9/ve/14QJE/TXv/7VLuNfKi0tTadPn9aDDz5o13GnTp2q+++/Xx06dJCrq6tuvvlmTZo0SSNHjrRbDS8vL8XExOipp57S8ePHVVZWpjfffFNZWVk6ceKE3epcdPGcvpHO959//llTpkzRiBEj5O3tbdexN2zYoEaNGsnDw0MvvPCCNm3aJF9fX7uN/+yzz8rFxUUTJkyw25iXGjhwoF5//XVlZGTo2WefVWZmpgYNGqSysrJrHruwsFBnz57V3LlzNXDgQH300UcaOnSo7r33XmVmZtph9pf761//Ki8vL7u/rblo0SJ16tRJLVu2lJubmwYOHKglS5aob9++dhn/YhCbNm2afvzxR50/f17PPvus/v3vf9foXK/odS4/P19ubm6X/UOoPp/f1VFvfhUcHGfs2LHau3evQ3ZQ2rdvr9zcXBUVFenvf/+7EhMTlZmZabcQePToUU2cOFGbNm2q1jU01fHfO1hdu3ZVdHS0QkJC9Pbbb9vlX9VWq1VRUVF65plnJEk333yz9u7dq2XLlikxMfGax7/UypUrNWjQoBpdP3Ulb7/9tv72t79p1apV6ty5s3JzczVp0iQFBgbadR1vvPGGHnroIbVo0ULOzs7q3r27RowYoezsbLvVuFFduHBB9913nwzD0NKlS+0+/u23367c3FydOnVKK1as0H333acdO3bIz8/vmsfOzs7WwoULlZOTY9ed60vdf//9tj+Hh4era9euatOmjbZu3ar+/ftf09hWq1WSdM8992jy5MmSpIiICG3btk3Lli1Tv379rmn8irzyyisaOXKk3f9+XLRokbZv367169crJCREn3zyicaOHavAwEC7vBPj6uqqd955R2PGjFGTJk3k7Oys2NhYDRo0qEYfLHPk61x9xQ5gNfn6+srZ2fmyTwkVFBQoICCglmZVc+PGjdOGDRu0ZcsWtWzZ0u7ju7m5qW3btoqMjFRKSoq6deumhQsX2m387OxsFRYWqnv37nJxcZGLi4syMzP14osvysXFxS7/ar9U48aN1a5dO3377bd2Ga958+aXBeKOHTva9W3mi44cOaLNmzfr4YcftvvYycnJtl3A8PBwPfDAA5o8ebLdd2bbtGmjzMxMnT17VkePHtXOnTt14cIFtW7d2q51JNnO6RvhfL8Y/o4cOaJNmzbZffdPkho2bKi2bdvqlltu0cqVK+Xi4qKVK1faZexPP/1UhYWFCg4O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4hoA3Hi4BhBAtXh6el7x+aysLI0cOVJ33nmnNmzYoN27d+uJJ57Q+fPny/VzdXUt97XFYpHVarX7fGsyt0udPXtWzZs3V25ubrnH/v37lZycfMVj/3udFoulwrb/XndiYqJyc3O1cOFCbdu2Tbm5uWratKltjkFBQdq/f7/+8pe/yNPTU3/4wx/Ut2/fctdY3nrrrSorK9Pbb79dbi7Ozs7atGmTPvjgA3Xq1EmLFi1S+/btdfjw4at85wDcaAiAAKolLCxMnp6etg8VXGrbtm0KCQnRE088oaioKIWFhenIkSPVqtGmTRu5urpqx44dtrYff/xRBw4cqPSYjh076ujRozpx4oStbfv27dWem5ubm8rKysq1de/eXfn5+XJxcVHbtm3LPXx9fau1tqv5/PPPNWHCBN15553q3Lmz3N3dderUqXJ9PD09dffdd+vFF1/U1q1blZWVpT179tie79mzpz744AM988wzev7558sda7FY1Lt3b82ZM0e7d++Wm5ub1q1bZ9c1AKj7eAsYQLV4eHhoypQpevzxx+Xm5qbevXvr5MmT+uqrrzRmzBiFhYUpLy9Pq1evVo8ePbRx48ZqB4xGjRppzJgxSk5OVtOmTeXn56cnnnhCTk6V/5s1NjZW7dq1U2Jiop577jkVFxfriSeeKNenKnMLDQ3V4cOHlZubq5YtW8rLy0uxsbGKiYlRfHy85s2bp3bt2un48ePauHGjhg4dqqioqGqt70rCwsL0xhtvKCoqSsXFxUpOTi636/raa6+prKxM0dHRatCggd588015enoqJCSk3Di9evXS+++/r0GDBsnFxUWTJk3Sjh07lJGRoQEDBsjPz087duzQyZMn1bFjR7vNH0D9wA4ggGqbOXOmHnvsMc2aNUsdO3ZUQkKC7Tq2IUOGaPLkyRo3bpwiIiK0bds2zZw5s9o1nnvuOd166626++67FRsbqz59+igyMrLS/k5OTlq3bp1++ukn9ezZUw8//HC5W9NUdW7Dhg3TwIEDdfvtt6tZs2Z66623ZLFY9P7776tv374aPXq02rVrp/vvv19HjhyxXddnLytXrtSPP/6o7t2764EHHtCECRPk5+dne75x48ZasWKFevfura5du2rz5s167733Lrs+UZL69OmjjRs3asaMGVq0aJG8vb31ySef6M4771S7du00Y8YMzZ8/X4MGDbLrGgDUfRbD4PP/AAAAZsIOIAAAgMkQAAEAAEyGAAgAAGAyBEAAAACTIQACAACYDAEQAADAZAiAAAAAJkMABAAAMBkCIAAAgMkQAAEAAEyGAAgAAGAyBEAAAACT+X/vy2kjNTMj9AAAAABJRU5ErkJggg==' width=640.0/>\n",
+ " <img src='data:image/png;base64,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rV271t6+SZMmCgwMdGhTUFCgrVu3XrRPAACAG0GlmAGUpISEBA0ePFidOnVSly5dNGPGDBUWFmrIkCGSpEGDBql+/fpKSkqSJMXHx6t79+6aNm2aevfuraVLl2r79u2aP3++JMlms2n06NGaPHmymjdvriZNmmjixIkKDg5WbGxseW0mAACAy1WaABgXF6djx45p0qRJysnJUYcOHZScnGy/iCMrK8thKjcqKkpLlizRs88+qwkTJqh58+ZasWKF2rVrZ2/z1FNPqbCwUI888ohOnjypW265RcnJyfL29i7TmLy8vJSYmFjqYWFnuRFq3AjbQI2K0z81KlaNG2EbqFFx+r+RalR0leY+gAAAAHCOSnEOIAAAAJyHAAgAAGAxBEAAAACLIQACAABYDAHwKs2ZM0eNGzeWt7e3IiIilJaW5tT+v/jiC919990KDg6WzWazP8PYWZKSktS5c2fVqFFD9erVU2xsrPbu3evUGnPnzlX79u3tN/OMjIzU559/7tQa55syZYr9Fj/O8txzz8lmszm8WrVq5bT+JenIkSP685//rDp16sjHx0ehoaHavn270/pv3LjxBdtgs9k0fPhwp9UoLi7WxIkT1aRJE/n4+Oimm27Siy++6PRnbf70008aPXq0QkJC5OPjo6ioKG3btu2q+7vcvmaM0aRJkxQUFCQfHx9FR0dr//79Tuv/ww8/VM+ePVWnTh3ZbDZlZmY6dRuKior09NNPKzQ0VNWqVVNwcLAGDRqko0ePOq2G9Nt+0qpVK1WrVk21atVSdHS0tm7d6tQavzds2DDZbDbNmDHDqTUefPDBC/aTXr16OXUbdu/erT59+sjPz0/VqlVT586dlZWV5bQape3rNptNr776qtNqnDp1SiNGjFCDBg3k4+OjNm3aaN68eWXuvyw1cnNz9eCDDyo4OFhVq1ZVr169rmjfK8v33C+//KLhw4erTp06ql69uvr373/BQyRuVATAq7Bs2TIlJCQoMTFRGRkZCgsLU0xMjPLy8pxWo7CwUGFhYZozZ47T+vy9jRs3avjw4dqyZYvWrl2roqIi9ezZU4WFhU6r0aBBA02ZMkXp6enavn27br/9dvXt21dff/2102r83rZt2/S3v/1N7du3d3rfbdu2VXZ2tv315ZdfOq3vH3/8Ud26dZOHh4c+//xzffPNN5o2bZpq1arltBrbtm1zGP/atWslSffee6/TakydOlVz587V7NmztXv3bk2dOlWvvPKKZs2a5bQakvTwww9r7dq1evfdd7Vz50717NlT0dHROnLkyFX1d7l97ZVXXtEbb7yhefPmaevWrapWrZpiYmL0yy+/OKX/wsJC3XLLLZo6depVjf9yNU6fPq2MjAxNnDhRGRkZ+vDDD7V371716dPHaTUkqUWLFpo9e7Z27typL7/8Uo0bN1bPnj117Ngxp9U456OPPtKWLVsUHBx8RdtQ1hq9evVy2F/ee+89p/V/4MAB3XLLLWrVqpU2bNigr776ShMnTizz7cfKUuP3Y8/Oztbbb78tm82m/v37O61GQkKCkpOTtXjxYu3evVujR4/WiBEjtHLlSqfUMMYoNjZW3333nT7++GPt2LFDISEhio6OLvP3VFm+58aMGaNPPvlEy5cv18aNG3X06FHdc889Zd6GSs3ginXp0sUMHz7c/nNxcbEJDg42SUlJLqknyXz00Ucu6fucvLw8I8ls3LjRpXVq1apl3nzzTaf3+9NPP5nmzZubtWvXmu7du5v4+Hin9Z2YmGjCwsKc1t/5nn76aXPLLbe4rP/SxMfHm5tuusmUlJQ4rc/evXubhx56yGHZPffcYx544AGn1Th9+rRxc3Mzq1atclh+8803m2eeeeaa+z9/XyspKTGBgYHm1VdftS87efKk8fLyMu+999419/97Bw8eNJLMjh07rrjfstY4Jy0tzUgyhw4dclmN/Px8I8msW7fOqTW+//57U79+fbNr1y4TEhJiXn/99avq/2I1Bg8ebPr27XvVfV6u/7i4OPPnP//ZKf1frMb5+vbta26//Xan1mjbtq154YUXHJZdy354fo29e/caSWbXrl32ZcXFxaZu3bpmwYIFV1Xj/O+5kydPGg8PD7N8+XJ7m927dxtJJjU19apqVCbMAF6hs2fPKj09XdHR0fZlVapUUXR0tFJTU8txZNcmPz9fklz2YOzi4mItXbpUhYWFLnnU3vDhw9W7d2+H34sz7d+/X8HBwWratKkeeOCBKzpcczkrV65Up06ddO+996pevXrq2LGjFixY4LT+z3f27FktXrxYDz30kGw2m9P6jYqKUkpKivbt2ydJ+s9//qMvv/xSd955p9Nq/PrrryouLr5gtsTHx8eps7LnHDx4UDk5OQ5/rvz8/BQREVHp93ebzaaaNWu6pP+zZ89q/vz58vPzU1hYmNP6LSkp0cCBAzV27Fi1bdvWaf2eb8OGDapXr55atmypxx57TCdOnHBKvyUlJfr000/VokULxcTEqF69eoqIiHD6KT6/l5ubq08//VRDhw51ar9RUVFauXKljhw5ImOM1q9fr3379qlnz55O6f/MmTOS5LCvV6lSRV5eXle9r5//PZeenq6ioiKH/btVq1Zq1KhRpd6/y4oAeIWOHz+u4uJi+xNIzgkICFBOTk45jeralJSUaPTo0erWrZvDk1KcYefOnapevbq8vLw0bNgwffTRR2rTpo1TayxdulQZGRn2xwA6W0REhBYtWqTk5GTNnTtXBw8e1P/7f/9PP/30k1P6/+677zR37lw1b95cq1ev1mOPPaZRo0bp73//u1P6P9+KFSt08uRJPfjgg07td9y4cbr//vvVqlUreXh4qGPHjho9erQeeOABp9WoUaOGIiMj9eKLL+ro0aMqLi7W4sWLlZqaquzsbKfVOefcPn0j7e+//PKLnn76aQ0YMEC+vr5O7XvVqlWqXr26vL299frrr2vt2rXy9/d3Wv9Tp06Vu7u7Ro0a5bQ+z9erVy+98847SklJ0dSpU7Vx40bdeeedKi4uvua+8/LydOrUKU2ZMkW9evXSmjVr1K9fP91zzz3auHGjE0Z/ob///e+qUaOG0w9rzpo1S23atFGDBg3k6empXr16ac6cOfrDH/7glP7PBbHx48frxx9/1NmzZzV16lR9//33V7Wvl/Y9l5OTI09Pzwv+IVSZ9+8rUWkeBQfXGT58uHbt2uWSGZSWLVsqMzNT+fn5+uc//6nBgwdr48aNTguBhw8fVnx8vNauXXtF59Bcid/PYLVv314REREKCQnR+++/75R/VZeUlKhTp056+eWXJUkdO3bUrl27NG/ePA0ePPia+z/fW2+9pTvvvPOqzp+6lPfff1//+Mc/tGTJErVt21aZmZkaPXq0goODnbod7777rh566CHVr19fbm5uuvnmmzVgwAClp6c7rcaNqqioSPfdd5+MMZo7d67T+7/tttuUmZmp48ePa8GCBbrvvvu0detW1atX75r7Tk9P18yZM5WRkeHUmevz3X///fb/Dw0NVfv27XXTTTdpw4YN6tGjxzX1XVJSIknq27evxowZI0nq0KGDNm/erHnz5ql79+7X1H9p3n77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CAAAYDEEQAAAAIshAAIAAFgMARBAqW699VaNHj26vIdhZ4zRI488otq1a8tmsykzM7O8h2S3aNEi1axZ0/7zc889pw4dOlxynQcffLDMTxO5EZTlMwFw/RAAAVQKycnJWrRokVatWqXs7GynPerPFZ588kmH54s6w3//+98KF3wBVF48CxjAdVNcXCybzXbBQ+TL4sCBAwoKClJUVJQLRuZc1atXV/Xq1ct7GABwUcwAAhXYrbfeqlGjRumpp55S7dq1FRgYqOeee87+fmmzQidPnpTNZrM/XH7Dhg2y2WxavXq1OnbsKB8fH91+++3Ky8vT559/rtatW8vX11f/93//p9OnTzvU//XXXzVixAj5+fnJ399fEydO1O+fHnnmzBk9+eSTql+/vqpVq6aIiAiHh9qfOzS6cuVKtWnTRl5eXsrKyip1Wzdu3KguXbrIy8tLQUFBGjdunH799VdJvx0uHTlypLKysmSz2dS4ceOLfmabNm3SrbfeqqpVq6pWrVqKiYnRjz/+KOm3WcRbbrlFNWvWVJ06dXTXXXfpwIEDF3yeH374oW677TZVrVpVYWFhSk1NdaixaNEiNWrUSFWrVlW/fv104sQJh/fPP9xZXFyshIQEe92nnnpK5z+F83Jja9KkiSSpY8eOstlsuvXWW+3vvfnmm2rdurW8vb3VqlUr/fWvf73o5yP99udq5MiRGj16tGrVqqWAgAAtWLBAhYWFGjJkiGrUqKFmzZrp888/d9iGoUOHqkmTJvLx8VHLli01c+ZMh343bNigLl26qFq1aqpZs6a6deumQ4cOlTqGAwcOqGnTphoxYoSMMTp06JDuvvtu1apVS9WqVVPbtm312WefXXI7AFyD8nwQMYBL6969u/H19TXPPfec2bdvn/n73/9ubDabWbNmjTHGmIMHDxpJZseOHfZ1fvzxRyPJrF+/3hjzvweud+3a1Xz55ZcmIyPDNGvWzHTv3t307NnTZGRkmC+++MLUqVPHTJkyxaF29erVTXx8vNmzZ49ZvHixqVq1qpk/f769zcMPP2yioqLMF198Yb799lvz6quvGi8vL7Nv3z5jjDELFy40Hh4eJioqymzatMns2bPHFBYWXrCd33//valatap5/PHHze7du81HH31k/P39TWJiojHGmJMnT5oXXnjBNGjQwGRnZ5u8vLxSP68dO3YYLy8v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ZGj9+vUXrAvAeQiAQCX39ttv69dff1V4eLhGjx6tyZMnO63vQYMG6eeff1aXLl00fPhwxcfH65FHHrG/v3DhQg0aNEhPPPGEWrZsqdjYWG3btk2NGjW6ojr169fXZ599prS0NIWFhWnYsGEaOnToFYfZFi1aaM2aNfrPf/6jLl26KDIyUh9//LHc3d1VpUoVLV26VOnp6WrXrp3GjBmjV1999Yr6l347L3LBggWaOXOmwsLCtGbNmsuO84knntDAgQM1ePBgRUZGqkaNGurXr5/9/bKMzd3dXW+88Yb+9re/KTg4WH379pX026HTN998UwsXLlRoaKi6d++uRYsWOX0G8NFHH9U999yjuLg4RURE6MSJE3r88cft71etWlV79uxR//791aJFCz3yyCMaPny4Hn300Qv6ql69uj7//HMZY9S7d28VFhaquLhYw4cPV+vWrdWrVy+1aNHisrezAXD1bMacdzMqAAAA3NCYAQQAALAYAiAAAIDFEAABAAAshgAIAABgMQRAAAAAiyEAAgAAWAwBEAAAwGIIgAAAABZDAAQAALAYAiAAAIDFEAABAAAshgAIAABgMf8fc4D/5Gd+91sAAAAASUVORK5CYII=' width=640.0/>\n",
" </div>\n",
" "
],
@@ -1969,7 +964,7 @@
"max_amount = max(candidate_amounts)\n",
"fig = plt.subplots()\n",
"plt.hist(candidate_amounts, range=(1, max_amount), align=\"left\", density=True, bins=range(1, max_amount))#, bins=list(range(20)) + list(range(20, 100, 5)) + list(range(100, max(candidate_amounts), 10)))\n",
- "plt.xlabel(\"candidate masks\")\n",
+ "plt.xlabel(\"number of candidate masks\")\n",
"plt.ylabel(\"proportion\")\n",
"plt.xticks(range(max_amount))\n",
"plt.xlim(0, 20);\n",
@@ -1978,25 +973,25 @@
},
{
"cell_type": "code",
- "execution_count": 37,
+ "execution_count": 90,
"id": "9f22ca9d-bdc2-4ea5-b2bc-249a256bb8ad",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "7aebc586f3684a8dbc8977aa2bcb8c38",
+ "model_id": "2710c2726d1e452d8abbcb45d8cff8e0",
"version_major": 2,
"version_minor": 0
},
- "image/png": "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krRp0yZnvY+PjwYMGKB9+/a51Ozfv1/dunVrdC6+vr4KDAx0eQEAAHgat34F3Lt3b82ePVtbt251hq8dO3bo/fff12OPPaaFCxc6ay/1t4EzMzOVnp6u+Ph4JSQkKDc3V7W1tcrIyJAkjRkzRl26dFFOTo4kadKkSRo8eLDmz5+v4cOHKy8vT7t27dLy5cudfWZlZSktLU133HGHfvSjH2njxo164403tHXrVjf8JgAAAFoPtz4GJioq6somYbPp008/vWTN4sWLNW/ePFVWVio2NlYLFy5UYmKiJOnOO+9UZGSkVq5c6axfs2aNpk+frkOHDik6Olpz587VsGHDXPp8/vnnlZOTo//7v//TzTffrFmzZunee++94vXxGBgAADwPj4HxkOcAtlYEQAAAPA8BsBmeA3iBZVkiawIAALQ8twfAF198UTExMfL395e/v7/69ev3nf76BgAAAL4bt94EsmDBAmVnZ2v8+PEaNGiQJOm9997TI488ohMnTjifwQcAAIDm49YAuGjRIi1dulRjxoxxto0YMUJ9+vTRU089RQAEAABoAW79CvjYsWMaOHDgRe0DBw7UsWPH3Dk0AAAAGuHWANi9e3e9+uqrF7WvXr1a0dHR7hwaAAAAjXDrV8CzZs1SWlqa/v73vzuvAXz//fdVUFDQYDAEAACA+7n1DOD999+v4uJihYSEKD8/X/n5+QoJCVFxcbHuu+8+dw4NAACARrjtDOD58+f13//938rOztbLL7/srmEAAABwldx2BrBt27b661//6q7uAQAAcI3c+hVwamqq8vPz3TkEAAAArpJbbwKJjo7Wb3/7W73//vuKi4vTdddd57J94sSJ7hweAAAADXBrAPzzn/+s4OBglZSUqKSkxGWbzWYjAAIAALQAtwbAgwcPOn+2LEvS18EPAAAALcet1wBKX58F7Nu3r/z8/OTn56e+ffvqT3/6k7uHBQAAQCPcegZwxowZWrBggSZMmKCkpCRJUmFhoR599FFVVFTot7/9rTuHBwAAQAPcGgCXLl2qFStWaNSoUc62ESNGqF+/fpowYQIBEAAAoAW49Svg8+fPKz4+/qL2uLg4ffXVV+4cGgAAAI1wawB86KGHtHTp0ovaly9frtGjR7tzaAAAADTCrV8BS1/fBPL222/rtttukyQVFRWpoqJCY8aMUWZmprNuwYIF7p4KAAAA5OYAWF5erltvvVWS9Mknn0iSQkJCFBISovLycmcdj4YBAABoPm4NgFu2bHFn9wAAALgGbn8OIL67yCnrW3oKAADge4QACAAAYBgCIAAAgGEIgAAAAIYhAAIAABiGAAgAAGAYAiAAAIBhCIAAAACGIQACAAAYhgAIAABgGAIgAACAYQiAAAAAhiEAAgAAGIYACAAAYBgCIAAAgGEIgAAAAIYhAAIAABiGAAgAAGAYAiAAAIBhCIAAAACGIQACAAAYhgAIAABgGAIgAACAYQiAAAAAhiEAAgAAGIYACAAAYBiPCoBLlixRZGSk/Pz8lJiYqOLi4kvWr1mzRj179pSfn59iYmK0YcOGRmsfeeQR2Ww25ebmNvGsAQAAWhePCYCrV69WZmamZs6cqdLSUvXv318pKSmqrq5usH779u0aNWqUxo4dq927dys1NVWpqakqLy+/qHbt2rXasWOHOnfu7O5lAAAAtDiPCYALFizQww8/rIyMDPXu3VvLli1Tu3bt9PzzzzdY/9xzz2no0KHKyspSr1699Lvf/U633nqrFi9e7FJ35MgRTZgwQa+88oratm3bHEsBAABoUR4RAM+dO6eSkhIlJyc727y8vJScnKzCwsIG9yksLHSpl6SUlBSXeofDoYceekhZWVnq06fPZedRV1cnu93u8nK3yCnr3T4GAAAwi0cEwBMnTqi+vl5hYWEu7WFhYaqsrGxwn8rKysvW/8///I+8vb01ceLEK5pHTk6OgoKCnK+IiIirXAkAAEDL84gA6A4lJSV67rnntHLlStlstivaZ+rUqaqpqXG+Dh8+7OZZAgAAND2PCIAhISFq06aNqqqqXNqrqqoUHh7e4D7h4eGXrH/33XdVXV2trl27ytvbW97e3vrss8/02GOPKTIyssE+fX19FRgY6PICAADwNB4RAH18fBQXF6eCggJnm8PhUEFBgZKSkhrcJykpyaVekjZt2uSsf+ihh/SPf/xDZWVlzlfnzp2VlZWlt956y32LAQAAaGHeLT2BK5WZman09HTFx8crISFBubm5qq2tVUZGhiRpzJgx6tKli3JyciRJkyZN0uDBgzV//nwNHz5ceXl52rVrl5YvXy5J6tixozp27OgyRtu2bRUeHq6bb765eRcHAADQjDwmAKalpen48eOaMWOGKisrFRsbq40bNzpv9KioqJCX179P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/vz5Vo8ePaxz5841WH/hd/L4449bnTp1ssrLy53bSkpKLEnWoUOHGh0PgBk4Awjgqnz88ceqq6vTXXfd1WjN6tWrtXDhQn3yySc6c+aMvvrqKwUGBrrUREZGKiAgwPm+U6dOqq6ulvT12cFz584pMTHRub1Dhw66+eabLzmviIgIde7c2dmWlJR0TXP7tg8++EBnzpxRx44dXdq/+OILffLJJ5fct1+/fs6fw8LCJEkxMTEubRfWLUlVVVWaPn26tm7dqurqatXX1+vs2bOqqKiQ9PWZyNzcXN14440aOnSohg0bpp/85Cfy9v73f87nz5+v2tpa7dq1SzfeeKOzvX///rrrrrsUExOjlJQUDRkyRD/72c/0gx/84JJrAPD9wzWAAK6Kv7//JbcXFhZq9OjRGjZsmNatW6fdu3frySef1Llz51zq2rZt6/LeZrPJ4XA0+XyvZW7fdubMGXXq1EllZWUur3379ikrK+uS+35znTabrcG2b647PT1dZWVleu6557R9+3aVlZWpY8eOzjlGRERo3759+sMf/iB/f3/95je/0R133OFyjeUPf/hD1dfX69VXX3WZS5s2bbRp0ya9+eab6t27txYtWqSbb75ZBw8evMxvDsD3DQEQwFWJjo6Wv7+/86aCb9u+fbu6deumJ598UvHx8YqOjtZnn312VWPcdNNNatu2rYqKipxtn3/+ufbv39/oPr169dLhw4d17NgxZ9uOHTuuem4+Pj6qr693abv11ltVWVkpb29vde/e3eUVEhJyVWu7nPfff18TJ07UsGHD1KdPH/n6+urEiRMuNf7+/vrJT36ihQsXauvWrSosLNSHH37o3J6QkKA333xTTz/9tJ555hmXfW02mwYNGqRZs2Zp9+7d8vHx0dq1a5t0DQBaP74CBnBV/Pz89MQTT+jxxx+Xj4+PBg0apOPHj2vPnj0aO3asoqOjVVFRoby8PA0YMEDr16+/6oDRvn17jR07VllZWerYsaNCQ0P15JNPysur8f/PmpycrB49eig9PV3z5s2T3W7Xk08+6VJzJXOLjIzUwYMHVVZWphtuuEEBAQFKTk5WUlKSUlNTNXfuXPXo0UNHjx7V+vXrdd999yk+Pv6q1ncp0dHReumllxQfHy+73a6srCyXs64rV65UfX29EhMT1a5dO7388svy9/dXt27dXPoZOHCgNmzYoLvvvlve3t6aPHmyioqKVFBQoCFDhig0NFRFRUU6fvy4evXq1WTzB+AZOAMI4KplZ2frscce04wZM9SrVy+lpaU5r2MbMWKEHn30UY0fP16xsbHavn27srOzr3qMefPm6Yc//KF+8pOfKDk5Wbfffrvi4uIarffy8tLatWv1xRdfKCEhQb/85S9dHk1zpXO7//77NXToUP3oRz/S9ddfr7/85S+y2WzasGGD7rjjDmVkZKhHjx4aOXKkPvvsM+d1fU3lz3/+sz7//HPdeuuteuihhzRx4kSFhoY6twcHB2vFihUaNGiQ+vXrp82bN+uNN9646PpESbr99tu1fv16TZ8+XYsWLVJgYKD+/ve/a9iwYerRo4emT5+u+fPn6+67727SNQBo/WyWxf3/AAAAJuEMIAAAgGEIgAAAAIYhAAIAABiGAAgAAGAYAiAAAIBhCIAAAACGIQACAAAYhgAIAABgGAIgAACAYQiAAAAAhiEAAgAAGIYACAAAYJj/D1eQsoxETxFtAAAAAElFTkSuQmCC",
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAOuBJREFUeJzt3XtcVXW+//H3BuTiBVBJ8IJiaamJaCgI9js0I4UNZThNQx5PmuNMmTcUs8RUbKrBmSlHU0ePNukpx9Gcihw10khtUhRFKSlvqYljXDRHUCpU+P7+8OEet4JhsoXNej0fj/UY9nd91/p+P3sZvGetvda2GWOMAAAAYBludT0BAAAA3FwEQAAAAIshAAIAAFgMARAAAMBiCIAAAAAWQwAEAACwGAIgAACAxRAAAQAALIYACAAAYDEEQAAAAIshAAIAAFgMARAAAMBiCIAAAAAWQwAEAACwGAIgAACAxRAAAQAALIYACAAAYDEEQAAAAIshAAIAAFgMARAAAMBiCIAAAAAWQwAEAACwGAIgAACAxRAAAQAALIYACAAAYDEEQAAAAIshAAIAAFgMARAAAMBiCIAAAAAWQwAEAACwGAIgAACAxRAAAQAALIYACAAAYDEEQAAAAIshAAIAAFgMARAAAMBiCIAAAAAWQwAEAACwGAIgAACAxRAAAQAALIYACAAAYDEEQAAAAIshAAIAAFgMARAAAMBiCIAAAAAWQwAEAACwGAIgAACAxRAAAQAALIYACAAAYDEEQAAAAIshAAIAAFgMARAAAMBiCIAAAAAWQwAEAACwGAIgAACAxRAAAQAALMajrifgyiorK/X111+rWbNmstlsdT0dAABQA8YYnTlzRm3atJGbmzXPhREAb8DXX3+t4ODgup4GAAD4EY4dO6Z27drV9TTqBAHwBjRr1kzSxX9Avr6+dTwbAABQE6WlpQoODrb/HbciAuANuHTZ19fXlwAIAICLsfLHt6x54RsAAMDCCIAAAAAWQwAEAACwGAIgAACAxRAAAQAALIYACAAAYDEEQAAAAIshAAIAAFgMARAAAMBiCIAAAAAWQwAEAACwGAIgAACAxRAAAQAALIYACAAAYDEEQAAAAIshAAIAAFgMARAAAMBiCIAAAAAWQwAEAACwGAIgAACAxRAAAQAALIYACAAAYDEEQAAAAIshAAIAAFgMARAAAMBiCIAAAAAWQwAEAACwGAIgAACAxRAAAQAALIYACAAAYDEEQAAAAIshAAIAAFgMARAAAMBiCIAAAAAWQwAEAACwGAIgAACAxRAAAQAALIYACAAAYDEEQAAAAIshAAIAAFgMARAAAMBiCIAAAAAWQwAEAACwGAIgAACAxRAAAQAALIYACAAAYDEEQAAAAIshAAIAAFgMARAAAMBiCIAAAAAWQwAEAACwGAIgAACAxRAAAQAALMZlAuD8+fMVEhIib29vRUZGKjs7u9q+n3/+uR5++GGFhITIZrNp9uzZN7xPAACAhsIlAuDKlSuVnJys1NRU7dq1S2FhYYqLi1NxcXGV/b/99lvdeuutmjlzpoKCgmplnwAAAA2FzRhj6noSPyQyMlJ9+vTRvHnzJEmVlZUKDg7W2LFjNXny5GtuGxISovHjx2v8+PG1ts9LSktL5efnp5KSEvn6+l5/YQAA4Kbj77cLnAE8d+6ccnJyFBsba29zc3NTbGyssrKy6s0+AQAAXIVHXU/gh5w8eVIVFRUKDAx0aA8MDNS+fftu6j7Ly8tVXl5uf11aWvqjxgcAAKhL9f4MYH2SlpYmPz8/+xIcHFzXUwIAALhu9T4ABgQEyN3dXUVFRQ7tRUVF1d7g4ax9pqSkqKSkxL4cO3bsR40PAABQl+p9APT09FR4eLgyMzPtbZWVlcrMzFRUVNRN3aeXl5d8fX0dFgAAAFdT7z8DKEnJyckaNmyYevfurYiICM2ePVtlZWUaPny4JGno0KFq27at0tLSJF28yeOLL76w/3z8+HHl5uaqadOm6tSpU432CQAA0FC5RABMTEzUiRMnNH36dBUWFqpnz57KyMiw38SRn58vN7f/nMz8+uuv1atXL/vrl19+WS+//LJiYmK0adOmGu0TAACgoXKJ5wDWVzxHCAAA18Pfbxf4DCAAAABqFwEQAADAYgiAAAAAFkMABAAAsBgCIAAAgMUQAAEAACyGAAgAAGAxBEAAAACLIQACAABYDAGwHguZvLaupwAAABogAiAAAIDFEAABAAAshgAIAABgMQRAAAAAiyEAAgAAWAwBEAAAwGIIgAAAABZDAAQAALAYAiAAAIDFEAABAAAshgAIAABgMQRAAAAAiyEAAgAAWAwBEAAAwGIIgAAAABZDAAQAALAYAiAAAIDFEAABAAAshgAIAABgMQRAAAAAiyEAAgAAWAwBEAAAwGIIgAAAABZDAAQAALAYAiAAAIDFEAABAAAshgAIAABgMQRAAAAAiyEAAgAAWAwBEAAAwGIIgAAAABZDAAQAALAYAiAAAIDFEAABAAAshgAIAABgMQRAAAAAiyEAAgAAWAwBEAAAwGIIgAAAABZDAAQAALAYAiAAAIDFuEwAnD9/vkJCQuTt7a3IyEhlZ2dfs/+qVavUpUsXeXt7KzQ0VOvWrXNYf/bsWY0ZM0bt2rWTj4+PunXrpoULFzqzBAAAgHrBJQLgypUrlZycrNTUVO3atUthYWGKi4tTcXFxlf23bt2qwYMHa8SIEdq9e7cSEhKUkJCgvLw8e5/k5GRlZGRo2bJl2rt3r8aPH68xY8Zo9erVN6ssAACAOmEzxpi6nsQPiYyMVJ8+fTRv3jxJUmVlpYKDgzV27FhNnjz5qv6JiYkqKyvTmjVr7G19+/ZVz5497Wf5unfvrsTERE2bNs3eJzw8XPfff79efPHFGs2rtLRUfn5+Kikpka+v742UWKWQyWv11cz4Wt8vAABW5uy/366g3p8BPHfunHJychQbG2tvc3NzU2xsrLKysqrcJisry6G/JMXFxTn0j46O1urVq3X8+HEZY7Rx40YdOHBA9913X7VzKS8vV2lpqcMCAADgaup9ADx58qQqKioUGBjo0B4YGKjCwsIqtyksLPzB/nPnzlW3bt3Url07eXp6asCAAZo/f77+67/+q9q5pKWlyc/Pz74EBwffQGUAAAB1o94HQGeZO3eutm3bptWrVysnJ0evvPKKRo8erQ8//LDabVJSUlRSUmJfjh07dhNnDAAAUDs86noCPyQgIEDu7u4qKipyaC8qKlJQUFCV2wQFBV2z/3fffacpU6bo3XffVXz8xc/Y9ejRQ7m5uXr55Zevunx8iZeXl7y8vG60JAAAgDpV788Aenp6Kjw8XJmZmfa2yspKZWZmKioqqsptoqKiHPpL0oYNG+z9z58/r/Pnz8vNzbF8d3d3VVZW1nIFAAAA9Uu9PwMoXXxky7Bhw9S7d29FRERo9uzZKisr0/DhwyVJQ4cOVdu2bZWWliZJSkpKUkxMjF555RXFx8drxYoV2rlzpxYtWiRJ8vX1VUxMjCZNmiQfHx916NBBmzdv1htvvKFZs2bVWZ0AAAA3g0sEwMTERJ04cULTp09XYWGhevbsqYyMDPuNHvn5+Q5n86Kjo7V8+XJNnTpVU6ZMUefOnZWenq7u3bvb+6xYsUIpKSkaMmSITp06pQ4dOuill17SyJEjb3p9AAAAN5NLPAewvuI5gAAAuB6eA+gCnwEEAABA7SIAAgAAWAwBEAAAwGIIgAAAABZDAAQAALAYAiAAAIDFEAABAAAshgAIAABgMQRAAAAAiyEAAgAAWAwBEAAAwGIIgAAAABZDAAQAALAYAiAAAIDFEAABAAAshgAIAABgMQRAAAAAiyEAAgAAWAwBEAAAwGIIgAAAABZDAAQAALAYAiAAAIDFEAABAAAsxsPZAxw8eFAbN25UcXGxKisrHdZNnz7d2cMDAADgCk4NgIsXL9ZTTz2lgIAABQUFyWaz2dfZbDYCIAAAQB1wagB88cUX9dJLL+nZZ5915jAAAAC4Dk79DOC///1vPfLII84cAgAAANfJqQHwkUce0fr16505BAAAAK6TUy8Bd+rUSdOmTdO2bdsUGhqqRo0aOawfN26cM4cHAABAFWzGGOOsnXfs2LH6gW02HT582FlD3xSlpaXy8/NTSUmJfH19a33/IZPX6quZ8bW+XwAArMzZf79dgVPPAB45csSZu7cEQiAAAKhtN+1B0MYYOfFkIwAAAGrI6QHwjTfeUGhoqHx8fOTj46MePXrozTffdPawAAAAqIZTLwHPmjVL06ZN05gxY9SvXz9J0ieffKKRI0fq5MmTmjBhgjOHBwAAQBWcGgDnzp2rBQsWaOjQofa2gQMH6s4779SMGTMIgAAAAHXAqZeACwoKFB0dfVV7dHS0CgoKnDk0AAAAquHUANipUye99dZbV7WvXLlSnTt3dubQAAAAqIZTLwE///zzSkxM1Mcff2z/DOCWLVuUmZlZZTAEAACA8zn1DODDDz+s7du3KyAgQOnp6UpPT1dAQICys7M1aNAgZw4NAACAajj1DKAkhYeHa9myZc4eBgAAADVU6wGwtLTU/rUqpaWl1+xr1a9fAQAAqEu1HgCbN2+ugoICtWrVSv7+/rLZbFf1McbIZrOpoqKitocHAADAD6j1APjRRx+pRYsWkqSNGzfW9u4BAABwg2o9AMbExNh/7tixo4KDg686C2iM0bFjx2p7aAAAANSAU+8C7tixo06cOHFV+6lTp9SxY0dnDg0AAIBqODUAXvqs35XOnj0rb29vZw4NAACAajjlMTDJycmSJJvNpmnTpqlx48b2dRUVFdq+fbt69uzpjKEBAADwA5wSAHfv3i3p4hnAPXv2yNPT077O09NTYWFhevrpp50xNAAAAH6AUwLgpbt/hw8frldffVXNmjVzxjAAAAD4EZz2GcDz58/rzTff1NGjR501BAAAAH4EpwXARo0aqX379jzsGQAAoJ5x6l3Azz33nKZMmaJTp07d8L7mz5+vkJAQeXt7KzIyUtnZ2dfsv2rVKnXp0kXe3t4KDQ3VunXrruqzd+9eDRw4UH5+fmrSpIn69Omj/Pz8G54rAABAfebUADhv3jx9/PHHatOmje644w7dddddDktNrVy5UsnJyUpNTdWuXbsUFhamuLg4FRcXV9l/69atGjx4sEaMGKHdu3crISFBCQkJysvLs/c5dOiQ7r77bnXp0kWbNm3SZ599pmnTpvF4GgAA0ODZjDHGWTt//vnnr7k+NTW1RvuJjIxUnz59NG/ePElSZWWlgoODNXbsWE2ePPmq/omJiSorK9OaNWvsbX379lXPnj21cOFCSdKjjz6qRo0a6c0336xpOVcpLS2Vn5+fSkpK5Ovr+6P3U52QyWslSV/NjK/1fQMAYFXO/vvtCpxyF/AlNQ1413Lu3Dnl5OQoJSXF3ubm5qbY2FhlZWVVuU1WVpb9WYSXxMXFKT09XdLFALl27Vo988wziouL0+7du9WxY0elpKQoISGh2rmUl5ervLzc/rq0tPTHFwYAAFBHnHoJ+JKcnBwtW7ZMy5Ytsz8jsKZOnjypiooKBQYGOrQHBgaqsLCwym0KCwuv2b+4uFhnz57VzJkzNWDAAK1fv16DBg3Sz3/+c23evLnauaSlpcnPz8++BAcHX1ctAAAA9YFTzwAWFxfr0Ucf1aZNm+Tv7y9JOn36tH7yk59oxYoVuuWWW5w5fLUqKyslSQ899JAmTJggSerZs6e2bt2qhQsXKiYmpsrtUlJSHM4slpaWEgIBAIDLceoZwLFjx+rMmTP6/PPPderUKZ06dUp5eXkqLS3VuHHjarSPgIAAubu7q6ioyKG9qKhIQUFBVW4TFBR0zf4BAQHy8PBQt27dHPp07dr1mncBe3l5ydfX12EBAABwNU4NgBkZGfrzn/+srl272tu6deum+fPn6/3336/RPjw9PRUeHq7MzEx7W2VlpTIzMxUVFVXlNlFRUQ79JWnDhg32/p6enurTp4/279/v0OfAgQPq0KFDjeYFAADgqpx6CbiyslKNGjW6qr1Ro0b2y7A1kZycrGHDhql3796KiIjQ7NmzVVZWpuHDh0uShg4dqrZt2yotLU2SlJSUpJiYGL3yyiuKj4/XihUrtHPnTi1atMi+z0mTJikxMVH/9V//pZ/85CfKyMjQP/7xD23atOnGigYAAKjnnHoG8Kc//amSkpL09ddf29uOHz+uCRMmqH///jXeT2Jiol5++WVNnz5dPXv2VG5urjIyMuw3euTn56ugoMDePzo6WsuXL9eiRYsUFhamv//970pPT1f37t3tfQYNGqSFCxfqD3/4g0JDQ/Xaa6/p7bff1t13310LlQMAANRfTn0O4LFjxzRw4EB9/vnn9psljh07pu7du2v16tVq166ds4a+KXgOIAAArofnADr5EnBwcLB27dqlDz/8UPv27ZN08UaL2NhYZw4LAACAa3BqAJQkm82me++9V/fee6+zhwIAAEANOP1B0JmZmXrggQd022236bbbbtMDDzygDz/80NnDAgAAoBpODYB//vOfNWDAADVr1kxJSUlKSkqSr6+vfvazn2n+/PnOHBoAAADVcOol4N/97nf605/+pDFjxtjbxo0bp379+ul3v/udRo8e7czhAQAAUAWnngE8ffq0BgwYcFX7fffdp5KSEmcODQAAgGo4NQAOHDhQ77777lXt7733nh544AFnDg0AAIBqOPUScLdu3fTSSy9p06ZN9q9h27Ztm7Zs2aKJEyfq1Vdftfet6XcDAwAA4MY49UHQHTt2rNkkbDYdPnzYWdNwGh4EDQCA6+FB0E4+A3jkyBFn7h4AAAA/gtOfA3iJMUZOPNkIAACAGnJ6AHzjjTcUGhoqHx8f+fj4qEePHnrzzTedPSwAAACq4dRLwLNmzdK0adM0ZswY9evXT5L0ySefaOTIkTp58qQmTJjgzOEBAABQBacGwLlz52rBggUaOnSovW3gwIG68847NWPGDAIgAABAHXDqJeCCggJFR0df1R4dHa2CggJnDg0AAIBqODUAdurUSW+99dZV7StXrlTnzp2dOTQAAACq4dRLwM8//7wSExP18ccf2z8DuGXLFmVmZlYZDAEAAOB8Tj0D+PDDDys7O1sBAQFKT09Xenq6AgIClJ2drUGDBjlzaAAAAFTDaWcAz58/ryeffFLTpk3TsmXL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2h8D884775iAgADzzDPP2Pu4+jF0BQTAemju3Lmmffv2xtPT00RERJht27bV9ZRqZOPGjUbSVcuwYcOMMRdv7Z82bZoJDAw0Xl5epn///mb//v0O+/jmm2/M4MGDTdOmTY2vr68ZPny4OXPmTB1Uc7WqapNklixZYu/z3XffmVGjRpnmzZubxo0bm0GDBpmCggKH/Xz11Vfm/vvvNz4+PiYgIMBMnDjRnD9//iZXU7Vf/epXpkOHDsbT09Pccsstpn///vbwZ4zr11eVKwOgK9eYmJhoWrdubTw9PU3btm1NYmKiw/PxXLm2y/3jH/8w3bt3N15eXqZLly5m0aJFDutd/XfNBx98YCRdNWdjGsYxLC0tNUlJSaZ9+/bG29vb3Hrrrea5555zeEyNqx9DV2Az5rJHbwMAAKDB4zOAAAAAFkMABAAAsBgCIAAAgMUQAAEAACyGAAgAAGAxBEAAAACLIQACAABYDAEQQJXuuecejR8/vq6nYWeM0RNPPKEWLVrIZrMpNze3rqdkt3TpUvn7+9tfz5gxQz179rzmNo8//rgSEhKcOq/6pCbvCYCbhwAIwCVkZGRo6dKlWrNmjQoKCtS9e/e6nlK1nn76aYfvMa0NX331Vb0LvgBcl0ddTwCAdVRUVMhms131RfA1cejQIbVu3VrR0dFOmFntatq0qZo2bVrX0wCAanEGEKjH7rnnHo0bN07PPPOMWrRooaCgIM2YMcO+vqqzQqdPn5bNZtOmTZskSZs2bZLNZtMHH3ygXr16ycfHRz/96U9VXFys999/X127dpWvr6/++7//W99++63D+BcuXNCYMWPk5+engIAATZs2TZd/e2R5ebmefvpptW3bVk2aNFFkZKR9XOk/l0ZXr16tbt26ycvLS/n5+VXWunnzZkVERMjLy0utW7fW5MmTdeHCBUkXL5eOHTtW+fn5stlsCgkJqfY927Jli+655x41btxYzZs3V1xcnP79739LungW8e6775a/v79atmypBx54QIcOHbrq/XznnXf0k5/8RI0bN1ZYWJiysrIcxli6dKnat2+vxo0ba9CgQfrmm28c1l95ubOiokLJycn2cZ955hld+S2cPzS3jh07SpJ69eolm82me+65x77utddeU9euXeXt7a0uXbroz3/+c7Xvj3Tx39XYsWM1fvx4NW/eXIGBgVq8eLHKyso0fPhwNWvWTJ06ddL777/vUMOIESPUsWNH+fj46I477tCcOXMc9rtp0yZFRESoSZMm8vf3V79+/XT06NEq53Do0CHdeuutGjNmjIwxOnr0qB588EE1b95cTZo00Z133ql169Zdsw4AN6Auv4gYwLXFxMQYX19fM2PGDHPgwAHzf//3f8Zms5n169cbY4w5cuSIkWR2795t3+bf//63kWQ2btxojDFm48aNRpLp27ev+eSTT8yuXbtMp06dTExMjLnvvvvMrl27zMcff2xatmxpZs6c6TB206ZNTVJSktm3b59ZtmyZady4sVm0aJG9z69//WsTHR1tPv74Y/Pll1+aP/7xj8bLy8scOHDAGGPMkiVLTKNGjUx0dLTZsmWL2bdvnykrK7uqzn/961+mcePGZtSoUWbv3r3m3XffNQEBASY1NdUYY8zp06fNb3/7W9OuXTtTUFBgiouLq3y/du/ebby8vMxTTz1lcnNzTV5enpk7d645ceKEMcaYv//97+btt982Bw8eNLt37zYPPvigCQ0NNRUVFQ7vZ5cuXcyaNWvM/v37zS9+8QvToUMHc/78eWOMMdu2bTNubm7m97//vdm/f7+ZM2eO8ff3N35+fvZ5pKammrCwMPvr3//+96Z58+bm7bffNl988YUZMWKEadasmXnooYfsfX5obtnZ2UaS+fDDD01BQYH55ptvjDHGLFu2zLRu3dq8/fbb5vDhw+btt982LVq0MEuXLq3yPbp0bJs1a2ZeeOEFc+DAAfPCCy8Yd3d3c//995tFixaZAwcOmKeeesq0bNnSfrzOnTtnpk+fbnbs2GEOHz5s//ewcuVKY4wx58+fN35+fubpp582X375pfniiy/M0qVLzdGjR696Tz799FMTFBRknnvuOfuc4uPjzb333ms+++wzc+jQIfOPf/zDbN68udoaANwYAiBQj8XExJi7777boa1Pnz7m2WefNcZcXwD88MMP7X3S0tKMJHPo0CF725NPPmni4uIcxu7atauprKy0tz377LOma9euxhhjjh49atzd3c3x48cd5te/f3+TkpJijLkYACWZ3Nzca9Y5ZcoUc8cddziMNX/+fNO0aVN7APrTn/5kOnTocM39DB482PTr1++afS534sQJI8ns2bPHGPOf9/O1116z9/n888+NJLN37177GD/72c8c9pOYmHjNANi6dWvzhz/8wf76/Pnzpl27dg4BsKZzu/xYG2PMbbfdZpYvX+7Q9sILL5ioqKhq933lv6sLFy6YJk2amMcee8zeVlBQYCSZrKysavczevRo8/DDDxtjjPnmm2+MJLNp06Yq+156T7Zs2WKaN29uXn75ZYf1oaGhZsaMGdWOBaB2cQkYqOd69Ojh8Lp169YqLi6+of0EBgaqcePGuvXWWx3artxv3759ZbPZ7K+joqJ08OBBVVRUaM+ePaqoqNDtt99u/8xb06ZNtXnzZodLl56enlfVcKW9e/cqKirKYax+/frp7Nmz+te//lXjGnNzc9W/f/9q1x88eFCDBw/WrbfeKl9fX/ul5CsvS18+39atW0uS/b3Zu3evIiMjHfpHRUVVO2ZJSYkKCgoctvHw8FDv3r1/1NwuV1ZWpkOHDmnEiBEOx+DFF190OAZVubxGd3d3tWzZUqGhofa2wMBAh7olaf78+QoPD9ctt9yipk2batGiRfb5tWjRQo8//rji4uL04IMPas6cOSooKHAYMz8/X/fee6+mT5+uiRMnOqwbN26cXnzxRfXr10+pqan67LPPrjl/ADeGAAjUc40aNXJ4bbPZVFlZKUn2mynMZZ8nO3/+/A/ux2azXXO/NXH27Fm5u7srJydHubm59mXv3r0Onw3z8fFxCHbO5OPjc831Dz74oE6dOqXFixdr+/bt2r59uyTp3LlzDv2ufK8kXdd782PUdG6XO3v2rCRp8eLFDscgLy9P27Ztu+Z4VR3/a9W9YsUKPf300xoxYoTWr1+v3NxcDR8+3GF+S5YsUVZWlqKjo7Vy5UrdfvvtDvO45ZZbFBERob/97W8qLS11GP/Xv/61Dh8+rMcee0x79uxR7969NXfu3GvWAODHIwACLuyWW26RJIczLbX5mJBLIeSSbdu2qXPnznJ3d1evXr1UUVGh4uJiderUyWEJCgq6rnG6du2qrKwshyC7ZcsWNWvWTO3atavxfnr06FHt41e++eYb7d+/X1OnTlX//v3VtWtX+80h1zvXqt6X6vj5+al169YO21y4cEE5OTnXNTdPT09JF2/GuCQwMFBt2rTR4cOHrzoGl24aqS1btmxRdHS0Ro0apV69eqlTp05VnmXs1auXUlJStHXrVnXv3l3Lly+3r/Px8dGaNWvk7e2tuLg4nTlzxmHb4OBgjRw5Uu+8844mTpyoxYsX12oNAP6DAAi4MB8fH/Xt21czZ87U3r17tXnzZk2dOrXW9p+fn6/k5GTt379ff/vb3zR37lwlJSVJkm6//XYNGTJEQ4cO1TvvvKMjR44oOztbaWlpWrt27XWNM2rUKB07dkxjx47Vvn379N577yk1NVXJycnX9ciYlJQU7dixQ6NGjdJnn32mffv2acGCBTp58qSaN2+uli1batGiRfryyy/10UcfKTk5+brmKV28VJmRkaGXX35ZBw8e1Lx585SRkXHNbZKSkjRz5kylp6dr3759GjVqlE6fPm1fX5O5tWrVSj4+PsrIyFBRUZFKSkokSc8//7zS0tL06quv6sCBA9qzZ4+WLFmiWbNmXXdt19K5c2ft3LlTH3zwgQ4cOKBp06Zpx44d9vVHjhxRSkqKsrKydPToUa1fv14HDx5U165dHfbTpEkTrV27Vh4eHrr//vvtZzHHjx+vDz74QEeOHNGuXbu0cePGq7YFUHsIgICLe/3113XhwgWFh4dr/PjxevHFF2tt30OHDtV3332niIgIjR49WklJSXriiSfs65csWaKhQ4dq4sSJuuOOO5SQkKAdO3aoffv21zVO27ZttW7dOmVnZyssLEwjR47UiBEjrjvM3n777Vq/fr0+/fRTRUREKCoqSu+99548PDzk5uamFStWKCcnR927d9eECRP0xz/+8br2L138XOTixYs1Z84chYWFaf369T84z4kTJ+qxxx7TsGHDFBUVpWbNmmnQoEH29TWZm4eHh1599VX97//+r9q0aaOHHnpI0sVLp6+99pqWLFmi0NBQxcTEaOnSpbV+BvDJJ5/Uz3/+cyUmJioyMlLffPONRo0aZV/fuHFj7du3Tw8//LBuv/12PfHEExo9erSefPLJq/bVtGlTvf/++zLGKD4+XmVlZaqoqNDo0aPVtWtXDRgwQLfffvsPPs4GwI9nM+aKh1EBAACgQeMMIAAAgMUQAAEAACyGAAgAAGAxBEAAAACLIQACAABYDAEQAADAYgiAAAAAFkMABAAAsBgCIAAAgMUQAAEAACyGAAgAAGAxBEAAAACL+f8THfKzmukKHwAAAABJRU5ErkJggg==",
"text/html": [
"\n",
" <div style=\"display: inline-block;\">\n",
" <div class=\"jupyter-widgets widget-label\" style=\"text-align: center;\">\n",
" Figure\n",
" </div>\n",
- " <img src='data:image/png;base64,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krRp0yZnvY+PjwYMGKB9+/a51Ozfv1/dunVrdC6+vr4KDAx0eQEAAHgat34F3Lt3b82ePVtbt251hq8dO3bo/fff12OPPaaFCxc6ay/1t4EzMzOVnp6u+Ph4JSQkKDc3V7W1tcrIyJAkjRkzRl26dFFOTo4kadKkSRo8eLDmz5+v4cOHKy8vT7t27dLy5cudfWZlZSktLU133HGHfvSjH2njxo164403tHXrVjf8JgAAAFoPtz4GJioq6somYbPp008/vWTN4sWLNW/ePFVWVio2NlYLFy5UYmKiJOnOO+9UZGSkVq5c6axfs2aNpk+frkOHDik6Olpz587VsGHDXPp8/vnnlZOTo//7v//TzTffrFmzZunee++94vXxGBgAADwPj4HxkOcAtlYEQAAAPA8BsBmeA3iBZVkiawIAALQ8twfAF198UTExMfL395e/v7/69ev3nf76BgAAAL4bt94EsmDBAmVnZ2v8+PEaNGiQJOm9997TI488ohMnTjifwQcAAIDm49YAuGjRIi1dulRjxoxxto0YMUJ9+vTRU089RQAEAABoAW79CvjYsWMaOHDgRe0DBw7UsWPH3Dk0AAAAGuHWANi9e3e9+uqrF7WvXr1a0dHR7hwaAAAAjXDrV8CzZs1SWlqa/v73vzuvAXz//fdVUFDQYDAEAACA+7n1DOD999+v4uJihYSEKD8/X/n5+QoJCVFxcbHuu+8+dw4NAACARrjtDOD58+f13//938rOztbLL7/srmEAAABwldx2BrBt27b661//6q7uAQAAcI3c+hVwamqq8vPz3TkEAAAArpJbbwKJjo7Wb3/7W73//vuKi4vTdddd57J94sSJ7hweAAAADXBrAPzzn/+s4OBglZSUqKSkxGWbzWYjAAIAALQAtwbAgwcPOn+2LEvS18EPAAAALcet1wBKX58F7Nu3r/z8/OTn56e+ffvqT3/6k7uHBQAAQCPcegZwxowZWrBggSZMmKCkpCRJUmFhoR599FFVVFTot7/9rTuHBwAAQAPcGgCXLl2qFStWaNSoUc62ESNGqF+/fpowYQIBEAAAoAW49Svg8+fPKz4+/qL2uLg4ffXVV+4cGgAAAI1wawB86KGHtHTp0ovaly9frtGjR7tzaAAAADTCrV8BS1/fBPL222/rtttukyQVFRWpoqJCY8aMUWZmprNuwYIF7p4KAAAA5OYAWF5erltvvVWS9Mknn0iSQkJCFBISovLycmcdj4YBAABoPm4NgFu2bHFn9wAAALgGbn8OIL67yCnrW3oKAADge4QACAAAYBgCIAAAgGEIgAAAAIYhAAIAABiGAAgAAGAYAiAAAIBhCIAAAACGIQACAAAYhgAIAABgGAIgAACAYQiAAAAAhiEAAgAAGIYACAAAYBgCIAAAgGEIgAAAAIYhAAIAABiGAAgAAGAYAiAAAIBhCIAAAACGIQACAAAYhgAIAABgGAIgAACAYQiAAAAAhiEAAgAAGIYACAAAYBiPCoBLlixRZGSk/Pz8lJiYqOLi4kvWr1mzRj179pSfn59iYmK0YcOGRmsfeeQR2Ww25ebmNvGsAQAAWhePCYCrV69WZmamZs6cqdLSUvXv318pKSmqrq5usH779u0aNWqUxo4dq927dys1NVWpqakqLy+/qHbt2rXasWOHOnfu7O5lAAAAtDiPCYALFizQww8/rIyMDPXu3VvLli1Tu3bt9PzzzzdY/9xzz2no0KHKyspSr1699Lvf/U633nqrFi9e7FJ35MgRTZgwQa+88oratm3bHEsBAABoUR4RAM+dO6eSkhIlJyc727y8vJScnKzCwsIG9yksLHSpl6SUlBSXeofDoYceekhZWVnq06fPZedRV1cnu93u8nK3yCnr3T4GAAAwi0cEwBMnTqi+vl5hYWEu7WFhYaqsrGxwn8rKysvW/8///I+8vb01ceLEK5pHTk6OgoKCnK+IiIirXAkAAEDL84gA6A4lJSV67rnntHLlStlstivaZ+rUqaqpqXG+Dh8+7OZZAgAAND2PCIAhISFq06aNqqqqXNqrqqoUHh7e4D7h4eGXrH/33XdVXV2trl27ytvbW97e3vrss8/02GOPKTIyssE+fX19FRgY6PICAADwNB4RAH18fBQXF6eCggJnm8PhUEFBgZKSkhrcJykpyaVekjZt2uSsf+ihh/SPf/xDZWVlzlfnzp2VlZWlt956y32LAQAAaGHeLT2BK5WZman09HTFx8crISFBubm5qq2tVUZGhiRpzJgx6tKli3JyciRJkyZN0uDBgzV//nwNHz5ceXl52rVrl5YvXy5J6tixozp27OgyRtu2bRUeHq6bb765eRcHAADQjDwmAKalpen48eOaMWOGKisrFRsbq40bNzpv9KioqJCX179P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/vz5Vo8ePaxz5841WH/hd/L4449bnTp1ssrLy53bSkpKLEnWoUOHGh0PgBk4Awjgqnz88ceqq6vTXXfd1WjN6tWrtXDhQn3yySc6c+aMvvrqKwUGBrrUREZGKiAgwPm+U6dOqq6ulvT12cFz584pMTHRub1Dhw66+eabLzmviIgIde7c2dmWlJR0TXP7tg8++EBnzpxRx44dXdq/+OILffLJJ5fct1+/fs6fw8LCJEkxMTEubRfWLUlVVVWaPn26tm7dqurqatXX1+vs2bOqqKiQ9PWZyNzcXN14440aOnSohg0bpp/85Cfy9v73f87nz5+v2tpa7dq1SzfeeKOzvX///rrrrrsUExOjlJQUDRkyRD/72c/0gx/84JJrAPD9wzWAAK6Kv7//JbcXFhZq9OjRGjZsmNatW6fdu3frySef1Llz51zq2rZt6/LeZrPJ4XA0+XyvZW7fdubMGXXq1EllZWUur3379ikrK+uS+35znTabrcG2b647PT1dZWVleu6557R9+3aVlZWpY8eOzjlGRERo3759+sMf/iB/f3/95je/0R133OFyjeUPf/hD1dfX69VXX3WZS5s2bbRp0ya9+eab6t27txYtWqSbb75ZBw8evMxvDsD3DQEQwFWJjo6Wv7+/86aCb9u+fbu6deumJ598UvHx8YqOjtZnn312VWPcdNNNatu2rYqKipxtn3/+ufbv39/oPr169dLhw4d17NgxZ9uOHTuuem4+Pj6qr693abv11ltVWVkpb29vde/e3eUVEhJyVWu7nPfff18TJ07UsGHD1KdPH/n6+urEiRMuNf7+/vrJT36ihQsXauvWrSosLNSHH37o3J6QkKA333xTTz/9tJ555hmXfW02mwYNGqRZs2Zp9+7d8vHx0dq1a5t0DQBaP74CBnBV/Pz89MQTT+jxxx+Xj4+PBg0apOPHj2vPnj0aO3asoqOjVVFRoby8PA0YMEDr16+/6oDRvn17jR07VllZWerYsaNCQ0P15JNPysur8f/PmpycrB49eig9PV3z5s2T3W7Xk08+6VJzJXOLjIzUwYMHVVZWphtuuEEBAQFKTk5WUlKSUlNTNXfuXPXo0UNHjx7V+vXrdd999yk+Pv6q1ncp0dHReumllxQfHy+73a6srCyXs64rV65UfX29EhMT1a5dO7388svy9/dXt27dXPoZOHCgNmzYoLvvvlve3t6aPHmyioqKVFBQoCFDhig0NFRFRUU6fvy4evXq1WTzB+AZOAMI4KplZ2frscce04wZM9SrVy+lpaU5r2MbMWKEHn30UY0fP16xsbHavn27srOzr3qMefPm6Yc//KF+8pOfKDk5Wbfffrvi4uIarffy8tLatWv1xRdfKCEhQb/85S9dHk1zpXO7//77NXToUP3oRz/S9ddfr7/85S+y2WzasGGD7rjjDmVkZKhHjx4aOXKkPvvsM+d1fU3lz3/+sz7//HPdeuuteuihhzRx4kSFhoY6twcHB2vFihUaNGiQ+vXrp82bN+uNN9646PpESbr99tu1fv16TZ8+XYsWLVJgYKD+/ve/a9iwYerRo4emT5+u+fPn6+67727SNQBo/WyWxf3/AAAAJuEMIAAAgGEIgAAAAIYhAAIAABiGAAgAAGAYAiAAAIBhCIAAAACGIQACAAAYhgAIAABgGAIgAACAYQiAAAAAhiEAAgAAGIYACAAAYJj/D1eQsoxETxFtAAAAAElFTkSuQmCC' width=640.0/>\n",
+ " <img src='data:image/png;base64,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nurTp4/279/v0OfAgQPq0KFDjeYFAADgqpx6CbiyslKNGjW6qr1Ro0b2y7A1kZycrGHDhql3796KiIjQ7NmzVVZWpuHDh0uShg4dqrZt2yotLU2SlJSUpJiYGL3yyiuKj4/XihUrtHPnTi1atMi+z0mTJikxMVH/9V//pZ/85CfKyMjQP/7xD23atOnGigYAAKjnnHoG8Kc//amSkpL09ddf29uOHz+uCRMmqH///jXeT2Jiol5++WVNnz5dPXv2VG5urjIyMuw3euTn56ugoMDePzo6WsuXL9eiRYsUFhamv//970pPT1f37t3tfQYNGqSFCxfqD3/4g0JDQ/Xaa6/p7bff1t13310LlQMAANRfTn0O4LFjxzRw4EB9/vnn9psljh07pu7du2v16tVq166ds4a+KXgOIAAArofnADr5EnBwcLB27dqlDz/8UPv27ZN08UaL2NhYZw4LAACAa3BqAJQkm82me++9V/fee6+zhwIAAEANOP1B0JmZmXrggQd022236bbbbtMDDzygDz/80NnDAgAAoBpODYB//vOfNWDAADVr1kxJSUlKSkqSr6+vfvazn2n+/PnOHBoAAADVcOol4N/97nf605/+pDFjxtjbxo0bp379+ul3v/udRo8e7czhAQAAUAWnngE8ffq0BgwYcFX7fffdp5KSEmcODQAAgGo4NQAOHDhQ77777lXt7733nh544AFnDg0AAIBqOPUScLdu3fTSSy9p06ZN9q9h27Ztm7Zs2aKJEyfq1Vdftfet6XcDAwAA4MY49UHQHTt2rNkkbDYdPnzYWdNwGh4EDQCA6+FB0E4+A3jkyBFn7h4AAAA/gtOfA3iJMUZOPNkIAACAGnJ6AHzjjTcUGhoqHx8f+fj4qEePHnrzzTedPSwAAACq4dRLwLNmzdK0adM0ZswY9evXT5L0ySefaOTIkTp58qQmTJjgzOEBAABQBacGwLlz52rBggUaOnSovW3gwIG68847NWPGDAIgAABAHXDqJeCCggJFR0df1R4dHa2CggJnDg0AAIBqODUAdurUSW+99dZV7StXrlTnzp2dOTQAAACq4dRLwM8//7wSExP18ccf2z8DuGXLFmVmZlYZDAEAAOB8Tj0D+PDDDys7O1sBAQFKT09Xenq6AgIClJ2drUGDBjlzaAAAAFTDaWcAz58/ryeffFLTpk3TsmXL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2h8D884775iAgADzzDPP2Pu4+jF0BQTAemju3Lmmffv2xtPT00RERJht27bV9ZRqZOPGjUbSVcuwYcOMMRdv7Z82bZoJDAw0Xl5epn///mb//v0O+/jmm2/M4MGDTdOmTY2vr68ZPny4OXPmTB1Uc7WqapNklixZYu/z3XffmVGjRpnmzZubxo0bm0GDBpmCggKH/Xz11Vfm/vvvNz4+PiYgIMBMnDjRnD9//iZXU7Vf/epXpkOHDsbT09Pccsstpn///vbwZ4zr11eVKwOgK9eYmJhoWrdubTw9PU3btm1NYmKiw/PxXLm2y/3jH/8w3bt3N15eXqZLly5m0aJFDutd/XfNBx98YCRdNWdjGsYxLC0tNUlJSaZ9+/bG29vb3Hrrrea5555zeEyNqx9DV2Az5rJHbwMAAKDB4zOAAAAAFkMABAAAsBgCIAAAgMUQAAEAACyGAAgAAGAxBEAAAACLIQACAABYDAEQQJXuuecejR8/vq6nYWeM0RNPPKEWLVrIZrMpNze3rqdkt3TpUvn7+9tfz5gxQz179rzmNo8//rgSEhKcOq/6pCbvCYCbhwAIwCVkZGRo6dKlWrNmjQoKCtS9e/e6nlK1nn76aYfvMa0NX331Vb0LvgBcl0ddTwCAdVRUVMhms131RfA1cejQIbVu3VrR0dFOmFntatq0qZo2bVrX0wCAanEGEKjH7rnnHo0bN07PPPOMWrRooaCgIM2YMcO+vqqzQqdPn5bNZtOmTZskSZs2bZLNZtMHH3ygXr16ycfHRz/96U9VXFys999/X127dpWvr6/++7//W99++63D+BcuXNCYMWPk5+engIAATZs2TZd/e2R5ebmefvpptW3bVk2aNFFkZKR9XOk/l0ZXr16tbt26ycvLS/n5+VXWunnzZkVERMjLy0utW7fW5MmTdeHCBUkXL5eOHTtW+fn5stlsCgkJqfY927Jli+655x41btxYzZs3V1xcnP79739LungW8e6775a/v79atmypBx54QIcOHbrq/XznnXf0k5/8RI0bN1ZYWJiysrIcxli6dKnat2+vxo0ba9CgQfrmm28c1l95ubOiokLJycn2cZ955hld+S2cPzS3jh07SpJ69eolm82me+65x77utddeU9euXeXt7a0uXbroz3/+c7Xvj3Tx39XYsWM1fvx4NW/eXIGBgVq8eLHKyso0fPhwNWvWTJ06ddL777/vUMOIESPUsWNH+fj46I477tCcOXMc9rtp0yZFRESoSZMm8vf3V79+/XT06NEq53Do0CHdeuutGjNmjIwxOnr0qB588EE1b95cTZo00Z133ql169Zdsw4AN6Auv4gYwLXFxMQYX19fM2PGDHPgwAHzf//3f8Zms5n169cbY4w5cuSIkWR2795t3+bf//63kWQ2btxojDFm48aNRpLp27ev+eSTT8yuXbtMp06dTExMjLnvvvvMrl27zMcff2xatmxpZs6c6TB206ZNTVJSktm3b59ZtmyZady4sVm0aJG9z69//WsTHR1tPv74Y/Pll1+aP/7xj8bLy8scOHDAGGPMkiVLTKNGjUx0dLTZsmWL2bdvnykrK7uqzn/961+mcePGZtSoUWbv3r3m3XffNQEBASY1NdUYY8zp06fNb3/7W9OuXTtTUFBgiouLq3y/du/ebby8vMxTTz1lcnNzTV5enpk7d645ceKEMcaYv//97+btt982Bw8eNLt37zYPPvigCQ0NNRUVFQ7vZ5cuXcyaNWvM/v37zS9+8QvToUMHc/78eWOMMdu2bTNubm7m97//vdm/f7+ZM2eO8ff3N35+fvZ5pKammrCwMPvr3//+96Z58+bm7bffNl988YUZMWKEadasmXnooYfsfX5obtnZ2UaS+fDDD01BQYH55ptvjDHGLFu2zLRu3dq8/fbb5vDhw+btt982LVq0MEuXLq3yPbp0bJs1a2ZeeOEFc+DAAfPCCy8Yd3d3c//995tFixaZAwcOmKeeesq0bNnSfrzOnTtnpk+fbnbs2GEOHz5s//ewcuVKY4wx58+fN35+fubpp582X375pfniiy/M0qVLzdGjR696Tz799FMTFBRknnvuOfuc4uPjzb333ms+++wzc+jQIfOPf/zDbN68udoaANwYAiBQj8XExJi7777boa1Pnz7m2WefNcZcXwD88MMP7X3S0tKMJHPo0CF725NPPmni4uIcxu7atauprKy0tz377LOma9euxhhjjh49atzd3c3x48cd5te/f3+TkpJijLkYACWZ3Nzca9Y5ZcoUc8cddziMNX/+fNO0aVN7APrTn/5kOnTocM39DB482PTr1++afS534sQJI8ns2bPHGPOf9/O1116z9/n888+NJLN37177GD/72c8c9pOYmHjNANi6dWvzhz/8wf76/Pnzpl27dg4BsKZzu/xYG2PMbbfdZpYvX+7Q9sILL5ioqKhq933lv6sLFy6YJk2amMcee8zeVlBQYCSZrKysavczevRo8/DDDxtjjPnmm2+MJLNp06Yq+156T7Zs2WKaN29uXn75ZYf1oaGhZsaMGdWOBaB2cQkYqOd69Ojh8Lp169YqLi6+of0EBgaqcePGuvXWWx3artxv3759ZbPZ7K+joqJ08OBBVVRUaM+ePaqoqNDtt99u/8xb06ZNtXnzZodLl56enlfVcKW9e/cqKirKYax+/frp7Nmz+te//lXjGnNzc9W/f/9q1x88eFCDBw/WrbfeKl9fX/ul5CsvS18+39atW0uS/b3Zu3evIiMjHfpHRUVVO2ZJSYkKCgoctvHw8FDv3r1/1NwuV1ZWpkOHDmnEiBEOx+DFF190OAZVubxGd3d3tWzZUqGhofa2wMBAh7olaf78+QoPD9ctt9yipk2batGiRfb5tWjRQo8//rji4uL04IMPas6cOSooKHAYMz8/X/fee6+mT5+uiRMnOqwbN26cXnzxRfXr10+pqan67LPPrjl/ADeGAAjUc40aNXJ4bbPZVFlZKUn2mynMZZ8nO3/+/A/ux2azXXO/NXH27Fm5u7srJydHubm59mXv3r0Onw3z8fFxCHbO5OPjc831Dz74oE6dOqXFixdr+/bt2r59uyTp3LlzDv2ufK8kXdd782PUdG6XO3v2rCRp8eLFDscgLy9P27Ztu+Z4VR3/a9W9YsUKPf300xoxYoTWr1+v3NxcDR8+3GF+S5YsUVZWlqKjo7Vy5UrdfvvtDvO45ZZbFBERob/97W8qLS11GP/Xv/61Dh8+rMcee0x79uxR7969NXfu3GvWAODHIwACLuyWW26RJIczLbX5mJBLIeSSbdu2qXPnznJ3d1evXr1UUVGh4uJiderUyWEJCgq6rnG6du2qrKwshyC7ZcsWNWvWTO3atavxfnr06FHt41e++eYb7d+/X1OnTlX//v3VtWtX+80h1zvXqt6X6vj5+al169YO21y4cEE5OTnXNTdPT09JF2/GuCQwMFBt2rTR4cOHrzoGl24aqS1btmxRdHS0Ro0apV69eqlTp05VnmXs1auXUlJStHXrVnXv3l3Lly+3r/Px8dGaNWvk7e2tuLg4nTlzxmHb4OBgjRw5Uu+8844mTpyoxYsX12oNAP6DAAi4MB8fH/Xt21czZ87U3r17tXnzZk2dOrXW9p+fn6/k5GTt379ff/vb3zR37lwlJSVJkm6//XYNGTJEQ4cO1TvvvKMjR44oOztbaWlpWrt27XWNM2rUKB07dkxjx47Vvn379N577yk1NVXJycnX9ciYlJQU7dixQ6NGjdJnn32mffv2acGCBTp58qSaN2+uli1batGiRfryyy/10UcfKTk5+brmKV28VJmRkaGXX35ZBw8e1Lx585SRkXHNbZKSkjRz5kylp6dr3759GjVqlE6fPm1fX5O5tWrVSj4+PsrIyFBRUZFKSkokSc8//7zS0tL06quv6sCBA9qzZ4+WLFmiWbNmXXdt19K5c2ft3LlTH3zwgQ4cOKBp06Zpx44d9vVHjhxRSkqKsrKydPToUa1fv14HDx5U165dHfbTpEkTrV27Vh4eHrr//vvtZzHHjx+vDz74QEeOHNGuXbu0cePGq7YFUHsIgICLe/3113XhwgWFh4dr/PjxevHFF2tt30OHDtV3332niIgIjR49WklJSXriiSfs65csWaKhQ4dq4sSJuuOOO5SQkKAdO3aoffv21zVO27ZttW7dOmVnZyssLEwjR47UiBEjrjvM3n777Vq/fr0+/fRTRUREKCoqSu+99548PDzk5uamFStWKCcnR927d9eECRP0xz/+8br2L138XOTixYs1Z84chYWFaf369T84z4kTJ+qxxx7TsGHDFBUVpWbNmmnQoEH29TWZm4eHh1599VX97//+r9q0aaOHHnpI0sVLp6+99pqWLFmi0NBQxcTEaOnSpbV+BvDJJ5/Uz3/+cyUmJioyMlLffPONRo0aZV/fuHFj7du3Tw8//LBuv/12PfHEExo9erSefPLJq/bVtGlTvf/++zLGKD4+XmVlZaqoqNDo0aPVtWtXDRgwQLfffvsPPs4GwI9nM+aKh1EBAACgQeMMIAAAgMUQAAEAACyGAAgAAGAxBEAAAACLIQACAABYDAEQAADAYgiAAAAAFkMABAAAsBgCIAAAgMUQAAEAACyGAAgAAGAxBEAAAACL+f8THfKzmukKHwAAAABJRU5ErkJggg==' width=640.0/>\n",
" </div>\n",
" "
],
@@ -2012,7 +1007,7 @@
"max_amount = max(candidate_amounts)\n",
"fig = plt.subplots()\n",
"plt.hist(candidate_amounts, range=(1, max_amount), align=\"left\", density=True, bins=range(1, max_amount))#, bins=list(range(20)) + list(range(20, 100, 5)) + list(range(100, max(candidate_amounts), 10)))\n",
- "plt.xlabel(\"candidate masks\")\n",
+ "plt.xlabel(\"number of candidate masks\")\n",
"plt.ylabel(\"proportion\")\n",
"plt.show()"
]
@@ -2020,7 +1015,7 @@
{
"cell_type": "code",
"execution_count": null,
- "id": "1009372d-08af-4dbd-9382-be1f02b4ad42",
+ "id": "b323aec4-e6d6-4722-b677-1ed1b04a5b02",
"metadata": {},
"outputs": [],
"source": []