{ "cells": [ { "cell_type": "markdown", "id": "e0fe6833-bbe7-465a-8588-23ed066e63e9", "metadata": {}, "source": [ "# 05-Finance Tutorial-Pricing Bull Spreads\n", "### Modified for Quantum Rings toolkit for Qiskit 2.x" ] }, { "cell_type": "code", "execution_count": 1, "id": "7c3d82f6-1ecf-4370-9cb4-711a7c429602", "metadata": {}, "outputs": [], "source": [ "# This tutorial is from:\n", "#https://qiskit-community.github.io/qiskit-finance/tutorials/05_bull_spread_pricing.html\n", "\n", "# Modified for use with Quantum Rings toolkit" ] }, { "cell_type": "code", "execution_count": 2, "id": "b60d3ce6-3181-483f-a938-7f86ec8f62c2", "metadata": {}, "outputs": [], "source": [ "#\n", "# Setup your account\n", "# You can also save your account locally using the class method QrRuntimeService.save_account(...) and\n", "# invoke the QrRuntimeService class constructor without any arguments.\n", "#\n", "import os\n", "my_token = os.environ[\"QR_TOKEN\"]\n", "my_name = os.environ[\"QR_ACCOUNT\"]\n", "\n", "#\n", "# Set the backend of your choice, depending upon the task and your hardware configuration.\n", "# See SDK documentation for additional help.\n", "#\n", "\n", "my_backend = \"scarlet_quantum_rings\"" ] }, { "cell_type": "code", "execution_count": 3, "id": "9332d5b2-51a0-4f15-8e75-2f9919bb5ff7", "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "\n", "%matplotlib inline\n", "import numpy as np\n", "\n", "from qiskit_algorithms import IterativeAmplitudeEstimation, EstimationProblem\n", "from qiskit.circuit.library import LinearAmplitudeFunction\n", "#from qiskit_aer.primitives import Sampler\n", "from qiskit_finance.circuit.library import LogNormalDistribution" ] }, { "cell_type": "code", "execution_count": 4, "id": "37f6752e-6c90-420a-9172-4b638ca6d917", "metadata": {}, "outputs": [], "source": [ "from quantumrings.toolkit.qiskit import QrRuntimeService\n", "from quantumrings.toolkit.qiskit import QrSamplerV2 as Sampler\n", "\n", "#\n", "# Acquire Quantum Rings Backend\n", "#\n", "\n", "qr_services = QrRuntimeService(name = my_name, token = my_token)\n", "qr_backend = qr_services.backend(name = my_backend, precision = \"single\")" ] }, { "cell_type": "code", "execution_count": 5, "id": "279a81e2-49e0-42fd-a05d-a00a316fcc82", "metadata": {}, "outputs": [], "source": [ "# number of qubits to represent the uncertainty\n", "num_uncertainty_qubits = 3\n", "\n", "# parameters for considered random distribution\n", "S = 2.0 # initial spot price\n", "vol = 0.4 # volatility of 40%\n", "r = 0.05 # annual interest rate of 4%\n", "T = 40 / 365 # 40 days to maturity\n", "\n", "# resulting parameters for log-normal distribution\n", "mu = (r - 0.5 * vol**2) * T + np.log(S)\n", "sigma = vol * np.sqrt(T)\n", "mean = np.exp(mu + sigma**2 / 2)\n", "variance = (np.exp(sigma**2) - 1) * np.exp(2 * mu + sigma**2)\n", "stddev = np.sqrt(variance)\n", "\n", "# lowest and highest value considered for the spot price; in between, an equidistant discretization is considered.\n", "low = np.maximum(0, mean - 3 * stddev)\n", "high = mean + 3 * stddev\n", "\n", "# construct circuit for uncertainty model\n", "uncertainty_model = LogNormalDistribution(\n", " num_uncertainty_qubits, mu=mu, sigma=sigma**2, bounds=(low, high)\n", ")" ] }, { "cell_type": "code", "execution_count": 6, "id": "88d448f1-703a-4cba-8de9-cf5d4b3028e5", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "<>:8: SyntaxWarning: invalid escape sequence '\\$'\n", "<>:9: SyntaxWarning: invalid escape sequence '\\%'\n", "<>:8: SyntaxWarning: invalid escape sequence '\\$'\n", "<>:9: SyntaxWarning: invalid escape sequence '\\%'\n", "C:\\Users\\vkasi\\AppData\\Local\\Temp\\ipykernel_23904\\2885665035.py:8: SyntaxWarning: invalid escape sequence '\\$'\n", " plt.xlabel(\"Spot Price at Maturity $S_T$ (\\$)\", size=15)\n", "C:\\Users\\vkasi\\AppData\\Local\\Temp\\ipykernel_23904\\2885665035.py:9: SyntaxWarning: invalid escape sequence '\\%'\n", " plt.ylabel(\"Probability ($\\%$)\", size=15)\n" ] }, { "data": { "image/png": "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8hZ6v3Da0LkMAxEREVG8BFnOZQowIg8TNse2dAIRERGRv/MpiSi6sgdEREREgeyxlHAgIiIiCjSx6slCDhaS3THKD7Wj8H9v4X4YaUhEREQUCGIVZJ04cUKvzarn5v+JiIiIyIcgKyIiItr/ExEREdH/YU4WERERkQUYZBERERElhMT3uGLiOxEREQWSOCW+ExEREZGFie9ERERE5B5zsoiIiIgswCCLiIiIyAIMsoiIiIgswGl1iIiIiCzAaXWIiIiILMBpdYiIiIgswJwsIiIiIgswyCIiIiJ60qcLvXHt2jW9Tps2rSa7ExEREQWieOnJmj9/vtSqVUtSpkwpGTJk0EuqVKl02bx58+JjF0RERESBE2QZhiFt27aVxo0ba1mHu3fvSpo0afSCv7GsSZMm0qZNG70tERERUaDwKcgaMWKETJo0SbJkySJjx46V69evy9WrV/Vy48YNGTdunK6bPHmy3paIiIgoUPgUZP3444+SPHlyWbdunbz//vuSOnVqxzqcLnzvvfd0XbJkyfS2RERERIHCpyDr+PHjUqNGDa3+7gnW4Ta4LREREVGg8Gl0YcaMGSVJkiQx3i5x4sSaDE9EsZe76yJLtx8aYsjg8iLFei+VsHDrRgSfGFjPsm0TEfldTxYS3v/66y9H2QZ3kJ+F2zRq1MiXXREREREFTpDVv39/nSS6evXqGki5WrVqldSsWVPy5csn33zzjS+7IiIiIvLf04UIplzhdOGOHTs0mEqfPr3kypVLl586dUquXLmif1esWFF7slauXBlfx01ERETkP0HW6tWrPa5DHSwEVWZg5WzTpk2s/k5EREQBJVZBFkcIEhEREVkQZJmnAomIiIjoMcxdSERERETxWCfLzMX67bffdCLof//9V27duuV2nkLkZB09etTX3RERERH5f5D14MEDqVevnpZv8DQBNIIrTg5NREREgcan04VDhw7VsgyvvPKK9mK1atVKg6qwsDA5cOCA9O7dW1KkSCGff/65RERE+Hyw9+7dk169eknBggUladKkkjVrVmnbtq2cPXs2VttZs2aN9OnTRwNEVK3HMefOnTva+7Rp00Zv5+mCybCJiIiI4qUna9q0aVob6/fff9dgKjg42DGNTqFChTQgevHFF/WC/yMgiqv79+9rna7NmzdLlixZpGHDhnLixAmZOHGiLFy4UJejMKo3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ERERWYBBFhEREZEFGGQRERERWYBBFhEREZEFGGQRERERWYBBFhEREZEFGGQRERERWYBBFhEREZEFGGQRERERWYBBFhEREZEFGGQRERERWYBBFhEREZEFGGQRERERWYBBFhEREZEFGGQRERERWYBBFhEREZEFGGQRERERWYBBFhEREZEFGGQRERERWYBBFhEREZEFGGQRERERWYBBFhEREZEFGGQRERERWYBBFhEREVGgB1n37t2TXr16ScGCBSVp0qSSNWtWadu2rZw9ezbW27p27Zp07NhRcuXKJaGhoXrdqVMnuX79utvbt2nTRoKCgjxexo0bFw8tJCIiIn+RSGzi/v37Ur16ddm8ebNkyZJFGjZsKCdOnJCJEyfKwoULdXnevHm92tbly5elUqVKcuTIEb1Po0aNZP/+/TJixAj5888/ZdOmTZI+fXq3961du7Zkzpw5yvJChQr53EYiIiLyH7YJsvr376+BFIKjZcuWScqUKXX5sGHD5NNPP9UerdWrV3u1LfRYIcBq0qSJTJs2TRIl+r+H4eOPP5aRI0dK586dZdKkSW7v27VrV6lWrVo8toyIiIj8kS1OFz548EBGjRqlf48ePdoRYAECohIlSsiaNWtkx44dMW7r/PnzMnXqVEmSJImMGTPGEWDBt99+KxkzZpQpU6bIf//9Z1FriIiIKBDYIsjasGGD3LhxQ/LlyyelS5eOsr5Zs2Z6vWDBghi3tWTJEomIiJAqVapIpkyZIq1Dblb9+vUlPDxcFi9eHI8tICIiokBji9OFu3fv1usyZcq4XW8u37NnT7xsa8KECR63NXv2bJk1a5YGYnny5NGgrHDhwl63hYiIiAKDLYKsU6dO6XX27NndrjeXnzx50vJtIWfL2RdffCHt2rXTpHnnU4/uhIWF6cV08+ZNvX748KFe7MQ8Xrsdtx3bGBpiWLv9YCPStVWiexzZRv9oYyC1MxA+e6z00OZt9Pa4bRFk3b59W6+TJ0/udn2KFCn0+tatW5ZtC6cpkXSPEY4IxC5cuKAjEXv06KG5XcjxGj58eLT7HjBggPTp0yfKciTyezqehG758uXi7550GweXfzz76VcuwtLtR3cKnm30jzYGUjsD4bPncVhu0zbevXvXf4KshAA1tZzhVOGHH34oVatW1VOMSMxHEn6OHDk8bqNbt256G+eeLNy+Vq1akjp1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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# plot probability distribution\n", "x = uncertainty_model.values\n", "y = uncertainty_model.probabilities\n", "plt.bar(x, y, width=0.2)\n", "plt.xticks(x, size=15, rotation=90)\n", "plt.yticks(size=15)\n", "plt.grid()\n", "plt.xlabel(\"Spot Price at Maturity $S_T$ (\\$)\", size=15)\n", "plt.ylabel(\"Probability ($\\%$)\", size=15)\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 7, "id": "5ba2f118-2e01-4130-be04-2effce54b9a5", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\vkasi\\AppData\\Local\\Temp\\ipykernel_23904\\1515371662.py:14: DeprecationWarning: The class ``qiskit.circuit.library.arithmetic.linear_amplitude_function.LinearAmplitudeFunction`` is deprecated as of Qiskit 2.2. It will be removed in Qiskit 3.0. Use the class qiskit.circuit.library.LinearAmplitudeFunctionGate instead.\n", " bull_spread_objective = LinearAmplitudeFunction(\n" ] } ], "source": [ "# set the strike price (should be within the low and the high value of the uncertainty)\n", "strike_price_1 = 1.438\n", "strike_price_2 = 2.584\n", "\n", "# set the approximation scaling for the payoff function\n", "rescaling_factor = 0.25\n", "\n", "# setup piecewise linear objective fcuntion\n", "breakpoints = [low, strike_price_1, strike_price_2]\n", "slopes = [0, 1, 0]\n", "offsets = [0, 0, strike_price_2 - strike_price_1]\n", "f_min = 0\n", "f_max = strike_price_2 - strike_price_1\n", "bull_spread_objective = LinearAmplitudeFunction(\n", " num_uncertainty_qubits,\n", " slopes,\n", " offsets,\n", " domain=(low, high),\n", " image=(f_min, f_max),\n", " breakpoints=breakpoints,\n", " rescaling_factor=rescaling_factor,\n", ")\n", "\n", "# construct A operator for QAE for the payoff function by\n", "# composing the uncertainty model and the objective\n", "bull_spread = bull_spread_objective.compose(uncertainty_model, front=True)" ] }, { "cell_type": "code", "execution_count": 8, "id": "ba963e82-4e46-444d-806d-723531c16de8", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkgAAAH9CAYAAADh8YP0AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAcohJREFUeJzt3QeYE1XbBuBn2aVXadKRpohKV0AEpCOIIEoVpai/CijIp3zSkSKiSBNsCFgQRGlKlSogIAqIgJ+CSC/Se12W/NdzYtbdbLax2Uwy89zXFRImyew5s9nkzZn3vCfM5XK5ICIiIiLR0vx7U0RERERIAZKIiIiIFwVIIiIiIl4UIImIiIh4UYAkIiIi4kUBkoiIiIgXBUgiIiIiXhQgiYiIiHhRgCQiIiLiRQGSiM2FhYXFuqRJkwY5cuRAjRo18PHHHyNUiun/9ddfePTRR5E7d27TB/bl+++/N/dFRUVhwIABKFGiBNKlS2fu69ixY4L727t3b5xj431JbB/B7pNPPjH9GDRokNVNEQk5EVY3QEQCo0OHDtHBBIONtWvX4ocffsDy5csxffp0BLMbN27g8ccfx5YtW1C1alWUKlXKBEn58uUz948dOxZDhgxBgQIF0KJFC2TIkAEPPPBAkvadOXNms29fkroPqzCA+/TTT7Fy5Uo8+OCDVjdHxFYUIIk4BEcTYlq6dCkaN26ML7/8Ek888QQefvhhBCuO9jA44qjX6tWr49w/d+5cc71mzRoUL148WfvmiJT3sbELjrgxoGQfRSR5dIpNxKHq16+PJ598MlaAEawOHjxoruMLfhK736myZ8+O0qVLK0ASuQkKkEQcrEKFCub6wIED5vrMmTN499130bBhQxQtWhTp06dHrly50KhRIzPi5O3uu+82OS47duzwuX/uNzw8HMWKFYuT6/T555+bU1jZsmVDpkyZULZsWQwfPhxXrlyJ9Tjuv1atWuY2Tyd58oN4SomnmHh7z5490Y/1XDjq5C/M4eE+4xtpuu2228z9MTE/ypPHdOrUKbzwwgvInz+/OaY8bpMnT4735/G4vfTSS7j99tuRMWNG5MyZE5UrV8brr7+Oc+fORfeVx4Nq167ts+8J5SBdunTJnJZkW/gzGEzVrFnTjCgm1kfmrvH3xefxNOdzzz1nXjsidqJTbCIOdv78eXPND2368ccfzQczPwzvuOMOVKtWDfv378eSJUvMhR+MnTt3jn4+Pxj5eG5/++234+yfQQDzh5555plYAQSf99FHH5lcoTp16pgAiQFFnz59MG/ePCxbtsxs8+RO/f333/juu+9MErYnLyjmyMjMmTNx8eLF6DwrypIlC4IBAwcexwsXLphThCdOnDCnCZ9++unoYxMTTxM+8sgj5nn8PTRt2hSXL1/GH3/8YQKdZs2aoXz58qavzCFjPhkDWk8+VlL6zt87g6pNmzYhT5485vQqj9+KFSvMz1+/fr3J6/KlV69e5j4GqCVLljS5bPxd/v7771i1alWcQFEkZLlExNb4Z+7rT/3GjRuuatWqmfv69u1rtu3evdu1fv36OI/dvHmzK0eOHK5s2bK5zp8/H739zJkzrkyZMrny5Mnjunr1aqznREVFuYoUKeIKDw93HTp0KHr7zJkzzc8sUKCAa+fOnbH29cADD5j7/vOf/8Ta18qVK832Dh06+Oxj0aJFffYxIXv27DHP4XMTM3DgQPPYKVOmJPnne9rMS5s2bVxXrlyJvm/OnDlmO49PTCdPnjTHkve9/fbb5hjGtG7dOtfRo0ej/8/jwcfyZ/nC9vJ+tj+mbt26me21a9d2nTt3Lnr777//7sqbN6+5b968eT77mC9fPtcff/wRvf348eOukiVLmvuWL1/usx0ioUin2EQchrPY/vzzTzMSxJECjh516tTJ3MdTYUzq9XUqrmvXrub0DmdMefC0TJs2bXD8+HF88803sZ7DESeOPjVp0sTMLvMYN26cuR44cKCZjRZzXxMmTDAjEB9++GGcU22pZd++ffFO8/cHnkIcP3589CgdNW/e3Jza4vGJeSqQI3E8ljyl+corr5iZejFxJCpv3rwpag9HiiZNmmT2/d577yFr1qzR93FUrl+/fuZ2fCNIPC3H0UUPjuI9//zz5ravBHqRUKVTbCIO4esDnx+OzGPhqauYARSn/q9btw5HjhzB1atXzXYGVTGvPfjhyFNpEydORMuWLaO38//0f//3f9HbIiMjzWk84sw5b8xr4eXXX3+NntKf2hKa5u8PlSpVMnlc3phftH37dnOMeSqNeGrRcwoytfC0Gk/ZMaeJAZE3Ju7ztClPnfEUoHeQ1qBBA599IfZFxC4UIIk4hCc/hx94HNW45557TM2gW265JdZsMOajMEBJLG/J495770XFihXNhzuTpTkKdfToUZNLVKhQITMa4nHy5Elcu3bNjDowMPGFwQJ//qFDhxAIqT3Nn8fAF8/IjScAjZksHzNg9bfDhw+ba09Q5o1FRDmad/bsWZw+fTpOcOerP776IhLqdIpNxCEYBPDC0Z4xY8aYJOGYwRExYZjByWOPPYYNGzaYRGGOKDGViae9yFflbY4icTtP3RBHpThaxNN4nMWWHKGY5MuRlvh4j8CEgoR+B6HYH5GboVe6iETnpnAq/6233ooZM2bgvvvuMyMJng/E3bt3x/vcdu3amVGpKVOm4Pr16yaXhs9jEBYTRyO4FAhncvHn+eLJySlYsCCCBdtMnInmjQEkZ9n5Q+HChc01Z6alFk8+GHOvfOHIEQNjTuH3DqBFnEQBkohEfzByJIS1erxHfTgaNGfOnHify9Nl7du3N6dvOA2ceUqcel6kSJFYj0ubNm10XpGvejvMyeEIFqepcyp7sOAxoZ07d8a5j0nrPD7+UK9ePXPNafPJCdwYlCYnJ4rBD3ORvPPJaOrUqea6evXqGi0SR9OrX0QMzo7iiBGDFCboxhwh+e9//+szOIjJM5Np9OjR5vrZZ5/1+bgXX3zRXLOmT8xRKeY2devWzZyqY5IyayQFCxZQ9AQPMWedMeeKCc3+wlOczIlatGiROQ3qfTqTCe7Hjh2LMxoUX6HO+IJZnvpkMMyZiTFH8vg7Hjp0qLntz36JhCIFSCJiREREmNEfjkawcjVnK3EKP4sBfvDBB+bDNCFM+r7//vvNbRYtZIFDXzhjjDPbmBDOqe5MCm/VqpVJTGahQY4wDR48GMGEbXvqqadM0jJHtljIkaM97DP7wKrj/sCK2V9//bVJen755ZfNz23durX5eSyJwGn+niRr4jFmvhBLArB0AAMsXpgMnxBWLOdIEk+pcnkWHn+WYyhXrpw5XcjgKL7fn4hTKEASkWisZM0Ea0615ygSZ6bxQ5MjF5wWnhhWxSbWVWLAFR8mfH/22WemvhKDIs544wjWsGHDTDVnTxXtYMKyBa+99prJtWJVb44k9e7dG9OnT/frz2GFap5m9CS+c508/i44usfAMeYMNwY5HNUqU6aMqTvFJHlevGcaemMAxuPOpUs4YvXtt9+aCtr8HU+bNi3eGkgiThLGapFWN0JEQh/fSu68805zmmbXrl1aOFZEQlrQjiAxgfDNN980dVpYd+NmK9tyNga/EbVt29bUZ2FSI789ValSxXxL8ldypYjTcT005sI0btxYwZGIhLygHUHi+XTvpQsouc1l2XwO2zO4Yu4AK76ylD+HrFnUjAtfcrg8GIf0RUIBc174RWT+/Pkmf4n1k3jqR0QklAVtgDRixAgzu4JVenlh1VcGNMltLpMR+ebNBNOYU445vZVJllwLiXkEb7zxRir0QsT++OWD+UZMImaOTGou2yEiAqcHSN445fdmAqSEMLmSBe4YfHG6roiIiEhQ5yAFAmfnUMxpsyIiIiKODpA8RepYs0VERETEI/5CJQ7gqfXRrFmzZD+XVWg58sQZcaG4uKaIiIgTuVwuUyuMlegTWk7HsQESKwOzCF6OHDlM8bfEMP+JF49Dhw6Z4mwiIiISeg4cOGDKCMXHkQESK8Z2797djPxMnjw5ej2jxGbDseqsN65arhIBIiIioeHSpUumPAnPACXEcbPYuBAnF57kmkrjxo2LXjgzuSNI586dQ+HChXHixAmz9IC/sHAl10eqX7++WfncaZzef3L6MXB6/8npx8Dp/SenH4PIVOw/P7+5xM7Zs2cT/Px21AgSp/JzAU4GR1xJPKnBEaVPn95cvPEXlxov3tTab6hwev/J6cfA6f0npx8Dp/efnH4M0qZC/5O6P8fMYjty5IiJRHnN02sDBw60ukkiIiISpBwRIHHEqGHDhvjrr7/MKuOjR4+2ukkiIiISxGwTII0fPx6lS5c2y4Z4J2M1adIE27ZtQ6tWrTBx4kRNyxcREZEEBW0O0oIFCzBkyJDo/1+7ds1cV61aNXpb//79TfBDTJbmSuI8hRZT3759sX79eoSHh5v1op5++mmfP++TTz5JpZ6IiIhIqAnaAOn48eNmVXBvMbfxMUk5vUZRUVGYNm1avI9TgCQiIiJBf4qtY8eOZkp/Qhc+xoOz0rjNO9Dh/xPbT4hUOhARERGnB0giIiIiVlGAJCIiIuJFAZKIiEgwiYpC2KpVKLh6tbnm/x0lKjj6rwBJREQkWMyeDdx2GyLq10flUaPMNf9vtjvB7ODpvwIkERGRYMAg4PHHgYMHY28/dMi93e5B0uzg6r8CJBEREavxNFL37oCvWdWebT162Pd0W1Tw9T9o6yCJiIg4xpo1cUdOvIOEAweACId+bLv+6T+P04MPBuRHagRJRETEal6rQIj1x8mhoaiIiEgQyZ8/aY+bNQuoXh22s3Yt8Nhj/jtOfqAASURExGr/rDcaLy6yXqgQ0KwZEB4O22nWzN0/JmT7ykPy9L9GjYA1SafYRERErPTDD8Cjj8YOBmLy/H/MGHsGR8R+jR0bVP1XgCQiImKVn38GGjcGLl0CGjUCvvwSKFgw9mM4cjJzJtCiBWytRQt3P4Ok/zrFJiIiYoWtW4GGDYHz590zs5hflCmTqflzfeVKbFm0COUfeggRtWvbd+TIG4OgZs2Cov8KkERERALtjz8AVok+fRqoWhX49lt3cETh4XDVqoVDFy+iXK1azgmOPIKk/zrFJiIiEki7dwN16wLHjgEVKgCLFgFZs1rdKvGiAElERCRQWOyQwdHhw8BddwFLlgA5cljdKvFBAZKIiEgg/P23OzjauxcoVQpYuhTIndvqVkk8FCCJiIikthMn3DlHf/4JFC0KLF8e0KKHknwKkERERFLTmTPu2WrbtwMFCriDo8KFrW6VJEIBkoiISGq5cMFd52jzZiBPHndwVKKE1a2SJFCAJCIikhouXwYeeQRYvx645RZ3zlHp0la3SpJIAZKIiIi/Xb3qLnq4cqV7Cv933wHlylndKkkGBUgiIiL+dP060LYtsHixu/jjwoXAvfda3SpJJgVIIiIi/hIVBXToAMyZA6RPD3zzDfDAA1a3Sm6CAiQRERF/uHEDeO45YNo0ICLCvcBqvXpWt0pukgIkERGRlHK5gB49gEmTgDRp3EHSww9b3SpJAQVIIiIiKQ2OevcG3n3X/f8pU4CWLa1ulaSQAiQREZGUGDoUGDHCffuDD4CnnrK6ReIHCpBERERu1jvvAAMGuG+PGuXOQRJbUIAkIiJyM95/H3jllX9HkV5+2eoWiR8pQBIREUmuTz8FunRx32b+Ud++VrdI/EwBkoiISHLMmAF07uy+3b07MGyY1S2SVKAASUREJKm+/RZo395d8+jZZ4HRo4GwMKtbJalAAZKIiEhSLFninr7PpUQYJDEHScGRbSlAEhERSczq1UDz5sC1a8Bjj7lrHYWHW90qSUUKkERERBKyYQPQpAlw+TLQuPG/S4mIrSlAEhERic+WLUCjRsCFC0CdOsCsWUC6dFa3SgJAAZKIiIgv//sfUL8+cOYMUL068M03QIYMVrdKAkQBkoiIiLddu4B69YATJ4DKlYEFC4AsWaxulQSQAiQREZGY9u0D6tYFjhwB7r4bWLwYyJ7d6lZJgClAEhER8Th82B0c7d8P3H47sGwZkCuX1a0SCyhAEhERoePH3afV/voLKFYMWL4cuPVWq1slFgnaAGnTpk1488030aJFCxQqVAhhYWHmcrNOnz6N7t27o2jRokifPr257tGjB84w+U5ERJzt9GmgQQPg99+BggXdwVGhQla3SiwUtIUchgwZgm84Y8APTpw4gWrVqmHXrl0oXrw4mjdvjt9++w1jx47FokWLsH79euTMmdMvP0tERELM+fPAQw+5p/TnzesOjjiCJI4WtCNIDGj69++Pb7/9FkeOHDGjPjeLI0UMjjgatWPHDsyYMQPbt2/Hiy++iJ07d6Jnz55+bbuIiISIS5eAhx92F4PkF2XmHN1xh9WtkiAQtCNI//3vf/2yHwZX06dPR7p06fDee+8hIkb107fffhtffvklpk6dirfeegt5+c1BRESc4epV4NFH3cuIZMvmXmvtnnusbpUEiaAdQfKXxYsX48aNG6hRowZu9Uq246hU06ZNERUVhYULF1rWRhERCbDISKBVK3dQlDkzsGgRUKmS1a2SIGL7AOnXX3811xUrVvR5v2f71q1bA9ouERGxSFQU8OSTwLff8puy+/r++61ulQQZ2wdI+1nLApyM4Hs2gmf7PhYGExERe7txA3jmGWDGDCBtWmD2bPcaayKhkoPkLxe4wCCATJky+bw/M4dWzSSG8wnu5+rVq+bice7cOXMdGRlpLv7i2Zc/9xlKnN5/cvoxcHr/yenHINX673IhTffuCP/kE7jCwxE1dSpcXGstCI+zXgORsa5TY99weoDkL8OHD8frr78eZ/uSJUviDb5SYunSpXAyp/efnH4MnN5/cvox8Gv/XS6U+fRTlJo7F66wMGx+6SUc5Om1IM8/1Wtgqd/3eYkzF5PA9gFSln8WF4zvgFy8eNFcZ82aNcH99O7dO1Y5AI4gFS5cGA0aNEA2zn7wY2TLF0T9+vWRlsO/DuP0/pPTj4HT+09OPwap0f80gwcjfO5cczvq/fdRtnNnlEXw0msgMtX67zkDBKcHSEWKFDHXBw8e9Hm/ZzsrayeEM9581WLiLy41Xryptd9Q4fT+k9OPgdP7T04/Bn7r/1tvAUOHum+PHYuI555DqNBrIK3f+5/U/dk+SbtcuXLmevPmzT7v92wvWzaYv0uIiMhNGT+ehfXct4cPB156yeoWSYiwfYDUqFEjpEmTBmvWrMGxY8di3cek63nz5iE8PByNGze2rI0iIpIKJk8GXnzRfbt/f+C116xukYQQ2wRI48ePR+nSpU2uUEz58+dH27Ztce3aNXTp0gXXr1+Pvq9Xr144fvw42rdvryraIiJ2Mn26ezo/MX/UxyQbkZDMQVqwYIFZsNaDAQ5VrVo1ehvXamvSpEn0grRcZ41Li3gbM2YMfvzxR8yaNcsEUZUrVzaL1XI9tlKlSmHUqFEB6ZOIiATAnDnuQpAuF/D888DIkUBYmNWtkhATtAESR3Y2cPFALzG38TFJkTt3bvz0008YNGgQ5s6dizlz5phlR1566SUzdT9Hjhx+bbuIiFhk8WKgdWt3teynngImTFBwJPYKkDp27GguScXgh5f45MyZE+PGjTMXERGxoe+/dy8+y0KALVsCkyYBaWyTSSIBpleOiIiEvvXrgYcfBq5cAZo2BaZOBSKCdgxAQoACJBERCW0s19KoESv/Alw65KuvgHTprG6VhDgFSCIiErq2bwcaNGB5ZKBGDXeCdoYMVrdKbEABkoiIhKadO4F69YCTJ4H77gPmz+cK5Fa3SmxCAZKIiISevXuBunWBo0e5ZAKwaBHgx3UxRRQgiYhIaDl0CKhTh4tpAqVLA0uWcKqy1a0Sm1GAJCIioYMjRhw52rMHKFECWL4c0EoIkgoUIImISGg4dco9S23HDqBwYXdwVKCA1a0Sm1KAJCIiwY+z1DiVf9s2IF8+d3BUtKjVrRIbU4AkIiLBjfWNuO7mzz8DuXIBy5YBpUpZ3SqxOZUZFRGR4BEVhbBVq1Bw9WqEccp+tWpA8+bADz8A2bMDS5cCd91ldSvFARQgiYhIcJg9G+jeHREHD6Iy/z9qlLvoI5cPyZLFvRBthQpWt1IcQgGSiIgER3D0+OOAyxV7O4Mj6tULqFrVkqaJMykHSURErBUVZUaO4gRHMU2c6H6cSIAoQBIREWutWeMu+piQAwfcjxMJEAVIIiJirSNH/Ps4ET9QgCQiItbKn9+/jxPxAwVIIiJirRo1El5oNizMXTmbjxMJEAVIIiJirfHj3ZWy4wuOaMwYIDw8oM0SZ1OAJCIi1uHstB493LdbtQIKFYp9P/8/cybQooUlzRPnUh0kERGxxtSpwHPPuW+/+iowYgRw4waur1yJLYsWofxDDyGidm2NHIklFCCJiEjgzZoFdOzorn3Utas7OOLptPBwuGrVwqGLF1GuVi0FR2IZnWITEZHAWrgQaNvWXfiRQdK4cf/mGokECQVIIiISOCtWuPOJIiOB1q2Bjz8G0uijSIKPXpUiIhIYa9cCjzwCXL0KNGsGfP65TqFJ0FKAJCIiqW/jRqBxY+DiRaBBA2DGDCBtWqtbJRIvBUgiIpK6tm0DGjZ01zqqWROYMwdIn97qVokkSAGSiIiknh07gPr1gVOngCpVgPnzgUyZrG6VSKIUIImISOrYsweoWxc4ehQoXx5YtAjImtXqVokkiQIkERHxv4MH3cHRoUPAnXcCS5YAt9xidatEkkwBkoiI+BdHjOrVc48glSgBLF8O5MljdatEkkUBkoiI+M/Jk+6cI+YeFS7sDo7y57e6VSLJpgBJRET84+xZoFEj96w1BkUsClm0qNWtErkpCpBERCTlWN+oSRN3vaPcuYFly4CSJa1ulchNU4AkIiIpc+WKuzI2K2XnyOFOyC5TxupWiaSIAiQREbl5164Bjz/uzjXKksU9lb9CBatbJZJiCpBEROTmXL8OPPEEsGABkDGjuwhk1apWt0rELxQgiYhI8t24AXTuDMycCaRL514+pFYtq1sl4jcKkEREJHlcLqBLF+Dzz4HwcOCrr9xrrYnYiAIkERFJXnDUsyfw4YdAWBgwdao7QVvEZhQgiYhI0vXvD4wZ4749aRLQpo3VLRJJFQqQREQkaYYPB4YNc98ePx7o1MnqFok4M0C6fPkyBgwYgNtvvx0ZMmRAgQIF0LlzZxzi4ofJtHTpUjRp0gR58uRB2rRpkStXLjRo0ABzmFgoIiIJGzsW6NPHffutt4CuXa1ukYgzA6QrV66gTp06GDJkCC5cuIBmzZqhcOHCmDJlCipUqIDdu3cneV9jxowxwdCiRYtMsPXYY4+hdOnSWLZsGVq0aIG+ffumal9ERELaxIlAjx7u2wMHAq++anWLRJwbIA0dOhQ//vgjqlWrhp07d2LGjBnYsGED3nnnHRw/ftyMJCUFH/vaa6+ZUaOVK1di7dq1+PLLL831999/j/Tp02P48OHJCrhERByDSdjPPee+zcCIAZKIAwRlgHTt2jWM5/ltABMmTEAWVmf9R8+ePVG2bFmsWrUKmzZtSnRfDKquXr1qRqNqedXoqFmzJho2bAiXy4WNXD9IRET+NWsW0LGje+YaT6mNGOGeuSbiAEEZIHF05+zZsyhRooQ5nebtcZa1BzBv3rxE98URoqRgTpKIiPxj4UKgbVsgKsodJI0bp+BIHCUoA6Rff/3VXFesWNHn/Z7tW7duTXRf9913H3LkyIEVK1aYUaeYVq9eje+++w6lSpVCjRo1/NJ2EZGQt2IF0KIFEBkJtG4NfPwxkCYoPy5EUk0EgtD+/fvNdaFChXze79m+b9++RPeVPXt2TJo0Ce3atUPt2rVx//33m+cfPHgQ69atQ/Xq1fHZZ58hHUvlJ4Cn6XjxOHfunLmOjIw0F3/x7Muf+wwlTu8/Of0YOL3/Vh+DsHXrEP7IIwi7ehU3mjZF1OTJ7mVFeAkQvQZ0DCJTsf9J3WdQBkictUaZMmXyeX/mzJnN9fnz55O0P85U4wy2Vq1amdN3HtmyZTOz2woWLJjoPpjI/frrr8fZvmTJknjbmRIsS+BkTu8/Of0YOL3/VhyDHLt24f4BAxB26RKOlS+PDU89hRsW/h70GtAxWJoK/b906VLoBkj+xplvvXr1QvPmzTFo0CAUL17czFpjjSVemMg9n6tQJ6B3794mQTzmCBLLDjDAYqDlz8iWL4j69eubmXdO4/T+k9OPgdP7b9kx2LYNEZ07m+DoRo0auGXePDRKhS9/SaHXgI5BZCr233MGKCQDJM+stfiivIsXL5rrrFmzJrovTuV/5ZVXTN7S119/jTT/nEe/5557MHPmTFSuXBkLFiwwI0wPPfRQvPthsrevhG/+4lLjxZta+w0VTu8/Of0YOL3/AT0GO3YAjRsDp04BVaogzYIFSJOE99fUpteAjkHaVOh/UvcXlFl3RYoUMdfME/LFs71o0aKJ7utzrjYN4NFHH40OjjzCw8PN6TdPwraIiOPs2QPUrQscPQqULw8sWsRvn1a3SsRyQRkglStXzlxv3rzZ5/2e7ayHlBhPMMVkbV8820+fPn3T7RURCUl8f2RwxOWb7ryTSZXALbdY3SqRoBCUARJnljFw+euvv7Bly5Y49/PUGDVt2jTRfeXLl89cx1cI8ueffzbXt912WwpbLSISQjhiVK+eewSpRAlg+XIgTx6rWyUSNIIyQOKU+27dupnbXbt2jc45olGjRpn6R6yKXalSpejtrLzN9dWYTB0TE7Ppiy++iJOI/c0332DatGnm1BtPwYmIOMLJk0D9+u7co8KF3cFR/vxWt0okqARlkjb169fPLCbLWkWeQo6se8QZZ3ny5MFk1uaI4cSJE9ixYweOHDkSJ0Bq2bKlSdDmiBOTsosVK4Y9e/ZEjyoNGzYMd9xxR0D7JyJiibNngUaNzKw1ExSxKGQS8jlFnCYoR5AoQ4YMZnHZ/v37mzpDc+fONQFSx44dTQ4Sp+onRVhYmFnolsUiufbarl27MGfOHOzduxeNGzc2s9f69OmT6v0REbEcR+ObNGHOAZA7N7BsGVCypNWtEglKQTuCRBkzZsTgwYPNJTGsb8RLfEFS586dzUVExJGuXAGaNeNil0COHO6E7DJlrG6VSNAK2hEkERHxk2vXuMq3O9eIdeY4ld/HQuAi8i8FSCIidnb9OvDEE8CCBRyWBzhZpWpVq1slEvQUIImI2BUXmGVqAUujcEHuOXOAWrWsbpVISFCAJCJiRy4X0KULlxPgsgHAV18BDRta3SqRkKEASUTEjsERF9f+8EPOUgGmTnUnaItIkilAEhGxm/79gTFj3LcnTQLatLG6RSIhRwGSiIidDB/O6rfu2+PHA506Wd0ikZCkAElExC7GjgU8hW/feotrNVndIpGQpQBJRMQOJk4EevRw3x44EHj1VatbJBLSFCCJiIQ6JmE/95z7NgMjBkgikiIKkEREQtmsWUDHju6ZazylNmKEe+aaiKSIAiQRkVC1cCHQti0QFeUOksaNU3Ak4icKkEREQtGKFUCLFkBkJNC6NfDxx0AavaWL+Iv+mkREQs3atcAjjwBXr7oLQHqqZYuI3yhAEhEJJRs3Ao0bAxcvAg0aADNmAGnTWt0qEdtRgCQiEiq2bXOvp3buHFCzpnvx2fTprW6ViC0pQBIRCQU7dgD16wOnTgFVqgDz5wOZMlndKhHbUoAkIhLs9uwB6tYFjh4FypcHFi0Csma1ulUithZhdQNERCSGqCiErVqFgqtXIyxzZqBUKXdwdOgQcOedwJIlwC23WN1KEdtTgCQiEixmzwa6d0fEwYOozP+PGgVERADXrwMlSgDLlwN58ljdShFHUIAkIhIswdHjj7srYsfE4MizhEj+/JY0TcSJlIMkImI1VsLu3j1ucOTB6tjDhrkfJyIBoQBJRMRqa9YABw/Gfz8DpwMH3I8TkYBQgCQiYrUjR/z7OBFJMQVIIiJWS2pukXKQRAJGAZKIiNWqVQMyZoz/fuYgFS4M1KgRyFaJOJoCJBERK924ATz7LHD5cvzBEY0ZowVpRYI1QOrcuTMmT54c/f/9+/fjFMvei4hI8jH5uksX4PPP3cHPf/8LFCoU+zH8/8yZQIsWVrVSxJGSFSB98skn+OGHH6L/X6xYMbzK2hwiIpL84KhnT+DDD92jRFOnAm++Cezdi+tLl2Jjz57m2iwzouBIJLgLRaZNmxZXrlyJ/r/L5TIXERFJpv793afNaNIkoE0b9+3wcLhq1cKhixdRrlYtnVYTCYURpMKFC2PNmjXYt29f6rVIRMTuhg93F36k8eOBTp2sbpGIpCRAateuHQ4dOoTixYsj/J9vNZ9++qm5ndglgusJiYg43dixQJ8+7ttvvQV07Wp1i0TEh2RFLYMGDUKOHDnwzTff4ODBg9izZw8yZcqE3LlzJ2c3IiLONHEi0KOH+/bAge711UQk9AOkNGnSoGfPnubi+X/Lli1jzWwTEREfmIT93HPu2wyMGCCJiD1Osa1evRo7d+6M/n+HDh3wwAMPpEa7RETsY9YsoGNH98w1nlIbMeLf+kYiEvoB0oMPPog3OQ31H3v37sWJEydSo10iIvawcCHQti0QFeUOksaNU3AkYrdTbGFhYbjBqq//WLVqlamFJCIiPqxY4a5hFBkJtG4NfPwxcxOsbpWIJEGy/lJz5syJP//8MzlPERFxprVrgUceAa5eBZo1+7datojYbwSJ+UbffvstateuHT1yxMraXIIkKaNPk1gMTUTE7jZuBBo3Bi5eBBo0AGbMYKVdq1slIqkVIL3zzjsm74in1nihXbt2mUtiFCCJiCNs2wY0bAicOwfUrAnMmQOkT291q0QkNQMkFojcvHmzCZIOHDhgkrYbNWqE/3KBRRERp9uxA6hfH+Ai3lWqAPPnA5kyWd0qEbkJyS5vzZEgnl7znGLLly8fanG9oFRw+fJlDB8+HF9++SX2799vcqAYkA0ZMgQFCxZM9v4Y2HEW3nfffYfDhw8ja9asKFWqFFq0aKFFd0UkZbiobN26wNGjQPnywKJFQNasVrdKRG5Sitb/iDmjzd+4KG6dOnXw448/In/+/GjWrJkJcKZMmYL58+eb7RzRSqpFixbh8ccfN0FXxYoVUbVqVZw8eRLbtm3Dhx9+qABJRG7ewYPu4OjQIaBMGWDJEuCWW6xulYikgN8WSLt27Rq2bNli1mojjvCUL18e6dKlu6n9DR061ARB1apVw5IlS5AlSxazfdSoUfjPf/5jEsO///77JO3rjz/+MKNEHDFaunQp7r///lhBHk8biojcFI4Y1avnHkEqUQJYtgzIk8fqVolICqXxx0hPr169kCdPHhPMcJSGF97mNuYn8THJDbbGc4VrABMmTIgOjojLnJQtW9YkiW/atClJ++Nz2IZPPvkkVnDkWS6lcuXKyWqfiIhx8qQ754i5R0WKAMuXA/nzW90qEbF6BOnq1auoV68e1q9fb/7PwOW2224zeUo8Hfbrr79i5MiRWLt2LZYvX470SZzJwcefPXsWJUqUQIUKFeLczwBs69atmDdvHipVqpTgvphMzpwjno5rzGm3IiL+cPYs0KiRe9YagyIGR0WLWt0qEQmGAGn06NFYt26dqY/EkZ577rkn1v3bt29Ht27dsGbNGowZMybJs90YWBFzhXzxbGeQlBiehuNpNI4cXb9+HbNnzzYBWFRUFO6++260bt0atyhXQESSg/WNmjRx1zvKndt9Wq1kSatbJSLBEiBNnz7dnEZbsGCBye/xxgCECdUcCfriiy+SHCBxxhoVKlTI5/2e7fv27Ut0X//73//MNU/T1ahRw+Q1xdS3b1/MnDnTFL8UEUkUUwZYGZuVsnPkcCdkMzFbRGwlRQESC0Q+/PDDPoMjDwYmrJfEQCmpLly4YK4zxVM/JHPmzOb6/Pnzie7r9OnT5vrjjz82bZk2bZopFXD8+HFTLmDq1Kl49NFH8dtvvyVYOoCnE3nxOMcicOASS5Hm4i+efflzn6HE6f0npx+DoO7/tWsIb9UKaZYvhytLFkTNnw/X3Xe711pzyjEIAKf3n5x+DCJTsf9J3WeKAqSIiAhcunQp0cfxMXysFTylCHh6jdP5W7VqZf7P02qff/45duzYgZ9//hnvvfcehg0bFu9+WI/p9ddfj7OdM+ziC+RSgrPtnMzp/SenH4Ng639YVBQqjxyJAuvX43q6dPjxtddw8sQJYOFCxxyDQHN6/8npx2BpKvQ/KXELpShqYc7RihUrsHv37nhrEu3Zs8c8Jr58Il88s9bi68RFnv8Ha7BlTfK+eN2yZcs493fq1MkESJ6lU+LTu3dvMxsu5ghS4cKF0aBBA2TLlg3+jGz5gqhfvz7SOnDtJqf3n5x+DIKy/zduIPzpp5Fm/Xq4WLpk9mxU4RprTjoGAeT0/pPTj0FkKvbfcwYoVQOk5557Dh06dDCn0AYOHIh27dohY8aM5j4WZGQF7EGDBpkp9s8//3yS91uE02VN7bWDPu/3bC+ahBkjnsdwn5xd542z7ujYsWMJ7ocz8HzNwuMvLjVevKm131Dh9P6T049B0PTf5QL4/vXFF0B4OMK++goRTNB20jGwiNP7T04/BmlTof9J3V+KAqQnn3wSP/zwAyZOnIj/+7//M5fcnNEB4ASHns17i8sEUk888USS91uuXDlzHV8BR892lhVIjKdMgCcXydsprpkUY6RJRCRWcMSR448+4jpLwNSp7gRtEbG9FBeKZF7P119/bab6Mypj8jMvvM1ZY7zv/fffT9Y+q1evjuzZs+Ovv/4y1bm9cdYZNW3aNNF9cXp/rly58Pfff5t8I2+eU2u+6i2JiMP17w+MGeO+PWkS0KaN1S0SkVAJkOixxx4zgQZnnx05csRceJs1iHhfcnF5EtZPoq5du0bnHHmWGmH9Iy6QG7NIJCtvly5d2uQKxcTkcOYOcSSL+4p57nHZsmWmujZPvXGUS0Qk2htvAJ6JGxMmMGHR6haJSAD5dWoZg5Fbb73VL/vq16+fCWBYiLJUqVJmNIp1jzZs2GBqL02ePDnW43lKjyNEDM68cSHalStXmv3dfvvtZqFaPp41kVgwkrPX7rvvPr+0W0RsgKNGffu6b7/1FtCli9UtEpFQGkFiAcg333zTnL7ytwwZMpigpn///mYa/dy5c02A1LFjR5ODFN+sOV94um/hwoUYMWKEyZHi0iPbtm0zo1BcrqRPnz5+b7+IhKiJE4GXX3bfHjSI37CsbpGIhFqAxPXWWImaM8RatGiBxYsXm1NZ/sIZcYMHDzYFKVmkkaNDU6ZM8Vlhm7Pl+LN5yiy+IImL6nL5E86w41pvXB+OhS5FRAwmYXtOtzMwGjDA6haJSCgGSBzRGTBgAPLnz29GeJo0aWKmzTOoiW+KvohIUJo1C+jQwT1zrWtXYMQI98w1EXGkFAVIHMlh/SOOJPEUVvPmzc3pNo7mFCtWzMwy+/bbb6OrWYuIBCVWw27b1hSENMnY48YpOBJxOL/MYuMsMK5vNmvWLBw4cMDkJTFA4iK2XOeMFaeZS8RASkQkqCxfDrRo4V5PjdP4mYOUxi9vjSISwvz+LpA3b16T6/P777/j5ZdfNnlBzB3iTLGSJUuiWbNmPmsbiYgE3Nq1wCOPcDVqdwHIzz4z1bJFRPweIHnykpiLNOafAmss1shp+wyQOGuMU+rnzJnj7x8tIpJ0GzcCjRtz0UeA66rNmMHZHFa3SkTsFCBdv37dnF7jaTZO/R86dCjOnz+PF154wRR15HIkTNz+448/MGPGDISHh5sgSkTEEtu2AQ0bctVKoGZNgF/YfKy1KCLOlaJCkX/++Sc+/vhjfPrpp2Z5EZ5Oq1ixolmYlgvXsn6Rt5YtW+Krr74yydsiIgHHJYfq1eNCjECVKsD8+YCP9yoRcbYUBUh33HGHSdBmvaJOnTqZwKhy5cqJPo/rrEUyIVJEJJD27AHq1gWOHQPKlwcWLQKyZrW6VSJit1NsZcqUwdixY3H48GEzkpSU4Ij4WE39F5GAYm02BkeHDvHNC1iyBLjlFqtbJSJ2HEFiVWoRkaB39Kg7OOIIUsmSXKkayJPH6laJSBBTsQ8RsbeTJ4H69YGdO4EiRdx1j/Lnt7pVImLnESSPS5cumYVlmbTN2Wu+1mNjrhKLRYqIBMzZs+7Zapy1xqCIwRGDJBGR1A6QuDgsC0Ke43TZfzBAYkDk/X8FSCISMBcvAk2aAJs2Ablzu0+r8fSaiEhqn2JbtmwZnn76aRP89OnTB9WqVTPbP/zwQ7z66qumMCSDo27dumHy5Mkp+VEiIkl3+bK7QjYrZefIASxd6k7MFhEJRID0zjvvmOCIp9eGDBmCUqVKme3PPvusWY/tt99+Q48ePUxwVKlSpZT8KBGRpLl2DXj8cWDFCiBLFmDxYveUfhGRQAVIP//8M6pWrYpy5cr5vD8iIgIjR44067MNHDgwJT9KRCRx168D7doBCxcCGTO6i0CyGKSISCADpAsXLqBIjITH9P+U6meidvQPSJMGVapUwZo1a1Lyo0REEsbaap06AbNmAenSAXPnArVqWd0qEXFigJQvXz6cYrn+f+T/Z+rsTk6njYGPucycABGR1MCZsy+8AEydCoSHA1995V6AVkTEigCpdOnSZmq/x/3332+Sst96663oqf7r1q3DihUrzLIkIiJ+x/eanj2Bjz7ikDXwxRdAs2ZWt0pEnBwgNWnSBHv27MFPP/1k/l+3bl2ULVsWM2fORMGCBU1idu3atc2yIkzWFhHxO5YPGTPGfXvSJKB1a6tbJCJOD5CeeuopLFq0yCRhm52lSYMFCxagfv36OHbsGH755RdkypQJQ4cORfv27f3VZhERtzfeAIYNc9+eMAHo2NHqFomITaSoUGT27NnRkFVqY+DI0eLFi0117bNnz5rgKZw5ASIi/sRRo7593bfffhvo0sXqFomI0wOkhQsXYu7cuThw4ICZucbTap06dUKxYsWiH8ORI15ERPyO+UYvv+y+PWgQ8MorVrdIRJweID3xxBP48ssvzW1PIva8efNMvSNuf4TVa0VEUgtnqj3/vPv2q68CAwZY3SIRcXqANGnSJEyfPt0UgHzyySdRoUIFU/No/vz5WL9+vclJ2rdvnzn1JiLid6xx1KGDe+Za167AiBFcCdvqVomI0wOkTz/91CRiMzGbM9Y8evfubU6xffbZZ5g9e7a5LSLiVwsWAG3b/lsQctw4BUciEhyz2LZt22aWFokZHHlwsVqecuNjRET8avly4LHHgMhIoE0bYOJEd80jEZFUkqx3mHPnzqFEiRI+7/Ns52NERPxm7VqAuY1Xr7oLQH72mbtatohIsJxi4whRfFP2eeqNWBRSROSmREUhbNUqFFy9GmGZMwNZswKNGwOXLgEsKTJjBpA2rdWtFBEHSFEdJBERv5k9G+jeHREHD6Iy/z9qlDvHiAnZNWu67/9nQWwRkdSW7JP4TNTmKJKvS1hYWLz3c+abiIhPDH4efxw4eDD29n9KieD//o/F1Sxpmog4U7IDJJ5mu5mLTr2JiE9RUWbkKDoY8sZRpN693Y8TEQnGAIlBTkouIiJxrFkTd+QoJgZOBw64HyciEiCaJysi1jpyxL+PExHxAwVIImKt/Pn9+zgRET9QgCQi1ipbNuGp+8xBKlwYqFEjkK0SEYdTgCQi1rl40V0EkhWyyXvpEM//x4xRcUgRCSgFSCJijcuX3cERK2XnyAGMHAkULBj7MYUKATNnAi1aWNVKEXEoFScSkcC7ds1d92jFCiBLFmDxYqBKFaBHD1xfuRJbFi1C+YceQkTt2ho5EhFLKEASkcC6fh1o1w5YuBDImBFYsMAdHFF4OFy1auHQxYsoV6uWgiMRsYxOsYlI4LAeWqdOwKxZQLp0wNy57mVERESCjAIkEQkMFnx84QVg6lSASw99/TXQoIHVrRIRCb0A6fLlyxgwYABuv/12ZMiQAQUKFEDnzp1x6NChFO33zz//RMaMGc3acfXq1fNbe0UkgeCoZ0/go4+ANGncQRITtEVEglTQBkhXrlxBnTp1MGTIEFy4cAHNmjVD4cKFMWXKFFSoUAG7d+++6X3/3//9H65everX9opIAvr3d0/Vp0mTgNatrW6RiEhoBkhDhw7Fjz/+iGrVqmHnzp2YMWMGNmzYgHfeeQfHjx83I0k3Y9KkSfj+++/x7LPP+r3NIuLDG28Aw4a5b0+YAHTsaHWLRERCM0C6du0axo8fb25PmDABWTgN+B89e/ZE2bJlsWrVKmzatClZ+z169CheffVV1K9fH23btvV7u0XEC0eN+vZ13377baBLF6tbJCISugHS2rVrcfbsWZQoUcKcTvP2OOunAJg3b16y9tu9e3eT1/Tee+/5ra0iEg/mG738svv2oEHAK69Y3SIRkdAOkH799VdzXbFiRZ/3e7Zv3bo1yftcuHChOU3Xp08flCxZ0k8tFRGfmIT9/PPu2716AQMGWN0iEZHQD5D2799vrgtxmQEfPNv37duXpP1dvHgRXbp0wR133IH//ve/fmypiMTBGkcdOrhnrnXrBrz5Ztw11kREglxQVtLmrDXKlCmTz/szZ85srs+fP5+k/fXr188EUytXrkQ6Fqe7CZz1FnPm27lz58x1ZGSkufiLZ1/+3GcocXr/Q/0YhC1ciPC2bRF24wZudOiAKK6vxsrZDum/vzj9GDi9/+T0YxCZiv1P6j6DMkDyp40bN2LcuHF46qmn8OCDD970foYPH47XX389zvYlS5bEG8ilxNKlS+FkTu9/KB6D3L/+iqpDhyIsMhIHa9TAJtY54hprDul/anD6MXB6/8npx2BpKvT/0qVLoRsgeWatxdcJnjKjrFmzJrif69evm+n8OXLkwEh+k02B3r17mxl0MUeQWJepQYMGyJYtG/wZ2fIFwZl2adOmhdM4vf+hegzC1q1D+IgRJji60bQpbv3ySzS+ybaHYv/9zenHwOn9J6cfg8hU7L/nDFBIBkhFihQx1wcPHvR5v2d70aJFE9wPH7dlyxbky5cPLVu2jHXfmTNnzDVLBXhGllgfKT7p06c3F2/8xaXGize19hsqnN7/kDoGGze6q2LzC03Dhkjz9ddI4+Nvxbb9T0VOPwZO7z85/RikTYX+J3V/QRkglStXzlxv3rzZ5/2e7ayHlBR///23ufjCQIk1lUTkJmzbZoIi8BtZrVrA7Nn8NmF1q0RE7DmLrXr16siePTv++usvMwLkbebMmea6adOmCe7ntttug8vl8nlhwjbVrVs3epuIJMOOHQDXMjx1CqhalYXJOLPC6laJiNg3QOJMs26cHgyga9eu0TlHNGrUKFP/qFatWqhUqVL0dlbeLl26tMkVEpFUtmcPv10Ax44B5csDixYxKdDqVomI+E1QnmLzTM1ftmwZ1q1bh1KlSqFGjRpmqj7XY8uTJw8mT54c6/EnTpzAjh07cOTIEcvaLOIIzAGsUwc4dAgoU4ZTOYEcOaxulYiI/UeQKEOGDOY0WP/+/c00+rlz55oAqWPHjiYHqXjx4lY3UcR5jh51jxzt3QuwIv2yZUCePFa3SkTEOSNIlDFjRgwePNhcEjNo0CBzSSrOXFPekUgynDwJ1K8P7NzJqabA8uVA/vxWt0pExFkjSCISRM6edc9W46w1BkUMjv4pxyEiYkcKkEQkYZwk0aQJi4YBuXO7T6tpwWcRsTkFSCISv8uX3UUg1651J2Kz7D8Ts0VEbE4Bkoj4du0a8PjjwIoVXP/Hva4ap/SLiDiAAiQRiev6daBdO2DhQs6WABYsAKpUsbpVIiIBowBJRGK7cQPo1AmYNYtVW4G5c4GaNa1ulYhIQClAEpF/sfTFCy8AU6cCERHA118DDRpY3SoRkYBTgCQi/wZHPXsCH30EpEnjDpKYoC0i4kAKkETErX9/YMwY9+1Jk4DWra1ukYiIZRQgiQjwxhvAsGHu2xMmAB07Wt0iERFLKUAScTqOGvXt67799ttAly5Wt0hExHIKkEScjPlGL7/svs21DF95xeoWiYgEBQVIIk7FJOznn3ff7tULGDDA6haJiAQNBUgiTsQaRx06uGeudesGvPkmEBZmdatERIKGAiQRp2FV7LZt/y0IOXasgiMRES8KkEScZPly4LHHgMhIoE0bYOJEd80jERGJRe+MIk6xdq278OPVq0CzZsBnnwHh4Va3SkQkKClAEnGCjRuBxo2BS5eAhg2BGTOAtGmtbpWISNBSgCRid9u2uYOic+eAWrWA2bOB9OmtbpWISFBTgCRiZzt2APXqAadOAVWrAvPmAZkyWd0qEZGgpwBJxK727AHq1gWOHQPKlwcWLQKyZrW6VSIiIUEBkogdHTwI1KkDHDoElCkDLFkC5MhhdatEREKGAiQRuzl61D1ytHcvULIksGwZkCeP1a0SEQkpCpBE7OTkSaB+fWDnTqBIEXfdo/z5rW6ViEjIUYAkYhdnz7pnq3HWGoMiBkcMkkREJNkUIInYwcWLQJMmwKZNQO7c7tNqPL0mIiI3RQGSSKi7fNldIZuVspmIvXSpOzFbRERumgIkkVB27Rrw+OPAihVAlizA4sXuKf0iIpIiCpBEQtX160C7dsDChUDGjMCCBUCVKla3SkTEFhQgiYSiGzeATp2AWbOAdOmAuXOBmjWtbpWIiG0oQBIJNS4X8MILwNSpQEQE8PXXQIMGVrdKRMRWFCCJhFpw1LMn8NFHQJo07iCJCdoiIuJXCpBEQkn//sCYMe7bkyYBrVtb3SIREVtSgCQSKt54Axg2zH17wgSgY0erWyQiYlsKkERCAUeN+vZ13377baBLF6tbJCJiawqQRIId841eftl9e9Ag4JVXrG6RiIjtRVjdABGJISoKYatWoeDq1QjLnBk4fBh4/nn3fb16AQMGWN1CERFHUIAkEixmzwa6d0fEwYOozP+PGvXvfd26AW++CYSFWdhAERHnUIAkEizBEZcM4TR+X2rVUnAkIhJAykESsVpUlBk5ijc4YmDE2kd8nIiIBIQCJBGrrVkDHDwY//0MnA4ccD9OREQCIqgDpMuXL2PAgAG4/fbbkSFDBhQoUACdO3fGoUOHkryPM2fOYNq0aWjbti2KFSuGdOnSIWvWrKhSpQrGjh2LyMjIVO2DSKKOHPHv40RExL45SFeuXEGdOnXw448/In/+/GjWrBn27t2LKVOmYP78+WZ78eLFE93PyJEjMWzYMISFhaF8+fImMDp+/DjWrl2Ln376CTNnzsR3332HTJkyBaRfInHkz+/fx4mIiH1HkIYOHWqCoGrVqmHnzp2YMWMGNmzYgHfeeccEOBxJSorMmTOjV69eJrjavHkzvvzySyxfvhzbtm1DkSJF8MMPP5ifJWKZPHnc66rFhzlIhQsDNWoEslUiIo4WlAHStWvXMH78eHN7woQJyJIlS/R9PXv2RNmyZbFq1Sps2rQp0X317t0bI0aMMMFQTKVKlcKbnDYNYPr06X7vg0iS7N4NNGwI3Ljh/r/3TDXP/1lJOzw88O0TEXGooAyQePrr7NmzKFGiBCpUqBDn/sc5HRrAvHnzUvRzypUrZ64PsxifSKAx8bpuXYA5dWXKAFOmAAULxn5MoULAzJlAixZWtVJExJGCMgfp119/NdcVK1b0eb9n+9atW1P0c3bz2zuAfPnypWg/Isn2999AvXrA3r1AyZLAsmXuHKMnn8T1lSuxZdEilH/oIUTUrq2RIxERCwRlgLR//35zXYjfnn3wbN+3b1+Kfg5nsRETwEUC5uRJoH59YOdOgKd+ly//NwE7PByuWrVw6OJFlGNxSAVHIiKWCMoA6cKFC+Y6vpllTLym8+fP3/TP+OCDD7Bs2TLkyJEDr732WqKPv3r1qrl4nDt3zlyzTIA/SwV49uXU8gO27/+ZM4ho2BBh27fDlT8/rn/3nTs4itFf2x+DRDi9/+T0Y+D0/pPTj0FkKvY/qfsMygApta1Zswbdu3c3U/8nT55s6islZvjw4Xj99dfjbF+yZEmqlAhYunQpnMyO/Q+/fBn3DxqEnDt24Gr27PihTx9c2LED4MUhxyA5nN5/cvoxcHr/yenHYGkq9P/SpUuhGyB5Zq3F14mLFy+aaxZ8TK7t27ebU2qcKTdu3Dg8+uijSXoeZ8NxBl3MEaTChQujQYMGyJYtG/wZ2fIFUb9+faRNmxZOY9v+X76M8GbNkGbHDrhy5ECapUtR859JAo45Bknk9P6T04+B0/tPTj8GkanYf88ZoJAMkDxT8g/Gs/yCZ3vRokWTtd89e/aYgOb06dMYNGgQXnzxxSQ/N3369Obijb+41HjxptZ+Q4Wt+s9Ts23aAN9/z6geYd99h7SVKzvrGNwEp/efnH4MnN5/cvoxSJsK/U/q/oJymr9n+j0LO/ri2c56SEl15MgRE4nymqfXBg4c6KfWiiTg+nWgbVtg0SIgY0ZgwQLgvvusbpWIiIRigFS9enVkz54df/31F7Zs2RLnfi4PQk2bNk3S/jhi1LBhQ7O/Tp06YfTo0X5vs0gcUVFAhw7AnDlAunTAN9+oGraISIgIygCJC8p269bN3O7atWt0zhGNGjXK1D+qVasWKlWqFL2dlbdLly5tcoViYh5TkyZNzNIirVq1wsSJE01ytkiqYmXs558Hpk0DIiLcxR45tV9EREJCUOYgUb9+/cw0/HXr1pllQWrUqGHqHnE9tjx58pjZZzGdOHECO3bsMKfQYurbty/Wr1+P8PBwRERE4Omnn/b58z755JNU7Y84iMsF9OgBfPyxe421L77gcKfVrRIRETsESBkyZMDKlSvN9Ppp06Zh7ty5yJkzJzp27IghQ4bEW0TS1+k1ioqKMvuJjwIk8VtwxFHMd991/5+BfKtWVrdKRETscIrNI2PGjBg8eDB27dplijRydGjKlCk+gyPOSnO5XHECHf6f2xO7iPjF0KHAiBHu2++/785BEhGRkBPUAZJISHnnHWDAgH9vMwdJRERCkgIkEX/gaNErr7hvDxkCxCgqKiIioUcBkkhKffop0KWL+zbX9evb1+oWiYhICilAEkmJGTOAzp3dt196CXjjDUBlJEREQp4CJJGb9e23QPv27ppHzzwDjBmj4EhExCYUIIncjCVLgJYt3UuJPPEE8MEHCo5ERGxEAZJIcq1eDTRvDly7BrRowVoSQHi41a0SERE/UoAkkhwbNgBNmgCXLwONGwPTp7uXEhEREVtRgCSSVFw4uVEj4MIFoE4d9/pqXIRWRERsRwGSSFL873/uxWbPnAHuvx/45huWere6VSIikkoUIIkkZtcuoF49rogMVKoELFwIZMlidatERCQVKUASSci+fUDdusCRI8DddwPffQdkz251q0REJJUpQBKJz+HD7uBo/37g9tuBZcuAXLmsbpWIiASAAiQRX44fd59W++sv4LbbgOXLgVtvtbpVIiISIAqQRLydPg00aAD8/jtQsKA7OCpUyOpWiYhIAClAEonp/HngoYfcU/rz5nUHR8WLW90qEREJMAVIIh6XLgEPP+wuBpkzJ7B0KXDHHVa3SkRELKAASYSuXgUefdS9jEi2bO7ZamXLWt0qERGxiAIkkchIoFUr9wK0mTK56xxVrmx1q0RExEIKkMTZoqKAJ58Evv0WSJ/efV29utWtEhERiylAEue6cQN45hlgxgwgbVpg9mx33SMREXE8BUjiTC4X0K0b8MknQJo0wPTpQOPGVrdKRESChAIkcWZw9OqrwPvvA2FhwKefAo89ZnWrREQkiChAEucZNAh45x337Q8/BNq3t7pFIiISZBQgibOMGAEMHuy+PWYM8OyzVrdIRESCkAIkcY533wVee819+403gO7drW6RiIgEKQVI4gyTJgEvveS+3a8f0Lu31S0SEZEgpgBJ7G/atH9Ppb388r+n2EREROKhAEnsbc4c4Kmn3DPXnn/enZzNmWsiIiIJUIAk9rVoEdC6tbtaNoOkCRMUHImISJIoQBJ7WrkSaNHCvc5ay5buHCQWhBQREUkCfWKI/axbBzRtCly5Ajz8MDB1KhARYXWrREQkhChAEnvZtAl46CHg4kWgXj3g66+BdOmsbpWIiIQYBUhiH9u3Aw0aAOfOAQ88AMydC2TIYHWrREQkBClAEnvYudM9YnTqFHDvvcCCBUDmzFa3SkREQpQCJAl9e/cCdesCR48CZcsCixcD2bJZ3SoREQlhCpAktB06BNSpAxw8CJQuDSxdCuTMaXWrREQkxClAktDFESOOHO3ZAxQvDixbBuTNa3WrRETEBhQgSWhirlH9+sCOHUDhwsDy5UDBgla3SkREbEIBkoSes2eBhg2BbduAfPncwdFtt1ndKhERsREFSBJaWN+oSRNg40YgVy73abVSpaxulYiI2IwCJAkdrIzdrBmwdi2QPTuwZAlw111Wt0pERGwoqAOky5cvY8CAAbj99tuRIUMGFChQAJ07d8YhzlxKptOnT6N79+4oWrQo0qdPb6579OiBM2fOpErbxc+uXQMef9x9Oo31jbgQbcWKVrdKRERsKmgDpCtXrqBOnToYMmQILly4gGbNmqFw4cKYMmUKKlSogN27dyd5XydOnMB9992HcePGISIiAs2bN0fWrFkxduxYVKlSBaeY8CvB6/p1oF07d/FHVsaePx+oVs3qVomIiI0FbYA0dOhQ/Pjjj6hWrRp27tyJGTNmYMOGDXjnnXdw/PhxM5KUVBwp2rVrF1q0aIEdO3aYfW3fvh0vvvii2XfPnj1TtS+SAjduAJ06AbNmAWnTAnPmAA8+aHWrRETE5oIyQLp27RrGjx9vbk+YMAFZsmSJvo/BTNmyZbFq1Sps4sKkiThy5AimT5+OdOnS4b333jMjSB5vv/028uTJg6lTp+LYsWOwXFQUwlatQsHVq801/+8o3v3nyNELLwBTpwLh4cBXXwGNGlndShERcYCgDJDWrl2Ls2fPokSJEuZ0mrfHmYsCYN68eYnua/Hixbhx4wZq1KiBW2+9NdZ9zEVq2rQpoqKisHDhQlhq9mwzVT2ifn1UHjXKXJup69zuBL76f8stwEcfAWFhwOefA82bW91KERFxiKAMkH799VdzXTGeJFzP9q1btwZ0X6kaHDDo43IZMTEZndvtHiTF1/8LF9zXHEVq29aSpomIiDMFZYC0f/9+c12oUCGf93u279u3L6D7ShU8jda9O+Byxb3Ps61HD/uebkuo/x4cKbRr/0VEJCj9m5ATRDhrjTJlyuTz/syc5g3g/PnzAdvX1atXzcXj3Llz5joyMtJcbhZzbSK8R05iYuBw4AAQI3fKcQ4cwPWVK+GqVQtO4Hk9peR1Fcqc3n9y+jFwev/J6ccgMhX7n9R9OvhTN3mGDx+O119/Pc72JUuWxBt8JQUTkiunsG1OsGXRIhxiFW0HWbp0KZzM6f0npx8Dp/efnH4MlqZC/y9duhS6AZJn1lp8nbj4zwclaxkFal+9e/eOVQ6AI0isy9SgQQNky5YNNyuMI1ijRiX6uOtffQWXDWv/hK1fj4hWrRJ9XPmHHkI5B40g8U2hfv36SMvSBg7j9P6T04+B0/tPTj8GkanYf88ZoJAMkIoUKWKuD8Zz6smzndWwA7UvznjjxRt/cSn65dWuzUQod0K2rzwczuAqVAgRLVq4p7rbDfuVlP7zONmx/wlI8WsrxDm9/+T0Y+D0/pPTj0HaVOh/UvcXlEna5cqVM9ebN2/2eb9nO+shBXJfqYIf+mPH/hsMxOT5/5gx9g0OnN5/EREJSkEZIFWvXh3Zs2fHX3/9hS1btsS5f+bMmeaaNYwS06hRI6RJkwZr1qyJUwySSdespRQeHo7GjRvD0lEU9qlgwdjbObLC7bzfzpzefxERCTpBGSCx6nW3bt3M7a5du0bnCdGoUaNMzaJatWqhUqVK0dtZebt06dImVyim/Pnzo23btqY6d5cuXXCd1Zn/0atXL7NsSfv27ZE3b15YikHA3r24vnQpNvbsaa6xZ49zggOn919ERIJKUOYgUb9+/bBs2TKsW7cOpUqVMpWwWauI67FxeZDJkyfHWZCW66xxaRFvY8aMMeu6zZo1ywRRlStXxm+//WbWY+O+GXQFhfBwM5Wds7VMQrLTTis5vf8iIhI0gnIEiTJkyICVK1eif//+Zhr93LlzTYDUsWNHkzdUvHjxJO8rd+7c+Omnn8zitBxJmjNnjlnK5KWXXjLbc+bMmap9ERERkdAStCNIlDFjRgwePNhcEjNo0CBziQ+DoHHjxpmLiIiISEiOIImIiIhYRQGSiIiIiBcFSCIiIiJeFCCJiIiIeFGAJCIiIuJFAZKIiIiIFwVIIiIiIqFUBymYuf5Zef7cuXN+3W9kZCQuXbpk9uvEFZyd3n9y+jFwev/J6cfA6f0npx+DyFTsv+dz2/M5Hh8FSDfp/Pnz5rpw4cJWN0VERERu4nM8e/bs8d4f5koshBKfbty4gcOHDyNr1qwICwvza2TLoOvAgQPIli0bnMbp/SenHwOn95+cfgyc3n9y+jE4l4r9Z9jD4KhAgQJIkyb+TCONIN0kHtRChQql2v75gnDiH4WH0/tPTj8GTu8/Of0YOL3/5PRjkC2V+p/QyJGHkrRFREREvChAEhEREfGiACnIpE+fHgMHDjTXTuT0/pPTj4HT+09OPwZO7z85/RikD4L+K0lbRERExItGkERERES8KEASERER8aIASURERMSLAiQRERERLwqQRERERLwoQBIRERHxoqVGRESCyIULF/DTTz/h2LFjyJIlCypUqICCBQta3SyxwJIlS/D333/jqaeesropjqQ6SEHyhrh//36zeB7XeLvllltQvHjxBBfRc4Jr167hzJkzyJ07t+OPhdPYOUj4/fff8csvv6BmzZqx1nO8fv06+vbti/Hjx+PKlSuxntOkSRN8+OGHyJ8/P+yOH0lfffUVvvvuOxw5cgSZM2dGpUqV0LFjR0f0P6batWtj9erViIqKgh399ttvWLlyJdKlS4f69eujWLFi0X8L7777Lr755hscP34cJUqUQOfOndG8efPANpABkgTe/v37XT179nSVKFHClSZNmjiXzJkzuxo2bOiaNWuWy67979ixo+uuu+5y1axZ0/XZZ59F3/fDDz+4qlat6goPDzfHImvWrK6nnnrKdeTIEZcdHDhwwOV0//vf/1xffPFFnGMRGRnp6tWrlytTpkxx/iaaNm3qOnz4sCvUtWvXzpU2bVrX33//HWt7mzZtTD/DwsJct956q6tKlSquUqVKmcdyG98rTp486bKDtm3buj744IM4248ePeq67777oo+D5+J5T5w7d67LDg4dOpSkS7Vq1Uzf+bqPud0O+vbtG/0ez0v69Oldn3/+uevGjRuuRx55JNbv3/MaeOWVVwLaRgVIFpgyZYorQ4YMcd4EeOGbYd68eV0RERHRL4p69eq5Tp8+7bKLY8eOuQoWLBir/7w9evRo108//eTKmDGj2cY/mJw5c0Y/hh8QdjgO7Evx4sVdAwYMcO3cudPlRE4OEvi7v/fee2Nt45cC9o9/+wsXLozzZaJJkybm/kB/QKQW9qVTp05xtj/44IPmvjvuuMM1YcIE15IlS1wzZsxwtWzZ0mxn4GyHvxnPe97NXBhUhLr58+ebY8Avv88884zrhRdeMO/1fO//+OOPzX0vvfSS6+eff3bt2bPHfGbyb4P9X716dcDaqQApwL7//vvoURFG0MuWLXP98ssvrtmzZ0e/Cb7xxhuuq1evulatWuV6/PHHzbbKlSubb9d28PLLL5s+tWjRwvSdl0cffdT8gdStW9eVK1cuczyioqLM43ft2mW287jxmIW6mEEhLxwtGz9+vOv48eMup3BykMAPgdatW8fa1q9fP/NaiG+E5NKlS+ZLRcmSJV12DZD4fsftZcqUcV24cCHOcwYNGmTu79KliyvUsR8MdG677bYEL54v0t7bQ13jxo1Nv/iF2GPr1q3mmHCksFu3bnGew2CZx+2JJ54IWDsVIAXYQw89ZEZG1q9f7/N+Rs18kfz666/R2zjSwBfTmDFjXHbAb4cFChQwQaDHlStXXPnz5zf95DCrtzNnzrhy587tuvvuu12hjn/k999/v/mQ5DdiT7CULl06M7T89ddfm+NhZ04OEvhFgL/nmJ577jnT93PnzsX7PH6h4HuHXQOkgQMHmmPA0QVf+AWRv//bb7/dFer4hY/HoFGjRq7du3fH+ziOqPGY2E3evHnN6UNvNWrUMP397bfffD7vzjvvNF+uAkWZrwHGxNOqVauaiy89e/bEjRs3MHPmzOhtAwYMQL58+fDFF1/ADvbt24f77rvPJOZ5cMXmKlWqmNsPPfRQnOdkz57dHLM9e/bADu644w58+eWXZobKpEmT8OCDD5pEzHnz5qF169bm9/3ss89i1apVsKOMGTPi8uXLsbYxGZPq1KkT73P4Gjlw4ABC2V133YV169bh6tWr0ds8ydp8PcSHCcv8O7ArT9/53uBLREQEypcvj4MHDyLULVu2DJMnT8bPP/+Mu+++G8OHDzeJyU5x+vRp3HbbbXG2FylSxFyXLFnS5/Nuv/1283cQKAqQAuzSpUsJvslly5bNXHP2jkd4eDiqVauGHTt2wA5SMiONwaOdZM2aFZ06dcLy5cvNTMY333zTfICePXvWBE4MFvhG0q9fP/zxxx+wCycHCZyNc/LkSfTo0SN6W7t27cwXBs5i84WB84YNG8zMN7vyvPcxEE7oMWFhYbADzsrj3zRnZvH3zuDvhx9+gBNkz57dzNr2ljZtWnMd88tzTJzRGMgZzQqQAozT9/nBcOrUKZ/3c1ojeU9p5puCXYIDTuXkSBqn8Xvwg5IfAMTpvd7OnTtn7rfLVG9fChQogF69emHr1q349ddf8corr5j+MnDiN0wGFffeey/swMlBAj8YGzZsaKbt33///Zg2bZr5++a05rlz55oPynfeeQezZs3Cxx9/jPbt26NFixbmw4OjyXaxZcsWDB48OPri+QKwe/fueJ/D0cM8efLALljChGcGFi5ciIsXL6JWrVp4+umnzQiLneXPn9+8r3l77LHHzGshPhw9zJs3LwImYCfzxBgyZIg598yprD/++GP0duacfPjhhyZ5m+dgY+YgUaVKlUzujh307t3bHAMmZm/YsMFceJv9fvLJJ1158uRxffvtt2a6J+3du9eUPOD9zNWw6wweX3gMVqxYYR6fLVs2W+UjMP+Cx4K5CJzyz1yMiRMnmhlr5cqVc40cOdI1c+ZMs42JmZzZyRwcJnOGOv69d+jQIUmzmfgY/k189913Lrvwnr0b8zJ48GCfzzlx4oRJWuZ7gR1dvHjRlH7h65w5Opy5VatWLVv9zXuwbAtzbU+dOuVKKuYgMoH74YcfdgWKAqQA4y+ZM9I8b4xMVs2XL190PQhu7969e5wZPLyvc+fOLjs4e/asmbod88OBt5m4ePnyZZOI7Tk2TMz23M8AIaGERjsGSN4fql999ZXLLpweJBBn8XCaM8sXeAcKTOauU6eOmZyRUPJ2KPrkk0/ivcT3Ox4+fLg5LpzNZmebNm1yVahQIdbr326+/fZbM0N7y5YtSX4Ovyjx988vToGiStoW4FDqa6+9hilTppicpJjDjtz+4osvxkle/d///meqicasvBvKeHpl2LBhWLNmjUnQbtCggTmllClTJjOMztL6MROUy5Yti48++ijeBM5QwnPoPM3CJE2BSVTl75YVdb1Pr7CqPE85PfLII+a0HHO27IqnmVk5nqfSWT3czn2VhPE1MHr0aMyfP9/8n38bTnfixAnz2clTbAnlqfmTAiQLRUZGmmUH+EvnefX4MvediuebeeGMLl8zHkIVk7Jr1KhhPvAlNgUJIhIsFCCJiIiIeInw3iAiIoHB08mHDx82o6RFixZN8LE7d+40JRBCfRZfUhw6dMiUvvAsVluxYkUz489OOEr6+eefm1PMuXLlwpNPPhl9FoEpCCNHjjQL1XpqBrVs2RIdOnRw9MLdixYtMiknTMEIBI0gWfjHwSn9nLrMad0snuipC8HTCnyzZN4Ncy94seMfBUsdsOQBp3azCKSnDgrNmTMn1krOfGPgit5OwVwcz0r2LCrpqQ9iR9u2bTO/a5Y28Pwd8PXO/COWNmARTU5zZ66aXfz555/mVOv69eujt/HvfcSIESYfzxc+/rPPPrPFyu7MOePrmtPavd8XX331VYwfPz5O4UTmon311Vfm/cAO6RUs9cA8S89HMN8HOd3/zjvvxAMPPIC9e/dG30csBdGkSRPzt2KXWlDJxXqALBETsL+BgKWDSzQuwMdy+b4Wq/W1gjGn9/M5dsKSBjFXbOdstaVLl8ZadiHmceAsv3HjxrnsgCtzr1271ueiq++9956rcOHCsWawcGrriy++aKYB2wlXJedU/5gz1Tyvee+/AU579rUETSjimntcVsfTP/bNsxgv+/qf//zH5/M6duxomxlN8c3k7Nq1a/RC1Vygtk+fPmYh0yJFipjtRYsWNcsOhTouzO1ZfJm3R40aZZbQ4eXZZ58173dcdmrNmjWmrAUXcOXyTPz9f/DBBy6nqlq1akD/BhQgBdjvv/9uPvD4x9GsWTPzps91Zzj1/fr16+bC29zG+7hmEx+bJUsW81w7YHDAFznrfdSrVy96fTpOa54zZ070seGaZCtXrjRrNDGY4uO5sG2oY7kG9p+rVMfEGigxgwOuZs/j4vng5OKuLBNhB6xpw0CQfStWrJirffv2prwFX+8s78B16bhoMz8YYtaAssMUby62y37zdc9gmfihP3ToUNN39rNNmzZxFqe2e4D0xx9/mP5xsWrvtbi4bmPz5s3N/fHVSQol/Fvm58CRI0difWHg+xyDI66/6Y3Hh3WguI6jU1VVgGRvrVq1Mn8AXK0+qWbNmmVeFN6Le4Yq1r9gf+bNmxe9bdmyZeZNkyNJ/HDwNn36dHM/v12FOo4eshBiTCwM6hkt4iiSJxBioUgGlHxD5f0sNGoHXK2bv89evXrFCQQOHjzouueee8woy+nTp802fpCwuCqPwerVq12hjAtuctTIV22jzZs3m9Xa2U8GUDEDYrsHSG+//bbZ/v7778c78sZAmXXkQh0LAnP01JtnRHXfvn0+n1e7dm1Xjhw5XKEuTSJ1zxKqh6YAycZY7I4v8uTic/hcO+BQcfny5eNs9wQB/JDwhSMNdqgmztHAxx57LNY2fitm31k9N74PBwaPd911l8sOGASULl063vvXrVtn3gwnTJgQve3AgQPmGzRXtQ9lHCXiCGl8jh496qpYsaLpP1c39wRSdg+QunTpYvrHyvkJvQ8ySAp1HCH19YWXX6B5DC5cuBDvl0s+N9SF/TNKzr/n5FwCXTjTfpm/Qe7ChQtm/Z3k4nNYL8kuBb+YoOnNk3zp6z4qU6aMLVby9pVwz1k71KxZs3h//5zFk9A6VaGEs5O4inl8mLBM27dvj97GIqlMXmVifyhjgm1CSfcshMfkXSYwc/HS2rVrm1lNdsdFuYkz+hJarzDmAsehikWBY762PTzbNm3aFOc+Dmj88ssvN/X5EWwKFixo/g44KePy5ctJvgS6ULACpADjNE5OX2WQkFScycXn2GH2BnFm1pUrV+Jsz5Ahg7lmNW1fcuTIYYsFe0uXLo0ff/wxVl88C3CePXs23ufxvkBVkE1tOXPmNNXh4+O5z7u/DB5CfSFPLli9efPmRP9GFi9ejKZNm5rHcmo/ywHYCUsWcBq75+KZmZXQlyC+F3JKfKhj0MsiwW+//Xb0Ns5g5LYKFSrgpZdeMscnZnDUr18/8wWJM35D3X3/BDobN25EUAvYWJUYnK3AoUWeXuB6NEzKjg/v++abb8xpJQ4rcraDHTAHg4vveuPpJa5LFR+u1cbZLHaZwRIz2ZQ5SMxN42w1X7iwMYfWmZdiB+3atTOv6ddffz3OfZzd5zndysVqvU+x8BRtKONMLfZt48aNiT6W7wFMYI+5Xp0dJLT+3kcffeTzOUzU5kQOOyQp79y50+Qbsr885c4Lb3OWHtfeZJ4R85Tq169vTqtxthvv53vEqlWrXKHuzTffNK8BTsBJjipVqigHyc6ioqLMyvWeNwj+kfCXzpwUrmTPC29zm+cPiI/lNs/q9qGOSdj8sI/vPLsv165dM28anPUW6piUzADRM1uJSdjsH980uI2rVTMw4AcoSx/07dvXlT17dtu8Ocaczcn+MmBmaYfXXnvN1bZtW5Njwtc8E7X59xJzcVseh1APEpcsWWL652syQnw45TvQCaqpiflU8V3iK+fBWb08BpztaQf8u+eitJ4yJgz+d+zYYe5bvny5CQZjlrtgDs748eNddlmQt3nz5q633norWc9bsGCBWdA4UBQgWYCBDlcm5gdDYnWQypQpY6Y62yU4Ir7AOROFK5knFVex5/HgVGg7OHXqlHlD9HzoMWDkrC3Ww/E1c4PT/SdPnuyyE34IsJSBr/pHDCC9Z/Js377dfIByVDXUA2TO2lyxYkWynsd+B/LDIdhwmvv3338fXRrBLvhFkaNjvt4jGBQOHz7cjK7HLAkggaFK2hZjtVRWEN6/f79J4PbkHxQpUgTlypWz1SKtKfHHH3/g6NGjprKyHZIUPVgZeOLEiVi7dq3PvKxixYqZSuo9evRIdCmKUMTEy9mzZ5ukVM+izcy3ia+atIhIoChAEgkCXFaBCZhMQPasZM+AKObyKyIiEjgKkEREQsCWLVtw7tw52y1Wy7X3uA6Z91p7LH2xdOnS6PUYGzVqFO8MVzviWQXPYr2c+RoREWHLMygbN240MxNr1KgRq4/fffddrMV6H330UZQqVSqwDQzQqTyRZHvwwQdN8qLYF5db4ZIyzMfxrqi9ePHi6LW4RowYYWb+OBmXWbDT3wMTdT2zFdkvztjyFIn87LPPopP4PZeCBQuaxGY7YDL233//7fM+zm5mfmrMvnOW28svv2wmKthFv379zO/d00fO7GbeISesNG3aNM76jFxqihNZAkkBkgUuX75sZiYVL17czExgVeEePXokmITH5FQ7vTkmNUCyy6ydpGICKt84WEGZ5R2YrMzlVey2WHGovEE6eR2q1MTfM2ck8nfLyuIMAHj77rvvNsn4nLTAkh4sicCp4LVq1TL3c2ZXfIFFKOHvkWsyeuNEDP5NeNZiZEmDmMESS53YYcLOnH/W3OTnH6vK88LbNWvWNBNxeB9n+HFpJc5qZKkLz3sFZ4EGigKkAOO3ZL4IfK1YzkUa45uhY6dlBvhNMSmXW265xfQ55rYGDRq4Qh3XnCpVqpT5Bh0TF+b19Nl7NiPfHOwUHITKG2QwsVOAxGVF+DvmCCFrPbGcw7Bhw8w2LkPEWa5ctDsmPpb3M7C241IrXE6Io2acycpZzjEDIQaNnkDJDrNZGzRoYP6e16xZE72NJUzYP5Zz4XJCMUt80Ny5c81x45enQFGAFGBjx441v2QWBOMCrP/73/9c8+fPN/V9PB+EMdefsmOA5D2lOzkXOxyDatWqxSl2yEVZGSCzj1yUlQt2Llq0yPXFF1+YESR+o2bfFy5c6LKDUHmDTA1cU/BmLiz1YIfXP/ELAkfOvUdDSpYsGW8QzIV7+Tfiq8isHQIkFsjk9ldeecXnc1hMlsFTnTp1XKEuV65crgceeCDOdm7j758BoS88JcuFngPFfllfQW7atGlmSY2YS4fceeedaNKkCT744AMznfvFF1/EqVOnTGl5O2IyZmRkJP7v//4Pbdq0ifdxPBZbt27FihUrYCd//vknKlWqFGvbjBkzzO/8ySefxKeffhrrvnbt2qFVq1Z46KGHMHr0aHMd6jitv1q1amZtNQ8mH3O9Oa61Nnjw4Dhr1nGdusqVK2PDhg0I9cRULqtxM/NjPMtxhLoDBw6YpGvv/nANPs7m9P778Cw7U758+eBfnuIm/fbbb+Z4dO7c2ef9PDYVK1Y074mh7ty5cyhcuHCc7Vxv0bMcjy8se8KyOIGiACnAuMZU9erVfa6r9vzzz5s6P/wgGDhwoMnef+edd2A3/ANncPTRRx+ZD4v33nvPvPB9rb1GXLTTbrN2vNeT4iKVfHPs37+/z+fUq1fPrMH0888/ww5C5Q0yNbCOFxef5XvBLbfckqTnMJh6+OGHzWKldsDFejlzzZunrAXX6vOFC9mydpYdeRbhje+177nPDq+BHDlymCDZm2cdPgbJ/Cz0tmfPHlMCJVC0WK0FfwSehUl94VRHTm289dZbMWbMGDz77LM39U0zmHGq5sqVK02A9NNPP5lV3d944w1TC8gJuCI5R5F8rWSe0GuDH6zXrl2DHSTlDdKXQL9BpuZCnewr/86TcmFgwKDCLvg697X4LhcjTihA4ILN8QVPoc7zpZllDeJz6dIlZM+eHaHu3nvvxfr16/HDDz9Eb+PnHkeP+eXx9ddfj/OcBQsWmNFDjqQFTMBO5onBXIKknEPfvXt39AKFXLPpiSeesE3+QUxHjx51tW7dOnpZldWrV9t+FhvXHWP+DReg9ZgxY4Y5Brz25dy5c658+fKZ9cnsoHHjxvHmIOXJk8fVsmXLOM9hrh6PEV8XoYwL9LIfb7zxhmOTtJs0aWLW3PPOM0tMoUKFzDqVdl6sl7l28WHeVrly5Vyhbsk/6xEyr45rK/LC25zRyMkqfG9gvhET97n+HHNwPcswcdmVQFGAFGAMdvjLP3DgQJKmfPMDkS8Kz4vDrrgIIRPX2UcmL544ccK2ARJrvXC2CgMe1vohzuRh8janMXuvYM/6P5zBx2PBGXB2ECpvkKmBgSBnav33v/9N1vO4JuOgQYNcdsCp+/z9r1u3LsnP4WMTSmIOJXyvY7Dj69K9e3efz2GtMPb/mWeecdnB6NGjzcxVzwQczuDl7FYaOXJkrCDS8xh+mQ4kBUgBxllJ/EVz5fKk4OwmfnDaZQZXQi5evGjqQfHDMXfu3Gaml137zNloDAbYP87ceeqpp0xBRE8QwG/XrAnD4nieuiic+cVAyi5C4Q1SUgdfx1ykNTmvZ36JYoC4bds2lxPxPYP9X79+vcsujh8/bkaGly5dGqesA78oPf30066GDRu6OnToEP3eEEhaaiTAeA595MiRpnz8a6+9lqTnMCmxT58+OHPmDKZMmQK743lm5l4xGZeJy1FRUbDrArw9e/bEkiVLzPpr8c1s4jl5Pu7VV1+13XIDJ06cMLPSOLORuTkx1577/vvvMXXqVJOrwxyc5s2bm4uISCAoQJKgxKDIk7Brx1XsY2I/GQxwVpP3YrUVKlQwU989SdwiIhIYCpBEREREvNhrvF5ExIb69u1rVnbnadhJkybBiZx+DNT/vgHvv0aQQoDT/zBIx0Cc/Bpgtf0dO3bYOicvMU4/Bur/nQHvv0aQQsDs2bOjXxhO+2DwcPoxcHJw4OHk10C3bt1MQruTOf0YqP/dAt5/jSCFgAkTJkS/MLgEiRM5/Rg4/dsjOf01ICKBpQBJJAQoOBARCSwFSCIiFuH6g1y4luuLJbbW2qlTp3DhwgUUKVIEduL0Y6D+Xw/a/mux2hCxaNEifPbZZ3AyHQOxy2uAo4Ht27c3hTG5eHHWrFnx6KOPYtu2bfE+5z//+U+CC7mGGqcfA/X/RPD3P+C1u+Wm2Gmhypvl9GPApQY+/fRTl5PZ4TXAJTbuvPPOWEuoeC5cj+7dd9/1+TyuRxfqffdw+jFQ/y+ERP81giQSIgYPHoxOnTpZ3QxJoVGjRpllZsqXL49169bh4sWL5lvz008/jcjISHTv3h29evWCnTn9GKj/o0Kj/wELxcTl9G/OKeX0Y+D0/tvlGJQrV86VPXt2199//+1zQVYu2ss+ctX2Gzdu2G70gJx+DNT/ciHRf9VBCrCbXVOLufSc4m0HOgbi5NfArl27ULNmTdx6661x7mvcuLH5Rt2oUSNMnjzZLG49bdo02y1S7PRjoP7vCon+6xRbgPENnpd06dIl6xLqHwoxOf0YMDi4mQtXvbcLJ78GWMeKianxKV26NNauXWuuZ82ahWbNmuHKlSuwE6cfA/U/KiT6rwApwAoWLGje5Pft24fLly8n+XLffffBLpx+DJwcHHg4+TVQtGhRbN++PdHj88MPP6By5cpYvHix+TZ97tw52IXTj4H6XzQk+q8AKcA8b/AbN26EUzn9GDg5OPBw8mugevXq+P3337Fz584EH3fLLbdgxYoVePDBB7F69WrMnTsXduH0Y6D+Vw+J/itAsuCDgaMHP/30U7KeZ6d6nk4/Bk4ODjyc/Bp45JFHTD9Gjx6d6GMzZ85saj81b97cFn33cPoxUP8fCYn+2yfrK0TUr18fP/74o/mlJ8eAAQNw/Phx2IHTjwGDgzlz5pjggAmJSWWXN0envwYaNGiAiRMnJlo12IOnV2fOnInx48fj9OnTsAOnHwP1v0FI9F9LjYgE2ObNmzFkyBDcf//9ePXVV5P8vIULF5rgoEOHDqnaPhERUYAkIiIiEodykERERES8KEASERER8aIASURERMSLAiQR8auVK1fiscceM/WeOPuEtUzuuOMOtGzZ0sxC4dIBoYZ1q2Je0qRJgxw5cqBGjRr4+OOPkz3D8Pvvvzf76dixY6q1WURSRtP8RcRvBg8ejIEDB5rbd955J6pUqWKm8u7YsQOzZ882U3VZGbdq1aoBb9ttt91minOmZF6KZwYhl0r466+/zHIIrPa7fPlyTJ8+3Y+tFRGraRabiPjFpk2bcO+995pFJb/66itT2C2mv//+G1OnTsXDDz9s1lgKpQDJs8yL93OXLl1qalldv34d8+bNM31LikuXLmH//v3Inj078ufPn+z2iEjq0yk2EfELjhAxgGjVqlWc4Ijy5cuHV155xZLgKDULXj755JPmdnKWQciUKZM5DgqORIKXAiQR8QtPhes8efIke2SHIzQMrsaOHYsyZcogQ4YMJofppZdewpkzZ+IdhWHBzbvvvhsZM2Y0ozE1a9bEl19+6TPfh6NHFDOXiD87pSpUqGCuDxw4EL3Ns+9r166Z044MhtKnTx8dOCaWg8TFObkcw6233mqeV7hwYTM6xZXNvZ06dQq9e/c2x81zHOrUqYP58+enuG8iTqYcJBHxC36IEz/E+YGdN2/eZD3/xRdfxEcffWQWprznnnuwatUqvPvuu+Z6zZo1yJYtW/Rjz58/j9q1a5vTegzIGDxcvHjRLGzJx65fv94EW56RK+YOMf+Jj4lZiTx37twp7jfbQgxkYrpx44YJiLjIZq1atVC2bFnkypUr0f395z//wahRo0wieLVq1VCkSBEcPnzY5DsdPHjQJMB7cLHPevXqmeCMAVnDhg1Ne7iMS9OmTfH222+bUTsRuQnMQRIRSam//vrLlTFjRibpuLJmzerq0KGDa+LEia7Nmze7rl+/Hu/zihYtap6TLVs218aNG6O3nz9/3lWnTh1zX/fu3WM9p1u3bmZ77dq1XefOnYve/vvvv7vy5s1r7ps3b57Pn3Mz+Dxfz71x44arWrVq5r6+ffvGeXzJkiVdBw8ejPO8lStXmvt5jGL6/PPPzfYCBQq4fvnll1j3Xbp0ybVkyZLo//OY3nPPPebxb731lisqKir6vj///NNVrFgxV3h4uGvbtm031WcRp1OAJCJ+s2zZMlfhwoWjAwTPJUeOHK4XXnjBdfjw4TjP8QQuffr0iXPfb7/95goLC3NlyZLFdfnyZbPtwoULJhBLkyaNCYi8jRs3zuyvXr16Pn+OPwIkBic7d+50dezY0WxPnz69a9euXXEe//XXX/vcX3wB0p133mm2f/nll4m2ac6cOeaxjz32mM/7Z8+ebe5/6aWXktFTEfFQDpKI+E3dunWxa9cuk7D9/PPPo2LFimZWG/OI3n//fZQvX95M+felTZs2cbYxr6ZcuXK4cOECfvnlF7ONp9UuX75s9u0r4duTNM1TUjzN5U+e3CX26fbbb8cnn3yCrFmzmin+JUqUiPNYnuZKKp5G+/333019JSa6J2bJkiXmukWLFj7vZ40m+umnn5LcBhH5l3KQRMSvWBzy0UcfNRdicMTE6T59+uDYsWPo1q2bmR7vrWjRoj73x9yaLVu2mACCPNfxJVgzwGCiMgtSnj59Okl5P0nlyV9ifhBzopgrxQCFxTC9MQfLOy8pIZ4k7+LFi0eXFUjI3r17zfUTTzxhLvE5ceJEktsgIv9SgCQiqYoBC0eTChQogGbNmplK25yBxqnuqSUpAcbN4IhRUnEmXmryjI41atTIzHaLjz8S0UWcSAGSiAQEp557qlBzVMk7QOI0fI7IePNMz2eAFfPas90bR464f0559zWyE+yzAHfv3m1KHiQW5BUqVMhcP/PMM7FmtomIfygHSUT8IrEK1cxN8pyC8zWqwerb3v744w9zei1Lliwmf4kqVapkgh/mIv35559xnsNq3VS9enVzKsyDP5dY9ToYMfDj8iwM7r7++uskFamkOXPmBKB1Is6jAElE/KJ///549dVXzRpl3g4dOoTnnnvO3GYBRE+wEhNrHnkSsYmn4VgbiYFXp06dTFBEmTNnRufOnc0ppq5du5raRjHrAg0dOtTcZpHJmDwjT/EliQeD1157zVz37NkTW7dujXXflStXYuVucdSISexffPGFKZh59erVWI/ncWOiOi8iknw6xSYifsGZZizOOHLkSDPDy1MRm8UNN2zYgMjISJQsWRJjxozx+fz27dubxW15Ko5J1iywyPXb7rrrLhMAxDR8+HBTDJEBA5OaWYjRUyiSgQSDI+8ZZAzMWHSSM+1YZJKBFkey3nzzTQSLp556Chs3bjTBImfpsVAkT70dOXLEjKQxkZ3XxJl0XN6ExSEHDBiA8ePHm2KUTA5nYjYfx6T40aNHm9E0EUmm6An/IiIpcPz4cVPosH379qaAYa5cuVwRERGunDlzuqpXr26KGbKGkTdPfSIWOhw5cqSrdOnSpq5Q/vz5XV27dnWdOnXK58/jvl5//XVXmTJlzONZnPKBBx5wTZs2zefjIyMjXf369XOVKFHClTZtWvMz+bNTUigyoccntO/46iB5fPPNN66GDRuaY5cuXTpXoUKFXA8//LCpbeTtzJkzrqFDh7oqVqxo6kVlyJDBddttt5nnT5gwwfxeRCT5wvhPcoMqERF/4XR9JlzrrUhEgolykERERES8KEASERER8aIASURERMSLcpBEREREvGgESURERMSLAiQRERERLwqQRERERLwoQBIRERHxogBJRERExIsCJBEREREvCpBEREREvChAEhEREfGiAElEREQEsf0/mXSfQwMvjQYAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# plot exact payoff function (evaluated on the grid of the uncertainty model)\n", "x = uncertainty_model.values\n", "y = np.minimum(np.maximum(0, x - strike_price_1), strike_price_2 - strike_price_1)\n", "plt.plot(x, y, \"ro-\")\n", "plt.grid()\n", "plt.title(\"Payoff Function\", size=15)\n", "plt.xlabel(\"Spot Price\", size=15)\n", "plt.ylabel(\"Payoff\", size=15)\n", "plt.xticks(x, size=15, rotation=90)\n", "plt.yticks(size=15)\n", "plt.show()\n" ] }, { "cell_type": "code", "execution_count": 9, "id": "32332d81-d7a3-4504-a897-1461f14b64be", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "exact expected value:\t0.5695\n", "exact delta value: \t0.9291\n" ] } ], "source": [ "# evaluate exact expected value (normalized to the [0, 1] interval)\n", "exact_value = np.dot(uncertainty_model.probabilities, y)\n", "exact_delta = sum(\n", " uncertainty_model.probabilities[np.logical_and(x >= strike_price_1, x <= strike_price_2)]\n", ")\n", "print(\"exact expected value:\\t%.4f\" % exact_value)\n", "print(\"exact delta value: \\t%.4f\" % exact_delta)" ] }, { "cell_type": "code", "execution_count": 10, "id": "c17567a0-c3d4-499b-8390-ccc415add634", "metadata": {}, "outputs": [], "source": [ "# set target precision and confidence level\n", "epsilon = 0.01\n", "alpha = 0.05\n", "\n", "problem = EstimationProblem(\n", " state_preparation=bull_spread,\n", " objective_qubits=[num_uncertainty_qubits],\n", " post_processing=bull_spread_objective.post_processing,\n", ")\n", "# construct amplitude estimation\n", "ae = IterativeAmplitudeEstimation(\n", " epsilon_target=epsilon, alpha=alpha, sampler=Sampler(backend=qr_backend,options={\"shots\": 100, \"seed\": 75})\n", ")" ] }, { "cell_type": "code", "execution_count": 11, "id": "5936fe81-46b6-4339-9094-262e935fe1a8", "metadata": {}, "outputs": [], "source": [ "result = ae.estimate(problem)" ] }, { "cell_type": "code", "execution_count": 12, "id": "bf2b427c-f552-482c-9e4e-d1a13cb7ef96", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Exact value: \t0.5695\n", "Estimated value:\t0.5628\n", "Confidence interval: \t[0.5391, 0.5866]\n" ] } ], "source": [ "conf_int = np.array(result.confidence_interval_processed)\n", "print(\"Exact value: \\t%.4f\" % exact_value)\n", "print(\"Estimated value:\\t%.4f\" % result.estimation_processed)\n", "print(\"Confidence interval: \\t[%.4f, %.4f]\" % tuple(conf_int))" ] }, { "cell_type": "code", "execution_count": 13, "id": "c6cfaa9d-a5ef-4788-b94d-9093c863e7dc", "metadata": {}, "outputs": [], "source": [ "# Example output:\n", "\n", "#Exact value: \t0.5695\n", "#Estimated value:\t0.5815\n", "#Confidence interval: \t[0.5577, 0.6052]" ] }, { "cell_type": "code", "execution_count": 14, "id": "4d7612a7-5cb9-4525-bf57-9a626ce98996", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "C:\\Users\\vkasi\\AppData\\Local\\Temp\\ipykernel_23904\\1368781336.py:8: DeprecationWarning: The class ``qiskit.circuit.library.arithmetic.linear_amplitude_function.LinearAmplitudeFunction`` is deprecated as of Qiskit 2.2. It will be removed in Qiskit 3.0. Use the class qiskit.circuit.library.LinearAmplitudeFunctionGate instead.\n", " bull_spread_delta_objective = LinearAmplitudeFunction(\n" ] } ], "source": [ "# setup piecewise linear objective fcuntion\n", "breakpoints = [low, strike_price_1, strike_price_2]\n", "slopes = [0, 0, 0]\n", "offsets = [0, 1, 0]\n", "f_min = 0\n", "f_max = 1\n", "\n", "bull_spread_delta_objective = LinearAmplitudeFunction(\n", " num_uncertainty_qubits,\n", " slopes,\n", " offsets,\n", " domain=(low, high),\n", " image=(f_min, f_max),\n", " breakpoints=breakpoints,\n", ") # no approximation necessary, hence no rescaling factor\n", "\n", "# construct the A operator by stacking the uncertainty model and payoff function together\n", "bull_spread_delta = bull_spread_delta_objective.compose(uncertainty_model, front=True)" ] }, { "cell_type": "code", "execution_count": 15, "id": "27726d30-061c-47e4-b065-cbfe23e550ad", "metadata": {}, "outputs": [], "source": [ "# set target precision and confidence level\n", "epsilon = 0.01\n", "alpha = 0.05\n", "\n", "problem = EstimationProblem(\n", " state_preparation=bull_spread_delta, objective_qubits=[num_uncertainty_qubits]\n", ")\n", "# construct amplitude estimation\n", "ae_delta = IterativeAmplitudeEstimation(\n", " epsilon_target=epsilon, alpha=alpha, sampler=Sampler(backend = qr_backend, options={\"shots\": 100, \"seed\": 75})\n", ")" ] }, { "cell_type": "code", "execution_count": 16, "id": "a9441007-9ff4-42db-9f01-7a6627c58410", "metadata": {}, "outputs": [], "source": [ "result_delta = ae_delta.estimate(problem)" ] }, { "cell_type": "code", "execution_count": 17, "id": "a98da376-3a44-4443-8897-2368f2ba19db", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Exact delta: \t0.9291\n", "Estimated value:\t0.9299\n", "Confidence interval: \t[0.9252, 0.9346]\n" ] } ], "source": [ "conf_int = np.array(result_delta.confidence_interval)\n", "print(\"Exact delta: \\t%.4f\" % exact_delta)\n", "print(\"Estimated value:\\t%.4f\" % result_delta.estimation)\n", "print(\"Confidence interval: \\t[%.4f, %.4f]\" % tuple(conf_int))" ] }, { "cell_type": "code", "execution_count": 18, "id": "7dde82c4-7f79-40c7-a25c-eee69f2ed306", "metadata": {}, "outputs": [], "source": [ "# Example output:\n", "\n", "# Exact delta: \t0.9291\n", "# Estimated value:\t0.9289\n", "# Confidence interval: \t[0.9242, 0.9336]" ] }, { "cell_type": "code", "execution_count": 19, "id": "834acd60-25e3-4b5e-88e3-c8649f807342", "metadata": {}, "outputs": [ { "data": { "text/html": [ "

Version Information

SoftwareVersion
qiskit2.2.1
qiskit_algorithms0.4.0
qiskit_finance0.4.1
qiskit_aer0.17.1
qiskit_ibm_runtime0.40.1
System information
Python version3.12.9
OSWindows
Thu Oct 16 11:17:46 2025 Mountain Daylight Time
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "

Quantum Rings Version Information

SoftwareVersion
QuantumRingsLib0.11.0
quantumrings-toolkit-qiskit0.1.10
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "

This code is a part of a Qiskit project

© Copyright IBM 2017, 2025.

This code is licensed under the Apache License, Version 2.0. You may
obtain a copy of this license in the LICENSE.txt file in the root directory
of this source tree or at http://www.apache.org/licenses/LICENSE-2.0.

Any modifications or derivative works of this code must retain this
copyright notice, and modified files need to carry a notice indicating
that they have been altered from the originals.

Modifications Copyright Quantum Rings Inc, 2025
Modified from the originals
Added support for Quantum Rings QrEstimatorV2 class.

" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import tutorial_magics\n", "\n", "%qiskit_version_table\n", "%quantumrings_version_table\n", "%qiskit_copyright" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.9" } }, "nbformat": 4, "nbformat_minor": 5 }