{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# IA Paper 4 - Mathematics - Examples paper 1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Question 5: Plotting vectors in 3D\n", "\n", "Find a vector normal to both the lines \n", "\n", "\\begin{align} \n", "\\textbf{r}_1 &= (1,2,3) + \\lambda (4,5,6)\n", "\\\\ \n", "\\textbf{r}_2 &= (2,3,2) + \\mu (5,6,7)\n", "\\end{align} \n", "\n", "(i) Hence find the shortest distance between the two lines. Check that your answer seems reasonable by plotting the lines with Matplotlib. \n", "\n", "(ii) Calculate the shortest distance between the two lines with Python and find the points where the two lines are closest together.\n", "\n", "__Hint:__ You will need to import and use a module from `mpl_toolkits`, e.g. \n", "\n", " from mpl_toolkits.mplot3d import Axes3D" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Solution" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "(i) Import all relevant modules. Here, we will need `NumPy`, `PyPlot` from `matplotlib`, and `Axes3D` from `mpl_toolkits`" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# Import modules\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from mpl_toolkits.mplot3d import Axes3D\n", "\n", "# Special command for plotting inside a Jupyter notebook\n", "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We now compute two points one each line to be ready to plot the lines. It will be convenient to store the points as two-dimensional array, with each colum holding the coordinates of a point. \n", "\n", "Let the shortest distance between two lines is the length $|\\vec{\\boldsymbol{P} \\boldsymbol{Q}}|$ of their common normal, where $\\boldsymbol{P}$ and $\\boldsymbol{Q}$ are points on each corresponding line that are closest to each other.\n", "\n", "If the lines are:\n", "\n", "$$\n", "\\begin{aligned}\n", " \\boldsymbol{r}_{1} &= \\boldsymbol{M} + \\lambda \\boldsymbol{t} \\\\\n", " \\boldsymbol{r}_{2} &= \\boldsymbol{N} + \\mu \\boldsymbol{s}\n", "\\end{aligned}\n", "$$\n", "\n", "where $\\boldsymbol{M}$ and $\\boldsymbol{N}$ are arbitrary points on the lines, the vector $\\vec{\\boldsymbol{P} \\boldsymbol{Q}}$ is in the direction:\n", "\n", "$$\n", "\\begin{aligned}\n", " \\boldsymbol{s} \\times \\boldsymbol{t} &= \\boldsymbol{n} \\\\\n", " \\boldsymbol{\\hat{n}} &= \\dfrac{\\boldsymbol{s} \\times \\boldsymbol{t} }{| \\boldsymbol{s} \\times \\boldsymbol{t} |}\n", "\\end{aligned}\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To plot the lines in Python, we need to generate two points that lie on one line. We can simply achieve this by creating first a 3-element array `M` to store the coordinates of $\\boldsymbol{M}$. " ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# Definition of the lines\n", "# First line\n", "M = np.array([1, 2, 3]) # Point on line\n", "t = np.array([4, 5, 6]) # Direction" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Then, we can store the two points on the first line $\\boldsymbol{r}_1$ in a $3 \\times 2$ matrix - the first column is the point $\\boldsymbol{M} + \\lambda {t}$ and the second column is $\\boldsymbol{M} - \\lambda {t}$. By creating our `numpy` array `lam`, we can achieve this by:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "# Create 3x2 matrix where each column is a point on the first line\n", "lam = np.array([-2, 2])\n", "r1 = np.array([M, M]).T + np.array([t, t]).T*lam" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Similar for the second line. " ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "# Second line\n", "N = np.array([2, 3, 2]) # Point on line\n", "s = np.array([5, 6, 7]) # Direction\n", "\n", "# Create 3x2 matrix where each column is a point on the second line\n", "mu = np.array([-2, 2])\n", "r2 = np.array([N, N]).T + np.array([s, s]).T*lam" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The vector $\\boldsymbol{\\hat{n}}$ is perpendicular to both lines, hence we can find it using the `np.cross` command, which calculates the cross product of two vectors. The normalised vector can be obtained by dividing its vector with its norm (using `np.linalg.norm` to compute the norm). " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now since $\\boldsymbol{P}$ lies on the first line, its coordinates are of the form $\\boldsymbol{M} + \\lambda \\boldsymbol{t}$ for some $\\lambda$. \n", "\n", "Therfore, $\\boldsymbol{Q}$ must be of the form:\n", "\n", "$$\n", "\\boldsymbol{M} + \\lambda \\boldsymbol{t} + d \\boldsymbol{\\hat{n}}\n", "$$\n", "\n", "But $\\boldsymbol{Q}$ also lies on the second line. This gives:\n", "\n", "$$\n", "\\boldsymbol{M} + \\lambda \\boldsymbol{t} + d \\boldsymbol{\\hat{n}} = \\boldsymbol{N} + \\mu \\boldsymbol{s}\n", "$$\n", "\n", "Taking the dot product with $\\boldsymbol{\\hat{n}}$ for both sides, noting that $\\boldsymbol{\\hat{n}} \\cdot \\boldsymbol{t} = \\boldsymbol{\\hat{n}} \\cdot \\boldsymbol{s} = \\boldsymbol{0}$, gives us:\n", "\n", "$$\n", "\\boldsymbol{d} = (\\boldsymbol{N} - \\boldsymbol{M}) \\cdot \\boldsymbol{\\hat{n}}\n", "$$" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Distance between lines at nearest point: 0.8164965809277261\n" ] } ], "source": [ "# Normal vector perpendicular to both lines\n", "n = np.cross(t, s)\n", "n = n/np.linalg.norm(n)\n", "\n", "# Compute the distance at the nearest point\n", "d = (N - M).dot(n)\n", "print(\"Distance between lines at nearest point: {}\".format(d))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To plot the lines using the pyplot we create a 3D plot. The 'camera view' can be changed to change the viewing angle." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZwAAAGoCAYAAAByqlOCAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAACSwklEQVR4nO2dd3wb9f3/X6ct2ZKXLA/J29kLMkgDlB8jgTSQEKAlAcoIm5JC2BAgpBQSOvJlBspIgEIhNBAItBBWSSkQsogTsh1PyduSh6w97veHueMkS7bmafjzfDz0sC1Ld5+T7j6ve4/P+03RNA0CgUAgEOKNINEDIBAIBMLogAgOgUAgEHiBCA6BQCAQeIEIDoFAIBB4gQgOgUAgEHiBCA6BQCAQeIEIDoFAIBB4gQgOgTcoijpEUdSZiR4H31AU9RpFUY/FYbuj8vMkpC5EcAgxh6KoRoqi5vo/T9P0JJqmtydgSGlJNJ8nRVFvUhTVRlFUP0VRxymKup7zv0aKomwURZkpiuqlKOo7iqJupiiKzBeEqCAnEGFUQVGUMNFjGA4ex7cWQDlN0yoAiwA8RlHUDM7/F9I0rQRQBuAJAPcB2MDT2AhpChEcAm/4Wz4//X03RVEHKIrqoyjqHYqiZD/9r5iiqPcoiuqiKKqBoqjb/LZ1H0VRLT/dhR+jKOqcIPu8jqKozymK2kBRVA+AO0Mc6/0URdX9tP3DFEVdFMq4f/r/yRRF/fDTe98BIAu4kyjGxxnH3FDG5A9N04domnYwf/70qArwuj6apj8EsATA1RRFTQ51fASCP0RwCInmUgDzAVQAmArgmp9cNx8B2A9AC+AcACsoijoPACiKGgdgOYBZP92FnwegMcj2pwH4BYCtAPIAPBPiuOoA/BJAFoA/AHiToqii4cb909gkAD4A8AaAXACbAVwyzH4iHV8gAo4pGBRFPU9RlBXAUQBtAD4O9lqapncBMGDwMyEQIoIIDiHRPEPTdCtN0yYMisxJAGYByKdp+lGapp00TdcDeBnA0p/e4wEgBTCRoigxTdONNE3XBdn+NAB/pWn6Q5qmvQBkFEXtoihqYLi7dZqmN/80Li9N0+8AqAVwygjjBgbFQwzgKZqmXTRNvwtg9zDH7z++aRRF7aAo6muKot6mKEo8zHv9CTamYMf4OwBKDIrIFgCO4V4PoBWDIkogRAQRHEKiaef8bgWQicG4QfFPAeteiqJ6AawEUAAANE2fALACwGoAnRRFbaIoqjjI9qdi0Mrg7uN8AO8ONyiKoq6iKKqGs//JANQjjBsAigG00L5l2JuG2ZX/+PQAzqZp+gwMWm0XDjdOP4KNKSg0TXtomv4GgA7ALSO8XAvAFMZ4CAQfiOAQkhE9gAaaprM5DyVN0wuYF9A0/RZN06djUJxoAH/y3whFUWUYtDaOct7nomm6a7id//S+lzHotsujaTobwEEAVAhjbwOgpSiK+9rSYfbjP742mqZtP/3pBOANYZ+xQIQAMRwGiqJmYVBwvuFpPIQ0hAgOIV6IKYqScR6iMN67C4D5p8QAOUVRQoqiJv806YGiqHEURZ1NUZQUgB2ADYEn5mkAfvzJVRUOGRgUsa6f9rcMgxZOKOwA4AZwG0VRYoqiLoavKy6k8f0kRudi0DUWUyiK0lAUtZSiqMyfPtvzAFwG4MsAr1VRFHUBgE0A3qRp+sdYj4cweiCCQ4gXH2NQCJjH6lDfSNO0B8AFGIxBNADoBvAKBgP4wGD85omfnm8HoAHwQIBNTQNQE+7AaZo+DGAdBsWjA8AUAN+G+F4ngIsxGLA3YTC7a0uQlwccH0VRKgwmHVxD07QrvNGHBI1B95kBQA+AvwJY8VM2GsNHFEWZMWhtPgjg/wAsi8NYCKMIinT8JIxGKIp6DYPB+oOJHguXnyzBDwGso2l6iMVBIKQyxMIhjDooivoYg+6qlymKuibBw/HnMgCzATxMUdR2iqKWJHpABEKsIBYOgUAgEHiBWDgEAoFA4AUiOAQCgUDgBSI4BAKBQOCFcNZGcCGBHwKBQCAEIugCaWLhEAgEAoEXiOAQCAQCgReI4BAIBAKBF4jgEAgEAoEXIk0aGILL5YLBYIDdbo/VJuOOTCaDTqeDWBxOyxECgUAgREKklQaGvKmhoQFKpRJ5eXnwrcyenNA0DaPRCLPZjIqKikQPh0AgENKF+Gep2e32lBEbAKAoCnl5eSllkREIBEIqE9MYTqqIDUOqjZdAIBBSGZI0QCAQCAReIIJDIBAIBF4ggkMgEAgEXkhrwfF4PIkeAoFAIBB+ImbrcJKF3/zmN8jNzcX+/ftxwQUX4KGHHkr0kAgEAoGAeAnOihVATU1st3nSScBTT434sh9//BGXXnopvv/++9jun0AgEAhRkVYuNbvdDpPJhFWrVgEA6uvrcd111+HXv/51gkdGIBAIhPhYOCFYIvHg0KFDmD17NkSiwcOqrKzEhg0biOAQCARCEpBWFs6PP/6IqVOnJnoYBAKBQAgAERwCgUAg8EJaCc66deuwZMkS9m+j0Yibb74Z+/btw9q1axM4MgKBQCCkXVo0l7y8PPztb39L9DAIBAKBgDSzcAgEAoGQvBDBIRAIBAIvEMEhEAgEAi8QwSEQCAQCLxDBIRAIBAIvEMEhEAgEAi8QwSEQCAQCLxDBIRAIBAIvEMEhEAgEAi+kteCQjp8EAoGQPKRdaRvS8ZNAIBCSk7gITgIbfpKOnwQCgZCkpJVLzb/j5wcffIAbbrgBS5YswWeffZbg0REIBMLoJi4WToIafg7p+Ll48WIsXrwYPT09uPvuu3HuuecmZmAEAoFASC8LJ1gDtsceewy33nprAkZEIBAIBIa0FhyapnHffffhV7/6FaZPn57AkREIBAIhrbLU1q1b5/P3s88+iy+++AJ9fX04ceIEbr755gSNjEAgEAgUTdORvG/Im44cOYIJEyZEPyKeSdVxEwgEQpJCBftHWrnUCAQCgZC8EMEhEAgEAi8QwSEQCAQCL8RUcCKMByWMVBsvgUAgpDIxExyZTAaj0ZgykzhN0zAajZDJZIkeCoFAIIwKYpal5nK5YDAYYLfbox8VT8hkMuh0OojF4kQPhUAgENKFoFlqMRMcAoFAIBBA0qIJBAKBkGiI4BAIBAKBF4jgEAgEAoEXiOAQCAQCgReI4BAIBAKBF4jgEAgEAoEXiOAQCAQCgReI4BAIBAKBF4jgEAgEAoEXiOAQCAQCgReI4BAIBAKBF4jgEAgEAoEXiOAQCAQCgReI4BAIBAKBF4jgEAgEAoEXiOAQCAQCgReI4BAIBAKBF4jgEAgEAoEXiOAQCAQCgReI4BAIBAKBF4jgEAgEAoEXiOAQCAQCgReI4BAIBAKBF4jgEAgEAoEXiOAQCAQCgReI4BAIBAKBF4jgEAgEAoEXiOAQCAQCgReI4BAIBAKBF4jgEAgEAoEXRIkeAIFASC5ommZ/Mg/u3wDg9XpBURTEYjEoigJFUQkbLyF1IIJDIKQJgYTB/3ev1wtgUDC4gsJ9GI1GyOVyKBSKoPthxIbZnkAggEAggFAoJAJECAoRHAIhCRhOJJiH1+uFy+WCSCRi/w70nlDhigIjEhRFoa+vDyKRCEKhcNj3M+LC7NvtdsPtdgP4WYCYBxEgAkAEh0CIipFEAkBIVkUo+3E4HKirq8OkSZOCikUsJvZwt8G8nvnJFSAGIkAEgAgOYZTCFQfm53CWBVc8Ar2mubkZZWVlAffjLw7c38MRCpfLBYqiRrQ8oiVcS8mfUASIOQ4iQKMLIjiElCPUoLbH44HL5YJYLA7LqmBEIhyxMBqNqKysjMfhJoRYCkAgAQLgI0BGoxEFBQWsAMV6DITkgAgOgTdCsSpi5X6iKAoWiwV6vR4TJkxg/xdr9xMhfAIJUG1tLfLy8nxew7WAuK8npC5EcAghEYrrKdCDERDue9ra2pCbmwupVOqz/eGsCn+RCGXyYVw1zIRFSE6Y75L5ngJZQFwBIjcMqQsRnDQn1FRZj8cDr9cLgUAQlVXBMJz7qa+vDzk5OXGPRRAiI9oYTrSE4oJjbiS4adhEgJIfIjhJTCipsoEsinBTZWmaRmtrKwQCAYqLi9nnI7EqCPGDTyFIpu860PlH0zQ8Hg88Hg/7P/8suGQ6BsIgRHDiQKxSZU0mE6RSKTIyMoLuJ1YZUNyLNd4wrrN02Q+fxHIS5a6d4T4sFgs6OzvR29sb8P/MuUtRFLKyspCXlzfERRpv/M/rQAIUyA1HSCxEcDjEOlU22AkeqlCYzWYAgEqlivGRDiUdJ+d0JpBYeDyegAIRSCyAwe9cJBKxizyZ3xnXqkKhYJ/jvo5xhQqFQvT398NoNEKv18PtdiM7Oxu5ubnIzc2FRCLh7fMIJEA0TePQoUMoKiqCUqkk1RCSgLQRnFBTZUcKcg+3fYqisHfvXsyYMYN9PpkW4BFSA65YhCISzGtcLhecTid27drF3r37CwLz4IoF93WhrHk5duwY8vPzkZWVNezrBAIBcnJykJOTAwDweDzo7e2FyWRCU1MTPB4PcnJyWAESi8Ux+wxHgjlGZu0Sc0MVqBoCESD+SAvBueGGG3DHHXf4xB/8iZX7iY+Fd9x98WV1UBTlc/cbb1LVmmJcN/6i4HK5YDAYggoJ19UDYESxCPR/u92OhoYGTJ48OZEfQVCEQiHy8vLY9GaPx4Oenh6YTCY0NjbC6/UiOzsbeXl5yMnJ4UWAmOt+uMWoRID4Iy0Ep7u7Gy6XK+2yntLVzZWoCzmYWIzklvJ4PD4p24HEgPmfXC4PKCKxWE2fahOgUCiEWq2GWq0GMJhlxghQfX09aJpmrR++z/NwBIhUQ4gdaSE4QqGQvYMkREayi5u/WHDdTMFExOl0wmazYdeuXQDgIxZCoRBisdhHPKIRC6PRCK1Wy8dHkbKIRCLk5+cjPz8fwKAAmUwmGI1GWK1WfP/996wAxSptfrhYKpfhBIj7GlKOJzrSQnBEIlFaCk6yi0CocDOIGCHo7e2F1WoNamUwQsIlkEgwD5lMNuQ5p9OJxsZGTJkyJUFHnpqEOklHi0gkgkajgUajgclkwowZM2AymdDV1YXa2loIBAJWgLKzs3n1YISyFsjlckEgEEAulxMBCpG0EByBQOBzIqQLfAtOoH0xGXmhBra5f3O3xxUJm80Gs9mMjIwMiEQiNvXbX0wYX3qkMK6wdCHZbj5i/dmKxWIUFBSgoKAAAOB0OmEymdDR0YFjx45BJBL5CFAoKfyxEs9AAtTV1QWXy8UWbSXleEYmLQRHLBanpYUTLSOJBVckzGYz3G43uru7fcSCWVAXKD2WKxaB/h/sYjt69CiKi4t5SfdON0bTBCaRSFBYWIjCwkIAgMPhgMlkQltbG44ePQqxWMwKUFZWVlABisdnxi3Hw1TnAEg5npFIC8ERCARpJziMD9nlcsFisYScRuv/OfiLBdeCkEgkbPqsRCKBx+NBWVlZ1JYFIbVJNkuKQSqVoqioCEVFRQAAu90Ok8mElpYWHD58GFKplBUglUrlIwTxgGs9kXI8oZEWgsN3DGckM93fsghlrUUgN5Tb7WYX1/lbEFyx8BeSSE5ih8MBu90OkSj+p0S6xKbSmVSYCGUyGYqLi9nlEDabDSaTCXq9Hv39/ZDJZLDZbBgYGIBcLuf1mEg5nsCkheAIhcKYxnC4Ae5AmU8NDQ0BxYQ7iQZyQ/mLRaDgN/eEa2lpAQDesp+ICBDCIVbxkVidd3K5HFqtlr1erFYr9u3bh5aWFhw/fhwKhYK1gJRKZdRjD/f4QynHk+4ClBaCIxKJWMGJJMAdjlhQFIXMzEyIxeJhxSJW8LnwM91Ix2NKV+LxXSkUCshkMkyYMAFSqRRWqxUmkwkNDQ1s0gojQJmZmWGPgabpqGoPBhIgpnI7MHjja7PZkJOTkzYCxKvgXHvttfjXv/4FjUaDgwcPAgBWr16Nl19+mc3NX7NmDRYsWDDsdg4dOoRVq1ahr68P/f39aGpqwieffAKBQIAnnngCGo0mYNxCLBYHXGvBBPZCoaOjA3l5ebykaKar64nP40rHzy/e8P2Z8VXINSMjAxkZGSgpKQFN07BYLDCZTKirq8PAwAAyMzNZAcrIyBhxco/1uP3dcDabDSdOnMBJJ53EvibVqyHwKjjXXHMNli9fjquuusrn+TvuuAN33313yNspLy/HX/7yF2RlZUGlUuH+++/HL3/5S5xzzjmxHnJA+LQ60nFfhOSH74ksXvsL5vZiPBWZmZkoLS0FTdMYGBiAyWRCbW0tLBYLlEolK0AKhSLoduIJN8U6Hcrx8Co4Z5xxBhobG6PeTkZGhk//+FjHcIYj2b9QAiHV4CuTbDgoioJSqYRSqURZWRlomobZbIbJZMKxY8dgtVqhUql8BCjeC2SD1X9M5XI8SRHDee655/D3v/8dM2fOxLp169jqs6HCZ5Zaulod6bqvdCKdP7NkmxgpioJKpYJKpUJ5eTlomkZ/fz9MJhOOHDkCu90OihrsB5SbmwuZTBbzMYwkaKGU40k2AUp4s/dbbrkFdXV1qKmpQVFREe66666wt8FnLTUyWRISCR8TRjrFcGJZaSArKwsVFRWYMWMG5syZg6ysLLjdbhw8eBDffvstDh48iNbWVtjt9hiMPLIxcjPdmLmKya612+2w2+1s2ahEzGMJt3CYMhbAYJuBCy64IOxtpKvgpOu+CMlPou+EY0k8jkUgEEAmkyEjIwOFhYXwer3o6+uDyWTCjz/+CJfLxVo/kXZDjVYsQ12M6vV6IZVKeSnHk3DBaWtrY1cOv//++xH1+uCmRacT6SwCfGUmpevnl27EM2kgXnAFgduMrqqqCl6vl21GF2k31FjHiIIJ0Pfff485c+YAAJvNGy94FZzLLrsM27dvR3d3N3Q6Hf7whz9g+/btqKmpAUVRKC8vx4svvhj2dtPVwuEbsuaHkAjifd7xnQEHwKfSNTC0G2oozejinZTAFSCBQMB2RI4nvArO22+/PeS56667Lurt8mnhpKubi4gAgSERN1SpaOGEg383VLfbzQoQ04yO246b29QvnUi4Sy0WCIXCtGyPTKwpQqLgc6JLhaSBWG9bJBIF7YZaV1cHihrsHstUReGjxiEQ/+89LQSH77TodCQdral0/a7SkVT8rmIpZv7dUF0uF5qbm9He3o7du3ezMaK8vDzem9HFkrQQHKFQCKfTycu+0tWlRkh+0vVcSFULB4ifUIrFYmRnZ8PlcmH8+PFwOp3o6elhm9EJhcKEdUONhrQQHKaLJB+kqwik63Gl2zGl4zocIHUtnHhvn/lcJBJJSN1Q8/Lyhm1Gl2jSRnD4TIsmFk50pOtxpRPpEsMBEpOlFu/tB+uGyjSjk0gkrAAxzeiSgbQRnHSN4RBxI4wGUtXCSZTg+BOsGyrTjE4qlSIvL4/thpqozzstBCdd1+Gk4kVIIIQLudEJTDSCFqgbqtFoRFNTE8xmM2QyGWsB8fn5p4XgkOKdsdkXn5BJJnkJ9buJxyr4VCKZLJyRkMvl0Ol00Ol0oGmabcfd0NAAi8WCH374ATk5OSgvL0+fSgPxIl0tHL5JN3FLxUksETAFHl0uF1vo0Wg0gqIon+e5v9M0DbFYzK4licZNk6rXUyoJDheKoqBQKKBQKKDT6fDtt99i3LhxMBqNcY/1EMFJYvgWt1S98Ak/t1YPJA6BfudWC6Yoiu1+KxaL4XK5YLfbIZfLIZPJArZUZyam7u5uNDU1ob+/HyqVihWgUGqFpQOpKDj+MN1Q5XI5WfgZCiKRCC6Xi5d9paubK11daqkiokw/+2BC4XK5YLPZ0N/fjwMHDrCiwSAQCHxEg/u7QqEY8rxIJAr6nR84cAA6nW7EHi8SiYSNEzD9Yrq7u7Fv3z7QNI28vDyo1WpkZ2ePeH6lojWaKufWcPgfAxGcEOCztA2xOqInFSeXUKBpGh6Px0cw/EXD/3nueSsUCoOKhkwmg1QqhcfjwdixYyESidi2wvE4jnC3y/SLycrKQlVVFVwuF4xGI1paWnDo0CFkZmay1o+/kKXqOZ6qLjW+98ElLQSHrMNJrX0lM/7xjFB+p2kaVqsVe/bsCSgaYrEYEokECoViiJURzgrx/v5+NsMo2RGLxew6EZqmMTAwgO7ubvz4449wu93Izc2FWq1mu/um4k0IEZzwSQvB4dvCISQ3jGvKarXC7XbDaDRGFM/wF43h4hm7d+/GrFmzEnzkyQlFUVAqlVAqlaioqIDb7WZXyR89ehRisZj9vhQKRaKHGzJ8Vhrgax/EpRYCpD1Beu1rpHhGMNFgYOIZQqEQdrsdvb29EcczCLFHJBJBo9FAo9GApml0d3ejtrYWhw8fhtPpRE5ODtRqNXJzc5O+RhixcMIjLQQnXdOiU9XNdfCgAFu2iPDAA1a43UPjFr29vaAoCr29vWHHM6R2O5SdnaAnTfJ5PlA8w+Vy4eDBg6iqquL7I0hp+JyEKIpiLcepU6fC4/Ggp6cHXV1dqK2thUQigVqtRn5+PhQKRVLdGPDhUot3mjIRnAhI1xgOnwQSt0DxjGBBcG484/XXK/DGG5VoaenA736nh1gsGiIOUqkUGo0m7HiG/NJLIfjhB1j/+1/QWm28Pg5CghAKhT59YqxWK7q7u3Hs2DHYbDYf64evHjHDQSyc8Ej8NxYD0jWGEwsLJ1TXlMPhgNlsxu7du0eMZ4hEomHjGbNmARKJExs2lKKqqgD33uvbOoKmaUgkEmRlZYV9PI5HH4XinHMgv+wyWLdtA1LI508ITrDrSqFQoLS0FKWlpfB6vejp6UF3dzfq6uogFAqRn58PtVqNzMzMtEvtJ4KTpKRraRvg51TbaOMZI63PcLlc0Ov1mDp1atQnIEUB69Y5YLVSeOwxKRQKGsuXx2adlHf8eNg2bIB8yRLIfvc72F99dXCHo4R0bE8Q6v4EAoFPm2a73c6Kz8DAALKzs6FWq5GXlxfX8iwM6dACmghOBAiFwqROGohENLxeL2iahsPhQE1NzbDrM/yfj2R9hs1mg0AgiNnJJxAA69fbYbUCK1fKkJEBLFsWG9HxzJ8P5x/+AOmqVfBOmgTnPffEZLvJDp9CwHd7gkj2J5PJ2PpgXq8XfX196O7uRmNjIyiKglqtZjMQk2W9UjJtn699cEkLweHDwvGPZ5hMpmFXhTPxDO4YA4kGsz4jkGjYbDacOHECU6ZMieuxxQuRCNiwwQ6rlcKKFYOWzpIl7phYic7bb4fg0CFI//hHeCdMgPuCC2I0akIqwrRgzsnJwZgxY+B0OtHd3Q2n04lvv/02LmV3iOCET1oITqhZaiPFM/xFI9D6DJfLBZFIBK/X6xPPCCQm0WaYpENGnEQCvPmmDb/+tRw33yxDRoYd06bFYMMUBfuzz0Jw4gRkN9wA6+efwzt5st9LUjPLbzQS60mPKbvT2NiIOXPmBC27k8zdMYngJBG1tbXo7OxET08Pjh49CqPRiPvuuw/jx4/H7NmzA8YzKIryWcjHtTpCXZ9hMBggEAjYPhPxJF0mTLkc2LTJhsWLFbjmGhmefTYDZ57piH7DMhlsb78Nxf/7f5AvXQrr9u2gf8puIkROssZwIiWasjvDQSyc8OFVcK699lr861//gkajwcGDBwEAJpMJS5YsQWNjI8rLy/HPf/6TLXcxHK+99hr6+/uRk5PDnrBTp07FhAkTUFpaGlU8YzjSRQT8ifdxKZXAu+9asXChArffXoKXXzbgwguj3y5dWDgoOvPnQ/bb38L24YeDZhUhKvgOhvO5v3DK7gxn/RDBCR9ebclrrrkG27Zt83nuiSeewDnnnIPa2lqcc845eOKJJ0La1uOPP45nn30Wjz76KG666SbI5XJcccUVmD59OjIzM1k3V7yChXyQbuKWkwN88IENxcUu3HyzFnv2xOb0806fDvv69RB99x2kd98NpNFnNhpI5DnOlN2pqKjArFmzMGvWLOTk5KCjowM7duzADz/8gObmZlitVt7HxsfnwndpG14F54wzzkBubq7Pc1u3bsXVV18NALj66qvxwQcfhL1dvrPU+CIdYjj+qNU0NmxoRk6OBxdfrMDBg7E5Bd2/+Q0cd98NyWuvQfzSSzHZJiE4sb4OkiW9mCm7M3HiRJx66qkYN24caJrGkSNH8N133+HIkSPo6uqKa/YbF2LhxJiOjg4UFRUBAAoLC9HR0RH2NtK5PUE6UlDgxquv6qFQ0LjwQjlqa2Nzwjsfegiu88+H9P77Idy+PSbbHI3wPQkl6/XENCYrKyvDjBkzMHv2bOTn56O7uxs7d+7EwMAAmpubMTAwEJdj4Nulxsd3nnDB4UJRVEQHTYp3pt6+dDoXPvpo0E2xaJECTU0xONkFAthfegneceMgv+oqCOvrk3Yyi5RksQRGI0zZnQkTJuDUU0+FTCaDUChEbW0tvvvuOxw6dAidnZ0xm4v4Fhw+rpWEC05BQQHa2toAAG1tbdBoNGFvg89KA0Dy3pGlGmPG0Ni61QaLhcLChQq0tcXg4lIqYdu0CbRAgIzLL4dwYCD6bSYJ6XrexXNhZjwRCAQoKSnBySefjDlz5qCoqAg9PT3YvXs3du3ahfr6epjN5ojHQZIG4sCiRYvw+uuvAwBef/11XBhB6hKxcFJrX1wmT/ZiyxYrurspLFokR3d39Cc/XV4O+5tvQlBfj4mPPQbweDNCSC74irEIBALk5uZi3LhxmDNnDqZOnQqpVIq6ujp8++23+PHHH9He3g6XK/RqG0RwouSyyy7DnDlzcOzYMeh0OmzYsAH3338/Pv/8c4wZMwZffPEF7r///rC3m67FO4H0vKv1F7eZM7345z9taGoSYPFiOXp7o9+H5/TTYfvzn5G3cyekjzwS/QZHEYmoEZaKFs5wyGQyaLVanHTSSTjttNNQUlICs9mMvXv3YufOnairq0NfX9+IfaHSTXB4XYfz9ttvB3z+yy+/jGq7yV5LLZp9jRZOP92Df/zDhqVL5bjkEgW2brUiMzO6bTqXLUPP119D+8wz8EyYAPcVV8RmsISYEq/rKVmKa1IUhezsbGRnZ/uU3WlqakJ/fz+USiVb9ZpbdocITpIiEAh4r+DMB6PBpcZl3jwPXnvNjquukmHpUjk2b7ZBLo9umyduvRUFPT2Q3X47rGPGwHvKKbEZLCFmxHPSSwbB8Ycpu1NcXAyapmE2m9HV1YV9+/bB6/WyVQ+8Xm/aCU7CYzixgO+1MYToCSZuCxe68cILdvzvf0JcdZUcTmfAl4UERVHwCoWwvfYaaK0W8ssvB9XSEvkGCSlFom+gQoGiKKhUKlRVVWH27NmYOXMmlEolWlpa0NXVhaNHj8JgMMBut8dl/0Rwkpx0dakl03EtXerGU0858OmnItxwgwxRe0vz8mB75x1QNhvkl10GJGDVeCzg6/tJlxhOPLcbL5iyO5MnT4ZarUZpaSlcLhd+/PFHfPfddzh27BiMRmPMYtbEpZbkJIPraTSwbJkLFstgLx25HHj+eTuiKeqbLo3bUm0CDYV4xnBSnczMTBQUFKCiooJti9LR0YGjR49CLpez7jdFhJ1v+S5tkzaCQ1ZGR0ciOpmOxPLlLgwMUFizZrCXzrp1jqg0wqdx28SJcN57b+QbIyQ9yZI0ECn+42fK7jBrFS0WC7q7u3HkyBE4HA7k5ORArVYjNzcXQqEwon3Em7QRHL5I5RM4WQjnM7zvPicsFgpPPy1BZiaNP/zBGZXoOG+/HYLDhyF97LHBxm0LF0a+sTQmFTp+pjsjfS4ZGRls6R2Px4Oenh50d3ejtrYWEomEtX4yMjKCbocITpKTri61ZL3gKQp49FEHBgaAp56SIjMTuPfeqDIJYH/mmcHGbTfeGLBx22jD4/HA5XL5NB9saWnx+Zt5cCt6MKVeNBoNVCpVVOdQKraAjjfhjJ/5LtQ/9YOy2Wys+FitVmRnZ0OtViMvLw8i0c/TPhGcKOCrems6Ck4yQ1HAunUOWK0UHnts0L22fHnoK7aHIJPB9tZbade4zev1+oiDv1j4t0BnEAqFPo0JmYC0XC6HWCxmH9z+Usyju7sbjY2NGBgYQE5ODjQaDXJzc8PqohnP6ymVBQeIfPxyuRwlJSUoKSmB1+tFb28vuru7UV9fz4pTfn4+vF4vrx1P00JwSFp06hHuJCMQAOvX22G1DiYSZGQMJhYMx3A3B8ncuI3bCp376O/vh9lsxtGjR31aozPHKBAIfMSB+V0mkyEzM9NHPIZrTNjb2wutVjviOEUiEdvIzOv1oqenBx0dHTh27Bgb7Far1T531HyS6jeGsbqBZsruMK1hHA4Huru7UVdXh56eHsjlcohEIuTm5obV8TQS0kJwAH5PrlQ/kRNNpBeRSARs2GCH1UphxYpBS2fJkshzppnGbfLrroP07rvhePrpmGaucYXDX0AC/c0VDq5gcH+XSqUoLi72aYeeDDdBAoEAeXl5yMvLA03T6O/vR2dnJxoaGiAWi9lgd7AJjaRFDyVe84xUKoVWq4VWq0VDQwM8Hg8sFgtcLheUSmVc9smQNoLDF+nsUksF0ZZIgDfftOHXv5bj5ptlUCjsWLgwctFx/+Y3cBw5Aulf/wrvxIlw3XxzwLFyBSKQWNhsNtTU1MDlcrHHRlGUj1hwHwqFYoi7aqTJsaenB16vFyqVKuLj5QOKopCVlYWsrCyMGTMGVqsVnZ2dOHDgALxeL/Lz81FQUMAGs9O9tE2k8DV+hUKB4uJiXupREsEJk3QWHL6I9iKSy4FNm2xYvFiBZctk2LTJhrlzR64ITdO0T4CcFYxrrkHx3r1QPfAA6qVSmKZPh8vlYi9Af+Hg/s64I0wmEyZOnAiRSBQ3n3iqnncKhQLl5eUoLy+H0+lEV1cXamtrYbPZ2BTeUNN4wyFVPy8GvmqpkRhOkpPqJ3IwUuVukKZpyOUevPmmCRdfnI3LL5dhw4ZWnHyyeYgFYrFYsGvXLgCDx8cEyP3Fw/TUU5BfeinGr1qF3k8/hXDKlLAuRKFQ6FN4MV6kyncUDIlEwrpzPB4PjEYjm3RgsVhQUFCAvLy8mAlQKn9epHgnIaVP4GSDpulhM6uGS8kViUQQiURYt06OW26ZgBtvLMLGjW7MmCHxEZT9+/fjlBALdjo3b4bozDORddVVsH75JZCVFa9DJ2BQpDUaDdxuNxwOB7Kzs9HZ2YkTJ05AJpOhoKAA+fn5EQt5qt8Y8iEGTIFQrhs4nqSV4JC06OiI5rg8Hs+wYsF9zm63w+v1orOzc0hKLjfG4f+cQCAI+P1+8okH8+dTuOmmMnz8sRWTJ//siw7nfGAat8kXLYL82mth++c/gTi4egi+MNdtTk4OcnJyAAADAwPo7OzEvn37QFEUm3QQTgkXEsMJDWLhRADThC3e/sh0FhwgeEpuoOc8Hk/AlFyugMhkMiiVSh/xMJlMsFgsqKioiMmYi4tpfPihFfPnK3DhhXJs22bFmDGRfUee00+H469/hWzFCkgfeQSOxx6LyRgJ4ZGZmYnMzExUVlbCbrejq6uLLeGSn58fk8WmBPDWuJIhbQSHaTPNR85/KgjOcCm5gVxXNE3DarXihx9+CGhxSCQSZGRk+Pwv0pTceEwS5eU0PvpoUHQWLVJg2zYrysoi+55c114LwaFDkJDGbbww0p28TCZjFzG63W6f5mW5ublBF5vG00JIlsrq0cJNGuBDvNNGcIRCoY+PP14kosX0SNYG928ugbKqJBJJ0JTc3bt3Y+bMmbwdV6wZM4bG1q02LFigwMKFCnz6aeRtCBxPPAHB8eODjduqq+GdPTuGIyVEykiLTTUaDfLz83m58UwH64okDUQIY+HEm0hdasxajlAWAHLXclitVhw8eDBoSq6/xRGNSzEd7tomT/ZiyxYrFi1SYNEiOdasEUe2IbEYttdfR8ZZZ0F+xRWD5W90utgOlgAg8knPf7Gp2WxGR0cHGhsbIRaLoVKp4uYySgUvRygQwYkQgUDAi4UDDLqrbDZbSLEO7onpn5LLiAS37AgjHoxw7N69GyeffDIvx5UuzJzpxT//acPFF8tx330nYdYsIDs7gg3l5sL2zjtQnHMO5JdfDuu2bUCEfUdiQbpMcvGA6ZypUqnYxaZ6vR49PT34/vvv2bhPZmZmTCbYVE9I4EIEJwLCtXBGSsn1/9vj8Qy2LPZ64XA4cOLEiSFxDibG4V/sMFVIp55Cp5/uwT/+YcOSJRm45BIaW7dakZkZ/naSrXFbukxyXOIxeSsUChQWFsLlcmHs2LHo7u7GiRMnYLVakZeXB41Gg5ycnIj3my6Cw6RF80VaCI7dbgdN06ipqQFFUZg2bVpQ8XC73ewHHKzY4XApuS6XCwcPHsSUKVMSfNSpC18n+Lx5Hjz88EE8+ugULF0qx+bNNsjl4W+HNG5LXSiKgkQiQXFxMYqLi9nFpq2trTh8+DCysrKg0WigVqtT6uYwVow6l1p5eTmUSiWEQiFEIhH27NkT0vs++OAD/PGPfwQwWIyuubkZL730EgoLC1FdXe2TkssVlOGq5IZCOqdFp+NxnX56N154wY6bbpLhqqvk+Mc/bBEVhSaN2+ILX/1wmMWmGo0GNE2jt7cXnZ2dqKurg0wmY/830mLTdLFwRp3gAMBXX33FNg4KlcWLF2Px4sXs34sWLcLjjz+O8vLy2A7Oj0QITrqc3Ili6VI3bDYHbr9dhhtukGHDBjvCTmIijdt8iOX5GM/incMx3GJTAKz4ZGRkBNx2OlyTo1JwYgGz8JMP0tESANIrhuPPsmUuWCyDvXTkcuD55+0IO6GPadx25pmDjdu++gp0fn5cxjvaSIb2BNzFpg6HA52dnTh69CgcDgfUajUKCgp8FpsSwQmfkC85iqIepCiqIND/Xn/99YgHQFEUzj33XMyYMQMvvfRSxNvhMy2aT9LRhZeoC3X5chdWrnTgrbfEuPtuKSL5WOnCQtjeegtUZydkV14JOKNod00AkDgLZzikUilKSkowY8YMnHLKKVCpVGhqasK3336LQ4cOobu7Oy2uy6QVHAD3ANhFUdT5/hP7n//854hTkr/55hv88MMP+OSTT7B+/Xp8/fXXEW2Hz4Wf6XCiBSJdj4vLffc5cfvtTrzyigSrVkUmOt7p02F/4QWIvvsO0rvuQkQbIfjAVwwnEpjFplOnTsWpp56KwsJCGI1G9Pb2oqamBq2trUMWXacK3M+ID+EJR3BOALgYwNoVK1bAaDSy/5DL5RG7s5hWthqNBhdddBFbSj5chEIhsXBSiEQdE0UBjz7qwHXXOfH00xL8+c+RVSJ2X3IJHHffDcnrr0P84osxHuXoIpXOb2axaXV1NXJzc1FZWQmr1Yo9e/Zg9+7daGpqgt1uT/QwQyaZLRwKwCGapqcKhUKcffbZrDVCUVRE1oXFYoHZbGZ//+yzzzA5wkCsSCTibeFnusLXiZdo3zdFAevWOXDZZS48/rgUzz0XWTUC50MPwXX++ZA+8ABy9u6N8SiHkkoTczIQ71pqAoEAKpUK1dXVmDNnDjt3/fjjj9ixYwfq6upgNpuT+ntL9qQBIQA8/fTT2L59O5YtW4abbroJZrM5Iguno6MDF110EQDA7Xbj8ssvx/z588PeDsCfS41v0tXCSTQCAbB+vR0222AiQUbGYGJBuBuxv/QSFPPmYfKjj8Ixdy7o6ur4DPgnEi3W8SIdjksul6OsrAxlZWVwuVzo6upCXV0dLBYLcnNzUVBQgOzsbF47bI5EMguOBxyL6Mwzz8ShQ4ewbNky1NfXRyQ4lZWV2L9/f9jvCwQRnOjhU9iSQURFIuCVV+ywWimsWCGFQkFjyZIw3bJKJWybNkHyy18OZq6Rxm1hE8+kgXhaOMNtWywW+yw2NZlM7GJTlUrFdjblo8jocCSzS20tAAf3CZlMhrfffhvfffcd5JEs4Y4hfGWpEaInme5mJRLgjTdsOP10D26+WYaPPgp/AqDLy3HwkUcgqK+HfNkyIA1vfOJJPCe9RAkOF6FQiPz8fEyePBmnnXYaSktL0dvbi127dmHv3r0wGAxwOHymVl5vMpNScGiafp+m6SE5oDRNY+bMmQkvC8FX0gDf8GnhJJMQ8IlcDmzaZMP06V5cc40MX3wR/rncO20aHOvWQfTFF5CuWhWHURLCJd7XTaS9oLKzszFu3DiceuqpGD9+PFwuF2pqarBz5040NDTAYrHEYbSBSWaXWkCSZZJK16SBZPl80x2lEnj3XSsWLlTgiivk2LLFhtNOC+98ci1bNti47dln4Zk4kTRuC4NUtHBiQUZGBioqKlBRUQGHw4Guri4cPXoUdrsdTqcTvb29yMrK4sVSS7a06KQmXWM4AL/mNR8kayJETg7wwQc2lJZ6cemlcuzZE/7l4Vi7Fu7/9/8gu/12CHbujMMo0490jOFEglQqhU6nw4wZMzBr1iwIhUI0Nzezi027urpiXk0laV1qFEUJKIo6n6KoCxmTz2qNvKNirEnXGA7fLrVkFAI+UasHu4bm5dG4+GIFDh4MU3R+atxGa7WQX3EFKIMhPgNNADRNw+l0wmKxoLe3N6bXW7wWfsaLeE/UAoEAUqnUZ7Fpd3c3duzYEfPFpsnqUnsNQC4AxR133IG//OUvuPbaa/H0009DlwSdENPZwiHwS3ExjY8+suK88xS48EI5tm2zYsyYMCavODVui+UEStM0PB4PnE7nkCaCDocDR44cYf/m3lVz23kcP34ccrkchYWFUbV1jqcwpKpLmito/p1NBwYG0NHRgT179kAkErFFRqNJ3OLrRjOcM2QsgMtpmq6fPXs2LRQKYbVak2ZVbTrHcPi2cOJ9kaaCJVVWNig68+crsHChAtu2WVFeHvqYvePHw7ZxI+SXXhrTxm3BvhuPx8MKRCARYZ7nXiNCoRASicSn75NEIoFQKIROp2OfC5QQJBAIIBQKMTAwgPb2djQ0NLBNz/Lz88NOIiIWTmjbpygKSqUSSqUS1dXVsNls6OzsxMGDB+F2u5Gfn4+CgoKIOpvyIc7hCM5hAFMA1AuFQuj1erjdbt4qNI8EERxCrBkzZtC9tmCBAosWKfDpp1YUFYX+XXjOOw+ORx+F7OGH4Z0wAc777gvpff6daJlHb28vbDYbrFYr+xwDt5kgV0TkcvkQMRlpYtHr9VAqlSOO03/yM5vNaG9vR11dHTIzM1FUVAS1Wj3iQkcSw4mckRabMp1Nk2WxaTiC4wSwmaKoPWVlZViwYAGWL1+O0tLSeI0tLAQCQVoKDt8QcfNl8mQvtmyxYtEiBRYtkuOTT2xQq0P/jJy//z2oH3+E9PHHYS4rQ/855wyxOpjfmc+eoigfq4N5SKVSCAQClJaWss8lw6QHDI5ZpVJBpVJhzJgx6O/vR3t7O2pra6FUKlFUVIS8vLykmfhiQbwtnHA/K+5iU6/XC6PRiPb2dhw5cgQqlYrtbJrIxabh7PlFAH8H4H7vvfd2jh07NqS7IL4gSQOx2RdfpJKwzZzpxebNNlx8sRwXXijDe+/1QKFw+giGw+HA0aNHWfHg3vyIr78eJx06hJzbboPp73+Hd/Jkthst1xoZaYLp6urCwMBAwIZgyQRFUcjKykJWVhbGjh2Lvr4+tLW14fjx41CpVCgqKkJubi57vPGyFuJt4cSTaLcvEAiQn5+P/Px80DSNvr4+dHZ2or6+HlKplI378E04giMHcJSmaRPzxMGDB1FRUZEUFwBJGkgdkuWunHFdDRfzcLlccLvdkEiARx7JxUMPTcVFF8mwfn0zsrIGYyCMq6q4uNgn7sE9Tur990GdeSaq7757VDVuYxY6Zmdnsy2d29racPToUWRnZ6OoqCilbj4YEhXDiQTudzB27FhYLBZ0dnaipqYGFosFDQ0NUKvVyOKhJFM4gnM9gAKKou6haRoff/wxVqxYgc2bN2PatGkJ92mSGE5q7SvW0DQdUDAcDgdqa2t9nue6rvyD5mKxGJmZmT7Pi0QiUBSFWbOAkhIHrroqE6tWTcPmzTYwiUF6vR4qlSr4+H5q3KaYPx+yK6+E7cMPB+vqjCK4LZ1pmkZPTw/a2trQ3t4Oi8UCgUCAnJycmM0jqRzDief2uYtNv/nmG4jFYhw/fhzTpk2DWBxZ5fRQCUlwKIqiaJq+lqKoiwC8OXPmTOTk5OBf//oXxo4dy7wmnuMcEWLhpBbDCdtwKbv+zwVK2eUGyQUCAdRqNfu3SCSKKo6wcKEbL7xgx003yXDllXK89ZYtZN1gGrfJly2D9K674HjmmZhkrqUiFEUhNzeXda3JZDK2uGVubi6KioqQnZ0d9byS6HkpUvi6gRcIBNDpdCguLuYlthPSHuifZ4cuAEaj0Yg5c+Yk1ZcpEol4TdHm64RIBwvHP2XXbDbDYrGgvr4+7JTdzMxMn+dGSr9tbW1FTk5OTI9n6VI3bDYHbr9dhuuvl2HjxtDPO/cll8Bx6BCkf/0rvBMnwnXLLTEdW6qSlZWFiooKeL1emEwmGAwGH/GJpLxLOqZFpzohSxpFUY8AOB/AHQ0NDXNfeuklXHTRRXjjjTdw8sknJ/wDSlcLJ9ncXMFSdgNZIwz+Kbter5dtXhVuym6ysGyZCxbLYC8dhQJYtiz09zofegiCo0chfeABeMeNg+fss0N6XzKdB/GCsUjVajWbadXc3Ayz2Qy1Wo3CwkKoVKqQzhPiUks+wrGh9gJ4kabpdgC48cYbceaZZ7KZDon+cMRiMW9ZanwtkIw3NE3D7Xb7iEZbWxsbDwknZdff8hguZXdgYABOpxNqtZrPw405y5e7YLFQePxxKQYGxuKUU0L0kHEat8mvuQaW//wn5MZtqX7OBSPQcXEzrbxeL7q7u9HY2IiBgQHk5+ejsLAQSqVy2M8knp9Xun4X8SQcwfk3ADFFUQqz2QyXy4Xc3FyoVCr09fVBJpNBKpXGa5wjwqeFk4xuLibuMZLVwWRdMReLSCTysTy8Xi/kcnnYKbvhHlO6cO+9TgwMUHj6aR1WrXLi0UcdoYlOZiZsmzZBceaZo75xWyjnt0AgYFN5PR4Purq6UF9fD6vV6iM+4W43UvhIi06n64QhHMF5B8CvAfTqdDpIpVJ0dXVh//79ePPNN3HWWWdF3B46FqRblhrXddXf3w+73R40ZZdBKBQOiXlIJBJkZGQMiXsEOpn379+P4uJiSEZZ9lQ0UBTw6KMONDR04umndcjMpHHffUPaRgWELiuD/Y03IF+0CPJly2DbvBlIcF+pVEAoFKKwsBCFhYVwu93o6urCiRMnYLPZoNFoUFhYiMzMTOJSC5OkKm1D0/Sl3D+5//vTn/4UswFFSjJbOMFSdgNZH/6uK5vNBgBQKpXDpuzGitEQJ4g1FAX8/vfHkZFRgMcflyIjg8by5aFV8vWcfjoc69ZBdvvtkK5aBcfjj8d5tMlHNJOrSCRCUVERioqK4Ha70dnZiePHj8PhcEAsFiM3NzfGox0kHQQnEdd6OEkD8wE4aJr+6siRI3j//fcxffp0nHPOOXHP3Q4FvgSH+ZKsVusQIfEXEWY8geIeEokECoXC5+9AKbu1tbVQq9Uxz7RKNOkmbAIBsH69HTbbYCJBRsZgYkEokMZtsUEkErGlXVwuFw4dOoS2tjZ0dHSgoKAAhYWFUMSgajdDOggO31ZUOC61ywFsA4CHHnoIGo0G3377LdxuNy644AI28yhRRCo4I1XZZZ7jbttms6GxsRFSqTSqlN1kg6/YVDr6pgFAJAJeecUOq5XCihVSKBQ0liwJLZHF8cQTEBw/Dtntt8NaXQ3v7NlxHm3yEI+JTywWIysrCxqNBvn5+ejo6MDhw4fhdrtZ8Unmcv6JEJykcqlhsHinhaKoqbfffjvWrl2LBx54AL29vXEaWniIRCI4nU40NzdDIpFAKpWGnbLLrbQ7XJXdmpoajB8/npdYR7KlRROGRyIB3njDht/8Ro6bb5ZBobBj4cIQREckgu2115Bx9tmQX3EFrNu3g06CPlOpDDOhisVi6HQ66HQ6OJ1OdHR04ODBg/B6vaz4yGSyiLYdL4iFA7QC+H8ArmPuDlwuV9RWzbZt23D77bfD4/Hg+uuvx/333x/yey+55BK0trbC6XSir68PXq8XO3bswFVXXYXZs2dHlLIbCsmYpZZq+0pnEZXLgbfftmHxYgWuuUaGTZtsmDcvBOubadx29tmQX3YZrJ9+6tO4LZk+s1hPVPGa+Py3K5FIUFJSgpKSEjgcDnR0dODAgQOgaZpNRAgl25avvlHxJNkF51EA1wIwXXPNNQsB4NZbb2XX4UQiPB6PB7feeis+//xz6HQ6zJo1C4sWLcLEiRNDev9zzz2HnJwcyGQyfPrpp/jXv/6FNWvWhD2OcCFWR3Skq0uNi1IJvPuuFQsXKnDFFXJs2WLD6aePLDreceOGbdyWjp9dPPvhDIdUKkVpaSlKS0tht9vR0dGBmpoaUBSFwsJCFBQUJGypBx/zSyIEJ2SVoGnaTdP0SzRNP1ZYWAgAmDhxYlSL93bt2oXq6mpUVlZCIpFg6dKl2Lp1a8jvLyoqYk1hkUjEWzO4dLU6iJDGlpwc4IMPbCgr8+LSS+XYsye0y41p3CbesgWSP/85zqNMDviycIIhk8lQVlaG2bNnY+rUqfB6vaipqcHu3buh1+vhdPqmuhOXWmQktBtSS0sLSkpK2L91Oh1aWloi2pZQKOS1Hw6ZmAmhoFYPdg1Vq2lcfLECBw+Gdsm5brsNrqVLIX38cYg+/DDOo/yZRJzXibJwgiGTyVBeXo7Zs2dj8uTJcLvd+OGHH7Bnzx4YDAZ2+QIRnPBJm/Z7fC785PNLSkcLZ7RZUsXFND76yIqMDBoXXihHbW0I5w9Fwf7MM/DMmgXZjTdC8OOP8R9oAknWBmxyuRwVFRX4xS9+gYkTJ8LpdGLPnj1obm5Gb2+vTwJSLOFLcPjOLE6o4Gi1Wuj1evZvg8EArVYb0baSeeEngVBWRuPDD60AgIULFWhsDGEykclg+8c/QGdnQ750KYRGY5xHmRjieS3FctJWKBSorKzEnDlzoNFo4HK5sGfPHvzwww9obW2NqYclXRd+JlRwZs2ahdraWjQ0NMDpdGLTpk1YtGhRRNvi28JJN6uDgQhp/BgzZtC9ZrVSWLRIgdbWECoeFxbC9vbboLq7Ubh8Oag43VGz+0uj7z+exyKRSFBQUIA5c+Zg7NixsFqt2LVrF/bt24f29vaoxYe41OKASCTCc889h/POOw8TJkzApZdeikmTJkW0LdKeIDb74ms/6TSxhcPkyV5s2WJFdzeFRYvk6O4e+TP3nnwy7M8/D/mePSh67DEgzp8d35NQvCY+vmqpZWZmorq6GnPmzEF1dTXMZjN27dqFmpoatLe3RzQvpavgxL/F2wgsWLAACxYsiHo7IpGI9/YEBEIkzJzpxebNNlx8sRyLF8vxr39ZkZ09/Hvcl1wC065dyH3hBdhnzyaN25IQiqKgVCqhVCpZ4Wlra0NdXR0yMzNRVFQEtVodctwkHSsNpE3SQLrGcNJ1X6Od007z4B//sOHIEQEuuUSBgYGR32O8/Xb0n302pA88AOF//hP/QfJEqls4gaAoCiqVCuPGjcOpp56K8vJy9PT0YMeOHThw4AC6urqGXcbB1zqcUZU0EEtIDCd1SMdjioS5cz147TU7fvhBgKVL5fipMHhwBAK0PPEEvBMmQH7NNaBqa2M+JvK9hEY4YkZRFLKysljxKS0tRXd3N3bs2IEff/wR3d3dQ8SHJA0kOenWDycRECHgn4UL3XjhBTv+9z8hrrxSDucIrXS8CgVsmzaBFgohX7oUiEMtw0RUM0g1CweIbMwURSE7OxsTJkzAqaeeCp1Oh87OTnz33Xc4ePAgjEYjvF4v72nRfH3nCY/hxIp0jeEQEUh/li51w2Zz4PbbZbj+ehk2brRDNMyVSZeVwf7mm5AvXAj5tdfGpXEb00HW6XSyxW+5v3s8HuTn56OgoCDqquipkhbNJRaCQFEUcnJykJOTA5qm0dPTg7a2Nhw5coStdh1vt2Cg3+NJ2ghOusZw+IQU70wcy5a5YLEM9tKRy4EXXrBjOPe657TT4Pi//4PstttCbtzGCIi/ePg/Z7VasXv3bohEIrZrLFM1PSMjg+3dZDQa8f3330OlUqG4uBi5ubkRT47xsnDiRay3TVEUcnNzkZubC6/Xi6NHj6Kvrw/ffvstcnNzUVRUhOzs7Jh+Tl6vd/RlqcWKdBWcdBS3dCxAGQuWL3fBYqHYrqHr1jkw3EfluOoq0AcOQP7ss+gvK0PPokUBRYSJDwiFQh/xEIvFkMlkUKlU7HMUReHAgQOYMWPGsGMVCoXIzc1FdXU1enp60NraiqNHjyI/Px/FxcXIzMwM+bhHq4UTDIFAAIVCgaysLBQVFcFoNMJgMODw4cOs+GRlZcVk/3wnDaSN4KRzDIeI2+iApmmsWDGA3l4X1q/PBGDBHXe0w+UaFI/+/n64XC60t7cD+KmX0xVXYMr+/ch94AH0FxRAfMoprBXCiEo4k4rb7Q5rIuPemXs8HnR2duLYsWNwuVxs62c++kYFIpUsnEDbpygKAoEA+fn5yM/Ph9frRXd3N5qbm2E2m6FWq1FYWAiVShWR+PBV7JhLWgkOieGkDul4TP5w4yBcl5W/FcLU46IoCiKRCFdcIUFnZxVeeSUfCoUHK1aYWWsEAMrKynx3tHkzcPbZKL/rrsHGbXl5fB8qgEGrhxEZh8OBtrY27N27F1KpFMXFxdBoNAHFLxXTogH+LXWBQACNRgONRgOPxwOj0YjGxkYMDAwgPz8fhYWFUCqVIY8rEWnRaSU4xKWWGvtKZZeav4AwP+12Ow4fPsw+x3yOTByEcVlx4yDMcyKRaMhn8vLLgEjkwjPPqFFYmInly12wWq2Bb6qYxm3nnDPYuG3bNiAjg4+PIyhSqRTl5eUoLy+H2WxGa2srTpw4gZycHGi12iEuoUS3JwiXRFeLFgqFPuLT1dWF+vp6WK1WH/EZCRLDiRDSnoAQCV6vN2DgfLg4CDcGIpFIIJPJIBKJUFpaygpItHeOAgGwfr0dNttgIkFGBjB//jDHMW4cbBs2/Ny47bXXMGwAKAjxOK+VSiXGjRuHsWPHwmg0si6hgoICFBcXJ117glC3nSztCYRCIdut1O12o6urCydOnIDNZoNGo0FhYWHAmBpJGogCvhuw8UW6Fu+M5yTDuKkYwTAYDEMEhbGGBQIB23acG/fwt0JGEpDm5uawAuWhIBIBr7xih9VKYcUKKf78ZyUWLOgJ+nrPeefB8cc/QvbQQ/BOmABnGO3aucTT2lCr1VCr1XC73ejo6MChQ4fQ19eH1tZWaLVaiMXimO0vlV1qkY5dJBKxbk23243Ozk4cP34cDoeDFZ8MjvXLd2mbtBEcPi2cdI2r8Fm8M1SCxUH8f3e73exFyk3n9Xq9EAgEPplYYrEYQqEwJVx7Egnwxhs2/OY3ctx/fyEkEjeWLQv+etfvfw/hoUOQrlkD78SJcEdYfT3eiEQiaLVaaLVafP/993C5XNi9ezcUCgWKi4vDqjmWCPhKGogGkUiE4uJiFBcXw+VyobOzE0ePHoXT6URBQQEEAgGxcCIlXa2OdBQ3j8cDr9eL/v7+YV1ZweIgYrEYCoUC2dnZw8ZBAKC3txfFxcV8H2JMkcuBTZtsOP98Ee66SwedzoZ584LEKykK9qefhuDECchuvBHWigp4p0zhd8BhIhAIUF5ejurqavT396O1tRXHjx9HXl4etFptWIFwLomspZZs2xeLxazAu1wudHR0oLGxkbX0NRoNm5QST4jgRLivdBScSPcVKA4SSEQYl6dAIIDNZkNraysrGFKpFEqlkrVMYhEHSScyM4GXXmrBlVdqccUVcmzZYsPppwcRnZ8atynOPBPypUsHM9fy80PaT6JaTFMUxdYcy8rKYlOAmUB4YWEhiouLeZkUQyHVBIeLWCyGTqcDADgcDnYRb05OTlz2xyVtBIdv0s3q4ELTNNxud1D3lX8chKKoIZlYjBXi78YCBi2cffv2Yfz48Yk8zJRDpfLi5Zebcf311bj0Ujk+/NCKmTMDxy2Zxm2K+fMh++1vYfvoo0H/XAgkg6uRmwLMrD3av38/BAIBiouLUVBQANFw9X+QmH4vsYSPWmpisRglJSW8xb+J4ERAqllTI8VBmJ8WiwUdHR0Qi8UBy5pwLZBo4iCpPAkkEpqmkZvrwdatNsyfr8DFFyvw8cdWTJ4ceLJgG7ctWwbpnXfC8eyzEWWu8cFw5wQzKZaUlMBqtaK1tRU7d+6EUqmEVqsdtqROKrvU4s2obMCWiiSDm8vj8YxYE8s/DhLIAsnKymKfa25uRlZWFtRqNS/HRggfiqJQXEzjo4+smD9fgQsvlGPbNivGjAl8ProvuQSOw4ch/ctf4J04Ea7f/Y7nEY9MONeSQqFAdXU1qqqq0Nvbi9bWVhw5cgT5+fnQarU+mYKjJS06mn2QhZ8pQDwEh4mD+AtGb28vbDYbBgYGhsRB/N1Y3DgIk+obzglFinemDmVlND78cFB0Fi5UYNs2K8rLA3+mzgcfhODoUUhXroR33Dh4zjkn6HYT5YYKd5/cSster9cn/ZdJC45ku+GOIV6QFtOEsAglDsKk8wJD4yDMz8zMTAiFQlRWVvrEQeJBMqZFE4IzZgyNrVttWLBAgUWLBkWnuDiA6AgEsL/4IhTz5kG+bBksX34JeswY/gcchGhvPgQCAbvw0el0oq2tDfv27YPVakVXVxe0Wm3Mr5tUSItOhn34kzaCw3xw8azLxMRB7HY7XC4XWlpaAmZnMeMJVNaEa4FIJJIR4yBMQ6Zkyc4hJBeTJ3uxZYsVixYpsGiRHNu22aBWB5gMMzNh27Tp58y1L78EsrN5H2+8kUgkKCsrQ1lZGXbu3ImBgQF8//33yMrKglarjVmJ/3RxqRHB4RFuHGS4eIh/HMTlckEgECAzM3NIHCTYepBISYZ4ESG5mTnTi82bbbj4YjkWL5bjX/+yBtQSPhq3RUK8Jj6RSISqqipIJBKYTCa2xL9Go4FWq4VCoYh42+kkOHxe82klOBRFobm5GVarFQUFBSGtB4kkDtLW1gaXy8XmshPCgwhb7DntNA/+8Q8bliyR45JLFNi61YpAlXZ8Grc9/DAca9b4/D/VU4m5MOcYRVHIy8tDXl4ePB4POjo6cPjwYXg8HjbeE8uSOrEgERbOqCtts3r1arz88svI/2mR2po1a7BgwYKgr3/99dexceNGmM1mAIP1rK6//npMnjwZt956Kyskcrl8SDpvNKRaWnSy7osQW+bO9eC11+y46ioZli6VY/NmG+Tyoa9zXXMNBIcOQfLcc/BMmgT3FVfwP1g/+GpPIBQK2XIvdrsdbW1t2LNnD2QyGbRabcgldfgQBOJS44E77rgDd999d0ivXbx4MS6++GJkZmaCoiicdNJJ+Oyzz3g5EdJRBAjJTSjnwcKFbvztb3bceKMMV14px1tv2QKu93SsXQvB8eOQ3X47rNXV8M6eHYcRJzcymQwVFRWoqKjwKamTm5sLrVY7bGMzsg4nMpJOcMIhKysrIftNVxFI1+NKJ0KZIJYsccNqdeD222W4/noZNm60Y8iifJEItldfRcbZZ0N++eWD5W9KStLq+w9nQlWpVFCpVPB6vWxjM4vFwrZQkAcwFdMlhgPw53FIumJVzz33HKZOnYprr70WPT3BS7EnEmLhRE86HlMysWyZC2vW2PHBB2LceqsMASuX/NS4jXI4IL/8csBiAZBe7s5wj4Vp6Txt2jSccsopkEql+PHHH7Fr1y4YDAZ2GQNJi44M3gVn7ty5mDx58pDH1q1bccstt6Curg41NTUoKirCXXfdFfb2020iS9d4ESH+LF/uwoMPOvD222LcdZcUgb5apnGb4MAByH73OwR8UQBSQZSiPZdFIhF0Oh1OOeUUTJkyBQ6HA7t27cL+/fvhcDhiNMrApKvg8O5S++KLL0J63Q033IALLrggrG0zbabjXa4hXZui8UkqTFjpwL33OmGxAE89JUVmJvDoo44h5dS4jdsUY8YAF16YmMHGgVidZ3K5HFVVVaisrERfXx/27duH3bt3Q61Wsy0UYgkRHB5oa2tjS1K8//77mDx5cljvZ5qwxTvFMV1dasTCST8oCvjDH5wYGKDw9NMSZGbSuO8+55DXMY3bMv/8Z+SqVECS99AJhXicyxRFITs7GxkZGTjppJPQ09ODEydOwG63sy0UpFJpzPYVT0a94Nx7772oqakBRVEoLy/Hiy++GNb7GQuHD8jETEgVKAr4618dsFopPP64FBkZNJYvdw15kf3pp0EfP44xjz0G+5lnwjt1amIGHCPi3YBNIBCgoKCAXfPX3t6OmpoaNvW6oKAg4iUYXq+XCE68eeONN6J6P19tptM5rkKKd6YnAgHw3HN2WK3AypUyZGQMJhb4IJOh79VXoZo7F/LLLgurcdtow3+ylkgkKC0tRWlpKSwWC1pbW/H9999DpVKhuLh42BYKiWJUJA3EE6FQyIuFk65urmS7IAixRSQCXnnFjnPPdWPFCik2bRp6v+nVaHDsT38CpFJQnZ0JGGXsSFSL6YyMDIwZMwannnoqtFot2tra8N133+H48eMYGBiIevuxYtRbONGSjoJDiJ50KdcSi+OQSIA33rDhN7+R45ZbZMjIsGPhwp+9AjRNwzJuHCy7dmHo4h2wBWyZWoLJ/rkmcnwURSE3Nxe5ubnweDzo7OzEsWPH4HK52JI6kiBdWIngpAAikYg3l1q6Wjh8tZpN9okqWYnF5yaXA5s22bB4sQLXXCPD229bccYZVjidTvT398Nms6FBr2drDzocDvZGTiAQQCqVgqIoOBwOtkxMstUiizfhTtZCoZAVGYfDgba2NuzduxdSqRTFxcXQaDQ+2bVEcFIAviwcAiHZ8Xq9bNHaYI+VK4G77pqOyy9XYN26esyebWcnoIyMDLb+IFMFnQtzc9fa2ordu3cjMzMTOp0OOTk5o+ZmItLjlEqlKC8vR3l5OcxmM1pbW3HixAnk5OSguLgY2dnZaVtpIO0Eh1g4qbEvQvjQNA2XywWz2cyKhsPhgMvlgsPhgNPpZM9/biV0qVQKiUQChUKB7OxsVkSEQiE+/5zCr34FPPDAZHz4oRUTJpjR2NgIjUYz4ngkEgnKy8tRVlaG3t5eGAwGHD16FEVFRdBqtUHdRYSfUSqVGDduHMaOHQuj0Qi9Xo/Dhw/D6XTCZrMhIyMjbvsmFk6UiEQiXlxCZGKOHvL5DULT9IiWCNPUz+VyQSQSwWq1sqIhl8uj6sekVg92DZ0/X4GLL1Zg8+bAbQ2Gg9vu2eVyse4imUyGkpIS5OXljRqrJ1IoioJarYZarYbb7cY333yDw4cPw+v1ori4GIWFhTF3WxLBiRJi4URPOgoB3xcWY4kEEg9/SwTAEEtEJpNBpVINERGDwQCBQIDi4uKYjre4mMZHH1kxf74CS5fm4vnnWzFpUmTbEovFbHpwX18fDAYDjh07hsLCQmi1WtK5NgSYTsGzZs2C3W5n3ZYKhQLFxcUht1AYCSI4UcLnwk++SNe0aL72Fav9DCciTqcTVqsVu3fvZl/PberHPDIzM336MiXTXX9ZGY0PP7TivPPkWL58Ar780ony8ujOu6ysLGRlZcHtdqO9vR379++HSCRCSUlJzCbNdEcmk6GysnJIC4W8vDy2pE6k5xERnCgRCARpZ+EQ4gdN03C73UEtEW6LcYqi2DtPxhLhiojZbMbMmTOTSkTCZcwYGps2mXDxxTlYtEiBbdusKC6O/jxnimDqdDqYzWYYDAYcP34cGo2GdM0NEYqiWAH3er3o7u5GfX09rFYrW1InXOuRCE6UiMXitFuHk677ihf+IuJyuWAwGIZYJ/4iwn0oFAofSySUO3GBQMBLVlG8mTDBhSefPIrbb5+ERYvk2LbNBrU6dvtVKpWYMGEC2+r50KFDsFgsaG9vH5IaTAiMQCCARqOBRqOBy+VirUfG3VpQUDAkqzAQJEstSgQCQdrVUkvXGE44+6Fpml1wOJwlwtSfEgqFrBXi9XohFAp90nxDFZFkhI+JYfJkKzZvtuHii+VYvFiOjz6yIicntvvgtnr+5ptv0NfXhxMnTkCtVkOn0yEz3MyFUYpYLEZJSQlKSkpgtVrR2tqKnTt3QqlUQqvVDltSh1g4UcJXDCeV3SbDwfdxBXNncR9M1mEgS4QbWJdIJAFFpK+vD0VFRSkrMInitNM8+Mc/bFiyRI5f/1qBDz6wIsYV+FkEAgHGjRuHMWPGoKurC8eOHYPH44FWq0VhYWHEBTBHGwqFAtXV1aiqqkJvby9aW1tx5MgR5OfnQ6vVDhFxIjhRIhQK2RTSeJLObq5o9xXIEuFaIQ6HA16vF1arFfv372ctESZLKxQR4fuYRitz53rw2mt2XHWVDJddJsfmzTYE6LQcM7jVl202GwwGA77//nvk5OSgpKQk5j1n0hVumrrX60VnZyeOHz8Oh8PBVjuQSqVEcKKFrMOJjmAnXzB3FvfBWJZCoXCIJaJUKn3+FgqF2L17N2bMmJGwYyIExn8SWrjQjb/9zY4bb5ThyivleOstG/hYzymXyzFmzBhUV1eju7sbJ06cgMPhgFarRVFRUUgxCsKgiBcWFqKwsBBOpxNtbW3Yt28fxGIxXC4XL20QuKTVt0bW4YROoNInPT09sNlsGBgY8BERpn5WsBRfRkQI6cmSJW7YbA7cdpsM118vw8aN9kB1PeMCRVHIz89Hfn4+HA4HWlpasHPnTmRlZUGn0yErK4vcVISIRCJBWVkZysrKMDAwgF27dmHHjh3IysrC+PHjeakMkVaCM9rX4YRSP8u/9An3IZPJ2OZ3gepnxZJ0tBDTmWuucWFgAHj+eQk6OiiUlfE/BqlUyq5JMZlMaGxshM1mG7UFRKMhMzMTMpkMc+bMgdFo5M1iTCvBSUcLx+v1wuv1xrR+VrA7wu7ubvT390OhUPBybITkJNj5sXy5C1dc4UBWFuDxIGGJGBRFIS8vD3l5eXA6naO6gGi0MC0U+PJQpJXg8JmlFo3ghFI/y+12s/50JoAaq/pZ8TouQurCxD49Hg+8Xi/cbndA/35m5qDYAIOCw4hOoib44QqI8tVqgxA6aSU4QqEwYUkDodbPYkQk1PpZNE1jz549mDBhQtyPi0/4rm2WDoR7HMy1wLyP+TlcoFgikcBiseDw4cPQarXIzs5mF7Uy7xEIBKBpmrW+mf/xsfg1GIEKiNpsNtTU1ECn05ECoklCWglOrBuwBRMRh8MBq9WKmpoauFwuVkTiUT+L74skXSbndIXbJI8rJCNlG3EFg/HX+1snAoEAMpkMs2fPZgtv1tfXo7i4GEVFRT4xEu72uOKTDFYPU0DUYDCgoqKCFBBNItJKcEJpwOZf+sQ/HhJK/SyFQgGTyYSJEycmXRHGaEhHqyNVvptg1oj/59TR0QGZTMb2SWEmfiY2x30AkcdZmLpdLpcLra2t2Lt3L1QqVcD1MMz+ks3qAUgB0WQjLQSHpmn09fXBaDTCbDbj1VdfxcyZM6FQKOJSP4umaTQ0NJAGU4QRidYaYc5DgUCAkpISZGRkoKmpCTRNo6SkBPn5+XGd0MViMcrKylBaWgqTyYT6+no4nU5otVoUFBT4BJu5wgMgqayeQAVEa2trodFooNVqkypRJp29DAkXnM2bN2P16tU4cuQIdu3ahZkzZ7L/W7t2LTZs2AChUIhnnnkG5513ns97u7q62Oeys7PR09ODwsJC2O12zJw50yc7K5XrZ/EFSRoIjUAi4vF44HA4hu1LHwtrhCnaaLVaodfrUVdXh6KiIhQXF8f1BoibGWa329HS0oJdu3ZBrVYPmbC5BSFHsnoScb75FxA9ePAgBAIBdDpdSAVEyTUSOQkXnMmTJ2PLli246aabfJ4/fPgwNm3ahEOHDqG1tRVz587F8ePHfe6o8vPz8cMPP7B/P/nkkxCLxbj66qvjOuZUcdMkM8n4GQazRoDg42Um0cLCQtTU1CA/Px86nQ4SiSRqt9ZwKBQKjBs3Dm63G21tbfjhhx+gVCpRWloa9xIwMpkMVVVVqKioQFdXF44cOQKKolg3VSCRHc7qSRTcAqIWiwUGgyEpCogmouQMXyRccIJlX23duhVLly6FVCpFRUUFqqursWvXLsyZMyfotmKdNDDaSFcLx+v1srG9YLERf5iJkgmwj2SNVFVVoby8HB0dHThw4AAyMzN5mfyZeIROp4PJZEJdXR3cbnfId+vRwK19NjAwwE7YTHCea3H5Wz1ut5uNnQKJn2QzMjLYAqKdnZ04evQovF4vdDrdENdhvMeaiM9i1LcnaGlpwS9+8Qv2b51Oh5aWlmHfIxQK4XQ64z00QhLAtUa4d8+A78UjFotRV1fHun0CxUa4r49mgmbumIuKitDT04O6ujp4PB5eYi1clxezbquhoQEFBQWsxRVPMjMzMX78eDidThgMBuzZswdisRgqlQoCgcBneQAzXmZZgFarhdvtZq2eRAoPt/ZYsAKi6Sg4fMGL4MydOxft7e1Dnn/88cdx4YUXxmw/6Vjahk/4tHAC7SfUTC1/hrNGpkyZAqPRiLq6OraWVFZWViwPJeB4cnNzkZubC6vViubmZja9uLi4OO5lRJjCl5WVlWhvb8e+ffuQkZGBkpKSiI6dsUgYwXA4HOyD+Ztb7UIqlSInJ4dN5nE6nSgoKEB5ebmP6Pvvg+tu87coIxlztPgXEK2trYXT6URRUVHU2x4OPgQnUZ4MXgTniy++CPs9Wq0Wer2e/dtgMECr1Q77HuJSSz64C3G51ghN0xgYGIBUKg34vmCZWpFYI0ygvbe3F42NjXC5XCgtLY271QEMxlrGjx/Pphfv3r0bubm5KC0thTyetf4xaHFptVoUFxejt7cXTU1NcDgcrJuIoigfAeFaIcxz3H5EzNIAqVTq00pCKpUOW+2CKT9z4MABZGdnQ6fTjZhazX0uEqsnlpM2Rf1cQNRut0Ov18NsNuPgwYMoKSmBSqWK6XnEl4WTCCsqaV1qixYtwuWXX44777wTra2tqK2txSmnnDLse/hqT5CuhGPhBLJGQnkvM4mUl5fj8OHDyMrKQmlpKZvlFM+YQ3Z2NrKzs32sDp1Oh6KiorjXkmLSi0tKStDV1YVDhw6xCxSzs7NjevEz7ST8xYPJjjt+/DgOHz4MkUiEjIwMyOVyVkwyMjKQm5vLCkksPhdu+Rmj0YgTJ06wDdYKCgp8vvNkXlAKDCZMlJeXw2QyoaioCA0NDXEpIMq3hTNqYjjvv/8+fv/736Orqwvnn38+TjrpJHz66aeYNGkSLr30UkycOBEikQjr168f8eTnq3hnuuL1etmL3D82MtK6EQBDXCHDZWkxsQ4my4m5kPlossW1OgwGA3bt2gWNRoOSkpK4xzq4gfa+vj40NzejtrYWJSUlQyZfLtzU62AWCdN8kCniylgiEokEWVlZPouXAaC9vR0GgwEejwd5eXkxFz5/KIqCWq2GWq2GzWZjWw0wHSn9Lb5oFpTG00qgaRoCgSBuBUT5sHAYEeebhAvORRddhIsuuijg/x588EE8+OCDIW+LxHACE6o1IhQK0dvbi7a2Np8MJ+bOOFAplGigKAoajQb5+fno7e3FiRMnQNM0Kioq4j75AYNWR0VFBcrKytjUYsbiYlbyx5OsrCxMnjwZZrMZer0eJ06cgFKpRGZmpk/MhDmnuVUvGPHIzMxk/w63iCtzV84VPr7aOsvlclRXV6OyshKdnZ04dOgQhEIhSkpKhtQ9i9Tq4euu3b+AqF6vZwuI+mfrhUI6V+FIuODEEoFAMGoEJ1hsJBprRCKRYNasWWhqakJNTQ1KSkpQVFQU9zshivq58KLZbEZjYyNOnDiBsrIyXuIsAoGAjXUYjUYcPXoUQqEQ5eXlETf48nq9Q1xa/r8z3xljdRQUFMBut6O9vR0ZGRnQ6XS8lI7PysrClClT2AZnzIJOnU4X9zgTNyuMWwEg2GLWUK2eeE7awSwQ7nnMFBDdu3cv5HJ5WAVE+bJwiOBEiVgsTnnBCbaK3W63B514uHeA0VojUqkUY8eOhdPphF6vx86dO6HT6VBcXMxLzwylUokpU6bAZrOhqakJ9fX1KC0tRWFhIS/Cx7h8+vv70dTUhNraWpSWlkKj0YCiqIDZWtzfGbcWRVFDguxKpRJqtZp9fjj3mclkQnNzM/R6fcAFlfGAaXBWXl7OWh1isRglJSW89JhhKgAwi1mZ7LpAnT1DWVAaT5faSNtm4nOlpaVsIdRQC4iSpIEUIVljOJGUiQd+vqhKSkqwf/9+dk0FE5iM5wQskUhQVVXFVt3dtWsXioqKoNPpeOkOKJfL2XUdzc3N2LlzJ4qLi6HVamO+f6YquL94SCQSuN1uHDt2DAcPHoRYLIZMJoNMJvMREqYiuFQqjUkxV+6aGovFgubmZnYtER/Cz7U6+vv7odfrUVtby7rg4r1/7mJWxkV1/PhxNu7nX7+N+cn9Hm02G4D4Td7hbDNQAVGxWAydThewgCixcFKEUKpFx5J4lonnUlpaCq1Wi5aWFvzwww8oKipCSUlJbA8mCEycgxGe3bt3o6CgACUlJby09JVIJKiurkZ5eTm7/1AD/EzL7eHWjzDfHbMIkbE+5HI5W4tPKpWCpmm0tLSgra0NCoUCJSUlQVO6Y0lGRgYmTJgAl8vFu7sLAFQqFSZNmgSn08nuPzc3FyUlJXEveMl1UTG143bs2AGFQsGWneFWeQcG5wDmO4vXgtJI3XWhFhDlax1OIgSHivDDS8r6J5999hk++ugjrFmzJuJthLr4sKamhs028m9QFWqmViR4PB4YDAa0traywsNXe1hm/62trTAYDMjPz0dpaSmvVbO9Xi9aWlqg1+vZFF6apn2EhLua3T/I7v97uN+L1+tFR0cHmpubkZmZibKyMl5rbnm9XnR2dkKv10MqlbJp1Xzuv7u7G3q9nq1gHU1zM8ZFGcg9yV1QKhQK2e/N7XbDbDaDoigUFRWhsLDQp3YdF258kxvniWaytVqtOHbsGE4++eSIt8HAFBA1GAxsAVG5XI6mpiZMnTo16u0Hg3sMXq+XbT8fI4J+uGklOF9++SXee+89/OlPfxryv2itEX/h8Hg8aG5uRnd3N8rKylBYWMjrHUOihcfr9aK9vR3Nzc3Izc1FWVlZVHf83NXswYLs3MlHIpHA4/FgYGAAMpkMRUVFyM7OjplbK5TxmkwmNDU1gaIolJWV8RLn4NLb24vm5mY4HA6UlJTEvXaaPwMDA2hubkZ/f79PFYVAKdz+36u/kAR6jNQ+3Wq1oqWlBd3d3ayVECw24i88kS4oBQCLxYLa2lqcdNJJYb93pO0aDAZ0dHRAIBDg5JNPjlu2JPcYiOBEyMcff4wXX3wRr776qs/zwcrEB7JIgPCsEafTicbGRvT09KC8vJwNLvNFooWHpml0dHSgqakJWVlZKCsr83H1MG6t4bK1mJsBpmNqMIsk0ORD0zR6enrQ2NgIiqLYlGo+MZvNaG5uhsViGXE9TTxgVr93d3ejsLDQJ84XS4KVuLHZbOjr64PVamXXAHGbFgYSEya5JRYwVkJLSwskEgmb3Rds+1zxiSTJIF6Cw9Db24va2lpQFBW0gGi0DAwMoK6uDtOmTSOCEym7d+/GrbfeioKCAqxatQrjx4/3OYniOQnY7XY0NDTAbDajsrKS9x7qfAsPcwfLnXh6enrQ09MDgUAAkUjE3kFyJyB/MYnlid7f34/GxkY4nU6UlZXxktnFhTvxxyvBYTgYd2dLS0tY64lGsi4dDofPWqBA3yPzOxPkB8Bbdh2X/v5+GAwG9Pf3s6nVwcQ3UquHO1nHg76+Puj1ekyePJktINrZ2elTQDRazGYzGhoaMHXqVHi93ojcy8MwOgQHGDyJ/vvf/+Khhx7CmDFjsHLlyhFrsMUSm82G+vp62Gw2VFZWIjc3l7d9A9EJTyRFGv3FQyKRwGq1wmAwQCaToaKigve+IlarFY2NjTCbzSgtLeXd4nC73ezEn5eXh9LS0mHTYGMNTdMwGo1sZ9DCwkLIZLKA3ykjJP7WZSCLJBwsFgv0ej16enrYBZB8JJkwMOtgWltboVQq2dTqYIRj9XAn63jQ29uLlpYWTJo0yWd8XV1dMBgMcDqd0Ol0KCwsjPiGhkn7nzJlChGcWOD1evH+++9jzZo1OOuss3DHHXcgJyeHt/1bLBa2N0lVVVXcKxT7wxWewsJCFBQUDBGTUIs0cv8OdTU719UlFApRUVEBlUoV78P2weFwsHE2rVYLrVbLe5yrs7MTzc3NUCgUKCsri8ndabA0bu6D+T6Z1gAejwc5OTlQq9Vs7bRY1UobDkZ8W1tboVKpYnaHHirMeWgwGGC320espBCK1cMsTp4yZUpcxtzT04O2tjZMnDgx4P+Zjqvt7e3IysqKqIAo14oighNDXC4XXn31VTz77LO4/PLLceONN/KSTspgNptx4sQJUBSFqqqqmF5szGr2YBYJEx9xuVxwu93IyMhATk4OZDLZECGJ58TT19eH+vp6AEhIjIVJKW5ra+M1pZuBpmm2UjVN0ygtLQ3ocuUKSTD3FjfeFSzQHuj7ZNKa29vb2a6kfFtdzGJWJi6Rn5/Pq+XJVFLo6OhAbm4udDpdUJejf3Yq1+oxm82sdRAPTCYTOjo6gjan5I7RZDJBr9eHXUCUa0XRND3sQuQIGL2Cw2C1WvHUU09h06ZNuPXWW3HZZZfx6l/v7e1le7JUVlYOe6JHU6SR+zv3JPJ4PNDr9Whra0NxcTF0Oh2vd/vAz64Il8uFiooK3rO6PB4P2traYDAYkJOTg7KyMl4mXa6Q9PX1oa2tDTabDQqFAiKRyCdxIlC8i/udRvudMWnder0ecrkcpaWlvFvfjMvVaDQG7A4ab5jUboPBAABBF2Ay+Fs9ZrMZLS0tmDx5clzGZzQa0dXVhfHjx4f8HuaGoq2tDZmZmSgpKRm2HiHXiiIWThzp7u7GmjVr8PXXX+P+++/H/PnzebnLYiYdxsUiFouRlZXlU3NruCKN3N+jSftNBuEZGBhAY2MjbDYbysvLeQ8s0zSNzs5ONDU1ISMjA+Xl5RGln9I0HTTWxTy49dL8haO3txe9vb1srI1vq6uvrw9NTU1wOp1sfyA+LQ7mBqClpQUZGRkoLS3l3e3KpCKbTCYUFBSguLgYFEUFdFPa7Xa2Bl5RURHKy8vj0qHUaDSiu7sb48aNC/u9jDWt1+sxMDAQtIAo14oigsMDTU1NePjhh9HU1IRHHnkEs2fP5q1Io1QqhcvlgslkglKpZH37fC/gTLTwMMH9gYEBlJWV8Z5SzrgkGhsbIRKJ2GKdgYTEX1QCCUkg19ZIFzE3sywnJ4eXxmz+2Gw26PV6GI3GhAT4mTiLXq9nA+KxTvQI5q70/15dLheEQiFUKhWUSqWP+5n5XpkyOrFeUMrQ3d0No9EYkeBwYRInWlpahhQQ5VpRRHB45MCBA1i5ciWEQiEeeeQR1ox1uVzDrh8Zrkij/+/DmeodHR1obGxEXl4eysvLeb3QgeQQHrvdjsbGRvT29qKsrCxuWWXDlbqxWCwYGBgATdOQSqU+gfVAYhLr8TFZSE1NTZBKpby0wvaHG+DPzs5GSUkJL20auNjtdhgMBnR1dUGj0UCn0w27oJhb3DaYkASLe/nHMpnvlCm2aTab2fptoaRWAz/HeqIRnq6uLvT09GDs2LERb4MLTdNsTby+vj4UFhZCLpfDbDZj3LhxRHD4YmBgAOvXr2fb3/7www/Izs6GWCzGnXfeienTpwfN1orlanZm1X5TUxM0Gg3Kysp4jS8BySE8TFaZ0WgMqzUCV0iGszKHK3XD/M1UqR4YGGCrRPPdqIppB+1yuRKynoimaXR3d6O5uRkCgQClpaXDLqSMB4y7Ta/XQyKRIDs7G0Kh0Od7ZVL0/dcGRZvSzcC0BW9rawspwy7aBaUMnZ2d6Ovrw5gxYyIa93AwBUQbGxvh9Xoxfvx45OXlQSaTEcGJN3a7HR988AGKiopQVFSEgoICfPHFF3j88cdx9tln855KzdQJMxgMCakaAAyekAaDAW1tbQlJJQYGL/Tm5mZ0dHSgoKAAubm5QbO3gKE10/xFJBKLxG63s+LHZ3sGLkwr7N7eXt5aYfvDVFEYGBhg137EInFhONeWfyFOiqJgsVjg8Xig0WhQWFgIhUIR02oFw8G4Xpk1MExr7GhSq4ejo6MDZrMZ1dXVMTsGfzo7O9HZ2QmhUAiapjFt2jQiOInC5XJh48aNeO655xKSSs21NnQ6HbRaLe932fEUnuHSublCwn2tSqVCfn6+j6srWMHGWMK0oW5vb49r2ZjhcDqdbI0tpkUFn1ldzBj0ej06OzuDurqGi30xAXfgZzd0sEcw74HD4WBX3avVapSUlPCa2g38vAaGGQO3ynMgIrF62tvbYbFYUFVVFdvBc+CKGnGpJQkWiwVPPfUU3nnnnYSkUrvdbjQ1NaGzs5MtEJrMwhPoztXftQUMn84dSEg8Hg9aWlrQ0tKSkHU0zBiYKtmJqB7AjIFJ62bq1sW7RQDgG3C32+3o7OyE0WhkC296PB52Uh1OSGJ1g8CkdhsMBkgkEt4axPmPgVn5z/SsGs71GY7Vw6TNV1ZWxm38XFHzer2QyWSx/PyI4ERDd3c3Hn/8cXz99ddYuXIlzjvvPF4nfpfLhcbGRhiNRpSXl6OgoIB3fzrTj8RoNEKlUkEul4+4LijUO9dQ8Xq9aG1thV6vT0hrBGYMTHsCJsOQ78A6N8YiEolQVlYW0WLaaALuUqkUDocDXV1d8Hq9vLUD96e/v58tnKrVahPidhwYGIDBYEBPT8+I64qGW1DKfHatra1wOByoqKiI25i5okYEJ0lpbGzEww8/DL1ej0ceeQSnnHIKrxeYw+FAQ0MD+vv7UVFREXUwmbvANJArhCskzCQjEolgsVjQ39/PWhsxPllHhNsagc8FnFyYemWNjY0Qi8VsSjXfMGtpHA6HTyvs4doDxDrgztyMmEymhBQtBXwrKeTl5UGn0/Fi/XFhAvItLS1QKBTQ6XTDLr4MZvW0tbXB6XSivLw8bmPlihoRnCSGpmk2lVosFrNVqfmEKRBqtVpRVVU1pEBosMkmkEUy3BqS4SwSt9sNvV6P9vb2hCUXcFsjqFQqlJeX876GBQBbtsbj8aC8vDyuGV3BAu5WqxX9/f1wOp1sK2z/1F9/IYn1GJmsrtbWVt66gvrDdXUlKsOOWVRrMBhgsVjY1OpgIsxtOe90OtHW1sbexMSLlpYWuFwulJeXE8FJBZiq1A8++CDGjx+PlStXoqioKK775JaQdzqdMJvN6OzshNvt9gngctvsBnqEWoAz1DElg/B0dXWhsbExqsoB0TIwMICmpiZYLJawF7LGKuAOgE3lzc/P560Vtv+xdHV1sS6/0tJS3mMswGCGnV6vH9Igjk+cTicrwpmZmcjNzYVAIAjqumSuW51OB5VKFdMFpVwMBgM8Hg/KysqI4KQSXq8XW7ZswZo1a3DOOefgjjvuCNuf7t+LxN/FFaw7InNyut1utLS0AADGjBnDazVe7jEkg/CYTCY0NDRAKpUmpDUCMJjJ1NTUhJ6eHmi1WuTn5w+7yj0eAXfG7ajX66FUKlFaWpqQz4KJsVitVjatmu/EF27xVqanTKxuSPzXgPnHw7gp3sCgWxwA1Go1NBoN5HJ5wBp5wWI9sRIFvV7PFpIlgpOCuFwubNiwAevXr8cVV1yB66+/Hna7HWazGUqlMuBEw9ROC9ZmN9yWAH19fairq4NIJEJVVVVC7vK5wpOo9SvAYHHChoYGCAQCVFRUxDy+wi2yGizo7vF42Bp5CoUCOTk5ASsYxHMCToZW2MDgRKvX69kKAiUlJbwnfDDJFqE0iAvUlM7/uw60mNjfhRnILc00Vevu7kZ+fj60Wu2wruB4lNFpbm5ms+uI4KQgjz32GA4ePAiDwYC6ujp4vV6o1Wqcd955uPLKK3nzowODk21dXR3kcjkqKysTEtdIFuHp6+tDQ0MDvF4vKisrQ7I+Yx1w56Z1q9VqlJaW8u7mAn4uq2+1WhNWRcHj8aC9vR0GgwGZmZkoLS3l3SL3er1sgcv+/n62ZhpjhQb6fgPFwqL97JiMx5aWFgiFQpSUlAzbKTjaBaVcmpqaIBQKodPpiOCkInv37kVmZiaKi4uhVCrR1dWFNWvW4H//+x8eeOAB3lOpmSyq+vp6KJVKVFRU8J7JBQwVnkQsYgUGJ9v6+no4HA4UFhayab0jZeUFmmgivVHgurlUKhVv62j8SXQrbGBof5zS0tKosy65Vom/1cmt9MyNg4nFYthsNvT19bFp7llZWQmJNxkMBrZ6eHFx8bAWYLRldJjsSq1WSwQnnUh0KjVTir+hoQG5ubkoLy/n3ZUBxFd4wgm4i0Qi2O12eL1e5OfnQ61Wx2ydUDjj7e7uRmNjIxtrSlTcraWlBa2trQlbuQ/83I66t7c3aHCfm50XSEy4rbL9bxCYm4aRCukajUbo9Xp4vV7W3ZaIhdZMa+yMjAy2NXasrR4mzllcXEwEJ5asXr0aL7/8MvLz8wEAa9aswYIFC3gdA03T2L9/P1auXAmJRJKQVGqaptkCocyiSb5X6wODFxRTJ20k4QmlpHykAXebzYaGhoaEtUZgYNpw0zSN8vLyhMRX4tUKOxS437HFYkFHRwd6e3vZvk+Me4tZVBzI4pTJZDG10LjrihLRIA74ua+NwWBgu3mOtKg1HKunvr4ecrkchYWFoGmaCE6sWL16NTIzM3H33XcneiigaRrbt2/Hgw8+iAkTJvCSSu0Pd7V+YWEhSktLE5JN5nA40NjYiK6uLuTk5EChUITVSjlWfnRuRllpaWlCsqiAn+MrNpstYav2mb40TU1NoGkaZWVlUa1h8Y+F+Vsm/lYJ1xKxWq3o7OyEVCplF9Xy/XlwrQ2miybfDeKAwYSL1tZWtLe3IycnBzqdbtiMw1Csnrq6OmRkZKCgoAA0Tcc6zksEJxkEh8Hr9eK9997DmjVrMHfu3IhSqaPF4/HAYDCgtbUVWq0WOp0uJhNtuAF3kUgEm82GgYEBFBQUsBk7iWyNwCQ5JEJ4mPYIvb29YbVoiDXMmqKBgQGUlJT4CDFjlQRybTEp/cDQhcX+1kkoVklfXx+am5ths9lQUlISt15Jw8FtEOdyuaDT6RKScMHNsqNpGjqdbtgurcOV0amrq4NSqYRGoyGCE0tWr16N1157DSqVCjNnzsS6det4bTkwHP6p1DfeeCPvPnRubKWkpCToRBtqSflA1Qu4E02wgLvL5YJerw/J1RZPmNYInZ2dCVtPBAwuGGxubkZXVxevgX3/2moWiwVGoxEWiwVisZhN0fdfWOzfzCzW1gg30SFRbi7AN6U5lAZx8cJqtcJgMMBoNEKj0UCr1Q47d/g3iqurq0NOTg40Gg0AxHreSW/BmTt3Ltrb24c8//jjj+MXv/gFm/3y8MMPo62tDRs3bkzAKINjsVjw5JNP4p///CeWL1+OpUuX8pY1xATcmd7uvb29UKlUEIvFPnerkZaUD5dkER6uEBcVFUGn0/GeycWMgwnsR1OwlJtYEWjdENcqCRQnEYvFMJlM7OLJRLTCBnwrZqtUqoQtaGXSu5n2zaWlpQmppefxeNjUaolEAq1Wi8zMzKCuTObGUCQSYezYscjMzITVamWFJ0akt+CESmNjIy644AIcPHgw0UMJSFdXFx5//HF88803WLlyJc4999yIJ9tIA+5CoRA9PT1sLCFRLh2u8AxnecUb7hoajUaTsGQLbsHS7OxslJWVsRM+d4FiIDHhlk3xFxPm71BvGJisx+bmZshkMpSVlSUkrsFklTU3NwMASktLh13DEs9xMG4/u90e12oKjJeB+Y6537XdbofL5YLL5YLX60VPTw+qq6shEonQ29uL7u5utr0GU2qnv78fADB16lS88cYbsRzq6BWctrY2NjD/5JNPYufOndi0aVOCRzU89fX1eOSRR6DX67F69WrMmjWLvZBCWeEei4C73W5HfX09BgYG2AKhicji4rq4Eik83GQLtVqNsrKyuLt0ArXOttvt6Ovrg9lsBgC2o+lI64biAdMK2+12x2QdTaQMDAxAr9ejr68PWq02YYuM7XY7DAYDurq6kJ+fD51OF7Kryn/9EPcns36I664WCoWwWq3o7e1FR0eHj5h0d3eDpmkcO3YMMpkMM2bMwEknnQStVouSkhLodDo23TpO19LoFZwrr7wSNTU1oCgK5eXlePHFF3nPDAuXPXv24MSJE9izZw+2bNkCmUwGsViMwsJC3HfffXHr4R4Iq9WK+vp62O12VFVVJSz+lUzCE21rhFiUTZFIJGxgnzm3E/XdWCwWNDc3o7+/n22FnYjvhtuiIJHrivwbxBUVFUEmkw35nhmrBBgsb8V8v8Bg1mJPTw9blaG1tRUtLS3o6OiA1+uFRCJh1ywxAsI8uF1I//vf/2Lz5s149tln+fxORq/gpCJPPfUUHA4Hm3uv1+uxYcMGjBs3LiGp1MDgXWRdXR08Hg+qq6sT4kYBkkd4GNdSY2OjT2sExioJZH3a7fagZXH8LZNwjslsNqOxsRF2ux3l5eUJszS4bagT1Qob+HnC1+v1rNsvHvGVQN81V0w8Hg88Hg/cbjecTic6OjowefJkOBwOGI1GtLW1Qa/Xsy4uo9EIAMjMzGQzR5mfzINZFJuI7zcMiOCkOsmQSg0MVv+tq6uDQCBAVVVVQgK2AP/CE6xsClOg1WKxsC4PmUzmIyDc3+M5WVitVjQ1NaGvry+ha4q4gf3s7GyUlpYmpIQPN77icDhQUlIScjqzf7ae/++BSuTY7XY2XsK1SlpbW+F2uyEQCHD48GHodDqcccYZmDx5Misk3EKiSS4moUAEJ1K2bduG22+/HR6PB9dffz3uv//+hI7H5XLhlVdewfPPP4/f/va3uOGGGxLiNujt7UVdXR2kUikqKysTMqEAsREe/5Rv/8mFWaAoEomCrnQXi8Xo7e1FQ0MDJBJJwsrVAL6VmROZ2s2sG2lqakpoV1RgMJ2ZSasuKChAbm5uQFEJlK0nFAoxMDDAxkuYJBLGMnE6nRCJRKxVV1xczMZKGAuFWbjqcrnwwQcfoL+/H9ddd11CPgseIIITCR6PB2PHjsXnn38OnU6HWbNm4e2338bEiRMTPTRYLBb83//9HzZv3ozf//73WLp0acL6z9TX1yMjIwOVlZUJET8gsPAwF/hwGVxA7MumxLs1Qqi43W4YDAa0tbUlrCUAA9MK2+l0orS0NC6VFJjU72BZXG63GzRNs64wg8GAkpISZGZmoqenB21tbayYtLS0oKurCx6PBzKZjF0LxYgIV1D4brGeAhDBiYQdO3Zg9erV+PTTTwEAa9euBQA88MADiRyWD11dXXjsscfw7bff4sEHH8S8efMSsgK6q6sLDQ0NyM7ORkVFRdwntmBlU2w2G8xmM9tqOSMjI2icZLhijrGA2xqhoqIiYUF9JsPOYDBEnOgQK2w2G5qbm9nmdKFmlAVLCWZ+MpmZ3O/W5XKhr6+PTQnmWiU9PT1QKpVsa/BTTz0Vp556KiskTHWFeLUQSXOI4ETCu+++i23btuGVV14BALzxxhvYuXMnnnvuuQSPbCj19fVYtWoVWlpa8Mgjj/ikUvMFt0Aokzoc7pqVWJVNoWmaXamfyBIxwGBQv6GhAU6nExUVFQlLMWcSHZqamqBQKFBeXp7QGJzBYGAzytRqdUBRCZQSzFT87u3tRWdnp49V0tbWBovFAoqikJ+fz2Zx+acEM2t2KIrCwYMH8eabb2LNmjUJO0fSDCI4kZBKggMMTig1NTVYuXIlZDIZVq1ahXHjxvE+Dq/Xi7a2NjQ3N6OgoAClpaUQiURDfOb+YuLf1z2QoIRbNoVxtSWD8FgsFjQ2NsJqtSY0m4zbBVQgEKC8vDwuCSj+Nw+BFioCYDujMu3JVSoVTCYTm1rMuLra29vhcrkgEonY8jb+WVw6nQ5KpZJYJYmFCE4kpIJLLRA0TeOrr77CQw89hIkTJ+KBBx6Iayp1sLIpzCJFu90OsVg8JHvLX0ziGYNyuVxoampCd3d3woXHZrOhsbER/f39KCsrQ0FBQcImyP7+fjQ2NsLpdKKsrCxkEQyWaMH8ZBItuDcPHo8HZrMZRqORbUTX2tqKtrY2dHZ2IiMjw8fFNWvWLB+rRKvVQiqVEjFJfojgRILb7cbYsWPx5ZdfQqvVYtasWXjrrbcwadKkRA8tJLxeL959912sXbsW8+bNwx133BF2ADucsimBXFsymQwCgSCkAqF8kEzCkyytEYBB66upqQlms5nNqgq2xsQ/JVgikcDpdLIpwUyshPnZ29sLiqKQlZUV0CrhVoGmKAo1NTV4/fXX8de//jUh2XWEqCGCEykff/wxVqxYAY/Hg2uvvRYPPvhgoocUNi6XCy+//DKef/55XHnllbjhhhsgFAphNBohl8uHLfInFApjVjaF694qLS1FUVFRwu5Wk0l4nE6nz1jiJcjMWqJggXcmXuJyueB2u9HZ2YmpU6fC4/Ggp6cHXV1dMBgMbKykpaUFNpsNAoGALeXCxExKSkrYuAnTVI5YJqMGIjijmaeeegonTpxAU1MTampq4HA4oFKpMH36dNx7770BBSWe7ZadTicaGxthMplQUVGRsG6bQHIJTzStEZimdsFcXEyFA259PYqi2BIqjIAwlonJZAIAHD58GEVFRZgzZw6qqqqGBN8zMjKIkBD8IYIDALt378asWbMSPQze+eSTT1h3RlFREfr6+hKeSg0MupSYWEZlZWVCqv0yMP1nkkF4uOtnCgsLUVxcHLBga7CUYCZewqQEM6v+me6VXV1dAACFQsGmJnPjJIyVJZFI4HA48Prrr8Nms2HFihUJ+TwIKQcRnKamJlx11VXYvHlzrHs/pCzcVOrVq1dj5syZCZnwbTYb6uvrYbPZUFlZidzcXN7HwMAVnnjHVfyLeAbK5nI6nezi1aKiImRlZbHJGExKMGOVtLW1oa+vDwCQm5vLWkn+VglT3oVYJoQ4QQQHAE4//XSsXbsWv/zlL9kLPSMjg7f9l5eXQ6lUQigUQiQSYc+ePbztOxjcVGq5XI5Vq1Zh7NixCRmLxWJBXV0d3G43qqqqErZCH4heeIbL3OPGyLhFPIVCISwWC3p6etgSKkwv+76+Phw4cAACgQATJkxAVVXVkErBJSUl8Sw5T0hhlixZgmPHjgEYLEuVnZ2NmpqaIa+L0RxFBKe/vx/33HMP7rzzTlRVVeG2225DfX091q5di5NPPpmXMZSXl2PPnj1Qq9W87C8caJrGf/7zHzz88MOYOHEiVq5cicLCwoSMxWw2o66uDgBQVVWVsJpkQGDhATCsVRIoJRgYPAeZrpncLK6Ojg643W5IpVIUFRX5ZHIxwXem8vI777yDDz74AJs3byYWCiEi7rrrLmRlZWHVqlVD/hejOYoIDgBce+21qK+vx7Rp09Df34+//OUvvE7+ySw4DF6vF5s3b8YTTzwRcSp1rGAKhIrFYlRVVfFijXIXp3J/MiVzmOB7Tk4O5HI5pFLpkBIq3HiJ0WgETdNsyXn/svNMvCQFSs4T0gCaplFaWor//Oc/GDNmzJD/E8GJEmbNgF6vxx133AGTyYQXX3yRbc7k8Xh8/NlerzduLgmmnhZFUbjppptw4403xmU/scDpdLJVqa+66ipcf/31Cau/ZTKZUFdXB4VCgcrKSra1cjhwW24HcnExJXO4aeBisRgOhwMmk4lNCe7q6sLhw4exd+9eSCQS5OTkIC8vb0hhR+YnU6SSiAnBn9WrV+Pll19Gfn4+AGDNmjVYsGDBkNfFsmL9119/jTvvvDOoqyxGc9ToFRyGjRs3orGxEYsXL8b06dPh8Xh8Uk6bmppQVlYG4GeRijUtLS3QarXo7OzEvHnz8Oyzz+KMM86I+X5iycDAAP7v//4P7777Lm677TYsWbIkoaXuGxoaoFKpUFFRwbqquCnBgcQkUEowU3LeZDKhvb3dZ21JW1sbHA4HhEKhTwkVrntLLpfj5ZdfRm1tLd577z3ePw9C6rN69WpkZmbi7rvvDvqacCrWz507F+3t7UOef/zxx3HhhRcCAG655RZUV1fjrrvuCri/GM1Ro1twDh8+jI0bN2LMmDG46aabhvy/paUFd999N7xeL/7whz9g/PjxcR9TKCdbMtHZ2YnHHnsMO3bswIMPPoi5c+fyEpz2Twe22+3o6elBX18fBAIBG9z0L9zZ39/PdlXk9i/p7OyE1+uFVCplS877r3zXarWQy+Uhl3ghQXpCJIQyB8SyvJbb7YZWq8XevXuh0+liMr4gBL1wwmv0kaIcP34cNpsNp556KoChk4RIJMJrr72Gzz77DCtWrMD69etRVVUV0zFYLBZ4vV4olUpYLBZ89tlnAYN2yYpGo8EzzzyDuro6rFq1Cs888wweeeSRiFOpA3XQ9C+dAwytCs1YLBaLBR0dHVi3bh00Gg1kMhmbEqxSqXxSgqdMmYIFCxZAp9OhsLAwpvESIjbpwz333IOPPvoIEokEVVVVePXVVwMWNY1ltulzzz2Hv//975g5cybWrVs3pIVFS0sLSkpK2L91Oh127twZ0b6++OILjB8/PqjY8DFHjQrBWbx4MWbPns0WsOROEn/84x+xd+9edHR0YPny5fB4POxCug0bNuDqq68GRVEQCoVD3HDh0NHRgYsuugjA4J3G5Zdfjvnz50d5ZPxTVVWFN998E/v27cPKlSuhUCiGpFIHSgkOVDaHa5n4x0v0er3P6ner1QoAUKvVPlbJX//6V+zduxcffvghnnnmGZx99tkkXkKIiHnz5mHt2rUQiUS47777sHbtWvzpT38K+NqvvvoqpMD6cG6uW265BQ8//DAoisLDDz+Mu+66Cxs3boz6OIKxadMmXHbZZT7Ptba24vrrr8fHH3/Myxw1Klxqwdi/fz8uueQSfP3113C5XFi8eDG0Wi1eeeUVqFQqLFiwABs3bkRlZaXP+/bs2YPx48cnrJdIonE6ndi9ezf0ej22b9+OrVu3QqPRwO12Y8KECfjd737nkxIsEAhgNpt9UoKZR1tbG9ssjdui1z8lWKVSDSskNpsNLpcLKpWKx0+CkK68//77ePfdd/GPf/xjyP/ikW3a2NiICy64AAcPHvR5PkUr1o9ul1owOjs72SZN/f39GDduHM466yxkZmZCoVBg5syZ2LJlCyZNmoT33nsP99xzD8aNG4eDBw/CbDbjrLPOSvQhJASHw4G3334bOp0Op512Gn7zm9/gwIEDeOONN9Dd3Y033njDJ14il8t9SqhUVlbijDPOYFOCY9GiVy6XR5S9Rkg+RsrKcjgcuOqqq7B3717k5eXhnXfeQXl5eUzHsHHjRixZsiTg/yiKwrnnnht1tmlbWxvrdXn//fcxefLkIa+ZNWsWamtr0dDQAK1Wi02bNuGtt96KaH9JAU3TkTzSArfbTT/00EP06aefTk+bNo3+f//v/9EnTpygaZqmbTYbfeWVV9IzZ86kr732WvrVV1+laZqm33vvPbq2ttZnOx6Ph++hJyUOh4Nes2YNvWPHDtpgMNAul4v2er2JHhYhhXC73XRlZSVdV1dHOxwOeurUqfShQ4d8XrN+/Xr6pptuommapt9++2360ksvDXn755xzDj1p0qQhjw8++IB9zWOPPUYvXrw46LlrMBhomqbpjo4OeurUqfR///vfcA+Tpmma/u1vf0tPnjyZnjJlCr1w4UK6tbWVpmmabmlpoX/1q1+xr/v3v/9Njxkzhq6srKQfe+yxiPbFM0G1Y1QLDkNPTw/95ptv0hs2bKD7+/vp999/n77xxhtppVJJX3bZZezr7HY7nZubS2/bto2maZru6upi/8fHxLps2TI6Pz+fnjRpEvuc0Wik586dS1dXV9Nz586lTSZT3MdBIMSL7777jj733HPZv9esWUOvWbPG5zXnnnsu/d1339E0TdMul4vOy8uL2fX36quv0r/4xS9oi8US0usfeeQR+i9/+UtM9p1GBNUOkmIDIDs7G1dccQWuvPJKfPXVV1izZg0WLlyId999F5WVlWwSwSOPPIJf/epXmDt3LrZs2YIlS5bgiiuuwJEjR3gJVF9zzTXYtm2bz3NPPPEEzjnnHNTW1uKcc87BE088EfdxEEYPer0eZ511FiZOnIhJkybh6aefHvKa7du3IysrCyeddBJOOukkPProoxHvL1BWVktLS9DXiEQiZGVlwWg0RrxPhm3btuHPf/4zPvzwQygUioCvsVgsMJvN7O+fffZZQFcYITCjOobjj1gsxqJFi3DOOecgIyMDW7Zswffffw+BQICOjg7885//xPvvvw+KovDaa69h+fLl6Ovrwx133IG//OUvmDJlSlzHd8YZZ6CxsdHnua1bt2L79u0AgKuvvhpnnnlm0MwaAiFcRCIR1q1bh+nTp8NsNmPGjBmYN2/ekIWHv/zlL/Gvf/0rQaOMDcuXL4fD4cC8efMAAL/4xS/wt7/9jfdMrnSGCE4AmLubGTNmsGt37rnnHvzqV7/CtGnTYLPZIJPJcPjwYTz44IO44IILEtYKt6Ojgw08FhYWoqOjIyHjIKQnRUVF7PmlVCoxYcIEtLS0BFzpHgu0Wi30ej37t8FggFarDfganU4Ht9uNvr4+5OXlRb3vEydOBHy+uLgYH3/8MQCgsrIS+/fvj3pfoxXiUgsA4x4rKyvDo48+Crvdjvr6etx9991ob2+HXC7H3//+d9TW1uKdd96BWq0esmArEZCaXelPeXk5pkyZgpNOOgkzZ84c8n+apnHbbbehuroaU6dOxQ8//BCzfTc2NmLfvn2YPXv2kP/t2LED06ZNw69+9SscOnQo4n1ws7KcTic2bdqERYsW+bxm0aJFeP311wEA7777Lll7lUoMF+AZ5jFqefLJJ+mrr76a7urqol977TV66dKldG9vL2/7b2ho8EkaGDt2LJvd0traSo8dO5a3sRD4p6yszCdZxZ9///vf9Pz582mv10vv2LGDPuWUU2KyX7PZTE+fPp1+7733hvyvr6+PNpvN7P6rq6uj2legrKyHH36Y3rp1K03Tgxmkv/71r+mqqip61qxZdF1dXVT7I8ScoNoxqhd+RoLL5cIjjzyC999/H2eddRaysrLYxVh84L9A7J577kFeXh7uv/9+PPHEEzCZTPjzn//M23gI/DLSosObbroJZ555JruifNy4cdi+fTvrFosEl8uFCy64AOeddx7uvPPOqMdISHvIws9YIRaLsWbNGtx1112w2+28Nim77LLLsH37dnR3d0On0+EPf/gD7r//flx66aXYsGEDysrK8M9//pO38RD4Z6RFh8GyvCIVHJqmcd1112HChAlBxaa9vR0FBQWgKAq7du2C1+uNSUyFkH4QwYmQRFxQb7/9dsDnv/zyS55HQjh27JjPSvT6+no8+uijWLFiBfvc9u3bceGFF6KiogIAcPHFF0ddDPGbb77xKR8/fvz4uLa4+Pbbb/HGG2+wcSNgsG9Lc3MzAODmm2/Gu+++ixdeeAEikQhyuRybNm0iMRVCQIjgEAgRMG7cOLYnvMfjgVarZdNlucQ6XZjJ2NJoNLjooouwa9cuH8EJJcsrHE4//XSM5HZfvnw5li9fHvE+CKMHkqVGIETJl19+iaqqKraBX7wIZdHhokWL8Pe//x00TeP7779HVlZWVPGbRBBhXJmQAhDBGcVce+210Gg0PpPW6tWrodVq2VXjzPqDZCPQ2E0mE+bNm4cxY8Zg3rx56OnpCfje119/HWPGjMGYMWPY9NpoCFT2nSFW6cLA4Jqr008/HdOmTcMpp5yC888/H/Pnz8ff/vY3/O1vfwMALFiwAJWVlaiursYNN9yA559/Pqp98ondbse6detAURRommYrfBDSiOFS2IZ5ENKA//73v/TevXt90qxTpTZUoLHfc8899Nq1a2mapum1a9fS995775D3GY1G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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Create 3D figure\n", "fig = plt.figure(figsize=(8, 6))\n", "ax = fig.gca(projection='3d')\n", "\n", "# Plot r1\n", "ax.plot(r1[0], r1[1], r1[2], \"r-\")\n", "\n", "# Plot r2\n", "ax.plot(r2[0], r2[1], r2[2], \"b-\")\n", "\n", "# Add legend\n", "ax.legend(['$r_1$', '$r_2$'], loc='upper left')\n", "\n", "# Add plot title\n", "ax.set_title('Lines $r_1$ and $r_2$ in 3D')\n", "\n", "# Set axes limits to be sensible\n", "ax.set_xlim3d(min(r2[0]), max(r2[0]))\n", "ax.set_ylim3d(min(r2[1]), max(r2[1]))\n", "ax.set_zlim3d(min(r2[2]), max(r2[2]))\n", "\n", "# Add axes labels\n", "ax.set_xlabel('X axis')\n", "ax.set_ylabel('Y axis')\n", "ax.set_zlabel('Z axis')\n", "\n", "# Prevent axes labels being cut off\n", "plt.tight_layout()\n", "\n", "# Change angle and height of view\n", "ax.view_init(elev=10, azim=65)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "(ii) First we need to cast the problem into a system of linear equations which Python can understand:\n", "\n", "$$\n", "\\boldsymbol{M} + \\lambda \\boldsymbol{t} + d \\boldsymbol{\\hat{n}} = \\boldsymbol{N} + \\mu \\boldsymbol{s}\n", "$$\n", "\n", "Python can solve linear equations of the form:\n", "\n", "$$\n", "\\boldsymbol{A} \\boldsymbol{x} = \\boldsymbol{b},\n", "$$\n", "\n", "where $\\boldsymbol{A}$ is a matrix and $\\boldsymbol{x}$ and $\\boldsymbol{b}$ are vectors. From our linear equations, we can write:\n", "\n", "$$\n", " \\lambda \\boldsymbol{t} - \\mu\\boldsymbol{s} + d \\boldsymbol{\\hat{n}} = \\boldsymbol{N} - \\boldsymbol{M} \n", "$$\n", "\n", "This gives:\n", "\n", "$$\n", "\\begin{aligned}\n", " \\boldsymbol{A} &= \n", " \\left[\n", " \\begin{matrix}\n", " | & | & | \\\\\n", " \\boldsymbol{t} & -\\boldsymbol{s} & \\boldsymbol{\\hat{n}} \\\\\n", " | & | & | \n", " \\end{matrix}\n", " \\right] \\\\\n", " \\boldsymbol{b} &= \\boldsymbol{N} - \\boldsymbol{M} \\\\\n", " \\boldsymbol{x} &= \\left( \\begin{matrix} \n", " \\lambda \\\\\n", " \\mu \\\\\n", " d\n", " \\end{matrix} \\right)\n", "\\end{aligned}\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To set up our matrix `A`, we need to stack our vectors `t`, `s`, and `n` column-wise. To do this, we use the command `np.column_stack`. " ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "# Find points shortest distance apart\n", "# Set up system of linear equatiosn\n", "# P + lambda*t + d*n = Q + mu*s\n", "A = np.column_stack((t, -s, n))\n", "b = N - M" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can now solve for `x` to find $\\lambda$, $\\mu$ and $d$. " ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "# Solve Ax = b, where x = [lambda, mu, d]\n", "x = np.linalg.solve(A, b)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To plot the results, we need to first find the two points that are closest." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "# Points on lines at shortest distance apart\n", "P = M + x[0]*t\n", "Q = N + x[1]*s" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For the perpendicular vector, `matplotlib` can draw a straight line in 3D if we provide its the coordinates of the starting and the ending point. We can get these two points by starting from one of the closest point, say `P`, and travelling along the perpendicular vector, `n`. The constant `2.0` here is chosen by inspection - students can alter the length of the normal line on the plot by increasing the constant. " ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "# Two points on perpendicular vector\n", "# to illustrate its orientation\n", "D1 = P - 2.0*n\n", "D2 = P + 2.0*n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we are ready to plot it the results in 3D. First, let us get the points on each line for plotting, using the same concept that was explained in (i)." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "# Create normalised vector along the first and second line\n", "t = t/np.linalg.norm(t)\n", "s = s/np.linalg.norm(s)\n", "\n", "# Create 3x2 matrix where each column is a point on the first line\n", "# which are close to P1\n", "r1_plot = np.array([P, P]).T + np.array([t, t]).T*lam\n", "\n", "# Create 3x2 matrix where each column is a point on the second line\n", "# which are close to Q1\n", "r2_plot = np.array([Q, Q]).T + np.array([s, s]).T*mu" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Then now, we are ready to plot the two lines and where they come the closest. " ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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S2weA5ddZzKZ2BkzZrDz5s1zip0Eb6EsQWcRFBSEqKgoXtT2swdbmVxfffUVqqqqcOnSJZw9exYbNmxAWlqae41tRjQ1w27evHmYOXMmbty4gYCAAGzevNnZJtfCVsJCXQwePBg5OTkAgHHjxqFjx47o2LEjCgsL8eqrrzrbZEIgUGmmZoqt0jMMw6CyshIGgwEajQYymazWokjCedRVEojLsPPy8rL6v+z/13PkFrhPnDgRS5cuxQsvvOBco2tgqyyQJUuXLq328+HDh83f//TTT442ifAQyMMisGXLFvNT+2OPPQYvLy9EREQgNjYWs2fPNqftEq7F8nOpqKjAqlWr6uxCXFRUBH9/f3NKeXR0NLKzs11iqztg7Zt/JzwA8rA8mMa0Mjl16hTEYjFycnJQUlKCe++9F/369bO6OJJoHI35XBqaYdcc0Gq1WLduHf7973//b26D2sQ0C0iwPJgffvihzr9v27YN3377LX788Udznb8vvvgCAwcOhFQqRWhoKP71r3/hzJkzvBYsW72LTp06heeeew7AnafxpUuXYuTIkbX+f9KkSfjll1/g5+cH4M55cWZ1hcZ8LidPnsTXX3+NuXPnmjPsFApFtQy7oKAglJaWwmAwQCKRICsrC1FRUU47DkdjTXysFZRWKBTw9/cHgGrFklmWhV6vh0wmc5nNhIupKyPDyovwEGxlcr355pvspEmTWJZl2YqKCrZt27bshQsX3GFig/nvf//L6vV6lmVZdu7cuezcuXNZlmXZyspK8+9zcnLYkJAQ88+WTJw4kf3qq69cZ3AdNDXD7rHHHmN37tzJsizLPv/88+y6deucYmdDKSwsrPbz4sWL2dzc3EZtq6CggM3Pz2dZlmV3797NlpWVsSx75zi7devGtmjRgt27dy9rMpmaZjThbihLkKiOrUyul156CRUVFWjfvj169OiByZMno1OnTm62tm5slQJSqVTm32u1WkFUi29qht2qVavw3nvvoUWLFigqKsIzzzzjbJNtUlZWhrvuugt//PEHAODcuXM4cuQI9Hp9rfdmZ2fj559/xoYNG3Dq1CmztzRgwACcPn0aADB+/Hjs2bMHwJ2EkitXruDUqVNQqVT46quvcP36dQwdOlQQnzPROGjhMOFRWJYCAu6E0p5++mmkp6djx44dNkOCVArIORw6dAhr1qzB2rVrMXfuXDzxxBN44oknzH/nQn6vv/46rl+/jri4OKSkpGD69Om4++67sXnzZvzyyy+IjY2FWq3GrFmzEB0djX/961+YO3cuunfvjvHjxyM6OhoTJ05E586dERIS4sYjJhwA9cMihE1jehdZcvXqVUycOBHHjx+HQqGo9rfc3FyEh4dDp9PhueeeQ1JSEhYvXuy8g2kmsP/fG27u3LlIS0uDRqPBRx99hJiYmFrv1Wq1yM7ORllZGSZOnIhHH33UnPq+bt06zJ07F5988ok5CWXs2LFo27YtFi1ahMuXLyM1NRVbtmyBVCrF0qVLedeRm7ALm4JFSReEIGhMooIlbdu2hbe3Ny5fvozu3btX+1tERAQAQC6XY/LkyXjnnXccZ3gzhvscFi1ahB49eqBLly7mc83BidoPP/yA999/H61bt0ZERAQKCwtx69YthISEQCaToaqqCv/88w9KSkoQEBCA+Ph4c+i3bdu26NChA1q3bo2PPvoIqampJFgeCs1hEYLHVu+i1NRUGAwGAEB6ejr+/vtvxMfH1/r/3NxcAHcGz3379qFDhw4usbu5cPz4cYSHh4NhGHz88ccAYO4pxTAMKioqcPToUQwePBgfffQRJk+ejMuXLyMgIABpaWk4e/Ystm/fDpFIhFmzZgEAoqKicPbsWQDAf/7zH3Tu3BmPP/44ZDIZHnnkEfccKOF0yMMiBM+0adNQVVWF/v37A7iTeLF+/Xr89ttvePPNNyGVSiESifDRRx8hODgYwJ1EhU2bNiEyMhLjxo3DrVu3wLIsunTpgvXr17vzcDwKo9GIH374ASNHjkTv3r2xaNEidO/eHb1794bRaDSXNIuJicGFCxdw9OhRfP311ygtLUVGRgYOHTqEvLw8jB07Fv/88w/WrVuH5ORkDB06FD4+PgDufP4zZsxAeHi44EqkEfZBc1gEQTiNX3/9FQsWLMCxY8fAMAy++OILvP/++zhy5AhCQ0PNIcGcnBzMnTsXEokEvXr1Qps2bdCtWzfzmjJOnIhmAc1hEQThWliWxYkTJ/Dwww+bPZ8xY8bAx8fHnPjCzXNFRkbis88+c5uthDAgD4sgCILgE9RxmCAIghA2JFgEQRCEICDBIgiCIAQBCRZBEAQhCEiwCIIgCEFAgkUQBEEIAhIsgiAIQhCQYBEEQRCCgASLIAiCEAQkWARBEIQgIMEiCIIgBAEJFkEQBCEISLAIgiAIQUCCRRAEQQgCEiyCIAhCEJBgEQRBEIKABIsgCIIQBCRYBEEQhCAgwSIIgiAEAQkWQRAEIQhIsAiCIAhBQIJFEARBCAISLIIgCEIQkGARBEEQgoAEiyAIghAEJFgEQRCEICDBIgiCIAQBCRZBEAQhCEiwCIIgCEFAgkUQBEEIAhIsgiAIQhCQYBEEQRCCgASLIAiCEAQkWARBEIQgIMEiCIIgBAEJFkEQBCEISLAIgiAIQUCCRRAEQQgCEiyCIAhCEJBgEQRBEIKABIsgCIIQBCRYBEEQhCAgwSIIgiAEAQkWQRAEIQhIsAiCIAhBQIJFEARBCAISLIIgCEIQkGARBEEQgoAEiyAIghAEJFgEQRCEIJDY+X7GKVYQBEEQRD2Qh0UQBEEIAhIsgiAIQhCQYBEEQRCCgASLIAiCEAQkWARBEIQgIMEiCIIgBMH/AdxhfXh/+cn0AAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Create 3D figure\n", "fig = plt.figure(figsize=(8, 6))\n", "ax = fig.gca(projection='3d')\n", "\n", "# Plot r1\n", "ax.plot(r1_plot[0], r1_plot[1], r1_plot[2], \"r-\", label='$r_1$')\n", "\n", "# Plot r2\n", "ax.plot(r2_plot[0], r2_plot[1], r2_plot[2], \"b-\", label='$r_2$')\n", "\n", "# Plot the normal vector\n", "ax.plot([D1[0], D2[0]], [D1[1], D2[1]], [D1[2], D2[2]], 'k-',\n", " label='normal vector')\n", "\n", "# Plot the closest points\n", "ax.scatter(P[0], P[1], P[2], s=100, c='r')\n", "ax.scatter(Q[0], Q[1], Q[2], s=100, c='b')\n", "\n", "# Add legend\n", "ax.legend(loc='upper left')\n", "\n", "# Add axes labels\n", "ax.set_xlabel('X axis')\n", "ax.set_ylabel('Y axis')\n", "ax.set_zlabel('Z axis')\n", "\n", "# Prevents axes labels being cut off\n", "plt.tight_layout()\n", "\n", "# Change angle and height of view\n", "ax.view_init(elev=10, azim=65)\n", "\n", "# Reduce the number of ticks along the axis\n", "# Try commenting these lines out to see the effect\n", "plt.locator_params(axis='y', nbins=6)\n", "plt.locator_params(axis='z', nbins=6)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5" } }, "nbformat": 4, "nbformat_minor": 4 }