Files
uni/year4/semester2/CS4423/assignments/assignment1/CS4423-Assignment-1.ipynb
2025-02-25 20:53:28 +00:00

828 lines
285 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"id": "e4dd8d87",
"metadata": {
"toc": true
},
"source": [
"<h1>Table of Contents<span class=\"tocSkip\"></span></h1>\n",
"<div class=\"toc\"><ul class=\"toc-item\"><li><ul class=\"toc-item\"><li><span><a href=\"#Collaboration-Policy\" data-toc-modified-id=\"Collaboration-Policy-0.1\"><span class=\"toc-item-num\">0.1&nbsp;&nbsp;</span>Collaboration Policy</a></span></li><li><span><a href=\"#Instructions\" data-toc-modified-id=\"Instructions-0.2\"><span class=\"toc-item-num\">0.2&nbsp;&nbsp;</span>Instructions</a></span></li><li><span><a href=\"#Preliminaries\" data-toc-modified-id=\"Preliminaries-0.3\"><span class=\"toc-item-num\">0.3&nbsp;&nbsp;</span>Preliminaries</a></span></li><li><span><a href=\"#Usual-list-of-Python-modules\" data-toc-modified-id=\"Usual-list-of-Python-modules-0.4\"><span class=\"toc-item-num\">0.4&nbsp;&nbsp;</span>Usual list of Python modules</a></span></li></ul></li><li><span><a href=\"#Q1:-Bipartite-Graphs\" data-toc-modified-id=\"Q1:-Bipartite-Graphs-1\"><span class=\"toc-item-num\">1&nbsp;&nbsp;</span>Q1: Bipartite Graphs</a></span><ul class=\"toc-item\"><li><span><a href=\"#Define-and-draw-the-following-graph\" data-toc-modified-id=\"Define-and-draw-the-following-graph-1.1\"><span class=\"toc-item-num\">1.1&nbsp;&nbsp;</span>Define and draw the following graph</a></span></li><li><span><a href=\"#Determine-if-$G_1$--is-bipartite.\" data-toc-modified-id=\"Determine-if-$G_1$--is-bipartite.-1.2\"><span class=\"toc-item-num\">1.2&nbsp;&nbsp;</span>Determine if $G_1$ is bipartite.</a></span></li></ul></li><li><span><a href=\"#Q2:-A-Network-of-friends\" data-toc-modified-id=\"Q2:-A-Network-of-friends-2\"><span class=\"toc-item-num\">2&nbsp;&nbsp;</span>Q2: A Network of friends</a></span><ul class=\"toc-item\"><li><span><a href=\"#Define-a-graph-in-networkx-that-represents-this---scenario.\" data-toc-modified-id=\"Define-a-graph-in-networkx-that-represents-this---scenario.-2.1\"><span class=\"toc-item-num\">2.1&nbsp;&nbsp;</span>Define a graph in <code>networkx</code> that represents this scenario.</a></span></li><li><span><a href=\"#Verify-that-the-graph-has-the-correct-properties-by--displaying-the-diagonal-of-the-square-of-the-graphs-adjacency--matrix.\" data-toc-modified-id=\"Verify-that-the-graph-has-the-correct-properties-by--displaying-the-diagonal-of-the-square-of-the-graphs-adjacency--matrix.-2.2\"><span class=\"toc-item-num\">2.2&nbsp;&nbsp;</span>Verify that the graph has the correct properties by displaying the diagonal of the square of the graphs adjacency matrix.</a></span></li></ul></li><li><span><a href=\"#Q3:-Isomorphic-graphs\" data-toc-modified-id=\"Q3:-Isomorphic-graphs-3\"><span class=\"toc-item-num\">3&nbsp;&nbsp;</span>Q3: Isomorphic graphs</a></span><ul class=\"toc-item\"><li><span><a href=\"#Self-complementary-cycle-graph\" data-toc-modified-id=\"Self-complementary-cycle-graph-3.1\"><span class=\"toc-item-num\">3.1&nbsp;&nbsp;</span>Self-complementary cycle graph</a></span></li><li><span><a href=\"#Graphs-that-are-isomorphic-to-their-line-graphs.\" data-toc-modified-id=\"Graphs-that-are-isomorphic-to-their-line-graphs.-3.2\"><span class=\"toc-item-num\">3.2&nbsp;&nbsp;</span>Graphs that are isomorphic to their line graphs.</a></span></li></ul></li><li><span><a href=\"#Q4:-Bipartite-Graphs\" data-toc-modified-id=\"Q4:-Bipartite-Graphs-4\"><span class=\"toc-item-num\">4&nbsp;&nbsp;</span>Q4: Bipartite Graphs</a></span></li><li><span><a href=\"#Q5:-Directed-Graphs\" data-toc-modified-id=\"Q5:-Directed-Graphs-5\"><span class=\"toc-item-num\">5&nbsp;&nbsp;</span>Q5: Directed Graphs</a></span><ul class=\"toc-item\"><li><span><a href=\"#Construct-and-draw-a-digraph\" data-toc-modified-id=\"Construct-and-draw-a-digraph-5.1\"><span class=\"toc-item-num\">5.1&nbsp;&nbsp;</span>Construct and draw a digraph</a></span></li><li><span><a href=\"#$G_5$-is-not-strongly-connected.\" data-toc-modified-id=\"$G_5$-is-not-strongly-connected.-5.2\"><span class=\"toc-item-num\">5.2&nbsp;&nbsp;</span>$G_5$ is not strongly connected.</a></span></li><li><span><a href=\"#Permuting-the-adjacency-matrix.\" data-toc-modified-id=\"Permuting-the-adjacency-matrix.-5.3\"><span class=\"toc-item-num\">5.3&nbsp;&nbsp;</span>Permuting the adjacency matrix.</a></span></li></ul></li></ul></div>"
]
},
{
"cell_type": "markdown",
"id": "19989cc4",
"metadata": {},
"source": [
"# CS4423 Assignment 1: Solution Template\n",
"\n",
"This is a template for your solution to the `networkx` questions on Assignment 1. \n"
]
},
{
"cell_type": "markdown",
"id": "4fc2a5c6",
"metadata": {},
"source": [
"### Collaboration Policy\n",
"\n",
"This is a homework assignment. You are welcome to collaborate with\n",
"class-mates if you wish. Please note:\n",
"* You may collaborate with at most two other people;\n",
"* Each of you must submit your own copy of your work;\n",
"* The file(s) you submit must contain a statement on the collaboration: who you collaborated with, and on what part of the assignment.\n",
"* The use of any AI tools, such as ChatGPT or DeepSeek is prohibited, and will be subject to disciplinary procedures. \n"
]
},
{
"cell_type": "markdown",
"id": "a5bd0014",
"metadata": {},
"source": [
"### Instructions \n",
"\n",
"This assignment involves a mix of questions, some of which require use of the `networkx` Python module, and some which you solve by hand. You can decide the best way to submit your work (e.g., do everything in Jupyter, or a combination of hand-written work and\n",
"Jupyter notebook). However:\n",
"* Any file you submit must include your name and ID number.\n",
"* All files must be in PDF format. To convert your notebook to `pdf` the easiest method maybe to first export as 'html', then open that in a browser, and then print to pdf."
]
},
{
"cell_type": "markdown",
"id": "eb8aa930",
"metadata": {},
"source": [
"### Preliminaries\n",
"\n",
"**Name:** Andrew Hayes\n",
"\n",
"**ID Number:** 21321503\n"
]
},
{
"cell_type": "markdown",
"id": "50688c85",
"metadata": {},
"source": [
"### Usual list of Python modules"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "d548d182",
"metadata": {},
"outputs": [],
"source": [
"import networkx as nx\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"opts = { \"with_labels\": True, \"node_color\": 'y' } # show labels; yellow noodes"
]
},
{
"cell_type": "markdown",
"id": "6d7af8b8",
"metadata": {},
"source": [
"## Q1: Bipartite Graphs\n",
"\n",
"### Define and draw the following graph\n",
"Let $G_1$ be the graph on the nodes $\\{0, 1, 2, 3, 4, 5, 6\\}$ with edges $0-1$, $1-2$, $1-4$, $1-6$, $2-3$, $3-4$, $4-5$, $5-6$.\\\n",
"Define this graph in `networkx` and draw it."
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "0cddf432",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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uCt79+5V3759tXPnTnXu3Fn//ve/nXqV3W63q127dtq6dSu76ADwKFyhhEO2bt2qBg0aKCUlRbt27aJMwq3VrVtXO3bs0KeffqpNmzapWrVqmjRpkmw2m1OObzKZNGvWLBUoUECvvPKK+HkegKegUOKuzZgxQ82bN1e9evW0Z88e1ahRw+hIgMN8fHzUvXt3HTlyRF26dNHgwYP14IMP6ttvv3XK8UuUKKFPP/1U69evZxcdAB6DQok7lpaWpr59+6pv377q06eP1q1bp+LFixsdC3CqwMBATZ8+XVFRUfL399cTTzyh7t276/fff3f42M8884z69eunt956S4cOHXJCWgAwFs9Q4o4kJCSoffv22rFjh6ZPn66ePXsaHQnIdRkZGZozZ46GDRumjIwMjRkzRr169VK+fPnu+pjXdtEpVKiQvvvuO3bRAeDWuEKJHDt48KAaNGig/fv3a/PmzZRJeA0fHx+99tprOnLkiNq2bat+/fqpQYMG2r17910fs1ChQlqwYIH27dun9957z4lpASDvUSiRI2vWrFHDhg0VEBCgPXv2qFGjRkZHAvJciRIlNGfOHH333Xey2+1q2LChXnvtNSUkJNzV8erXr6/33ntP48aNc9ozmgBgBG55I1t2u10ffvihhg0bptatW+vzzz9XkSJFjI4FGC49PV0zZszQyJEjlS9fPo0bN049evS44/3q2UUHgCfgCiWyZLVa9Y9//ENDhw7V8OHDtWLFCsokcFW+fPnUv39/HTlyRM8995xee+01Pfroo/rxxx/v+Diff/65zp07xy46ANwWhRK3FB8fr8aNG2v58uVatGiR3n///Tu+8gJ4g1KlSumzzz7Ttm3blJycrLCwMPXv31+JiYk5PsaNu+isWLEiF9MCQO7gljf+JioqSm3atJHJZNLKlStVv359oyMBbiEtLU1TpkzRu+++K39/f02YMEFdu3aVyWS67Xftdrvatm2r7du3a//+/U7doQcAchuXnHATi8WiRo0aqVy5coqKiqJMAncgf/78Gjx4sI4cOaKnnnpK3bt3V6NGjbR///7bftdkMuk///mP8ufPzy46ANwOhRKSMtfZGz58uMLDw9W+fXtt3bqVKyTAXQoODtbChQu1adMmnTt3Tg888IAGDRqkS5cuZfu9EiVK6JNPPtHXX3+t6dOnZ/k5m+2ykpJ+1qVL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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"G1 = nx.Graph()\n",
"G1.add_edges_from([(0,1), (1,2), (1,4), (1,6), (2,3), (3,4), (4,5), (5,6)])\n",
"nx.draw(G1, **opts)"
]
},
{
"cell_type": "markdown",
"id": "2e37a1e6",
"metadata": {},
"source": [
"### Determine if $G_1$ is bipartite.\n",
"If $G_1$ is bipartite, draw it in `networkx` with a two-colouring of the nodes. If not, explain why it is not bipartite."
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "a6d6c25a",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"if nx.is_bipartite(G1):\n",
" partition1, partition2 = nx.bipartite.sets(G1)\n",
" nodes = list(G1.nodes())\n",
" colours = ['r' if node in partition1 else 'b' for node in nodes]\n",
" positions = nx.bipartite_layout(G1, partition1) # optional extra, computing easy-to-understand positions for nodes in the bipartite graph\n",
" nx.draw(G1, node_color=colours, pos=positions, with_labels=True)\n",
" "
]
},
{
"cell_type": "markdown",
"id": "16b11144",
"metadata": {},
"source": [
"## Q2: A Network of friends\n",
" At a party with $n=6$ people, some people know each other\n",
" already while others don't. Each of the 6 guests is asked how many\n",
" friends they have at this party.\\\n",
" One person says they know all of the others.\\\n",
" One person says they know four of the others.\\\n",
" Two report that they know three of the others. \\\n",
" One person agrees they know two of the other guests, while\\\n",
" one person says they know only one other.\n",
" \n",
"### Define a graph in `networkx` that represents this scenario.\n"
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "769c264d",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"p1 = [(1,2), (1,3), (1,4), (1,5), (1,6)] # person who knows everyone else\n",
"p2 = [(2,1), (2,3), (2,4), (2,5)] # person who knows four of the others\n",
"p3 = [(3,1), (3,2), (3,4)] # knows three of the others\n",
"p4 = [(4,1), (4,2), (4,3)] # knows three\n",
"p5 = [(5,1), (5,2)] # knows two\n",
"p6 = [(6,1)]\n",
"\n",
"edges = p1 + p2 + p3 + p4 + p5 + p6\n",
"\n",
"G2 = nx.Graph()\n",
"G2.add_edges_from(edges)\n",
"nx.draw(G2, **opts)"
]
},
{
"cell_type": "markdown",
"id": "f76aacf2",
"metadata": {},
"source": [
"### Verify that the graph has the correct properties by displaying the diagonal of the square of the graphs adjacency matrix. \n",
"\n",
"_Hint_: `np.diag(X)` returns the entries on the main diagonal of $X$."
]
},
{
"cell_type": "code",
"execution_count": 44,
"id": "e09a9ffe",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[5 4 3 3 2 1]\n"
]
}
],
"source": [
"A = nx.adjacency_matrix(G2).toarray()\n",
"diagonal_of_square = np.diag(A@A)\n",
"\n",
"print(diagonal_of_square)\n",
"\n",
"# the diagonal of the square of the adjacency matrix tell you how many paths of length 2 start and end at each matrix\n",
"# in this situation, it tells us how many people each person knows\n",
"# we can throw an error if the diagonal of the square does not have the value we expect.\n",
"# we expect 5 connections for the first person, 4 for the second, 3, 3, 2, and 1\n",
"assert all(a == b for a,b in zip(diagonal_of_square, [5, 4, 3, 3, 2, 1]))"
]
},
{
"cell_type": "markdown",
"id": "8dccff32",
"metadata": {},
"source": [
"## Q3: Isomorphic graphs"
]
},
{
"cell_type": "markdown",
"id": "59339d77",
"metadata": {},
"source": [
"In `networkx` we can check if two (smallish) graphs, $G$ and $H$, are **isomorphic** by using the `nx.is_isomorphic()` function: `nx.is_isomorphic(G,H)` evaluates as `True` if they are isomorphic.\n"
]
},
{
"cell_type": "markdown",
"id": "82111bee",
"metadata": {},
"source": [
"### Self-complementary cycle graph\n",
"\n",
"\n",
"Use `networkx` to check which of the cycle graphs $C_3$, $C_4$, $\\dots$, $C_{10}$ are isomorphic to its own complement.\\\n",
"Notes:\n",
"* You can use the constructor `nx.cycle_graph(n)` to make $C_n$\n",
"* You can use the method `nx.complement(G)` to make construct the complement of the graph $G$.\n"
]
},
{
"cell_type": "code",
"execution_count": 49,
"id": "00b14230",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Is C3 isomorphic? False\n",
"Is C4 isomorphic? False\n",
"Is C5 isomorphic? True\n",
"Is C6 isomorphic? False\n",
"Is C7 isomorphic? False\n",
"Is C8 isomorphic? False\n",
"Is C9 isomorphic? False\n",
"Is C10 isomorphic? False\n"
]
}
],
"source": [
"for n in range(3,11):\n",
" graph = nx.cycle_graph(n)\n",
" complement = nx.complement(graph)\n",
" print(f\"Is C{n} isomorphic? {nx.is_isomorphic(graph, complement)}\")"
]
},
{
"cell_type": "markdown",
"id": "8e83a7ff",
"metadata": {},
"source": [
"### Graphs that are isomorphic to their line graphs.\n",
"\n",
"Use `networkx` to check that all cycle graphs $C_3$, $C_4$, $\\dots$, $C_{10}$ are isomorphic to their line graphs.\n",
"\n",
"You can use the `nx.line_graph()` function."
]
},
{
"cell_type": "code",
"execution_count": 53,
"id": "6506c686",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Is C3 isomorphic to its line graph? True\n",
"Is C4 isomorphic to its line graph? True\n",
"Is C5 isomorphic to its line graph? True\n",
"Is C6 isomorphic to its line graph? True\n",
"Is C7 isomorphic to its line graph? True\n",
"Is C8 isomorphic to its line graph? True\n",
"Is C9 isomorphic to its line graph? True\n",
"Is C10 isomorphic to its line graph? True\n"
]
}
],
"source": [
"for n in range(3,11):\n",
" graph = nx.cycle_graph(n)\n",
" line_graph = nx.line_graph(graph)\n",
" print(f\"Is C{n} isomorphic to its line graph? {nx.is_isomorphic(graph, line_graph)}\") # a cycle graph is always isomorphic to its line graph"
]
},
{
"cell_type": "markdown",
"id": "dd26ae6d",
"metadata": {},
"source": [
"## Q4: Bipartite Graphs"
]
},
{
"cell_type": "markdown",
"id": "73e51ef7",
"metadata": {},
"source": [
"Consider the following affiliation network, $G_4$, with $8$ people labelled $a$ to $h$,\n",
"and five foci (\"focal points\" of interaction) labelled $1$ to $5$: \n",
"\n",
"![bipartite graph](https://www.niallmadden.ie/2425-CS4423/GraphA1-1x.png)\n",
"\n",
"1. Create this graph in `networkx` and draw it with a two-colouring.\n",
"\n",
"2. Compute the adjacency matrix of $G$.\n",
"\n",
"2. Draw the projection on (just) the people, in which two people are joined by an edge if they have a common\n",
" focus. (You can do this by hand, or in `networkx`.)\n"
]
},
{
"cell_type": "code",
"execution_count": 59,
"id": "474fc87a",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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IiKd6oYbgn+O+HhISQn+eTqb9QrK2FhITw/uOb77XUhMDO45REREpFNdcYX3Iz6YhgyBmJZaXEYo6xWUAOPHgz1ILy0mBsaNC86xRUREJKTGj29rwbcJ+BOw4fzP+8///Ceg4ZJ72O1w990BGGQYsua9vGtroU+fFntR5uFd3X0C6Pm1368B/g2oAlKa2/n992HAgAAMVERERMLJ++/D977Xli1TgI+aee7SVURsLBw/Dldd1dHRhS9rzlBedRVMndriV4w8vK2Bel70+ynnf59yqZ1iYmDCBBWTIiIiFjVwINxzT1tuuPch3orhUo+Ub20dEwPTplmzmASrzlACnDrlvbq2trZdfSmbZbNB9+5w4ABcfbX/xxMREZGwVFPjLSFOn/bePcdfdru3dDhwwHudphVZc4YSvMXfK694/yva2n97pEv63e9UTIqIiFhccjKsWROYY9ls3lLk5ZetW0yClQtKgMxMWLfOO8/c0SVVFwrS3/5Wi3FERESixLhx3o/+CwVhR1woP9at85YkVmbtghK8y7XKyryLdNr7NyImBnr1gk2bYMqUoAxPREREwtOUKd4SoGfP9s9L2e1w7bVQXu4tRazO+gUlwMiRsH8/PPggdOvW8teNCzOSXbvCzJneCx7uvLNzxysiIiJh4c474eBBb0nQtWvbSohu3WDuXHjvPRgxonPHGyrWXZTTnDNnvNdWbt4MFRXwySdfPXfVVZCRAQ4H3H8/JCWFbJgiIiISXk6ehP/8Tygp8ZYQtbVfPXfNNfDDH3oL0EmT4PLLQzfOUIi+gvJi5855H3Fx3q8UIiIiIm3Q0ABNTd7bKcbHh3o0oaWCUkRERET8Eh3XUIqIiIhI0KigFBERERG/qKAUEREREb+ooBQRERERv6igFBERERG/qKAUEREREb+ooBQRERERv6igFBERERG/qKAUEREREb+ooBQRERERv6igFBERERG/qKAUEREREb+ooBQRERERv6igFBERERG/qKAUEREREb+ooBQRERERv6igFBERERG/qKAUEREREb+ooBQRERERv6igFBERERG/qKAUEREREb+ooBQRERERv6igFBERERG/qKAUEREREb+ooBQRERERv6igFBERERG/qKAUEREREb+ooBQRERERv6igFBERERG/qKAUEREREb+ooBQRERERv6igFBERERG/qKAUEREREb+ooBQRERERv6igFBERERG/qKAUEREREb+ooBQRERERv/x/P3DWQMwn8tMAAAAASUVORK5CYII=",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"G4 = nx.Graph()\n",
"G4.add_edges_from([('a', 1), ('a', 2), ('b', 3), ('c', 1), ('c', 5), ('c', 3), ('c', 2), ('d', 1), ('d', 4), ('e', 3), ('e', 2), ('f', 3), ('g', 3), ('h', 4)])\n",
"\n",
"\n",
"partition1, partition2 = nx.bipartite.sets(G4)\n",
"nodes = list(G4.nodes())\n",
"colours = ['r' if node in partition1 else 'b' for node in nodes]\n",
"positions = nx.bipartite_layout(G4, partition1)\n",
"nx.draw(G4, node_color=colours, pos=positions, with_labels=True)"
]
},
{
"cell_type": "code",
"execution_count": 64,
"id": "da91f1bf",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[0 1 1 0 0 0 0 0 0 0 0 0 0]\n",
" [1 0 0 0 0 1 0 1 0 0 0 0 0]\n",
" [1 0 0 0 0 1 0 0 0 1 0 0 0]\n",
" [0 0 0 0 1 0 0 0 0 0 0 0 0]\n",
" [0 0 0 1 0 1 0 0 0 1 1 1 0]\n",
" [0 1 1 0 1 0 1 0 0 0 0 0 0]\n",
" [0 0 0 0 0 1 0 0 0 0 0 0 0]\n",
" [0 1 0 0 0 0 0 0 1 0 0 0 0]\n",
" [0 0 0 0 0 0 0 1 0 0 0 0 1]\n",
" [0 0 1 0 1 0 0 0 0 0 0 0 0]\n",
" [0 0 0 0 1 0 0 0 0 0 0 0 0]\n",
" [0 0 0 0 1 0 0 0 0 0 0 0 0]\n",
" [0 0 0 0 0 0 0 0 1 0 0 0 0]]\n"
]
}
],
"source": [
"# 2. Adjacency matrix\n",
"A = nx.adjacency_matrix(G4).toarray()\n",
"print(A)"
]
},
{
"cell_type": "code",
"execution_count": 78,
"id": "62aca129",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAApQAAAHzCAYAAACe1o1DAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAdaJJREFUeJzt3XdUVNfCBfA9w4hUpSgq2FDBAhEbNooVEOwVe8Xee2yJNTE+E6PGjhWN3RgbAkZUsMSOokZEwYaNoiIOwsB8fxD5JCpt7swdYP/WesvEmTl3j3mJ23PvOUeiVCqVICIiIiLKJ6nYAYiIiIioYGOhJCIiIiKVsFASERERkUpYKImIiIhIJSyURERERKQSFkoiIiIiUgkLJRERERGphIWSiIiIiFTCQklEREREKmGhJCIiIiKVsFASERERkUpYKImIiIhIJSyURERERKQSFkoiIiIiUgkLJRERERGphIWSiIiIiFTCQklEREREKmGhJCIiIiKVsFASERERkUpYKImIiIhIJSyURERERKQSFkoiIiIiUgkLJRERERGphIWSiIiIiFTCQklEREREKmGhJCIiIiKVsFASERERkUpYKImIiIhIJSyURERERKQSFkoiIiIiUgkLJRERERGphIWSiIiIiFTCQklEREREKmGhJCIiIiKVsFASERERkUpYKImIiIhIJSyURERERKQSmdgBxKZQvINcHgml8gMkkuLQ168GmcxI7FhEREREBUaRLJRJSbcRE7MWcXHHkJz8AIDyk1cl0NOrAnNzL1hajoChYS2xYhIREREVCBKlUqnM+W2Fg1wehYiI4UhICEJGl1Zk8+6M101N3WBruw76+taaCUlERERUwBSZQhkT44vIyLFIT1cg+yL5XzJIpTJUq7YSlpY+6opHREREVGAViUL58OEiREXNVnkca+uFqFRplgCJiIiIiAqPQl8oY2J8ERExVLDxqlf3RblyQwQbj4iIiKigK9TbBsnlUYiMHPvF17ZsAVq0AN68yduY9+6NgVwepXo4IiIiokKiUBfKiIjh/z4zKZz0dAUiIoYLOiYRERFRQVZoC2VS0u1/V3MLWygBBRISgpCUdEfgcYmIiIgKpkJbKGNi1iI322zGxwMLFgDt2gFdugA//QS8e5fTp2SIiVkjREwiIiKiAq/QFsq4uGPIzezk998D5csD8+YBvXoBf/0FrFqV06cUiIvzFyImERERUYFXKE/KUSgS/z0BJ2deXkDPnhl/Xb8+8PQp4O8PTJsGSCRf/1xy8n0oFO94TCMREREVeYVyhlIuv4+sxyl+XdOmWf++ShUgJQVISMjpk0rI5ZH5iUdERERUqBTKQqlUfsj1e0uWzPr3uroZP6akCHsdIiIiosKqUBZKiaR4oboOERERkTYrlIVSX78agGwegBSE5N/rEBERERVthbJQymRG0NOrotZr6OlV5YIcIiIiIhTSQgkA5uZeUN8idhnMzT3VNDYRERFRwSJRKpW5Ww5dwCQl3calS3ZqG9/R8TYMDWuqbXwiIiKigqLQzlAaGtaCqakbhJ6lTE+XwMioOcskERER0b8KbaEEAFvbdZBKhSuUSiWQmqrE0KF3EBgYKNi4RERERAVZoS6U+vrWqFZtpWDjSSRAhQr/Q6lS38DDwwOjR49GUlKSYOMTERERFUSFulACgKWlD6ytFwoylrX1ItSqNQUBAQH47bffsHnzZtStWxcXLlwQZHwiIiKigqjQF0oAqFRpFmxtN0Aq1UPen6mUQSrVQ/XqvqhUaSYAQCqVYvTo0bh+/TrMzMzg5OSE2bNnIyU3x+sQERERFTKFdpX3l8jlUYiIGI6EhCBkFEtFNu/OeN3U1A22tuugr2/9xXcpFAr89NNPmDt3Lr755hv4+fnBzk59q8uJiIiItE2RKpQfJSXdRkzMWsTF+SM5+T6AT38JJNDTqwpzc09YWo7M9Wruq1evol+/frh//z4WLVqECRMmQEdHRy35iYiIiLRJkSyUn1Io3kEuj4RS+QESSXHo61fL9wk4ycnJmD17Nn755Re4uLhg69atqFy5srCBiYiIiLRMkS+U6nD69GkMGDAAcXFxWL58OQYNGgSJRN1nixMRERGJo0gsytG0Zs2a4caNG+jRoweGDBmCjh074sWLF2LHIiIiIlILzlCq2aFDhzB06FCkp6dj3bp16NKli9iRiIiIiATFGUo169ChA8LDw+Hi4oKuXbuif//+eP36tdixiIiIiATDGUoNUSqV8PPzw9ixY1GyZEls3rwZrVq1EjsWERERkco4Q6khEokE/fv3x82bN2FjY4PWrVtj/PjxeP/+vdjRiIiIiFTCGUoRpKen47fffsP06dNRqVIl+Pn5wdHRUexYRERERPnCGUoRSKVSjBs3DlevXoWxsTGaNGmC77//HqmpqWJHIyIiIsozzlCKLDU1FT/88AMWLFiAOnXqwM/PDzVr5u50HiIiIiJtwBlKkRUrVgzff/89Lly4gKSkJNStWxe//vor0tPTxY5GRERElCsslFqiQYMGuHr1KkaOHImJEyeiVatWePjwodixiIiIiHLEQqlF9PX1sWzZMvz111+4f/8+vvnmG2zZsgV8KoGIiIi0GQulFmrZsiVu3ryJLl26YNCgQejSpQtevnwpdiwiIiKiL+KiHC33xx9/YNiwYZBIJNiwYQM6duwodiQiIiKiLDhDqeU6d+6M8PBwNGnSBJ06dcKgQYPw5s0bsWMRERERZeIMZQGhVCqxZcsWjB8/HqamptiyZQtatGghdiwiIiIizlAWFBKJBIMGDcKNGzdgbW2Nli1bYtKkSZDL5WJHIyIioiKOM5QFUHp6OpYvX44ZM2agSpUq8PPzQ/369cWORUREREUUZygLIKlUiokTJ+Lq1avQ19dH48aNMX/+fB7dSERERKLgDGUBl5qaigULFuCHH35AvXr14Ofnh+rVq4sdi4iIiIoQzlAWcMWKFcP8+fNx9uxZvHnzBnXq1MHKlSt5dCMRERFpDAtlIdGoUSNcu3YNQ4cOxbhx4+Du7o7Hjx+LHYuIiIiKABbKQsTAwAArVqxAYGAg/vnnH3zzzTfw8/Pj0Y1ERESkViyUhZCbmxtu3ryJ9u3bo3///ujevTtiY2PFjkVERESFFBflFHL79u3DiBEjIJPJ4Ovri3bt2okdiYiIiAoZzlAWct26dcPNmzfRoEEDtG/fHkOHDkViYqLYsYiIiKgQ4QxlEaFUKrFx40ZMnDgRpUqVwtatW+Hq6ip2LCIiIioEOENZREgkEvj4+CAsLAzly5dH8+bNMXXqVCQnJ4sdjYiIiAo4zlAWQWlpafjll18we/Zs2NjYwM/PD3Xr1hU7FhERERVQnKEsgnR0dDB16lRcvnwZMpkMjRo1wg8//ACFQiF2NCIiIiqAWCiLsG+++QYXL17E1KlTMWfOHLi4uODevXtixyIiIqIChoWyiNPV1cWiRYsQGhqK2NhY1KlTB6tXr+Zm6ERERJRrLJQEAGjSpAmuX7+OAQMGYPTo0WjTpg2ePn0qdiwiIiIqAFgoKZOhoSFWr16N48ePIzw8HPb29ti5cydnK4mIiChbLJT0GQ8PD9y8eROenp7o3bs3evbsibi4OLFjERERkZbitkGUrd27d2PkyJEoXrw4Nm7cCC8vL7EjERERkZbhDCVly9vbG+Hh4ahbty7atm2L4cOH4927d2LHIiIiIi3CGUrKFaVSifXr12PSpEkoW7Ystm3bBicnJ7FjERERkRbgDCXlikQiwfDhwxEWFoayZcvCxcUF3377LT58+CB2NCIiIhIZZygpz9LS0rB06VLMmTMHNWrUgJ+fHxwcHMSORURERCLhDCXlmY6ODqZPn45Lly4BABwdHbF48WKkpaWJnIyIiIjEwEJJ+ebg4IBLly5h0qRJmDlzJlxdXXH//n2xYxEREZGGsVCSSooXL47FixfjzJkzeP78ORwcHLBu3Tpuhk5ERFSEsFCSIJydnXH9+nX06dMHI0aMgJeXF2JiYsSORURERBrAQkmCMTY2xrp163D06FFcv34d9vb22L17t9ixiIiISM1YKElwXl5eCA8PR+vWrdGzZ0/07t0b8fHxYsciIiIiNeG2QaQ2SqUSO3fuxOjRo2FgYIBNmzbBw8ND7FhEREQkMM5QktpIJBL07t0bN2/ehJ2dHdq0aYNRo0YhKSlJ7GhEREQkIM5QkkYolUqsWbMGU6ZMgZWVFbZt24YmTZqIHYuIiIgEwBlK0giJRIJRo0bh+vXrMDc3h7OzM2bNmoWUlBSxoxEREZGKOENJGqdQKPDTTz9h7ty5sLe3h5+fH+zt7cWORURERPnEGUrSOJlMhlmzZuHixYtITU1F/fr1sXTpUh7dSEREVECxUJJo6tati8uXL2PcuHGYNm0aWrRogaioKLFjERERUR6xUJKo9PT08L///Q+nTp3C48ePUbt2bfj6+vLoRiIiogKEhZK0gqurK8LCwuDt7Y2hQ4eiQ4cOeP78udixiIiIKBe4KIe0zuHDh+Hj44O0tDSsW7cOXbt2FTsSERERZYMzlKR12rdvj/DwcDRr1gzdunVDv3798Pr1a7FjERER0VdwhpK0llKpxI4dOzBmzBgYGxtj8+bNaN26tdixiIiI6D84Q0laSyKRoG/fvrh58yaqV68ONzc3jBs3Du/fvxc7GhEREX2CM5RUIKSnp2PVqlWYNm0aKlasCD8/PzRs2FDsWERERATOUFIBIZVKMXbsWFy7dg0lS5ZE06ZN8d133yE1NVXsaEREREUeZyipwFEoFPjhhx+wYMEC1K5dG35+fqhVq5bYsYiIiIoszlBSgSOTyfDdd9/h/PnzkMvlqFevHpYtW4b09HSxoxERERVJLJRUYDVo0ABXrlzByJEjMWnSJLRs2RLR0dFixyIiIipyWCipQNPX18eyZctw8uRJREVFoXbt2ti8eTOPbiQiItIgFkoqFFq0aIEbN26ga9euGDx4MDp16oQXL16IHYuIiKhI4KIcKnQOHjyIYcOGAQDWrVuHzp07i5yIiIiocOMMJRU6nTp1Qnh4OJo2bYouXbpg4MCBePPmjdixiIiICi3OUFKhpVQqsXXrVowbNw4mJibYsmULWrZsKXYsIiKiQoczlFRoSSQSDBw4EDdv3kTVqlXRqlUrTJgwAXK5XOxoREREhQpnKKlISE9Px4oVK/Dtt9/C2toafn5+aNCggdixiIiICgXOUFKRIJVKMWHCBFy9ehUGBgZo3Lgx5s2bx6MbiYiIBMAZSipyUlNTsXDhQixatAh169aFn58fatSoIXYsIiKiAoszlFTkFCtWDPPmzcO5c+fw9u1b1K1bF8uXL+fRjURERPnEQklFVsOGDXHt2jUMGzYMEyZMgJubGx49eiR2LCIiogKHhZKKNAMDAyxfvhxBQUGIiIjAN998Az8/Px7dSERElAcslEQAWrdujZs3b6Jjx47o378/unXrhlevXokdi4iIqEDgohyi/9i/fz+GDx8OHR0dbNiwAR06dBA7EhERkVbjDCXRf3Tt2hXh4eFo2LAhOnbsiCFDhuDt27dixyIiItJanKEk+gqlUolNmzZhwoQJKFWqFLZs2YJmzZqJHYuIiEjrcIaS6CskEgmGDBmCGzduoEKFCmjRogWmTJmC5ORksaMRERFpFc5QEuVCWloafv31V8ycORPVqlWDn58f6tWrJ3YsIiIircAZSqJc0NHRweTJk3HlyhXo6uqiUaNGWLhwIRQKhdjRiIiIRMcZSqI8SklJwfz58/Hjjz/C0dER27Ztg62trdixiIiIRMMZSqI80tXVxcKFC3H27FnExcWhTp06WLVqFY9uJCKiIouFkiifGjdujOvXr2PQoEEYM2YM2rRpgydPnogdi4iISONYKIlUYGhoiFWrVuH48eO4desW7O3tsWPHDh7dSERERQoLJZEAPDw8EB4ejrZt26Jv377o0aMHYmNj8z2eQvEOiYnX8fbt30hMvA6F4p2AaYmIiITFRTlEAtuzZw9GjhwJXV1d+Pr6om3btrn6XFLSbcTErEVc3DEkJz8A8Om/mhLo6VWBubkXLC1HwNCwllqyExER5QcLJZEaxMTEwMfHB/7+/hg6dCh+/vlnGBsbf/G9cnkUIiKGIyEhCIAMQHZbEWW8bmrqBlvbddDXt1ZDeiIiorxhoSRSE6VSiQ0bNmDSpEmwsLDA1q1b4eLikuU9MTG+iIwci/R0BbIvkv8lg1QqQ7VqK2Fp6SNobiIiorziM5REaiKRSDBs2DCEhYXB0tISzZo1w7Rp0/DhwwcAwMOHixARMRTp6cnIW5kEAAXS05MRETEUDx8uEjw7ERFRXnCGkkgD0tLSsHTpUsyZMwfVq1eHr29nyOULBBu/enVflCs3RLDxiIiI8oKFkkiDbty4gfHjvfHtt/9AVxeQSIQZVyrVg6PjbT5TSUREouAtbyINql27Nn75xQrFiknyVCa3bAFatPj66+npCkREDFc5HxERUX6wUBJpUFLSbbx58xekUqFvDCiQkBCEpKQ7Ao9LRESUMxZKIg2KiVmLjK1/1EGGmJg1ahqbiIjo69T1OxsRfUFc3DHktKL7/Hlg40bg0SPA3Bzo1Cm3oysQF+cPGxsVQxIREeURCyWRhigUif+egPN1V64As2cDdnbAnDlAejqwaxeQkJC7ayQn34dC8Q4ymZEAiYmIiHKHhZJIQ+Ty+8h6nOLnNm4EzMyApUsBXd2Mn3N0BHr1yu1VlJDLI2FsXEeFpERERHnDZyiJNESp/JDt63I5cPcu4OLy/2USAAwMgCZNhLsOERGR0FgoiTREIime7evv3mXc4jYz+/y1L/1cfq9DREQkNN7yJtIQff1qACT42m1vI6OMjc7j4z9/7Us/9yVKJTBq1ELUr++Mxo0bo27duihenAWTiIjUi4WSSENkMiPo6VVBcvL9L76urw/UqAGEhAAjRvz/be/37zNWfudGUpIJoqKeY9++GUhOToauri7q1KmDxo0bo3HjxmjUqBGsra0hEeqIHiIiIvDoRSKNundvHJ4+XYOvbR10+TIwfXrGKu8ePYC0tIxV3vHxwMuXQHBwdqPLYGU1EjY2K5CSkoIbN27gwoUL+Pvvv3HhwgVERkYCAEqXLp2lYDo6OqJEiRKCf1ciIio6WCiJNCgp6TYuXbLL9j3nzmWs9n78OOPZyY4dgQ8fgK1bcyqUgKPjbRga1vzia7Gxsbh48SIuXLiQWTTfvn0LiUQCOzs7NGrUKLNo1qxZEzo6Ovn9mkREVMSwUBJpWFiYOxISgpHTBud5I4OpaQs4OATm+hPp6em4e/duloJ58+ZNpKenw9jYGI6OjllmMi0sLATMS0REhQkLJZGGyeVRuHSpFtLTkwUbUyrVg6PjbejrW6s0zrt373D58uXMgnn+/Hm8ePECAGBtbZ2lYNapU4cLfoiICAALJZEoYmJ8ERExVLDx9PTmoHHj+YKN95FSqcSjR48yn8O8cOECrl69ig8fPkBXVxf16tXLcqu8UqVKXPBDRFQEsVASieThw0WIipqt8jjHj5fHqlWvcfDgQbRq1UqAZNlLSUlBWFhYllvl9+9nrFwvU6ZMloLZoEEDGBsbqz0TERGJi4WSSEQxMb6IjByL9HQF8vZMpQxSqQw2Nr+hRIme6NatG06ePAk/Pz/06NFDXXG/6tWrV5mzmH///Tf+/vtvJCYmQiqVws7OLsut8po1a0Iq5ZkKRESFCQslkcjk8ihERAxHQkIQMraGza5YZrxuauoGW9t1mc9MpqamYvDgwdixYwdWrFiBMWPGaCD516WlpeGff/7Jcqs8PDwcSqUSJUqUQMOGDTNnMhs1aoTSpUuLmpeIiFTDQkmkJZKSbiMmZi3i4vz/3fz80381JdDTqwpzc09YWo784tZA6enpmDZtGn7++WfMnj0b8+fP16rnGRMTEzMX/Hz838uXLwEAVatWzXKr3MHBAbqfHmhORERajYWSSAspFO8gl0dCqfwAiaQ49PWrQSYzytVnly5diqlTp8LHxwdr1qyBTKadB2IplUo8fPgwy7OYV69eRUpKCooXL4569epluVVesWJFrSrIRET0/1goiQqhbdu2YfDgwWjfvj1+//136Ovrix0pVz58+IDr169nuVUeFRUFAChbtmxmufy44MfIKHclm4iI1IuFkqiQOnbsGLp164YGDRrg0KFDMDExETtSvrx8+TJLwbx48SLevXsHqVQKe3v7zFnMxo0bo3r16lzwQ0QkAhZKokLswoULaNu2LSwtLREQEABLS0uxI6ksLS0Nd+7cyXKr/NatW1AqlShZsiQaNmyY5Va5ubm52JGJiAo9FkqiQu7OnTvw8PCAVCpFQEAAqlevLnYkwb19+xaXLl3KLJgXLlzAq1evAADVqlXLcqu8du3aXPBDRCQwFkqiIuDJkyfw8PDAixcvcOzYMTRs2FDsSGqlVCoRFRWV5Vb5tWvXkJqaCj09vSwLfho3bozy5ctzwQ8RkQpYKImKiPj4eLRv3x5hYWHYv38/PDw8xI6kUcnJybh+/XqWW+XR0dEAgHLlymUpmPXr14ehoaG4gYmIChAWSqIi5P379/D29sbx48exZcsW9OnTR+xIonr+/HmWE34uXryIpKQk6Ojo4Jtvvslyq9zW1pYLfoiIvoKFkqiIUSgUGD58ODZt2oRffvkFEydOFDuS1khLS8OtW7eyPIt5+/ZtAICJiQkaNWqUWTAbNmzIBT9ERP9ioSQqgpRKJWbNmoUff/wR06ZNw+LFi/kM4Ve8efMmc8HPx6IZGxsLALCxsclyq/ybb75BsWLFRE5MRKR5LJRERdjy5csxYcIEDBgwABs2bGAZygWlUokHDx5kKZjXrl2DQqGAnp4eGjRokOVWefny5cWOTESkdiyUREXczp07MWDAALi7u2PPnj0wMDAQO1KBI5fLce3atSyryh89egQAsLKyylIw69evz19jIip0WCiJCIGBgejSpQtq166Nw4cP89lAATx79ixLwbx06RLev38PHR0d1K5dO8vm67a2tnzkgIgKNBZKIgIAXL58GZ6enihdujQCAgJQoUIFsSMVKgqFInPBz8db5Xfu3AEAmJqaZs5gNmrUCA0bNoSZmZnIiYWhULyDXB4JpfIDJJLi0NevBpmMZ7ATFTYslESUKSIiAh4eHlAoFAgICECtWrXEjlSovX79GhcvXswykxkfHw8AqF69embJ/LjgRyaTiZw4d5KSbiMmZi3i4o4hOfkBgE9/m5FAT68KzM29YGk5AoaG/P8YUWHAQklEWcTExMDT0xOPHz/G0aNH0aRJE7EjFRlKpRKRkZFZCmZYWBgUCgUMDAxQv379LLfKraysxI6chVwehYiI4UhICAIgA6DI5t0Zr5uausHWdh309a01E5KI1IKFkog+8/r1a3Ts2BGXLl3Cnj170K5dO7EjFVlyuRxXr17Ncqv88ePHAIDy5ctnKZj169eHvr6+KDljYnwRGTkW6ekKZF8k/0sGqVSGatVWwtLSR13xiEjNWCiJ6IuSk5PRu3dvHDp0CL6+vhg4cKDYkehfT58+zXLCz6VLlyCXyyGTyeDg4JDlVnm1atXUvuDn4cNFiIqarfI41tYLUanSLAESEZGmsVAS0VelpaVh1KhRWL9+PRYvXoxp06ZxNbIWSk1NRXh4eJZb5Xfv3gUAmJmZZSmYDRs2hImJiWDXjonxRUTEUMHGq17dF+XKDRFsPCLSDBZKIsqWUqnE3LlzMX/+fEycOBFLly7lmdYFQEJCAi5evJjlVnlCQgIAoEaNGlluldvb2+drwY9cHoVLl2ohPT1ZsNxSqR4cHW/zmUqiAoaFkohyZfXq1RgzZgx69eqFzZs3Q1dXV+xIlAdKpRL37t3LUjDDwsKQlpYGAwMDODo6ZpnJLFeuXI5jhoW5IyEhGHl7ZjInMpiatoCDQ6CAYxKRurFQElGu7du3D3369EHz5s2xf/9+GBlxP8GC7P3797hy5UpmwTx//jxiYmIAABUqVMhyTnndunWzLPhJSrqNS5fs1JbN0fE2DA1rqm18IhIWCyUR5UlwcDA6duyIGjVq4OjRoyhdurTYkUhAT548yfIs5pUrVzIX/NSpUyezYFavHoB373ZC2NnJj2SwshoJG5sVahibiNSBhZKI8uzatWvw9PREyZIlERAQgMqVK4sdidQkNTUVN2/ezHKrPCIiAtu3A9ltg/n0KbB9O3DzJhAbCxgbAzY2gI8PUKVKztfV06uGxo3vCfdFiEitWCiJKF/u378PDw8PvH//HsePH0ft2rXFjkQa8vJlNG7dskZ2C/7DwoBz54BatQATEyAxEQgIAC5dAtavBypWzOkqEjg7v+UxjUQFBAslEeXbixcv4OnpiQcPHuDw4cNwcXEROxJpQGLidVy5UjdPn0lLA5RKYNAgoHFjYPTonD9Tv/41GBvXyV9IItKognEwLBFppTJlyuDUqVPo0qUL3NzcsGvXLnTq1EnsWKRmSuWHHN+Tlgbs3AmcOJFx+1vxyaOWjx4Jdx0i0g7cTI6IVFKiRAkcPXoUHTt2RNeuXbFhwwaxI5GaSSTFc3zPqlXA5s2AkxOwaBGwejWwdi1QtSrwIZc9MTfXISLtwBlKIlJZ8eLFsXPnTlhYWGDYsGF48eIFZs2axVN1Cil9/WoAJAC+/sTUiROAuzsw9D+H6Lx5A+RutynJv9chooKAhZKIBCGVSrFixQqULVsWs2fPxvPnz7F8+XLo6OiIHY0EJpMZQU+vCpKT73/1PRIJUKxY1p87fz5jxXd2q8M/0tOrygU5RAUICyURCUYikWDWrFmwsLDAiBEj8PLlS/j5+aF4cd66LGzMzb3w9OkafG0fysaNgePHM1ZzV6kCREQAu3cDudu2VAZzc08h4xKRmnGVNxGpxcGDB9GrVy80bdoUf/zxB0qUKCF2JBJQTiflvHsHrFmTMSspl2fsQTl0KLBxY8brv/6a/fg8KYeoYGGhJCK1CQkJQfv27VGlShX4+/ujTJkyYkciAfEsbyL6iKu8iUhtXFxcEBISgufPn8PJyQn373/9mTsqeGxt10EqFfbJKalUBlvbdYKOSUTqx0JJRGr1zTff4Ny5c9DR0YGTkxOuXbsmdiQSiL6+NapVWynomDY2v0Ff31rQMYlI/VgoiUjtKleujNDQUFSsWBHNmjXDyZMnxY5EArG09IG19UKVxvj44FVsbCeUKzdEgFREpGkslESkEaVLl8bJkyfRtGlTeHp6Yu/evWJHIoFUqjQLtrYbIJXqIe+bh8igo6OHK1dawtv7EPbt26eOiESkZiyURKQxRkZGOHToELp37w5vb2+sXr1a7EgkEEtLHzg63oapaYt/fyanYpnxuqlpCzg63sbEiUHw9vZGnz59cOLECbVmJSLhcZU3EWlceno6pkyZgmXLlmHOnDmYN28eT9UpRJKSbiMmZi3u3NkKY+O3yPqPVgI9vaowN/eEpeXILFsDpaSkoFOnTjhz5gxOnjyJhg0bajw7EeUPCyURiUKpVOJ///sfpk+fjmHDhmHVqlWQyXjWQmHSqlUrlClTAuvWfQ+l8gMkkuLQ16+W7Qk479+/h5ubG/755x+EhoaiZk3uRUlUEPCWNxGJQiKRYNq0adi8eTM2btyI7t27Izk5WexYJKCoqCiUL28DY+M6KFGiEYyN6+R4nKKBgQGOHDkCS0tLuLm54eHDhxpKS0SqYKEkIlENHDgQf/75JwICAuDh4YHXr1+LHYkEoFAo8OjRI1hb530LIFNTUwQEBEBXVxfu7u549eqVGhISkZBYKIlIdG3btsVff/2FmzdvwtXVFTExMWJHIhU9efIEaWlp+SqUAGBpaYnAwEC8efMGnp6eePv2rcAJiUhILJREpBWaNGmC0NBQJCQkwMnJCREREWJHIhVERUUBQL4LJQBUq1YNAQEBiIyMRKdOnfhIBJEWY6EkIq1Rq1YtnDt3Dvr6+nBycsKlS5fEjkT59LFQVqpUSaVxHBwccPjwYZw/fx69evWCQiHkueFEJBQWSiLSKhUqVEBoaChsbGzQokULBAYGih2J8iE6OhqWlpbQ09NTeSwXFxfs3bsXhw8fxvDhw8HNSYi0DwslEWkdMzMznDhxAs2bN0fbtm3x+++/ix2J8igqKkql293/1a5dO2zevBmbNm3Ct99+K9i4RCQMbvpGRFrJwMAAf/zxB4YNG4Y+ffrg1atXGD9+vNixKJeELpQA0K9fP8THx2PChAkwNzfHtGnTBB2fiPKPhZKItFaxYsWwadMmlClTBhMmTMDz58/xww8/8FSdAiAqKgotW7YUfNzx48cjNjYW06dPh7m5OYYMGSL4NYgo71goiUirSSQSLF68GGXKlMGkSZPw4sULrF+/nqfqaLHk5GTExMSgcuXKahl//vz5iI2NxbBhw2BmZobOnTur5TpElHv8LzIRFQgTJ06EhYUFBg4ciFevXmH37t0wMDAQOxZ9wcfTbYS+5f2RRCLBb7/9hvj4ePTs2RPHjx9HixYt1HItIsodLsohogKjT58+OHr0KIKDg+Hm5ob4+HixI9EXCLEHZU50dHTg5+eH5s2bo0OHDrh8+bLarkVEOWOhJKICxd3dHSdPnkRERARcXFzw5MkTsSPRf0RFRUFHRwfly5dX63V0dXWxf/9+2NnZwdPTE3fv3lXr9Yjo61goiajAadiwIUJDQ5GUlISmTZvizp07YkeiT0RFRaFixYoaec7VyMgIR48ehYWFBdzc3PD48WO1X5OIPsdCSUQFUvXq1XHu3DmYmJjA2dkZ58+fFzsS/UsdWwZlx9zcHIGBgZBKpXB3d0dsbKzGrk1EGVgoiajAsrS0xJkzZ2BnZ4dWrVrh6NGjYkciaL5QAoCVlRUCAwMRFxcHLy8vJCYmavT6REUdCyURFWgmJiYICAiAh4cHOnbsiG3btokdqcgTo1ACgK2tLY4fP45//vkHXbp0wYcPHzSegaioYqEkogJPX18fe/fuxeDBgzFgwAD873//EztSkfX27VvEx8eLUigBoF69ejh06BBCQkLQt29fpKWliZKDqKhhoSSiQkEmk2HdunWYM2cOpk2bhsmTJyM9PV3sWEVOdHQ0APVuGZST5s2bY/fu3Thw4ABGjRoFpVIpWhaiooIbmxNRoSGRSDB//nxYWFhg3LhxePHiBTZt2gRdXV2xoxUZmtiDMjc6duwIX19fDB48GKVKlcKiRYtEzUNU2LFQElGhM2bMGFhYWKBfv36IjY3Fvn37YGRkJHasIiEqKgr6+vooU6aM2FEwaNAgxMfHY8qUKTA3N8ekSZPEjkRUaLFQElGh1KNHD5QqVQqdOnXKXAFeqlQpsWMVelFRUahcuTIkEonYUQAAkydPRmxsLCZPngxzc3MMGDBA7EhEhRKfoSSiQqtly5Y4deoUoqOj4ezsnHnGNKnPx0KpTX744Qf4+PhgyJAhOHTokNhxiAolFkoiKtTq1auHs2fPIjU1FU2bNsXNmzfFjlSoibVlUHYkEgnWrl2Ljh07okePHjh9+rTYkYgKHRZKIir0qlWrhrNnz8LCwgIuLi4ICQkRO1KhpFQqtbJQAoCOjg5+//13ODs7o0OHDrh27ZrYkYgKFRZKIioSypYti9OnT6NevXpwd3fHn3/+KXakQic2NhZJSUlaWSgBoHjx4vjjjz9ga2uLNm3a4N69e2JHIio0WCiJqMgoUaIE/P390a5dO3Tp0gW+vr5iRypUtGXLoOwYGxvD398fpqamcHNzw9OnT8WORFQosFASUZFSvHhx7Nq1CyNGjMDQoUOxaNEibnwtkIJQKAGgVKlSCAoKQnp6Ojw8PBAfHy92JKICj4WSiIocHR0d/Pbbb5g/fz5mz56NcePG8VQdAURFRaFkyZIwNTUVO0qOKlSogMDAQDx//hxt27ZFUlKS2JGICjQWSiIqkiQSCebMmYN169Zh9erV6NWrFz58+CB2rAJNWxfkfE2NGjXg7++P8PBwdO3aFSkpKWJHIiqwWCiJqEgbNmwY9u3bhz///BNt27ZFYmKi2JEKrIJWKAHA0dERBw8eRHBwMPr374+0tDSxIxEVSCyURFTkde7cGYGBgbh8+TKaN2+Oly9fih2pQIqOji5whRIAWrVqhZ07d2Lv3r0YN24cn6klygcWSiIiAK6urjhz5gxiYmLg5OSEBw8eiB2pQElPT8fDhw8LZKEEgC5dumQ+/jB37lyx4xAVOCyURET/ql27Ns6dOweJRIKmTZvi+vXrYkcqMGJiYpCSklJgCyUA+Pj4YPHixZg/fz5WrFghdhyiAoWFkojoE9bW1jh79iwqVKgAV1dXBAcHix2pQPi4ZZC2neOdV9OnT8fUqVMxfvx47NixQ+w4RAUGCyUR0X+ULl0awcHBaNKkCdq0aYN9+/aJHUnrFZZCCQA//fQTBg8ejIEDB+Lo0aNixyEqEFgoiYi+wMjICIcPH0bXrl3Ro0cPrF27VuxIWi0qKgoWFhYwNDQUO4rKJBIJ1q1bh3bt2qFbt24IDQ0VOxKR1mOhJCL6Cl1dXWzfvh3jxo3DyJEjMXfuXK4A/oqCuGVQdmQyGXbu3InGjRujXbt2uHHjhtiRiLQaCyURUTakUimWLVuGH3/8EfPmzcPIkSO5V+EXFLZCCQB6enr4888/UbVqVXh4eOD+/ftiRyLSWiyUREQ5kEgk+Pbbb7Fp0yb4+vqiR48eSE5OFjuWVimMhRIASpQoAX9/f5QoUQLu7u549uyZ2JGItBILJRFRLg0aNAgHDx6Ev78/2rRpgzdv3ogdSSukpKTgyZMnhbJQAoCFhQUCAwPx4cMHeHh4ICEhQexIRFqHhZKIKA/atWuHEydO4MaNG2jWrBlnrAA8evQISqWy0BZKAKhUqRICAwPx9OlTtG/fHu/fvxc7EpFWYaEkIsqjpk2bIiQkBLGxsWjatCnu3bsndiRRfdwyqDAXSgCoVasWjh07huvXr6N79+5ITU0VOxKR1mChJCLKBzs7O5w7dw56enpwcnLC5cuXxY4kmujoaEilUlSsWFHsKGrXqFEj/PHHHwgKCsKgQYOQnp4udiQircBCSUSUTxUrVkRoaCiqVq2KFi1aICgoSOxIooiKikL58uVRrFgxsaNohJubG3bs2IHff/8dEyZM4FZSRGChJCJSibm5OU6cOAFXV1e0bdsWu3btEjuSxhXWFd7Z6d69O9asWYOVK1di4cKFYschEp1M7ABERAWdoaEhDh48CB8fH/Tq1QsvX77EuHHjxI6lMVFRUahZs6bYMTRu+PDhiIuLw6xZs2Bubo5Ro0aJHYlINCyUREQCKFasGLZs2YIyZcpg/PjxeP78ORYtWgSJRCJ2NLWLioqCp6en2DFEMWPGDMTGxmLMmDEwMzNDz549xY5EJAoWSiIigUgkEixZsgRlypTBlClT8OLFC6xbtw4yWeH9T21SUhJevnxZ5G55fySRSLB06VLExcWhX79+MDExQZs2bcSORaRxhfe/ckREIpk8eTLKlCmDQYMG4dWrV9i1axcMDAzEjqUW0dHRAAr/lkHZkUql8PX1RUJCArp27YoTJ06gSZMmYsci0iguyiEiUoO+ffvi8OHD+Ouvv+Du7o74+HixI6lFUdmDMifFihXD7t27Ub9+fbRt2xbh4eFiRyLSKBZKIiI1adOmDU6ePIl//vkHrq6uePLkidiRBBcVFQVdXV1YWlqKHUV0+vr6OHz4MCpWrAh3d/fMsk1UFLBQEhGpUaNGjRAaGorExEQ0bdoUd+7cETuSoKKiolCpUiVIpfztBABKliyJgIAAGBoawt3dHS9evBA7EpFG8L8ARERqVqNGDZw7dw4lS5aEs7Mz/v77b7EjCaYo7kGZkzJlyiAwMBBJSUlo06YN3rx5I3YkIrVjoSQi0gArKyucOXMGtWrVQsuWLeHv7y92JEGwUH6ZtbU1AgMDER0djQ4dOkAul4sdiUitWCiJiDTE1NQUgYGBaN26NTp06IBt27aJHUklSqWShTIb9vb2OHbsGC5fvgxvb28oFAqxIxGpDQslEZEG6evrY//+/RgwYAAGDBiApUuXih0p316/fo23b9+yUGajSZMm2L9/P/z9/eHj44P09HSxIxGpBfehJCLSMJlMhg0bNqBs2bKYOnUqnj9/jiVLlhS4hS3cMih32rRpg23btqFPnz4wMzPDzz//XCROUKKihYWSiEgEEokECxcuzDyq8eXLl9i4cSOKFSsmdrRcY6HMvV69eiEhIQGjR49GqVKlMHPmTLEjEQmKhZKISERjx46FhYUF+vXrh9jYWOzduxeGhoZix8qVqKgoGBkZwdzcXOwoBcKoUaMQGxuLWbNmwdzcHMOHDxc7EpFgWCiJiETm7e0Nc3NzdO7cGa1atcKRI0dQqlQpsWPlKCoqCpUrV+bt2zyYM2cOYmNjMXLkSJiZmaF79+5iRyISRMF6YIeIqJBq3bo1Tp06hQcPHsDZ2RkPHz4UO1KOuMI77yQSCX799Vf06tULffr0QVBQkNiRiATBQklEpCXq16+Ps2fPIiUlBU5OTlp/HjQLZf5IpVJs2bIFrVu3RufOnQvVRvdUdLFQEhFpERsbG5w7dw6lSpWCi4sLQkNDxY70RUqlEtHR0SyU+VSsWDHs27cPderUgZeXF27fvi12JCKVsFASEWmZsmXL4vTp06hTpw7c3Nxw6NAhsSN95vnz50hOTmahVIGBgQEOHz4MKysruLu7F4jHHIi+hoWSiEgLlSxZEv7+/mjbti06d+6MjRs3ih0pC24ZJAxTU1MEBARAV1cX7u7uePnypdiRiPKFhZKISEvp6elh9+7dGDZsGHx8fPDjjz9CqVSKHQsAC6WQypUrh6CgILx58waenp54+/at2JGI8oyFkohIi+no6GD16tWYO3cuZs6ciQkTJmjF8X1RUVEwNzeHsbGx2FEKhapVqyIgIAD3799Hx44dkZycLHYkojxhoSQi0nISiQTff/891qxZg99++w19+vRBSkqKqJm4wlt4Dg4OOHLkCC5cuIBevXpBoVCIHYko11goiYgKiBEjRmDv3r04cOAA2rZti8TERNGycIW3ejg7O2Pfvn04fPgwhg0bpjWPOBDlhIWSiKgA6dKlCwICAnDx4kW0aNFCtEUcnKFUn7Zt22LLli3YvHkzpk+fLnYcolxhoSQiKmCaN2+OM2fO4OnTp3BycspcIKMpCoUCjx49YqFUo759+2L58uX43//+hyVLlogdhyhHLJRERAWQg4MDzp49CwBo2rQpwsLCNHbtJ0+eIC0tDZUrV9bYNYuicePGYc6cOZg+fTp8fX3FjkOULRZKIqICqkqVKjh79iysrKzg6uqK06dPa+S63DJIc+bNm4eRI0di+PDhOHDggNhxiL6KhZKIqACzsLBAcHAwGjZsCA8PD42Ujo+FslKlSmq/VlEnkUiwcuVKdO/eHb169cLJkyfFjkT0RSyUREQFnLGxMY4ePYrOnTujW7duWLt2rVqvFxUVBUtLS+jp6an1OpRBR0cH27ZtQ/PmzdGxY0dcvnxZ7EhEn2GhJCIqBHR1dbFjxw6MGTMGI0eOxLx589S25QxXeGuerq4uDhw4AHt7e3h6euKff/4ROxJRFiyURESFhFQqxfLly/HDDz9g7ty5GD16NNLS0gS/DgulOAwNDXH06FGUKVMG7u7uePz4sdiRiDKxUBIRFSISiQQzZszAxo0bsW7dOnh7ewt+jB8LpXjMzMwQEBAAqVQKd3d3xMbGih2JCAALJRFRoTR48GD88ccfOHr0KDw9PfHmzRtBxpXL5Xj27BkLpYisrKwQFBSEuLg4eHl5iXpiEtFHLJRERIVUhw4dEBQUhOvXr6NZs2Z49uyZymM+fPgQALcMEpuNjQ0CAgJw9+5ddO7cGR8+fBA7EhVxLJRERIWYs7MzQkJC8OrVKzg5OSEyMlKl8aKjowGwUGqDunXr4tChQwgNDUWfPn3U8rwsUW6xUBIRFXL29vY4d+4cdHV10bRpU1y5ciXfY0VFRUEmk6F8+fICJqT8atasGfbs2YODBw9i5MiRalvZT5QTFkoioiKgUqVKCA0NRZUqVdC8eXOcOHEi159VKN4hMfE63r79G7GxF2BjUx46OjpqTEt50aFDB2zcuBEbNmzArFmzxI5DRZREyT/OEBEVGUlJSejevTtOnDgBPz8/eHt7f+V9txETsxZxcceQnPwAwP//VqFUAvr6VWFu7gVLyxEwNKylofSUnV9++QWTJ0/G0qVLMXnyZLHjUBHDQklEVMSkpqZi8ODB2LFjB5YvX46xY8dmviaXRyEiYjgSEoIAyAAoshkp43VTUzfY2q6Dvj6fqxTbzJkz8eOPP2Lz5s0YOHCg2HGoCJGJHYCIiDSrWLFi2Lp1K8qUKYNx48bhxYsXWLBgAZ4924jIyLFIT/9YIrMrk///ekJCMC5dqoVq1VbC0tJHrdkpe4sWLUJsbCx8fHxgamqKjh07ih2JigjOUBIRFWFLly7F1KlTsWxZfdSpk//FOh9ZWy9EpUp8jk9MaWlp8Pb2xpEjRxAQEIBmzZqJHYmKABZKIqIi7sCBITAz2yTYeNWr+6JcuSGCjUd59+HDB7Rt2xYXL17E6dOnUbduXbEjUSHHQklEVITJ5VG4dKkW0tKSIZEIM6ZUqgdHx9t8plJkiYmJaNWqFaKjoxEaGgpbW1uxI1Ehxm2DiIiKsIiI4UhPVwhWJgEgPV2BiIjhwg1I+WJsbIxjx47B3Nwc7u7uePr0qdiRqBBjoSQiKqKSkm7/u5o7p8U3eaVAQkIQkpLuCDwu5VWpUqUQGBiI9PR0uLu7Iz4+XuxIVEixUBIRFVExMWuhvs0+ZIiJWaOmsSkvKlSogMDAQLx8+RJeXl549+6d2JGoEOIzlERERdSFC9WQnHw/V+999AjYuhW4dg149w4wNQUcHIApUwBd3S9/Rk+vGho3vidgYlLF5cuX0aJFCzRt2hSHDx+G7tf+wRHlA/ehJCIqghSKxH9PwMlZZCQwbhxQsiQwcCBQvjwQFwecOwcoFF8vlMnJ96FQvINMZiRccMq3Bg0a4M8//4Snpyf69++PHTt2ZHuEpkLxDnJ5JJTKD5BIikNfvxr/WdJXsVASERVBcvl9fHqcYnZWrwZ0dIA1awATk///eTe3nD6phFweCWPjOvkLSYJr2bIldu7cie7du8PU1BSrV6+G5JMVWdkduQlIoKdXhUdu0hfxGUoioiJIqfyQq/clJwNhYUDz5lnLZG5FRt7G8+fPkZqamvcPk1p06dIF69evx9q1a/H9998DyNg+KizMHZcu2eHp0zX/Pgrx3z9wKJGcfB9Pn67BpUt2CAtzh1wepfH8pJ04Q0lEVARJJMVz9b7ERCA9HShdOn/X6d69D+7/+5imiYkJSpcujVKlSmX++Olf//dHY2PjLLNnJJwhQ4YgLi4O06dPh41NBCpV+pNHbpJKWCiJiIogff1qACTI6bZ3iRKAVAq8epWfq0iwbVsQYmOTEBsbi1evXmX5MTw8PPPvExMTP/u0rq5utoXzvz+am5ujWLFi+QlaJE2bNg0lSx5GhQq7kZaGfOxFqvh3z9GhSE19wSM3izgWSiKiIkgmM4KeXpUcV3kXL56xmvv0acDHJ2NhTm7p6VVF48atcvXeDx8+IC4u7rPS+emPL168yCyhsbGxUCg+n0n70ixodj8aGRkV2VnQmBhfVK8eCiA/ZTKrqKjZ0NUtyyM3izBuG0REVETduzcOT5+uQU63OD+u8jY1BXr1AqysgIQE4OxZYPJkwMDg88+kpQEPH9ZBo0bbYWdnJ3h2pVKJN2/eZFtA//vj12ZBcyqe//1rmazgz8V8PHIzPT1ZsDF55GbRxkJJRFREJSXdxqVLuSt7Dx8Cmzdn7EMplwNmZkDdusDEiV/fNmjiRFNcv56AJk2awMfHB97e3jA0NBTwG+RNbmZBP/2xMM+ChoW5IyEhGMKekiSDqWkLODgECjgmFRQslERERZg6i0XNmkdw6NAh+Pr6IjAwEEZGRujVqxd8fHzQoEEDrStZ/yXULGjx4sVzXID06Y/m5uZqnQXNyx8k8sPR8TYMDWuqbXzSTiyURERFmKZufUZHR2Pz5s3YtGkTnjx5AgcHB/j4+KBPnz4wNTUV7NpiE2oW1NTUNNe34fM6C5rbRx2ePMmYlb56FUhKAsqVAzp1Ajp3zu5TMlhZjYSNzYpcZaHCg4WSiKiIi4nxRUTEUMHGq17d96uLM9LS0hAQEABfX18cPnwYMpkM3bp1g4+PD1xdXbV+1lJoYsyCvnnTHqmp0dnmio4GxowBypQBvL0zHnG4dAnYtw/o3x8YMODrn+WRm0UTCyUREeHhw0WIipqt8jgnT1bBzJm3oKenl+N7nz9/jq1bt8LX1xeRkZGwsbGBj48PBgwYgDJlyqicpbBSZRZUXx84ciRjK6jsTJuWUSo3bwY+fex1xQrg6NGMYmls/LVPS+Ds/JbHNBYxLJRERAQgY6YyMnLsvxtc5+WZShmkUhmUynFo02YFPD09sWfPnlw/B6hUKnHmzBls2LAB+/btQ1paGtq3b4+hQ4fC3d092/OmKWefzoK+fHkOqakDs31/Sgrg5QV06ACMHp31tcuXgW+/BRYvBho1+voY9etf45GbRQwLJRERZZLLoxARMRwJCUHI2Ko4u2KZ8bqpqRtsbddBX98aR44cQadOnTBgwAD4+vrm+RZ2QkICduzYgQ0bNuDGjRuoUKECBg8ejEGDBqFSpUoqfDMCgLdv/8bVq42zfc+rV0CPHtmPM2MG4O7+9dfr1buAEiWyaZxU6LBQEhHRZ5KSbiMmZi3i4vw/O9dZqQRSU0vD2ronLC1Hfraid/v27ejXrx+mTp2KJUuW5Ov6SqUSly9fhq+vL37//XckJSXB3d0dPj4+6NChA3S/tlcRZSsx8TquXKmb7XuSk4G2bTMKY6dOX35P2bLZb3LPGcqih4WSiIiypVC8g1weCaXyAySS4nBx8Yazsxt+++23r35mxYoVGD9+PBYvXozp06erdP13795hz5498PX1xfnz51G6dGkMGDAAQ4YMQY0aNVQau6hRKN4hNLQEcjpyc8oU4PVrYM0aIO+nWfIZyqKIhZKIiPKkZ8+eiImJwZkzZ7J93/fff4/58+dj/fr1GDpUmFXk4eHh2LhxI7Zt24b4+Hi4uLjAx8cH3bp1g8GXjuyhz1y4UC3HIzejozNOR7KyAjp2zJiRfP8eePoUOH8e+OWXr3+Wq7yLphzWeREREWXl4OCAGzduIKf5iLlz52L06NEYMWIE9u/fL8i17e3tsWzZMsTExGDXrl3Q1dXFgAEDYGlpidGjR+PatWuCXKcwMzf3Qsbzr19XuTKwfj1gbQ1s3AhMnQr8738ZZ7rXq5fdJ2UwN/cUMC0VFJyhJCKiPDl69CjatWuHqKgoVK5cOdv3pqeno2/fvti/fz+OHj2K1q1bC57nwYMH2LhxIzZv3oxnz56hXr16GDp0KHr16oWS2T3oV0TxpBxSB85QEhFRnjg4OAAAwsLCcnyvVCrFli1b0LJlS3Tq1AkXL14UPE+VKlWwaNEiPHr0CIcOHYKVlRVGjx6NcuXKYeDAgTh79myOs6lFiaFhLZiaugEQejsmGUxN3VgmiygWSiIiyhMrKyuYmZnhxo0buXq/rq4u9u/fDwcHB3h6euLOnTtqySWTydC+fXscOnQIjx49wuzZs3HmzBk4OzujVq1a+Pnnn/Hq1Su1XLugKV36R6SmpkOonq1UAlKpDLa264QZkAocFkoiIsoTiUQCBweHXM1QfmRgYIAjR47AysoKbm5uePjwoRoTZpTemTNnIjIyEidOnECdOnUwc+ZMWFlZoUePHggMDER6erpaM2irx48fo1Wrvti0yQhCnXQpkQB377aBnl5lYQakAoeFkoiI8qx27dp5KpQAYGpqioCAABQvXhxubm54+fKlmtL9P6lUilatWmHnzp2IiYnBkiVLcOvWLXh4eKBKlSpYsGABnjx5ovYc2uLu3btwcnKCXC7H/PlXYG29UJBxo6NbY9iwg5g8eXKRLepFHQslERHlmYODA+7fv493797l6XPlypVDUFAQEhMT0aZNG7x9+1ZNCT9nbm6OCRMmIDw8HOfOnUOrVq2wePFiVKpUCe3atcPBgweRmpqqsTyadvXqVTg7O8PY2Bhnz56FjY0NKlWaBVvbDZBK9ZDTyu/PySCV6qF6dV8MHBiE3377DcuWLcOQIUMyzw6nooOFkoiI8szBwQFKpRLh4eF5/myVKlUQEBCAqKgodOjQAXK5XA0Jv04ikaBJkybYuHEjnj17hjVr1uDly5fo3LkzKlasiBkzZiAyMlKjmdTt1KlTaN68OapUqYIzZ87Aysoq8zVLSx84Ot6GqWmLf38mp2KZ8bqpaQs4Ot5GuXJDAACjR4/G9u3b4efnhx49eiA5OVkN34S0FbcNIiKiPEtOToaRkRFWrVqF4cOH52uMs2fPws3NDW5ubti/fz9ksrzOkAkrLCwMGzduhJ+fH16/fo3mzZtj6NCh6NKlC/T09ETNpoo///wT3t7ecHZ2xsGDB2Fk9PUTbLI7chOQQE+vKszNPb945OZHR44cQffu3dG0aVMcPHgQxsbGwn4h0koslERElC92dnZo1qwZVq9ene8x/P390aFDB/Tp0webNm2CVCr+jTO5XI4DBw7A19cXp06dgqmpKfr27YuhQ4fim2++ETtenmzduhVDhgxBp06dsGPHDhQvXjzXn71yJRTe3i74/fctqFnTAfr61XJ9nOKZM2fQvn17VK9eHf7+/jA3N8/vV6ACQvx/c4mIqED6eGKOKjw9PbFt2zZs27YNU6ZM0Yr9IvX19dGnTx8EBwcjIiICw4YNw549e1C7dm00atQIGzZsQGJiotgxc7Rs2TIMHDgQgwYNwu7du/NUJgFAoSiG+/cBPb26MDauk6ezuV1dXREcHIzo6Gi4urri6dOneY1PBQwLJRER5cvHQqnqqt5evXph5cqVWLZsGX788UeB0gnDxsYGixcvxuPHj3HgwAGUKlUKI0aMQLly5eDj44MLFy5oRQn+lFKpxOzZszFp0iRMnz4d69evh45O3jcx/7hAqVixYvnKUa9ePYSGhiIxMRHOzs6F7rlUyoqFkoiI8qV27dpITExEdHS0ymONHj0a8+bNw6xZs7BunfZtjl2sWDF07twZR48eRXR0NKZNm4agoCA0adIEtWvXxvLlyxEXFyd2TKSlpWH06NFYtGgRfvrpJyxevBiSfG42+bFQ6urq5juPra0tzp49i+LFi8PZ2TnPW01RwcFCSURE+fLxCEZVb3t/NGfOHIwbNw4jR47Enj17BBlTHSpUqIDvvvsODx48QEBAAGrUqIGpU6fC0tISvXr1wsmTJ0XZizElJQV9+vTBunXr4Ovri2nTpqk8HpD/GcqPKlSogJCQEFhZWaFZs2Y4e/asSuORdmKhJCKifClXrhxKlSol2KyTRCLBsmXL0KdPH/Tt2xcBAQGCjKsuOjo6cHd3x969e/HkyRP88MMPuHbtGlq1agVbW1v8+OOPePbsmUayJCUloWPHjvjjjz+wd+9eDBkyROUxVb3l/anSpUsjODgYderUgZubG44fP67ymKRdWCiJiChfJBJJvk7MyY5UKsWmTZvg7u6OLl264MKFC4KNrU4WFhaYPHky7ty5g5CQEDg7O2PBggWoUKECOnbsiCNHjqhts++EhAS4u7sjJCQER48eRZcuXQQZV8hCCQAlSpSAv78/WrdujQ4dOmD37t2CjEvagYWSiIjyLa9neudGsWLFsGfPHtSrVw9eXl752jxdLBKJBM7OztiyZQtiYmKwcuVKPH78GO3bt0elSpUwe/ZsREVFCXa9Z8+ewdXVFXfv3sXJkyfRunVrwcYW4hnK/9LX18f+/fvh7e2NXr16Yf369YKNTeJioSQionxzcHDAgwcPBN9Gx8DAAIcPH0bFihXh7u4uaAnTFBMTE4wcORJXr17FlStX0LFjR6xcuRJVqlSBm5sbdu/ejQ8fPuR7/Pv378PJyQkJCQk4c+YMGjZsKGB64Z6h/K9ixYph69atGDNmDIYPH47FixcLOj6Jg4WSiIjy7ePCnJs3bwo+tomJCY4fPw4DAwO4u7vjxYsXgl9DU+rVq4fVq1fj2bNn2LJlC5KTk9GzZ09YWVlh0qRJuH37dp7Gu3HjBpydnSGTyXD27FnUqlVL8MxC3/L+lFQqxfLly/H9999jxowZmD59utZtv0R5w0JJRET5VrNmTchkMrVtB1O2bFkEBQUhKSkJHh4eeP36tVquoykGBgYYMGAAQkJCcOfOHQwcOBB+fn6ws7ODk5MTNm/ejKSkpGzHOHv2LJo1a4Zy5cohNDQUlSpVUkvWj4UyP3tY5oZEIsHcuXPx66+/YsmSJRg2bBjS0tLUci1SPxZKIiLKt+LFi6NGjRpq3V/Q2toagYGBePToETp06ID379+r7VqaVKNGDSxduhRPnz7F3r17YWRkhCFDhqBcuXIYMWIELl++/Nms3fHjx+Hm5obatWsjODgYFhYWasuXkpICXV3dfO9jmVvjx4/H1q1bsXnzZvTs2VOlxwBIPCyURESkEiGOYMyJvb09jh49iitXrsDb2ztz9qww0NXVRbdu3RAQEIAHDx5g4sSJOHr0KBwdHVG3bl2sWrUKCQkJ2LVrF9q3b4/WrVvj+PHjKFmypFpzpaamquV295f0798fBw4cwOHDh9G+fXu8e/dOI9cl4bBQEhGRSoQ6gjEnTZo0wYEDBxAQEIDBgweLsnm4ulWuXBnz5s1DdHQ0jh49iipVqmDChAkoU6YMevXqhZYtW2Lfvn3Q19dXexZNFkoA6NChA/z9/XH+/Hm4ubkhPj5eY9cm1bFQEhGRSmrXro2kpCQ8ePBA7dfy8PCAn58fduzYgYkTJxbahRw6Ojrw8vLC/v37MWnSJKSmpqJkyZIIDAyEvb09lixZovZFSpoulADQokULBAcH4969e2jWrJnGNoYn1bFQEhGRSoQ+gjEn3t7eWL16NVasWIGFCxdq5JpiSE9Px6RJk7BkyRLMnz8f8fHxCA4ORsOGDfHdd9+hfPny6Nq1K/z9/dWymOXjM5Sa1qBBA4SEhCAhIQHOzs4a+YMKqY6FkoiIVFK2bFlYWFiodWHOf40YMQILFy7Ed999h9WrV2vsupqSmpqKQYMGYfny5Vi1ahXmzJkDqVSK5s2bY/v27Xj27Bl++eUX3Lt3D15eXrC2tsbcuXPx8OFDQTNoeobyo5o1a+Ls2bPQ0dGBs7NzgdrcvqhioSQiIpUJfQRjbsycORMTJ07EmDFjsHPnTo1eW53kcjm6du2K33//HTt27MCoUaM+e4+pqSnGjh2LsLAwXLx4EW3atMHPP/8Ma2treHp6Yv/+/Zkbk+eXmIUSACpVqoSQkBCUKVMGrq6uBeYYzqKKhZKIiFSmjiMYcyKRSLB06VL0798f/fv3h7+/v0avrw5v3ryBp6cnTpw4gUOHDqFXr17Zvl8ikcDR0RHr16/Hs2fP4Ovrizdv3qBbt26oUKECpk2bhrt37+YrS2pqqii3vD9VpkwZBAcHw87ODq1bt0ZQUJCoeejrWCiJiEhlDg4OiI6Oxps3bzR6XalUCl9fX3h5eaFr1644d+6cRq8vpJcvX6JFixa4fv06goKC4OnpmafPGxkZYfDgwTh37hxu3ryJ3r17Y+PGjahRowZcXV2xbdu2PO3hmZKSIuoM5UcmJiYICAiAq6sr2rZti/3794sdib6AhZKIiFSmziMYcyKTybBr1y44Ojqibdu2GlscJKSHDx/CxcUFMTExOHPmDJycnFQaz97eHsuWLcPTp0+xc+dO6OrqYsCAAbC0tMTo0aNx7dq1HMcQ+5b3pwwMDHDw4EF07doVPXr0wMaNG8WORP/BQklERCqrUaMGihUrpvHb3h/p6+vj0KFDsLa2hoeHR4FaGXznzh04OzsjNTUVZ8+eRe3atQUbW09PDz179sSJEycQGRmJ0aNH448//kC9evXQoEEDrF27Fm/fvv3iZ7WpUAIZG8Bv374dw4cPh4+PD5YuXSp2JPoECyUREalMV1cXNWvWFHV2sGTJkjh+/DiMjY3h5uZWIPYwvHTpElxcXGBiYoLQ0FBUrVpVbdeqWrUqFi1ahEePHuHPP//MnK0sV64cBg0ahLNnz2bZ11OsbYOyo6Ojg1WrVmHWrFmYOnUqZs6cWWj3Ii1oWCiJiEgQYizM+S8LCwsEBQXhw4cP8PDwQEJCgqh5svPXX3+hZcuWsLW1xenTp2FpaamR68pkMnTo0AGHDh3Co0ePMHPmTJw+fRrOzs6ws7PDL7/8glevXmndDOVHEokECxcuxNKlS/Hjjz9i5MiRatmHk/KGhZKIiARRu3Zt3Lx5U/Tf3CtVqoTAwEA8ffoU7dq1y9NCFE05cOAAvLy84OTkhKCgIJiZmYmSw8rKCrNmzUJkZCROnDgBBwcHzJgxA1ZWVjh37hzevHmjtUdcTp48GRs3bsSGDRvQp08flbdJItWwUBIRkSAcHBzw/v173L9/X+woqFWrFvz9/REWFoZu3bppVdnYtGkTunfvjs6dO+PQoUMwNDQUOxKkUilatWqFnTt34unTp1iyZAnevn2LixcvomrVqliwYAGePHkidszPDB48GHv37sUff/yBTp06aeUfHooKiZIPHxARkQBevnyJMmXKYO/evejWrZvYcQAAJ06cgJeXF7p164bt27dDKhV3HmXp0qWYOnUqhg8fjlWrVkFHR0fUPNlxc3NDeno6KleujF27diE5ORmenp4YOnQovLy8tOp2+IkTJ9CpUyfUqVMHR44cgYmJidiRihzOUBIRkSAsLCxQtmxZ0Z+j/FTr1q3x+++/Y/fu3Rg3bpxoCziUSiW+/fZbTJ06FbNmzcKaNWu0ukwCGau8y5Yti40bN+LZs2dYs2YNXr58iU6dOqFixYqYMWMGIiMjxY4JIOOf819//YXbt2+jefPmePHihdiRihwWSiIiEowYRzDmpFu3bli7di1WrVqFefPmafz6aWlpGD58OH766Sf88ssvWLhwISQSicZz5NWni3JKlCiBYcOG4eLFi7h+/Xrmr6mNjQ1atmyJ33//HcnJyaLmbdSoEc6cOYOXL1/C2dkZ0dHRouYpalgoiYhIMNqw0vtLhg4dih9//BHz5s3DihUrNHbdDx8+oGfPnti0aRM2b96MiRMnauzaqvraKm8HBwesXLkSMTEx2L59O9LT09GnTx9YWlpi/Pjxomxu/5G9vX3m9kdOTk64ffu2aFmKGhZKIiISjIODAx49eoTXr1+LHeUz06dPx5QpUzB+/Hhs375d7dd79+4d2rdvj8OHD2P//v0YOHCg2q8ppJz2odTX10efPn1w6tQp3L17F0OHDsWuXbtQu3ZtNGrUCL6+vkhMTNRg4gzW1tYICQmBubk5XFxccOnSJY1nKIpYKImISDAfj2DUxuMPJRIJlixZgkGDBmHgwIE4evSo2q4VFxeH1q1b48KFC/D390fHjh3Vdi11ycs+lLa2tvjpp5/w5MkTHDhwAObm5hg2bBjKlSsHHx8f/P333xp9frVcuXI4ffo0qlevjpYtW+LkyZMau3ZRxUJJRESCqV69OnR1dbXytjeQUSrXr1+P9u3bo1u3bggJCRH8Gk+fPoWrqyvu37+P4OBgtGjRQvBraEJ+NjYvVqwYOnfujGPHjuHhw4eYNm0agoKC0LhxY9SuXRsrVqxAfHy8mhJnZWpqiqCgIDRt2hSenp44ePCgRq5bVLFQEhGRYIoVK4ZatWpp5QzlRzKZDDt37kSTJk3Qrl07XL9+XbCx7927BycnJyQmJiIkJAT169cXbGxNS01NVenoxQoVKuC7777DgwcPcPz4cdSoUQNTpkyBpaUlevfujZMnT6p903RDQ0McPnwYHTt2RNeuXbF161a1Xq8oY6EkIiJBaevCnE/p6enh4MGDsLGxQZs2bQTZ/ub69etwdnaGnp4eQkNDUaNGDQGSiiclJUWQvSZ1dHTg4eGBvXv34smTJ1i4cCGuXr2KVq1awdbWFj/++KNaz13X1dXFzp07MWTIEAwcOBC//vqr2q5VlLFQEhGRoGrXro3w8HDRj2DMSYkSJeDv7w8TExO4ubkhJiYm32OFhISgWbNmqFixIkJCQlCxYkUBk4pDHWd5W1hYYMqUKbhz5w5CQkLg5OSEBQsWoEKFCujUqROOHDkChUIh6DWBjFK7bt06TJ8+HRMnTsR3330n2p6khRULJRERCcrBwQFyuRz37t0TO0qOSpcujcDAQCgUCri7u+fr+b6jR4/C3d0d9evXx8mTJ1G6dGk1JNU8dRTKjyQSCZydnbF161bExMRgxYoVePjwIdq3b4/KlStjzpw5iIqKEvyaixcvxuLFi7FgwQKMHTtWa88pL4hYKImISFDavNL7SypWrIigoCA8f/4cbdu2RVJSUq4/u2PHDnTs2BFt2rTBsWPHYGxsrMakmpXTtkFCMTExwahRo3Dt2jVcuXIFHTp0wIoVK1ClShW4ublhz549+PDhg2DXmz59OtavX4/Vq1ejX79+SE1NFWzsooyFkoiIBFWqVClYWlpq/XOUn6pRowaOHz+O8PBwdOnSBSkpKTl+ZuXKlejbty/69++PvXv3Qk9PTwNJNUedM5RfU69ePaxevRoxMTHYsmULkpOT4e3tDSsrK0yaNEmwjcqHDh2K3bt3Y+/evejcuTPkcrkg4xZlLJRERCQ4bTyCMScNGjTAn3/+iVOnTqFfv35ffQZUqVRi7ty5GDduHCZPnoyNGzdCJpNpOK16KZVKUQrlR4aGhhgwYABCQkJw+/ZtDBw4EH5+frCzs4OTkxM2b96cp5nkL+nevTsOHz6M4OBgtGnTBm/evBEofdHEQklERIJzcHAoMLe8P9WyZUvs2rUL+/btw+jRoz9buJGeno5x48Zh3rx5+OGHH/C///2vQJzLnVcfy7RYhfJTNWvWxNKlS/H06VPs2bMHRkZGGDJkCMqVK4cRI0bg8uXL+V5g4+HhgaCgINy4cQMtWrTAy5cvBU5fdLBQEhGR4BwcHPD48WONbWItpM6dO2PDhg1Yt24d5syZk/nzqamp6NevH1atWoV169ZhxowZhbJMAsi85a+JZyhzS1dXF927d0dAQAAePHiACRMm4MiRI3B0dES9evWwatWqfB352bRpU5w+fRoxMTFwcXHBo0ePcvU5heIdEhOv4+3bv5GYeB0Kxbs8X7swkSi5bp6IiAR269Yt2NvbIzg4GM2bNxc7Tr4sXboUU6dOxS+//ILhw4ejR48eCAwMxPbt29GjRw+x46nVmzdvYGJigt27d2v1d01LS0NAQAA2bNiAw4cPo1ixYujevTt8fHzg4uKSp8IfGRkJNzc3KBQKBAUFfXEf0aSk24iJWYu4uGNITn4A4NMKJYGeXhWYm3vB0nIEDA1rqf4FCxAWSiIiEpxCoYCRkRF++uknjB8/Xuw4+fbtt9/ip59+go2NDZ4+fYoDBw7Aw8ND7FhqFxsbi9KlS+PAgQPo3Lmz2HFy5fnz59i6dSt8fX0RGRkJW1tb+Pj4oH///ihTpkyuxnj69Ck8PDzw4sULHD9+PPOkI7k8ChERw5GQEARABiC7vTIzXjc1dYOt7Tro61ur+tUKBN7yJiIiwclkMtjZ2RXI5yg/NX78eJiZmeHevXuYO3dukSiTADK30tGGZyhzq2zZspg+fToiIiIQHBwMR0dHzJkzB+XLl0fXrl1x/PjxHDfbt7KywunTp1GlShW0aNHi31vhvrh0qRYSEoL/fVdOG69nvJ6QEIxLl2ohJsZX9S9XALBQEhGRWhSEIxizExUVBRcXF+jq6sLNzQ1z5szB6dOnxY6lEdr4DGVuSSQSNG/eHNu3b0dMTAx++eUX3Lt3D56enrC2tsbcuXOzfU7S3Nwcf/31Fxo2bIjNm1shImIo0tOTkXOR/C8F0tOTERExFA8fLlLpOxUELJRERKQWH49gVMdReuoWHh4OZ2dnAMC5c+dw+PBhODs7o3379rh27ZrI6dSvIM5QfomZmRnGjh2LsLAw/P3332jTpg1+/vlnVK5cGZ6enti/f/8X9xw1MjLCpk1dMXCgMMeHRkXNxrNnGwUZS1uxUBIRkVo4ODjgw4cPBeIIxk9duHABrq6uKFWqFEJDQ2FtbY3ixYvjjz/+QI0aNeDh4YGIiAixY6pVYSmUH0kkEjRs2BDr16/Hs2fP4Ovri9evX6Nbt26oUKECpk2bhrt372a+Xy6PQnT0JEEz3Ls3BnK5sMdJahMWSiIiUouPRzAWpNveQUFBaNWqFWrVqoXTp0+jbNmyma8ZGxvj2LFjKFWqFNzc3PDkyRMRk6rXx0JZEG9558TIyAiDBw/G+fPncfPmTfTq1QsbN25EjRo10KxZM/j5+eHOHR+kpws7s56erkBExHBBx9QmLJRERKQWZmZmKF++fIEplHv37kXbtm3RvHlzBAYGwsTE5LP3lCpVCoGBgQAAd3d3xMXFaTilZny8DVxYZii/xt7eHr/++iuePn2KnTt3QiaTYc6c/nj79iTy/sxkThRISAhCUtIdgcfVDiyURESkNgXlCMYNGzbA29sb3bt3x8GDB2FgYPDV95YvXx5BQUGIjY2Fl5cXEhMTNZhUMwrbLe+c6OnpoWfPnvjrr7+wb19/pKera8N6GWJi1qhpbHGxUBIRkdpo+xGMSqUSixcvxrBhwzBq1Cj4+fnlqkTZ2tri+PHjuHPnDrp06YIPHz5oIK3mFLVC+SmF4iyk0py36A4NBYYMAdzdgd69gX37gC1bgBYtsh0dcXH+QkXVKiyURESkNg4ODnj69KlW3hpWKpWYNm0aZsyYge+//x4rV66EVJr73xbr1auHw4cPIyQkBH379s1xj8OCpCBvG6QKhSLx3xNwsnfxIvD990CJEsB33wHDhwMnTwIBATlfIzn5fqE8ppGFkoiI1KZ27doAtG9hjkKhgI+PD5YuXYrly5dj7ty5+TqXu1mzZtizZw/++OMPjBw5EoXl8LmiOkMpl99H1uMUv2zzZqBUKWDJEsDZGWjWDPj5Z+D9+9xcRQm5PFLVqFqHhZKIiNTGxsYGenp6WlUok5OT0aNHD2zduhV+fn4YN26cSuN16NABGzduxIYNGzBz5kyBUoqrqBZKpTLnRxfkcuDuXcDJCfj0l0dfH2jaVLjrFDQysQMQEVHhJZPJYG9vrzXPUSYmJqJTp044d+4cDh48iHbt2gky7oABAxAfH49JkybB3NwcU6ZMEWRcsRSlQqlUKvHs2TOEh4fjwYNA1KiR/fvfvQOUSsDM7PPXTE1zd02JpHjeg2o5FkoiIlIrBwcHXL16VewYiI2NhaenJyIiIhAQEABXV1dBx584cSJiY2MxdepUmJubY9CgQYKOr0mF9RnKly9fIjw8HLdu3cKtW7cy//r169cAAFNTPezfD2T39IORUcbr8fGfv/aln/ucBPr61fITX6uxUBIRkVrVrl0bfn5+SE1NFW3G6/Hjx3B3d0d8fDxOnTqFunXrquU6CxcuRFxcHHx8fGBiYoLOnTur5TrqVtBnKOPi4jJL46fFMTY2FkBGUa5Rowbs7Ozg5eUFOzs72NnZwdraGpcuVUdy8v2vjq2vD1SvDpw9C4wc+f+3veVy4Pz5nLPp6VWFTGYkxNfUKiyURESkVg4ODkhJSUFERATs7Ow0fv27d+/Czc0NUqkUoaGhsLGxUdu1JBIJVq1ahYSEBPTs2RPHjx9Hi+z3kdFKBaVQvnnz5ovF8fnz5wAyHrmwtbWFnZ0dWrZsmVkcq1WrBpnsyxXI3NwLT5+uQXYbmw8aBMyYAUybBnTtCqSlAbt3Z5TN7LcllcHc3DP/X1iLsVASEZFafbrSW9OF8urVq/Dw8ICFhQUCAwNhZWWl9mvq6OjAz88P7du3R4cOHRAcHIwGDRqo/bpCSk1NhVQqzdM2Sur07t073L59+7Pi+PH4S6lUimrVqsHOzg5Dhw7NLI62trZ5vm1vaTkCT5+uzPY9DRsC8+ZlrPaePz/jecqOHYHYWCAoKLtPKmBpOTJPeQoKFkoiIlIrU1NTVKhQAWFhYejdu7fGrnvq1Cl06NABNWvWxLFjx2Bubq6xa+vq6mL//v1wc3ODp6cnQkJCUCOn1R5aJCUlRZTnJ+VyOe7cufNZcYyOjgaQMQNsbW0NOzs79OvXL7M41qhRA3p6eoJkMDSsBRMTNyQk/AWJJP2r73N2zvjfRwoF4OOTcTv8y2QwNW0BQ8OaguTUNiyURESkdg4ODhrdOujPP/+Et7c3nJ2dcfDgQRgZaf6ZNSMjIxw9ehSurq5wd3dHaGgoKlasqPEc+aHu510/fPiAu3fvflYcHzx4gPT0jBJXsWJF2NnZoXv37pnFsWbNmjA0NFRbLgB4/vw5Fi58j6FD06Gr+/UFOkuWAA0aZMxOxscDhw8Djx4BY8d++f1SqQy2tuvUF1xkLJRERKR2Dg4O2LRpk0autXXrVgwZMgSdOnXCjh07ULy4eFu0mJmZISAgAM7OznB3d0dISAhKly4tWp7cEqpQpqam4t69e58Vx3v37mWeLGRpaQk7Ozu0b98+szjWqlULJUqUUPn6eRUYGIh+/fpBKpVi1KhJkEh++ep7378H1qwB3rwBdHQAW1tg8WKgfv0vv9/G5jfo61urKbn4WCiJiEjtHBwc8OzZM7x69UqthWrZsmWYNGkSfHx8sHbtWujo6KjtWrllZWWFwMBAODs7w8vLCydPnoSxsbHYsbKVmpqap1veaWlpuH///mfF8e7du5kLfCwsLGBnZwc3NzdMmDAhszya5nbzRjVKTU3FnDlz8NNPP8HDwwNbt25FmTJl8PChGaKiZn/xM3Pn5n58a+tFKFduiDBhtRQLJRERqd2nC3Nat24t+PhKpRJz5szBokWLMH36dPz444/5OkpRXWxsbBAQEIBmzZqhY8eOOHbsmGDP/KlDSkrKF2co09PTER0d/Vlx/Oeff5CcnAwgY1bWzs4OLi4uGDFiRGZx1NaZ2ejoaPTq1QuXL1/GkiVLMHny5MzFSJUqzUKxYmUQGTkW6ekKZLfy+3MySKUy2Nj8VujLJMBCSUREGlCtWjXo6+vjxo0bghfKtLQ0jB07FmvWrMFPP/2EadOmCTq+UOrUqYMjR47A3d0dvXr1wt69e7+6dY3YUlJSIJFI4O/vn6U83r59G+//PbC6RIkSsLOzg6OjIwYOHAg7OzvY29ujTJkyWlXms7N//34MGTIEpqamCA0NRaNGjT57j6WlD0xNWyEiYjgSEoKQUZ2yK5YZr5uatoCt7bpCfZv7UxJlYTnJnoiItFqjRo1Qo0YNbN26VbAxU1JS0L9/f+zduxfr16/HkCHaPxN05MgRdOrUCQMGDICvr6+o5evjsYP/3cvx6tWrmaflGBoaolatWrC3t8+cbbS3t4eVlVWBKY7/JZfLMWnSJKxduxbdu3fH+vXrYWJikuPnkpJuIyZmLeLi/P/d/PzTCiWBnl5VmJt7wtJyZKFdzf012vlHIyIiKnQcHBxw8eJFwcZLSkpCt27dcPLkSezduxddunQRbGx1ateuHbZs2YJ+/frB3NwcS5Ys0ch1X716lXmL+tPjBxMSEgAAenp6qFmzJuzt7SGRSPDs2TMEBwejYsWKWrMfpRBu374Nb29vREZGYt26dRg6dGiui7GhYS3Y2KyAjQ2gULyDXB4JpfIDJJLi0NevVihPwMktFkoiItKI2rVrY8uWLYLscZiQkIB27dohLCwMR48eVctzmerUt29fxMfHY/z48TA3N8f06dMFGzs+Pv6Lp8e8evUKQMYemdWrV4e9vT3atGmTOeNobW2duYhpxIgR+PDhAypXrixYLrEplUps3rwZY8aM+feIxUuwt7fP93gymRGMjesIF7CAY6EkIiKNcHBwQGpqKu7evYtvvvkm3+M8e/YM7u7uePbsGU6ePImGDRsKmFJzxo0bh9jYWHz77bcwMzPD0KFD8/T5t2/ffrE4Pnv2DEDGiT22trawt7fH6NGjM4tjdscOfiTmuevq8PbtW4wYMQI7d+7E0KFD8euvv8LAwEDsWIUKCyUREWnEpyu981so79+/Dzc3N6SkpODMmTOoVauWkBE1bt68eYiLi8OIESNgZmaGrl27fvaepKSkLx47+PjxYwAZxw5WrVoV9vb2GDJkSGZxzM+xgx8VpkJ5+fJl9OzZE69evcKuXbvg7e0tdqRCiYWSiIg0omTJkqhUqRLCwy8hMdE+z8+e3bhxAx4eHjA2NkZwcDAqVaqkgdTqJZFIsHLlSsTHx6N3795Yvnw5jIyMshTHqKiozPdbW1vD3t4effr0ySyO1atXh76+vqC5xDp6UUjp6en49ddf8e2336JOnToIDAxElSpVxI5VaHGVNxERqd3H1bG3bm1EyZLv/3OcnQR6elVgbu4FS8sRMDT8fNbx7NmzaNeuHaytrXH8+HFYWFhoLLvQUlJSPjt2MDw8HJGRkZnvqVChwmerqjVx7OBHXbt2RVJSEo4fP66R6wnt1atXGDhwII4dO4YpU6Zg0aJFBb4gazsWSiIiUhu5PCof+/e5Zdm/7/jx4+jSpQscHR1x6NAhlCxZUgPJVadQKL567KBCkfHrUK5cucziWK1aNaxbtw5PnjxBaGioqLfzO3ToAKVSicOHD4uWIb9OnTqFPn36ICUlBdu2bYOnp6fYkYoEFkoiIlKLmBhflU4YqVZtJc6cMUK/fv3g6emJ3bt3C35rVwhpaWl48ODBF48d/LiXY+nSpT+bcfzSsYMJCQlo1qwZ4uPjcfbsWdFu63t6esLAwAD79+8X5fr5oVAosGDBAixYsADNmzfH9u3bYWlpKXasIoOFkoiIBPfw4aKvnoGcFxs3AhJJP2zcuFH0RSLp6el4+PDhZ8Xxzp07mccOmpqafrE45uXYwWfPnsHJyQkymQyhoaGi3N5v1aoVSpcujV27dmn82vnx5MkT9O7dG2fPnsW8efMwY8YMrTjHvSjhohwiIhJUTIyvIGUSAIYMAWxsXDRaJpVKJZ48efJZcbx9+zaSkpIAAMbGxrC3t0f9+vXRv3//zOJYtmxZlU+PKVeuHIKCguDs7Iw2bdrg1KlTKFGihBBfLdcK0irvw4cPY+DAgTAwMMCpU6fg4uIidqQiiYWSiIgEI5dHITJyrKBj3r8/DmZmrQU/E1mpVOL58+efFcdbt27h7du3AAADA4PM2cYePXpkFsfy5cur9djBqlWrIiAgAK6urujQoQP8/f01eru/IBTKDx8+YPr06Vi+fDk6duyITZs2wczMTOxYRRYLJRERCSYiYvi/z0x+bssWYOtW4OBBIC/ratLTFYiIGA4Hh8B853r16tUXNwGPj48H8P/HDtrZ2aFDhw6ZxbFSpUqiHTtYu3ZtHD16FG5ubujZsyf279+f44bkQklNTdXqVdH37t2Dt7c3bt26hRUrVmDMmDEF9lzxwoKFkoiIBJGUdPvf1dxCUyAhIQhJSXdgaFgz23cmJCR8sTi+fPkSAFCsWDHUqFEDdnZ2cHd3zyyOVapU0cpn7pycnLBv3z507NgRPj4+2LRpk0YKbkpKitbOUG7fvh0jR45EuXLlcOHCBdStW1fsSAQWSiIiEkhMzFrkvDVQfskQE7MGNjYrAGQcpfel02NiYmIA/P+xg3Z2dhg5cmSWrXm0tSh9jZeXF7Zu3Yq+ffvCzMwMP//8s9pn47Txlve7d+8wZswYbN26Ff3798dvv/0GY2NjsWPRv1goiYhIEHFxx5CbMvnyJfDzz8CVK4BEAjRpAoweDZiYZPcpBSIi/DB+fCRu3bqFR48eAcg4aaZatWqws7PDoEGDMoujra0tihcvLsTX0gq9e/dGQkICxowZg1KlSmHmzJlqvZ62FcqwsDB4e3vjyZMnmYWStAsLJRERqUyhSERy8oNcvXfOHKB5c6B9eyA6Gti0CXj4EFi9GsjuEUEDg9fQ01OiV69emcWxRo0aWrk3pTqMHj0acXFxmDVrFszMzDBixAi1XUtbjl5UKpVYvXo1Jk+ejJo1a+Lq1auwtbUVOxZ9AQslERGpTC6/DyB32xq7uAAfu5CjI2BqCixaBAQHA25uX/+cRAJs3fojjI3rqJy3oJozZw5iY2MxatQomJmZoUePHmq5jjbMUMbHx2PIkCE4ePAgxo4diyVLlkBPT0/UTPR14ixdIyKiQkWp/JDr97ZunfXvW7QAdHSA69eFvU5hJJFI8Ouvv6J3797o27cvAgIC1HIdsQvl2bNnUbduXZw+fRoHDx7EihUrWCa1HAslERGpTCLJ/fOK/90qUEcHKFEC+HfrR8GuU1hJpVJs3rwZ7u7u6NKlCy5cuCD4NcQqlGlpafjhhx/QrFkzVKxYEWFhYejYsaPGc1DesVASEZHK9PWrAcjdyuN/t37MlJaWUSZzOgxGqQTCw+ORmpqav5CFSLFixbBnzx7Uq1cPXl5eCA8PF3R8MZ6hfPbsGTw8PDB79mzMmDEDwcHBqFChgkYzUP6xUBIRkcpkMiPo6VXJ1XtPnMj698HBGaWyTp3sPxcTI0HTpq1gYmICNzc3LFiwAKdPn848R7uoMTAwwOHDh1GxYkW4u7sjKipKsLE1PUN5/PhxODg44NatWzhx4gQWLFigsU3cSRgslEREJAhzcy/kZq1nSAiwdi1w+TKwbx/wyy9A1aoZK7+/ToYGDUbhwoULmDt3LvT09PDzzz+jefPmKFmyJFxdXTF79mwEBQXh3bt3An0j7WdiYoLjx4/DwMAA7u7uePHihcpjKpVKpKWlaaRQpqamYvr06fD09ESDBg0QFhaGli1bqv26JDyJUqnM3bI8IiKibCQl3calS3Zfff3j0Yvr1mX8eO1axsrtxo2BMWMyVntnx9HxdpaTctLS0nDz5k2cOXMGp0+fxpkzZxAbGwsdHR3Ur18fzZo1g6urK5ydnWGS/SaXBV5UVBScnJxgYWGBU6dOqfR9U1JSULx4cbXv9xgVFYVevXrhypUrWLx4MSZOnCjaMZekOhZKIiISTFiYOxISgiHsaTkymJq2yPEsb6VSiX/++SezXJ4+fRoxMTGQSCRwcHCAq6srXF1d4eLiAgsLCwHzaYfw8HC4urrC3t4+c9YyP969ewdjY2P8/vvv6NWrl8ApM+zduxc+Pj4wNzfHrl270LBhQ7VchzSHhZKIiAQjl0fh0qVaSE8X7rlGqVQPjo63oa9vnafPKZVKPHjwAGfOnMksmB+fM6xZs2ZmwWzWrBmsrKwEyyum8+fPo3Xr1mjRogX++OOPfN22TkhIgJmZGfbu3Ytu3boJmu/9+/eYOHEi1q9fjx49emD9+vUoWbKkoNcgcbBQEhGRoGJifBERMVSw8apX90W5ckMEGevx48cICQnJLJj//PMPAKBKlSpZCqa1tbXaz8tWl4CAALRv3x7e3t7YunVrnm8jv3z5EmXKlMHBgwcF3bLn1q1b8Pb2xoMHD7BixQoMGTKkwP4a0+dYKImISHAPHy5CVNRslcextl6ESpXUd271y5cvERISknmb/MaNG1AqlbCyssosl66urqhRo0aBKj+7d+9Gr169MHbsWPz66695yv706VOUL18ex44dg6enp8pZlEolNm7ciHHjxqFKlSrYvXs37Oy+/qwtFUxck09ERIKrVGkWihUrg8jIsUhPVyBvz1TKIJXKYGPzm2Azk19jYWGBrl27omvXrgAybveGhoZm3ibfs2cP0tLSULp06cwZTFdXV3zzzTfQ0dFRazZVeHt7IyEhASNHjkSpUqUwZ86cXH82JSUFAARZ5f3mzRsMHz4cu3fvxrBhw7Bs2bJ8P9tJ2o0zlEREpDZyeRQiIoYjISEIGXMY2RXLjNdNTd1ga7suz89MqsO7d+9w7ty5zFvkFy9eREpKCkxMTODs7Jw5i1m3bl3Rz77+kkWLFmH27NlYtWoVRo0alavPREREoHr16jh16hSaNWuW72tfvHgRPXv2RFxcHDZs2KC2c8dJO3CGkoiI1EZf3xoODoFISrqNmJi1iIvzR3LyfQCfzmVIoKdXFebmnrC0HJllayCxGRkZwd3dHe7u7gAAuVyOixcvZhbM77//HnK5HIaGhmjatGlmwXR0dNSKs6dnzpyJ2NhYjBkzBqampjmu2lYo3kEuv4maNQEdnSgoFPUhkxnl6Zrp6elYtmwZvv32W9SrVw9//fUXrK3F/8MBqRdnKImISKMySksklMoPkEiKQ1+/Wp5Li7ZISUnB1atXM5/BDA0Nxdu3b1G8eHE0atQo8xnMJk2awNDQUJSM6enpGDRoEH7//XccOnTos+ci/7/sH0Ny8gN8XvarwNzcC5aWI2BoWCvba7169QoDBgyAv78/pk2bhoULF2rlzC0Jj4WSiIhIIGlpaQgLC8t8BvPMmTOIi4uDTCZDgwYNMp/BdHZ21uh2OampqejatStOnDiBEydOoGnTpoI/jnDy5En07dsXCoUC27ZtQ5s2bdT0bUgbsVASERGpSXp6Ou7cuZNlL8xnz55BIpGgTp06mbfIXVxcUKpUKbVmkcvlaNOmDW7cuIGAgPFITv4p3wumqlVbCUtLHwCAQqHAvHnzsGjRIrRs2RJ+fn4oV66cWr4DaS8WSiIiIg1RKpW4f/9+luMio6OjAQC1atXKslWRpaWl4Nd/8+YNFi2qCS+vZyqPZW29EFJpf/Tu3Rvnz5/H/PnzMX36dK1e/U7qw0JJREQkokePHmW5RX737l0AQNWqVTPLpaurKypXrqzyXphCbzq/apUB/v7bHDt37oSTk5Ng41LBw0JJRESkRZ4/f555ms/HzdYBoEKFCln2wqxevXqeCqbQx2IqlUBamhT29pdRtmxdQcakgouFkoiISIvFx8dnbrZ++vRpXL16Fenp6bCwsMhyXKS9vX22xyyGhbkjISEYuXlm8uRJYNs24NkzICUF2LABqFbtS++UwdS0BRwcAvP9/ahwYKEkIiIqQBITEz/bbD01NRUmJiZwcXHJvE1et25dyGQZ200nJd3GpUu5O+7w9Wuge3egYcOMH3V1gSpVgOy21XR0vK1V+4eS5rFQEhERFWByuRx///135iKf8+fPQy6Xw8jICE5OTnB1dYWT01UolQcBpOU43s2bwLhxwHffAS1a5CaBDFZWI2Fjs0LFb0IFGQslERFRIZKSkoLLly9nPoMZGhqKNWsSYWWV82cXLwYCArL+nIMD8Ouv2X9OT68aGje+l+/MVPCxUBIRERViyckJuHDBHFlPwPmyp0+BS5eA5csBHx+gbl3AwACoXDmnT0rg7Py2wJ54RKrjWd5ERESFWGrqQ+SmTAKAlRXw6lXGX5cvD9TK/qTFTyghl0fC2LhOPhJSYfD15WBERERU4CmVHwrVdUg7sVASEREVYhJJ8UJ1HdJOLJRERESFmL5+NQCqnbCTM8m/16GiioWSiIioEJPJjKCnV0Wt19DTq8oFOUUcCyUREVEhZ27uBfWtw5XB3NxTTWNTQcFCSUREVMhZWo5Abo5czB8FLC1HqmlsKii4DyUREVERkJezvHOPZ3lTBs5QEhERFQG2tusglQp721sqlcHWdp2gY1LBxEJJRERUBOjrW6NatZWCjmlj8xv09a0FHZMKJhZKIiKiIsLS0gfW1gsFGcvaehHKlRsiyFhU8PEZSiIioiImJsYXkZFjkZ6uQN6eqZRBKpXBxuY3lknKgoWSiIioCJLLoxARMRwJCUHI2FIou2KZ8bqpqRtsbdfxNjd9hoWSiIioCEtKuo2YmLWIi/NHcvJ9AJ/WAgn09KrC3NwTlpYjYWhYU6yYpOVYKImIiAgAoFC8g1weCaXyAySS4tDXr8YTcChXWCiJiIiISCVc5U1EREREKmGhJCIiIiKVsFASERERkUpYKImIiIhIJSyURERERKQSFkoiIiIiUgkLJRERERGphIWSiIiIiFTCQklEREREKmGhJCIiIiKVsFASERERkUpYKImIiIhIJSyURERERKQSFkoiIiIiUgkLJRERERGphIWSiIiIiFTCQklEREREKmGhJCIiIiKVsFASERERkUpYKImIiIhIJSyURERERKQSFkoiIiIiUgkLJRERERGphIWSiIiIiFTCQklEREREKmGhJCIiIiKVsFASERERkUpYKImIiIhIJSyURERERKQSFkoiIiIiUgkLJRERERGphIWSiIiIiFTCQklEREREKmGhJCIiIiKVsFASERERkUpYKImIiIhIJSyURERERKSS/wNtaDh7bZ0kGQAAAABJRU5ErkJggg==",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# 3. Compute and draw the projection\n",
"# easy way\n",
"people = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']\n",
"foci = [i for i in range (1, 6)]\n",
"\n",
"G_V1 = nx.projected_graph(G4, people)\n",
"nx.draw(G_V1, **opts)"
]
},
{
"cell_type": "code",
"execution_count": 77,
"id": "a1bb56c6-ee1a-4a36-9be7-4fff38cc38fe",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAApQAAAHzCAYAAACe1o1DAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAaVxJREFUeJzt3Xdc1PUfB/DX4aEgLsSJA0HAnZoDNM1cgTNNLUemJWpqVoJbwokrITVLMZypOXKUAxH3wIFbQ0WUQDlFPBEBj3Hc9/cHwg+UfXd8b7yej4ePXz/u7vN9X/Pl+7MkgiAIICIiIiIqJhOxCyAiIiIi/cZASURERERqYaAkIiIiIrUwUBIRERGRWhgoiYiIiEgtDJREREREpBYGSiIiIiJSCwMlEREREamFgZKIiIiI1MJASURERERqYaAkIiIiIrUwUBIRERGRWhgoiYiIiEgtDJREREREpBYGSiIiIiJSCwMlEREREamFgZKIiIiI1MJASURERERqYaAkIiIiIrUwUBIRERGRWhgoiYiIiEgtDJREREREpBYGSiIiIiJSCwMlEREREamFgZKIiIiI1MJASURERERqYaAkIiIiIrUwUBIRERGRWhgoiYiIiEgtDJREREREpBYGSiIiIiJSCwMlEREREamFgZKIiIiI1MJASURERERqYaAkIiIiIrUwUBIRERGRWhgoiYiIiEgtUrELICIiItI3SmUiFIpwCEIKJJIyMDe3h1RaTuyyRMNASURERFQISUmhkMnWQC4/hOTkhwCEbK9KYGZmByurnrC2/gYWFo3FKlMUEkEQhILfRkRERGScFIoIhIWNRVxcEDJ6ccp83p3xuqVldzg6+sHc3LZkihQZAyURERFRHmQyf4SHT4RKpUT+QfJtUpiYSGFv/wusrd20VZ7OYKAkIiIiykVkpDciIjzVHsfWdgFsbGZpoCLdxUBJRERE9BaZzB9hYaM1Nl6DBv6oWXOUxsbTNQyURERERNkoFBEICWkMlSo519cXLwYCA/P+/K+/Ao3f2pNjYmKGNm1CDXZNJQMlERERUTY3bnyMuLgTyGvNZHQ0EB//7s9nzgRMTYHt24FSpd5+VQpLy85o3vyIpsvVCTw2iIiIiOiNpKTQN7u581arVsav7K5fzwiZw4fnFiYBQIm4uCAkJd2BhUUjTZWrM3hTDhEREdEbMtkaFKffdugQIJEAPXrk9y4pZLLVxS1NpzFQEhEREb0hlx9C0Y4HAhITgdOngfffB2rWzO+dSsjlAeqUp7MYKImIiIgAKJUJb27AKZrjx4GUFKBnz4Lfm5z8AEplYjGq020MlEREREQAFIoHyHmdYuEcOgRUqAB06FCYdwtQKMKL/Axdx0BJREREBEAQUor8mQcPgHv3gO7dgdKltfccXcdASURERARAIilT5M8cOpTxv716afc5uo6BkoiIiAiAubk9AEmh35+aChw9CjRsCNgW+rxyyZvnGBYGSiIiIiIAUmk5mJnZFfr9Z88Cr14VrTtpZlYfUmm5YlSn2xgoiYiIiN6wsuqJwp5DGRAAmJkBXboUdnQprKzyPahSb/HqRSIiIqI3kpJCERLSRGvjt2kTyptyiIiIiAyZhUVjWFp2h+Zvp5bC0rK7QYZJgIGSiIiIKAdHRz8Iggk0OYdrYiKFo6Of5gbUMQyURERERNls2XIUvr5pkBR+w3eBHBxWwdy80FvB9Q4DJREREREAQRAwb948jBkzBnXrjoONzTyNjGtr642aNUdpZCxdpekFAkRERER6Jz09HRMnTsTq1asxf/58zJo1CxKJBGXK1ER4+ESoVEoAyiKMKIWJiRQODqsMPkwC3OVNRERERi45ORnDhg3Dvn374OfnBzc3txyvKxQRCAsbi7i4IGT04vILlhmvW1p2h6Ojn0FPc2fHQElERERG6+XLl+jXrx8uXryIHTt2oG/fvnm+NykpFDLZGsjlAUhOfgAge4SSwMysPqysesDaepzB7ubOCwMlERERGSWZTAZXV1c8fvwY+/fvxwcffFDozyqViVAowiEIKZBIysDc3N4gb8ApLAZKIiIiMjr37t2Di4sL0tPTcfjwYTRpor3DzI0Bd3kTERGRUbl48SI++OADWFhYIDg4mGFSAxgoiYiIyGgEBASgS5cuaNCgAc6cOYM6deqIXZJBYKAkIiIio7Bp0yb06dMHXbt2RVBQECpXrix2SQaDgZKIiIgMmiAIWLp0KUaOHImRI0diz549KFu2rNhlGRQGSiIiIjJYKpUK7u7umDZtGjw9PfH7779DKuW9LprGP6NERERkkFJSUjBy5Ejs2LEDv/76K8aPHy92SQaLgZKIiIgMTkJCAj799FOcPn0aO3fuxMCBA8UuyaAxUBIREZFBiYmJQc+ePREeHo7AwEB89NFHYpdk8BgoiYiIyGA8ePAALi4uSEpKwunTp9G8eXOxSzIK3JRDREREBuHq1ato3749SpUqhfPnzzNMliAGSiIiItJ7R48eRadOnVCvXj2cPXsW9erVE7sko8JASURERHpt+/bt6NmzJzp06IBjx46hatWqYpdkdBgoiYiISG8tX74cQ4YMweDBg/HPP/+gXLlyYpdklBgoiYiISO8IgoDp06dj0qRJmDJlCjZu3AhTU1OxyzJa3OVNREREeiUtLQ1ubm7YvHkzfH19MWnSJLFLMnoMlERERKQ3kpKSMGjQIBw9ehRbt27F0KFDxS6JwEBJREREeuL58+fo3bs3/v33Xxw8eBDdu3cXuyR6g4GSiIiIdF5kZCRcXFzw4sULnDx5Eq1atRK7JMqGm3KIiIhIp928eRPt2rVDWloagoODGSZ1EAMlERER6axTp07hww8/RPXq1XHu3DnY29uLXRLlgoGSiIiIdNKePXvg4uKCVq1a4dSpU6hRo4bYJVEeGCiJiIhI56xevRoDBw5Ev379cOjQIVSoUEHskigfDJRERESkMwRBwOzZszF+/HhMnDgR27ZtQ5kyZcQuiwrAXd5ERESkE5RKJSZMmIC1a9di0aJFmDZtGiQSidhlUSEwUBIREZHoFAoFhgwZggMHDmDDhg0YOXKk2CVRETBQEhERkaji4uLQt29fXLlyBX///Td69eoldklURAyUREREJJrHjx/D1dUVT548wfHjx+Hs7Cx2SVQMDJREREQkijt37sDFxQUSiQTnzp1Dw4YNxS6Jiom7vImIiKjEBQcH44MPPkDFihURHBzMMKnnGCiJiIioRO3fvx/dunVD06ZNcebMGdSqVUvskkhNDJRERERUYtavX4/+/fvD1dUVgYGBqFSpktglkQYwUBIREZHWCYIAb29vjBo1Cm5ubti1axfMzc3FLos0hIGSiIiItCo9PR3fffcdPD09MXfuXKxevRqlSpUSuyzSIO7yJiIiIq1JSUnB8OHDsXv3bqxZswZjx44VuyTSAgZKIiIi0or4+Hj0798fwcHB2L17N/r16yd2SaQlDJRERESkcU+ePEGPHj0QGRmJoKAgdOzYUeySSIsYKImIiEijwsLC4OLigtTUVJw5cwZNmzYVuyTSMm7KISIiIo0JCQnBBx98ADMzMwQHBzNMGgkGSiIiItKIwMBAdO7cGfb29jh79ixsbGzELolKCAMlERERqW3Lli3o3bs3PvroIxw7dgxWVlZil0QliIGSiIiI1OLj44Phw4dj+PDh2Lt3L8qWLSt2SVTCGCiJiIioWFQqFSZPnozJkydjxowZWLduHUxNTcUui0TAXd5ERERUZKmpqfj666+xbds2rFy5EhMnThS7JBIRAyUREREVSWJiIgYMGICTJ09i+/bt+Oyzz8QuiUTGQElERESF9uzZM/Tq1Qv37t1DQEAAunTpInZJpAMYKImIiKhQHj58CBcXFyQkJODUqVNo2bKl2CWRjuCmHCIiIirQ9evX0b59ewBAcHAwwyTlwEBJRERE+Tp+/Dg+/PBD1K5dG+fOnYOdnZ3YJZGOYaAkIiKiPO3cuRM9evRAu3btcPLkSVSrVk3skkgHMVASERFRrlatWoXBgwdj0KBB2L9/P8qVKyd2SaSjGCiJiIgoB0EQMGvWLEycOBGTJk3C5s2bUbp0abHLIh3GXd5ERESURalUYuzYsVi/fj1++uknTJ48WeySSA8wUBIREREA4PXr1/j8889x+PBhbN68GcOHDxe7JNITDJREREQEuVyOPn364ObNm9i/fz9cXV3FLon0CAMlERGRkYuKioKrqytiY2Nx/PhxtG3bVuySSM8wUBIRERmx27dvw9XVFaampjh37hwcHR3FLon0EHd5ExERGakzZ86gY8eOqFKlCoKDgxkmqdgYKImIiIzQvn378PHHH6NFixY4deoUatasKXZJpMcYKImIiIzM2rVrMWDAAPTu3RuHDx9GxYoVxS6J9BwDJRERkZEQBAHz5s3D2LFjMW7cOGzfvh1lypQRuywyANyUQ0REZATS09Px7bffYs2aNfD29saMGTMgkUjELosMBAMlERGRgUtOTsawYcOwb98++Pv7Y9SoUWKXRAaGgZKIiMiAvXz5Ep988gkuXbqEffv2oU+fPmKXRAaIgZKIiMhAyWQyuLq64vHjxzh27Bjat28vdklkoBgoiYiIDNDdu3fh4uIClUqFs2fPonHjxmKXRAaMu7yJiIgMzMWLF9GhQweUL18e58+fZ5gkrWOgJCIiMiCHDh1Cly5d0LBhQ5w5cwa1a9cWuyQyAgyUREREBmLjxo3o27cvunXrhqCgIFhaWopdEhkJBkoiIiI9JwgClixZgq+++gpff/01du/eDXNzc7HLIiPCQElERKTHVCoVJk2ahOnTp+PHH3+En58fpFLuuaWSxb/jiIiI9FRKSgpGjhyJHTt24LfffsO4cePELomMFAMlERGRHnr16hU+/fRTnDlzBrt27cKAAQPELomMGAMlERGRnomJiUGPHj3w4MEDHDlyBJ06dRK7JDJyDJRERER6JDw8HC4uLlAoFDhz5gzee+89sUsi4qYcIiIifXHlyhV88MEHkEqlCA4OZpgkncFASUREpAeCgoLw0UcfoV69ejh37hzq1asndklEWRgoiYiIdNyff/6JXr16oWPHjjh+/DiqVKkidklEOTBQEhER6bDly5dj6NChGDp0KP7++29YWFiIXRLROxgoiYiIdJAgCJg2bRomTZqEadOmYcOGDTA1NRW7LKJccZc3ERGRjklLS4Obmxs2b96Mn3/+GT/88IPYJRHli4GSiIhIhyQlJWHQoEE4evQotm3bhiFDhohdElGBGCiJiIh0xPPnz9GrVy+Ehobi4MGD6N69u9glERUKAyUREZEO+O+//+Di4oKXL1/i5MmTaNWqldglERUaN+UQERGJ7ObNm2jfvj2USiWCg4MZJknvMFASERGJ6NSpU+jYsSNq1qyJ4OBg1K9fX+ySiIqMgZKIiEgku3fvhouLC9q0aYOTJ0+ievXqYpdEVCwMlERERCJYvXo1Bg0ahP79++PgwYMoX7682CURFRsDJRERUQkSBAFeXl4YP348vvvuO2zduhVlypQRuywitXCXNxERUQlRKpUYP348fv/9dyxevBhTp06FRCIRuywitTFQEhERlQCFQoHBgwfj4MGD2LhxI0aMGCF2SUQaw0BJRESkZS9evEDfvn1x7do1/PPPP+jZs6fYJRFpFAMlERGRFj1+/BguLi6IiYnB8ePH4eTkJHZJRBrHQElERKQloaGhcHV1hUQiwblz59CgQQOxSyLSCu7yJiIi0oLg4GB06NABlSpVwvnz5xkmyaAxUBIREWnY/v370bVrVzRr1gynT5+GtbW12CURaRUDJRERkQatW7cO/fv3R8+ePREYGIhKlSqJXRKR1jFQEhERaYAgCPD29oabmxtGjx6NnTt3wszMTOyyiEoEAyUREZGa0tPTMXHiRHh6emLevHn47bffUKpUKbHLIiox3OVNRESkhuTkZAwfPhx79uyBn58fxowZI3ZJRCWOgZKIiAiAUpkI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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"## hard way\n",
"B = nx.bipartite.biadjacency_matrix(G4, people, foci).toarray()\n",
"C = B@B.T\n",
"\n",
"# make graph simple\n",
"C[C>0] = 1 # make edges either exist or not\n",
"np.fill_diagonal(C, 0) # remove self adjacency\n",
"G_V1_hard = nx.from_numpy_array(C)\n",
"nx.draw(G_V1_hard, **opts)"
]
},
{
"cell_type": "markdown",
"id": "4ea61c74",
"metadata": {},
"source": [
"## Q5: Directed Graphs\n",
"\n",
"_For this question, the use of `networkx` is optional. You may write out your solution if you prefer._\n",
"\n",
"So far in CS4423 we have only considered **undirected graphs**. That is, the edge $a-b$ is the same as the edge $b-a$. \n",
"\n",
"Now I want you to think about *directed graphs* (also called _digraphs_): where the edge $a \\to b$ is not the same as the edge $b \\to a$. One can think of such edges as \"one way streets\": an edge that can be used to get from $a$ to $b$ can't be used to get from $b$ to $a$.\n",
"\n",
"There are numerous differences between directed and undirected graphs, including:\n",
"* When you draw a digraph you add arrows to edges to indicate its direction.\n",
"* If there is an edge $u \\to v$ and $v \\to u$, this can be represented by either having two edges between these nodes (with arrows in opposite directions), or by adding two arrows to a single edge.\n",
"* The adjacency matrix is not necessarily symmetric.\n",
"* The graph may have a path from node $u$ to node $v$, but not from $v$ to $u$.\n",
"* We talk of a digraph being\n",
" * **Strongly Connected** meaning there is a path between every pair of nodes\n",
" * **Weakly Connected** meaning, for every pair of nodes, $u$ and $v$, there is a path from $u$ to $v$, or from $v$ to $u$.\n",
" * **Disconnected** (same as the usual meaning of disconnected).\n",
" * In `networkx` we construct a directed graph with the `nx.DiGraph()` constructor."
]
},
{
"cell_type": "markdown",
"id": "8e7973ee",
"metadata": {},
"source": [
"Here is an example of a digraph in `networkx` which is strongly connected:"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "a3302807",
"metadata": {},
"outputs": [],
"source": [
"G5a = nx.DiGraph([\"ab\", \"bc\", \"cd\", \"da\"]) \n",
"nx.draw(G5a, **opts)"
]
},
{
"cell_type": "markdown",
"id": "0d63ffc0",
"metadata": {},
"source": [
"And here is one that is weakly connected: there is no path from $c$ to $a$, for example (since $d$ is a \"dead end\")."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "ce7cad10",
"metadata": {},
"outputs": [],
"source": [
"G5b = nx.DiGraph([\"ab\", \"bc\", \"cd\", \"ad\"])\n",
"nx.draw(G5b, **opts)"
]
},
{
"cell_type": "markdown",
"id": "04579b55",
"metadata": {},
"source": [
"### Construct and draw a digraph\n",
"\n",
"Let $G_5$ be the directed graph on the nodes $0$, $1$, $2$, $3$, $4$ and $5$, with edges\n",
"$0 \\to 1$, \n",
"$1 \\to 2$, \n",
"$1 \\to 3$, \n",
"$1 \\to 4$, \n",
"$1 \\to 5$, \n",
"$2 \\to 4$, \n",
"$3 \\to 2$, \n",
"$3 \\to 4$, \n",
"$4 \\to 3$, \n",
"$5 \\to 0$ and $5 \\to 1$.\n",
"\n",
"\n",
"Either by hand, or in `networkx`, draw $G_5$. "
]
},
{
"cell_type": "code",
"execution_count": 103,
"id": "c9344876",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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5ESj+HGKb7ZmDXD8eNH/LlcO+PRTYOjQ9/mkDDk5Uahc2a5kIYmISKlYKImoVGSyvPd+74QJwKBBQGoqcO0asG5d0QKdMWMUex8iIipbLJREVCo6OhXe+701axb9BwA6dCj6723bgH79AGNjxd2HiIjKFudQElGpGBpaAtB55/tep2nTojmVCQnveqfOX/chIiJVxEJJRKWir28EA4NGJfrsnTuAri5gbv729xkYNIa+vlGJ7kFERMrHR95EVGqmpgPx9OlmvGkfypUrgUqVikYkTUyAV6+AixeB8+eL5k++/XG3PkxNByghNRERKQr3oSSiUsvKCnnrSTknTgAnTxbtOZmZCRgaAo0bFy3QefvRi0V4Ug4RkWpjoSQihXjbWd4lx7O8iYjUAedQEpFCWFn9AV1dxc6i0dXVh5XVHwq9JhERKR4LJREphKGhBSwt1yv0mk2abIChoYVCr0lERIrHQklECmNuPgUWFisUci0Lix9Qu/ZkhVyLiIiUi3MoiUjhEhK2IyrqU0ilEnzYnEp96Orqo0mTDSyTRERqhIWSiJQiJycWERHTkZp6GkU7lL2tWBa9bmLSB1ZWf/AxNxGRmmGhJCKlysoKQULCFqSknEBubjSAf/6VowMDg8YwNR0Ac/OZ3BqIiEhNsVASUZmRSDKRkxMFmSwPOjoVYGhoyRNwiIg0AAslEREREZUKV3kTERERUamwUBIRERFRqbBQEhEREVGpsFASERERUamwUBIRERFRqbBQEhEREVGpsFASERERUamwUBIRERFRqbBQEhEREVGpsFASERERUamwUBIRERFRqbBQEhEREVGpsFASERERUamwUBIRERFRqbBQEhEREVGpsFASERERUamwUBIRERFRqbBQEhEREVGpsFASERERUamwUBIRERFRqbBQEhEREVGpsFASERERUamwUBIRERFRqbBQEhEREVGpsFASERERUamwUBIRERFRqbBQEhEREVGpsFASERERUamwUBIRERFRqbBQEhEREVGpsFASERERUamwUBIRERFRqbBQEhEREVGpsFASERERUamwUBIRERFRqbBQEhEREVGpsFASERERUan8H8qTVoObbj86AAAAAElFTkSuQmCC",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"## A drawing of the digraph\n",
"G5 = nx.DiGraph([\"01\", \"12\", \"13\", \"14\", \"15\", \"24\", \"32\", \"34\", \"43\", \"50\", \"51\"])\n",
"nx.draw(G5, **opts)"
]
},
{
"cell_type": "markdown",
"id": "35233bd6",
"metadata": {},
"source": [
"### $G_5$ is not strongly connected.\n",
"Show that this digraph is _not_ strongly connected (i.e., find a pair of nodes between which there is no path)."
]
},
{
"cell_type": "code",
"execution_count": 98,
"id": "0a8eddd4",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Is G5 strongly connected? False\n",
"There is no path between node 2 and node 0\n",
"There is no path between node 2 and node 1\n",
"There is no path between node 2 and node 5\n",
"There is no path between node 3 and node 0\n",
"There is no path between node 3 and node 1\n",
"There is no path between node 3 and node 5\n",
"There is no path between node 4 and node 0\n",
"There is no path between node 4 and node 1\n",
"There is no path between node 4 and node 5\n"
]
}
],
"source": [
"# easy (cheeky) way\n",
"print(f\"Is G5 strongly connected? {nx.is_strongly_connected(G5)}\")\n",
"\n",
"# proper way (breadth first search)\n",
"from collections import deque\n",
"\n",
"def bfs(start, target, graph):\n",
" visited = set()\n",
" queue = deque([start])\n",
"\n",
" while queue:\n",
" node = queue.popleft()\n",
" if node == target:\n",
" return True\n",
" if node not in visited:\n",
" visited.add(node)\n",
" queue.extend(graph.neighbors(node))\n",
" return False\n",
"\n",
"for node1 in G5.nodes():\n",
" for node2 in G5.nodes():\n",
" if node1 != node2 and not bfs(node1, node2, G5):\n",
" print(f\"There is no path between node {node1} and node {node2}\")\n"
]
},
{
"cell_type": "markdown",
"id": "04d10b75",
"metadata": {},
"source": [
"### Permuting the adjacency matrix.\n",
"\n",
"Suppose that $A$ is a the adjacency matrix of a digraph. Say there is a \n",
"permutation matrix, $P$, such that \n",
"$$ P^T A P = \\begin{pmatrix} X & Y \\\\ O & Z \\end{pmatrix}$$\n",
"where $X$ and $Z$ are square matrices and $O$ is a zero matrix.\n",
"\n",
"Explain why, if there is such a $P$, the graph is not strongly connected.\n",
"\n",
"Write down the adjacency matrix for $G_5$, and also a permutation matrix $P$ such that $P^T A P$ has the structure described above. "
]
},
{
"cell_type": "markdown",
"id": "7189daac-e967-4b05-91d5-e1f1a9319d56",
"metadata": {},
"source": [
"**Answer:** If there exists a permutation $P$ such that $P^TAP = \\begin{pmatrix} X & Y \\\\ O & Z \\end{pmatrix}$ where $X$ and $Z$ are square matrices and $O$ is a zero matrix, then we know that the graph is **not strongly connected** because:\n",
"- The block structure indicates that the vertex set can be partitioned into two non-empty subsets, $V_1$ and $V_2$, each corresponding to the blocks $X$ and $Z$.\n",
"- The zero block $O$ indicates that there are no edges from any vertex in $V_2$ any vertex in $V_1$, implying that at least one of the two subsets is not reachable from the other.\n",
"- Since every vertex must be reachable from every other vertex for a graph to be **strongly connected**, we know that the graph cannot be strongly connected.\n",
"\n",
"Finding a permutation matrix $P$ such that $P^TAP$ has the structure described above seemed really hard so I did it by hand:\n",
"![Sample Image](./workings.jpg)"
]
},
{
"cell_type": "code",
"execution_count": 102,
"id": "b5ba1e67",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[0 1 0 0 0 0]\n",
" [0 0 1 1 1 1]\n",
" [0 0 0 0 1 0]\n",
" [0 0 1 0 1 0]\n",
" [0 0 0 1 0 0]\n",
" [1 1 0 0 0 0]]\n"
]
}
],
"source": [
"A = nx.adjacency_matrix(G5).toarray()\n",
"print(A)"
]
},
{
"cell_type": "markdown",
"id": "516c362d-077d-413f-aca3-8cc7e9f87a28",
"metadata": {},
"source": []
},
{
"cell_type": "code",
"execution_count": 109,
"id": "0cb8107f-31ea-4032-92d1-25ba841833e1",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[0 0 1 0 0 0]\n",
" [1 0 1 0 0 0]\n",
" [0 1 0 1 1 1]\n",
" [0 0 0 0 1 0]\n",
" [0 0 0 1 0 1]\n",
" [0 0 0 1 0 0]]\n"
]
}
],
"source": [
"PTAP = np.array([\n",
" [0, 0, 1, 0, 0, 0],\n",
" [1, 0, 1, 0, 0, 0],\n",
" [0, 1, 0, 1, 1, 1],\n",
" [0, 0, 0, 0, 1, 0],\n",
" [0, 0, 0, 1, 0, 1],\n",
" [0, 0, 0, 1, 0, 0]\n",
"])\n",
"\n",
"P = np.array([\n",
" [1,0,0,0,0,0],\n",
" [0,0,1,0,0,0],\n",
" [0,0,0,0,0,1],\n",
" [0,0,0,0,1,0],\n",
" [0,0,0,1,0,0],\n",
" [0,1,0,0,0,0]\n",
"])\n",
"\n",
"print(P.T@A@P)\n",
"\n",
"np.testing.assert_array_equal(PTAP, P.T@A@P) # check that they're equal"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "dba70cf0-67ed-42a5-beac-1d0f7cf6557e",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.13.2"
},
"toc": {
"base_numbering": 1,
"nav_menu": {},
"number_sections": true,
"sideBar": true,
"skip_h1_title": true,
"title_cell": "Table of Contents",
"title_sidebar": "Contents",
"toc_cell": true,
"toc_position": {},
"toc_section_display": true,
"toc_window_display": false
},
"varInspector": {
"cols": {
"lenName": 16,
"lenType": 16,
"lenVar": 40
},
"kernels_config": {
"python": {
"delete_cmd_postfix": "",
"delete_cmd_prefix": "del ",
"library": "var_list.py",
"varRefreshCmd": "print(var_dic_list())"
},
"r": {
"delete_cmd_postfix": ") ",
"delete_cmd_prefix": "rm(",
"library": "var_list.r",
"varRefreshCmd": "cat(var_dic_list()) "
}
},
"types_to_exclude": [
"module",
"function",
"builtin_function_or_method",
"instance",
"_Feature"
],
"window_display": false
}
},
"nbformat": 4,
"nbformat_minor": 5
}