{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Optimization of an X-Gate for a Transmon Qubit" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "ExecuteTime": { "end_time": "2019-08-18T13:55:31.487712Z", "start_time": "2019-08-18T13:55:30.063353Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "scipy 1.3.1\n", "krotov 1.0.0\n", "qutip 4.4.1\n", "matplotlib.pylab 1.17.2\n", "numpy 1.17.2\n", "matplotlib 3.1.2\n", "CPython 3.7.3\n", "IPython 7.10.2\n" ] } ], "source": [ "# NBVAL_IGNORE_OUTPUT\n", "%load_ext watermark\n", "import os\n", "import qutip\n", "import numpy as np\n", "import scipy\n", "import matplotlib\n", "import matplotlib.pylab as plt\n", "import krotov\n", "from scipy.fftpack import fft\n", "from scipy.interpolate import interp1d\n", "%watermark -v --iversions" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$\\newcommand{tr}[0]{\\operatorname{tr}}\n", "\\newcommand{diag}[0]{\\operatorname{diag}}\n", "\\newcommand{abs}[0]{\\operatorname{abs}}\n", "\\newcommand{pop}[0]{\\operatorname{pop}}\n", "\\newcommand{aux}[0]{\\text{aux}}\n", "\\newcommand{opt}[0]{\\text{opt}}\n", "\\newcommand{tgt}[0]{\\text{tgt}}\n", "\\newcommand{init}[0]{\\text{init}}\n", "\\newcommand{lab}[0]{\\text{lab}}\n", "\\newcommand{rwa}[0]{\\text{rwa}}\n", "\\newcommand{bra}[1]{\\langle#1\\vert}\n", "\\newcommand{ket}[1]{\\vert#1\\rangle}\n", "\\newcommand{Bra}[1]{\\left\\langle#1\\right\\vert}\n", "\\newcommand{Ket}[1]{\\left\\vert#1\\right\\rangle}\n", "\\newcommand{Braket}[2]{\\left\\langle #1\\vphantom{#2} \\mid #2\\vphantom{#1}\\right\\rangle}\n", "\\newcommand{op}[1]{\\hat{#1}}\n", "\\newcommand{Op}[1]{\\hat{#1}}\n", "\\newcommand{dd}[0]{\\,\\text{d}}\n", "\\newcommand{Liouville}[0]{\\mathcal{L}}\n", "\\newcommand{DynMap}[0]{\\mathcal{E}}\n", "\\newcommand{identity}[0]{\\mathbf{1}}\n", "\\newcommand{Norm}[1]{\\lVert#1\\rVert}\n", "\\newcommand{Abs}[1]{\\left\\vert#1\\right\\vert}\n", "\\newcommand{avg}[1]{\\langle#1\\rangle}\n", "\\newcommand{Avg}[1]{\\left\\langle#1\\right\\rangle}\n", "\\newcommand{AbsSq}[1]{\\left\\vert#1\\right\\vert^2}\n", "\\newcommand{Re}[0]{\\operatorname{Re}}\n", "\\newcommand{Im}[0]{\\operatorname{Im}}$\n", "\n", "In the previous examples, we have only optimized for state-to-state\n", "transitions, i.e., for a single objective. This example shows the optimization\n", "of a simple quantum gate, which requires multiple objectives to be fulfilled\n", "simultaneously (one for each state in the logical basis). We consider a\n", "superconducting \"transmon\" qubit and implement a single-qubit Pauli-X gate." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## The transmon Hamiltonian" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The effective Hamiltonian of a single transmon depends on the capacitive energy\n", "$E_C=e^2/2C$ and the Josephson energy $E_J$, an energy due to the Josephson\n", "junction working as a nonlinear inductor periodic with the flux $\\Phi$. In the\n", "so-called transmon limit, the ratio between these two energies lies around\n", "$E_J / E_C \\approx 45$. The Hamiltonian for the transmon is\n", "\n", "$$\n", " \\op{H}_{0} = 4 E_C (\\hat{n}-n_g)^2 - E_J \\cos(\\hat{\\Phi})\n", "$$\n", "\n", "where $\\hat{n}$ is the number operator, which counts the relative number of Cooper pairs\n", "capacitively stored in the junction, and $n_g$ is the effective offset charge\n", "measured in Cooper pair charge units. The equation can be written in a truncated\n", "charge basis defined by the number operator $\\op{n} \\ket{n} = n \\ket{n}$ such\n", "that\n", "\n", "$$\n", " \\op{H}_{0}\n", " = 4 E_C \\sum_{j=-N} ^N (j-n_g)^2 \\ket{j} \\bra{j}\n", " - \\frac{E_J}{2} \\sum_{j=-N}^{N-1}\n", " (\\ket{j+1} \\bra{j} + \\ket{j} \\bra{j+1}).\n", "$$\n", "\n", "A voltage $V(t)$ applied to the circuit couples to the charge Hamiltonian\n", "$\\op{q}$, which in the (truncated) charge basis reads\n", "\n", "$$\n", " \\op{H}_1 = \\op{q} = \\sum_{j=-N} ^N -2n \\ket{n} \\bra{n}\\,.\n", "$$\n", "\n", "The factor 2 is due to the charge carriers in a superconductor being Cooper\n", "pairs. The total Hamiltonian is\n", "\n", "$$\n", " \\op{H} = \\op{H}_{0} + V(t) \\cdot \\op{H}_{1}\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We use a Gaussian voltage profile as the guess pulse:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "ExecuteTime": { "end_time": "2019-08-18T13:55:31.495204Z", "start_time": "2019-08-18T13:55:31.489740Z" }, "lines_to_next_cell": 2 }, "outputs": [], "source": [ "tlist = np.linspace(0, 10, 1000)\n", "\n", "def eps0(t, args):\n", " T = tlist[-1]\n", " return 4 * np.exp(-40.0 * (t / T - 0.5) ** 2)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "ExecuteTime": { "end_time": "2019-08-18T13:55:31.505113Z", "start_time": "2019-08-18T13:55:31.498305Z" } }, "outputs": [], "source": [ "def plot_pulse(pulse, tlist, xlimit=None):\n", " fig, ax = plt.subplots()\n", " if callable(pulse):\n", " pulse = np.array([pulse(t, None) for t in tlist])\n", " ax.plot(tlist, pulse)\n", " ax.set_xlabel('time (ns)')\n", " ax.set_ylabel('pulse amplitude')\n", " if xlimit is not None:\n", " ax.set_xlim(xlimit)\n", " plt.show(fig)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "ExecuteTime": { "end_time": "2019-08-18T13:55:31.745893Z", "start_time": "2019-08-18T13:55:31.507807Z" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_pulse(eps0, tlist)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The complete Hamiltonian is instantiated as\n" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "ExecuteTime": { "end_time": "2019-08-18T13:55:31.756569Z", "start_time": "2019-08-18T13:55:31.748536Z" } }, "outputs": [], "source": [ "def transmon_hamiltonian(Ec=0.386, EjEc=45, nstates=8, ng=0.0, T=10.0):\n", " \"\"\"Transmon Hamiltonian\n", "\n", " Args:\n", " Ec: capacitive energy\n", " EjEc: ratio `Ej` / `Ec`\n", " nstates: defines the maximum and minimum states for the basis. The\n", " truncated basis will have a total of ``2*nstates + 1`` states\n", "\n", " ng: offset charge\n", " T: gate duration\n", " \"\"\"\n", "\n", " Ej = EjEc * Ec\n", " n = np.arange(-nstates, nstates + 1)\n", " up = np.diag(np.ones(2 * nstates), k=-1)\n", " do = up.T\n", " H0 = qutip.Qobj(np.diag(4 * Ec * (n - ng) ** 2) - Ej * (up + do) / 2.0)\n", " H1 = qutip.Qobj(-2 * np.diag(n))\n", "\n", " return [H0, [H1, eps0]]" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "ExecuteTime": { "end_time": "2019-08-18T13:55:31.765655Z", "start_time": "2019-08-18T13:55:31.759729Z" } }, "outputs": [], "source": [ "H = transmon_hamiltonian()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We define the logical basis $\\ket{0_l}$ and $\\ket{1_l}$ (not to be confused with\n", "the charge states $\\ket{n=0}$ and $\\ket{n=1}$) as the eigenstates of the drift\n", "Hamiltonian $\\op{H}_0$ with the lowest energy. The optimization goal is to find a\n", "potential $V_{opt}(t)$ such that after a given final time $T$ implements an\n", "X-gate on this logical basis.\n" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "ExecuteTime": { "end_time": "2019-08-18T13:55:31.812120Z", "start_time": "2019-08-18T13:55:31.768261Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Energy of qubit transition is 6.914\n" ] } ], "source": [ "def logical_basis(H):\n", " H0 = H[0]\n", " eigenvals, eigenvecs = scipy.linalg.eig(H0.full())\n", " ndx = np.argsort(eigenvals.real)\n", " E = eigenvals[ndx].real\n", " V = eigenvecs[:, ndx]\n", " psi0 = qutip.Qobj(V[:, 0])\n", " psi1 = qutip.Qobj(V[:, 1])\n", " w01 = E[1] - E[0] # Transition energy between states\n", " print(\"Energy of qubit transition is %.3f\" % w01)\n", " return psi0, psi1\n", "\n", "psi0, psi1 = logical_basis(H)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We also introduce the projectors $P_i = \\ket{\\psi _i}\\bra{\\psi _i}$ for the logical\n", "states $\\ket{\\psi _i} \\in \\{\\ket{0_l}, \\ket{1_l}\\}$" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "ExecuteTime": { "end_time": "2019-08-18T13:55:31.821033Z", "start_time": "2019-08-18T13:55:31.816323Z" } }, "outputs": [], "source": [ "proj0 = qutip.ket2dm(psi0)\n", "proj1 = qutip.ket2dm(psi1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Optimization target" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The key insight for the realization of a quantum gate $\\Op{O}$ is that\n", "(by virtue of linearity)\n", "\n", "$$\\ket{\\Psi(t=0)} \\rightarrow \\ket{\\Psi(t=T)}\n", " = \\Op{U}(T, \\epsilon(t))\\ket{\\Psi(0)}\n", " = \\Op{O} \\ket{\\Psi(0)}\n", "$$\n", "\n", "is fulfilled for an arbitrary state $\\Ket{\\Psi(t=0)}$ if an only if\n", "$\\Op{U}(T, \\epsilon(t))\\ket{k} = \\Op{O} \\ket{k}$ for every state $\\ket{k}$ in\n", "logical basis, for the time evolution operator $\\Op{U}(T, \\epsilon(t))$ from\n", "$t=0$ to $t=T$ under the same control $\\epsilon(t)$.\n", "\n", "The function `krotov.gate_objectives` automatically sets up the corresponding\n", "objectives $\\forall \\ket{k}: \\ket{k} \\rightarrow \\Op{O} \\ket{k}$:\n" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "ExecuteTime": { "end_time": "2019-08-18T13:55:31.839086Z", "start_time": "2019-08-18T13:55:31.825334Z" }, "lines_to_next_cell": 2 }, "outputs": [ { "data": { "text/plain": [ "[Objective[|Ψ₀(17)⟩ to |Ψ₁(17)⟩ via [H₀[17,17], [H₁[17,17], u₁(t)]]],\n", " Objective[|Ψ₁(17)⟩ to |Ψ₀(17)⟩ via [H₀[17,17], [H₁[17,17], u₁(t)]]]]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "objectives = krotov.gate_objectives(\n", " basis_states=[psi0, psi1], gate=qutip.operators.sigmax(), H=H\n", ")\n", "\n", "objectives" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Dynamics of the guess pulse\n" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "ExecuteTime": { "end_time": "2019-08-18T13:55:32.474392Z", "start_time": "2019-08-18T13:55:31.841644Z" } }, "outputs": [], "source": [ "guess_dynamics = [\n", " objectives[x].mesolve(tlist, e_ops=[proj0, proj1]) for x in [0, 1]\n", "]" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "ExecuteTime": { "end_time": "2019-08-18T13:55:32.482772Z", "start_time": "2019-08-18T13:55:32.476138Z" } }, "outputs": [], "source": [ "def plot_population(result):\n", " '''Representation of the expected values for the initial states'''\n", " fig, ax = plt.subplots()\n", " ax.plot(result.times, result.expect[0], label='0')\n", " ax.plot(result.times, result.expect[1], label='1')\n", " ax.legend()\n", " ax.set_xlabel('time')\n", " ax.set_ylabel('population')\n", " plt.show(fig)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "ExecuteTime": { "end_time": "2019-08-18T13:55:32.900576Z", "start_time": "2019-08-18T13:55:32.485632Z" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_population(guess_dynamics[0])\n", "plot_population(guess_dynamics[1])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Optimization" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We define the desired shape of the update and the factor $\\lambda_a$, and then start the optimization" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "ExecuteTime": { "end_time": "2019-08-18T13:55:32.910596Z", "start_time": "2019-08-18T13:55:32.903675Z" } }, "outputs": [], "source": [ "def S(t):\n", " \"\"\"Scales the Krotov methods update of the pulse value at the time t\"\"\"\n", " return krotov.shapes.flattop(\n", " t, t_start=0.0, t_stop=10.0, t_rise=0.5, func='sinsq'\n", " )\n", "\n", "pulse_options = {H[1][1]: dict(lambda_a=1, update_shape=S)}\n" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "iter. J_T g_a_int J Delta J_T Delta J secs\n", "0 1.00e+00 0.00e+00 1.00e+00 n/a n/a 4\n", "1 2.80e-01 3.41e-01 6.22e-01 -7.20e-01 -3.78e-01 7\n", "2 2.12e-01 3.06e-02 2.43e-01 -6.81e-02 -3.75e-02 6\n", "3 1.35e-01 3.28e-02 1.68e-01 -7.72e-02 -4.44e-02 6\n", "4 9.79e-02 1.56e-02 1.13e-01 -3.71e-02 -2.15e-02 6\n", "5 7.13e-02 1.11e-02 8.25e-02 -2.65e-02 -1.54e-02 6\n" ] } ], "source": [ "opt_result = krotov.optimize_pulses(\n", " objectives,\n", " pulse_options,\n", " tlist,\n", " propagator=krotov.propagators.expm,\n", " chi_constructor=krotov.functionals.chis_re,\n", " info_hook=krotov.info_hooks.print_table(\n", " J_T=krotov.functionals.J_T_re,\n", " show_g_a_int_per_pulse=True,\n", " unicode=False,\n", " ),\n", " check_convergence=krotov.convergence.Or(\n", " krotov.convergence.value_below(1e-3, name='J_T'),\n", " krotov.convergence.delta_below(1e-5),\n", " krotov.convergence.check_monotonic_error,\n", " ),\n", " iter_stop=5,\n", " parallel_map=(\n", " qutip.parallel_map,\n", " qutip.parallel_map,\n", " krotov.parallelization.parallel_map_fw_prop_step,\n", " ),\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "(this takes a while ...)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "lines_to_next_cell": 2 }, "outputs": [], "source": [ "dumpfile = \"./transmonxgate_opt_result.dump\"\n", "if os.path.isfile(dumpfile):\n", " opt_result = krotov.result.Result.load(dumpfile, objectives)\n", "else:\n", " opt_result = krotov.optimize_pulses(\n", " objectives,\n", " pulse_options,\n", " tlist,\n", " propagator=krotov.propagators.expm,\n", " chi_constructor=krotov.functionals.chis_re,\n", " info_hook=krotov.info_hooks.print_table(\n", " J_T=krotov.functionals.J_T_re,\n", " show_g_a_int_per_pulse=True,\n", " unicode=False,\n", " ),\n", " check_convergence=krotov.convergence.Or(\n", " krotov.convergence.value_below(1e-3, name='J_T'),\n", " krotov.convergence.delta_below(1e-5),\n", " krotov.convergence.check_monotonic_error,\n", " ),\n", " iter_stop=1000,\n", " parallel_map=(\n", " qutip.parallel_map,\n", " qutip.parallel_map,\n", " krotov.parallelization.parallel_map_fw_prop_step,\n", " ),\n", " continue_from=opt_result\n", " )\n", " opt_result.dump(dumpfile)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Krotov Optimization Result\n", "--------------------------\n", "- Started at 2019-04-12 17:45:43\n", "- Number of objectives: 2\n", "- Number of iterations: 398\n", "- Reason for termination: Reached convergence: Δ(('info_vals', T[-1]),('info_vals', T[-2])) < 1e-05\n", "- Ended at 2019-04-12 18:20:47 (0:35:04)" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "opt_result" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "ExecuteTime": { "end_time": "2019-08-18T13:56:01.674651Z", "start_time": "2019-08-18T13:56:01.667297Z" } }, "outputs": [], "source": [ "def plot_convergence(result):\n", " fig, ax = plt.subplots()\n", " ax.semilogy(result.iters, np.array(result.info_vals))\n", " ax.set_xlabel('OCT iteration')\n", " ax.set_ylabel('error')\n", " plt.show(fig)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_convergence(opt_result)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Optimized pulse and dynamics" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We obtain the following optimized pulse:" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_pulse(opt_result.optimized_controls[0], tlist)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The oscillations in the control shape indicate non-negligible spectral broadening:" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "def plot_spectrum(pulse, tlist, xlim=None):\n", "\n", " if callable(pulse):\n", " pulse = np.array([pulse(t, None) for t in tlist])\n", "\n", " dt = tlist[1] - tlist[0]\n", " n = len(tlist)\n", "\n", " w = np.fft.fftfreq(n, d=dt/(2.0*np.pi))\n", " # the factor 2π in the normalization means that\n", " # the spectrum is in units of angular frequency,\n", " # which is normally what we want\n", "\n", " spectrum = np.fft.fft(pulse) / n\n", " # normalizing the spectrum with n means that\n", " # the y-axis is independent of dt\n", "\n", " # we assume a real-valued pulse, so we throw away\n", " # the half of the spectrum with negative frequencies\n", " w = w[range(int(n / 2))]\n", " spectrum = np.abs(spectrum[range(int(n / 2))])\n", "\n", " fig, ax = plt.subplots()\n", " ax.plot(w, spectrum, '-o')\n", " ax.set_xlabel(r'$\\omega$')\n", " ax.set_ylabel('amplitude (arb. units)')\n", " if xlim is not None:\n", " ax.set_xlim(*xlim)\n", " plt.show(fig)\n", "\n", "\n", "plot_spectrum(opt_result.optimized_controls[0], tlist, xlim=(0, 40))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Lastly, we verify that the pulse produces the desired dynamics $\\ket{0_l} \\rightarrow \\ket{1_l}$ and $\\ket{1_l} \\rightarrow \\ket{0_l}$:" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "opt_dynamics = [\n", " opt_result.optimized_objectives[x].mesolve(tlist, e_ops=[proj0, proj1])\n", " for x in [0, 1]\n", "]" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "ExecuteTime": { "end_time": "2019-08-18T13:56:03.943229Z", "start_time": "2019-08-18T13:56:03.727168Z" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAEGCAYAAABo25JHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8li6FKAAAgAElEQVR4nOydd3xkV3n3v2f6aDSjXle7qy3avmt7iwvggjG4AIZQjA2EmBoIJBDykpA3eUNoCQmQhBaCgdBjx9hU44p7wWuv1/b2XrWrXqfX8/5x7h2NpKmaGY3K/X4++sxq5s69R9rRfc7Tfo+QUmJgYGBgsHgxVXoBBgYGBgaVxTAEBgYGBoscwxAYGBgYLHIMQ2BgYGCwyDEMgYGBgcEix1LpBRRKY2Oj7OzsrPQyDAwMDOYVL7zwwqCUsinda/POEHR2drJr165KL8PAwMBgXiGEOJ3pNSM0ZGBgYLDIMQyBgYGBwSLHMAQGBgYGi5x5lyMwMCgF0WiU7u5uQqFQpZeSFYfDQUdHB1artdJLMVjAGIbAYFHS3d2N2+2ms7MTIUSll5MWKSVDQ0N0d3ezYsWKSi/HYAFTttCQEOK/hRD9Qoh9GV4XQoivCyGOCSH2CCG2lmstBgZTCYVCNDQ0zFkjACCEoKGhYc57LQbzn3LmCH4IXJfl9euBLu3rQ8C3y7gWA4NpzGUjoDMf1mgw/ylbaEhK+YQQojPLIW8CfiyVDvazQohaIUSblLKnHOt5/tQwTx4dxG4x4bCa2bqslouW1ZXjUgYGBgbzikrmCJYAZ1O+79aem2YIhBAfQnkNLFu2bEYX2316hK8/fHTSc39x9Wo++bq1MzqfgUEpuP/++/n4xz9OPB7nAx/4AJ/+9KcrvSSDucTB38K+u2G8BxJReOUnYMONJb/MvEgWSylvA24D2L59+4wm6fzplav44OUricQT+MMxvnjvQb7+yDEuX9PEjs76kq7XwCAf4vE4H/3oR3nooYfo6Ohgx44d3HjjjWzYsKHSSzOYCzz5VXj4c+Buh4ZVYHOBxV6WS1XSEJwDlqZ836E9VzZMJoHDZMZhNfNPf7SZRw/1870nTxiGwKAiPPfcc6xevZqVK1cCcPPNN/PrX//aMAQG0H8QHvkibHwLvOW7YC7vrbqShuA3wMeEEHcAlwBj5coPpMNhNfOWrR38+A+n8IVjVNvnhXNkUAY++9v9HDg/XtJzbmj38Jk3bsx6zLlz51i6dGIv1NHRwc6dO0u6DoN5ys7/ArMNbvhK2Y0AlLd89HbgD8BaIUS3EOL9QogPCyE+rB1yL3ACOAZ8F/izcq0lE69Z30w0LvnD8aHZvrSBgYFBesI+2HsXbPwjcDXMyiXLWTV0S47XJfDRcl0/H7Yvr8dpNfP0sUFeu6GlkksxqCC5du7lYsmSJZw9O1Ev0d3dzZIlSyqyFoM5xNEHIOKDi949a5dc1FpDNouJTUs87OkerfRSDBYhO3bs4OjRo5w8eZJIJMIdd9zBjTeWviLEYJ5x7GFw1MKyS2ftkovaEABs6ahl//lxovFEpZdisMiwWCx885vf5Nprr2X9+vXcdNNNbNxYGe/EYI4gJRz7Pay6GkzmWbvsos+QbumoIRxLcHzAx7pWT6WXY7DIuOGGG7jhhhsqvQyDuULfPvD1weprZvWyi94j6Gp2A3C0z1fhlRgYGCx6jj6kHlddPauXXfSGYGWTC5OAY/2GITAwMJhl+g7A+Zcmvj/yALRuAU/brC5j0RsCh9XMsvoqwxAYGBjMLsMn4TtXwG1Xwbnd4B+C7udg7fWzvpRFbwgAVje7OdrvrfQyDAwMFhN7f670g5Dwu0/Cwd+ATMCabKLN5cEwBEBXSzUnB/1G5ZCBgcHsceopaN0Mf/QdOP8i3PMJaNkM7RfN+lIMQwCsbqomGpecHgpUeikGBgaLASlVhVDbBbD5JlhzPVhdcO0XoAIzKAxDAKxurgaMhHElueuFbt77g+c4Pxqs9FJmjfe97300NzezadOmSi/FYLbx9UNgCFo2gckE77wD/vYsrLyqIssxDAGwSjMExwcMQ1AJRgMR/u8v9vLo4QG+9eixSi9n1rj11lu5//77K70Mg0rQv189Nqcozc5iA9lUDEMAVNsttNU4DI+gQvz6pfNE4gmW1jt54uhApZcza1xxxRXU1xsS6IuS0TPqsX5lZdehseg7i3VWN1cbhqBCPHl0gBWNLt62rYMvP3CY8VAUj8M6ewu479PQu7e052zdDNd/qbTnNFg4jJ4FYQb37PYLZMLwCDRWNVVzfMBHIjGjAWgGMySekOw8OcylK+tZ1aRCdKcHjaS9wQJn7Cx42mdl1kA+zI1VzAFWN1cTiMQ5Pxako66q0stZNJwc9OENxdi+vJ62GgcAveMhNlMze4swdu4Gs83oWahZmvu4WcLwCDS6tITx4V6jsWw2Odijft/r2zy06oZgbPFUDhksUsa6odYwBHOOzR01mE2CF8+o2QT/+/wZ/vm+gwQj8QqvbGFzuNeLxSRY1eyisdqO2SToHQ9Velmzwi233MJll13G4cOH6ejo4Pvf/36ll2QwG8RjMH5uTnkERmhIo8pmYUObh12nh3nq6CB/c7dKHjosZv7ytWsqvLqFy6FeLysaXdgtqnSu2W2ndyxc4VXNDrfffnull2BQCbw9IONQ01HplSQxPIIULl1Zz7MnhvnE/75ER52Ty1Y2cNcL3UYCuYycGfazotGV/L7F46BvkXgEBouU8fPq0TAEc5O3b1eu2qAvzOfetJF37FjKudEgLxujLMuClJIzwwGW1U8k5xtcNkYCkQquysCgzPj61GP13JmTboSGUljT4ubuj1xGIBLn8q4mhv0RhICnjg5y0bK6Si9vwTHgCxOKJljWMGEIPE4rR2ZJCVZKiaiArkshSGl4owuOOWgIDI9gCtuW13N5VxMA9S4bG9s9PHl0sMKrWpic0UT+Uj2CGqeVsUC07Nd2OBwMDQ3N6RutlJKhoSEcDkell2JQSnz9IEzgaqz0SpIYHkEOLu9q4rtPnMAXjlFtN35dpeScJjC3pNaZfM7jsOANx0gkJCZT+XbrHR0ddHd3MzAwtyUtHA4HHR1zJ5ZsUAJ8fVDVWFFtoakYd7YcXL66kW8/dpxnjw9xzYa548otBAa8qjqo2TOx4/U4rUgJvkisrDITVquVFStWlO38BgYZ8fXPqbAQGKGhnGzrrMNhNfHUMSM8VGr6vWHsFhMex8R+xONUN//xYPnDQwYGFcHXB9XNlV7FJAxDkAO7xcwlKxoWlSrmbNE3HqLZY5+UsNW9gDHDEBgsVAyPYH5yeVcjJwb8yZi2QWnoHw/T7J6cCPU4lXcwHoxVYkkGBuVFSvD3Q3VTpVcyCcMQ5IFeRfSU4RWUlH5viGa3fdJzNXpoKGR4BAYLkNAoxCOGRzAfWdNSTbPbbpSRlph+b3iaIdBDQ0aOwGBB4utXj4YhmH8IIXhVVyNPHxs05CZKRCgaxxuKTaoYAqiyqZK6gCH2Z7AQSTaTGcniecnlXY2MBKIc6Bmv9FIWBP3jqnS0aYpH4NJ6NQxDYLAgWYwegRDiOiHEYSHEMSHEp9O8vkwI8agQ4kUhxB4hxA3lXE8xbF+uZsu+dNbQHSoFAz4lLDfVENgtJoSAQMRIFhssQHRD4FokyWIhhBn4FnA9sAG4RQixYcphfw/cKaW8CLgZ+M9yradYOuqc1LtsvGwYgpIwqslI1FfZJj0vhMBlsxgegcHCJDis5CUctZVeySTK6RFcDByTUp6QUkaAO4A3TTlGAh7t3zXA+TKupyiEEGzpqGHvubFKL2VBoBuC2qrp3cNVNrPhERgsTAJDygiY5lZUvpyrWQKcTfm+W3sulX8E3i2E6AbuBf483YmEEB8SQuwSQuyqpDZMV3M1Jwf9xEuYMO4ZC/LEkYE5LX5WDka1qqBap23aa8oQGB6BwQIkMAxVDZVexTQqbZZuAX4opewAbgB+IoSYtiYp5W1Syu1Syu1NTZWLra1sqiYcS3C+RI1lgUiMN3/rad7z38/xg6dPleSc84WxgJL4djumy11V2Sz4w4YhMFiABIehqr7Sq5hGOQ3BOSB1KGeH9lwq7wfuBJBS/gFwAHNHm3UKq5rUgPvjA76SnO9/dp6hbzyMEPA/z50pyTnnC6PBKDVOa1qFUSM0ZLBgCYyAc3EZgueBLiHECiGEDZUM/s2UY84ArwEQQqxHGYI5276rj1Q8OegvyfnueqGbi5bV8nc3rOdYv29RSViMBqLJLuKpVNmNZLHBAiUwtLhCQ1LKGPAx4AHgIKo6aL8Q4nNCiBu1w/4K+KAQ4mXgduBWOYeD5Y3VNmwWEz1jxc/UPdbv5VCvlzdd0M6rupQT9OzxoaLPO18YDUapzWQIrIZHYLBACQ5D1dybdljWeQRSyntRSeDU5/4h5d8HgFeWcw2lRAjBklpnSXbuv325ByHghs1t1Lts2C0mDvUunma1sUCEmqrpiWKAKruRLC4FkViCXaeGuWhZHU7b3BmCsmiJBCAWWnShoQVJW42DniINgZSS3+45z6UrGmj2OLCYTaxpcXOoN/us3lg8wefvOcDf/mIPoej8vlGOZfEIjD6C0vCZ3+znnd/byft/9DyxeKLSyzEIaB7/YgoNLVTaa52cHy0uNHSgZ5wTA37ecEFb8rl1rW4O5pCv+OEzp/j+Uye5/bmzfP+pk0WtodKMBqNpewhAJYv9YSM0VAyBSIy7d3fjspl55vgQv3xxap2GwawTHFaPi6xqaEHSXuOgzxsqaof125d7MJsE129KMQRtHgZ9keT4xqlE4wm+88QJLu9q5OLOeu7Z0zPj61eaREJm9QicNjPhWMIQ+CuCvd1jRGIJvvnOrWxa4uFrDx8lEjO8gooS0AyBERqa/zR5HEgJw/7IjM/x4P5eXrGqgXrXRIx8fasbIGOe4JFD/Qx4w7z3lZ1cvb6Zgz3j9IzNzyojbyiGlGTMETitKp4dihnhoZlypE+FGde1ufmr162leyTIL3Z3V3hVi5ykR2CEhuY9jdrNe9A3M0NwatDPiUE/V6+bLEPb1aIMwZG+9D0K9+/rpbbKyhVdTbxylaoyeuH0yIzWUGlGg+p3l80jAAgaeYIZc6TPh9tuodXj4Ko1TWxs9/DdJ08YXlYlCRihoQVDo6aWOeRPH8LJxaOHlfrgVEPQWG2jrsrKsf7pCeNoPMHDB/u4Zn2LSiy3VmMxCfafn59VRtl0hgAcmkcQnOcJ8UpytN9LV0s1QgiEEHzoipUcH/AnP38GFSAZGpp75aOGISiQhqRHMDND8MzxITobqlje4Jr0vBCCrhZ3Wo/g2RNDjIdiXLuxFQC7xczq5moOzFdDEMxuCPThNPO9MqqS9IyF6KirSn5/w+Y2Wjx2bn/ubJZ3GZSV4DDYa8Cc/nNfSQxDUCAN1ZpHMMPQ0J7uUS5aln5H0NVczZE+7zQBugf291JlM3N514T6xoY2D4dzlJvOVUYD6ndXk0ZwDiZyBEYJ6cyQUtI/HqbFMzHrwWo2cf2mNp44OmBUZFWK4Ag455b8tI5hCArE47BgM5tmlCPoGw/RNx5m85KatK+vaXHjDcXoG5/wNhIJyYP7+7hyTVMyZAJK7qJ3PDQv4+hjOTwC3RDMx59tLuANxwhG4zS7J48BvWZ9C5FYgudPDVdoZYucsBfsntzHVQDDEBSIEIKGatuMQkN7u9Usgy0d6Q1BV4sStTuakid48ewI/d5wMiyk06npHp0aKo3u0Wyi5wgyaQ05bEaOoBj0MaDNnsnT3y5cVotJwItnjOFKFSHsBXt1pVeRFsMQzICGahtDMzEE58YwCdjQnn5XsEarHEoN+dy7txeb2cRr1k9OLusCeKdKJIA3m4wGolTbLVjN6T9+yfJRwxDMiH6vanic6hFU2y2saXGz+8z8rDab90R8YDMMwYKhsdo+o9DQ8QEfS+urqLKll3hqrLbTVuPgZc1zkFJy394erljTiNsxefesewQn5qMhCEYyegOQEhpaYIYgEkvwhXsO8PDBvrJeJ5NHALCxvSbZY2Awy4S9YHdXehVpMQzBDGhw2WfkEZweCrCsvirrMVuX17Fb6w946ewo58dCkzqQdartFprc9nnpEYxlkaCG1D6ChdUJ+9uXz/O9p07ygR/vKqu3M6Il4xtc05PxK5tc9I2HjYRxJQj7jNDQQqKx2sagP1LQeEkpJaeG/HROKRudyo7ldZwbDXJy0M+du7qxW0xcs6El7bErGlzzMkcwlkVnCFIMwQLzCH6veQJSUtbwzHhQ3eSr7dM9z1LP1DAogIgPbIZHsGCoc9mIxBIF3ahGA1G8oRjLG7J7BNduakUI+OYjx/jli93ceEF7xt1zZ2MVp4YCBa19LpBNcA5mP0cwFojyX48fx1fGXbKUkmeOD3HtRmXU9cKBcjAWVDkYS5ocjGEIKkQioQyB4REsHOo1jZxC9IZOD6sb9tRGsqm01Th5zbpm7t7djUDw8Wu6Mh7b2ehiwBsu6w2sHKjpZOl7CEDVvFtMYtaG03zp/kN86b5D3LWrfM1WA74wY8Eol65soLbKmvw8lIPxUBRPmlnQQDI02T0yP3Wq5i1RzfAayeKFQ50Wex3xR/N+z2kthNOZwyMA+Ne3XcAnrunipx+4ZFJ36FT0MNPpeRQeklIyFoxk9QhAeQWzlSPYd07tzl88W76yymNax3hXs5vl9VWcLachCEbxZJr1YLfgtlvoGy9+yp5BAYS1BL2RLF441LvUH9lwIH+PQP/DX5ojWazOb+MT16xh2/LsmiS6ITg1OH/CQ4FInGhcZhSc03HYzLOSI5BScnxA3aTLuUs+pl1jdXM1yxpcnC5jSG8siyEAaKlx0FuCcasGBRDWpGMMQ7BwqKvSPYL8DUHveIi6Kuuk7uBi0fMN8ylhnEtnSMdpNc9KjmDAF05KWXSPlO/mfHoogMNqosVjZ3l9FedGg2WbGjYeiuFxZP79tnoc9BoewewS0TwCIzS0cNDnCBSSI+gbD9PiceQ+sABc87CENJfOkI4KDZXfEOg196uaXAz5CqsEK4SesSDtNU6EELTWOIgnZFEzLbKhQkOZx5G3eBz0G4Zgdkl6BIYhWDB4HFZMYqJeOx/6x0M0l9gQgCohLWeYodSM5ZCg1pmt0JDehbuu1UMsIfGWKfHeMxairVb9/zdWFzfTIhcqWZzFI6ix0+8NG7MJZhMjR7DwMJkEdVW2gnZ0veMhWtN0ehbL8oYqTs7D0FC2hjKAKussGQLNI1inTYgrJNxXCD2jIdpqnADUu9TnoBweQTwh8YZiWX+/jdV2Ytq40FIxGojwru89y6u/8pjRuZyOiOYRGKGhhUWdy5a3RxBPSAa8pQ8NAaxqrmbAG06GXOY6+u+sLsOYSh2nbZZCQ9qM6DWaISjHzTkWT9DvDdFWo/7/GzSPYKbDjbLhCymPJluyOBnaLOFn5ou/O8hzJ4fpHQvx0Z/tJm54G5MxPIKFSX0BHsGQL0xCUpbQ0LrkrOP0u7Bzo0Ee3N+bdvJZJcg1nUzHOVsegVcl8fWbYzl6Mvq96v+/VTMEjZpHUI7Q0HhI/X4z9RHAzIodstEzFuTu3d388aWdfPntWzja7+OhA70lOfeCYY57BJk/LQZZqXNZ8y7b1Cs0WtylDw2tb1NKpod6xrl05cRQbCklX33wCP/52DH0zdkbtrTxL2/dgiuN9MBsMeKP4LSac1ZPOWYxWdzsduDShADLocGjDzFq1IYaeZwWLCYxI72qXOjhnrw8ghIZgl+/dJ6EhPdctpyl9VW01Rzk57u6uS6NRtaiJewDYQKrs9IrSYvhEcyQepctb9daHzSj7whLSbPbToPLxp5zkyULvvLgYb756DHesrWDX/zZK/jENV3cu7eH9//oeSKx0pQthqLxgks8RwJR6nJ4AwBOm2lWykdHA1HqXbakLo8vXPprDk8RgStmpkUuxvPIwSQbIksUGrp/Xy8XLK2ls9GF2SR44wXtPH5koGz5lnmJrjwqRKVXkhbDEMyQuiobI3kKz+ldnOXIEQghuHhFPTtPDCfX8tTRQb716HFu3rGUL79tC1uX1fGJa9bw1Zsu4NkTw3zunv0Zz5dIKOnr1/3741zzb49nDCmNBiJc9eXHeO2/P15QOGU0EKE2R34AZi80NKp1ObvsykMph0cwrOUC6lPUQOuqbMkwWSkZD2UWnNOZkEgp/vrD/ggvd49y9dqJeRk3XtBOLCG5b58RHkoyhwXnwAgNzZh6ly1ZbpitVA9U6ahJpJcFLgWXrmzgvn29nBz0U++y8X9+/jKrmlx85o0bESk7kD+6qINDPV6+88QJLlxax9u2dTDij/BfTxznoQN9jAdjhGNxvKGYqqv3R/j7X+3jjg9dNu2ad73QnQx5/fbl89xy8bK81joSiFDnysMj0AyBlHLSz1BqRgNRzRDoHkH5QkMNronQoNthwRsq/bV0faZs4T+nzYzDaiqJR/Dk0QGkhCvXNiWf29juYWWTi3v2nOedl+T3uVjwzOHpZGAYghmTmnDLZQh6x0M0VtvTqkGWgms3tvK5ew7w4z+c5sxwgCF/mO++55VJOedUPnXtWvZ0j/F/f7GX508O89DBPkYDEa5c00RrjROTgItX1POGLe1854nj/Ov9hzk7HJgmjfHE0UHWtFTjDcV48uhA3oZgNBClrTZ3nNRpsyAlhGOJknZjpyKlZDSoBPDsFhNmkyiTRxDBYhKTmrw8DmtZunv1LmlXmv/7VOqrbEkDVQxPHh2ktso6aQ63EILrNrbynSdO5O0BLnjm8HQyKMAQCCHMQEvqe6SUZ8qxqPlAasItl6Jo33i4LPkBndYaB2+6oJ0fPnMKgM+/aSObM8xFtphNfPvdW/nUXXv45Uvn2L68jn944wbWtU4fn/nGLe386/2HuX9fLx+8YmXyeSkl+8+NcfU6FQ548EBf3jv3kUAkvxyBVRnNYCReNkMQiiaIxBLUVlkRQuCymctmCOpctkm/H4/TypEyVHLpCfZ0m4BUPE5rssKoGJ49McSlKxowmyb/379uYyv/+dhxHjnUz1u2dhR9nXnPHJ5OBnkaAiHEnwOfAfoAPdMogS053ncd8DXADHxPSvmlNMfcBPyjdr6XpZTvzHfxlaSQhFvfeCirimgp+PybN9HV4qaruTrjIBud2iob333P9pznXFpfRWdDFTtPDk8yBAPeMEP+CBvaPVjNJn7+QjfnRoM5f8a41sSUq4cAJg+nyS69N3P0/ztdAK/abilLsnjIH5kWFixXaMivhYYyjUPV8TitycTyTDk3GqR7JMj7X7Vi2mtbltTQ7Lbz0IE+wxCAqhpyt1Z6FRnJ1yP4OLBWSjmU74k1D+JbwGuBbuB5IcRvpJQHUo7pAv4WeKWUckQI0Zz+bHOPQhJufeOhnEqixeKyW/jIVatKft4dnfU8dLCPREJi0nZ9+8+PA2r+rR7tOtTjzWkIxoNREpK8QgWOWZhbPLWnwWW3lM0jqJ9iCDwOK95QrOQ5kGAkngxzZcPjsHJutDi11Z0n1O3gkhUN014zmQSv3dDCL188RyhaPq9u3jDHk8X5Bq3PAoWOVLoYOCalPCGljAB3AG+acswHgW9JKUcApJT9BV6jYugJz1wlcuFYnJFAlNYyVAzNBtuW1zEaiE4apHKgRxmC9W1u1rSoD/fhPGQFJrqK80sWA2XtJRgNThbAc9ktyR11KdFDQ6l4nBbiCZmM6ZeKQCROVY6wkH79Yj2CZ08MUeO0Jpsap/K6ja0EInGePjZY1HUWBAskWXwCeEwI8TsgWfwspfy3LO9ZgjIgOt3AJVOOWQMghHgaFT76Rynl/VNPJIT4EPAhgGXL5kYVQrXdgtUscvYS6Fo25SgdnQ22dNQCsKd7NDnmcP/5MZY3VOHWkuQddU4OasYhGyPaDryQ0FA5ewmmCuBVl8kjGPKF04SG1DXHQ9GSNvj5I7GcYSFQHkGxOYKdJ4e5eEV90lOcymUrG3DZzDx6uJ/XrM8erlzQSDnnk8X5egRngIcAG+BO+SoWC9AFXAXcAnxXCFE79SAp5W1Syu1Syu1NTU1TX64IQohkL0E2dHXL5jIIzs0GXS3V2C0m9qTM2D1wfpwNbRPJ5XWtbg5nkLhIRf9dTd0dp8M5G6Gh4NTQkBl/iXME0XiC8VAsbWgIJgbNl4pg3h6BFV84NmMF0t6xEKeHAlyyoj7jMTaLiW2d9Tx3cnhG11gwxEKQiM3/ZLGU8rMAQohq7XtfHm87ByxN+b5Dey6VbmCnlDIKnBRCHEEZhufzWVelqXfl1hvqHZvfHoHVbGJjuyc5bN0XjnFqKMDbtk0kALta3Dx2eIBoPIE1S4msLvDWnIfURjJZXM7QkO4RaKGhcjSx6QnhqZ2+eilpKSp3Usk7NORQ5bnecHal0kzsPKnyA6myJum4ZEU9X37gMCNpwmOLhjk+nQzy9AiEEJuEEC8C+4H9QogXhBAbc7zteaBLCLFCCGEDbgZ+M+WYX6G8AYQQjahQ0YkC1l9R6qpyK5D2jKmEXHvN3NQYyYctHbXsOz9GPCGTIaAN7RMeweqmamIJmXMugu4d6Zo72ZgdjyCCzWLCoZWqOsowFc2r3ejdU3pNytXAFojEcpaOwoQW0UzzBM+eGMLtsCS1rjJx0VLl4O87X2iKcQExx6eTQf6hoduAT0opl0splwN/BXw32xuklDHgY8ADwEHgTinlfiHE54QQN2qHPQAMCSEOAI8CnyqkMqnS5OcRhHBazVknRs11tnTUEIjEOT7gY7+mabShbaJPoatFfcBzKZwOeMPUu2zYLLk/drPhEYwFotQ6rcmqHbul9PpGukfgnqIGqovclfrnC0TiyXNnw5OSo5gJO08Mc3Fnfc7qJN1QHDifO4e0YJnj08kg/2SxS0r5qP6NlPIxIUT2Lip13L3AvVOe+4eUf0vgk9rXvKPOZU0mQDPRM6506Mspk1Bu9ITxy2dHefHsKM1uOy0pOY9VTbohyB4x7PeGacrDG4BZ8gg0eQkdh9VMuESCfDrjSY9g8p+aHr4pdXI6EInn6RFooakZ5Cj6x0OcGPRz88VLcx5b57LRXuNIVpotSub4LCL9NQAAACAASURBVAIooGpICPH/gJ9o37+beRTCKRf1VTZGAxHiCZlxZ9Q7FiprV/FssLLRhdth4bmTw+w8McwlKxsmGTaX3UJ7jSOnIRjwhvNOms9KH0EwkswPANg1Q1DK2n7dI5gqQ6IbgtKXj8byzBHM3CN4Vkv+5soP6KxtdXOkL5+04gIlOYtg7hqCfEND7wOagF9oX03ac4uaepeNhMzeXbwQDIHJJLhmfQs/14TmLk5TKbK6xc2xgRwewXiIpjxnMtgtJoSAUJmTxTUpHoFdC1mV0ivIGBrScgTl6SPIvb+rKSJHsPPEENV2y6TKsWx0Nro4PeTPS6l3QZL0COZuaCgvQyClHJFS/oWUcqv29XG9CWwxo4un9YymFw+LJyR946F520yWyls1mQCrWXDDpumt8qubqjne789YjhiOxekZD7E0T6kNIUTZpajHgtGkvARMeCHhaCkNQfpksd1iwiQm1EJLgZSygKoh3SMo/Po7Tw6zvbMubxHFFY0uApF4smps0THHp5NBjtCQEOI/pJSfEEL8FqUFNAkp5Y1p3rZo0CuBzo8F04q8DfnCxBIyOat2PvOqrkZ+cOsOmj12GtLE+Vc3VxOMxjk3GpymVApwbiSIlLAszWuZKLchmJ4jUDe2UCxODYWXVKYjk0cghKDKZilp30IkniCekHkZgmqHniMozCMY9IU51u+bVD6ci05NlPHUoH/ellEXxTwoH83lQ+o5ga+UeyHzkbZa9aHuyaDZcn5MeQqt87h0NJVXr8ssBbW6WUsYD/jSGgJdomJ5QwGGwGYueehEJxSNE4zGJ+keOSyl72b2hqI4rKa0/RVVNjPBaOk8Ar0CKZ/QkNkkqLZb1GjLYw/DgV/BDV8FS/Za/50nVH4gWyPZVHRDcHo4wCV55hUWFOF5Xj4qpXxB++eFUsrHU7+AC8u/vLlNg1YKqd/wp3J6yA8UdvObr3RphuB4hoTxGa3HoFCPoFwSE+lGOtp1j6CkoaHYtLCQjhK5K93P508agvwE3jy6Aur//jHs/jEcuifne3aeHKLKZmbTkvQy5+loqVEeZG+Gv5MFT8QHVheY5u5AyHxX9idpnru1hOuYlwghWFLr5NxIeo/g1GAAIQq7+c1X6lw2Gly2jJVDh3rH8TgseSeLQXkE5eojmCovARMeQThWSo8gNi0spOO0ltbjCWr5hnzKR0E1lUUC4xBVGxZOP5PzPTtPDLNteV3WDvKp2C1mGlw2eharIZjjgnOQO0dwC/BOYIUQIrUr2A0scgERxaqm6ozKm6eH/LR5HItGgndtqzspUT2V3adHuWhZXUFlmY4y5gimykvo14PSegTjoWgWj8Bc0mTxxHSy/KrC3Q4LTv/JiScGj2Q9ftgf4XCflxsvbC94ba01juTs7kXHHBecg9w5gmeAHqAR+GrK815gT7kWNZ/Y0ObmkUN9aTXXTwz6c04vW0hcuLSW2544Me13MRaMcqTfy/WbCxvM4bSakzv3UjOqD6WpShcaKq1H4MngEVTZLCX9+fQwU/6hIStVAz3qm/pVMJy9Nei5pL5Q/vkBnbYaB+cyVNcteOb4dDLInSM4LaV8TEp52ZQcwW5NQmLRs77NQ0LC4V4vd+46yxd/dwBfOEY0nuBgz/gkTZ6FzoVLa4klJHvPTdaV+emzp5ESrlpb2Nwhp9Vctj6C0TQ5gonQUGnLRzOFhqps5mQ4pxToied8Q0NuhwV3RBsBsuIKGOuGaOab9a5TI9gtJjYvmSYQnJMWj4PesRkMwgmOwoP/Dw7mzl/MWcK+OW8I8h1VeSnwDWA9SoraDPillIvnLpeBbcvrEAI++ONdyTrpYX+UW1/RSTiW4KJlhf/RzFd2dNZjEvDEkQF2dNYTiSX4/D0H+Mmzp7lqbRMXZJijnAmnrXyhoamzCCClfLTEHoHbnj40VOry0WRoKM/5Bh6nFUd0VH2z9BJ44QcwchKa16c9/qWzo2xaUpOXVtRU2mocjASihU8re+gfYPePQJjg/Q9BR+4Rq3OOiBc8c3tcZ77/o99EzQs4CjiBD6DGUC56mj0OXr+5jX5vmBsvaOcjV63i7t3dfO1hFW+9aFl5R1TOJepcNrZ31nP/vl7iCclf/fxlfvLsaT54+Qpu++PtBcs2lNMQjAYjyRJKnYkcwewki0ueI9CMijPPG63HYcUZG0fa3FCvzaQe6057bDSeYO+5MS5cOrONjV5CXVCeIB6D/b+CdW+A6la4/9NqyEulCI5CaAaaSWHfnE8W523apZTHALOUMi6l/AFwXfmWNb/4t5su5L6PX85/vONCPv6aLjrqnPz+YD8XdNSwpHZh9BDky9u3dXC038frv/4kv335PJ++fh1/9/oNM9pFOq1lrBqaojwKpZeYiMYTBKPxjMniUvdJBJKD6/MPDdUIH9JZC5429aS3J+2xh3q8RXm4enf9+ULyBOdfhPAYbHorXPnX0P08HH1wRtcvmrAXvrIGfvb2wt8bmfuhoXz/OgPaTIGXhBD/KoT4ywLeu+CxWUysb/NgMgkcVjPfftc2bt6xlK/edEGllzbrvGVrB5d3NXK038enrl3Lh69cNeNz6Z3F5dCoGQ1O1hkCJToHpfMIfBm6inVcNgvhWIJYvDSGJxAtPDRUg4+YrVbtuAHG0xuCF88qRZmZegS6Wq0+kyIvzj6rHldcARe9G+o64ZHPQ2IGv6+xc/CN7fDTt87s/aeehnhYrcnbV9h7w945XzWU7838j1F5gY8BftTksbeWa1Hznc0dNXzprVtY3Ty3dwHlwGwS/Ph9F3Pgc9fy0VevLupcTpuZeEISjZfeEOizCFLRcwSl8gj0oTPZksUwcQMvlkA4jhATnk0uPA4rdcJH1FajOoqrGsF7Pu2xL50dpbHaPmMPt9mtPIKBQvSGho6Dsx5cjWC2wlV/C7174eCvs7+vZw/cfgucemriuWe+DkNH4djv4fRTmd+bid696f+di3hMjapcCB6BVj0UlFKOSyk/K6X8pBYqMjCYhhACu6X43olySlGPBiOT5CUAbGZN8bRE1xvPIDinU1Xi4TSBSJwqqznvXIzbYaEWH2GrVvPhacvoERw4P86mJZ4Zy3N7nBZsFlNhwnPDxydyFwCb3w6Na+Dpr2V/331/A4fvhV9/VN2I41HYexesfi2YLHDiscJ/gKFjILTP9Ojp/N83D6aTQQ5DIITYK4TYk+lrthZpsDhxliF5qzPin+4RKANmKplHMDGLIHOyGEo3rjIYjVGVZ1gItNCQ8BOwaNVc7va0HkE0nuD4gI+1rTPf1QohaHbb6S8kWTx8crIhMJnh4g+p3MG5F9K/JzQOZ56Blk0wcgoO/gaOPwKBQdj+Pmjogr79hf8A4+dgyVZVvZQhj5KWeTCdDHKXj75hVlZhYJAGp03tU8qRMB4NTPcIoLRziyeURzMki3WPp0Q/nz+cnwS1jsduphYfx4V2g/e0wfnd0447OegnGpesK8IQADS77Qz48vQIoiFVwdQwJce05R3w0Gdg909gybbp79O7o6/8G1V6+uy3wdWkwl6rr4F9d8PZnYUv3j+o1lLdktFrSss8mE4GOQyBlLIAH8jAoLSUa1xlJJbAH4lTVzX9Bu2wlNIQpB9TqaM3fpXqevkOpdFxmyNYRAKf0LSw3G3gH4BYZJIK6UFtzOS61uLahprdDo7nGF6UZPQ0ICd7BAAOD6y+Go48oEpJp4aqBg5rF9sAl34E7vtr9f3lf6V+ppaNsO8uCI2Bo4C+lsAgLLtU/Y4y5FHSMg+mk0GeOQIhhFcIMa59hYQQcSHEIh5CajAbOG3lmeKVlJdwTfcI7NbSh4ZyJotL9PMFo/mNqdRxm9Tu3Cu1GQFurYTU1zvpuMO9XiwmkZxNPVOa3HaVI3jqP+CBv8veEzB0XD1ONQQAXdeqm3H/wemvDRwCs01VGG39E9WDsOo18Iq/UK/rHsbIqfwXnkhAYEglrT3tM/QI5ndoCAApZdKcCZUtehNwabkWZWAA5csRjGhdxbPnEaQPDZU6Ge4PxzManbTXTyjJB29cU4StblGPvgGoXZY87nCvl5VNrhn1gqTS7LaTCI7B7z+jntj0lvThHZjQPUpnCJa/Qj2e3QktGya/NngEGlaD2aK+bv7Z5NdrlqrH0bPQlmd5d3AEZEKFl9ytk6uRcjEPppPBDHoBpOJXwLVlWI+BQZJSx9B19BnTdWlzBKaSqY96QzHsFlPGG2ipDV0wzzGVSSJKfno0rv0eXE3q0d8/6bBDvV7WFhkWAmj22OkSKZ3LZ5/LfPDwCXDUQlUagbv6lVDVoBrMpjJwWFUWZUI3cGNn81s0qLAQKI+gqgFCo5DI8/9sHkwng/y1ht6S8q0J2A4sUilBg9lCTxaHQ0EVBqjrBGvxndrplEd17CX0CMazDKWBifLRUoWGAtFYQTmCpCGIaYagWjMEvglDMB6Kcm40yDsvWTb13QXT7HawypQSX+8/kPng4RPpvQFQeYGOi6cbkmhQhXy2vCPzeasawOJUHkG++AfUo6tx4t+hsfRGaioLIVmcwhtT/h0DTqHCQwYGZcNhNVODjyt//3oIdKs67jXXwuu+ML2apAD00FB9hhxBqco5vaFoxtJRKL3HEwjH81YeBZKGYDiqGSuXpg6b4hEc1WZtrG0p/kbW5LazSpwnbrJhXrojfYxfZ/i4utlnYukOOHIfBIYnbshDxwAJTVk8AiGgdimMncl/4X7NI6hqBKemHRYcyc8QzJM+gnxzBO8t90IMDKbitJq5xfwI1YFuuO5flDv/4k/hv6+FP3tW7dBmQLbQkN1iZsgXKWrdOtkE5wAcenlsCauGXAUZAhW2SBoCqwPsnokbH3CkTx1TTA+BTrPHzkrRw3jVUupaNsLLd6Sv/ImFVenolpszn6z9IvXY8zKserX6t14x1LQu+0LcbeDtzX5MKsnQUJMKV4ESoMuHsE8lr3PMgq40+VYNrRRC/FYIMSCE6BdC/FoIkcFvMzAoDU6bmUtNBxl2rYJLPwzXfhHee6/6I3z0izM+72hADZRPJ4esqoZKlyzOFhqymU2YTaIkHkEiIQlG48lKq7zQPILBSMp7XE2TQkNH+rw4reaSiCc2uOw0ijHGzQ0q7BMeVzvrqYyeUcnZbF5fmzYyveeliecGDquGr4Yc0ibuVvAVoBeU9AjqJ3sE+TAPppNB/sni/wHuBNqAduDnwO3lWpSBAYDDBFtNR+iuTqnuaNkIW26CPXdOxF8LZMQfSesNACXvLM7mEQghksJ6xaKfo6BkcTQAQH8oxVhVN0/EwYFj/T5WN1djMs1MWiIVs0nQaPIxjEfle0DNP5hKtoohnap6lfg9n2IIBg9D3Qqw5JiLXd2ihOPyFTP0DypPwGydMAShfD2CuT+dDPI3BFVSyp9IKWPa108BRzkXZmBg8nbjEUG6nWsnv3DhO9VO6/gjMzrvSIauYtCTxbNjCKB0c5kn5hUXHhrqD6e8J41H0NVSuh1tvfAymKieMATDaQxBth6CVNounO4RNK3NfLxOdYtSEs33Zh4YnKioKtQjmAfTySB/Q3CfEOLTQohOIcRyIcRfA/cKIeqFEIUPMDUwyIdxVWEyYG6a/PzSS1Sn5vFHZ3TakUA0bQ8B6B7B7ISGQB9XWQKPQDtHoaEhiWAsZpn4maubk8nisWCUvvEwXaVS0Y1FqJZ+emMuqF2unkvX2DV8QuUqqhqyn6/9QvX+4IgSlhs6nr10VMetSW77+rMfp+MfnMhHOfUcQb6hobkvQQ35Vw3dpD3+6ZTnbwYkYOQLDErP2DkA+pmSFDZbofOVhTX2pDASiLA+Q118qTqL4wmJP5K7watUw3f8BQ6lASDiJ2quAgRjwSjNbrOqHNJurMf6VehtTak8guAwAN1hF9iq1M48kyGoXzE9iTyVZJ5gj7q5J6K5E8WgjB2ohHE+HoSuMwTqs2erLswjyKe6qMLkWzW0otwLMTCYxrgyBL0izc6wfavSm5nBGMDRQDRtDwGo0FAklkBKOWPJZUgdSpPdI3CUaBynHhoqzBD4SFiVztCwP6JmBui9BP4BjvSpn6FkHoGWdO0OO4knJOa6zsyGQK8Kykaycugl8Gq7/Hy6hfUhPPkmjP0DSmdIx1mXf9VQxAd1y/M7toLkWzVkFUL8hRDiLu3rY0KI7J9w9b7rhBCHhRDHhBCfznLcW4UQUggxDydTG5SN8XP4RRVj8TTJv7YLAAl9+wo6ZSIhGQ1kTxZD8cNpxnMIzulUlcgjCCYNQYGhIasLYKJkVu8l8PVztM+H02qmo65E41YDQwAMJjwM+cIqTzAyRdcyHlVVQ7nyA6B22nWdcOZZpZpqrcozNKRLaeRhCBIJ5cmklio7awvwCOZHaCjfHMG3gW3Af2pf27TnMiKEMKMG3F8PbABuEUJsSHOcG/g4MANtWIMFzfh5hs2NSfG2Seg7v56XCzqlNxQjIaEuTTMZlM4Q5JpFoOMskUcw09CQ0LypQV0eWg+b+Ac42u8tWcUQkKzHH8atxOfqOmG8W6md6oyeARnPzxCAkpY+8RicfEJ9Jsx5GEK7ByyO/HoJUnWGdJx1izZZvENK+SdSyke0r/cCO3K852LgmJTyhJQyAtxB+m7kzwP/giFZYTCV4AhBSy1jwej019ytaveaWj6YB7oefmN1BkOg9RYUmzDOJTin47Sak0PniyE4o9CQH7NDGYIJj2BCZuJIn5eu5hLuZv3KIxiWbjWysq5T3WRTdX/0prB8dvYAa29QZbD9B1TXeT4IofIT+XgEqfISOo48PYJEYsH1EcSFEMnuDq2ZLNdfyhIgVdCjW3suiRBiK7BUSvm7bCcSQnxICLFLCLFrYGAg26EGC4ngKFGrJ9kJPAkhoHVTdr2aNAwmDUH6WvOkR1BkCWkuCWodp6005aoTHkFhoSGLvRqzSTDsn2wIgqM99I2HWVOCjuIkgSEkglGq1RD7ZC/BqYljBvXu4DwNwaqrYcObVc5oWwECCPk2laUKzuk4a/MrPY14AVnY3IMKke+n5lPAo0IIrdODTqAo2QkhhAn4N+DWXMdKKW8DbgPYvn176SeZG8xNgiPE7CsYHUnjEYDaNb740/QyBRnI2xAUGxoK5+8RlKShLFk+WmBoqHYpdVU2hvxaaMheDdYqhvvOA+vZ1F7Cm1hgEJy1xENm+sfDsLZTPZ9qCAaOqGRuvjdPIeCmHxW+lupmda1cpOoM6ThqlehcLkLayBZH8cqt5SZfj+Bp4DtAAhjW/v2HHO85ByxN+b5De07HDWwCHhNCnELNN/iNkTA2SBIaRTpqCccS6ROqDauV613ADNlBb/bQkKNkoaH8PYJShIb84Zk0lPnBVk1jtU2FanRcTfhHVA/HxvYS3sQCQ4iqRmqcVpUjqG4Fs326R5BPSWexVOfpEaQNDdVALKTGaWYjrBkC+8IxBD8GVqDi+d9A9Q38JMd7nge6hBArhBA2VM/Bb/QXpZRjUspGKWWnlLITeBa4UUq5q8CfwWAhEotANICpSjXwjAbThIcau9Tj4NG8Tzvoi3CdeRf1d7xBDUGfQqmTxfn0EYSiCRKJ4hzdQETNPrCYCxgxEvGBzUV7rZNzoyk3tepm4t5+ltQ6MybVZ4R/EKoa1BB7bwhMJlVaqRsCKdUufTYMgbtFhXdy3cy1SqdJzW16U1kur2ABegSbpJQfkFI+qn19ENiY7Q1SyhjwMeAB4CBwp5RyvxDic0KIG4tbtsGCR4vBml2qGWfEnyY8pCcUB/Nw8TWGvAE+a/0Rovs5ePjz0163WzSPoMi4/Xgois1iSp4vE3oop1jD4wvHcNkLyA+A5hG4WFLr5NxIYOJ5VzO24CCbl5Q4tq2Ne1xWX8WpQe16qb0Eo2dUXD2fprBiqc6zhNQ/MKEzpKMrkObKEyQ9grmfI8jXEOwWQiQ7KoQQlwA5d+5SynullGuklKuklF/UnvsHKeVv0hx7leENGCTRGnasmiFI6xG421RFxtCxvE/bOLiTFobA0wGnnlR16ynYrbpHUHxoKFfpKEzMJCg2PBSIxHHZCwgLxSKqE9fmoqPOyXgolqx0Ctrr8SRGuHBZbVFrmr7IIaiqZ02rm+MDPiKxxIQhkBLOaX/+mcZXlpJ8m8pS5SV08pWiXoAewTbgGSHEKS2e/wdghxBirxBiT9lWZ7B40crznJ4sHoEQqvW/AI9g5dhzRLHCVX8D8ci0sFIpQ0O5EsUw4REUmzD2h2O4CqoYmpilu0RrGDs3qmYYnwlXU4+XyzpLaAik1AxBI+ta3cQSklND/gk5am8vdO9S08NasgYbSoOnTT2On89+XGBooqRWJ9/QUFh7fQHlCK5D5Qiu1L5WaM+9gcnTywxAjdC791Nw7oVKr2R2kVK59/ESTPjS/shq61WDU89YMP1xjWsKyhGsC73M6aoNsESrSejbP+n1ZGioaEMQzWuQfKnmFgdmOK8Ym4uldUpm4tSgeu6Q14FZSDbWlWZSG6D+PxMxqGpgnabz9NKZUViqppD93699h+4X7iO2ZNvkMEy58GiV7LkMgX9guvidXtGUKzS00DwCKeXpbF/lXuS84uQT8IMb4Lnb4Md/pEbpLRSGT06aXjUJKeF3n4T/2AzffXXm4/JFi69We+pwWs30jGVI6jV0qWlW0QyGInWJwVHWJI7TU7tNJZpN1mkSFRN9BMWHhqrziNlPhIaKu17BOYIUQ7C21Y3FJNh7bgwpJbsG1ZoswSL/D1PRk66uRta0VNNe4+DBA71850g149LJu0wP0hE9yT3hraW7ZjacdVp3cQ5D4O2dUCvVceTrEYyrz5hl7iv2F1BiYJARXz8cvh9e/Bnc8S4Vrnjv/co1fP77lV5dadh3N3z9Qvj6Renrr7t3wa7/hjXXq+7QX35YdVbOFO1GJexu2mocmT2ChlWATK9rP4XQiWcwC8lo8yVq11m7DEYn72MmcgTFewQ1ztw7W30XX6zeUCBSYGgoqhkCqwuH1czaVjcvnx3jpbOjHPZq2kL+EjZvptTjCyF4wwXt/P5gP//8wDEO1lzBxuh+YsLKP59ey5mhQPZzlQIhwNOe3SOIhtSuv3qqIdA8gpw5gjHlDRQhXjhbGIagWPoPwje2we3vgF//mdo9vPtuWH4ZdF6ubqDznYgf7vkkNGux20e/MP2YPXeonc9bboPr/gmOPQTP/mdx1wSwuWirdXB+NJNHoI0lzCNhHDn2OGFpIdauhYVql8Lo2UnHlCo0NB6M4ckjR+AoWY4gTlUhyeKU3y/A1mV17D4zwjceOYbPog1f8ZXQECTLMFXO58+vXs0tFy/jL69Zw7b3fw0ufBfjN3ybfuq4e3d36a6bDc+S7IZAm8uQFKnTsdiUwF0+oaF5kB8AwxAUz4N/DyYzvOfX8MFH4SPPQE2Hem3NdTBwUMXN5zN7f64+9G/4N9jxfjjwm8mCXbGIMnjrXq92QNvfD+veAL//xxnPDEhNZrbVOHN4BORlCMzdO9kjV1Jfq+3oajom69yQmiwu7sY8FozicebeoVfMI5hiCN6ydQmBSJxHDvVzw2Vb1Gul9AimSDW4HVb++S2b+fg1XVhq2uDN/0n9jrdzyYp67t9XwGD5YvC0J6XO0+LVKoqmegSgdRfnUT46D/IDYBiC4vAPqnGJOz4AK6+CJVsnJ7pWXa0eTz1d/rXoN+PTz5T2vFLCc9+Dls1qMtiWdwASDv524pijD6oqny03q++FgBu/oUoDf/RG+Pl7C1YJJeJTHobZwopGF33j4aS08yTsbvWHqo83zEQ0SNXgPl5IrKVJl5eoWabKB2MTXbW6IShG/ycSSxCMxvPyCPQcQSk8gpnlCJQg2kXL6vjGLRfx6evX8aHXblWxbX+eE7zyIV1jVhquWtvM4T4vvZlyQqXE3QbjPZlDmD7NIE31CECFh/IpHzU8gkXA0YeUeuK616d/vWktWF1pO1hLipRw+81w1/vgB9fD7/5P/oO5c3HmWejbCxd/QN3gm9dD41o48OuJY16+XZXY6YYPVAjg/Q/CZR+F4w+rBHr/ofyvG/Yld6sbNJmDA+fH0x/bsDq3R3BuNyYZZVdiDe21WvJO99zGJkIRQghsRY6r1OvxPXnkCEphCCKxBJF4YkbzivXfMcAbL2jnw1euwmY1a7OLS5wjsDgnXS8dl3cpj+EPJ0qYqM6EZ4nqpcjk+ehebzqPwJmH3lB4fF4IzoFhCIrj3C5l8VszTEUymZVG+vnd5V3Hwd+om+2r/x4u/Sg8/124768zG4PAMDzyBfjZTXDfp+Ho7zO32v/hm8oN3vz2iec2vlmFfLy96lxHHoDNN03Xgq+qh9d9Af5sJwgTPPHl/H8mTQcHJvRuMhuCVbkNwdlnAdhnXjuRxK3RSginaBXZLaaiOovH9VkEeYSGnCUIDSUlqGdYNZSW6qYSh4aGc88gBta1eqiymXn5bB6ibsVSu0w9jmYofBw5pbzSqX0EoG7wCyhHUGBPusEkel6G1i1KMyUTS7bC899THazlqo9+4YeqU/byT6obrhDqBg5w3ZeUQdI58biq6PH2qN39ycdh57dV8qt2uUqENXTBRe9WDVeH7oEr/nryDWPTW+Hxf4H9v1LnTkThgndkXp+nTZ3vudsg9G/57ZJSdNyb3Q6W1Dr5w4kh3veqNFNTG1arGHRwRJUFpuPMTnpty3DaWiZGULr1pqKphsBcVLJ4XJufkFey2Fq8IfBpXckFC85BZkPgaipxaGgQXLkNgdkk2LykhpfO5jkKshhStaq0foZJDJ9QDW/p/r4dtbkl0LVO6vmAYQhmSiIOvftg+/uyH9d+kVIq7D8IbVtKv47gqLq5v/LjEzf812lVPX/4phrsfemH1U11/6/gpZ+qG+eHHlVriwbh5JOqysfbo+Llxx+GfXepczR0was+MfmaTWtVzuCFH6qfre0CZRCzsfYGVUV0+hlY9wTEbgAAIABJREFUe33unysyeRbxNeubueP5s6qDdurON1k5dAI60sgTJBJwdif7TJfQ6kmp6dbrw9N5BEWEhsYLCA1ZzSasZlFUaCgQ1gxBQR6BTyl/ZtqcuJonhsSUAk1wLh8uXFrLD54+RSSWwGYpY9CidhmYLJm9yaHjE8ZiKs5aCGbxWiJ+iAWny1PMUQxDMFPGz6n/6FwDNPQbZN/+8hiCk0+o0X5dr514TghlDJo3wMOfhZ/fqp63OOCyj8Gr/w5sqpsUqxPWvE596URDyhMIDMGWm9LvGi//S5WTALjpx7lrpZderGLEJ5/I0xD4J434e/2Wdn70h9Pcu7eHt29fOvlY/Y916Fh6QzB4BEKj7LR00VaTYgjsHpXDmTKy0G41FekR6GMq8/MA1ZSymRsCv/begrSGIv6Jz0A6XI2qP6aAWQ9Z8Q9mvqlO4YKltUTiCQ72jHPB0hLrHaVitkLdChhK05meiMPIycxTzxw1qk8oEZ/sceukm2MwhzEMwUzRh27XLs9+XP1KdQMucMh63px6Ut3MOqZMDhUCLnqXiu337oV4WGm45BOWsTpg89uyH7PxLcpgmCywId0E0ilY7MoQ5ls9FPZNhG6AHZ11rGxyccfzZ6cbgtrlqsolk6t+RlVSPRpYyetSDYEQyiuY5hGYi8wR6B5Bfn9eakpZ8R5BQdPJwj6wZZk+Vt2sPjOlSHhKqaqzqtNU36RBH4ZzoNyGANTfhC4F4+2DR7+onlv+ChUazaR7lNpdnC78k26y2RzGMAQzRe8NqMthCMwWFYsvlyHo3jW9bDUViy39LrlYdENTCM0bYP8v89tlpiSL1eUEt+xYxhfvPcjhXi9rU0coWmzQsgF6MswvPvYwcXcHxwZa+JOaKe3+7rbpHkGxoaFgFAsxaqKDTJ7NlJ5ip5T59NBQoaJzKaG3aegJUv9g8YYgNKaMSp6GoKPOidtuyVwcUEqWvwIO/Eolhn/5keSmAYtz4vV06Df4THkAv14uOz8MgVE1NFNGzwBCJWlz0bJR5RPyLemMhVV5Zq5GtGhI7fZnQ7a3FLRsVJUWuYS+QOnSTwlJvXVbBzazidufS/N7abtQDbKf+juOReDEY4y0XwEIWmuck193t07Tm1GGYOYeQcDv5W7bZ6n65iZ46t9zHu+0WYoMDWkeQSGhobA3+1D1lCH2RaOfI09DYDIJ1rW5OdAzG4bglerxjncpI/DGr8NFf6zCvqteM1FZNBXdEGTS1Eo32WwOYxiCmTJ6WnUmWvKY4NSyWbmK+f5R/fJP4c73wH9drioXMtG3T1XszBdD0LxePQ7mkYSM+KftWOtdNl69rol79/ZMmuh1djjA/5xrUkZmaoLz9NMQ8XGs5jIAOhumxMU9mkeQYkDs1uKqhjac/V8uMB2HpvWqTDeHOqrTaioqNKRPQ8s3JwEU4BGUoIRU1/xP15iVgQ1tHg71jBc9uS0nLRvV4Pu+fbDiSmUE3vg1uPVeeEeWIYy5fj/zLDRkGIKZMnomd35AR48z9u3NfWz/QRU+2XyTujnd/7eZj+2exUEepaBOK/1MnVGbjlhExWfTJKmv39RGvzfMi2dHks994XcH+OZptXOLHn5g8htevh3sNewyX4gQsLR+iiFwt6nKp5SacIfFNHP1USnZOvgrXjJthD/5LQhzTs0lp81cVPmoXq6aj+x1krAvu0dQreS/S1JCqhuCPD0CUE2E/kicM8NlFqATAm65Q3kCN/1YlYqazND5yuzNb3rIJ1szmrUq++94DmEYgpkyeiaz2ziVpCHYn/04gD13qgTsdV+CV/45HLk/81yD8y+qrke9MWqu424Dsy23IUh2vU5PZl69vhmrWXDfXhXXH/FHeORQP1XNnRxMLCX00l0Tu/uR08qobrmJ46MJ2mucybr9iTXpJaQTeYIGMc5Foedm1p09eISm6HmeqrpaNWVtuQleuj2rHLnTWlxoyBtS84qn/WzZiPgmVWVNoypH6KMQkoagOe+3bGibSBiXHXcLbPuTiYEz+aCXwvoH8YfTzG3Q7w/zQHkUDEMwM+JRVT6aryGoqlft7PkYguMPQ8fFqvnmkg+rEsed30l/bM9LqhdgvmAyKS8qpyHI3OzkcVh55epG7t/fi5SSe/acJxqX/Mtbt3CHfC3uoT1KBynshV/9mdqRX/5JTg35WT41LAQTlUkplUPv6v8q/xz6POz/ReE/44nHATherSmcXvoRFW/e/eOMbym2amg8FM2rZ2ESuTwCswWc9SXKEfSpngVH/jfarpZqzCYxOwnjmWCxgaOWXQeOsPEzD/Cv90+RTxk5nX/EYA5gGIKZMNatNIZyVQyl0rJJJYyzERpT5ZUrr1Lf291qR7n/V9N3lGGfioe3X1jIyitP6rDyTOgeQYYY9vWbWukeCbL//Dh37T7HulY325bXcaLjzRwzr1L5la+sVcm/G78BnnZODwVY3pDG1Z/aXRyPscavhdwO31fwj8fZZ+kXjYTdWrVQy0ZY9gplCDJ4GE6rqaiqISV5XUBYSEqVjM+WIwC1gy9JaKhfhYUK2B07rGZWNbk4OBsewQyJOhvp7zmDxST49uPH2X9eazCTUuUQC7k/VBjDEMwEvZonX48A1A1h8LCKf2dC9xhSd/nbblWld3v+d/KxvXsAOb88AtCkn7NI/8KER2BNH6O9Zn0LZpPgk3e+xMtnR7l5h7rpXtDZyk3BTxN91afgwlvgfQ/ClrczFowy7I+wojGdRzClu3joKLaEprtUqGIqQO9eDrJicuJ263tg+LhKXKehqsiqofFQNK/5yEmiQbWRyRW/djWVJjTk7S0oLKSzoc0zO6GhGTJoaqRdDPHzD19GjdPKVx7QChWCI6r/wvAIFji6SFUhhqB1k5rZmq1ipldLJrduTnnfZpUMfuGHk3eUuqJp2zzzCDztqqIiRfp5GmGvesywY22otvPHly7nSJ+PxmpbssFs2/I6hhMudq34MLz+q7BUNdkd6VPnW92c5nxWpwpZ6DkCTW7gmcQm5bkkCrhBR4MwdIx98WWTQzUb3gT2Gnjxp2nf5iiyj2A8FCssNJT0uLLkCEBTIC2BRzDWPaH0WgDr2zz0jIUY8WfZPFWQY5F6lpkGuXBpLX96+UpWHfshB+/+J7ynNJHJpnWVXWABGIZgJoyeUeJungKStC2b1GO2PEHvHpWEmjojddt7YeDQ5FkD53aDu72gkrw5QZqY/DSmaOWn429vWMeX37aFO//0sqTGzkXLVAx695mRScfqceaN7Rkao9xtKR6BmmvweHyzqlzKts6p9B8EmWBPbOnkMZW2Klh3g0r8pzEsTquZSCxBfIalkt5gtLDQkG5oZ8MjkFIN/ylk06Shy4/P1fDQ3kAt9YwhogHe13aCv7f+jPV7/wX3nW8ljomxhgyqxHMQwxDMhNEzqpGsEDXR+lVKaqI3Swlp7z7lAUyNpW56q+rufP576nsplbREpq7HuYynXT2O52MIMpfv2S1m3r59KSubJm5mtVU2VjdX88LpyYZg//kxGlw2mt32DGtqm+QRBKz1HJCaWz+SQaI4HVrPxwnZTr1rSn/JmmtVyEAv+U2hqshxlQUni3PkYJJUNyk9nUwS5fng61fluTMwBOvbNPnxOWgIxoJRDgW1juLRM9j3/IyEo46TbTcA8EB8O9/eOVTBFRaGYQhmwsjpwj/YZotyFTN5BPGo2lGmhoV0bFVw4bvV3AFvn0oS+/pgxRWFr73S6IbAm6W7OJLnjjUN25er2bupjUgvnB5hc0fNhPz0VFI9guETeKuWcVZqDUOZtOrTMXwSgDOymbqqKYZgxZXq8cz0CXKOImYSSCnzno+cJA9DC0zU/evlnzMhmU8rPF7eWG2nxWPPWjkkpeQXu7u57YnjRIqcM10Ix/q9nJFa3uPsc3Dod5guvIUVH/wp3Po77u/6LLc/d4ZofPbWVAyGIZgJhfQQpNK6SYV/0lWPDB5VSeFMcs7b36dyDDu/rWYICxOsvqbwNVSaDDMAJqHfqHLtWNOwdXkdo4EoxwbUrrdvPMTxAT+vWJVFAtndqjyCRAKGjuGr7uScbEIiCps3PXyCsLOFMLbpHkFVvZLLPvv8tLfpU8pmUkIa1qaT5Stwp96UuU9jEkmjXUB4bCp6hdhM/l5QXkE2j+D7T53kk3e+zD/de4ivPDgz2eyxYJTHDvcX9Ps/0ufjkFyKFGY1BCoRVV3JJjN0voobtq5gLBjlxTOzMFehBBiGoFBiYfWHMZPSsOWvUiJV6cTR9JCRnkuYSuNqNS/4mW8o/ZrVr50/jWSpOGpUx2U2vaGIHxATwl8FoI86fEAbgP7oIZXsfMWqLK3+7jYl5T1yEnx9BNydRLGQqGrKPtx8Kpo3AUw3BKD6Q87unLYR0ENDM6kc0pVOC6oaimRPxifRc2CF/A6m0n9AKcPWr5zR2ze113Cs35d2XnX3SICvPHiYa9a38MYL2vmfnWcK9qoCkRhv/tbT3PqD53n393bmbQyO9vkQ1ipYdqkKfXVcrIQPNS5b1YhJwJNHSzjlrYwYhqBQxroBCTW5VSWn0fU6tZNPV5/et1c13WTTbL/uS9D5KvVHpQ+fmW8IoXaaWUNDfhW2yDb5LQNtNU52dNZx9+5uovEEdzx/llVNruS4y7ToXspJ1QwWrFGDbqKutvwE8nSGTzBsVzfPtIZg6cWqYmrk5KSni5lbPDH7YCYeQS5DoHkEucp9s9G3HxrX5KfJlYYr1zYRS0gePzz9hvr5ew4gEHz2TRt558XL8IVjPHyosDDWHc+d5f+3d+bRcV11nv/8qkpV2nfJ1mLZsizvjpfYSZzYIRuJsxAaDhC2xhkCzNAQ1k6fMKShm6ZZOzTD0nOaziRDaBoIkAETEggkNoTEsS3bceIlji3ZlmVZkrXv1lJ3/rjvSSW5dlWpyqr7OcdHpVevXt2ypPe7v+37O9U+wL3XLqLuTBdfefpYWK870dbHktJs5NYvQ+1tcNe3pjyfl5HGirJc4xHMWWwRuGh2OFlFeudw7KlLw0Mtr2lRtmAJ6MxC+MCv4f660ANxkpmcsuChoVDKmCH479fXcLpjkLf924u8crabD26pDpwfsNcDUP88ACMF2hiPZM4P3xBc7IeBNlpd5YgwtWrIptLqNj43dYb1TMZVRjINbYJwk8WeXP1ziMQYTqf1SGBN/zDYUFVAcbaHJw80TTn+u8Mt/P5IK/ffvISKfG38czwuXjwZWYL2v/Y2cuXCAv7h7lXct6Wax3ef4ZnXQofCTrT2UzsvW0vAv+8Jv7m91eV5HG7uQUUjVTLLGEMQKTMxBKBn+7YdgcaXJ48pZc0/9pMonov4Jmf9YXsEUXLzilI+dmMNJ1r7efuGCt6zKUR8usj6WR77DTg9jFuJzeHMeeHvhq1Y+DnmUZDpxunwY3hKluvKMbsHxGKyasiPZk0IegbDn488wbAVcw+VI7C9t2hDQ0Nd0Ns0I0PgdAjbNy9k5/EL/OFoK16vYtfxNh74+SFWluXy4a36Z+dyOthUXcjLDeEbgvoL/Zxs6+ctV+iNwN9tW8bqilw++uMDrP3HZ3n/I3to7h665HU9Q6O09A5TWxr8/291ZR7dg6M0dV16jWQjroZARLaJyHEROSkiD/p5/jMiclREXhWR50Qk+VvxOur1LimKTkkArni3bmCyh8uDNi5DXZM7xrmOH+nnKczQEIgID9y2nONfvp1vvWsdDn83ZV8yCiZDfSXL8Lh1GGMofb4un7Tr7oNhJZXPqGIKMgPclJ1pOgfUPDVHlDFRNRR5hUmH1WxV5C8UFYjhbr3bd4YRTsotj94jaLPCLIHyXmHywS3V+qb/eB1LH3qGex/bR0muh0e2byTNOXkLu6q6kFPtA7T3B2lW9MEON92yUldHeVxOfvaRzTx05wruvKKMA41dfOpnr1yyoz/Zpj2qpfOCe1Qry7ShsBsak5m4GQIRcQLfB24HVgLvEZGV0047CGxUSl0B/AL4RrzWEzM667U3EK2qoDtTC5G9/tSkqqgdKrhc5KRnSk6ZrpAa6vL//EgIQbR4YJd31tw0Earp81jlk8HCWDaWITg5UuQ/P2BTvl4XC3gnb/ozyRF0DuibXlF2BIZgqDt8pc3ciugNgV0qPW/6n31kZHlcPPE/NvOPd6/iQ1sX86/3rOXpT2ylPH9qMcGGqgIAXgkzLr/3VCcLCjOoLJiUHsnyuPjQ1sV85W1r+NwdK9h7qpO9p6bqfJ2wbuyhPIIaq8el3qpgS2bi6RFcBZxUSjUopUaAnwJThtsqpXYqpWzB8ZeByPvQZ5uOeiiqmdk1Nn9My/z+4Yt6V9ywU0sQlKyIzRqTnen6PtMJNTQlHtzyRbjpIdj6mYlQTa/b6iUIJzTS3QhpmZwZyghtCEb6J6QswNcjiDw01DEwgtvpINsTQbJ4qCt8JdDcCuhvCa6RFYjWw9rb8pk9HS3ZHhfbr13Eg7cv523rK/1Kbq+pyMPlkCmzKgKhlGLv6U6uWhS4rPgdGyrJSXfxs7qzU46/0dpPepqDyoLgVW35mW6Ks93Utw2EXE+iiachqAB8/webrGOBuA/wK/coIh8RkToRqbtwIYHlWOOj+g8+2vyAjScHrn9Adwcf26GlB5beGp6rPhfICVGfPsPQUFRkl+qfSXrexA69y2kbgjB2xN26ybBzcDS0IYApeYIZeQT9IxRmuYMnw6cz3K1v0OFQuFgL1EXST2HTekSHhWZJkz/D7WRFWS4HzoT2COov9NM5MMLV1X7mDftc780r5rHz9bYp8h92xVDIkCOwuCQ75T2CsBGR9wMbgW/6e14p9QOl1Eal1MaSkpLZXZwvHfW63rw4BhU7Gz+oR1g+8QHdW7DmnTO/5uWC7REECrlc7J99Q+CDvUPvdFi7xTANgTdvAe39I5TmpAc+r3ip7o/wMQTpLgcldDN0MZrQ0Aj3uHbBT94bvkDcUFf4oSHb+/XxYMLC69U5ghkkiqNhfVU+h5q6Q+o27bHCPVcFMQQANy4vpWtwlFfOThqXE639LA0RFrJZUmoMwTnAt9i+0jo2BRG5Bfg8cLdSKrwsT6KwZYnLYiAm5XLDPY/D0tv1TrT21plf83LBz1SwKYwMhK5oiSN2aKh/3KVDeGGGhgYzdWSzLC+IIXC6oOyKKU2Fzmf+ln3pf8PaM49GvNbhvk4+Ofg9OP5beOk74b1oKBKPwDIEnfWRLaz7jA6Blc4sPxApG6oKGBwZD5mg3Xuqk9Icj/9hRT5cX1uCQyYbEzsHRmjpHWbZ/PB+P2tKsukaHKUjzAR2ooinIdgH1IpItYi4gXcDO3xPEJH1wL+jjUAM9G7jzPlDejdXFKTpKxIKF8N7f6pj05fJSLuY4PJolVV/oSGlrGRx4jyCdJdPzD6cqpmhbhjuodutDdy8YIYArITxIRgf07vmOm0ANp3/r8hkr4FVfS/gwKtzTCefD/0CpXRoKNwcQWahPrcjQkMwkSieWcVQpARSoPVFKcWehk6uqi4MGVLLy0zjyoUF7HpD357s4TOrKwIo2U5jcYn+PT7Vntx5grgZAqXUGPBx4PfAMeAJpdQREfmSiNxtnfZNIBv4uYi8IiI7AlwuOWjcrXdzqRLLjyeBegnGhnX4LYGGwOEQMtKcWvIhnKoZK37e6tRVRvNzQxiChdfC6KD+ffrTN8CdxcOu+8ga79EJ1jBRSrFueB+9aaWw6T4tVR5KKXR0UMtrh+sRiOjwUKShodYjgEDp7GryVxVmUpjlDtrR29A+QEvvcHDZER9uWFbK4XO9tPUNc2RC0jxIp7oPi4uzJt4zmYlrjkAp9bRSaqlSqkYp9c/WsS8opXZYj29RSs1TSq2z/t0d/IoJpK8Fmg+kVggnnuTM928IJgTnEhcaAh0eGhodtzyCpuAnW4ag0avzV0FDQwA1N2s5kT9+EY78P7jqI7zq3qCfaz0a9hp7hkZZJ29woXC93qCocbgQQiJh0Gq4ygweG59C0ZLIPYK2I1BYPesGXUTYUJXPwSAewUsn9YyFoEKEPtywTP9cdx2/wO76DqqLs8ifri4bgIr8DNKckroewZzD1gdadkdi1zFXyCnznyOYGJqSOI8AdMJ4aMQyBENdMDIY+GTLEJwaK8LjcviXl/DFk62LA87th6xi2PIpOj2VjOEKfSP3ob25gXLpZGj+pknV2mCDj0DLmANkzw9+ni/zVmljGMmQmhlKS8yE9VUF1F8YoK3Pv3f04skOKvIzQuYHbFaW5bKgMIMf7T7D7oYOblwWfjOpy+mgqjCTUxeMIZgbHH9GD14vTZFa/3iTU6Z17sen1c4PWwPA08OLwcaLTLdPaAiCS2J0N4I7m1MDHubnpYdXynn717WI4PanID0Pj9vNeVelnjURJhcbdgPgqLpayzyLI/QgHXu2QCST7cotb2WaNEZARga1BzHL+QGb21bpz/bL/Zcm+QcujvGnNy7wpmUlYZfcigh/fc1CXjvXw8iYlzvWRGBEgeri7KT3CEywOxxGBqBhl47DplJSN57kzNf16QMXtOSETZIYgow0J4N2aAh05VCgRsLOBihYRGvvReaFyg/YeLJ1h7n9fm4nZ52VLGg/EfYa05r3Mag85Cxcp+UrcitCD9Lpt7yw7EgMwTpAdAd87ZtDn3/hGKAS5hEsKc3huiVFfO/5EygUlQWZrKvMp6ook9++ep6h0XHeurY8omtuv1b/fCvyM9i4KIKwGjph/OcTF/B6VVi9B4nAGIJwqN+pJRGW3Z7olcwdfIeeTDEEVpIv3KqWOKFDQ2OTQ9eDJYzbj0P5BppODnL14vDizpe8X5qTZoqht05X9oSx4chtP8Ar3hquzLfCaPlVYXgEbYDosthw8eRAyTKdIwsHO88xy6WjvnzjHWv58A/r+MbvtIflELh9TRn7TnWypiKPTRHezD0uJ39/V3Sfp7o4i5ExL809Q1PkLJIJExoKh+PP6B1q1eZEr2TuEEhmIkk8gky3S4eGJiaqBeglGB2CrjOMFtbS3DM8USUSKRluJ+dVka6aGuwM/YKRAUr63+B42ko8Vrkr+QvD8AhadV4i0sq3BVfBmd26uz4UrUf08KGC6sjeI4ZU5Gfw209s4dAXbuV3n9rKh7cunugQ/urb18zqzry6OPlLSI1HEArvuJaAqL01smH1huDYN9jphmDI8gjC7XyNExPJYnemLrUM5BF01AOKVreWuq4uic4QZLqdnB23dqm9TXp2RTDOHcDJOC15PqNN86v0/+fYSOBBML3nI0sU29TeBgcehzMvweI3BT+39bD2BqIYLBRLRIS8zDTyMtP43B25fPrNS3GI4HbN7roW+xiCrbUJVEYIgvEIQtFUp6dKmbBQbMkqAXFeKjMx3KOTnrOtPjqNLLeTAVsELlgvQbsOPZwSHUKqjtIjSE9z0jhu1faHMwPh7B4ABks3TB6zR5cGm/7WdTq6Mas1N+qS1+NPBz9PqYRWDAUjPc0560YAoCTHQ5bbSUMSVw4ZQxCK40+Dw3V5DopPZhxO7RX0TFV21F2veQlPymd70ugftg1BuTWi1A8X3gCEw8M65r6oKMrQUJqTM6OWIQhD0mK8cQ8nvBWUlPrs7u0Kp0CGxOvVhqAwipCNO0v/DRz+pZ7bHYjeczDUmTpDlsJARKguyUrq0JAxBKE4/oyeE5zgmPWcpLAaOqfO72W4J+GJYoCcdBcDI+NavCyYzMT5Q1Bcy4nOMebnppMViRy0D5luJy3jOShHWmCjY+P1os7uZb+3lkW+Hog9XCeQIelr1kUP0arnbvqgrvI6GkQAwC4xLVsX3XvMUZK9hNQYgunUPQYvfVfvnjrqteu/7M5Er2puUlRzqZjZUHdSGN0caxh8/8UxvdMebL9UvkEp3RRWsZETrf0TujLRkJ7mROFA5VaENgQdJ3Fd7Ga/WsoKX/EzOzQ03cuyscesRpvEXXyT1tn6y78G1kRqfkWH/OYnpocgWakuzqKpa5CLY5ErzM4GxhD4Ur8TnvoUPPsQ/OVheO3n+viybYld11ylcLGWPBjy0YUZbNeCdAnGNgR9w6NTS1196TkLA22Mla3neEsfa8IUIvOHLX09lh3GjGArP/Aay6Z6BO4s7U0FCg3ZZZ0lUer/OBxw4+e0fIT9tzGd5oO66TIt+NCWVGNxcRZeBY0dQTrUE4gxBL4c+qnejS6/C3Z+BV54GGpu0tUYhtgzIXHcMHmsryUmE61mSo41DL5veMwn9j5tp91UB8Dp9BWMjHvDVqT0hy19PZI5PyxD0O/IwVFSO2VmL6D7HgK9/vwh3UiWO4P/35Vv0zLsz/3TpC6UjderDYEJC12CPbbyjdbknE1gDIGNUrpMdPld8JbvaPfZ4YIbP5/olc1d7Fi1bQi847rhKRL5gzgx6RGMadE1gOldv+f2g9PD/mHtMczII7CmlA1nlulKKm+QQfZn93KIpSwr8/N+uRWBPYLzr8x8lobDAdu+rktc//T1qc+1HdGJ4kXXzew95iC187JxOoRj53sTvRS/GENg03NWV6xUbtQ13B/bAw/U6+8N8aGwGpBJiePBDq2gmVQewai+uaZl+TcEZWs5dH6QnHRX2CJm/shwa8MzmF4K3lGdlPXHYCe0H+fFi0tYUeZHoTWvwr9a6mCnnn1QuSnqNU6wcDOsfz/s/v5UtdSGP+mv1SH6DFKQ9DQnS0qyOWoMQZIzfZCGM003ExniR1qG3m2ff1V/b8fgI9HBiRNTksUOBxQvgfY3Jk8YH9OJ0cqN7DvVyfqqgsjmBk8j31Is7U6zlC0DSV9b4aj93qVcudDPTIHcCv9qqQ27AAWLb4x6jVO45UtaeuKpT08mjo88qf9+8oKNJk9dVpbncrTZGILkxh4IYtRFZ5fydZNjG22J5JwoOl9jjG0Ieu1eguKlUz2C1tdgbIjeorWcaOtnc5QaQzb5mdoQXMDSAAro2+74AAANqklEQVRUrnp2D16cHHMu8Z+TCFRC2rBLTzErXz+jdU6QVQS3fRXOvgzPfQkaX9Ye0tr3xOb6c5CVZbm09A4n5dhKYwhsWo9omekED0RJOcrX65tWX8ukTo4t9JZAcn1DQ6ANQU/j5E678WUA9o4vBeCaxZGJmE0nP0NLQrSIZVACxfnP7qHetZilFaWTGkO+TJSQ+ngUSkHDTqjeGtvpeuveAxu2w4vfhke3aSN05b2xu/4cY6U11ezY+eDzlBOBMQQ2rUcSpp+e0izaor827NI7bndOUuQIPC4H6WkOugctQ2CXXNqDYxp3Q14Vu1rSyHI7Z5QoBu2BiEDraJaWcvBX+TM+ijq3nxcv1nBVdQDDY1c4+b6+65SembD4hhmt0S93fRvufFgbgPf/UstrG/yyskwbgsPW3ONkwojOgVaQ7DgJq96W6JWkHvPWQFap7uDuOw/zViZcXgK0LEBRlod2240vt0oimw/qQS2Ne6D6el5u6GRTdSGu6WWcEeJwCHkZaXQNjVmdzH4MQethZHSQuvFati8PMCXL7nnw9Sjqd+qvNTfNaI1+cThg04dif905SEGWm4VFmRw4E3iMZqIwHgHood/Km5RCWXMehwPWvAOO/ko3Si1MntLD4mw3Hf0j+pu8BbrR7dxBrdfT30Jf6ZWcbOvnmhnmB2zyM9LoHhoNLHJ3di8Ab7hXsn5BABkOl0cbVt9kc8NOyKuKXlrCEDOuXFjA/jNdKKUSvZQpGEMA0GIlik1oKDFs/hh4csGVocsSk4SibA8dA5ZHIKJLL0+/oG+swO5xHS66riaCIS9ByM900z04ouP8fnIE3saXaaGI5ctWBPdA8nxkKrzjcOrPWjo6CTytVGfjwkI6BkY4nWQdxsYQgM8gjUWJXklqklcJ9++HTxwMPA4yARRl+XgEAEu36YT2rq9BYQ07zuVQkuNhlZUEnCn5mWk6J2F3B08bAnPx1MvUjdfy1nUhxizmL5wU82t+RQv51cSobNQwIzYu0iW/dafDGD40ixhDANYgjRVaGtmQGLJLZyZ9EAeKsj109I9MuvHL79Td5v2tjK9+J38+0c4NS0tiNu1qIidRVKsb67pOTz7Zc46MwWaOuVZw/dIQw03mrdKvvdgPDc/rY6bJKylYUpJNbrqL/UmWJzCGIIkHaRgSS3G2m5Fx72QvQXYpvOtxuP4BDi74AL3DY9wUKGkbBWV56bT1XWSs0Ja0mGxg63z9zwAUrrj+Un2h6cxbBSid+2r4E8y/Qo+nNCQch0O4qrqQl+o7Er2UKRhD0Nus9VFMfsAwjdLcdABaenzkp5ffCTc9xG9f78btdHBdbexusPPz0hn3KjrSrQliPg1sDfv/yIDysO2WN4e+kL2pqd+p+x3iUS1kiJotS4pp7BxMKiVSYwjsQRqx6rg0zBkWFmqJkcbOqX+w417Fb189zw3LSiYaz2JBWZ42PM3DaVpmwzIE3YMjZLXWcTZrNRWFYTQ85i+E3ErY+WWtW7TmnTFbo2HmbLHmFr9wMoCeVAIwhqD5oB6kYTwCwzSqAhiCPac6aOu7yN2hkrYRMj/PxwMpXjoRGnrs+VdZyhmKV1wf3oVE4Mrt+vHCLWZITJJRU5JFWV46fznRnuilTGAayuxBGkZgzjCN/Mw0cjwuGjum6u7/+mAzmW4nNy+PrTheeZ4e5tLUNaR/Jw/+mLaefo7ueRanU1G8MoKE79bPQtXmmctOG2KOiLC1tphnDrcwPDpOelrii1RS2yOwB2mUm0EahksREaqKMmnwmTXbOzzKjkPN3L22fGKqWKwoyHJTkuPhWEsvVF0DowP86ulnuJ4DeF0Z+sYeLg6n1hZKj01pqyG2vGVtOX3DY/zxWGuilwKkuiFoeVUnipOom9WQXKypyOPVph68Xl1C+quD5xgaHee9V8dnat1qW6rY+p0cPvo77vYcxFFzE6Slx+U9DbPPtTXFzM9N52f7AsyXnmVS2xCceFZ/XXJLYtdhSFo2VBXQMzRKQ/sA417FD186zeqKXK6oDCDxMENWV+Rxoq2ffncxb2Ss4xPOX5A31j4Z8zfMCZwO4d7rFvHCiXY++8Qh3vfIy9z08C4efvY4I2NBptPFibgaAhHZJiLHReSkiDzo53mPiPzMen6PiCyK53qm4B2Hgz/SybTs2NWCG+YWmyyVz+eOtfKbQ83UXxjgo29aErf321pbwrhX8dH/3M/nu+9mxJEBtbfCkjDKRg2XFfdtqeauK8p48mATbb0XqcjP4LvPn2T7o3vpGhgJfYEYErdksYg4ge8DbwaagH0iskMp5TPbjvuALqXUEhF5N/B14J54rWkCpfRg+u5GuO0rcX87w+VLdXEWmxYV8B8vNKCUlhK+fXX8BudsWlTA5sVFvHCinS1LtsAH7oe0NKMTNAdJczr43ns38B2vmuhOf/JAEw/+8jXu+u5f+Ke/WsWWJSW4XfEP3Ei8VPBEZDPwD0qp26zvPweglPqqzzm/t87ZLSIuoAUoUUEWtXHjRlVXVxf5gg48Di9+B8Yuwki/zg2seju841HzR2YISt3pTu59bB8Zbic/+fA1LCmNr+b+xbFxjp3vY3V57ozlrQ2XH4fOdvPxnxzgbOcQDgG3y4FTBBHh7+9awT2bostPich+pZTfIezxLB+tAHwzIU3A1YHOUUqNiUgPUARMKbAVkY8AHwGoqooySZdZrOupXelaqnfB1XDFPcYIGEKycVEhdQ/dgtMhoeUdYoDH5WRdIJlpw5xn7YJ8nvvMDTz/ehtHm3sYHvMybhUrxGsTcln0ESilfgD8ALRHENVFlt+h/xkMUZAMtd6G1MHtcrBt9Xy2xTEM6Us8tzfngAU+31dax/yeY4WG8oDkUmMyGAyGOU48DcE+oFZEqkXEDbwb2DHtnB2AXRf3DuD5YPkBg8FgMMSeuIWGrJj/x4HfA07gUaXUERH5ElCnlNoB/B/gRyJyEuhEGwuDwWAwzCJxzREopZ4Gnp527As+j4cBI41oMBgMCcTUphkMBkOKYwyBwWAwpDjGEBgMBkOKYwyBwWAwpDhxk5iIFyJyATgT5cuLmda1nAKYz5wamM+cGszkMy9USpX4e+KyMwQzQUTqAmltzFXMZ04NzGdODeL1mU1oyGAwGFIcYwgMBoMhxUk1Q/CDRC8gAZjPnBqYz5waxOUzp1SOwGAwGAyXkmoegcFgMBimYQyBwWAwpDgpYwhEZJuIHBeRkyLyYKLXE29EZIGI7BSRoyJyREQ+meg1zQYi4hSRgyLyVKLXMhuISL6I/EJEXheRY9aI2DmNiHza+p0+LCI/EZH0RK8p1ojIoyLSJiKHfY4VisgfROSE9bUgVu+XEoZARJzA94HbgZXAe0RkZWJXFXfGgM8qpVYC1wAfS4HPDPBJ4FiiFzGL/C/gd0qp5cBa5vhnF5EK4BPARqXUarTE/VyUr/+/wLZpxx4EnlNK1QLPWd/HhJQwBMBVwEmlVINSagT4KfDWBK8priilziulDliP+9A3iIrEriq+iEglcCfwSKLXMhuISB5wPXquB0qpEaVUd2JXNSu4gAxrqmEm0Jzg9cQcpdSf0TNafHkr8EPr8Q+Bv4rV+6WKIagAzvp838Qcvyn6IiKLgPXAnsSuJO58G/g7wJvohcwS1cAF4DErHPaIiGQlelHxRCl1DvgXoBE4D/QopZ5N7KpmjXlKqfPW4xZgXqwunCqGIGURkWzgl8CnlFK9iV5PvBCRu4A2pdT+RK9lFnEBG4D/rZRaDwwQw3BBMmLFxd+KNoLlQJaIvD+xq5p9rJG+Mav9TxVDcA5Y4PN9pXVsTiMiaWgj8GOl1JOJXk+cuQ64W0ROo0N/N4nIfyZ2SXGnCWhSStme3i/QhmEucwtwSil1QSk1CjwJXJvgNc0WrSJSBmB9bYvVhVPFEOwDakWkWkTc6OTSjgSvKa6IiKBjx8eUUt9K9HrijVLqc0qpSqXUIvTP93ml1JzeKSqlWoCzIrLMOnQzcDSBS5oNGoFrRCTT+h2/mTmeIPdhB7Dderwd+HWsLhzXmcXJglJqTEQ+DvweXWXwqFLqSIKXFW+uA/4aeE1EXrGO/U9rjrRh7nA/8GNrg9MA/LcEryeuKKX2iMgvgAPoyriDzEGpCRH5CXADUCwiTcAXga8BT4jIfWgp/nfF7P2MxITBYDCkNqkSGjIYDAZDAIwhMBgMhhTHGAKDwWBIcYwhMBgMhhTHGAKDwWBIcYwhMBiCYKl7/o31uNwqXTQY5hSmfNRgCIKl0/SUpXRpMMxJUqKhzGCYAV8DaqymvBPACqXUahG5F63+mAXUooXQ3OgmvovAHUqpThGpQUuglwCDwIeVUq/P/scwGAJjQkMGQ3AeBOqVUuuAB6Y9txp4O7AJ+Gdg0BJ/2w18wDrnB8D9Sqkrgb8F/m1WVm0wRIDxCAyG6NlpzXroE5Ee4DfW8deAKyzl12uBn2tZHAA8s79MgyE4xhAYDNFz0eex1+d7L/pvywF0W96EwZC0mNCQwRCcPiAnmhda8x9Oicg7QSvCisjaWC7OYIgFxhAYDEFQSnUAL1pDxL8ZxSXeB9wnIoeAI8zxEamGyxNTPmowGAwpjvEIDAaDIcUxhsBgMBhSHGMIDAaDIcUxhsBgMBhSHGMIDAaDIcUxhsBgMBhSHGMIDAaDIcX5/wtDTHr/PiCjAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_population(opt_dynamics[0])" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "ExecuteTime": { "end_time": "2019-08-18T13:56:04.161193Z", "start_time": "2019-08-18T13:56:03.950179Z" }, "lines_to_next_cell": 2 }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_population(opt_dynamics[1])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Since the optimized pulse shows some oscillations (cf. the spectrum above),\n", "it is a good idea to check for any discretization error. To this end, we also\n", "propagate the optimization result using the same propagator that\n", "was used in the optimization (instead of `qutip.mesolve`). The main difference\n", "between the two propagations is that `mesolve` assumes piecewise constant\n", "pulses that switch between two points in `tlist`, whereas `propagate` assumes\n", "that pulses are constant on the intervals of `tlist`, and thus switches *on*\n", "the points in `tlist`." ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [], "source": [ "opt_dynamics2 = [\n", " opt_result.optimized_objectives[x].propagate(\n", " tlist, e_ops=[proj0, proj1], propagator=krotov.propagators.expm\n", " )\n", " for x in [0, 1]\n", "]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The difference between the two propagations gives an indication of the error\n", "due to the choice of the piecewise constant time discretization. If this error\n", "were unacceptably large, we would need a smaller time step." ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Time discretization error = 2.9e-05\n" ] } ], "source": [ "# NBVAL_IGNORE_OUTPUT\n", "# Note: the particular error value may depend on the version of QuTiP\n", "print(\n", " \"Time discretization error = %.1e\" %\n", " abs(opt_dynamics2[0].expect[1][-1] - opt_dynamics[0].expect[1][-1])\n", ")" ] } ], "metadata": { "hide_input": false, "jupytext": { "formats": "" }, "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.7.3" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": false }, "varInspector": { "cols": { "lenName": 16, "lenType": 16, "lenVar": 40 }, "kernels_config": { "python": { "delete_cmd_postfix": "", "delete_cmd_prefix": "del ", "library": "var_list.py", "varRefreshCmd": "print(var_dic_list())" }, "r": { "delete_cmd_postfix": ") ", "delete_cmd_prefix": "rm(", "library": "var_list.r", "varRefreshCmd": "cat(var_dic_list()) " } }, "types_to_exclude": [ "module", "function", "builtin_function_or_method", "instance", "_Feature" ], "window_display": false } }, "nbformat": 4, "nbformat_minor": 2 }