{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Quantum Natural Gradient\n",
"\n",
"Author(s): Kyle Godbey\n",
"\n",
"Maintainer: Kyle Godbey\n",
"\n",
"For this last application, let's think of a way to improve our VQE algorithm by exploiting some features of our quantum computing architecture. What we'll do is, instead of computing the gradient of the variational parameters of our ansatz, we'll instead compute the so-called Quantum Natural Gradient. This is an extension of the standard natural gradient which moves in the steepest descent direction of the information geometry, using something like the Fisher metric. For these quantum systems, we'll instead use the Fubini-Study metric (real part of the quantum geometric tensor) to determine the most optimal step in the ansatz parameters. For more details you should have a look at the [Quantum Natural Gradient](https://quantum-journal.org/papers/q-2020-05-25-269/) paper published in 2020.\n",
"\n",
"While it's not too difficult to calculate this measure yourself by constructing the Hessian using [parameter shift rules](https://pennylane.ai/qml/glossary/parameter_shift.html), we'll be using a built in pennylane method to make our lives easier. \n",
"\n",
"Most of this will be the same as the N=3 case, so we'll toss it all in a cell together -- be sure to check that you know what's happening though!"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" (-9.625) [Z2]\n",
"+ (-6.125) [Z1]\n",
"+ (0.21829) [Z0]\n",
"+ (15.531709) [I0]\n",
"+ (-3.91) [X1 X2]\n",
"+ (-3.91) [Y1 Y2]\n",
"+ (-2.1433) [X0 X1]\n",
"+ (-2.1433) [Y0 Y1]\n",
"(, )\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA5cAAAGjCAYAAAC44eF3AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAA9hAAAPYQGoP6dpAABeS0lEQVR4nO3deWBUhdX38d8syUwWshGyQCJr2AyLGNzArYhg0Uq1gOBS+zy1VdvaKi6t5bHWKlVB+2gflVp93aNAbVGporiABTdwASICAQQSIISEkJBlsszc949ABGUJuZO5c2e+n39KJ5N7z0y8555zl3MdhmEYAgAAAADABKfVAQAAAAAA7I/mEgAAAABgGs0lAAAAAMA0mksAAAAAgGk0lwAAAAAA02guAQAAAACm0VwCAAAAAEyjuQQAAAAAmEZzCQAAAAAwjeYSAAAAAGAazSUAAAAAwDSaSwAAAACAaTSXAAAAAADTaC4BAAAAAKbRXAIAAAAATKO5BAAAAACYRnMJAAAAADCN5hIAAAAAYBrNJQAAAADANJpLAAAAAIBpNJcAAAAAANNoLgEAAAAAptFcAgAAAABMo7kEAAAAAJhGcwkAAAAAMI3mEgAAAABgGs0lAAAAAMA0mksAAAAAgGk0lwAAAAAA02guAQAAAACm0VwCAAAAAEyjuQQAAAAAmEZzCQAAAAAwjeYSAAAAAGAazSUAAAAAwDSaSwAAAACAaTSXAAAAAADTaC4BAAAAAKbRXAIAAAAATKO5BAAAAACYRnMJAAAAADCN5hIAAAAAYBrNJQAAAADANJpLAAAAAIBpNJcAAAAAANNoLgEAAAAAptFcAgAAAABMo7kEAAAAAJhGcwkAAAAAMI3mEgAAAABgGs0lAAAAAMA0mksAAAAAgGk0lwAAAAAA02guAQAAAACm0VwCAAAAAEyjuQQAAAAAmEZzCQAAAAAwjeYSAAAAAGAazSUAAAAAwDSaSwAAAACAaTSXAAAAAADTaC4BAAAAAKbRXAIAAAAATKO5BAAAAACYRnMJAAAAADCN5hIAAAAAYBrNJQAAAADANJpLAAAAAIBpNJcAAAAAANPcVgcAhFptba3Ky8vl8/nk8/msDucQXq9XXq9XGRkZSkxMtDocAACAdqG+gkRziQi3efNmLViwQEVFRVq/oVjFxRu1u7zM6rDapVtGlvLy+mlA/zzl5+dr4sSJ6tOnj9VhAQCAKEd9hSNxGIZhWB0EEEylpaV64YUX9OLceVr1+WdyxXjkyeglJWUpJrW73Gnd5UpIlcPtkcPllhwOq0NuZRgy/C0yWhrlr6tSy54daq7aIdWUqbF8i/zNjRp20ghNnTJZl19+uXJycqyOGAAARAnqK7QHzSUihs/n06xZs3T3PTPlNwx5+xQorv9oxfUdKWes1+rwTAk0Nahh00o1bFgm3+aVcjkc+p8Zv9fNN98sr9fenw0AAIQv6iscD5pLRITFixfrmp9fq23btqpLwQ+VfPpkOT3xVofVKQKN9ar+cJ5qV/5LuSf01N//Nkdjx461OiwAABBhqK+or44XzSVsb+7cuZo2bZq8JwxRyphrFZOea3VIIdFcUaK978yRb9saFRYWasqUKVaHBAAAIgT1FfVVR9BcwtYOJL74weco7YJfy+F0WR1SSBkBv/a88ZDq1y4hAQIAgKCgvqK+6iiaS9jW4sWLNX78+KhNfAccnAAXLVoU1ZdwBAIBVfuaJUnJ3hg5nTzKFwBwbOw/vhFJ9VVL7R453LFyeY//8SPUVx1Dcwlb8vl8Gjj4RO02uih90l22TnzBYAT8qph/h7o59mnd2i8j/ib06vpmFe2o1urSahVtr9aa7dXaVeNTY0vgkPd53E5lJnk1pEeyhuQka0iPZOV3T1ZyfIxFkQMArMT+4+giqb5qKt+s8vl/lCT1uP5pOTowvTba6qtg4DmXsKXZs2erZNs2Zf3kr7ZOfMHicLqUMuZalTz9S82ePVszZsywOqSg27S7Vs9/tFXvfFWubXvq2/U7jS0BbdtTr2176vXvNTvbXj8hLV5jBmXoitN6qm83HqYMAJGM/Uf7RUp91bBphXa/er+MpgbFZg/oUGMpRUd9FWycuYTtlJaWqm+/PHmHX6jUc662OpywUrXkKTWuel0bizdExHOaWvwBvf3VLj330VYt31h5yM9y0+Jajyj3SNGQHsnq2TVehiGdNes9SdL7t5wrh0PaWlmvNdurtWb7Xq3ZXq2SPQ2HLGdUv6668rSeOm9Qptyu6L0MCgAiCfuP4xcp9VXNp6+p6p2/K67vSDXuXK+EQWcrbcw1ppYZafVVZ+LMJWznhRdekN8wlHz6ZKtDCTvJp0/Rjs8XqrCwULfeeqvV4XSYr9mvJ5d9rec+3KqyGp8kyemQvjcwU5eNzFVBr1SlxMd+5/fqm1ra/p3eJVbxsW7lpsVrdF562+t765u0ckuVXlpRonfX7dLyjZVavrFSWUleXXl6T/30zN7yuO17tBYAohn7j46ze31lBPyqevdJ7fv0VXUpuFhJp1yi7Y/+WJ7uA00vO1Lqq1DgzCVsZ/iIk1VcH6duE39ndShhqWLBn5WX4NPnn660OpQO+aJkr26Zv0rF5bWSpK4JsbrslFxNPeUE5aQe/dla9U0tGnzHm5KktXeNU3zs0Y+flVbV68VPtumlT0pUWdckScrLSNTsScM0LDfF/IcBAIQM+w9z7FxfBZoaVPHaLDVsWqm0836uLiMmqH7Dh9r9r3vU47r/J3dShul12L2+ChX7n8NHVNm8ebNWff6Z4geMtjqUsBU3YJS++OxTbd682epQjouv2a9731inSx5druLyWqUnevTg5GH64Hff0y3jBh6zMOiInNR43TJuoD743ff04ORhSk/0qLi8Vj98dLnuW7ROvmZ/0NcJAAgu9h/m2bm+atlXqV2Fv5Vv2xplXHqHuoyYIElq3LFOrsQ0ubp0C8p67FpfhRrNJWxlwYIFcsV4FNd3pNWhhK24viPlivHolVdesTqUdvuiZK8u/OsyzVm6SQFDunh4dy2+8SxdMiInJJcYedwuXTIiR4tvPEsXD++ugCE9tmSTLvrrMn1RsrfT1w8A6Bj2H8Fh1/qqqXyzyp6bLn99tbIuv09xfQvafta4fZ083Qd2eJjPt9mxvrICzSVspaioSJ6MXnLGMgr6SJyxcfJk9FRRUZHVobTL62t2atKcD7Rx/9Hmv115sh667CSlJnz3npjOlpoQq4cuO0l/u/JkpSfGqri8VpPmfKA3DpoUCAAID+w/gseO9VXDphUqe+E2ueKTlXXlA4rN6NP2M8PfoqayjfL0MH+/5QF2q6+sQnMJW1m/oVhKyrI6jPCXlNX6XYW5eStK9MvCz9TsNzR2cKYW33iWxp1o/d933IlZWnzj2Ro7OFPNfkO/KPxM81aWWB0WAGA/9h/BZbf6at9nC1X+8p/kPWGoMqfdJ3eXrof8vGn3FhktjYrtPii4K7ZJfWUlmkvYSnHxRsWkdrc6jLAXk9pdxcUbrQ7jqOatLNGtL69WwJCmFORqzhUnW3K0+UhSE2I154qTNaUgVwFDuvUfq21RIABApGP/EXx2qq8avv5MexbPUfyAUer2w9sPe7a1cftXktMtT1bfoK7bDvWV1WguYRu1tbXaXV4md5o9kp+V3KndVb5rp+rq6qwO5bDeWLNTv315tSTpJ6N66d5Lh8jlDM49EcHkcjp076VD9JNRvSRJv315tRYV2eMSJwCIROw/gs9u9ZU7JVvulGzVb/hAe99/VoGmhu+8p3HHOsVm9pXDHdyDDuFeX4UDmkvYRnl5uSTJlZBqcSThz5WYJumb7yycfFGyVze89LkChnTZyFzdceHgoN1s3xkcDofuuHBw2xHoX734uVbZaEgDAEQK9h+dw271VUxqtrr/9yNKHjVV+z5dqNJHrlL1xy/r4KcrNm1fF9T7LQ8I5/oqXNBcwjZ8vtaHITvcHosjCX8HjtQd+M7Cha/Zr5vnr2q7R+aeHw4J68LgAIfDoZmXDGm7h+bm+atsN2YeAOyM/UfnsWN95XDHKuWMy5T94/+V0dSgvUueUvncGWquKJG/rkot1bvk6R785jJc66twQnMJ22hLfq6jP9gYksMVIyn8kt9D7xS3TfW7/9KhYXkp05G4nA7dd+nQtimAD7/DDf0AECrsPzqPneurXfP/IElKyD9PLdXl2vHUL1Xx779Ikjw9BgR9feFaX4UT+/1XBNjgSKXl9n9HB18iYrUvSvbqb0s3SZLu+WF+WA1faK+0hFjdPXGIrn3+U81ZuknjTszSsNwUq8MCgIjG/iNELKyvjIBfzXu2q7n8azXt3qKAr1ZGS3NrWO4YOb2Jiu3WSzEZvRWT1kMOp0uNZRvlr2m9PDV9wm9ktDSp+pN/qubD+XKnZMvVpVvwAw3D+irc0FwC6HS+Zr9umb+q7QHX4TAuvqPG52fpB8O669VVO3Tz/FVaeMPokDyoGwCiEfuPyNWyr1J1X76n+g3L1bx7q4yWJkmSK7GrXAkpbWcJDX+z/HV7VVNbKan10tSYbj3VtLP1DHD3nz3e9nrKGZcpcchYOb2JtrhsOhLRXALodE8u+1rF+y9nuvOiE60Ox7Q//uBEfbCpUsXltXriP1/rF+f2szokAIhI7D8iixHwq774I9WtXqyGrz+Tw+VWXL9TlTD4HMVm9FZMt15yxSUd9nf9DTVqLt+ipt1fq3bVW22vV739uBKGjlV83mlyOF3feeYlQot7LgF0qhZ/QM99uFWSdPv3B9rycqZvS02I1e8uaB0U8PxHW9XiD1gcEQBEHvYfkaVxx3qVPXuTKhb8Wf6GfUo7/zrl/OJZdbv4NiUVXCzvCUOP2FhKkisuSd6eQ5U4bJyaK1r/u0g97+fyN9SoYsGfVfbsTWrcuSFUHwdHQHMJoFO9/dUuldX4lJ4YqwlDs60OJ2guHJatrgmx2lnt09tfMZIcAIKN/Udk8PtqVfnmIyp77mYZhqGsK2Yp+6oH1GX4BXJ6E497eTueuF6SlDb+V0o6+SJlX/Wgsq6YJcMwVPbsdFW+9aj8vtpgfwy0E80lgE713EetRxenjMyNqHtLPG6XpozMldR69BkAEFzsP+yvcecG7XzyetWtXaLUMdco+8d/kafHoI4v76AhPl2GjWt73dNjkLJ//BeljrlGdV++p51PXs9ZTItwzyWATrOxvFbLN1bK6ZCmnnKC1eEE3bRTT9BjSzdp2cYKbdpdq77djv8IbCTaWd2g/xRXqGh7tXbVtI5rz0zyKr9Hss7MS1d2cpzFEQLWYftoH/Yf9ldf/LEqXr1fMRm9lDXx9qDcC1n2zG8kfTPE52AOp0tJBT9Q/IBR2r1gpnYV/k7pP7hV8Xmnml4v2o/mEkCneeHj1iOy3xuYqZzUeIujCb6c1HiNGZiht78q1/MfbdUfImDYhBnrymr0wFsb9M5XuxQwJLfToZZA67j2A/92OqQxgzI1/fz+Gph15HtrgEjD9nF82H/YW926Zap49X7F552mrhdOlzPGY3qZe5e/KEny9BismNTuR3yfu0tXZV42U5ULH9DuBTOVftEtShg42vT60T5cFgug07yz/16Sy/Zf/hOJpoxsPaL+7rrIv2/mSAIBQ4+8t1ETHl6md9eVa3+93FY4H/zvgNH6XU14eJkeeW+jAgGeFYbIxvbRMew/7MtXUtTaWA46U+kX3xaUxjLQ7FP1shckSZlTZx7z/c4Yj9Ivvk3xA0er4tX75SspMh0D2icqmssVK1bo+9//vlJSUpSQkKDTTjtN8+bNszos2FTNp69p630XqmLhA4f9ud9Xq9JHrtK2By5V857tIY4ufFTXN2vbnnpJUkGvVIuj6TwFPVs/29bKelU3NFscTegFAoZ++881mvXmevkDhvztKIYPvG/Wm+v123+uieoCGpGN7aNj2H/Yl79hnypemy1PzmClT7hJDmdw7pU9eIiPw9W+Cy8dTpfSJ9wkT49BqnjtAfkb9gUlFhxdxDeX7733nkaNGqVly5Zp8uTJuvbaa1VWVqYpU6bogQcO3xwAR9NlxIXynDCk9cG/xR995+d73npM/to9Sjn7x4pJ62FBhOGhaEe1JCk3LU4p8fYfH38kqQmxykltvUfqy+3VFkcTeo8t3aR5K0s6/PvzVpbosaWbghgRED7YPjqG/Yc9GYahykUPy2j2Kf3C6UFrLI80xKc9HE6X0i+aLqO5QXsW/VWGEX0Ha0ItopvLlpYWXXPNNXI6nXr//ff1+OOP64EHHtCqVavUv39/3X777dq6NbKndCH4HA6H0r//Gzli41S56P/kr/9mh1C3bpnqv1oqzwlD1eXkiyyM0nqrS1u/lyE9ki2OpPMNzWn9jKsjoDg4HuvKavTgYvPT+B5cvEHrymqCEBEQPtg+Oo79hz3Vrl6shg0fqusFN8id1C1oyz3aEJ/2cCdlqOv4G1S/4QPVrl4ctLhweBHdXL777rvatGmTpk2bpuHDh7e9npycrNtvv11NTU165plnrAsQtuVOzlTquf+tQP1e7XnrUUmSv65Ke956VI7YuNbm0+GwOEprFW0/UBykWBtICOTvL4DWREBxcDweeCt4Y94fDOKygHDA9tFx7D/sxwj4Vf3BS4ofdJbi+58RtOW2d4jPscQPOEPxA89U9QcvyQj4gxUeDiOim8slS5ZIks4///zv/GzcuNbT6kuXLg1lSIggXYaPl7f3CNWvX666tUtVuej/FGioUdqYa+ROzrA6PMut2R49R54PfMYimxcHx2NndYPe/mpXu+4hOxZ/wNDbX+3SzuqGIEQGWI/twxz2H/ZTv365/DXlSj71R0Fb5vEO8TmW5NN+JH9NuerXf2B6WTiyiG4ui4uLJUl5eXnf+VlWVpYSExPb3gN0RNcLbpDTk6CK1/9XDRs/VlzfkUoc+t2DGdHowPPbenaNvBHy39ara4Kkbz5zNPhPcYWCeetKwJCWFVcEb4GAhdg+zGH/YS+GYajmk3/J23O4YjP7BG25HRniczSxmX3l7TlMNSv+yb2XnSiin3NZXd16FCg5+fBHvpKSktreYxeGYaihOTpP5zc0t1gdwne4u6Sry4gLVf3hXMnpVtr4X1kd0iEamltU3xT67y0QCKixJSBJMgyFLIaD1xPKzx3Yv5PyNQdU62uS0xnRx+0kSV9sqzrkOX1muZ0OfV6yVxOGZgdleYCV2D46jv1H6PcfZuurpp0b1FRWrIxJfwxSROaG+BxN0sgfqvwfd6qprFie7P5BWy6+EdHNZSRqaPZr8B1vWh2GJRrLNlodwnf46/Zq36pFrf8n0KKGjZ+oy/Dx1gZ1kB899qE8WbstjeGsWe9Zst6Cu9+xZL35dzIsoCNaAoYKP96mwo+3WR0KEHaidftg/xEaZusrX8mXcsR45O01PDgByfwQnyPx9j5JDrdHjSVFNJedJKIPrx84Y3mks5M1NTVHPKsJtEflW48oUF+tlLOvljMuSVXvPamWmsh6GDIAAMCRNO1Yp9isvKA9eiRYQ3wOx+F0KTY7T4071gd1ufhGRJ+5PHCvZXFxsU4++eRDflZWVqba2lqdcsopVoTWYXExLq29K3iXB9jJ55930+gwGu5bW/SuGjZ8qLi+I5V82o/kTs5Qxav3q/L1h5V52d1WhydJ+sd1p+ukk0aEfL2BQKDtCOz7t5yr9C6heU5ZfVNL2xHnlTPGKD42NClu975GnT1riSSp6M6xUXFZ7N0L12reytKgXvY3eWSuZkwYFJTlAVZi++g49h+h33+Yra8ad6xXwonnBiWWYA/xORxP9wGqW8tAz84S0c3l2WefrT//+c966623dNlllx3yszfffLPtPXbicDhClvDCTVxM+Hzuln0Vqnr7b3J6u7TdZ5kw6CzVr1+u+vXLte+LN9Rl+AUWR9n6nVn134vH7VRjS0AOhyyJIT42dJ/d6WiSJHljnEr0Ru4Dvw82/IRUFX7S8YfDf1tLwNBJuSlRm98QWdg+zGH/EVpm6it/XZX8tZWKzf7u8MyO2PHkLyQFb4jP4cRm91fNxy/LX1clV0Jqp6wjmkX04fUxY8aoT58+Kiws1BdffNH2enV1tWbOnKnY2FhdddVV1gUI26p842EFGuuUNvZauRPT2l5PO/96OeOTVfXe/1NLdXRfHpuZ5JUkba2stziSzrelsk7SN585GpyZly5nEB/l6nRIZ+YF76HbgJXYPsxh/2EfAV+tJMkVb/42s8ayjfJX75IU3CE+33Yg1oCvrtPWEc0iurl0u9164oknFAgEdNZZZ+lnP/uZpk+frmHDhmnDhg2aOXOmevXqZXWYsJl9X7wh39efKX7AKCUMPvTMtys+WWnnXy+jqUGVb/xvVI+6HhIhD4ZujwOfMT8Knsl2QHZynMYMypQrCBW0y+nQeYMylZVsz+IK+Da2D3PYf9iHwx2ruLzTgnIGsLOG+HybKyFVcXmnyeGOjiuNQi2im0tJOvfcc7Vs2TKNGjVKc+fO1WOPPabMzEy99NJLmj59utXhwWaa95ap6r3/J2d8itLOv/6w70kYMErxg86Wb+tq1X7+eogjDB/5bcXBXmsDCYGiKHrg98Gmnx+8SXs3BXFZQDhg++g49h/24U7OVMYlMxST1sPUcjpziM+3xaT1UMYlM+ROzujU9USrqLh4/5RTTtEbb7xhdRiIADEpWTrhxvnHfF+3H9wi/eCWEEQUvobmRM+R59WlrZ9xqE2Lg44amJWkm8b216w3zU3du2lsfw3MSgpSVEB4YPvoOPYf0SUUQ3wQOhF/5hKANfK7t+4oS/Y0aG99k8XRdJ6quiaVVjVIkk6MwuLgurP7anJBbod/f3JBrq4/p28QIwLCB9tHx7D/iC6hGOKD0KG5BNApkuNjdEJavCRp5ZYqi6PpPCu3tn62nl3jlRwXY3E0oed0OnTvJUN0y7gBcjkd7brH7MD7bhk3QPdeMkQORxAnnwBhhO2jY9h/RI9QDfFB6NBcAug0Ywa13s/w0orgjeQPN3NXbJMkfW9g9N674XQ69Itz++nfN4zWmIEZbVMy3QcV0gf+7XRIYwZm6N83jNYvzu0nZzBHagJhiO2jY9h/RIdQDfFB6HDuGUCnueK0nnpq+Ra9u26XSqvqlZMab3VIQVWyp17vrGt95MwVp/W0OBrrDcxK0uNXFWhndYOWFVfo85K9Kvy4tXiaPDJXJ+WmaHReurKT4yyOFAg9to/jw/4j8u394CVJoRnig9DhzCWATtO3W6JG9euqgCG9+Mk2q8MJuhc/2SbDkEb3S1ffbolWhxM2spPjNKkgVzMmDGp7bcaEQZpUkEvhjKjH9tE+7D8iW6DZp+r/PC+JIT6RhuYSQKe6cv8R2bkrStTY4rc4muBpbPFr7v7LtaL1qDMAdCb2H5GLIT6Ri+YSQKc6b1CmspK8qqht0r9X77Q6nKBZuGqnKuualJ3s1XmDovd+GQDoLOw/IhNDfCIbzSWATuV2OXXl6a1HZme+vk5VdfYfK19V16Q/v7FOUutRZ7eLVAoAwcb+IzIxxCeyRd9/0QBC7qdn9lZeRqIqaht152tfWh2OaX949UtV1DYqLyNRPz2zt9XhAEDEYv8RWRjiE/loLgF0Oo/bpVmThsnpkF75Yofe/LLM6pA6bFFRmV5dtUMup0OzJw2Tx+2yOiQAiFjsPyIHQ3yiA80l7McwrI4g/O3/jsLp4dvDc1P087P7SpJ+/68iW17etKeuSTMWrJEk/fysPhqWm2JtQAAQBdh/hEgn11cRMcQnDOurcENzCdvwer2SJMPfYnEk4c/wN0v65jsLF78ek9d2edOtL6+WP2CfAwX+gKHbXl6titom5WUk6tfn5VkdEgBEDfYfnScU9ZVhGBExxCdc66twQnMJ22hLfi2NFkcS/oyW1qO64Zb8vDGtlzfFuBxavHaXbv/nGhk2OBNtGIZu/+caLV67S7EuZ1RezgQAVmL/0XlCUV85HA5lTrtXub+Z12nrCIVwra/CCc0lbCMjo3Vct7+uyuJIwp+/do+kb76zcDI8N0UPX3aSnA5p7soS3bVwbVgXCIZh6K6FazV3ZYmcDunhqcPD83ImAIhw7D86R6jqK29uvpye+E5dR2cL5/oqXNBcwjYSExPVLSNLLXt2WB1K2Gup2qGMzGwlJCRYHcphXTAkW/deOlSS9NTyLfrty2vC8hKnA5cyPbV8iyTpvkuHanx+trVBAUAUY/8RfNRX7Rfu9VU4oLmEreTl9VNzFcnvWJqrdigvr5/VYRzV5IJc3f+joW1HoK99/tOwGtKwp65J1z7/qeatLJXTIc360VBNKsi1OiwAiHrsP4KP+qp97FBfWY3mErYyoH+eVGPfMeQhU1PW+l2FuckFuXpk2oi2e2jG/mWpFhVZ//ddVFSm8/+yVIvX7lKMy6FHLx8R9oUBAEQT9h/BRX3VTjapr6xEcwlbyc/PV2P5FgWaGqwOJWwFmhrUWL5V+fn5VofSLhcMydb8a89Qv4xEVdS2Hu399UufW3IUuqquSTe8+Lmuff7Ttql+/7j2jLC9lAkAohn7j+Chvjo2u9VXVqG5hK1MnDhR/uZGNWxaaXUoYath0wr5mxs1ceJEq0Npt+G5KVr4q9G67py+bQ/KHvuX9/Xyp6VqbPF3+vobW/x6+dNSjf3L+3p11Q45HdL15/TVa78aHZbDFwAArdh/BAf11bHZsb6ygk2fYIpo1adPHw07aYQ2blimhEFnWh1OWGpYv1zDR5ys3r17Wx3KcfHGuHTb+IEaf2KWbp6/SsXltZo+f5Vmvv6VpozM1bRTT1BOanCnzJVW1avw422au6JElfuPdOdlJGr2pGG2KgoAIJqx/zCP+urY7FpfhRrNJWxn6pTJ+v0df1Cgsd72I62DLdBYL9/XKzX1T3dZHUqHDctN0Wu/Gq0nl32t5z7cqrIanx5dsklzlm7S9wZmaMrIEzSyV6pS4mM7tPy99U1asaVKc1ds0zvrynVgin12sldXnNZTPz2zd9g9gwwAcGzsP8yhvjqySKivQsVhhPMDgoDDKC0tVd9+efIOv1Cp51xtdThhpWrJU2pc9bo2Fm9QTk6O1eGY1uIP6O2vyvX8R1u1bGPFIT/LSY3T0Jxk5fdI1pAeyerVNUEBw9DZs5ZIkpbeco6cDoe2VNZpzfZqFW2v1urSapVWHXo/yeh+6britJ46b1CG3C7uFAim+qYWDb7jTUnS2rvGKT6W45nAAWwfnYv9x/GjvjqySKuvOhOZDLaTk5Oj/5nxe/3hzjuVmD9GMenhP4UtFJorSlS7coH+eOedEZP43C6nxudnaXx+ljbtrtXzH23Vu+vKtbWyXqVVDSqtatDraw4/3e5AkXA4PbvG63sDM3TFaT3Vt1tiJ0UPALAK+4/jR311eJFYX3UmzlzClnw+nwYOPlG7jS5Kn3SXHE77XoYSDEbAr4r5dyjDWauvviyS1+u1OqROVd3QrC+3V2v19uq2o8q7anzyNQcOeZ83xqnMJK/yeyRr6P4j1Cf2SFZyXIxFkUcXzswAR8b2YQ32H0dHfXWoaKuvgoFMBlvyer36+9/maPz48drzxkNKu+DXUZsAjYBfe954SL5ta/T4okVRkfiS42J0Rr90ndEv/ZDXa31Nyr9zsSSp6M6xSvR27L4aAEBkYv9xdNRX34jG+ioY7H+BOKLW2LFjVVhYqPq1S7TnjYdkBDp/5Hi4OZD46tcuUWFhocaOHWt1SJZyOp2H/TcAAEfD/uMb1FfUV2Zw5hK2NmXKFEnStGnTFKitVMqYa6PmHoHmihLtfWeOfNvWqLCwsO27AAAAMIP6ivqqo6L70AwiwpQpU7Ro0SJ1c+xT2dO/VNWSpxRorLc6rE4TaKxX1ZKnVPb0L5XhrNWiRYtIfAAAIKior6ivOoIzl4gIY8eO1bq1X2r27Nm6+56Z2vH5Qnl7FyhuwCjF9R0pZ2yc1SGaEmhqUMOmFWpYv1y+r1fK7XTqrj/+UdOnT+ceAAAA0Cmor3C8aC4RMbxer2bMmKGrr75ahYWFenHuPH3x6v1yxXjkyegpJWUpJrW73Knd5UpMk8MdK4crRnI4rA69lWHI8DfLaGmSv3aPWqp2qLlqh1RTpsbyrfI3N2r4iJM19U93adq0aYzDBgAAnY76CseD5hIRJycnR7feeqtuvfVWbd68Wa+88oqKioq0fkOxiouXqnzXTqtDbJeMzGzl5/XTgNNHKz//Wl188cXq06eP1WEBAIAoRH2F9qC5RETr06ePbrzxxkNeq6urU3l5uXw+n3w+n8LlUa8Oh0Ner1der1cZGRlKSEiwOiQAAIDvoL7CkdBcIuokJCSod+/eVocBAAAQMaivIDEtFgAAAAAQBDSXAAAAAADTaC4BAAAAAKbRXAIAAAAATKO5BAAAAACYRnMJAAAAADCN5hIAAAAAYBrNJQAAAADANJpLAAAAAIBpNJcAAAAAANNoLgEAAAAAptFcAgAAAABMo7kEAAAAAJhGcwkAAAAAMI3mEgAAAABgGs0lAAAAAMA0mksAAAAAgGk0lwAAAAAA02guAQAAAACm0VwCAAAAAEyjuQQAAAAAmOa2OgAg1Gpra1VeXi6fzyefz2d1OIfwer3yer3KyMhQYmKi1eEAsBj5CoBdkK8g0Vwiwm3evFkLFixQUVGR1m8oVnHxRu0uL7M6rHbplpGlvLx+GtA/T/n5+Zo4caL69OljdVgAOgn5CoBdkK9wJA7DMAyrgwCCqbS0VC+88IJenDtPqz7/TK4YjzwZvaSkLMWkdpc7rbtcCalyuD1yuNySw2F1yK0MQ4a/RUZLo/x1VWrZs0PNVTukmjI1lm+Rv7lRw04aoalTJuvyyy9XTk6O1RGHnfqmFg2+401J0tq7xik+luNnVuLvcWzkq+jF9hFe+HscG/kK7UFziYjh8/k0a9Ys3X3PTPkNQ94+BYrrP1pxfUfKGeu1OjxTAk0Nati0Ug0blsm3eaVcDof+Z8bvdfPNN8vrtfdnCyaKg/DC3+PIyFdg+wgv/D2OjHyF48GWg4iwePFiXfPza7Vt21Z1Kfihkk+fLKcn3uqwgsYZG6eEQWcqYdCZCjTWq/rDefrDnXfqif/3lP7+tzkaO3as1SECaCfyFfkKsAvyFfnqeDEtFrY3d+5cjR8/XruNLsq++v+Ues7VEZX4vs3piVfqOVcr6+r/026ji8aPH6+5c+daHRaAdiBfka8AuyBfka86guYStjZ37lxNmzZN8YPPUfqkuxSTnmt1SCETk56r9El3KX7wOZo2bRoJEAhz5CvyFWAX5CvyVUdxWSxsa/HixW2JL+2CX8vhdFkdUsg5nC6lXfBrSdK0adOUlpbGJRwIG4FA4LD/jkbkK/LVt7F9IFxFUr5qqd0jhztWLu/xPX6EfNVxDPSBLfl8Pg0cfKJ2G12UPukuWye+YDACflXMv0PdHPu0bu2XUXsTOgMZrFFd36yiHdVaXVqtou3VWrO9WrtqfGpsObRg9ridykzyakiPZA3JSdaQHsnK756s5PgYiyIPDfLVoaItX7F92AP7j1aRlK+ayjerfP4fJUk9rn9ajg5Mr422fBUM0bnlwPZmz56tkm3blPWTv9o68QWLw+lSyphrVfL0LzV79mzNmDHD6pAQ4TbtrtXzH23VO1+Va9ue+nb9TmNLQNv21Gvbnnr9e83OttdPSIvXmEEZuuK0nurbLfIebk2+OlQ05Cu2D9hVpOSrhk0rtPvV+2U0NSg2e0CHGkspOvJVsHHmErZTWlqqvv3y5B1+oVLPudrqcMJK1ZKn1LjqdW0s3hCVz2niyHPnavEH9PZXu/TcR1u1fGPlIT/LTYtrPePSI0VDeiSrZ9d4GYZ01qz3JEnv33KuHA5pa2W91myv1prte7Vme7VK9jQcspxR/brqytN66rxBmXK77D8WgHx1ZJGWr9g+7I39R+Tkq5pPX1PVO39XXN+Raty5XgmDzlbamGtMLTPS8lVnir4tB7b3wgsvyG8YSj59stWhhJ3k06dox+cLVVhYqFtvvdXqcBAhfM1+Pbnsaz334VaV1fgkSU6H9L2BmbpsZK4KeqUqJT72O79X39TS9u/0LrGKj3UrNy1eo/PS217fW9+klVuq9NKKEr27bpeWb6zU8o2Vykry6srTe+qnZ/aWx23fo+fkqyOLlHzF9oFIYfd8ZQT8qnr3Se379FV1KbhYSadcou2P/lie7gNNLztS8lUo0FzCdl6cO0+e3gURPQ67o5yeeHl7F+jFufNIfgiKL0r26pb5q1RcXitJ6poQq8tOydXUU05QTqr5bTAlPlbnDc7UeYMzVVpVrxc/2aaXPilRWY1Ps95crwWfb9fsScM0LDfF9LqsQL46skjIV2wfiCR2zleBpgZVvDZLDZtWKm3sdeoyYoLqN3woSfL0GGB6+ZGQr0KFaypgK5s3b9aqzz9T/IDRVocStuIGjNIXn32qzZs3Wx0KbMzX7Ne9b6zTJY8uV3F5rdITPXpw8jB98Lvv6ZZxA4NSOH9bTmq8bhk3UB/87nt6cPIwpSd6VFxeqx8+ulz3LVonX7M/6OvsTOSrY7NrvmL7QKSxc75q2VepXYW/lW/bGmVceoe6jJggSWrcsU6uxDS5unQLynrsmq9CjeYStrJgwQK5YjyK6zvS6lDCVlzfkXLFePTKK69YHQps6ouSvbrwr8s0Z+kmBQzp4uHdtfjGs3TJiJyQXILncbt0yYgcLb7xLF08vLsChvTYkk266K/L9EXJ3k5ff7CQr47NjvmK7QORyK75qql8s8qemy5/fbWyLr9PcX0L2n7WuH2dPN0HdniYz7fZMV9ZgeYStlJUVCRPRi85YxkFfSTO2Dh5MnqqqKjI6lBgQ6+v2alJcz7Qxv1nY/525cl66LKTlJrw3XvGOltqQqweuuwk/e3Kk5WeGKvi8lpNmvOB3jhokmY4I18dm93yFdsHIpUd81XDphUqe+E2ueKTlXXlA4rN6NP2M8PfoqayjfL0MH+/5QF2y1dWobmErazfUCwlZVkdRvhLymr9roDjMG9FiX5Z+Jma/YbGDs7U4hvP0rgTrd/exp2YpcU3nq2xgzPV7Df0i8LPNG9lidVhHRP5qp1skq/YPhDJ7Jav9n22UOUv/0neE4Yqc9p9cnfpesjPm3ZvkdHSqNjug4K7YpvkKyvRXMJWios3Kia1u9VhhL2Y1O4qLt5odRiwkXkrS3Try6sVMKQpBbmac8XJlpyNOZLUhFjNueJkTSnIVcCQbv3H6rAvoMlX7WOHfMX2gUhnp3zV8PVn2rN4juIHjFK3H95+2LOtjdu/kpxuebL6BnXddshXVqO5hG3U1tZqd3mZ3Gn2SH5Wcqd2V/munaqrq7M6FNjAG2t26rcvr5Yk/WRUL9176RC5nMG5RyWYXE6H7r10iH4yqpck6bcvr9aiovC8BJB81X7hnq/YPhDp7Jav3CnZcqdkq37DB9r7/rMKNDV85z2NO9YpNrOvHO7gHgQK93wVDmguYRvl5eWSJFdCqsWRhD9XYpqkb74z4Ei+KNmrG176XAFDumxkru64cHDQhh90BofDoTsuHNx2huZXL36uVWE4xIR81X7hnK/YPhAN7JavYlKz1f2/H1HyqKna9+lClT5ylao/flmGYbS9p2n7uqDeb3lAOOercEFzCdvw+VofTu1weyyOJPwdOFJ34DsDDsfX7NfN81e13UN2zw+HhHXhfIDD4dDMS4a03WN28/xVYfcYBvJV+4VrvmL7QLSwY75yuGOVcsZlyv7x/8poatDeJU+pfO4MNVeUyF9XpZbqXfJ0D35zGa75KpzQXMI22pKfy21xJOHP4YqRRPLD0T30TnHb1Mv7Lx0alpf6HYnL6dB9lw5tm5L58DvhNWCBfNV+4Zqv2D4QLeycr3bN/4MkKSH/PLVUl2vHU79Uxb//Ikny9BgQ9PWFa74KJ/b7rwiwwZFjy+3/jg6+RAQ42Bcle/W3pZskSff8MD+shpO0V1pCrO6eOETXPv+p5izdpHEnZmlYborVYR2KfHVsYZiv2D4QlSzMV0bAr+Y929Vc/rWadm9RwFcro6W5NSx3jJzeRMV266WYjN6KSeshh9OlxrKN8te0Xp6aPuE3MlqaVP3JP1Xz4Xy5U7Ll6tIt+IGGYb4KNzSXABBlfM1+3TJ/VdsD4MPhcQodNT4/Sz8Y1l2vrtqhm+ev0sIbRofkQfaIXGwfQGi07KtU3ZfvqX7DcjXv3iqjpUmS5ErsKldCSttZQsPfLH/dXtXUVkpqvTQ1pltPNe1sPSPf/WePt72ecsZlShwyVk5voi0uY49ENJcAEGWeXPa1ivdf7nfnRSdaHY5pf/zBifpgU6WKy2v1xH++1i/O7Wd1SLAxtg+g8xgBv+qLP1Ld6sVq+PozOVxuxfU7VQmDz1FsRm/FdOslV1zSYX/X31Cj5vItatr9tWpXvdX2etXbjyth6FjF550mh9P1nWdeIrS45xIAokiLP6DnPtwqSbr9+wNtebnft6UmxOp3F7QObnj+o61q8Qcsjgh2xfYBdJ7GHetV9uxNqljwZ/kb9int/OuU84tn1e3i25RUcLG8Jww9YmMpSa64JHl7DlXisHFqrmjdTlPP+7n8DTWqWPBnlT17kxp3bgjVx8ER0FwCQBR5+6tdKqvxKT0xVhOGZlsdTtBcOCxbXRNitbPap7e/YkQ8OobtAwg+v69WlW8+orLnbpZhGMq6Ypayr3pAXYZfIKc38biXt+OJ6yVJaeN/paSTL1L2VQ8q64pZMgxDZc9OV+Vbj8rvqw32x0A70VwCQBR57qPWo71TRuZG1L1XHrdLU0bmSmo9OwN0BNsHEFyNOzdo55PXq27tEqWOuUbZP/6LPD0GdXx5Bw3x6TJsXNvrnh6DlP3jvyh1zDWq+/I97Xzyes5iWoTmEgCixMbyWi3fWCmnQ5p6yglWhxN00049QQ6HtGxjhTbt5qg1jg/bR3TaWd2geStLdPfCtW2v3b1wreatLNHO6gYLI7O/+uKPtavwd3IldVP3n85RUsEP5HCaO2hT9sxvJH0zxOdgDqdLSQU/UPefzpErqZt2Ff5O9cUfm1ofjh/NJQBEiRc+bj1j8b2BmcpJjbc4muDLSY3XmIEZkjg7g+PH9hFd1pXV6JpnV2rUve/q1n+s1ryVpW0/m7eyVLf+Y7VG3fuurnl2pdaV1VgYqT3VrVum3f+6R3F9TlbmZTODMmRn7/IXJUmeHoMVk9r9iO9zd+mqzMtmKq7Pydq9YKbq1i0zvW60H80lAESJd/bfa3XZ/svjItGUka1nnN5dx31lOD5sH9EhEDD0yHsbNeHhZXp3XbkC+x9X2BL45rmFB/4dMFq/qwkPL9Mj721UIMCzDdvDV1KkilfvV/ygM5V+8W1yxnhMLzPQ7FP1shckSZlTZx7z/c4Yj9Ivvk3xA0er4tX75SspMh0D2ifiH0Xy/PPP6z//+Y8+/fRTrVmzRk1NTXrqqad09dVXWx0abKClepe2z/nvQ190uuSKT5anx2AlnXqpPNl5qlnxiqre/bsS8s9T+oTfHHZZvm2rtevF3ys2q5+yrpxt+tIQ4HhU1zdr2556SVJBr1SLo+k8BT1bP9vWynpVNzQrOS7G4ohCh3zVcWwf0SEQMPTbf67RvJUl7f4d//6Gctab67W1sl73XjJETifPTzwSf8M+Vbw2W56cwUqfcFPQcsfBQ3wcrva1Lw6nS+kTbtKumgpVvPaAsn/ysFxxXYISD44s4s9czpgxQ48//ri2bt2q7OzImfyG0HKnZCt51FQlj5qqpIKL5U7LUf36ZSp7/hb5SorUpeAH8pwwRHVFb6t+43ev7w80Naji9YfkcMcENdkC7VW0o1qSlJsWp5R4+z9e4UhSE2KVkxonSfpye7XF0ViDfHX82D6iw2NLNx1XY/lt81aW6LGlm4IYUWQxDEOVix6W0exT+oXTg5Y7jjTEpz0cTpfSL5ouo7lBexb9VYbB2efOFvHN5RNPPKEtW7Zo9+7duvbaa60OBzblTs1WyujLlTL6cqWe+1/KmjpTKWf/WAq0aO9/npfD4VD692+UIzZelYv+Kn/DofdnVL37pPzVu5Ry1o8Vkx65l1whfK0ubS0kh/RItjiSzjc0p/Uzro7C4lkiX3UE20fkW1dWowcXm58e+uDiDdyDeQS1qxerYcOH6nrBDXIndQvaco82xKc93EkZ6jr+BtVv+EC1qxcHLS4cXsQ3l+edd5569uxpdRiIQIlDz5ckNZVtlCS5kzOUNuYaBer2as+bj7a9r2Hzp6pdtUieE4aqS8EPLIkVKNp+oHhOsTaQEMjf3yCsibLi+WjIV0fH9hH5HngreI+leDCIy4oURsCv6g9eUvygsxTf/4ygLbe9Q3yOJX7AGYofeKaqP3hJRsAfrPBwGBHfXAKd7qDLPhKHjlVcv1NVv36Z6tYuVcBXq8pFf5UjNl7p3/+NHA7u04A11myPnjMzBz5jUZQVz+1Cvjosto/ItrO6QW9/tavt/kkz/AFDb3+1i8eUfEv9+uXy15Qr+dQfBW2ZxzvE51iST/uR/DXlql//gell4choLoEOql31piTJmzP4kNe7jv+lnHFJ2rP4MVW8/r/y76tQ2phr5E7OsCJMQJK0q8YnSerZNfIesfBtvbomSPrmM4N8dSxsH5HtP8UVCuatdgFDWlZcEbwF2pxhGKr55F/y9hyu2Mw+QVtuR4b4HE1sZl95ew5TzYp/cu9lJ4r4abGRxjAMNTRH5+n8huYWy9bdUrVTe/cfPTOaG9VYtlGN21bLmZCi1HP+65D3uhJS1XXcL7V7wUw1FH+kuH6nKnHoWCvCVkNzi+qbrPveQu3gzxpNn/tYAoGAGlsCkiTDCN13Y9XfI7C/aPA1B1Tra5LTGfrjqOSr42dVvmL7iPzzDF9sq5Lb6TjkcSNmuJ0OfV6yVxOGRsagSLP5qmnnBjWVFStj0h+DFJG5IT5HkzTyhyr/x51qKiuWJ7t/0JaLb9Bc2kxDs1+D73jT6jAs0bj/XiErtOzdqer91/0f4EpIVebl9x32HoD4AWcoNru/mnZuUOrZV4coyu/60WMfypO127L1W6ng7nesDiEsnTXrPUvWa9XfI/9Oa4Y3kK+OXzjkK7YPtEdLwFDhx9tU+PE2q0MJCrP5ylfypRwxHnl7DQ9OQDI/xOdIvL1PksPtUWNJEc1lJ6G5BNrB23uEMiffJUny11erds072rv0ae1++U/KuupBOWPjvvM7DnfrOHtHTOSOtQcQfshXAEKpacc6xWblBe3RI8Ea4nM4DqdLsdl5atyxPqjLxTdoLm0mLsaltXcF7/IAO/n8824a/YzVUUiu+GQln3qJjMY6VX84V3vff05p5/3M6rAO6x/Xna6TThphdRghU9/U0nYGYOWMMYqPJcVJrZf9HThD8f4t5yq9S2gaCKv+Hrv3NersWUskSUV3jrXksj/y1fGzKl+xfUT+ZbF3L1yreStLg3pZ7OSRuZoxYVBQlmc1s/mqccd6JZx4blBiCfYQn8PxdB+gurVLO2XZoLm0HYfDEbUFc1xMeH3upNMnq3bNYu37/HUljbxY7uRMq0P6jrgYd9T+9xIfG72f/XA8bqcaWwJyOGTJ9xLKv4fT0SRJ8sY4lei15kwc+er4WZmv2D4i2/ATUlX4SUnQltcSMHRSbkrE7GPM5Ct/XZX8tZWKzc4LSiw7nvyFpOAN8Tmc2Oz+qvn4ZfnrquRKSO2UdUSzyD9cBXQSZ4xHSaf+qPXB5Mtfsjoc4Kgyk7ySpK2V9RZH0vm2VNZJ+uYzg3x1LGwfke3MvHQ5g/hkHadDOjOvW/AWaGMBX62k1qskzGos2yh/9S5JwR3i820HYg346jptHdEs4pvLJ554QldffbWuvvpqzZ8//zuvPfHEExZHCDvrMny8XIlpqvvyXTVX7bQ6HOCIhkTRg9MPfMb8KHhm4fEgXx0Z20dky06O05hBmXIFocN0OR06b1CmspKjpzk/Goc7VnF5pwXlDGBnDfH5NldCquLyTmu71xzBFfHN5bJly/TMM8/omWee0WeffSZJWr58edtry5YtszhC2JnDHauk0yZJAb+qlxdaHQ5wRPltxfNeawMJgQMPhx8SRcVze5CvjoztI/JNPz94k0FvCuKy7M6dnKmMS2YoJq2HqeV05hCfb4tJ66GMS2ZE3fN8QyUyLhY/iqefflpPP/201WHAptzJmep528Kjvifp5IuUdPJF33k9a9q9nRUWcNyG5kTPmZnVpa2fcWiUFc/kq45j+4h8A7OSdNPY/pr1prkpoTeN7a+BWUlBigpSaIb4IHQi/swlAEDK795aSJbsadDe+iaLo+k8VXVNKq1qkCSdGGXFMzqO7SM6XHd2X00uyO3w708uyNX15/QNYkSQQjPEB6FDcwkAUSA5PkYnpMVLklZuqbI4ms6zcmvrZ+vZNV7JcTEWRwO7YPuIDk6nQ/deMkS3jBsgl9PRrnswD7zvlnEDdO8lQ+RwBHEyEEI2xAehQ3MJAFFizKDW+0teWhG8kfzhZu6KbZKk7w3kXhocH7aP6OB0OvSLc/vp3zeM1piBGW1TZN0HNZoH/u10SGMGZujfN4zWL87tJ2cwR85CUuiG+CB0OPcMAFHiitN66qnlW/Tuul0qrapXTmq81SEFVcmeer2zrlxS62cFjgfbR3QZmJWkx68q0M7qBi0rrlDR9mqV1fgkSVlJXuX3SNbovHRlJ8dZHGnk2vtB62ORQjHEB6FDcwkAUaJvt0SN6tdVyzdW6sVPtumWcQOtDimoXvxkmwxDGt0vXX27JVodDmyG7SM6ZSfHaVJBriaZuBcTxy/Q7FP1f56XxBCfSMNlsQAQRa7cf8Zi7ooSNbb4LY4meBpb/Jq7/3JGzsqgo9g+gNBgiE/korkEgChy3qBMZSV5VVHbpH+v3ml1OEGzcNVOVdY1KTvZq/MGRe/9ZDCH7QPofAzxiWw0lwAQRdwup648vfXMxczX16mqzv6PXaiqa9Kf31gnqfWsjNvFrg0dw/YBdD6G+EQ2MgwARJmfntlbeRmJqqht1J2vfWl1OKb94dUvVVHbqLyMRP30zN5WhwObY/sAOg9DfCIfzSUARBmP26VZk4bJ6ZBe+WKH3vyyzOqQOmxRUZleXbVDLqdDsycNk8ftsjok2BzbB9A5GOITHWguYT+GYXUE4W//d8TDnnEkw3NT9POz+0qSfv+vIlte/renrkkzFqyRJP38rD4alptibUCHQ746tjDMV2wfiEqdnK8iYohPGOarcENzCdvwer2SJMPfYnEk4c/wN0v65jsDDufXY/LaLv+79eXV8gfs0wj5A4Zue3m1KmqblJeRqF+fl2d1SIcgX7VfuOYrtg9Ei1DkK8MwImKIT7jmq3BCcwnbaEt+LY0WRxL+jJbWo+wkPxyNN6b18r8Yl0OL1+7S7f9cI8MGZ9oMw9Dt/1yjxWt3KdblDMvL/chX7Reu+YrtA9EiFPnK4XAoc9q9yv3NvE5bRyiEa74KJzSXsI2MjNbx6f66KosjCX/+2j2SvvnOgCMZnpuihy87SU6HNHdlie5auDasC2jDMHTXwrWau7JETof08NThYXm5H/mq/cI5X7F9IBqEKl95c/Pl9MR36jo6Wzjnq3BBcwnbSExMVLeMLLXs2WF1KGGvpWqHMjKzlZCQYHUosIELhmTr3kuHSpKeWr5Fv315TVheAnjgUr+nlm+RJN136VCNz8+2NqgjIF+1X7jnK7YPRDryVfuFe74KBzSXsJW8vH5qriL5HUtz1Q7l5fWzOgzYyOSCXN3/o6FtZ2iuff7TsBpisqeuSdc+/6nmrSyV0yHN+tFQTSrItTqsoyJftY8d8hXbById+ap97JCvrEZzCVsZ0D9PqrHvWPiQqSlr/a6A4zC5IFePTBvRdo/Z2L8s1aIi67e3RUVlOv8vS7V47S7FuBx69PIRtiicyVftZJN8xfaBSEa+aieb5Csr0VzCVvLz89VYvkWBpgarQwlbgaYGNZZvVX5+vtWhwIYuGJKt+deeoX4ZiaqobT0b8uuXPrfkLE1VXZNuePFzXfv8p21TL/9x7Rm2udSPfHVsdstXbB+IVOSrY7NbvrIKzSVsZeLEifI3N6ph00qrQwlbDZtWyN/cqIkTJ1odCmxqeG6KFv5qtK47p2/bg+TH/uV9vfxpqRpb/J2+/sYWv17+tFRj//K+Xl21Q06HdP05ffXar0bbajgJ+erY7Jiv2D4QichXx2bHfGUFmz7BFNGqT58+GnbSCG3csEwJg860Opyw1LB+uYaPOFm9e/e2OhTYmDfGpdvGD9T4E7N08/xVKi6v1fT5qzTz9a80ZWSupp16gnJSgzv1r7SqXoUfb9PcFSWq3H8mKC8jUbMnDbNl0Uy+Oja75iu2D0Qa8tWx2TVfhRpnLmE7U6dMlm/zSgUa660OJewEGuvl+3qlpk6ZbHUoiBDDclP02q9G65ZxA5SV5FVlXZMeXbJJZ93/nn76zAotXrtLe+s7fkng3vomLV67Sz99ZoXOvP89PbpkkyrrmpSd7NUt4wZo4Q32PhtDvjqySMhXbB+IJOSrI4uEfBUqDiOcH9gEHEZpaan69suTd/iFSj3naqvDCStVS55S46rXtbF4g3JycqwOJ+Tqm1o0+I43JUlr7xqn+FguzgimFn9Ab39Vruc/2qplGysO+VlOapyG5iQrv0eyhvRIVq+uCQoYhs6etUSStPSWc+R0OLSlsk5rtleraHu1VpdWq7Tq0Pt7RvdL1xWn9dR5gzLkdtn/+Cf56sgiLV+xfcDuyFdHFmn5qjNRecF2cnJy9D8zfq8/3HmnEvPHKCadqXiS1FxRotqVC/THO+8k8aFTuF1Ojc/P0vj8LG3aXavnP9qqd9eVa2tlvUqrGlRa1aDX1xx+2uCBIvpwenaN1/cGZuiK03qqb7fEToreGuSrw4vEfMX2AbsjXx1eJOarzsSZS9iSz+fTwMEnarfRRemT7pLD6bI6JEsZAb8q5t+hDGetvvqySF6v1+qQLMGZS2tUNzTry+3VWr29uu2sy64an3zNgUPe541xKjPJq/weyRq6/wzOiT2SlRwXY1HkoUG+OlS05Su2D9gJ+epQ0ZavgoHmEra1ePFijR8/XvGDz1HaBb+O2gRoBPza88ZDql+7RIsWLdLYsWOtDskyNJfhJRAIqNrXLElK9sbI6Yzey/jIV63IV99g+0C4Il+1Il91DJkMtjV27FgVFhaqfu0S7XnjIRmBzh8BH24OTnyFhYUkPoQVp9Op1HiPUuM9UV84k6/IV9/G9oFwRb4iX5nBYX3Y2pQpUyRJ06ZNU6C2Uiljro2aewSaK0q095058m1bo8LCwrbvAkB4Il+RrwC7IF+RrzqKQ2WwvSlTpmjRokXq5tinsqd/qaolT0X0GO1AY72qljylsqd/qQxnrRYtWkTiA2yCfEW+AuyCfEW+6gjuuUTE8Pl8mj17tu6+Z6ZaAgF5excobsAoxfUdKWdsnNXhmRJoalDDphVqWL9cvq9Xyu106n9m/F7Tp0/n5vKDcM8l7IJ8BcAuyFc4HjSXiDilpaUqLCzUi3Pn6YvPPpUrxiNPRk8pKUsxqd3lTu0uV2KaHO5YOVwxksNhdcitDEOGv1lGS5P8tXvUUrVDzVU7pJoyNZZvlb+5UcNHnKypUyZr2rRpjMM+DJpL2A35CoBdkK/QHjSXiGibN2/WK6+8oqKiIq3fUKzi4o0q37XT6rDaJSMzW3l5/TSgf57y8/N18cUXq0+fPlaHFdZoLmFn5CsAdkG+wpHQXCLq1NXVqby8XD6fTz6fT+GyCTgcDnm9Xnm9XmVkZCghIcHqkGyH5hKRhnwFwC7IV5CYFosolJCQoN69e1sdBgAcE/kKgF2QryAxLRYAAAAAEAQ0lwAAAAAA02guAQAAAACm0VwCAAAAAEyjuQQAAAAAmEZzCQAAAAAwjeYSAAAAAGAazSUAAAAAwDSaSwAAAACAaTSXAAAAAADTaC4BAAAAAKbRXAIAAAAATKO5BAAAAACYRnMJAAAAADCN5hIAAAAAYBrNJQAAAADANJpLAAAAAIBpNJcAAAAAANNoLgEAAAAAptFcAgAAAABMo7kEAAAAAJjmtjoAINRqa2tVXl4un88nn89ndTiH8Hq98nq9ysjIUGJiotXhAAAAtAv1FSSaS0S4zZs3a8GCBSoqKtL6DcUqLt6o3eVlVofVLt0yspSX108D+ucpPz9fEydOVJ8+fawOCwAARDnqKxyJwzAMw+oggGAqLS3VCy+8oBfnztOqzz+TK8YjT0YvKSlLMand5U7rLldCqhxujxwut+RwWB1yK8OQ4W+R0dIof12VWvbsUHPVDqmmTI3lW+RvbtSwk0Zo6pTJuvzyy5WTk2N1xGGnvqlFg+94U5K09q5xio/l+BkAAMFAfYX2oLlExPD5fJo1a5buvmem/IYhb58CxfUfrbi+I+WM9VodnimBpgY1bFqphg3L5Nu8Ui6HQ/8z4/e6+eab5fXa+7MFE80lAADBRX2F40FziYiwePFiXfPza7Vt21Z1Kfihkk+fLKcn3uqwOkWgsV7VH85T7cp/KfeEnvr73+Zo7NixVocVFmguAQAIHuor6qvjxbRY2N7cuXM1fvx47Ta6KPvq/1PqOVdHbOKTJKcnXqnnXK2sq/9Pu40uGj9+vObOnWt1WAAAIIJQX1FfdQTNJWxt7ty5mjZtmuIHn6P0SXcpJj3X6pBCJiY9V+mT7lL84HM0bdo0EiAAAAgK6ivqq47imjHY1uLFi9sSX9oFv5bD6bI6pJBzOF1Ku+DXkqRp06YpLS2NSzgAAECHRVJ91VK7Rw53rFze43v8CPVVx3HPJWzJ5/Np4OATtdvoovRJd9k68QWDEfCrYv4d6ubYp3Vrv4zam9C55xIAgI6LpPqqqXyzyuf/UZLU4/qn5ejA9Frqq+PHZbGwpdmzZ6tk2zalnHetrRNfsDicLqWMuVYl27Zq9uzZVocDAABsKFLqq4ZNK1T2wm3y11bK1SW9Q42lRH3VETSXsJ3S0lL96e57lFgwUTFdo+cegGOJSc9VYsFE3X3PTJWWllodDgAAsJFIqa9qPn1N5S//Sd4ThsqZkCJPj4Gmlkd9dXxoLmE7L7zwgvyGoeTTJ1sdSthJPn2KWgIBFRYWWh0KAACwEbvXV0bArz1vP66qt/+mLidfpLTzr1egbq883c01lxL11fGguYTtvDh3njy9CyJ6HHZHOT3x8vYu0Itz51kdCgAAsBE711eBpgbt/tc92vfZQqWNvU5pY65R084NkiRPjwGml0991X40l7CVzZs3a9Xnnyl+wGirQwlbcQNG6YvPPtXmzZutDgUAANiAneurln2V2lX4W/m2rVHGpXeoy4gJkqTGHevkSkyTq0u3oKyH+qp9aC5hKwsWLJArxqO4viOtDiVsxfUdKVeMR6+88orVoQAAABuwa33VVL5ZZc9Nl7++WlmX36e4vgVtP2vcvk6e7gM7PMzn26iv2ofmErZSVFQkT0YvOWMZBX0kztg4eTJ6qqioyOpQAACADdixvjowEdYVn6ysKx9QbEaftp8Z/hY1lW00PcznYNRX7cND4GAr6zcUS0lZVocR/pKyWr8rAACAY7BbfbXvs4Xa8/bjius7UukX3fKdprhp9xYZLY2K7T4ouCumvjomzlzCVoqLNyomtbvVYYS9mNTuKi7eaHUYAADABuxUXzV8/Zn2LJ6j+AGj1O2Htx/2bGvj9q8kp1uerL5BXTf11bHRXMI2amtrtbu8TO40eyQ/K7lTu6t8107V1dVZHQoAAAhjdquv3CnZcqdkq37DB9r7/rMKNDV85z2NO9YpNrOvHO7Y4K6b+uqYaC5hG+Xl5ZIkV0KqxZGEP1dimqRvvjMAAIDDsVt9FZOare7//YiSR03Vvk8XqvSRq1T98csyDKPtPU3b1wX1fssDqK+OjeYStuHz+SRJDrfH4kjC34EjdQe+MwAAgMOxY33lcMcq5YzLlP3j/5XR1KC9S55S+dwZaq4okb+uSi3Vu+TpHvzmkvrq2BjoA9toS34u/rM9FocrRhLJDwAAHJ2d66td8/8gSUrIP0+NpV9qx1O/lLfnMEmSp8eAoK+P+urY7PdfERCk5xVFtP3f0cGXiAAAAByRhfWVEfCrec92NZd/rabdWxTw1cpoaW4Nyx0jpzdRsd16KSajt2LSesjhdKmxbKP8Na2Xp6ZP+I2MliZVf/JP1Xw4X+6UbLm6dAt+oNRXx0RzCQAAACCkWvZVqu7L91S/Ybmad2+V0dIkSXIldpUrIaXtLKHhb5a/bq9qaisltV6aGtOtp5p2tj4SpPvPHm97PeWMy5Q4ZKyc3kQ5OBlhCZpLAAAAAJ3OCPhVX/yR6lYvVsPXn8nhciuu36lKGHyOYjN6K6ZbL7nikg77u/6GGjWXb1HT7q9Vu+qttter3n5cCUPHKj7vNDmcLrm7dA3Vx8Fh0FwCAAAA6FSNO9Zrz1uPqmnXJsVmD1Da+dcpYeCZcnoT2/X7rrgkuXoOVWz3/qp65++SpNTzfq66L99TxYI/Kzazr9LG/UKe7P6d+TFwDDSXAAAAADqF31ervUufUe0XixST0VtZV8ySp8egDi9vxxPXS5LSxv9KXYaNU9LJF6lx+1eqfOsxlT07XYknXaCUs66Sq51NK4KL5hIAAABA0DXu3KDd/7xbgaYGpY65Rl1GTJDD6er48g4a4tNl2Li21z09Bin7x3/Rvs/+rb3/eU4NxR+p2yUzOItpAZ5zCcD2dlY3aN7KEt29cG3ba3cvXKt5K0u0s7rBwsgAAIhO9cUfa1fh7+RK6qbuP52jpIIfmGosJansmd9I+maIz8EcTpeSCn6g7j+dI1dSN+0q/J3qiz82tT4cP85cArCtdWU1euCtDXrnq10KGJLb+c1kuHkrS1X4SYmcDmnMoExNP7+/BmYdfkgAAAAInrp1y1Tx6v2KzztNXS+cLmeMx/Qy9y5/UZLk6TFYMandj/g+d5euyrxspioXPqDdC2Yq/aJblDBwtOn1o304cwnAdgIBQ4+8t1ETHl6md9eVK7D/cVMtgW+eO3Xg3wFDendduSY8vEyPvLdRgQDPpgIAoLP4SopaG8tBZyr94tuC0lgGmn2qXvaCJClz6sxjvt8Z41H6xbcpfuBoVbx6v3wlRaZjQPtE9JnL7du3a/78+Xr99de1bt06lZWVKS0tTaNGjdKtt96qU0891eoQEeZaqndp+5z/PvRFp0uu+GR5egxW0qmXypOdp5oVr6jq3b8rIf88pU/4zWGX5du2Wrte/L1is/op68rZpi8NiVaBgKHf/nON5q0saffv+Pc3lLPeXK+tlfW695Ihcjp5/hUAAMHkb9initdmy5MzWOkTbgparXPwEB+Hq33ti8PpUvqEm7SrpkIVrz2g7J88LFdcl6DEgyOL6DOXf/3rX3XjjTdq8+bNOv/88zV9+nSNHj1ar7zyis444wzNnTvX6hBhE+6UbCWPmqrkUVOVVHCx3Gk5ql+/TGXP3yJfSZG6FPxAnhOGqK7obdVv/O71/YGmBlW8/pAc7pigJtto9NjSTcfVWH7bvJUlemzppiBGBAAADMNQ5aKHZTT7lH7h9KDVOkca4tMeDqdL6RdNl9HcoD2L/irD4OqlzhbRzeUpp5yiJUuWaOPGjXriiSf05z//Wf/4xz/03nvvyeVy6brrrlNjY6PVYcIG3KnZShl9uVJGX67Uc/9LWVNnKuXsH0uBFu39z/NyOBxK//6NcsTGq3LRX+VvqDnk96vefVL+6l1KOevHiknPtehT2N+6sho9uHiD6eU8uHiD1pXVHPuNAACgXWpXL1bDhg/V9YIb5E7qFrTlHm2IT3u4kzLUdfwNqt/wgWpXLw5aXDi8iG4uL7nkEp199tnfef3MM8/Uueeeq6qqKq1Zs8aCyBAJEoeeL0lqKtsoSXInZyhtzDUK1O3VnjcfbXtfw+ZPVbtqkTwnDFWXgh9YEmukeOAt843lAQ8GcVkAAEQzI+BX9QcvKX7QWYrvf0bQltveIT7HEj/gDMUPPFPVH7wkI+APVng4jIhuLo8mJiZGkuR2R/RtpwiFgy77SBw6VnH9TlX9+mWqW7tUAV+tKhf9VY7YeKV//zdyOLjPr6N2Vjfo7a92td0/aYY/YOjtr3bxmBIAAIKgfv1y+WvKlXzqj4K2zOMd4nMsyaf9SP6actWv/8D0snBkUdlcbtu2TW+//bays7M1ZMgQq8OBTdWuelOS5M0ZfMjrXcf/Us64JO1Z/JgqXv9f+fdVKG3MNXInZ1gRZsT4T3GFgnmrRMCQlhVXBG+BAABEIcMwVPPJv+TtOVyxmX2CttyODPE5mtjMvvL2HKaaFf/k3stOFHWn7Zqbm3XllVeqsbFR9913n1wuew1WMQxDDc3ReTq/obnFsnW3VO3U3v1Hz4zmRjWWbVTjttVyJqQo9Zz/OuS9roRUdR33S+1eMFMNxR8prt+pShw61oqw1dDcovom6763YPpiW5XcTschjxsxw+106POSvZowNDsoywMAwI7M1ldNOzeoqaxYGZP+GKSIzA3xOZqkkT9U+T/uVFNZsTzZ/YO2XHwjqprLQCCgq6++Wu+//76uueYaXXnllVaHdNwamv0afMebVodhicb99zZaoWXvTlXvv+7/AFdCqjIvv++w9wDEDzhDsdn91bRzg1LPvjpEUX7Xjx77UJ6s3ZatP5y1BAwVfrxNhR9vszoUAAAsY7a+8pV8KUeMR95ew4MTkMwP8TkSb++T5HB71FhSRHPZSaKmuQwEAvqv//ovFRYW6oorrtCcOXOsDgk24u09QpmT75Ik+eurVbvmHe1d+rR2v/wnZV31oJyxcd/5HYc7tvV/Y2JDGisAAECoNO1Yp9isvKA9eiRYQ3wOx+F0KTY7T4071gd1ufhGVDSXgUBAP/nJT/Tss89q6tSpevrpp+V02vN207gYl9beFbzLA+zk88+7afQzVkchueKTlXzqJTIa61T94Vztff85pZ33M6vDOqx/XHe6TjpphNVhBMXdC9dq3srSoF4WO3lkrmZMGBSU5QEAYEdm66vGHeuVcOK5QYkl2EN8DsfTfYDq1i7tlGUjCprLgxvLKVOm6LnnnrPdfZYHczgcio+N+D/bYcXFhNfnTjp9smrXLNa+z19X0siL5U7OtDqk74iLcUfMfy/DT0hV4SclQVteS8DQSbkpEfP9AADQEWbqK39dlfy1lYrNzgtKLDue/IWk4A3xOZzY7P6q+fhl+euq5EpI7ZR1RDN7nr5rpwOXwj777LOaNGmSnn/+eVs3lggvzhiPkk79kRRo0d7lL1kdTsQ7My9dziA+ycXpkM7MC95DngEAiDYBX62k1qu6zGos2yh/9S5JwR3i820HYg346jptHdEsog/Z33XXXXrmmWeUmJio/v376+677/7OeyZOnKjhw4eHPjhEhC7Dx6vm43+o7st3lXz6ZMWkMnm0s2Qnx2nMoEy9u67c9LMuXU6HxgzMUFayN0jRAQAQfRzuWMXlnRaUM4CdNcTn21wJqYrLO61tNgaCK6Kbyy1btkiSamtrdc899xz2Pb169aK5RIc53LFKOm2Sqt7+m6qXFyr9wulWhxTRpp/fX++uKw/Ksm46nylxAACY4U7OVMYlM0wvpzOH+HxbTFqPoMSMw4vo5vLpp5/W008/bXUYsDF3cqZ63rbwqO9JOvkiJZ180Xdez5p2b2eFFbUGZiXpprH9NetNc1PebhrbXwOzkoIUFQAA6KhQDPFB6ET0PZcAIs91Z/fV5ILcDv/+5IJcXX9O3yBGBAAAOioUQ3wQOvwFAdiK0+nQvZcMUc+u8Xpw8QZJOuY9mK79k4BuGttf153dVw5HECcDAQCADgnVEB+EDs0lANtxOh36xbn9NGZQhh58a4Pe/mqXAkbrsysPPAfzwL+dDmnMwAzddD6XwgIAEE5CNcQHoUNzCcC2BmYl6fGrCrSzukHLiitUtL1aZTU+SVJWklf5PZI1Oi9d2clxFkcKAAAOtveD1se4hWKID0KH5hKA7WUnx2lSQa4mmbgXEwAAhEag2afq/zwviSE+kYaBPgAAAABChiE+kYvmEgAAAEBIMMQnstFcAgAAAAgJhvhENppLAAAAAJ2OIT6Rj+YSAAAAQKdiiE90oLmE/RiG1RGEv/3fkcPhsDgQAABgC51cX0XEEB/qq2OiuYRteL1eSZLhb7E4kvBn+JslffOdAQAAHE4o6ivDMCJiiA/11bHZ9LABolFb8mtptDiS8Ge0NEki+QEAgKMLRX3lcDiUOe1exWb06bR1hAL11bHRXMI2MjIyJEn+uiqLIwl//to9kr75zgAAAA4nVPWVNze/U5cfCtRXx8ZlsbCNxMREdcvIUsueHVaHEvZaqnYoIzNbCQkJVocCAADCGPVV+1FfHRvNJWwlL6+fmqtIfsfSXLVDeXn9rA4DAADYAPVV+1BfHRvNJWxlQP88qabM6jDCX01Z63cFAABwDNRX7UR9dUw0l7CV/Px8NZZvUaCpwepQwlagqUGN5VuVn2//exsAAEDno746Nuqr9qG5hK1MnDhR/uZGNWxaaXUoYath0wr5mxs1ceJEq0MBAAA2QH11bNRX7UNzCVvp06ePhp00Qg0bllkdSthqWL9cw0ecrN69e1sdCgAAsAHqq2OjvmofmkvYztQpk+XbvFKBxnqrQwk7gcZ6+b5eqalTJlsdCgAAsBHqqyOjvmo/mkvYzuWXXy6Xw6HqD+dZHUrYqf5wrtxOp6ZNm2Z1KAAAwEaor46M+qr9aC5hOzk5OfqfGb9X7cp/qbmixOpwwkZzRYlqVy7QjN/frpycHKvDAQAANkJ9dXjUV8fHYRiGYXUQwPHy+XwaOPhE7Ta6KH3SXXI4XVaHZCkj4FfF/DuU4azVV18Wyev1Wh0SAACwGeqrQ1FfHT/OXMKWvF6v/v63OfJtW6M9bzwkI+C3OiTLGAG/9rzxkHzb1ujxOY+R+AAAQIdQX32D+qpjaC5hW2PHjlVhYaHq1y6J2gR4IPHVr12iwsJCjR071uqQAACAjVFfUV+Z4bY6AMCMKVOmSJKmTZumQG2lUsZcq5j0XIujCo3mihLtfaf16GJhYWHbdwEAAGAG9RX1VUdxzyUiwuLFi3XNz69VybatSiyYqOTTp8jpibc6rE4RaKxX9YdzVbtygU7o2UuPz3mMI2oAACDoqK+or44XzSUihs/n0+zZs3X3PTPVEgjI27tAcQNGKa7vSDlj46wOz5RAU4MaNq1Qw/rl8n29Um6nU/8z4/eaPn069wAAAIBOQ32F40FziYhTWlqqwsJCvTh3nr747FO5YjzyZPSUkrIUk9pd7tTuciWmyeGOlcMVIzkcVofcyjBk+JtltDTJX7tHLVU71Fy1Q6opU2P5VvmbGzV8xMmaOmWypk2bxjhsAAAQMtRXaA+aS0S0zZs365VXXlFRUZHWbyhWcfFGle/aaXVY7ZKRma28vH4a0D9P+fn5uvjii9WnTx+rwwIAAFGO+gpHQnOJqFNXV6fy8nL5fD75fD6FyybgcDjk9Xrl9XqVkZGhhIQEq0MCAABoF+orSDSXAAAAAIAg4DmXAAAAAADTaC4BAAAAAKbRXAIAAAAATKO5BAAAAACYRnMJAAAAADCN5hIAAAAAYBrNJQAAAADANJpLAAAAAIBpNJcAAAAAANNoLgEAAAAAptFcAgAAAABMo7kEAAAAAJhGcwkAAAAAMI3mEgAAAABgGs0lAAAAAMA0mksAAAAAgGk0lwAAAAAA02guAQAAAACm0VwCAAAAAEyjuQQAAAAAmEZzCQAAAAAwjeYSAAAAAGAazSUAAAAAwDSaSwAAAACAaTSXAAAAAADTaC4BAAAAAKbRXAIAAAAATKO5BAAAAACYRnMJAAAAADCN5hIAAAAAYBrNJQAAAADANJpLAAAAAIBpNJcAAAAAANNoLgEAAAAAptFcAgAAAABMo7kEAAAAAJhGcwkAAAAAMI3mEgAAAABgGs0lAAAAAMA0mksAAAAAgGk0lwAAAAAA02guAQAAAACm0VwCAAAAAEyjuQQAAAAAmEZzCQAAAAAwjeYSAAAAAGAazSUAAAAAwDSaSwAAAACAaTSXAAAAAADTaC4BAAAAAKbRXAIAAAAATKO5BAAAAACYRnMJAAAAADCN5hIAAAAAYBrNJQAAAADANJpLAAAAAIBpNJcAAAAAANNoLgEAAAAAptFcAgAAAABMo7kEAAAAAJhGcwkAAAAAMI3mEgAAAABgGs0lAAAAAMA0mksAAAAAgGk0lwAAAAAA02guAQAAAACm0VwCAAAAAEyjuQQAAAAAmEZzCQAAAAAwjeYSAAAAAGDa/weg+AgWrl9pEAAAAABJRU5ErkJggg==",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%matplotlib inline\n",
"\n",
"import matplotlib.pyplot as plt\n",
"from pennylane import numpy as np\n",
"import pennylane as qml\n",
"import warnings\n",
"warnings.filterwarnings('ignore')\n",
"\n",
"plt.style.use(['science','notebook'])\n",
"# In this case we now need 3 qubits\n",
"\n",
"dev = qml.device(\"default.qubit\", wires=3)\n",
"\n",
"# Defining our ansatz circuit for the N=3 case\n",
"\n",
"def circuit(params,wires):\n",
" t0 = params[0]\n",
" t1 = params[1]\n",
" qml.PauliX(wires=0)\n",
" qml.RY(t1, wires=1)\n",
" qml.RY(t0, wires=2)\n",
" qml.CNOT(wires=[2,0])\n",
" qml.CNOT(wires=[0,1])\n",
" qml.RY(-t1, wires=1)\n",
" qml.CNOT(wires=[0,1])\n",
" qml.CNOT(wires=[1,0])\n",
"\n",
"# And building our Hamiltonian for the N=3 case\n",
"\n",
"coeffs = [15.531709 ,-2.1433, -2.1433, 0.21829, -6.125, -9.625, -3.91, -3.91]\n",
"obs = [qml.Identity(0),qml.PauliX(0) @ qml.PauliX(1), qml.PauliY(0) @ qml.PauliY(1),qml.PauliZ(0),qml.PauliZ(1),qml.PauliZ(2),qml.PauliX(1) @ qml.PauliX(2),qml.PauliY(1) @ qml.PauliY(2)]\n",
"\n",
"H = qml.Hamiltonian(coeffs, obs)\n",
"cost_fn = qml.ExpvalCost(circuit, H, dev)\n",
"\n",
"print(H)\n",
"\n",
"@qml.qnode(dev)\n",
"def draw_circuit(params):\n",
" circuit(params,wires=dev.wires)\n",
" return qml.expval(H)\n",
"\n",
"qml.drawer.use_style('default')\n",
"print(qml.draw_mpl(draw_circuit)(init_params))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we'll still set up what we need for our VQE procedure, but we'll be running it twice, so setting the initial parameters is a necessity for the sake of fairness."
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [],
"source": [
"# Hand-picked, small-batch initialization\n",
"\n",
"init_params = np.array([2.5,4.5])\n",
"\n",
"# Convergence information and step size\n",
"\n",
"max_iterations = 500\n",
"conv_tol = 1e-06\n",
"step_size = 0.01"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For the VQE block, we'll run two one after another. First up is the same thing we had before, good ol' gradient descent."
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration = 0, Energy = 22.73185830 MeV, Convergence parameter = 0.16533643 MeV\n",
"Iteration = 20, Energy = 13.86733622 MeV, Convergence parameter = 0.85950160 MeV\n",
"Iteration = 40, Energy = 0.66226895 MeV, Convergence parameter = 0.41277410 MeV\n",
"Iteration = 60, Energy = -1.94958676 MeV, Convergence parameter = 0.01827050 MeV\n",
"Iteration = 80, Energy = -2.04226133 MeV, Convergence parameter = 0.00054725 MeV\n",
"Iteration = 100, Energy = -2.04502496 MeV, Convergence parameter = 0.00001629 MeV\n",
"\n",
"Final value of the energy = -2.04510468 MeV\n",
"Number of iterations = 116\n"
]
}
],
"source": [
"opt = qml.GradientDescentOptimizer(stepsize=step_size)\n",
"\n",
"params = init_params\n",
"\n",
"gd_param_history = [params]\n",
"gd_cost_history = []\n",
"\n",
"for n in range(max_iterations):\n",
"\n",
" # Take a step in parameter space and record your energy\n",
" params, prev_energy = opt.step_and_cost(cost_fn, params)\n",
"\n",
" # This keeps track of our energy for plotting at comparisons\n",
" gd_param_history.append(params)\n",
" gd_cost_history.append(prev_energy)\n",
"\n",
" # Here we see what the energy of our system is with the new parameters\n",
" energy = cost_fn(params)\n",
"\n",
" # Calculate difference between new and old energies\n",
" conv = np.abs(energy - prev_energy)\n",
"\n",
" if n % 20 == 0:\n",
" print(\n",
" \"Iteration = {:}, Energy = {:.8f} MeV, Convergence parameter = {\"\n",
" \":.8f} MeV\".format(n, energy, conv)\n",
" )\n",
"\n",
" if conv <= conv_tol:\n",
" break\n",
"\n",
"print()\n",
"print(\"Final value of the energy = {:.8f} MeV\".format(energy))\n",
"print(\"Number of iterations = \", n)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Looks the same as before, that's a good sign. Now let's try the QNG!"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Iteration = 0, Energy = 22.30149608 MeV, Convergence parameter = 0.59569865 MeV\n",
"Iteration = 20, Energy = -2.03927628 MeV, Convergence parameter = 0.00595511 MeV\n",
"\n",
"Final value of the energy = -2.04510917 MeV\n",
"Number of iterations = 33\n"
]
}
],
"source": [
"opt = qml.QNGOptimizer(stepsize=step_size)\n",
"\n",
"params = init_params\n",
"\n",
"qng_param_history = [params]\n",
"qng_cost_history = []\n",
"\n",
"for n in range(max_iterations):\n",
"\n",
" # Take a step in parameter space and record your energy\n",
" params, prev_energy = opt.step_and_cost(cost_fn, params)\n",
"\n",
" # This keeps track of our energy for plotting at comparisons\n",
" qng_param_history.append(params)\n",
" qng_cost_history.append(prev_energy)\n",
"\n",
" # Here we see what the energy of our system is with the new parameters\n",
" energy = cost_fn(params)\n",
"\n",
" # Calculate difference between new and old energies\n",
" conv = np.abs(energy - prev_energy)\n",
"\n",
" if n % 20 == 0:\n",
" print(\n",
" \"Iteration = {:}, Energy = {:.8f} MeV, Convergence parameter = {\"\n",
" \":.8f} MeV\".format(n, energy, conv)\n",
" )\n",
"\n",
" if conv <= conv_tol:\n",
" break\n",
"\n",
"print()\n",
"print(\"Final value of the energy = {:.8f} MeV\".format(energy))\n",
"print(\"Number of iterations = \", n)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Very nice! We sped things up a good bit, but let's check the convergence plot to see the behavior over the iterations."
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAjkAAAGwCAYAAABLvHTgAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAA9hAAAPYQGoP6dpAABkdUlEQVR4nO3dd3hT1f8H8Pft3pNOWqBAC2UjKBZEUeDLkKlMkS0KgrJRHICyQVBRhiJDQaYUVFCmDNmlUtltKaOMlkrppnTl/P64vwQCLaQl6c14v54nT25ubpJ3LmI+nHPuOZIQQoCIiIjIzFgpHYCIiIjIEFjkEBERkVlikUNERERmiUUOERERmSUWOURERGSWWOQQERGRWWKRQ0RERGbJRukAhqZSqXDz5k24urpCkiSl4xAREZEOhBDIyspCYGAgrKzK1iZj9kXOzZs3ERwcrHQMIiIiKoNr164hKCioTK81+yLH1dUVgHyS3NzcFE5DREREusjMzERwcLDmd7wszL7IUXdRubm5scghIiIyMU8z1IQDj4mIiMgsscghIiIis8Qih4iIiMyS2Y/JISLLVVRUhIKCAqVjEFExbG1tYW1tbdDPYJFDRGZHCIHk5GSkp6crHYWIHsPDwwP+/v4Gm8eORQ4RmR11gePr6wsnJydOBEpkZIQQuHv3LlJSUgAAAQEBBvkcFjlEZFaKioo0BY63t7fScYioBI6OjgCAlJQU+Pr6GqTrigOPicisqMfgODk5KZyEiJ5E/ffUUGPnWOQQkVliFxWR8TP031MWOURERGSWWOQQERGRWWKRQ0Rk4QYMGIAuXbpoHrdo0QKjRo1SLM/DjC0PmQ4WOWWUlSXw5Za/kFeYp3QUIjIjycnJGDlyJKpXrw4HBwf4+fmhWbNmWLx4Me7evVsuGSIjIzF16lS9vufDhZQ5W7lyJTw8PJSOQeAl5GX23BfdccFqE37a+h02ffQ2qlZVOhERmbpLly6hWbNm8PDwwIwZM1C3bl3Y29vj9OnT+P7771GxYkV06tSp2NcWFBTA1tZWLzm8vLz08j5ESmNLThkFFrwIAIhxmYmatQvwwQdAZqbCoYioWEIAOTnK3ITQPee7774LGxsbnDhxAj169EB4eDiqVq2Kzp07Y9u2bejYsaPmWEmSsHjxYnTq1AnOzs6YPn06ioqKMHjwYISEhMDR0RE1atTA119/rfUZRUVFGDNmDDw8PODt7Y0JEyZAPBTy4e6hvLw8jBs3DhUrVoSzszOaNGmCffv2aZ5Xt1zs2LED4eHhcHFxQdu2bZGUlAQAmDJlCn788Uf8+uuvkCQJkiRpvf5BOTk56NevH1xcXBAQEIB58+Y9csyT8ly9ehUdO3aEp6cnnJ2dUbt2bfzxxx+a58+ePYsOHTrAzc0Nrq6uaN68ORISEjTP//DDDwgPD4eDgwNq1qyJRYsWaZ67cuUKJElCZGQkXn75ZTg5OaF+/fo4cuQIAGDfvn0YOHAgMjIyNN91ypQpxX5XKgfCzGVkZAgAIiMjQ6/vm5OfI7xm+gpMgUD9HwUghJ+fED/+KIRKpdePIqJSyM3NFefOnRO5ubmafdnZQsjlRvnfsrN1y3379m0hSZKYOXOmTscDEL6+vmL58uUiISFBXL16VeTn54tJkyaJqKgocenSJbF69Wrh5OQk1q9fr3nd7Nmzhaenp9i0aZM4d+6cGDx4sHB1dRWdO3fWHPPSSy+JkSNHah6/9dZbomnTpuLAgQPi4sWLYu7cucLe3l7ExcUJIYRYsWKFsLW1Fa1atRJRUVEiOjpahIeHizfeeEMIIURWVpbo0aOHaNu2rUhKShJJSUkiLy+v2O81bNgwUalSJbF7925x6tQp0aFDB+Hq6lqqPK+++qpo3bq1OHXqlEhISBC///672L9/vxBCiOvXrwsvLy/x2muviaioKBEbGyuWL18uLly4IIQQYvXq1SIgIEBs2rRJXLp0SWzatEl4eXmJlStXCiGEuHz5sgAgatasKbZu3SpiY2NFt27dROXKlUVBQYHIy8sTX331lXBzc9N816ysLJ3+TC1RcX9f1fTx+80i5ynMPjhbYApExZk1RPWwQs3/1F54QYhTp/T+cUSkA1Mtco4ePSoAiMjISK393t7ewtnZWTg7O4sJEyZo9gMQo0aNeuL7Dh8+XLz++uuaxwEBAWLOnDmaxwUFBSIoKKjEIufq1avC2tpa3LhxQ+t9W7ZsKSZOnCiEkIscAOLixYua5xcuXCj8/Pw0j/v376/1GcXJysoSdnZ2YsOGDZp9qampwtHRsVR56tatK6ZMmVLsZ0ycOFGEhISI/Pz8Yp+vVq2aWLNmjda+qVOnioiICCHE/SLnhx9+0Dx/9uxZAUCcP39eCCGfD3d398d+V5IZusjhmJynMKzxMMw6OAs37sXi5w2bcG17D3z+OXDwINCwIfD++8BnnwGurkonJbJsTk5AdrZyn/00jh8/DpVKhT59+iAvT/tCh8aNGz9y/MKFC7F8+XIkJiYiNzcX+fn5aNCgAQAgIyMDSUlJaNKkieZ4GxsbNG7c+JEuK7XTp0+jqKgIYWFhWvvz8vK0ls1wcnJCtWrVNI8DAgI06xLpKiEhAfn5+Vr5vLy8UKNGjVLlef/99zFs2DDs3LkTrVq1wuuvv4569eoBAGJiYtC8efNixy/l5OQgISEBgwcPxpAhQzT7CwsL4e7urnWs+v3U3xWQlyeoWbNmqb4zGRaLnKfgau+KUc+PwuR9kzHr8DTETOiG3r2tMHo0EBkJfPkl8MsvwOLFwKuvKp2WyHJJEuDsrHSKx6tevTokSUJsbKzW/qr/f1WDep2fBzk/9KXWrVuHcePGYd68eYiIiICrqyvmzp2LY8eOlTlXdnY2rK2tER0d/cjaQi4uLprth4sGSZJKLJyehi553nrrLbRp0wbbtm3Dzp07MXPmTMybNw/vvfdesefxwfcGgKVLl2oVWgAe+awHv6961l6VSlX2L0YGwYHHT+m9596Dq50rTqecxta4rahUCdi0CfjjD6BKFeDaNaBDB6BXL+DWLaXTEpGx8vb2RuvWrfHtt98iJyenTO9x6NAhNG3aFO+++y4aNmyI6tWraw2odXd3R0BAgFbRU1hYiOjo6BLfs2HDhigqKkJKSgqqV6+udfP399c5m52dHYqKih57TLVq1WBra6uVLy0tDXFxcaXOExwcjKFDhyIyMhJjx47F0qVLAcgtMH///XexayX5+fkhMDAQly5deuS9Q0JC9PpdqXywyHlKno6eGPHcCADAtAPTNP9yadcOOHMGGDsWsLIC1q8HwsOBNWtKd7UFEVmORYsWobCwEI0bN8b69etx/vx5xMbGYvXq1bhw4cITV2kODQ3FiRMnsGPHDsTFxeHTTz9FVFSU1jEjR47ErFmzsGXLFly4cAHvvvsu0tPTS3zPsLAw9OnTB/369UNkZCQuX76M48ePY+bMmdi2bZvO361KlSo4deoUYmNjcfv27WKLDBcXFwwePBjjx4/HX3/9hTNnzmDAgAGwsrr/U6VLnlGjRmHHjh24fPky/vnnH+zduxfh4eEAgBEjRiAzMxO9evXCiRMnEB8fj1WrVmla0D777DPMnDkTCxYsQFxcHE6fPo0VK1Zg/vz5pfqu2dnZ2LNnD27fvl1u8xtRMco8msdEGHLgsVpKdopwnOYoMAVid8LuR56PjhaiYcP7AxG7dhUiOdlgcYgs2uMGMpqCmzdvihEjRoiQkBBha2srXFxcxHPPPSfmzp0rcnJyNMcBEJs3b9Z67b1798SAAQOEu7u78PDwEMOGDRMffvihqF+/vuaYgoICMXLkSOHm5iY8PDzEmDFjRL9+/R57dZX6qq0qVaoIW1tbERAQILp27SpO/f8VFsUNtN28ebN48CcmJSVFtG7dWri4uAgAYu/evcV+/6ysLPHmm28KJycn4efnJ+bMmVPqPCNGjBDVqlUT9vb2wsfHR/Tt21fcvn1b8/p///1X/O9//xNOTk7C1dVVNG/eXCQkJGie//nnn0WDBg2EnZ2d8PT0FC+++KJmQLh64PHJkyc1x6elpT3ynYYOHSq8vb0FADF58uRivysZfuCxJIR5tytkZmbC3d0dGRkZcHNzM9jnDNs6DEuil2BAgwFY0XnFI88XFACzZwOffy5ve3vLY3W6dzdYJCKLdO/ePVy+fBkhISFwcHBQOg4RPcbj/r7q4/eb3VV60rtubwDA5vObi13qwdYW+OQTICoKqF8fSE0FevQA+vcHsrLKOy0REZH5Y5GjJy9UegGBroHIyMvAzoSdJR5Xvz5w/Lhc8FhZAT/9BDRoABw9Wn5ZiYiILAGLHD2xkqzQvZbc97T+7PrHHmtnB0ydCuzfD1SuDFy6BLzwAjBtGsArEImIiPSDRY4e9azdEwDwa+yvyC3IfeLxL7wAxMQAvXsDRUXAp5/KV2X995+BgxIREVkAFjl69HzQ86jkXgnZ+dn48+KfOr3Gw0O+rHzlSsDREdi5U54t+dAhg0YlIiIyeyxy9EiSJPSo1QMAsOHshlK9tn9/eaxOjRrAjRvASy/JMyab97VvREREhsMiR8961JaLnN/jfkdOfulmLa1TR776qlcvuftqzBhg4EDg3j1DJCUiIjJvLHL0rHFgY1T1rIq7BXexLV732UDVXF3l7quvvpKvvvrxR+Dll4GkJP1nJSIiMmcscvTswS6rJ11lVfJ7ACNHAtu3A56e8uXlzz4LPGZ5GSIiInoIixwD6FlHvsrqj/g/kJVX9pn+WreWx+mEh98fp/OnbuOZiYjICEiShC1btigd4xEDBgxAly5dNI9btGiBUaNGKZbHUFjkGEB9v/oI9QrFvcJ7+OvyX0/1XtWryy05rVsDOTlAx47AikdXjSAiM3Ht2jUMGjQIgYGBsLOzQ+XKlTFy5EikpqYqkkfpH78pU6ZAkiQMHTpUa39MTAwkScKVK1d0fq+Hf9iNRXJyMkaOHInq1avDwcEBfn5+aNasGRYvXlxui3tGRkZi6tSpen1PYzjfLHIMQJIktKjSAgBw5PqRp34/Nzdg61agb195QPKgQfJkgrzyisi8XLp0CY0bN0Z8fDzWrl2LixcvYsmSJdizZw8iIiJw584dpSMqwsHBAcuWLUN8fLzSUQAARUVFUOlp5tZLly6hYcOG2LlzJ2bMmIGTJ0/iyJEjmDBhArZu3Yrdu3eX+NriVnIvKy8vL7i6uurt/YxG2dcONQ3lsQp5cZb/s1xgCkTz5c319p4qlRATJ95fzXzECHkfEd1X3KrGKpVKZOdlK3JTleIvadu2bUVQUJC4e/eu1v6kpCTh5OQkhg4dqtmHYlYhd3d3FytWrNA8njBhgggNDRWOjo4iJCREfPLJJyI/P1/z/OTJk0X9+vXFTz/9JCpXrizc3NxEz549RWZmphBCiP79+wsAWrfLly/rtOq4+r2XLVsmgoODhbOzsxg2bJgoLCwUs2fPFn5+fsLHx0dMmzbtsedE/T6tW7cW3bt31+w/efKkJo8QQhQWFopBgwaJKlWqCAcHBxEWFia++uorrfd5+Lvs3btX7N27VwAQaWlpJb63+vv++uuvIjw8XFhbW4vLly+L48ePi1atWglvb2/h5uYmXnzxRREdHa2Vv7g/pwe1adNGBAUFiezs7GKff/C/HwBi0aJFomPHjsLJyUlMnjz5id9bfW5Gjx4t3N3dhZeXlxg/fvwTV56/d++eGDt2rAgMDBROTk7iueee01plXX1Otm/fLmrWrCmcnZ1FmzZtxM2bNx97vh9m6FXIbcq1orIgEcERAIATN0+goKgAtta2T/2ekgTMmAFUrAi89x7w7bfyiuaLFslXYhFR8e4W3IXLTBdFPjt7Yjac7ZyfeNydO3ewY8cOTJ8+HY6OjlrP+fv7o0+fPli/fj0WLVoESZJ0+mxXV1esXLkSgYGBOH36NIYMGQJXV1dMmDBBc0xCQgK2bNmCrVu3Ii0tDT169MCsWbMwffp0fP3114iLi0OdOnXw+eefAwB8fHx0/u4JCQn4888/sX37diQkJKBbt264dOkSwsLCsH//fhw+fBiDBg1Cq1at0KRJk8e+16xZs/Dss8/ixIkTaNy48SPPq1QqBAUFYePGjfD29sbhw4fx9ttvIyAgAD169MC4ceNw/vx5ZGZmYsX/9/l7eXnh8OHDOn2Xu3fvYvbs2fjhhx/g7e0NX19fXLp0Cf3798c333wDIQTmzZuH9u3bIz4+XqdWkdTUVE0LjrNz8f+NPPxnPWXKFMyaNQtfffUVbGxsnvi9AWDevHlYuXIlli9fjvDwcMybNw+bN2/GK6+8UmK2ESNG4Ny5c1i3bh0CAwOxefNmtG3bFqdPn0ZoaKjmnHzxxRdYtWoVrKys8Oabb2LcuHH4+eefSzzf5Y1FjoGEeYfB08ETaffS8O+tf9E48NG/lGU1fDjg4iLPofPdd0B+PrB0KWBtrbePIKJyFh8fDyEEwsPDi30+PDwcaWlp+O+//+Dr66vTe37yySea7SpVqmDcuHFYt26dVpGjUqmwcuVKzY9y3759sWfPHkyfPh3u7u6ws7ODk5MT/P39S/2dVCoVli9fDldXV9SqVQsvv/wyYmNj8ccff8DKygo1atTA7NmzsXfv3icWOc888wx69OiBDz74AHv27HnkeVtbW3z22WeaxyEhIThy5Ag2bNiAHj16wMXFBY6OjsjLyyvTdykoKMCiRYtQv359zb6Hi4Tvv/8eHh4e2L9/Pzp06PDE97x48SKEEKhRo4bW/goVKuDe/0+QNnz4cMyePVvz3BtvvIGBAwdqHf+47w0AX331FSZOnIjXXnsNALBkyRLs2LGjxFyJiYlYsWIFEhMTERgYCAAYN24ctm/fjhUrVmDGjBmac7JkyRJUq1YNgFwYqYvhpz3f+sIix0CsJCs8H/Q8/rz4J45cO6LXIgeQZ0i2tZXH6axYARQWyvcsdIge5WTrhOyJ2Yp9dmmIJwy2s7Oz0/m91q9fjwULFiAhIQHZ2dkoLCyEm5ub1jFVqlTRanUICAhASkpKqTKX5OH39vPzg7W1NaweaHr28/PT+fOmTZuG8PBw7Ny5s9hCb+HChVi+fDkSExORm5uL/Px8NGjQ4Km/ByCf93r16mntu3XrFj755BPs27cPKSkpKCoqwt27d5GYmPhUn3X8+HGoVCr06dMHeXl5Ws8V14r1uO+dkZGBpKQkrSLSxsYGjRs3LvG/tdOnT6OoqAhhYWFa+/Py8uDt7a157OTkpClwAP3+t6MvLHIMKCIoQi5yrh/Be03e0/v7v/EGYGMj369aJW8vWyZ3axHRfZIk6dRlpKTq1atDkiScP38eXbt2feT58+fPw8fHBx4eHgDk7/Twj9SDA1GPHDmCPn364LPPPkObNm3g7u6OdevWYd68eVqvsbXV7kqXJOmJg2qtrKwe+9mPe++yfJ5atWrVMGTIEHz44YdYtmyZ1nPr1q3DuHHjMG/ePERERMDV1RVz587FsWPHnvhdAO3isrjv4ujo+EjXUf/+/ZGamoqvv/4alStXhr29PSIiIpCfn6/T91H/mcfGxmrtr1q1quYzH/Zwt1ZZv/fjZGdnw9raGtHR0bB+6F/OLi73u32L+7N8UpFe3ljkGFDT4KYAgMPXdOvzLYsePeTWmx495JacChWAOXMM9nFEZCDe3t5o3bo1Fi1ahNGjR2v9wCUnJ+Pnn3/G8OHDNft8fHyQ9MBU6PHx8VqXGx8+fBiVK1fGxx9/rNl39erVUueys7NDUVGR1j4fHx9kZWUhJydH86MbExNT6vcui0mTJqFatWpYt26d1v5Dhw6hadOmePfddzX7EhIStI4p6bsAQFJSEjw9PQHo/l0OHTqERYsWoX379gDky/9v376t83dR/5l/++23eO+990ocl/OkDI/73u7u7ggICMCxY8fw4osvAgAKCwsRHR2NZ555ptj3bNiwIYqKipCSkoLmzZuXOpNacee7vHG4qgE9V/E5WElWuJpxFUlZhluX4fXXgR9+kLfnzmWRQ2Sqvv32W+Tl5aFNmzY4cOAArl27hu3bt6N169YICwvDpEmTNMe+8sor+Pbbb3Hy5EmcOHECQ4cO1fqXdWhoKBITE7Fu3TokJCRgwYIF2Lx5c6kzValSBceOHcOVK1dw+/ZtqFQqNGnSBE5OTvjoo4+QkJCANWvWYOXKlfo4BU/k5+eHMWPGYMGCBVr7Q0NDceLECezYsQNxcXH49NNPERUV9ch3OXXqFGJjY3H79m0UFBSgevXqCA4OxpQpUxAfH49t27Y90tpVktDQUKxatQrnz5/HsWPH0KdPn2JbXx5n0aJFKCwsROPGjbF+/XqcP38esbGxWL16NS5cuPBIS0pxGZ70vUeOHIlZs2Zhy5YtuHDhAt59912kp6eX+J5hYWHo06cP+vXrh8jISFy+fBnHjx/HzJkzsW2b7ssVFXe+yxuLHANytXdFHd86APQzX87jDBwIfPGFvP3BB/eLHiIyHaGhoYiKikLVqlXRo0cPVK5cGe3atUNYWBgOHTqk1VUwb948BAcHo3nz5njjjTcwbtw4ODndH//TqVMnjB49GiNGjECDBg1w+PBhfPrpp6XONG7cOFhbW6NWrVrw8fFBYmIivLy8sHr1avzxxx+oW7cu1q5diylTpujjFOic6cFzAQDvvPMOXnvtNfTs2RNNmjRBamqqVusGAAwZMgQ1atRA48aN4ePjg0OHDsHW1hZr167FhQsXUK9ePcyePRvTpk3TKceyZcuQlpaGZ555Bn379sX777+v86BwtWrVquHkyZNo1aoVJk6ciPr166Nx48b45ptvMG7cuCdO0KfL9x47diz69u2L/v37a7q0iusSfdCKFSvQr18/jB07FjVq1ECXLl0QFRWFSpUq6fzdijvf5U0SxtaBpmeZmZlwd3dHRkbGIwPuysPQrUPxXfR3GBcxDnP/N9fgnzdxIjBrlnxJ+a+/AjoM8CcyK/fu3cPly5cREhICBwcHpeM8tcmTJ2P+/PnYtWsXnn/+eaXjEOnV4/6+6uP3my05BhYRJM+Xc/i64cblPGjGDGDwYEClkgcknz1bLh9LRAby2WefYcGCBTh69KjeZtklshQceGxg6kkBo29GI78oH3bWul/+WRaSBCxeDCQkAPv2AZ06yYt8PnDVHxGZmIfnRSEi3bAlx8BCvULh7eiNvKI8nEw6WS6faWsLbNwIhIQAly4B3brJMyMTERFZEhY5BiZJkqY1x9CDjx9UoQLw++/yzMj79gEjR5bbRxMZBTMfbkhkFgz995RFTjlQj8spzyIHAGrXBtasud+F9eOP5frxRIpQX0b94JwxRGSc1H9PH55YUF8UHZMzc+ZMREZG4sKFC3B0dETTpk0xe/ZsrXU87t27h7Fjx2LdunWa+SMWLVoEPz8/BZOXjmbwsQEnBSxJx47AZ58BkybJa149/zzw0DIpRGbF2toaHh4emunlnZycdF7QkojKhxACd+/eRUpKCjw8PJ44H1BZKXoJedu2bdGrVy88++yzKCwsxEcffYQzZ87g3Llzmpkfhw0bhm3btmHlypVwd3fHiBEjYGVlpfP19kpfQg4A2fnZcJ/lDpVQ4fro66joVrFcP7+oCGjdGti7F2jQADh6FLC3L9cIROVKCIHk5OTHTnhGRMrz8PCAv79/sf8Q0cfvt1HNk6NeXXf//v148cUXkZGRAR8fH6xZswbdunUDAFy4cAHh4eE4cuSITnNGGEORAwA1v62J2NRY7O67Gy2rtiz3z795E6hfH7h9G3j/feDrr8s9AlG5KyoqUmSWVSJ6Mltb28e24Ojj99uoLiHPyMgAAHh5eQEAoqOjUVBQgFatWmmOqVmzJipVqlRikZOXl6e1amtmZqaBU+sm1DsUsamxiEuNU6TICQwEVq6UJwdcsABo2VK+vJzInFlbWxusGZyIjJ/RDDxWqVQYNWoUmjVrhjp15KUQkpOTYWdnp1l1V83Pzw/JycnFvs/MmTPh7u6uuQUHBxs6uk5CvUIBAPF34hXL8OqrwJgx8vbAgUCS4ZbTIiIiUpzRFDnDhw/HmTNnHllZtrQmTpyIjIwMze3atWt6Svh0jKHIAYCZM4GGDYE7d4ARIxSNQkREZFBGUeSMGDECW7duxd69exEUFKTZ7+/vj/z8/EcGD966dQv+/v7Fvpe9vT3c3Ny0bsYgzDsMABCXGqdoDjs7YMUKwMYGiIwENm1SNA4REZHBKFrkCCEwYsQIbN68GX/99RdCQkK0nm/UqBFsbW2xZ88ezb7Y2FgkJiYiIiKivOM+lVBvuSXnUtolFKoKFc1Svz7w4Yfy9vDhcqsOERGRuVG0yBk+fDhWr16NNWvWwNXVFcnJyUhOTkZubi4AwN3dHYMHD8aYMWOwd+9eREdHY+DAgYiIiDC51XiD3ILgYOOAQlUhrqZfVToOPvkEqFkTuHXr/jgdIiIic6JokbN48WJkZGSgRYsWCAgI0NzWr1+vOebLL79Ehw4d8Prrr+PFF1+Ev78/IiMjFUxdNlaSFap5VgOg/LgcQJ4nZ/lyeTbkH38EduxQOhEREZF+Kd5dVdxtwIABmmMcHBywcOFC3LlzBzk5OYiMjCxxPI6xM5ZxOWoREfKcOQDwzjsAZ8EnIiJzYhQDjy2F5gqrVOVbctSmTQMqVQKuXgW++ELpNERERPrDIqccqQcfG0N3lZqLCzB3rrw9axZgJFfcExERPTUWOeXIWObKeVj37kDz5kBuLvDBB0qnISIi0g8WOeVI3ZJzJf0K8ovyFU5znyQBX30l369dC+i49ikREZFRY5FTjgJcAuBs6wyVUOFS2iWl42h55hlg0CB5e+RIQKVSNg8REdHTYpFTjiRJuj8ux4gGH6tNnw64ugLR0fJl5URERKaMRU45M9ZxOQDg5wdMmiRvf/QRLyknIiLTxiKnnKmLHGOZK+dh770HVK4MJCcDixcrnYaIiKjsWOSUM/WEgMbYkgPIMyGrW3NmzQKyspTNQ0REVFYscsqZMY/JUevXD6heHbh9G/jmG6XTEBERlQ2LnHKm7q66lnkNuQW5Cqcpno0NMGWKvD13LpCermQaIiKismGRU84qOFWAu707AODinYsKpylZr15ArVpygfPll0qnISIiKj0WOeVMkiSjH5cDANbWwOefy9tffgmkpiqbh4iIqLRY5CjAFMblAEDXrkCDBvLgY/X6VkRERKaCRY4CjHmunAdZWd1vzVm4kGNziIjItLDIUYCxz5XzoA4dgDp1gOxsYMkSpdMQERHpjkWOAkxhTI6aJAETJsjbX38N3LunbB4iIiJdschRQHWv6gCA5Oxk5OTnKJzmyXr1AoKD5VmQV61SOg0REZFuWOQowMPBA862zgCAm1k3FU7zZLa2wOjR8vYXXwBFRcrmISIi0gWLHAVIkoRA10AAwI2sGwqn0c1bbwEeHkBcHPDbb0qnISIiejIWOQqp6FYRgGm05ACAqyvw7rvy9uzZgBDK5iEiInoSFjkKUbfkmEqRAwDvvy8v4HnsGPD330qnISIiejwWOQqp6Cq35NzINI3uKgDw8wMGDJC3v/hC0ShERERPxCJHIZqWnGzTackBgFGj5PutW4ErV5RMQkRE9HgschRiit1VAFCzJtCqlTwmh5MDEhGRMWORoxBT7K5SGz5cvv/hB04OSERExotFjkIebMkRJnapUocO8uSAqanA+vVKpyEiIioeixyFqIucvKI83Mm9o3Ca0rGxAYYNk7cXLlQ2CxERUUlY5CjE3sYe3o7eAExvXA4gTw5oZwdERQHHjyudhoiI6FEschRkqoOPAcDHB+jZU95maw4RERkjFjkKUs96bCpLOzxMPQB5/Xrgv/+UzUJERPQwFjkKCnQx3ZYcAHjuOaBxYyAvD1i+XOk0RERE2ljkKMiUu6sAQJLuD0BetozrWRERkXFhkaMgU++uAoAePQAXFyA+nutZERGRcWGRoyBTb8kB5AJHPQB52TJlsxARET2IRY6CTHnW4wcNHizfb9wIZGQom4WIiEiNRY6C1C05t3JuoVBVqHCasnv+eSA8HMjNBdatUzoNERGRjEWOgnydfWEtWUMlVEjJSVE6TplJ0v3WHHZZERGRsWCRoyBrK2v4u/gDMP0uq7595eUeoqKA06eVTkNERMQiR3HmMPgYAHx9gU6d5G225hARkTFgkaMw9WXkpl7kAPe7rFatkicIJCIiUhKLHIWpZz025bly1Nq0ASpWBO7cAX79Vek0RERk6VjkKMxcuqsAwNoa6N9f3v7pJ2WzEBERschRmDnMevygvn3l++3buWgnEREpi0WOwsypJQcAataUF+0sKuKcOUREpCwWOQpTz3psLkUOcL81Z9UqZXMQEZFlY5GjMHVLzp3cO8gtyFU4jX706iWPz4mKAmJjlU5DRESWikWOwjwcPOBg4wAASMpOUjiNfvj6yldaAcDq1cpmISIiy8UiR2GSJJl1l9Xq1YBKpWwWIiKyTCxyjIC6y8rUl3Z4UKdOgKsrcOUKcOiQ0mmIiMgSscgxAuY067GakxPw+uvyNgcgExGREljkGAFzmvX4Qeouqw0bgHv3lM1CRESWh0WOETC3uXLUWrQAgoKAjAzgjz+UTkNERJaGRY4RMMfuKgCwsgJ695a3165VNgsREVkeFjlGQDPw2My6qwB5zhwA2LoVyMpSNgsREVkWFjlGQF3kJGWZxzw5D2rYEAgLk8fkcGVyIiIqTyxyjICvsy8AIKcgBzn5OQqn0S9Jut9lxbWsiIioPCla5Bw4cAAdO3ZEYGAgJEnCli1btJ4fMGAAJEnSurVt21aZsAbkaueqmfX4v7vmt3S3ustqxw4gNVXZLEREZDkULXJycnJQv359LFy4sMRj2rZti6SkJM1trRmOYJUkSdOacyv7lsJp9K9mTaBBA6CwEIiMVDoNERFZChslP7xdu3Zo167dY4+xt7eHv7+/zu+Zl5eHvLw8zePMzMwy5ytPvs6+SMxIREpOitJRDKJXLyAmRr7KasgQpdMQEZElMPoxOfv27YOvry9q1KiBYcOGIfUJ/R0zZ86Eu7u75hYcHFxOSZ+On7MfAJhtkdOzp3y/bx+QZH7jq4mIyAgZdZHTtm1b/PTTT9izZw9mz56N/fv3o127digqKirxNRMnTkRGRobmdu3atXJMXHaa7qoc8+uuAoAqVYCICEAIeQZkIiIiQ1O0u+pJeqlHrAKoW7cu6tWrh2rVqmHfvn1o2bJlsa+xt7eHvb19eUXUG3WRY64tOYB8ldWRI/JVViNHKp2GiIjMnVG35DysatWqqFChAi5evKh0FL0z9+4qAOjeXZ4F+ehR4PJlpdMQEZG5M6ki5/r160hNTUVAQIDSUfTO3LurAMDfH3j5ZXl740ZlsxARkflTtMjJzs5GTEwMYmJiAACXL19GTEwMEhMTkZ2djfHjx+Po0aO4cuUK9uzZg86dO6N69epo06aNkrENwhK6qwCgRw/5nuNyiIjI0BQtck6cOIGGDRuiYcOGAIAxY8agYcOGmDRpEqytrXHq1Cl06tQJYWFhGDx4MBo1aoS///7bJMfcPImfi/l3VwFA166AtTUQHQ0kJCidhoiIzJmiA49btGgBIUSJz+/YsaMc0yhL3ZJz++5tFKmKYG1lrXAiw/DxAV55Bdi1S+6y+vBDpRMREZG5MqkxOeasglMFSJCgEiqk5pr32gfdu8v37LIiIiJDYpFjJGysbODt5A3APJd2eJC6y+rkSSA+Xuk0RERkrljkGBFLGXxcoQKgnuaIV1kREZGhsMgxIpYwV46a+iorFjlERGQoLHKMiCXMlaPWpQtgYyMv2hkXp3QaIiIyRyxyjIildFcBgLc30KqVvM3WHCIiMgQWOUbEkrqrAE4MSEREhsUix4hYUncVcL/L6tQp4MIFpdMQEZG5YZFjRCypuwoAPD3ZZUVERIbDIseIWMrSDg9STwzIIoeIiPStVMs6qFQq7N+/H3///TeuXr2Ku3fvwsfHBw0bNkSrVq0QHBxsqJwWQdNdlX0LQghIkqRwIsPr0gV45x3g9GkgNhaoUUPpREREZC50asnJzc3FtGnTEBwcjPbt2+PPP/9Eeno6rK2tcfHiRUyePBkhISFo3749jh49aujMZktd5OQW5iKnIEfhNOXDy4sTAxIRkWHoVOSEhYXh1KlTWLp0KTIzM3HkyBFs2rQJq1evxh9//IHExEQkJCSgefPm6NWrF5YuXWro3GbJxc4FTrZOANhlRURE9LQk8bhlwP/f+fPnER4ertMbFhQUIDExEdWqVXvqcPqQmZkJd3d3ZGRkwM3NTek4TxTydQiupF/B4UGHEREcoXSccpGaCvj5AUVFcpdVWJjSiYiISGn6+P3WqSUnPDwcZ86c0ekNbW1tjabAMUWWdoUVIE8MyC4rIiLSN52vrqpXrx6aNGmCpUuXIisry5CZLJqlTQioxi4rIiLSN52LnP3796N27doYO3YsAgIC0L9/f/z999+GzGaRLG1CQLUuXQBra+Dff4H4eKXTEBGROdC5yGnevDmWL1+OpKQkfPPNN7hy5QpeeuklhIWFYfbs2UhOTjZkTothqS05FSoAr7wib//yi7JZiIjIPJR6MkBnZ2cMHDgQ+/fvR1xcHLp3746FCxeiUqVK6NSpkyEyWhRLHJOjpu6y4lpWRESkD08143H16tXx0Ucf4ZNPPoGrqyu2bdumr1wWy1K7qwCga1e5yyomBrh4Uek0RERk6spc5Bw4cAADBgyAv78/xo8fj9deew2HDh3SZzaLZIlLO6g92GXFAchERPS0SlXk3Lx5EzNmzEBYWBhatGiBixcvYsGCBbh58yaWLl2K559/3lA5LcaDSztYoh495Ht2WRER0dPSee2qdu3aYffu3ahQoQL69euHQYMGoQYXGtI7dZGTmpuKQlUhbKxKtbyYyevSBRg6VO6yio8HQkOVTkRERKZK55YcW1tb/PLLL7h+/Tpmz57NAsdAvB29YSXJfyy3795WOE35q1CBEwMSEZF+6Fzk/Pbbb+jcuTOsra0BABcvXsSOHTuQm5sLANBhdQjSgbWVNSo4VQBguV1WnBiQiIj0odQDj1NTU9GyZUuEhYWhffv2SEpKAgAMHjwYY8eO1XtAS2TJl5ED2ldZcWJAIiIqq1IXOaNHj4atrS0SExPh5OSk2d+zZ09s375dr+EslaVOCKjGtayIiEgfSl3k7Ny5E7Nnz0ZQUJDW/tDQUFy9elVvwSyZJc+Vo8arrIiI6GmVusjJycnRasFRu3PnDuzt7fUSytJZencVoL2WVVyc0mmIiMgUlbrIad68OX766SfNY0mSoFKpMGfOHLz88st6DWepLL27CpC7rFq1krfZZUVERGVR6klY5syZg5YtW+LEiRPIz8/HhAkTcPbsWdy5c4czHusJu6tk3bsDO3bIXVYff6x0GiIiMjWlbsmpU6cO4uLi8MILL6Bz587IycnBa6+9hpMnT6JatWqGyGhxLH3WY7WuXQEbG+DUKSA2Vuk0RERkaso0na67uzs+5j+tDcbfxR8AW3K8vIDWrYE//wTWrwcmTVI6ERERmRKdi5zExESdjqtUqVKZw5BMU+Rk34JKqDQzIFuinj3lImfdOuDTTwFJUjoRERGZCp2LnJCQEM22enZj6YFfHCEEJElCUVGRHuNZJnV3VYGqAGm5afB28lY4kXK6dAHs7IDz54EzZ4C6dZVOREREpkLnIkeSJAQFBWHAgAHo2LEjbGwsa+HI8mRvYw8vRy/cyb2D5Oxkiy5y3N2Bdu2AX3+Vu6xY5BARka507ge5fv06hg0bhnXr1uHVV1/FqlWrYGdnh/r162vdSD/UXVbJ2ckKJ1Fez57y/fr1AJdIIyIiXelc5Pj7++ODDz7AhQsX8MsvvyAtLQ1NmjTB888/j6VLl0KlUhkyp8VhkXNfx46AoyNw8SJw8qTSaYiIyFSUaUTrCy+8gGXLliE+Ph5OTk4YOnQo0tPT9RzNsrHIuc/FBXj1VXl7/XplsxARkekoU5Fz+PBhvPXWWwgLC0N2djYWLlwIDw8PPUezbP7OLHIexC4rIiIqLZ1HDyclJeGnn37CihUrkJaWhj59+uDQoUOoU6eOIfNZrADXAABAcg6LHABo3x5wdgauXgWOHQOef17pREREZOx0LnIqVaqEihUron///ujUqRNsbW2hUqlw6tQprePq1aun95CWiN1V2pycgM6dgTVr5NYcFjlERPQkkhC6Nf5bWd3v2VLPj/PwS41xnpzMzEy4u7sjIyMDbm5uSsfR2e5Lu9F6VWvU8a2D08NOKx3HKPz2m1zoBAYCiYnyKuVERGSe9PH7rXNLzuXLl8v0AVQ26pacpKwkhZMYj7ZtAU9P4OZN4MABgIveExHR4+hc5FSuXNmQOegh6iInNTcV+UX5sLO2UziR8uzsgG7dgKVL5W4rFjlERPQ4Ol1dpeu6VWo3btwoUxi6z8vRCzZWcg2akpOicBrj0bu3fP/LL0BenrJZiIjIuOlU5Dz77LN45513EBUVVeIxGRkZWLp0KerUqYNNmzbpLaClspKs4OfsB4CDjx/04ovymJz0dGD7dqXTEBGRMdOpu+rcuXOYPn06WrduDQcHBzRq1AiBgYFwcHBAWloazp07h7Nnz+KZZ57BnDlz0L59e0Pntgj+Lv64kXWDRc4DrK2BXr2A+fPlLqvOnZVORERExkqnlhxvb2/Mnz8fSUlJ+PbbbxEaGorbt28jPj4eANCnTx9ER0fjyJEjLHD0iJeRF++NN+T7334DsrKUzUJERMarVEuJOzo6olu3bujWrZuh8tADWOQU75lngLAwIC4O2LIF6NtX6URERGSMyrSsA5UPFjnFk6T7rTlr1iibhYiIjBeLHCPGIqdk6qusdu0CUnjxGRERFYNFjhFjkVOysDCgcWOgqAjYuFHpNEREZIxY5BgxFjmPp+6yWr1a2RxERGScSl3k5OTkGCIHFYNFzuP16gVYWQFHjwL/f6EfERGRRqmLHD8/PwwaNAgHDx40RB56gLrIySnIQXZ+tsJpjE9AAPC//8nbq1Ypm4WIiIxPqYuc1atX486dO3jllVcQFhaGWbNm4ebNm2X68AMHDqBjx44IDAyEJEnYsmWL1vNCCEyaNAkBAQFwdHREq1atNHPzWAIXOxc42zoD4EKdJVFfPr5qFaBSKZuFiIiMS6mLnC5dumDLli24ceMGhg4dijVr1qBy5cro0KEDIiMjUVhYqPN75eTkoH79+li4cGGxz8+ZMwcLFizAkiVLcOzYMTg7O6NNmza4d+9eaWObrADXAADssipJly6Aiwtw5Qpw6JDSaYiIyJiUeeCxj48PxowZg1OnTmH+/PnYvXs3unXrhsDAQEyaNAl379594nu0a9cO06ZNQ9euXR95TgiBr776Cp988gk6d+6MevXq4aeffsLNmzcfafExZxyX83hOTkD37vI2u6yIiOhBZS5ybt26hTlz5qBWrVr48MMP0a1bN+zZswfz5s1DZGQkunTp8lTBLl++jOTkZLRq1Uqzz93dHU2aNMGRI0dKfF1eXh4yMzO1bqaMRc6TqbusNmwALKiRj4iInqBUyzoAQGRkJFasWIEdO3agVq1aePfdd/Hmm2/Cw8NDc0zTpk0RHh7+VMGSk+UfdT8/P639fn5+mueKM3PmTHz22WdP9dnGxN+ZRc6TvPQSEBwMXLsG/P77/ZYdIiKybKVuyRk4cCACAwNx6NAhxMTEYMSIEVoFDgAEBgbi448/1lfGUpk4cSIyMjI0t2vXrimSQ1/YkvNkVlbAm2/K2+yyIiIitVK35CQlJcHJyemxxzg6OmLy5MllDgUA/v7yj/utW7cQEBCg2X/r1i00aNCgxNfZ29vD3t7+qT7bmGiKnBwWOY/Tty8wcybw55/Af/8BPj5KJyIiIqWVuiWnsLDwkTEvmZmZyMrKQn5+vt6ChYSEwN/fH3v27NHsy8zMxLFjxxAREaG3zzF2bMnRTXg48OyzQGEhsHat0mmIiMgYlLrI8fDwgKen5yM3Dw8PODo6onLlypg8eTJUOkxakp2djZiYGMTExACQBxvHxMQgMTERkiRh1KhRmDZtGn777TecPn0a/fr1Q2Bg4FMPajYlLHJ016+ffL9ypaIxiIjISJS6u2rlypX4+OOPMWDAADz33HMAgOPHj+PHH3/EJ598gv/++w9ffPEF7O3t8dFHHz32vU6cOIGXX35Z83jMmDEAgP79+2PlypWYMGECcnJy8PbbbyM9PR0vvPACtm/fDgcHh9LGNlnqIudW9i2ohApWEpcbK8kbbwBjxwInTwIxMcBjejWJiMgCSEIIUZoXtGzZEu+88w569OihtX/Dhg347rvvsGfPHqxatQrTp0/HhQsX9Bq2LDIzM+Hu7o6MjAy4ubkpHafUCooKYDfNDgCQMi4FPs4cbPI4PXvKl5K//z7w9ddKpyEiorLSx+93qZsFDh8+jIYNGz6yv2HDhpr5a1544QUkJiaWKRBps7W2RQWnCgDYZaWLgQPl+9Wrgbw8ZbMQEZGySl3kBAcHY9myZY/sX7ZsGYKDgwEAqamp8PT0fPp0BIDjckqjdWugYkXgzh15zhwiIrJcpR6T88UXX6B79+74888/8eyzzwKQx9ZcuHABv/zyCwAgKioKPXv21G9SC+bv4o8zKWeQlM1FOp/E2hro3x+YMQNYvhzo1k3pREREpJRSt+R06tQJsbGxaN++Pe7cuYM7d+6gXbt2uHDhAjp06AAAGDZsGObPn6/3sJaKLTmlo+6y2rEDuHFD2SxERKScUrXkFBQUoG3btliyZAlmzpxpqEz0EC7tUDrVqwPNmwN//w389BMwcaLSiYiISAmlasmxtbXFqVOnDJWFSqBuyWF3le4GDZLvly8HSnf9IBERmYtSd1e9+eabxQ48JsMJdA0EANzIZN+Lrrp1A5ydgYsXgYMHlU5DRERKKPXA48LCQixfvhy7d+9Go0aN4OzsrPU8x+LoX2WPygCAqxlXFU5iOlxc5Dlzli8HfvhB7r4iIiLLUuoi58yZM3jmmWcAAHFxcVrPSZKkn1SkpYpHFQByS06hqhA2VqX+Y7NIb78tFzkbNgBffQVwVgMiIstS6l/LvXv3GiIHPYa/iz/srO2QX5SP65nXNUUPPd5zzwH16gGnTgE//wyMGKF0IiIiKk9lXgjp4sWL2LFjB3JzcwEApVwdgkrBSrJCsJs80eLVdHZZ6UqS5NYcAPj+ew5AJiKyNKUuclJTU9GyZUuEhYWhffv2SEqSr/gZPHgwxo4dq/eAJOO4nLLp0wdwdAROnwaOHVM6DRERladSFzmjR4+Gra0tEhMT4eTkpNnfs2dPbN++Xa/h6L4q7lUAsCWntDw8APVast9/r2gUIiIqZ6Uucnbu3InZs2cjKChIa39oaCiuXuUPsKGoW3KupF9RNogJUndZrVsHZGQom4WIiMpPqYucnJwcrRYctTt37sDe3l4voehRld3ZXVVWERFA7dpAbq48AJmIiCxDqYuc5s2b46efftI8liQJKpUKc+bMwcsvv6zXcHQfx+SU3YMDkL/7jgOQiYgsRakvIZ8zZw5atmyJEydOID8/HxMmTMDZs2dx584dHDp0yBAZCffnyknMSIRKqGAllfnCOIv05pvABx/Il5MfPw40aaJ0IiIiMrRS/1LWqVMHcXFxeOGFF9C5c2fk5OTgtddew8mTJ1GtWjVDZCQAFV0rwkqyQn5RPhfqLAMvL6B7d3l7yRJlsxARUfmQhJlPcJOZmQl3d3dkZGTAzc1N6ThPpdKXlXAt8xoODzqMiOAIpeOYnKNH5fE5Dg7A9euAt7fSiYiIqCT6+P0u0/oA6enpOH78OFJSUqBSqbSe69evX5mC0JNV9qiMa5nXcDXjKoucMmjSBGjYEDh5ElixAhg3TulERERkSKUucn7//Xf06dMH2dnZcHNz01qvSpIkFjkGVMWjCg4mHuRcOWUkScC77wJDhgCLFwNjxgBWHNpERGS2Sv2/+LFjx2LQoEHIzs5Geno60tLSNLc7d+4YIiP9P/Vl5Jwrp+x69wbc3YFLl4CdO5VOQ0REhlTqIufGjRt4//33i50rhwyLc+U8PWdnYMAAeXvRIkWjEBGRgZW6yGnTpg1OnDhhiCz0BJwrRz+GDZPvt24FrlxRNAoRERlQqcfkvPrqqxg/fjzOnTuHunXrwtbWVuv5Tp066S0caVPPlXM1/SqEEFrjoUh3NWoALVsCe/bI61nNmKF0IiIiMoRSX0Ju9ZiRmpIkoaio6KlD6ZM5XUJ+r/AeHKc7AgD+G/8fKjhVUDiR6YqMBF5/HfDxAa5dA7giCRGRcdHH73epu6tUKlWJN2MrcMyNg40D/Jz9AHA18qfVqRNQsSLw33/Axo1KpyEiIkPgBbQmhuNy9MPG5v7YnK+/5npWRETmSOcip3379sjIyNA8njVrFtLT0zWPU1NTUatWLb2Go0c9OC6Hns7bb8vdVCdOAMeOKZ2GiIj0TeciZ8eOHcjLy9M8njFjhta8OIWFhYiNjdVvOnoE58rRHx8foFcvefubb5TNQkRE+qdzkfPw+GQzX/LKaHGuHP167z35fsMG4OZNZbMQEZF+cUyOieGYHP1q1Aho1gwoLAS++07pNEREpE86FzmSJD0yLwvnaSl/mpYcjsnRG3VrzpIlwAM9skREZOJ0ngxQCIEBAwbA/v8nFLl37x6GDh0KZ2dnANAar0OGo27JSbuXhsy8TLjZm/bcP8bgtdeAwEC5u2rDBqBvX6UTERGRPujcktO/f3/4+vrC3d0d7u7uePPNNxEYGKh57OvryxXIy4GbvRs8HTwBsDVHX2xt5dXJAWDBAl5OTkRkLnRuyVmxYoUhc1ApVPaojLTkNFzNuIq6fnWVjmMW3n4bmDpVvpz8yBGgaVOlExER0dPiwGMTxHE5+ufjA7zxhrz95ZfKZiEiIv1gkWOC1BMCcq4c/Ro9Wr6PjOTq5ERE5oBFjgmq5lkNABB/J17hJOalbl15dXKVipMDEhGZAxY5JqhmhZoAgPO3zyucxPyoW3N++AHIylI2CxERPR0WOSYo3CccAJBwJwH5RfkKpzEv7doBNWoAmZkAx9oTEZk2FjkmqKJrRbjYuaBIFOHinYtKxzErVlbAyJHy9tdfA0VFyuYhIqKyY5FjgiRJ0nRZXbh9QeE05qdfP8DTE7h0Cfj9d6XTEBFRWbHIMVHhFeQuq/P/cVyOvjk7A++8I2/zcnIiItPFIsdEaVpyUtmSYwgjRgA2NsCBA/IEgUREZHpY5JgotuQYVsWKQO/e8va8ecpmISKismGRY6IeHJMjuNiSQYwdK99v3Ahc5eTSREQmh0WOiaruVR02VjbIKcjB9czrSscxS/XrA61ayVdYff210mmIiKi0WOSYKFtrW83Mx7zCynDUrTlLlwLp6YpGISKiUmKRY8LUkwJy5mPDadMGqFMHyM6WCx0iIjIdLHJMWE1vzpVjaJJ0vzXn66+BfE4wTURkMljkmDC25JSP3r0Bf3/gxg1gwwal0xARka5Y5JgwznpcPuztgfffl7e/+ALgxWxERKaBRY4JUxc5ydnJSL+XrmwYM/fOO/JMyP/+C+zapXQaIiLSBYscE+Zm74aKrhUBsDXH0Ly8gCFD5O05c5TNQkREumGRY+LUrTmc+djwRo8GrK2BPXuA6Gil0xAR0ZMYdZEzZcoUSJKkdatZs6bSsYyKenkHtuQYXqVK95d6mDtX2SxERPRkRl3kAEDt2rWRlJSkuR08eFDpSEZF05LDK6zKxfjx8v3GjcDly8pmISKixzP6IsfGxgb+/v6aW4UKFZSOZFTUl5GzJad81KsHtG0LqFTA/PlKpyEioscx+iInPj4egYGBqFq1Kvr06YPExMTHHp+Xl4fMzEytmzlTt+QkpCUgrzBP4TSWYcIE+X7ZMuD2bWWzEBFRyYy6yGnSpAlWrlyJ7du3Y/Hixbh8+TKaN2+OrKysEl8zc+ZMuLu7a27BwcHlmLj8BbgEwM3eDSqhQvydeKXjWIQWLYDGjYHcXODbb5VOQ0REJZGEMJ2pzdLT01G5cmXMnz8fgwcPLvaYvLw85OXdb9HIzMxEcHAwMjIy4ObmVl5Ry1WTH5rg+I3j2Nh9I7rV6qZ0HIuwYQPQsyfg7Q1cvSrPoUNERPqTmZkJd3f3p/r9NuqWnId5eHggLCwMFy9eLPEYe3t7uLm5ad3MnfoKq3P/nVM4ieV4/XWgWjUgNRX44Qel0xARUXFMqsjJzs5GQkICAgIClI5iVOr41gEAnE45rXASy2FtfX9szrx5XLiTiMgYGXWRM27cOOzfvx9XrlzB4cOH0bVrV1hbW6O3erISAgDU86sHADh9i0VOeerfHwgIAK5dA9asUToNERE9zKiLnOvXr6N3796oUaMGevToAW9vbxw9ehQ+Pj5KRzMqdX3rAgDi78QjtyBX4TSWw95engUZAGbPli8rJyIi42FSA4/LQh8Dl4ydEAK+X/ji9t3bODHkBBoFNlI6ksXIzJRnQs7IADZvBrp0UToREZF5sLiBx1Q8SZI0rTkcl1O+3NyA4cPl7ZkzAfP+JwMRkWlhkWMm1EXOqVunFE5ieUaOBBwcgOPHgX37lE5DRERqLHLMhGbwMVtyyp2vL6CetmnmTGWzEBHRfSxyzERdP7bkKGncOMDGBti1C4iKUjoNEREBLHLMRm2f2pAgISUnBbeybykdx+JUqQL06SNvT5+uaBQiIvp/LHLMhLOdM6p5VQPALiulTJwISBLw66/Aaf4REBEpjkWOGdFcYcVJARVRowbQvbu8PWOGslmIiIhFjlnh4GPlffSRfL9hAxDPReGJiBTFIseM8DJy5dWvD3ToIM9+PGuW0mmIiCwbixwzom7JOfvfWRSpihROY7k+/li+/+knIDFR2SxERJaMRY4ZqepZFY42jrhXeA8X71xUOo7Fev554JVXgMJCeU0rIiJSBoscM2JtZY06vnUAcFyO0j79VL7/4Qfg+nVlsxARWSoWOWaGV1gZhxYtgBdfBPLz2ZpDRKQUFjlmRjPzcQoHHytt8mT5fulS4OZNZbMQEVkiFjlmRnMZOVtyFPfyy8ALLwB5eWzNISJSAoscM6PurkpIS0B2frbCaSybJN1vzfn+eyApSdk8RESWhkWOmfFx9oG/iz8A4GzKWYXTUMuWQNOmwL17wJw5SqchIrIsLHLMkLo1599b/yqchB5szVmyBEhOVjYPEZElYZFjhhr4NwAA/JvMIscYtG4tz51z7x5nQSYiKk8scsyQusiJuRWjaA6SSRLw+efy9uLFwLVryuYhIrIULHLMUH2/+gDklhyVUCmchgCgVSvgpZfkeXOmT1c6DRGRZWCRY4ZqVKgBe2t75BTk4FLaJaXjEOTWnKlT5e1ly4BL/GMhIjI4FjlmyMbKRjMpYExyjLJhSKN5c6BNG3lNq88+UzoNEZH5Y5Fjphr4NQDAIsfYTJsm369eDZw/r2wWIiJzxyLHTGkGH7PIMSqNGwNdugAq1f1Ly4mIyDBY5JgpFjnG6/PP5TE6GzcCJ08qnYaIyHyxyDFT6jWsbmTdwO27txVOQw+qWxfo3Vve/uADZbMQEZkzFjlmytXeFdU8qwHgpIDGaNo0wNYW2LUL2LlT6TREROaJRY4ZY5eV8QoJAUaMkLcnTJDH6BARkX6xyDFjnPnYuH38MeDuDvz7L/Dzz0qnISIyPyxyzBhbcoybtzfw0Ufy9scfy2tbERGR/rDIMWPqIuf8f+dxr5C/oMbovfeA4GB5PatvvlE6DRGReWGRY8YqulaEt6M3ikQRzqacVToOFcPR8f5yD9OnA6mpyuYhIjInLHLMmCRJqO///4t13uIVVsbqzTeB+vWBjAzg00+VTkNEZD5Y5Jg5Lu9g/Kytga+/lre/+w6IiVE0DhGR2WCRY+Y4+Ng0vPQS0KOHfCn5++8DQiidiIjI9LHIMXMPFjkqwclYjNncufIYnb//BjZsUDoNEZHpY5Fj5mpWqAk7aztk5WfhSvoVpePQY1SqBHz4obw9bhyQk6NsHiIiU8cix8zZWtuirm9dAMCJmycUTkNPMn48ULkycP06MGuW0mmIiEwbixwL8FzF5wAAx64fUzgJPYmjIzB/vrw9dy4QH69sHiIiU8YixwI0qdgEAHDsBoscU9C1K/C//wF5ecA773AQMhFRWbHIsQBNguQiJzopGgVFBQqnoSeRJGDxYrlVZ+9eYOVKpRMREZkmFjkWIMw7DO727rhXeA+nU04rHYd0ULUq8Nln8vbYscCtW8rmISIyRSxyLICVZMVxOSZo9GigQQMgLU3eJiKi0mGRYyGeD3oeAMflmBIbG+CHHwArK2DtWuDPP5VORERkWljkWAgOPjZNjRoBo0bJ20OHyutbERGRbljkWAh1d9WF2xeQlpumcBoqjc8/l8foJCYC772ndBoiItPBIsdC+Dj7oKpnVQBA1M0ohdNQaTg7A6tWyd1Wq1YBGzcqnYiIyDSwyLEgmi4rDj42OU2bAhMnytvvvAPcuKFsHiIiU8Aix4JwXI5pmzxZHqOTlgYMHCivWE5ERCVjkWNB1JMCHrtxDILT6JocW1tg9Wp5ksBdu4Bvv1U6ERGRcWORY0Ea+DeArZUtbt+9jcvpl5WOQ2VQs6a8phUgL+YZxeFVREQlYpFjQRxsHNDAvwEAjssxZe++K69vlZ8PvP46cPu20omIiIwTixwLw3E5pk+SgBUrgNBQ4No1oHdvoKhI6VRERMaHRY6FUc98fPT6UYWT0NNwdwciIwEnJ2D3bnlQMhERaWORY2HUg49PJp9EXmGewmnoadSpIy/7AADTpwO//aZsHiIiY8Mix8JU86wGHycf5Bfl48j1I0rHoafUu/f9WZDfeAP45x9l8xARGROTKHIWLlyIKlWqwMHBAU2aNMHx48eVjmSyJElCm+ptAAB/xP+hcBrSh3nzgFatgJwc4NVXgStXlE5ERGQcjL7IWb9+PcaMGYPJkyfjn3/+Qf369dGmTRukpKQoHc1kvRr6KgAWOebC1hbYtAmoVw9ITgbat5cnDCQisnRGX+TMnz8fQ4YMwcCBA1GrVi0sWbIETk5OWL58ebHH5+XlITMzU+tG2v5X7X+wkqxw9r+zuJp+Vek4pAdubsC2bUDFisD580CXLkAeh1wRkYUz6iInPz8f0dHRaNWqlWaflZUVWrVqhSNHih9PMnPmTLi7u2tuwcHB5RXXZHg5eqFpcFMAwLb4bQqnIX0JCgL+/FMueA4cAHr1AgoKlE5FRKQcoy5ybt++jaKiIvj5+Wnt9/PzQ3JycrGvmThxIjIyMjS3a9eulUdUk8MuK/NUt658abm9PbBlC9CzJwsdIrJcRl3klIW9vT3c3Ny0bvSo9qHtAQB/Xf4LuQW5CqchfWrZUi5w7O2BzZtZ6BCR5TLqIqdChQqwtrbGrVu3tPbfunUL/v7+CqUyD3V96yLILQi5hbnYe2Wv0nFIz9q2lQsdOzu50GHXFRFZIqMucuzs7NCoUSPs2bNHs0+lUmHPnj2IiIhQMJnpkyQJ7avLrTnssjJPDxY6kZFAp05AVpbSqYiIyo9RFzkAMGbMGCxduhQ//vgjzp8/j2HDhiEnJwcDBw5UOprJezVMHpezLX4bhBAKpyFDaNcO+PVXefmH7duBF18Ebt5UOhURUfkw+iKnZ8+e+OKLLzBp0iQ0aNAAMTEx2L59+yODkan0Woa0hJ21Ha6kX8GF2xeUjkMG0rYtsG8f4OsLxMQAzz8PnD2rdCoiIsMz+iIHAEaMGIGrV68iLy8Px44dQ5MmTZSOZBac7ZzRokoLALyU3Nw9+yxw9ChQo4a8cnmzZvK8OkRE5swkihwyHPWl5CxyzF9ICHD4MNC8OZCRAXToAHz4IVBYqHQyIiLDYJFj4dSXkv999W/cyLyhcBoyNC8vYPdu4P335cezZwOvvALc4B89EZkhFjkWrrpXdTSv1BxFoghfH/ta6ThUDuzsgK+/BjZuBFxdgb//Bho2BH75RelkRET6xSKH8EGzDwAAS04sQca9DIXTUHnp1g2Ijgbq1wf++w/o3l3eV8Jk4kREJodFDqFdaDvU9qmNrPwsfBf9ndJxqByFhgLHjgGffALY2MirmdeqBfz4I8BZBYjI1LHIIVhJVhjfdDwA4KujXyGvkMtXWxJ7e2DqVCAqSu62SksDBgwAIiLkgcpERKaKRQ4BAHrX7Y2KrhWRlJ2En0//rHQcUkCDBnKrzqxZgIuLvN2smdyNlZCgdDoiotJjkUMAADtrO4x+fjQAYO7huVAJlcKJSAm2tsAHHwDx8cCQIYCVlTwguUYNuXXnAueMJCITwiKHNIY0GgJ3e3dcuH0BW+O2Kh2HFOTvD3z/vTxDcps2QFGRPE6nVi25ZefECaUTEhE9GYsc0nCzd8OwxsMAAJ/v/xz5RfkKJyKl1a0rr3l17BjQubM8GPmXX+QZlJ97Dli+HLh7V+mURETFY5FDWkY+PxJu9m6ITorG+3++r3QcMhLPPSevaH7qFPDmm/JcO1FRwODBQGAg8O678nw7KvZyEpERYZFDWvxd/LH29bWQIOG76O+wOGqx0pHIiNStC6xaJa9/NWuWvFRERgaweLG8wnmVKsD48cCRI3IXFxGRkiQhzHs2jMzMTLi7uyMjIwNubm5KxzEZsw/Oxod7PoSNlQ12992Nl6q8pHQkMkIqFbBnD7BmDRAZCWRm3n+uQgWgXTvg1VeBli3lx0REutLH7zeLHCqWEAJ9Ivtg7Zm1qOBUAVFDolDFo4rSsciI3bsH/PknsH69PI4n46HJs+vWBVq0AF56SZ6DJzBQkZhEZCJY5OiARU7Z3S24i+YrmuOfpH/g7+KPRe0XoWt4V6VjkQkoKJAnEty6VS58zp599JiKFeWxPs8+C9SrJ9+CggBJKv+8RGR8WOTogEXO07mWcQ3/W/0/XLgtT5DSvVZ3fNPuG/i5+CmcjExJSgpw4ACwb588QPnMmeIHKXt4AHXqyPPyhIXJ99Wry2N9nJ3LOTQRKYpFjg5Y5Dy9e4X38Nm+zzD38FwUiSJ4OXphZJOR6FG7B2pWqKl0PDJBOTnAP/8Ax4/Lc+6cPg3ExgKFhSW/xtdXLnYqV5ZbgdS3gADAz0++eXqyJYjIXLDI0QGLHP35J+kfDP5tMGKSYzT76vrWRbda3fB80POo7VMbga6BkPgrQ2WQlyfPqHz2LBAXJ99iY4GLF7UHND+Ora08wLlCBcDbW755ecktRB4egLs74OZ2/+bqKi9h4ex8/97WloUSkTFgkaMDFjn6VVBUgDWn12D92fXYdWkXClXa//R2t3dHuE84AlwC4OPkA19nX3g7ecPZ1hnOds5wsnWCk60TbK1sYWttC1srW9hY2cDayhpWkhWsJfneSrKCJEnyPeRfHHXxpH6s9nBR9fDzhmRvYw9/F/9y+zxLlZ4OXL4s365fl283bsj3ycnArVuPDnQuK2trwNERcHKS7x0c7t/s7bVvdnbyzdb2/v2DNxsb+abetraWbw9uW1lp3z+8T5Lk+wdv6n2S9Oh2cY/VN6D4xw/uL277wXu1xz1f0rElKe3xT3p9eb2W7vPykv/RoE8scnTAIsdw0nLT8Gvsr9gWvw1nUs4gPjUeRcKyJkdpFtwMBwcdVDoGQW4JSkkBbt+Wb6mp8n16+v1bWhqQlSW3DKnvc3Lk7cd1lRHR4333HfD22/p9T338ftvoNxJZEk9HTwxoMAADGgwAAOQV5iEuNQ5xqXFIyUnBf3f/Q0pOClJzU3G34C5y8nOQU5CD3IJcFKgKUFBUgPyifBSqCqESKhSJIhSpiqASKggICCE0C4UKyLW4uiZ/+LGu1K/TFztrO72+H5WdvT0QHCzfyiI/Xy54cnPlpSrU93l58uXx6lte3v1bfr58JVl+/v3twkL5Xr2tvhUUyBMkqm+FhfK9SnV/n0ql/VgI7X1CaO9TP37wuZJuwOP3qbdLc6/24OPHPVfc44c97fNlPdbQjCmLIVhbK52geCxySG/sbexR168u6vrVVToKUampu548PZVOQkT6wmUdiIiIyCyxyCEiIiKzxCKHiIiIzBKLHCIiIjJLLHKIiIjILLHIISIiIrPEIoeIiIjMEoscIiIiMksscoiIiMgsscghIiIis8Qih4iIiMwSixwiIiIySyxyiIiIyCyxyCEiIiKzZKN0AEMTQgAAMjMzFU5CREREulL/bqt/x8vC7IucrKwsAEBwcLDCSYiIiKi0srKy4O7uXqbXSuJpSiQToFKpcPPmTbi6ukKSJL29b2ZmJoKDg3Ht2jW4ubnp7X3NHc9b2fC8lQ3PW+nxnJUNz1vZPO68CSGQlZWFwMBAWFmVbXSN2bfkWFlZISgoyGDv7+bmxv+gy4DnrWx43sqG5630eM7KhuetbEo6b2VtwVHjwGMiIiIySyxyiIiIyCyxyCkje3t7TJ48Gfb29kpHMSk8b2XD81Y2PG+lx3NWNjxvZWPo82b2A4+JiIjIMrElh4iIiMwSixwiIiIySyxyiIiIyCyxyCEiIiKzxCKnjBYuXIgqVarAwcEBTZo0wfHjx5WOZDRmzpyJZ599Fq6urvD19UWXLl0QGxurdcy9e/cwfPhweHt7w8XFBa+//jpu3bqlUGLjNGvWLEiShFGjRmn28bwV78aNG3jzzTfh7e0NR0dH1K1bFydOnNA8L4TApEmTEBAQAEdHR7Rq1Qrx8fEKJlZeUVERPv30U4SEhMDR0RHVqlXD1KlTtdYJ4nkDDhw4gI4dOyIwMBCSJGHLli1az+tyju7cuYM+ffrAzc0NHh4eGDx4MLKzs8vxW5Svx52zgoICfPDBB6hbty6cnZ0RGBiIfv364ebNm1rvoa9zxiKnDNavX48xY8Zg8uTJ+Oeff1C/fn20adMGKSkpSkczCvv378fw4cNx9OhR7Nq1CwUFBfjf//6HnJwczTGjR4/G77//jo0bN2L//v24efMmXnvtNQVTG5eoqCh89913qFevntZ+nrdHpaWloVmzZrC1tcWff/6Jc+fOYd68efD09NQcM2fOHCxYsABLlizBsWPH4OzsjDZt2uDevXsKJlfW7NmzsXjxYnz77bc4f/48Zs+ejTlz5uCbb77RHMPzBuTk5KB+/fpYuHBhsc/rco769OmDs2fPYteuXdi6dSsOHDiAt99+u7y+Qrl73Dm7e/cu/vnnH3z66af4559/EBkZidjYWHTq1EnrOL2dM0Gl9txzz4nhw4drHhcVFYnAwEAxc+ZMBVMZr5SUFAFA7N+/XwghRHp6urC1tRUbN27UHHP+/HkBQBw5ckSpmEYjKytLhIaGil27domXXnpJjBw5UgjB81aSDz74QLzwwgslPq9SqYS/v7+YO3euZl96erqwt7cXa9euLY+IRunVV18VgwYN0tr32muviT59+ggheN6KA0Bs3rxZ81iXc3Tu3DkBQERFRWmO+fPPP4UkSeLGjRvlll0pD5+z4hw/flwAEFevXhVC6PecsSWnlPLz8xEdHY1WrVpp9llZWaFVq1Y4cuSIgsmMV0ZGBgDAy8sLABAdHY2CggKtc1izZk1UqlSJ5xDA8OHD8eqrr2qdH4DnrSS//fYbGjdujO7du8PX1xcNGzbE0qVLNc9fvnwZycnJWufN3d0dTZo0sejz1rRpU+zZswdxcXEAgH///RcHDx5Eu3btAPC86UKXc3TkyBF4eHigcePGmmNatWoFKysrHDt2rNwzG6OMjAxIkgQPDw8A+j1nZr9Ap77dvn0bRUVF8PPz09rv5+eHCxcuKJTKeKlUKowaNQrNmjVDnTp1AADJycmws7PT/Aet5ufnh+TkZAVSGo9169bhn3/+QVRU1CPP8bwV79KlS1i8eDHGjBmDjz76CFFRUXj//fdhZ2eH/v37a85NcX9nLfm8ffjhh8jMzETNmjVhbW2NoqIiTJ8+HX369AEAnjcd6HKOkpOT4evrq/W8jY0NvLy8eB4hjzP84IMP0Lt3b80Cnfo8ZyxyyKCGDx+OM2fO4ODBg0pHMXrXrl3DyJEjsWvXLjg4OCgdx2SoVCo0btwYM2bMAAA0bNgQZ86cwZIlS9C/f3+F0xmvDRs24Oeff8aaNWtQu3ZtxMTEYNSoUQgMDOR5o3JRUFCAHj16QAiBxYsXG+Qz2F1VShUqVIC1tfUjV7TcunUL/v7+CqUyTiNGjMDWrVuxd+9eBAUFafb7+/sjPz8f6enpWsdb+jmMjo5GSkoKnnnmGdjY2MDGxgb79+/HggULYGNjAz8/P563YgQEBKBWrVpa+8LDw5GYmAgAmnPDv7Paxo8fjw8//BC9evVC3bp10bdvX4wePRozZ84EwPOmC13Okb+//yMXpRQWFuLOnTsWfR7VBc7Vq1exa9cuTSsOoN9zxiKnlOzs7NCoUSPs2bNHs0+lUmHPnj2IiIhQMJnxEEJgxIgR2Lx5M/766y+EhIRoPd+oUSPY2tpqncPY2FgkJiZa9Dls2bIlTp8+jZiYGM2tcePG6NOnj2ab5+1RzZo1e2SKgri4OFSuXBkAEBISAn9/f63zlpmZiWPHjln0ebt79y6srLR/AqytraFSqQDwvOlCl3MUERGB9PR0REdHa47566+/oFKp0KRJk3LPbAzUBU58fDx2794Nb29vref1es5KOVCahBDr1q0T9vb2YuXKleLcuXPi7bffFh4eHiI5OVnpaEZh2LBhwt3dXezbt08kJSVpbnfv3tUcM3ToUFGpUiXx119/iRMnToiIiAgRERGhYGrj9ODVVULwvBXn+PHjwsbGRkyfPl3Ex8eLn3/+WTg5OYnVq1drjpk1a5bw8PAQv/76qzh16pTo3LmzCAkJEbm5uQomV1b//v1FxYoVxdatW8Xly5dFZGSkqFChgpgwYYLmGJ43+WrHkydPipMnTwoAYv78+eLkyZOaK4F0OUdt27YVDRs2FMeOHRMHDx4UoaGhonfv3kp9JYN73DnLz88XnTp1EkFBQSImJkbrNyIvL0/zHvo6Zyxyyuibb74RlSpVEnZ2duK5554TR48eVTqS0QBQ7G3FihWaY3Jzc8W7774rPD09hZOTk+jatatISkpSLrSRerjI4Xkr3u+//y7q1Kkj7O3tRc2aNcX333+v9bxKpRKffvqp8PPzE/b29qJly5YiNjZWobTGITMzU4wcOVJUqlRJODg4iKpVq4qPP/5Y64eG502IvXv3Fvv/s/79+wshdDtHqamponfv3sLFxUW4ubmJgQMHiqysLAW+Tfl43Dm7fPlyib8Re/fu1byHvs6ZJMQD01sSERERmQmOySEiIiKzxCKHiIiIzBKLHCIiIjJLLHKIiIjILLHIISIiIrPEIoeIiIjMEoscIiIiMksscoiIiMgsscghoieaMmUKGjRo8FTvceXKFUiShJiYGL1kKkmLFi0watQog34GEZkGFjlEZuDatWsYNGgQAgMDYWdnh8qVK2PkyJFITU0t9XtJkoQtW7Zo7Rs3bpzWIoRlERwcjKSkJNSpU+ep3kdt3759kCTpkVXZIyMjMXXqVL18RlmUVzFHRE/GIofIxF26dAmNGzdGfHw81q5di4sXL2LJkiXYs2cPIiIicOfOnaf+DBcXl0dWCi4ta2tr+Pv7w8bG5qnzPI6XlxdcXV0N+hlEZBpY5BCZuOHDh8POzg47d+7ESy+9hEqVKqFdu3bYvXs3bty4gY8//lhzbJUqVTB16lT07t0bzs7OqFixIhYuXKj1PAB07doVkiRpHj/cXTVgwAB06dIFM2bMgJ+fHzw8PPD555+jsLAQ48ePh5eXF4KCgrBixQrNax5u4RgwYAAkSXrktm/fPgDAqlWr0LhxY7i6usLf3x9vvPEGUlJSNO/18ssvAwA8PT0hSRIGDBgA4NHuqrS0NPTr1w+enp5wcnJCu3btEB8fr3l+5cqV8PDwwI4dOxAeHg4XFxe0bdsWSUlJJZ7ztLQ09OnTBz4+PnB0dERoaKjmu4aEhAAAGjZsCEmS0KJFC83rfvjhB4SHh8PBwQE1a9bEokWLHjk/69atQ9OmTeHg4IA6depg//79On0uERVDb8uOElG5S01NFZIkiRkzZhT7/JAhQ4Snp6dQqVRCCCEqV64sXF1dxcyZM0VsbKxYsGCBsLa2Fjt37hRCCJGSkqJZMT4pKUmkpKQIIYSYPHmyqF+/vuZ9+/fvL1xdXcXw4cPFhQsXxLJlywQA0aZNGzF9+nQRFxcnpk6dKmxtbcW1a9eEEEKz+vDJkyeFEEKkp6eLpKQkzW3kyJHC19dXs6r6smXLxB9//CESEhLEkSNHREREhGjXrp0QQojCwkKxadMmAUDExsaKpKQkkZ6eLoR4dOX2Tp06ifDwcHHgwAERExMj2rRpI6pXry7y8/OFEEKsWLFC2NrailatWomoqCgRHR0twsPDxRtvvFHieR8+fLho0KCBiIqKEpcvXxa7du0Sv/32mxBCiOPHjwsAYvfu3SIpKUmkpqYKIYRYvXq1CAgIEJs2bRKXLl0SmzZtEl5eXmLlypVa5ycoKEj88ssv4ty5c+Ktt94Srq6u4vbt20/8XCJ6FIscIhN29OhRAUBs3ry52Ofnz58vAIhbt24JIeQip23btlrH9OzZU1M8CCGKfb/iipzKlSuLoqIizb4aNWqI5s2bax4XFhYKZ2dnsXbtWiHEo0XOgzZt2iQcHBzEwYMHS/yuUVFRAoDIysoSQgixd+9eAUCkpaVpHfdgkRMXFycAiEOHDmmev337tnB0dBQbNmwQQshFDgBx8eJFzTELFy4Ufn5+JWbp2LGjGDhwYLHPlfQ9q1WrJtasWaO1b+rUqSIiIkLrdbNmzdI8X1BQIIKCgsTs2bOf+LlE9Ch2VxGZASGEzsdGREQ88vj8+fOl/szatWvDyur+/0L8/PxQt25dzWNra2t4e3truphKcvLkSfTt2xfffvstmjVrptkfHR2Njh07olKlSnB1dcVLL70EAEhMTNQ54/nz52FjY4MmTZpo9nl7e6NGjRpa39nJyQnVqlXTPA4ICHhs7mHDhmHdunVo0KABJkyYgMOHDz82R05ODhISEjB48GC4uLhobtOmTUNCQoLWsQ/++djY2KBx48aarKX9XCJLxyKHyIRVr14dkiSVWKScP38enp6e8PHx0ftn29raaj2WJKnYfSqVqsT3SE5ORqdOnfDWW29h8ODBmv05OTlo06YN3Nzc8PPPPyMqKgqbN28GAOTn5+vxW8iKy/24wrFdu3a4evUqRo8ejZs3b6Jly5YYN25cicdnZ2cDAJYuXYqYmBjN7cyZMzh69KjOOUv7uUSWjkUOkQnz9vZG69atsWjRIuTm5mo9l5ycjJ9//hk9e/aEJEma/Q//qB49ehTh4eGax7a2tigqKjJscAD37t1D586dUbNmTcyfP1/ruQsXLiA1NRWzZs1C8+bNUbNmzUdaVuzs7ADgsVnDw8NRWFiIY8eOafalpqYiNjYWtWrVeqr8Pj4+6N+/P1avXo2vvvoK33//fYm5/Pz8EBgYiEuXLqF69epaN/VAZbUH/3wKCwsRHR2t9edT0ucS0aMMey0nERnct99+i6ZNm6JNmzaYNm0aQkJCcPbsWYwfPx4VK1bE9OnTtY4/dOgQ5syZgy5dumDXrl3YuHEjtm3bpnm+SpUq2LNnD5o1awZ7e3t4enoaJPc777yDa9euYc+ePfjvv/80+728vFCpUiXY2dnhm2++wdChQ3HmzJlH5r6pXLkyJEnC1q1b0b59ezg6OsLFxUXrmNDQUHTu3BlDhgzBd999B1dXV3z44YeoWLEiOnfuXObskyZNQqNGjVC7dm3k5eVh69atmkLE19cXjo6O2L59O4KCguDg4AB3d3d89tlneP/99+Hu7o62bdsiLy8PJ06cQFpaGsaMGaN574ULFyI0NBTh4eH48ssvkZaWhkGDBj3xc4noUWzJITJxoaGhOHHiBKpWrYoePXqgWrVqePvtt/Hyyy/jyJEj8PLy0jp+7NixOHHiBBo2bIhp06Zh/vz5aNOmjeb5efPmYdeuXQgODkbDhg0Nlnv//v1ISkpCrVq1EBAQoLkdPnwYPj4+WLlyJTZu3IhatWph1qxZ+OKLL7ReX7FiRXz22Wf48MMP4efnhxEjRhT7OStWrECjRo3QoUMHREREQAiBP/7445EuqtKws7PDxIkTUa9ePbz44ouwtrbGunXrAMjjaBYsWIDvvvsOgYGBmmLqrbfewg8//IAVK1agbt26eOmll7By5cpHWnJmzZqFWbNmoX79+jh48CB+++03VKhQ4YmfS0SPkkRpRiwSkUmrUqUKRo0axWUPjNCVK1cQEhKCkydPPvUSGkQkY0sOERERmSUWOURERGSW2F1FREREZoktOURERGSWWOQQERGRWWKRQ0RERGaJRQ4RERGZJRY5REREZJZY5BAREZFZYpFDREREZolFDhEREZml/wPB+RewH0W/2QAAAABJRU5ErkJggg==",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(gd_cost_history, \"b\", label=\"Gradient descent\")\n",
"plt.plot(qng_cost_history, \"g\", label=\"Quantum Natural Gradient\")\n",
"\n",
"plt.ylabel(\"Energy (MeV)\")\n",
"plt.xlabel(\"Optimization steps\")\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Wow! It seems taking a more intelligent step in parameter space can work wonders towards finding an optimal solution. This works much better than simply adding a variable time step, like we did for the general case. Try implementing the QNG optimizer for higher dimensions and check the performance!\n",
"\n",
"Finally, we can plot how we trace the potential energy surface (PES) as we find a solution. It's a little more exciting now that we have two paths -- let's imagine they're racing through the mountains.\n",
"\n",
"If you're running this yourself, you can either generate the surface yourself or put this code in a cell to download it locally:\n",
"\n",
"`!wget https://github.com/kylegodbey/nuclear-quantum-computing/raw/main/nuclear-qc/vqe/deut_pes_n3.npy`"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Discretize the parameter space\n",
"theta0 = np.linspace(0.0, 2.0 * np.pi, 100)\n",
"theta1 = np.linspace(0.0, 2.0 * np.pi, 100)\n",
"\n",
"# Load energy value at each point in parameter space\n",
"pes = np.load(\"deut_pes_n3.npy\")\n",
"\n",
"# Get the minimum of the PES\n",
"minloc=np.unravel_index(pes.argmin(),pes.shape)\n",
"\n",
"# Plot energy landscape\n",
"fig, axes = plt.subplots(figsize=(6, 6))\n",
"\n",
"cmap = plt.cm.get_cmap(\"coolwarm\")\n",
"contour_plot = plt.contourf(theta0, theta1, pes.T, cmap=cmap)\n",
"\n",
"plt.xlabel(r\"$\\theta_0$\")\n",
"plt.ylabel(r\"$\\theta_1$\")\n",
"\n",
"plt.plot(theta0[minloc[0]],theta1[minloc[1]],\"r*\",markersize=20,label=\"Minimum\")\n",
"\n",
"# Plot optimization path for gradient descent. Plot every 10th point.\n",
"gd_color = \"b\"\n",
"\n",
"plt.plot(\n",
" np.array(gd_param_history)[::10, 0],\n",
" np.array(gd_param_history)[::10, 1],\n",
" \".\",markersize=12,\n",
" color=gd_color,\n",
" linewidth=2,\n",
" label=\"Gradient descent\",\n",
")\n",
"plt.plot(\n",
" np.array(gd_param_history)[:, 0],\n",
" np.array(gd_param_history)[:, 1],\n",
" \"-\",\n",
" color=gd_color,\n",
" linewidth=1,\n",
")\n",
"\n",
"# Plot optimization path for qng. Plot every 10th point.\n",
"qng_color = \"g\"\n",
"\n",
"plt.plot(\n",
" np.array(qng_param_history)[::10, 0],\n",
" np.array(qng_param_history)[::10, 1],\n",
" \".\",markersize=12,\n",
" color=qng_color,\n",
" linewidth=2,\n",
" label=\"Quantum Natural Gradient\",\n",
")\n",
"plt.plot(\n",
" np.array(qng_param_history)[:, 0],\n",
" np.array(qng_param_history)[:, 1],\n",
" \"-\",\n",
" color=qng_color,\n",
" linewidth=1,\n",
")\n",
"\n",
"plt.legend()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You can see that the paths are not massively different, but the QNG results in a much sharper gradient in the parameter space. Exemplified by the spacing between the points along the line, showing the value every ten time steps. This steeper landscape leads to bigger steps towards the minimum without risking overshooting, making it an excellent fit in situations where you can make use of it!\n",
"\n",
"This concludes our exploration of playing with VQE ad nauseam, next up we'll explore what happens when things get a bit more noisy."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3.10.4 64-bit",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.4"
},
"orig_nbformat": 4,
"vscode": {
"interpreter": {
"hash": "e7370f93d1d0cde622a1f8e1c04877d8463912d04d973331ad4851f04de6915a"
}
}
},
"nbformat": 4,
"nbformat_minor": 2
}