{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "a270ef16",
   "metadata": {},
   "source": [
    "| [**Lattice QCD I**](https://homepages.uni-regensburg.de/~lec17310/teaching/wise2122/lqft.html) | - | [**Christoph Lehner**](https://go.ur.de/lehner) |\n",
    "|:-|--|-:|\n",
    "\n",
    "# Chapter 2: Markov Chain Monte Carlo (MCMC) methods\n",
    "\n",
    "As seen in the last chapter, we can learn about the spectrum and matrix elements in the Hilbert space of our Hamiltonian from correlation functions of operators.  In this chapter we discuss how we can compute such correlation functions by interpreting the Euclidean path integral in a probabilistic manner."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fda8e2e6",
   "metadata": {},
   "source": [
    "## Probabilistic interpretation of correlation functions\n",
    "\n",
    "The Euclidean correlators discussed in the last chapter can be written as\n",
    "$$\n",
    "\\begin{align}\n",
    "\\langle f(x_1,\\ldots,x_N) \\rangle &= \\int dx_1 \\cdots dx_N f(x_1,\\ldots,x_N) p(x_1,\\ldots,x_N)\n",
    "\\end{align}\n",
    "$$\n",
    "with probability density\n",
    "$$\n",
    "p(x_1,\\ldots,x_N) = \\frac{e^{-S_E(x_1,\\ldots,x_N,x_1)}}{\\int dx_1 \\cdots dx_{N} e^{- S_E(x_1,x_2,\\ldots,x_{N},x_1)}} \\,. \n",
    "$$\n",
    "This is possible since $e^{-S_E(x_1,\\ldots,x_N,x_1)}$ is purely real and bound to a finite domain.\n",
    "Therefore the above normalization process yields a $p(x_1,\\ldots,x_N)$\n",
    "with\n",
    "$$\n",
    "p(x_1,\\ldots,x_N) \\geq 0\n",
    "$$\n",
    "and\n",
    "$$\n",
    "\\int dx_1 \\cdots dx_{N} p(x_1,\\ldots,x_N) = 1 \\,.\n",
    "$$\n",
    "\n",
    "In this chapter, we explore how to generate variables $x_1,\\ldots,x_N$ following a given probability distribution.  We first introduce a new statistical concept."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7e5c3447",
   "metadata": {},
   "source": [
    "## Markov chain over a finite set of states\n",
    "\n",
    "Let us consider a sequence of random variables\n",
    "$$\n",
    "\\begin{align}\n",
    "  x_0, x_1, \\ldots\n",
    "\\end{align}\n",
    "$$\n",
    "with $x_i \\in X$ with finite set $X=\\{1,\\ldots,n\\}$ and $n \\in \\mathbb{N}$.\n",
    "\n",
    "The probability of drawing a particular finite sequence from $x_0$ to $x_m$ shall then be given by\n",
    "$$\n",
    "\\begin{align}\n",
    "  P(x_m \\cap x_{m-1} \\cap \\ldots \\cap x_0) = P(x_m \\vert x_{m-1} \\cap \\ldots \\cap x_0) P(x_{m-1} \\cap \\ldots \\cap x_0) \\,.\n",
    "\\end{align}\n",
    "$$\n",
    "We call such a process a **Markov chain** if\n",
    "$$\n",
    "\\begin{align}\n",
    "  P(x_m \\vert x_{m-1} \\cap \\ldots \\cap x_0) = P(x_m \\vert x_{m-1}) \\,.\n",
    "\\end{align}\n",
    "$$\n",
    "If there is no explicit dependence on $m$, we call such a chain **time-homogeneous**\n",
    "and define the transition probability\n",
    "$$\n",
    "\\begin{align}\n",
    "  T_{ij} = P(x_m = j \\vert x_{m-1} = i) \\,.\n",
    "\\end{align}\n",
    "$$\n",
    "This matrix trivially must satisfy $T_{ij} \\geq 0$ and $\\sum_{j=1}^n T_{ij}=1$.\n",
    "\n",
    "We now define a probability vector $p_m$ by its elements\n",
    "$$\n",
    "\\begin{align}\n",
    "  (p_m)_i = P(x_m = i)\n",
    "\\end{align}\n",
    "$$\n",
    "with $\\sum_i (p_m)_i = 1$.  With this we find\n",
    "$$\n",
    "\\begin{align}\n",
    "  (p_m)_j = P(x_m = j) = P(x_m = j \\vert x_{m-1} = i) P(x_{m-1} = i) =\n",
    "  T_{ij} (p_{m-1})_i\n",
    "\\end{align}\n",
    "$$\n",
    "or in matrix form\n",
    "$$\n",
    "\\begin{align}\n",
    "  p_m^T = p_{m-1}^T T\n",
    "\\end{align}\n",
    "$$\n",
    "and therefore also\n",
    "$$\n",
    "\\begin{align}\n",
    "  p_m^T = p_{0}^T T^{m} \\,.\n",
    "\\end{align}\n",
    "$$\n",
    "\n",
    "### Numerical example with three states\n",
    "\n",
    "We first define a system with three possible states \"A\", \"B\", and \"C\".  We then consider a Markov chain with given transition probability."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "da9a9fb1",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "A -> A\n",
      "A -> A\n",
      "A -> A\n",
      "A -> C\n",
      "C -> C\n",
      "C -> C\n",
      "C -> C\n",
      "C -> C\n",
      "C -> B\n",
      "B -> C\n"
     ]
    }
   ],
   "source": [
    "import random\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "T = {\n",
    "    \"A\": { \"A\" : 0.5, \"B\" : 0.25, \"C\" : 0.25},\n",
    "    \"B\": { \"A\" : 0.1, \"B\" : 0.5, \"C\" : 0.4},\n",
    "    \"C\": { \"A\" : 0.2, \"B\" : 0.1, \"C\" : 0.7}\n",
    "}\n",
    "\n",
    "def update(state):\n",
    "    return random.choices(\n",
    "        population = [k for k in T[state]],\n",
    "        weights = [T[state][k] for k in T[state]],\n",
    "        k = 1\n",
    "    )[0]\n",
    "\n",
    "s = \"A\"\n",
    "for i in range(10):\n",
    "    sp = update(s)\n",
    "    print(s,\"->\",sp)\n",
    "    s = sp"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "de81e633",
   "metadata": {},
   "source": [
    "Next, we check our implementation against the given transition probability."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "a12d1a28",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "T(A -> A) = 0.49629999999996166 versus 0.5\n",
      "T(A -> B) = 0.24779999999998903 versus 0.25\n",
      "T(A -> C) = 0.25589999999998814 versus 0.25\n",
      "T(B -> A) = 0.10000000000000184 versus 0.1\n",
      "T(B -> B) = 0.5004999999999612 versus 0.5\n",
      "T(B -> C) = 0.3994999999999723 versus 0.4\n",
      "T(C -> A) = 0.19699999999999462 versus 0.2\n",
      "T(C -> B) = 0.10040000000000185 versus 0.1\n",
      "T(C -> C) = 0.7025999999999389 versus 0.7\n"
     ]
    }
   ],
   "source": [
    "for start in [ \"A\", \"B\", \"C\" ]:\n",
    "    histogram = { \"A\" : 0, \"B\": 0 , \"C\": 0}\n",
    "    N = 10000\n",
    "    for i in range(N):\n",
    "        histogram[update(start)] += 1.0 / N\n",
    "    for target in [ \"A\", \"B\", \"C\" ]:\n",
    "        print(f\"T({start} -> {target}) = {histogram[target]} versus {T[start][target]}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9c977bf7",
   "metadata": {},
   "source": [
    "Next, let us create a Markov chain of length $N$, starting from state \"A\" and look at the distribution of states."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "dc541e14",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "def distribution(N, start = \"A\", nsamples = 200):\n",
    "    all_histograms = []\n",
    "    for j in range(nsamples):\n",
    "        chain = [start]\n",
    "        for i in range(N):\n",
    "            chain.append(update(chain[-1]))\n",
    "    \n",
    "        histogram = { \"A\" : 0, \"B\": 0 , \"C\": 0}\n",
    "        for c in chain:\n",
    "            histogram[c] += 1.0 / (N+1)\n",
    "        \n",
    "        all_histograms.append([ histogram[k] for k in T])\n",
    "\n",
    "    return np.mean(all_histograms, axis=0), np.std(all_histograms, axis=0) / np.sqrt(nsamples)\n",
    "\n",
    "Ns = list(range(2,40,5))\n",
    "Ds = [distribution(N, start=\"B\") for N in Ns]\n",
    "\n",
    "fig, ax = plt.subplots()\n",
    "\n",
    "ax.errorbar(Ns, [d[0][0] for d in Ds], [d[1][0] for d in Ds], c='blue', label=\"P(A)\")\n",
    "ax.errorbar(Ns, [d[0][1] for d in Ds], [d[1][1] for d in Ds], c='red', label=\"P(B)\")\n",
    "ax.errorbar(Ns, [d[0][2] for d in Ds], [d[1][2] for d in Ds], c='green', label=\"P(C)\")\n",
    "\n",
    "ax.legend()\n",
    "plt.ylim(0,1)\n",
    "plt.xlabel(\"N\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ea1dc7e8",
   "metadata": {},
   "source": [
    "Next let us study a matrix version of the transition probability and its left eigensystem."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "ad40a7d3",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "T= [[0.5  0.25 0.25]\n",
      " [0.1  0.5  0.4 ]\n",
      " [0.2  0.1  0.7 ]]\n",
      "Eigenvalues of T^T: [1.  +0.j        0.35+0.1118034j 0.35-0.1118034j]\n",
      "First left-eigenvector of T: [[0.25287356+0.j]\n",
      " [0.22988506+0.j]\n",
      " [0.51724138+0.j]] corresponding to eigenvalue (0.9999999999999988+0j)\n"
     ]
    }
   ],
   "source": [
    "\n",
    "\n",
    "matT = np.matrix([ [ T[A][B] for B in T ] for A in T])\n",
    "print(\"T=\",matT)\n",
    "\n",
    "mat_evals, mat_evecs = np.linalg.eig(matT.T)\n",
    "print(\"Eigenvalues of T^T:\",mat_evals)\n",
    "\n",
    "unit_evec=mat_evecs[:,0]/np.sum(mat_evecs[:,0])\n",
    "print(\"First left-eigenvector of T:\",unit_evec,\"corresponding to eigenvalue\",mat_evals[0])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "20eb836d",
   "metadata": {},
   "source": [
    "So we have one eigenvalue **1** and other eigenvalues of smaller magnitude.  After a large number of applications of $T$, and therefore after many steps in a Markov chain, the probability distribution in this example will converge to a stationary probability distribution with probabilities."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "07f48018",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "P(A)= 0.2528735632183908\n",
      "P(B)= 0.2298850574712642\n",
      "P(C)= 0.517241379310345\n"
     ]
    }
   ],
   "source": [
    "print(\"P(A)=\",unit_evec[0,0].real)\n",
    "print(\"P(B)=\",unit_evec[1,0].real)\n",
    "print(\"P(C)=\",unit_evec[2,0].real)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1d6da9ba",
   "metadata": {},
   "source": [
    "Let us add this to the plot and make plots for starting state \"A\", \"B\", and \"C\"."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "72c6026d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAHHCAYAAABtF1i4AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABHgklEQVR4nO3deVyVZf7/8ffhyGENUJHNXUnNcsuFaNUkl3Fsmxozc5uy0cwsWswaRW0S07ImM2vKtD1n+rX4NdNRiqYSM1E0M81dK0HRBAVlO/fvjzMcPbLIYbs58Ho+PA/Oue/rus/n5kbOm+veLIZhGAIAADCJl9kFAACAho0wAgAATEUYAQAApiKMAAAAUxFGAACAqQgjAADAVIQRAABgKsIIAAAwFWEEAACYijACAABMRRgBGqAffvhBt912m1q3bi1fX181b95cN9xwgxYsWODSbvbs2frkk09qpIZ169ZpxowZOnHiRI0svyLS0tJ01113qWXLlvLx8VGTJk0UFxenJUuWqKioyLS6gIbGwr1pgIZl3bp16tevn1q1aqXRo0crIiJChw4d0vr167Vnzx7t3r3b2TYwMFC33Xabli5dWu11PPvss3r00Ue1b98+tWnTptqXfyGvv/66xo8fr/DwcI0cOVIXX3yxTp48qaSkJH322Wf6+9//rieeeKLW6wIaokZmFwCgdj399NMKDg7W999/r5CQEJd5R44cqfH3z8nJUUBAQI2/T3nWr1+v8ePHKzY2VitXrtRFF13knPfggw9q48aN2rZtm4kVAg0Lu2mABmbPnj269NJLSwQRSQoLC3M+t1gsysnJ0ZtvvimLxSKLxaIxY8ZIkg4cOKD77rtPHTt2lJ+fn5o2barbb79d+/fvd1ne0qVLZbFY9NVXX+m+++5TWFiYWrRooRkzZujRRx+VJLVt29a5/PP715SZM2fKYrHo3XffdQkixXr16uVcVwA1j5ERoIFp3bq1UlJStG3bNl122WVltnv77bd1zz33qE+fPrr33nslSe3bt5ckff/991q3bp3uuOMOtWjRQvv379eiRYvUt29fbd++Xf7+/i7Luu+++9SsWTNNnz5dOTk5Gjx4sH7++We9//77ev755xUaGipJatasWZn15ObmKjc394LrZ7Va1bhx43KXk5SUpGuvvVatWrW64PIA1AIDQIPyn//8x7BarYbV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TMV1Rs4VECAZhtlVAADQoDAyAgAATEUYAQAApiKMAAAAUxFGAACAqQgjAADAVIQRAABgKsIIAAAwFWEEAACYijACAABMRRgBAACmIowAAABTEUYAAICpCCMAAMBUhBEAAGAqwggAADAVYQQAAJiKMAIAAExFGAEAAKYijAAAAFMRRgAAgKkIIwAAwFSEEQAAYCrCCAAAMBVhBAAAmKpSYWThwoVq06aNfH19FRMTow0bNpTb/t///rc6deokX19fdenSRStXrqxUsQAAoP5xO4wsW7ZM8fHxSkhI0KZNm9StWzcNHDhQR44cKbX9unXrNHz4cN19993avHmzbr75Zt18883atm1blYsHAACez2IYhuFOh5iYGPXu3VsvvfSSJMlut6tly5aaNGmSHn/88RLthw0bppycHK1YscI57YorrlD37t31yiuvVOg9s7OzFRwcrKysLAUFBblTLgAAMElFP7/dGhnJz89Xamqq4uLizi7Ay0txcXFKSUkptU9KSopLe0kaOHBgme0BAEDD0sidxpmZmSoqKlJ4eLjL9PDwcO3YsaPUPunp6aW2T09PL/N98vLylJeX53ydlZUlyZGwAACAZyj+3L7QThi3wkhtSUxM1MyZM0tMb9mypQnVAACAqjh58qSCg4PLnO9WGAkNDZXValVGRobL9IyMDEVERJTaJyIiwq32kjR16lTFx8c7X9vtdh0/flxNmzaVxWJxp+RyZWdnq2XLljp06FC9PRalvq8j6+f56vs6sn6er76vY02un2EYOnnypKKiospt51YYsdls6tmzp5KSknTzzTdLcgSFpKQk3X///aX2iY2NVVJSkh588EHntDVr1ig2NrbM9/Hx8ZGPj4/LtJCQEHdKdUtQUFC9/AE7V31fR9bP89X3dWT9PF99X8eaWr/yRkSKub2bJj4+XqNHj1avXr3Up08fvfDCC8rJydHYsWMlSaNGjVLz5s2VmJgoSZo8ebKuu+46PffccxoyZIg++OADbdy4Uf/85z/dfWsAAFAPuR1Ghg0bpqNHj2r69OlKT09X9+7dtWrVKudBqgcPHpSX19mTdK688kq99957+tvf/qYnnnhCF198sT755BNddtll1bcWAADAY1XqANb777+/zN0yycnJJabdfvvtuv322yvzVjXKx8dHCQkJJXYJ1Sf1fR1ZP89X39eR9fN89X0d68L6uX3RMwAAgOrEjfIAAICpCCMAAMBUhBEAAGAqwggAADBVgw4jCxcuVJs2beTr66uYmBht2LDB7JIqJTExUb1799ZFF12ksLAw3Xzzzdq5c6dLm759+8pisbg8xo8fb1LF7pkxY0aJ2jt16uScf+bMGU2cOFFNmzZVYGCg/vSnP5W46m9d16ZNmxLraLFYNHHiREmet/3++9//aujQoYqKipLFYtEnn3ziMt8wDE2fPl2RkZHy8/NTXFycdu3a5dLm+PHjGjFihIKCghQSEqK7775bp06dqsW1KFt561dQUKApU6aoS5cuCggIUFRUlEaNGqXffvvNZRmlbfM5c+bU8pqU7ULbcMyYMSXqHzRokEsbT92Gkkr9/2ixWDRv3jxnm7q8DSvyuVCR350HDx7UkCFD5O/vr7CwMD366KMqLCys9nobbBhZtmyZ4uPjlZCQoE2bNqlbt24aOHCgjhw5YnZpbvvqq680ceJErV+/XmvWrFFBQYEGDBignJwcl3bjxo3T4cOHnY+5c+eaVLH7Lr30Upfav/nmG+e8hx56SP/3f/+nf//73/rqq6/022+/6dZbbzWxWvd9//33Luu3Zs0aSXI5Jd6Ttl9OTo66deumhQsXljp/7ty5evHFF/XKK6/ou+++U0BAgAYOHKgzZ84424wYMUI//vij1qxZoxUrVui///2v7r333tpahXKVt365ubnatGmTpk2bpk2bNumjjz7Szp07deONN5ZoO2vWLJdtOmnSpNoov0IutA0ladCgQS71v//++y7zPXUbSnJZr8OHD+uNN96QxWLRn/70J5d2dXUbVuRz4UK/O4uKijRkyBDl5+dr3bp1evPNN7V06VJNnz69+gs2Gqg+ffoYEydOdL4uKioyoqKijMTERBOrqh5HjhwxJBlfffWVc9p1111nTJ482byiqiAhIcHo1q1bqfNOnDhheHt7G//+97+d03766SdDkpGSklJLFVa/yZMnG+3btzfsdrthGJ69/SQZH3/8sfO13W43IiIijHnz5jmnnThxwvDx8THef/99wzAMY/v27YYk4/vvv3e2+fzzzw2LxWL8+uuvtVZ7RZy/fqXZsGGDIck4cOCAc1rr1q2N559/vmaLqyalrePo0aONm266qcw+9W0b3nTTTcb111/vMs2TtuH5nwsV+d25cuVKw8vLy0hPT3e2WbRo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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "for start in [\"A\",\"B\",\"C\"]:\n",
    "    Ns = list(range(2,200,20))\n",
    "    Ds = [distribution(N, start=start) for N in Ns]\n",
    "    \n",
    "    fig, ax = plt.subplots()\n",
    "\n",
    "    ax.errorbar(Ns, [d[0][0] for d in Ds], [d[1][0] for d in Ds], c='blue', label=\"P(A)\")\n",
    "    ax.errorbar(Ns, [d[0][1] for d in Ds], [d[1][1] for d in Ds], c='red', label=\"P(B)\")\n",
    "    ax.errorbar(Ns, [d[0][2] for d in Ds], [d[1][2] for d in Ds], c='green', label=\"P(C)\")\n",
    "    ax.hlines([unit_evec[0,0].real],0,200,color='blue')\n",
    "    ax.hlines([unit_evec[1,0].real],0,200,color='red')\n",
    "    ax.hlines([unit_evec[2,0].real],0,200,color='green')\n",
    "    ax.legend()\n",
    "    plt.ylim(0,1)\n",
    "    plt.title(f\"Start = {start}\")\n",
    "    plt.xlabel(\"N\")\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "07febcfd",
   "metadata": {},
   "source": [
    "So it seems like these Markov chains tend to **forget about their starting conditions** and settle on a **stationary probability distribution**.  Let us next explore the precise conditions that need to be satisfied for this to happen.\n",
    "\n",
    "If there is a finite sequence from state $i$ to state $j$ through intermediate states\n",
    "$l_0=i,l_1,\\ldots,l_{m-1},l_m=j$ such that\n",
    "$$\n",
    "\\begin{align}\n",
    " T_{l_s,l_{s+1}} > 0 \\,,\n",
    "\\end{align}\n",
    "$$\n",
    "we say $i$ communicates with $j$ and write $i \\leftrightarrow j$.  This property is transitive\n",
    "and allows for the definition of equivalence classes.  If a Markov chain just has a single\n",
    "equivalence class (here called communication class), we say the chain is **irreducible**.\n",
    "\n",
    "We call $\\pi$ a **stationary distribution** of a Markov chain if\n",
    "\\begin{align}\n",
    "  \\pi^T = \\pi^T T \\,.\n",
    "\\end{align}\n",
    "If $T$ is irreducible, one can show that $\\pi$ exists, is unique, and $\\pi_i > 0$ for all $i$.\n",
    "\n",
    "We define the set of return times for state $i$ as\n",
    "$$\n",
    "\\begin{align}\n",
    "  {\\cal T}(i) \\equiv \\{ k \\geq 1 \\vert (T^k)_{ii} > 0 \\}\n",
    "\\end{align}\n",
    "$$\n",
    "and the period\n",
    "$$\n",
    "\\begin{align}\n",
    "  {\\cal P}(i) \\equiv \\gcd {\\cal T}(i) \\,.\n",
    "\\end{align}\n",
    "$$\n",
    "If ${\\cal P}(i) > 1$, we call the state **periodic** else **aperiodic**.\n",
    "One can show that if $T$ is irreducible, all periods are identical ${\\cal P}(i) = {\\cal P}$\n",
    "and we call the entire chain periodic or aperiodic.\n",
    "\n",
    "In practice we typically will have irreducible chains with at least one state $i$ for which $T_{ii}>0$\n",
    "so that the typical case is irreducible aperiodic chains.\n",
    "\n",
    "In this lecture we discuss only **irreducible aperiodic** chains for which\n",
    "the **Perron-Frobenius theorem** states that\n",
    "$T$ has a non-degenerate largest eigenvalue $\\lambda_1=1$ with strictly positive left and right\n",
    "eigenvectors as well as that all other eigenvalues have $\\vert\\lambda_i\\vert<1$.  Such Markov chains forget about their initial conditions and settle on a stationary distribution $\\pi$.\n",
    "\n",
    "**Homework**: find a transition matrix that is not irreducible and aperiodic and repeat the numerical exercises.\n",
    "\n",
    "\n",
    "## Reversible and ergodic Markov chains\n",
    "\n",
    "We call a Markov chain **reversible** with respect to $p_{m-1}=\\pi$ if\n",
    "$$\n",
    "\\begin{align}\n",
    "  P(x_{m} = j \\cap x_{m-1} = i) = P(x_{m} = i \\cap x_{m-1} = j)\n",
    "\\end{align}\n",
    "$$\n",
    "or equivalently\n",
    "$$\n",
    "\\begin{align}\\label{eqn:deba}\n",
    "  \\pi_i T_{ij} = \\pi_j T_{ji}\n",
    "\\end{align}\n",
    "$$\n",
    "for each $i,j$ (no summation convention here!).  This is also called\n",
    "the **detailed balance** condition and can be written in matrix form as\n",
    "$$\n",
    "\\begin{align}\n",
    "  \\Pi T = (\\Pi T)^T = T^T \\Pi\n",
    "\\end{align}\n",
    "$$\n",
    "with $(\\Pi)_{ij} = \\delta_{ij}\\pi_i$.\n",
    "\n",
    "If we implement a transition probability that satisfies the detailed balance condition\n",
    "it has a stationary distribution $\\pi$.  This is straightforward to see by summing Eq. \\eqref{eqn:deba} over $j$.  If it is also irreducible, then the stationary distribution\n",
    "is unique.  If it is also aperiodic, then it is **ergodic** (can reach all possible states).\n",
    "\n",
    "Note that a Markov chain does not need to be reversible for it to be irreducible and aperiodic, as in our three-state example:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "22757d57",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.25287356321839094, 0.22988505747126417, 0.5172413793103449]\n",
      "0.06321839080459773 != 0.02298850574712642\n"
     ]
    }
   ],
   "source": [
    "# check detailed balance\n",
    "P = [unit_evec[i,0].real for i in range(3)]\n",
    "\n",
    "print(P)\n",
    "print(P[0] * T[\"A\"][\"B\"], \"!=\", P[1] * T[\"B\"][\"A\"])\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8a427b53",
   "metadata": {},
   "source": [
    "## Metropolis algorithm\n",
    "\n",
    "A simple way to generate a Markov chain with a desired stationary distribution is to\n",
    "propose a new state $j$ given state $i$ with probability $P_{ij}$ and\n",
    "to accept the proposal with probability $A_{ij}$.\n",
    "This transition probability for $i \\neq j$ is then given by\n",
    "$$\n",
    "\\begin{align}\n",
    "  T_{ij} = A_{ij} P_{ij} \\,.\n",
    "\\end{align}\n",
    "$$\n",
    "If we use\n",
    "$$\n",
    "\\begin{align}\n",
    "  A_{ij} = \\text{min} \\left(1, \\frac{\\pi_j P_{ji}}{\\pi_i P_{ij}} \\right)\n",
    "\\end{align}\n",
    "$$\n",
    "we can show the detailed balance equation.  Consider without\n",
    "loss of generality that $\\pi_j P_{ji} > \\pi_i P_{ij}$, then\n",
    "$$\n",
    "\\begin{align}\n",
    "  \\pi_i T_{ij} = \\pi_i P_{ij} = A_{ji} \\pi_j P_{ji} = \\pi_j T_{ji} \\,.\n",
    "\\end{align}\n",
    "$$\n",
    "\n",
    "This choice of transition probability is called the **Metropolis** algorithm.\n",
    "\n",
    "For $i=j$ the the detailed balance condition always holds.  The transition probability in this case\n",
    "is\n",
    "$$\n",
    "\\begin{align}\n",
    "  T_{ii} = A_{ii} P_{ii} + \\sum_{j \\neq i} P_{ij} (1-A_{ij}) = P_{ii} + \\sum_{j \\neq i} P_{ij}(1-A_{ij})  \\,.\n",
    "\\end{align}\n",
    "$$\n",
    "Therefore also\n",
    "$$\n",
    "\\begin{align}\n",
    "  \\sum_j T_{ij} &= \n",
    "  T_{ii} + \\sum_{j\\neq i} P_{ij} A_{ij}\\,, \\\\\n",
    "  &=P_{ii} + \\sum_{j\\neq i}\\left( P_{ij} A_{ij} + P_{ij}(1-A_{ij})\\right)\\,, \\\\\n",
    "  &=P_{ii} + \\sum_{j\\neq i}P_{ij}\\,, \\\\\n",
    "  &=\\sum_{j}P_{ij} = 1\\,.\n",
    "\\end{align}\n",
    "$$\n",
    "\n",
    "**Homework**: compute\n",
    "$$\n",
    "\\frac{\\int dx x^2 e^{-x^2/2}}{\\int dx e^{-x^2/2}}\n",
    "$$\n",
    "by creating your own Markov chain with the desired distribution using Metropolis and computing the statistical mean of $x^2$ in this distribution."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d12a581c",
   "metadata": {},
   "source": [
    "## Example: Harmonic oscillator\n",
    "\n",
    "We now use the Metropolis algorithm to generate a Markov chain of positions $(x_1,\\ldots,x_N)$ distributed according to $p(x_1,\\ldots,x_N)$ of the beginning of this chapter.  Note that each possible tuple of positions $(x_1,\\ldots,x_N)$ corresponds to one state in the system.  This system has uncountably infinitely many states, however, previous discussion also applies to this case.  If we generate the Markov chain using a computer which has a finite-bit representation of floating point numbers (say 64 bit double precision), the state space is finite in any case."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "5bc9807f",
   "metadata": {},
   "outputs": [],
   "source": [
    "# define Euclidean action for mass m=1 and V(x)=x^2/2\n",
    "def S(x, beta):\n",
    "    N = len(x) - 1\n",
    "    a = beta / N\n",
    "    return sum([1/2*(x[j+1]-x[j])**2/a + 1/4*(x[j+1]**2+x[j]**2)*a for j in range(N)])\n",
    "\n",
    "# contribution from x[j]\n",
    "def Sj(x, j, beta):\n",
    "    N = len(x) - 1\n",
    "    a = beta / N\n",
    "    jp = (j+1) % N\n",
    "    jm = (j+N-1) % N\n",
    "    return x[j]*(x[j] - (x[jp]+x[jm]))/a + 1/2*x[j]**2*a"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "9cb625ce",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-0.03349999999999986\n",
      "-0.0335\n",
      "-0.5811300000000001\n",
      "-0.5811300000000001\n",
      "-1.5282800000000003\n",
      "-1.52828\n"
     ]
    }
   ],
   "source": [
    "print(S([0.1,0.33,0.52,0.1], 10)-S([0.2,0.33,0.52,0.2], 10))\n",
    "print(Sj([0.1,0.33,0.52,0.1],0, 10)-Sj([0.2,0.33,0.52,0.2],0, 10))\n",
    "\n",
    "print(S([0.1,0.33,0.52,0.1], 10)-S([0.1,0.33*2,0.52,0.1], 10))\n",
    "print(Sj([0.1,0.33,0.52,0.1],1, 10)-Sj([0.1,0.33*2,0.52,0.1],1, 10))\n",
    "\n",
    "print(S([0.1,0.33,0.52,0.1], 10)-S([0.1,0.33,0.52*2,0.1], 10))\n",
    "print(Sj([0.1,0.33,0.52,0.1],2, 10)-Sj([0.1,0.33,0.52*2,0.1],2, 10))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "09b13eae",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "acceptance rate 0.496915\n",
      "acceptance rate 0.498035\n",
      "acceptance rate 0.498465\n",
      "acceptance rate 0.49787\n",
      "acceptance rate 0.49846\n",
      "acceptance rate 0.497795\n",
      "acceptance rate 0.494775\n",
      "acceptance rate 0.497665\n",
      "acceptance rate 0.496965\n",
      "acceptance rate 0.49543\n",
      "acceptance rate 0.49469\n",
      "acceptance rate 0.49657\n",
      "acceptance rate 0.49571\n",
      "acceptance rate 0.49553\n",
      "acceptance rate 0.49579\n",
      "acceptance rate 0.4962\n",
      "acceptance rate 0.496715\n",
      "acceptance rate 0.497305\n",
      "acceptance rate 0.49608\n",
      "acceptance rate 0.49575\n"
     ]
    }
   ],
   "source": [
    "# since only ratios of probabilities appear, can ignore overall constant factor\n",
    "def P(x, j, beta):\n",
    "    # make periodic\n",
    "    return np.exp(-Sj(x+[x[0]],j,beta))\n",
    "\n",
    "def sample(N, beta, n_updates, epsilon):\n",
    "    result = []\n",
    "    accepted = 0\n",
    "    rejected = 0\n",
    "    x = [0.0 for i in range(N)]\n",
    "    for i in range(n_updates):\n",
    "        for j in range(N):\n",
    "            x1 = [x[l] if l != j else x[l] + random.uniform(-epsilon,epsilon) for l in range(N)]\n",
    "            r = P(x1,j, beta) / P(x,j, beta)\n",
    "            l = random.uniform(0.0,1.0)\n",
    "            if l < r:\n",
    "                # accept\n",
    "                accepted += 1\n",
    "                x = x1\n",
    "            else:\n",
    "                rejected += 1\n",
    "        result.append(x)\n",
    "    print(\"acceptance rate\",accepted / (accepted+rejected))\n",
    "    return result\n",
    "        \n",
    "random.seed(13)\n",
    "X = [sample(20, 10, 10000, 1.4)[400:] for i in range(20)]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7226a083",
   "metadata": {},
   "source": [
    "Next we compute\n",
    "$$\n",
    "\\begin{align}\n",
    "\\langle x_f x_i \\rangle \n",
    "&=\\frac1Z \\sum_{n,m} \\langle n \\vert x \\vert m \\rangle \\langle m \\vert x \\vert n \\rangle  e^{-E_m(\\tau_f-\\tau_i)}  e^{-E_n (\\beta-\\tau_f+\\tau_i)} \\,.\n",
    "\\end{align}\n",
    "$$\n",
    "\n",
    "Note that $\\hat{x} \\propto \\hat{a} + \\hat{a}^\\dagger$, such that the only non-vanishing matrix\n",
    "elements are between neighboring states.  We have for the first two states\n",
    "$$\n",
    "\\begin{align}\n",
    "  \\langle 0 \\vert x \\vert 1 \\rangle &= \\frac1{\\sqrt{2}} \\,, \\\\\n",
    "  \\langle 1 \\vert x \\vert 0 \\rangle &= \\frac1{\\sqrt{2}} \\,, \\\\\n",
    "  \\langle 1 \\vert x \\vert 2 \\rangle &= 1 \\,.\n",
    "\\end{align}\n",
    "$$\n",
    "\n",
    "This is straightforward to compute from the wavefunctions\n",
    "$$\n",
    "\\psi_n(x) = H_n(x) e^{-x^2/2} \\frac{\\pi^{-1/4}}{\\sqrt{2^n n!}} \\,.\n",
    "$$\n",
    "\n",
    "For sufficiently large $\\beta$ and small $\\tau_f-\\tau_i$ we only have $n=0$ contribute and because\n",
    "of the matrix elements\n",
    "$$\n",
    "\\begin{align}\n",
    "\\langle x_f x_i \\rangle \n",
    "&\\approx\\frac1Z \\vert \\langle 1 \\vert x \\vert 0 \\rangle \\vert^2  e^{-E_1(\\tau_f-\\tau_i)}  e^{-E_0 (\\beta-\\tau_f+\\tau_i)} \\\\\n",
    "&\\approx\\vert \\langle 1 \\vert x \\vert 0 \\rangle \\vert^2  e^{-(E_1 - E_0)(\\tau_f-\\tau_i)}\\,.\n",
    "\\end{align}\n",
    "$$\n",
    "\n",
    "Next, we check numerically the matrix elements by integrating the wavefunction:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "0c89667b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "|psi(0)|^2= (1.0, 8.012979811542269e-09)\n",
      "|psi(1)|^2= (1.000000000000002, 3.931389091993226e-09)\n",
      "|psi(2)|^2= (0.9999999999999994, 9.015428609661171e-09)\n",
      "|psi(3)|^2= (1.0000000000000007, 3.897728507258696e-09)\n",
      "|psi(4)|^2= (1.0000000000000007, 1.1156813993696975e-09)\n",
      "<0|x|0>= (0.0, 0.0)\n",
      "<0|x|1>= (0.7071067811865492, 1.2850956593672991e-08)\n",
      "<0|x|2>= (0.0, 0.0)\n",
      "<0|x|3>= (-3.400058012914542e-16, 2.9488804553452953e-09)\n",
      "<0|x|4>= (0.0, 0.0)\n",
      "<1|x|0>= (0.7071067811865492, 1.2850956585037702e-08)\n",
      "<1|x|1>= (0.0, 0.0)\n",
      "<1|x|2>= (0.9999999999999999, 1.3187266250307033e-08)\n",
      "<1|x|3>= (0.0, 0.0)\n",
      "<1|x|4>= (2.1163626406917047e-16, 3.3229850548566938e-09)\n"
     ]
    }
   ],
   "source": [
    "from scipy import special, integrate\n",
    "H = [special.hermite(n) for n in range(5)] # get first 5 Hermite polynomials\n",
    "def psi(x, n):\n",
    "    return H[n](x)*np.exp(-x**2/2)/np.pi**(1/4)/np.sqrt(2**n * np.math.factorial(n))\n",
    "\n",
    "# test norms\n",
    "for n in range(5):\n",
    "    print(f\"|psi({n})|^2=\",integrate.quad(lambda x: psi(x,n)**2, -np.inf, np.inf))\n",
    "    \n",
    "# compute matrix elements of x operator\n",
    "for n in range(5):\n",
    "    print(f\"<0|x|{n}>=\",integrate.quad(lambda x: psi(x,0)*x*psi(x,n), -np.inf, np.inf))\n",
    "    \n",
    "# compute matrix elements of x operator\n",
    "for n in range(5):\n",
    "    print(f\"<1|x|{n}>=\",integrate.quad(lambda x: psi(x,1)*x*psi(x,n), -np.inf, np.inf))\n",
    "    "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "156af054",
   "metadata": {},
   "source": [
    "Now we perform a statistical average using the Markov chain data to extract the energies and matrix elements."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "cc36bcba",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "20\n"
     ]
    }
   ],
   "source": [
    "print(len(X))\n",
    "\n",
    "def correlator(X):\n",
    "    T = 20\n",
    "    return [ sum([ x[s]*x[(s+t)%T] for s in range(T) for x in X ]) / len(X) / T for t in range(T) ]\n",
    "\n",
    "correlator_average = [correlator(x) for x in X]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "6a29b598",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYAAAAD6CAYAAACoCZCsAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAABRGElEQVR4nO2dd5wURdrHfzVpl7yEJUlYQFGQLIoYEMQAYs45y+mZz3sNZ0LPnHPA7JnTCWYBQTCAonLkLDktGYQNM1PvH90907mru6tnenbq+/nA9nSoqu6urqfqqed5ilBKIRAIBILiI5LvAggEAoEgPwgBIBAIBEWKEAACgUBQpAgBIBAIBEWKEAACgUBQpAgBIBAIBEWKbwFACCklhPxCCPkfIWQOIeQuHgUTCAQCQbAQv34AhBACoAGldCchJA7gBwDXUkqnWl3TokULWlFR4StfgUAgKDZ+++23jZTScl7pxfwmQCUJslP+GZf/2UqViooKTJ8+3W/WAoFAUFQQQpbzTI/LHAAhJEoImQFgA4BxlNJpJueMJIRMJ4RMr6ys5JGtQCAQCHzARQBQSlOU0j4A2gE4gBDSw+Sc0ZTS/pTS/uXl3EYwAoFAIPAIVysgSulWABMBDOOZrkAgEAj4w8MKqJwQUiZv1wNwJID5ftMVCAQCQbD4ngQG0AbAG4SQKCSB8gGl9HMO6QoEAoEgQHhYAc0E0JdDWQQCgUCQQ4QnsEAgEBQpQgAIBPkknQJ+fRmo2pbvkgiKECEABIJ8snQS8MUNwA+P57skgiJECACBIJ8oPf/Nf+a3HIKiRAgAgSCviDW5BflDCACBIJ8owRgJyW85BEWJEAACQSgQAkCQe4QAEAROMpXGXZ/NwYbtVfkuSngRIwBBHhACQBA4UxZvxGs/LsO//jsr30UJHz7X4xAI/CAEgCBwlEWHUmnR2BlRnokYAfgiVQtsECHI3CIEgECQT8QkMB++vgV4bgCwbVW+S1JQCAEgyBmi/2+GGAFwYcXP0t/dW/JbjgJDCABBQXPW6Kk492XDAnSFhxgBCPIAj3DQAgETQTRxPy/dFECqOYSKEYAgf4gRgCBnCBWQGXmcA9i4GBjVBFg/h/2aVBKo3hlcmQQ5RQgAQeAQ0bu1Jp9moPPldZumvch+zfvnAvfvEUx5BDlHCACBIBTkQUjG60l/3UycLvwqmLII8oIQAAJBXsmjCqheM+lvNJH7vAPilz83Yd024XHOihAAgpyxbONf+S5C+MjrJLA79VMhOPLdOXYuTnz2x3wXo2AQAkCQM5Zt2pXvIoSQEDSqjKOPF75fEnBB+LBOxJxiRggAgSAMFMA8+ZJKYf1T1xACQCDIJ8IPQJBHhAAQCPJKHieB3ZqghkBbJeCLEAAWnP3SVAx6aGK+iyGo64QiHLQYfRQrQgBY8NOSTVixuW5NWm7bXYtxc9fnuxgCDcGpgNJpisod1dzTFdQdClMA7NoMTH4kJL2nwuGad//AZW9Ox5qtu23PS6bSmRj+XMhVBzOdAravyVFmnAgwHPRzkxZj/3vHY9WWutWREfCjMAXA2KuB7/4NLPsh3yUpKJZvkuzwq5Np2/P2vPUr3PIJx9W7ciWnJ94LPNatwIRAcCOAiQsqAcDGMUp0oIod3wKAENKeEDKREDKXEDKHEHItj4LZUiObo6VrA88qp6z5A3j9WCCZ/2H7e7+u9HRdKk2xuybFuTSMLPxW+rurACOEBjACYB7FMeYtxEXdg8cIIAngBkppdwAHAriSENKdQ7rO1DUV0OfXA8umAOtn47flm/HtnHWBZzlxwQauHrrXvvcHut3xtXZnzlRASelvpICinOegDju273n+jmqSaeyqSea1DMWKbwFAKV1LKf1d3t4BYB6Agg8X2AC7cX/sJaB6R17yP+X5nzHyP78Fkra6Z3jRa79i8COTuKX9+cy13NJyjTIiLCQBECCF0j066bkf0f2Ob4wHFn4jrfUrCAyucwCEkAoAfQEYlmgihIwkhEwnhEyvrKzkmS0/NswDJj8MALgk+hXOik0Efn6WaxYPfj0fn/2vkHTUHMhVS6REtYxEc5QhBwK0/8/KeYc8WFVAAY0U5qzZbty5dBLwzunApPsDydORnZXAH2/nJ+8cwq2rRAhpCOBjANdRSg1vlFI6GsBoAOjfv7/PmiRV2OpkGiX+EtLy2nCpETnwShCl1Urz1Wc/P0mKp3Jc77bGgzkaipO6uvxgrWzdpBsBpOUgZpFICO+7coH0l9pPzAeCy/o2d61JQx0Uf22U/m5Z5ngqpRQbd1ajnGf+758LrJwKdBoElLXnmXKo4DICIITEITX+b1NKP+GRJgu3j5nNN8FkjfSXpkAzvaZ8DKSDbaiC6slZkqt2N9HAdHf3O7/mquZKpjg21r+Mlv5uXeHuuvfPBe5rx6kQbC9oZ5VKTx+i+bflm3ZhI29/hx2yKrOuGZro4GEFRAC8AmAepfQx/0ViZy3vuN9KzzGdyjb7eanoweRZZ3v+enTvrKo2bXTqm/IoMP8L10n/tnwzut/5DX5b7mIRFRbcjgDmfQbUsM1P8XrtYa0/qUC/0XDeMy94jAAOBnAegMMJITPkf8dwSDf3KLrjdArpzKPJoQAI+AMLouc/Y+XW/Jl96tHd35LKndheZdGDm3A38N7ZrrOYtKASNck0fli00UsJc0qgNTfojlHeRxhy/l/+M7/FCBjfcwCU0h+QazEpO/oQ3lU8MwJIqkYAOdTN5r3Ss3HzxzOxX8emGLx3S5z47I8Y0asNnj27X76LpUJ6jkMf/R57tmyY57LkH+uP00d9o2mExY9U/dkcFJmNhSleqjEAi8fzSyuEhOMNumXjgmDSVezI/9oA5bPJub4cgB95+uPijRhw33hTu2peQ/j3fl2J//toZiaPmau2cknXN8r9qd7Z4g18Y9gXlEKAsyOYhlT+nRWzZO/z9vjbuCb2X55J1mkKUwDIjI5znnKo31z6m6rJTAKv32YfNyds3P/VPKzfXm3b8CU2zgWWfOc7rwhRhKTvpDgTugI5s/nPwJLmJfhDOgVgoBPJoy9KgVHQAqCUcJ6hV1mRpGUBkErn0jzPf8NFGPqo7d4/EvjPSZnfHch64O3TgTmfAgDKsQXLSs8GFrENf50EQM7bjQAlku+UFUszPVuXS7bnVqTTwNunAX9OZstnxTR8svE4NMc292W0QCMAODzjGSu34snxi3ynE74OSOFQ0AIgMChs5wDWbN2NO8fM5msOyBk3H8VL8UeBRd8AH14AAOgTkdd+/fVl2+uyGhf7zHLxfe6sTgZsDaLFU2941XTgnnJrvXK1jZ199TZg0beS+acDtak0fnvvbkSRxgGR+dYn5rnlPPHZH/H4+IUOZzk/aP1dUC5djuKQKkIAWJCpRCb14KaPZ+KNn5dj2p+bOefqv+IqDdMvf27OOEA5sXdkleZ3mtEHgqtZYNU2YLX30BenPPcTtvxl0bvOJ39tAmrkWEsrfpb+LrFYaMjueapMlJ1YsG4H1u/IPgvLVDNhTry8R13d2LIMWDPD9oqq2hR2WFllCfJC3REA6TSwaJz1ENuCVVt24dM/Vuv20owAoCYjgBRjw5ortu6qwY+LtWaJ9345Dy//sNRTelnhx3afTmcxNS9vnw68dDiQ8hYUbMH6HWhB5B40pViwLj8xnAw83Bl4biC+X1iJqlqHeyM2n6NyLG2fxo6qWhz7NEOY9BXTgK9vcj5PXQS7N/lkb2D0YbbXn/TcT+g56ltXeTpx4H0T8Mx3i7mmCSDvo6NcUfgC4NVh0t+FXwNvnwr88aary095/idc9/4MubecfemsnsCUUnw3fz1quaiDvFW628fMwTkvT8O2Xdre1dJKv1E+HUYAylk8vpXV05nytKIHUQs7KTRAEHi6163LccGrv+DTPxxiQNkJAOVpOwgA69j/OjLP2yMeHsS8AEJJrNtehbEhiq1Vm0pzja4bNIUvAJRh9TY5fn0lu4kopRTrt0sNhX6Cy24EoDoNv6/Ygotfn47HxznpMtlJUVVhGNYGmLxQmjysTae5aD/TjCOAjBVQCPSlexDVCIjSUHbgnITSdR/MxL1fzLU4qsSmcjdCsvaVKRCTngLj7s/mYvAjk7BhO+coBQFR+AKAgYynqhItUmb7buuPyS4UhFpYrNkqvejlm/gtu7dll6TGKkENcG8b5oiklLrsP8//0uKAIgDsRzXKc0hTAKOaAF//y03uWri22O7SopSi4uYvmIR4kKaQPy/dgpem+DMHpbq/gEWZ1aMNxpvKbSw97/WB9cpTn/8JRz72ved8zPjP1OUAgK27C2Ouo84LgMUbdqDbHV9j8vgxwIMVwOxsrLpFG6z1xJTRESyQBkHOsz6qAJqS1j8Ogg8vNMladb8ON2c4OpVH6GwOD9SlMKEUKMMOLJnoTn3oGodypcAYxlrXkbHLgsBCd++h4mon/cM1xPJi+TN9+RYssvSX8Xd/YQw8a0adFwBz10qN/JqFsoXJHEkArN9ehVNf+DlznvbDoRk1SDhMPVknY+0/A+MxKV2NyklzmMp/tPmXYwuGR6bpT8srfr+35+NP4pnE08C2Vc4neyQbnt+8tDweo6KOc24QnZ9YMpXGea9Mw7SlLpfY3LwU2LTE3TUBUpNMY9zc9RqrOEfvdd+VujAkQJ0XAErjVRWRnbyi0goCippFd3J2U36B6ZS12Z1a981TD27VHlueTyk6kzWIbl6s2687z3ihvN86ww+mr0Tvu77FX9VZddk7ifvwfOJJIKmovYKXAPPWbkdVLWvQOZcjAABtlTkEhzkXy3Zh+qvAgq8tDnLGZeNkJm/Stc4e7uu2V2HKoo24/v0ZxoPr51hf+FRf4GlOsaHW/s/f9ekUxv/yP1z25nR8NjM7WXz8Mz/6LJg9heI1XecFgMKF6+7T/Lb9hlSTwGkTPbgypF61ZTce/NrG0YYbzrXpu5J/ovlrB7tMV3oIm9E4u0f3XJ6asAjbq5IagalMuJLMCMFlti6YvXobpi/bjOFPTsEtn8xiu8i1Cshp7GTEcPbn1wPvnuGUk7s0NZcyjgINKiDz6yLj73DMWUlLWUhHfdbuX97AfV/OC94kepNPT+Hxo3DMt4PRAtuwUh8S3BYX97VpCTCqCVbNzPp3FEj7X/cFQNriw7Har6dtpbVN9S2fzMLKzVJPaskGDqZfujKxViLNVTZdD8MROb/5aecVj9RFUzYVPWeQTcCxT/+QUdVNX27teKdt6NyPAOwm/QsJ5mUgGVC+EcXaS51kvTnvYfTkpfhpSf7DYg+N/IbukeWZ3xphvkjyO2hKdkhGEpTi+4Wcl6SV42p990F2DiyZlgwLXvsxuBhPPKgTAuDLWcbgT5U7qrFqyy7j9yxX5s22XqM0sx5Awypj2jVJ46hgwXp+jkeE92upXAAsGg9CpMnODPLoZjMaWV6qfPyHPjQRs1aZx5VxEzF19Vat6mH99ipU7qgGVzHioRFn9fuoX7OJ4SzLTGQ8NM6zPshs3mQzEtKrIv2ETFc69xFj+59B7/+yPkfmjw98NT+zJsMriUeZr3vnlxW44NVfAimT+lkrz+UxjubhQVAnBIBZL2T/e8fjkAcnWrYFVbXaimuMJ5LlvV/k5fq2rwVmfohNyxlVER7ZUW0UTl/OWouKm7/AVlkVs2lnNbaZmJqpP9IZK7dKjfOzBwBvn4JYJIJ/x19TnWF8OFJvOJuK2prh9Z+WmZbX0ROYEHQny9AAuw3D8AH3TcCQe8c6mpw6oW/oWEd4gGI+y9Aoz/wQf/9tOPoRrx+1tkx69YltY/359ZnNJXOsnbiU2+YhTvUjALPQH8mUNqcB903gkDMco6O+8P0SnPvKNNtzzFi1xWTuY/XvwOM9tesP+xwJfjtnPQDj8wkbdUIAWHF19BN0WWpu2qfvtZKJ9wDrZpqee7PS43psH+CTSzGh5P+4ljNbCOkDe/rdzwz7X54iebouqZTM1va7ZzyOuPtD29AXC9bvwBTVylUL1u9AKZztk9UNkfqj1/cuE8smogdZ6hwNNFWDL0v+hRfjjyERM1a5fclyk6uMsH+TFNUmozTrs9X6LZtMlkvqwH0iK7noeLv8y8oPw56PSu7O/lj6PTD7Y8tzCYBo7XZgnU2nxdIITHoWtiGKgprtrFV1FNZbOcdZc8aLP5vuNy3t728C21YAizkJLwBPTpDmLnYzGy7khzotAG6If4Q+cx7U7VUmd7V7I1NUtvaUTzxB18gf3GOJFwCoGuJdmzIfmrrcv5ZcIUXwVO1TW+sAwLJN2rkJX/0Rqp0wbTT2EnxechvupU/aXycHMBsQmY99xh7vsMqSdQmZBQClrtRSehNgANIi7VMe001+uHh6zx8M/PgU+/leefN44KOLDbvVKq1ur/cAXjjEddJZFZDNvJLdh7LmD9d5ZkioVnJ7fqDry80CNVI4Weeo3m+t+YTxmq27cf37M1CdNDbs3FcozAF1QgCov0tT807Ta/y/rMuin2NZ6dmIQ2p0f16yCXPWsMVfv+fzuZi/ThcbRRXpsRTV+LHkmszvjADQS64F2l5kswYJbZK681lEm9U5FMCvy7YYKvqxsA8+pjzqOEmh/saZwJirHMvgFm2JfcwBKIV97xxgwl1atYCb1NfPBsbdbn5s3ljLUvjFWK2d3/eumpRRnbhiKsjOdQBs6h6AqJ3H0+jB2Uiobpl4j7frYF5/bRtnk5XkrEJz3zFmDv77x2p8v0A1kcw6CqrdDeziHUHYH4UlAJZ8B0x9wbB7q2pC99u565mSsrVe27mOSZrfGn8HgOyxC+Csl6ZixFMMkRgBvPzDnzj7JZUOk1JgQ9a2ek+yWrPgjSbsgg36w/rzzT6OiNqfQfUR7KhO4k9VYCtKqWnPR80eqMS50XG6PHXqmB3WKzZl0t+1GZtmerSrtxDudn4EmfhHSkhqxU4+xS/EdFK5NxOhwgujP4pzPf7sf2tx+COTtDtfPRptv70cQLbuLTUJchaLODQhqVqpY8MQxpoXjWDt46CYcB8TmYplpWejFNVwMylfY+MYapXKi98vQcXNXyD96nDgoU7MeeWCwhIA878AJj9k2P3l7KyDRybujwO2k4QfXpiT4Zymwixnc0x5wmQBDVuXBt1vfbg4gjSOj5rrS/XxjSikD95uFHFf/BXcE39NioO/ZTnw1c2YNN9eKPePZAP4ZYbu752N5p+cgUbQDcXTKeCtU4Hl5mVWSmomKL+YaS54NJPAY/6uO6qaA1HVGS+q75ocTAh6GdhSAJtMrOIarJcmm+16+c6T7RR4pKux4du1GUMj3td/sKMEqnuplubMyrBTCosh38oNsQ8B6IIIMqAEXnTzmJVw1ZG1PlRiAVFYAgAwreEEAP5itO3N6NLDoa/rffP7UiC18aM0+/WfnFJct4vQ6FVd+rs+J2o38aWzlKJAPGrf8nWPLJNPTgEfXwJMex71/njV9pr/i39g3FkpOdjFkJ3ToJRKo4fF46S0VbAI7JhF2c29uLX7HvhqPn6fKRkJHB4J5kPmOe+Ukj/tqH70BZisf6FDbyBhUzAKAMt/sj5hw3xg10ZpwR8175+HVxKPohn4h4jWsF0K7XFV7FPrGqLc4Jf/9JRFyA19bCkwAUBgJnsjSAOTHwYAXBhjW3BCXcf9LiLtdbRACNCWyHFWVv3qeK4VO6vZQgQP27e1offemmgFitNoIh5lrDKS1w0A4PKYlc7b5LLMGszGG16zrSq78I2dALc4ZqWuMJiBrlKZWcoP/oXvl2C/1AwAwJHR3/37i1UF0/ApxUpSKbBcjBhHxNeZhHYoxxaVDSm7BVWaUmCTzYIsi74x379ZihWUYLBK44nylhU/H+nbVTuOjTNcY0bLlV8DM6WOyye/r1alZcSwNySdT6DQBIBFK+jFiT/b66OYWHKDyVk+X1KyBqixdz3fuLOGOQQBP3M7h3TUMWL08weUomFpjD19OeRwxO+zlDk68gue+9h8XoDFE/iOMbOtndnUP14e6q2ADmjK+ICz97UX9KabB0VsYvbIdI6sxa+lVwI/PyMnYhz5WWfokLjZ+gXJatt5IL+YfbuDorIZbGYNC+VcHW+fauqDsKsmiVFjs8+y79RrgU8uAwDMWGlv+LGrRvcMGNb4yBWFJQBgbr3jrrGWzlU6mi2xle2yx3u4yAPAe2dZNiSN8Rf2JKtUpXHGaa4tA83m0RqbZC9b5ZBzyDoyP+uDoLdhpnDhNAUKROReKNgnAONV2siT6pxeTDyBtxP3q0pjnbXZ8U1/1eCC14xeoNSQkzO5CPY1acGGjN8HK/q7PimanVtaaOGtfoAyB7N0kpyISx8Kt6Ox7dk5O7+PMQ6jgOkSsV4hTJ8fATW+zPmfG657ZcqfGUfIJtC+E0cZaBwCOFyROwpMABBTBx8vvXVlDsDqWsN+ZcUxVhaPBzaYO7B8lBiF8SU3ArBuTPX5ux0BTCj5J6aWXo2fpmht7h1TUWXLOqFujZSbmxHAQWMHyZf6aRq0+TXGX7gy+imIiT4c0Po2qHb6yN8b+nd+4Wu/Yuij37tKwzRyp8xRjzOmZTEC0Eyu6o65wsu7/f5hya9g6vOZXYMi/8O8kgsNp7Yl5vNk6rJaqoAA4NvbDNemaqvwavwhdCUrNXGHdDnY3YF5QfJMgQkAcHh4BDuqarG9Kin/8v8ynNKoqk3hxe+XZFz/u0ayk3CsAsDMDd+OciINSz8r0VbmLbSh2ekarO5mzdbdeOa7RWhEnEMJ44PzM2atJcS9nlexS7d8tnaB83TH7oy/gf+Lf4AhkRnmSdmWxN1zH/km+1q7bWAeZ9+rj8pvyzdnLLc81WtKsWLTLvy42Nyg4ubYu4Z9jsFAnRZUYi3nxHskv4Kvb87sOioyHTHiLoRIxuRf/h0xGwGY0HLHbBwenYF74q9iFy1xlacBn2FPeMJFABBCXiWEbCCEzOaRnk1GsJwEdkHPUd/i359LvfMEMZ9AdfPZ/y32hXaHboJvwH0TMPbrr7DxuWFoDDbPXLv8x8ywtuKwU/IokUu98seKrfh0xhrUUuuVqzICbeU0o+WHC2qdXqnspGRZDtVjqA9JDZYwURco5+p7dUmPjbC9H4quhx/TzmdUkPWZ8njhlOftTGPZGtuTn/8Jl71hbpDQzmAySdnMQENE1pnNnWBX3+YulFqe14WsxhVRe6OHv6rDs1wkrxHA6wCGcUrLBg6TwDppf0zEPKCU08eibsgvj32GzkSld/xeG35i2+5aXBv7BK02TkW/CFsgMTuhxhwXX0eLRs49F/VdD4rOwkmRKbbnBI3du9U6pWkngbW/5GBmJiV/afJS07RXbrL3YCWESL4Oo5pkrEHcou84vF/yb5wUmaJpVBOoBZaxORfyYOPOakPdoyZbANCXLDYIq8E6E9mvZ9tP9pp+Z9sczFQf3gsDGSa3zZi9RuqcaeuEcwuiyI1S1CCpW7pTLVI+StyFm+LvmarLMufXNRUQpXQygJz4OJtVmHzE4Pi1ROswtL/Kmclslj/bw9QHLWATXzuqlF4DdRzxaISRB0ZGs5NgjyeeNxzPZaSkJsR6EnTq0myV09QBC98Hs3py75fz7CWahXrgtN/OzixWUvPzaO1BHx94r8hSTXFGxd4AXh/hOh0zB6dG2I3Nr52JCgezZ9Y5mziSUmOmWkbz9cTDmnPWbDUbdWaf6cWxr41zM493t8/4rw2m6ig1z8Sf1Kz/DchGEJlV8JSSsN0rldU2vSJGCyH191AP2m//kMgsTEpcj5bYYkgrDORsDoAQMpIQMp0QMr2y0uOCDJZmoN4/OL1nLGuaer32g/GXTM+btGADgOzwmbXx1Oe/bIUUkvqe2KuYHTnL8jpKgQGReRbHGJ4TITgk6q13BfAbHbQgUk/NU+RVXagF5ZlbNWxelvNsuTMr8Geu1qm6Rh/mOj0FolOr7B1xaXwgY+ZgNSgyE82Wf4Un4s85lkHh79Ex+GrLsVrz4Mx5wEtTlgI/PM6UlhmXxL7CtbFPbM+xStfOuuzY6DTgo4sM+5WevN2o0Az1p2N1zVmxiZrwLa2wGW/GH0BFZD26RVaoEitCAUApHU0p7U8p7V9eXs41bX/2Ijx8C4ypKlz4mr2Dl1X++sbqj1IpLsu5MX4ha82IfzrSsK8DWY8RkamqPbkbAdihFmgHq1UCcb2ONvuxU0pxqU7HbSYXM3c4831XZepCVluuY8vy1KQyusqSGWXk2Cdiv2C7eoR5UewraaPaaEJKCMXvK7bapsXSwB4akVSaG1wuJnNmbJKr8wGgS7lkBKEpFcMksJVFnFWnqiF2Y1rpVYgQ6fjp0Ynqq1iKmhMKzAqIWKiAtBLVbMUu9dlqAlFn2HzB+iOsVkAAcHH0q8x2a5UFSVTVE2pRvQJWeG1Yvk3ciGcTfEMbn/aCTfgAHUrgLjtOj2lNHLUmf4oAAKqTaYyft0F7rl3C3+vDiVtkItMA/lbEMrVT55AOADyVeNZkr4o/J2N4ZBr2YRx1eB556xpcpbNzwH0TMFs/muJM7/ZNAGSt5IjqfzsmzM9qLdT3/da0Fabf8NWx/2p+j4hm/U9IMY4AuMDoCfz+dPZhM09ZvC/5U2qoKhdYnsMqcMyWabwj/p/M9iHRrMHVldExme0Xtv4NJ0bNA8uZqTo6EufoqaU6dRePZ/brsi3OJ8k850P4nBn9DnvJTncEaezS9eSWlZ6N+MIvzC5lpj/jxD4raUqBNX9ohLwTq7Zovc49Nc7pWjyfeBIXRi3CN5iwf0VTW5WGeTn0AQmz57h1fHPDiHk3ZrZbky2GvO2wOm+GxQiop8lcQYa6NglMCHkXwM8A9iaErCKEXOJ0jWcYPIHtRwC65DjKwC9KbpU2lltbbZwZ/Y4pLb2lgZ5H4i9mtisiWpPIfcky02vM6l3chZcuC25HVGY9+4qb/TXI6ht9IP4yusk9WquSlf5unL/J1+IeGRXQ6MH4qeQa5qepX+jcT/mPjhp9GZQV6dS8m7gXR+/b2jYtVrVXZjtAF+u9Nk00T99Hnmu3mZtW234HdW0EQCk9i1LahlIap5S2o5S+wiNd87yM+5wq+95EpRbRvWyvk8BeUQ8FAW9+AMZz9U5R7GV3c5cnRH5AGXZwU5sNe2Kyr+sHv7sXrpfD+mpYOgm1JusWWFlP6dcpZsZlPBuW96KeBI4Q6mmSkifl8mT8C9+bm8vKuVseMS+/dX1lrVlm1jgs2K1fw4r+ntw/+jo2AsgVlTurkUobP2Kndzo6/pjlMSsBkKuXFMQcRANiHmzKLI6Pm/yfTDyHZ+L85gLmrzOPTeOGa3W6VgDAb69h4acPMKexYYdHvb2JlYkdbAIAoJoAamz1sPHOpVhWerZn+3jncpkLI8f1oFXXlGML7oq9BtRqn7e6MQ86xpI+pMo+kRW+MvVyaZ3zA8gVa7ZVmVZCvcVMsx3zNaqFjpEN+ksy5Gn1X8f8gxiBmM0BuM2ljUWclWx6bM/z+Ij1JHBX4s70sdwkoF9POt/03PqowleJmxzT1Dz//5yM3sQm5DEjW0zmdfScE5sA7GTX/Su02ixZNinWWmFZn1Zttfb32FhcEBtnWMY0l2T9aSQesjDftsN3ixEiAeAU2zdUpClbYzlk1i3MabKYgd4Xc19J2PM3J4gPOE2NahAvApCH0Hwq8QwiNeYqmW9LnBtoNY2Jldeu8RlWkHWZOQFmlkzAmBL/5rdO8zoKjZ/b10Pq4WlUrLgoJk8u24RDJgF3yG762OhFv7M6BbsIWbU2y0BaYff91tSyrd+RCwpqBACw6RRLau0sTLQV7OSoMdSBPp+zYxNNzylEjJO++RsBPZGwd0hihTWiK4H53ZqqNkLi61BiEb9IT2KLZNsfZLn3iywy7GMJMe6GXITZ1vPWNPsOwT8/mKH5ra4vcWoe8qEnsZ4z+WzGKstjuabABACr0xZ7LeoX8T+09wOPD5Z1tHDwrok4Q+c8E/5+ozNWjaS5568/sz8/eEmTdcWsvmu1DmtBlL+pVVgOjiqNfIhdp9AqX81caVmu3lXG9SUAIGGyEptCuq5ZAeUSvU06YFbZravRAotFMZzTDArzspYGsFTetduMTk1pD1XA7snkQ/d8Y+w9w742ZLNBABAXVjVBwGtlNDuyIQ5yQ9lfS90/00XWy7bmYwQwUh/NV8fCkvPRQBUCXX2/G6NtXHfiiJgD8Eb5DvMYNwmdUKilQD2LNJyWb1PIVT38oeRa0/1XmVm3WOAvFIZ7rKyMgPwIAP26xgDQmaw17dnlS7HzYWJUTgSAAv/3YJ7e6dNOdZ/Uaus1E0LUNmq4O/666X7ncNhGwqFclCgoAVCSNG+8b9DZglfXJsP1lC1oahKwS2F41D6GEC/cjgCcGpZWZKuP0njDzJSXwji0J3COpKrQIeIxYKEF+3v0FvaiIrw19pat5ZsXcvU5lcbZJspzjXotBPWzmLV6G7q5fDhWK9Plg4ISAFboQ9/yqKy56Mk+HjeGWs41PYg3h5pwwRZQDwD6mUxk8oT3JKyX9C6L8TezDPp7iCIlhVIugI6bGkqp6zLHUmJReK7oP3QllLA9FNdE3Yeh5UlT4t8Ryi/q5SkLFatGsodJSIxhORpZ5YsKYr9SmlfsBMCO5r19pz82cRtml17qO51c4FcYhmkEUFACIJJ2Y+1hDgVQimr0I4vwj/hHlufloiMSFmcdN4SxzFbe3CNjn5vur8sMinpbLc4Ju+9heqX/ZmRfecGkkr/chdfIN2H8HtxQUCqg5rvM45i7lajjEjeCkMJ+cWpyWQnLLJ2u8oe5sScxXTDE7Fm1J3z15XWRodHfLY8N0S0D6Yc9Fv3H+aQ84/97C88IoKAEgBV7EXY1BgVBe84TfPnGKvpnEFjagueRnpFlhn1WS4ea7S9D+IRa2Lgn/lpO8vl5ySZ0zElO3iEW28zXh6jvWScEgJ1Zolf49aopAILttB4aE23oWF55dIkU1rA5FzQhu3BYdGa+i+GbELUVOWHrrppAW6WTI5OxgrYMLgMGwqQ2Kqg5gNzC5yX9PToWALCONjMcKzCDh4LHKhSEoHg4KfqDdvlQT6jDV3sJBh0eAVAnRgBh5vrYR1hA2+W7GAKwxwwSCFg5MDKXKcqrmjDVt6IbAeT60cdJCq8kHjU9FqaKUCyIZy7w66vxaeKOzPa/4u+iO1nusgDhqYNFJwBYOTvGtnQjK/UDmKcQuGd2usKwz8xaSJAfetlE0eSF3+Y3rgv0dl50nM8U80fRCQDW0M7tdN7FfjFLT7F9FuSOyelehn36D1qQPw6Kzg08D31EXL/ESHjMOt1SdAJAULwQ0MDj/Lcl7lfzEuQW3p07t4RJDSkEgKCo2MflcpNueTL+TKDpC/xxaHR2vosQpikAYQUkKB7uj78SeB5xxhW8WImGyGtUwIcQtf9iBCAQ8CTK2c1TOPnVPYQKyCPfpfvluwgCgUDgi/A0/wUmAG6jf8t3EQQCgaDOUFACgBIxZSEQCAqbMIUjKSgBQCIFVVyBQCAwEiIzIC4tKiFkGCFkASFkMSHkZh5pmhEhYZKdAoFA4J4GpeHRZPgWAISQKIBnAQwH0B3AWYSQ7n7TNSNCxAhAIBAUNl1aNMh3ETLwaFEPALCYUrqUUloD4D0AJ3BI10CbsnpBJCsQCAQ5I0yKDB4CYA8AavfKVfI+DYSQkYSQ6YSQ6ZWV3lbkevT0vt5KKBAIBKGhjs0BsEApHU0p7U8p7V9eXu4pjaYNEpxLJRAIBLklRHPAXATAagDtVb/byfu4QyIhGjsJBAJBgcNDAPwKYC9CSCdCSALAmQDGckjXAAmx1eqitEHrJRAIBAZIiIYAvltUSmkSwFUAvgEwD8AHlFK/i26aEuYRwPI8LzQtEAgEbuFikEop/RLAlzzSsie8AkAgEAgKjfDqVEwQnsACQTjZQYWJNjt1SAWUSyIhFgDpgB7l/HR755MEBc2R1Q8xnfdG8siASyLIBSGaAigsASA5HYeP7bQ+kgimbK+lhgWSriA8LKZtmc6bQyuCLYhAw8q0N3P1QqKwBEBIRwBraTMcE/0l38UQFCis6xSHeQbMa6d2M23ItRw8aR/x5rDqTHiGAOFsUS0I6wewR54XmRZIfJgc5Ov6WpqfEWZZ/cJ3cAzrtymwp7AEQEhrWUNSFVja4ekrhJ9ptJuv6z9MHcapJO6oF2cTPGFaSlBQNygwARBSCRAgrOoBgX/C/qw300b5LoIlXkVT2J95MIRHkBeUAAgjW0Kswyw2/PaQ8/VZslqFjE/vF2xBBEWHEAA+qeXjSycQOBKUqbGgeCn4GnVI9RP5LkKgKL1aLxOUn6cG8C6OJaNqz89ZXgJBQRMiR4CCFwCrbGLw0Ejh984VHWl4qow522h4VjkqNGjo3y4LxajLL3wKXgAc1tXaWYOMeDTw/HNlmeFtssz6mlOq7/ReGBPCOJn3QTI/Vj1eeC55fL6L4Iu/UOrpOqd6k6T5a6L+SO8ZSLo7qpKBpOuFghcAtpSE12rCPV4aWGvhFMYG2y96YbwD9V1dn69nQinwUPLMvOTNi7NrbvV0nVMHqgZxT+nyoDYg7/7q2lQg6Xqh4AWAffXh+0Gvoi24pueGtId7adXYOkAX78YujEqMlMvqXUhCsSZgp7UUdfcs/qRtPOXj9Mzz6fsQVH3o17FpIOl6obAFwMhJ9sc5+w08nTyJa3puYK2MaiGViloPy/kLAJ9VqZf/HvA2nUnuwZHZvtMMmrnpjgCAKwZ3cXXdi6njgihOhlxYHB1U9VTgeYSRhiXhiWlW2AKgbV/QHM6oT093NdnLN38rnSdrLqNqL8hsb43bTJC7KRQDrOndXnuh+YEuh/suw6x0J83vJuQv32n65ZXkcNvj09L7gAK4adg+rtINuoHOxVe1G4lQjhwDR1gBcWCvoxlO4tvLzYUnpl7VowyBvfTYv2lhbZrJfwTAlp71efw/igjS3NPkDQXx1B6kXapozHg3OcTymJv6sY4Gp9LIp1qukFSCXilcAXDoDc7ncFYBbUFjYxYAVtPm3PLQV7pVVLJyWsqoY1XrTO18B/JVuRWVh4Fydz1gM/T64qhLARBEv8wpTS9zO4D7+Q0zfkz3sDlqXa7pTbWjmjUe6z/POvhO0v8IUg/lIGTDTuEKgIjUuNn3nnLzAoNsTH9K98B5NTfj8eSprq+N2ayhrH9sI6rvdZ2+Nj32Z2Bq8phoiOoK6x4pCwmiNa8LwwjA6alIqhz3oiefKqDk8MfwpmpxGq/e8BQE1eATCfVfyUu5pKMmOEWNUAH5h6V3n6PgcXx7Csa0pqR7eVpwpjbNbgY6h3ayOJMN1ipNJKUHQ4nck0Ct5veM9F6urg9CkAc1AhgXcFwgu2dBoyVYz0HtQwEs8LHi3csO8yt+ESqgMNK4nfRXXh3M3ouS/wucmOpt2BceeZ5Vg4xL7Ye0jQDYBr6eu6wfyzraDHuRVVzzVkhAOwJ4O8VfLeAWp576lHRPT3MAi2g7jyXKMo92sDxmKwDy5Lt8SY1W7fu6WC3PN4UnAOqVSX8JQ9EDGAFcXPt/2ixAQxmkiwJo2sB6eG0XQsNbfs7Pun/V81iNchwemcE1b4W1Ol10GN6LU0M5Nd09J+UwYwndw/KYbbm5tf7uvk+r+bGCQ1gB+aCbbP/cSJoUzfUcgJm9O8/XaaW39jIcbdGwxG9xmGF5BhvRBACwjLYyHmxs3RixshFNsGfVm6oyuX9mD9WeznTelTXXMJ3n5B9RcGqGDgPld+2/3Cz3rlYXNkBwCy8VK4UnAAbdCNy0HGiYlf5KTP6t+oBkOZgDSCPC9SMemx7ILa3cNi32uaVj2bAM281CNCTchW0wMPxhAEBSNSHp9r0kEWWelPyNcX7BScdP4b8DMc+HHt015/2X6bRJJqpSL6jfYTOyg0uarPD2Qj65epS8JUYA3olEsmogaEcAxg8+2CZwVudLcVbNrdwEwInVd+OJ5Clc0so1jlVaJYwtzTP9DI0HjPR+rcwy2pr5XNY3rr8jvc28bw9qAG+njvCdBjNxKbyIU52/sPYmw76Vaa3Kxu3bDk+zWXcoPAEQIhbuez0W03YgET6PsQoJyw+L3cpGtc1R/lVUvW17PIyqDDcNxtbmffEW54b0kpobDPMQc9MdUVH1jmZfPBq+Z5eLEjnVmfGpvq7OD5opKTu/icKk4AWArT1CwCogJfl6CT4RC3n2cCgICAj2rHoTn6QO4ZiyOVPSPW2P7+hyrOs0lzTaX6PTd4ubBmNby/6Qmj22t8By1oT0fo4qoC7lDXDbCLaJ4NP282/5wwP2p2SP0/vRRwJtZmPUUAjUIIa1tBkQzd3cnBO+BAAh5DRCyBxCSJoQ0p9XofjhTgDoexy5hmcPp1e7JqCgSCLm+mPV91BZqIJ9pa4cdJ/rNBtEajU6/UAJyDJD/071euUJNwzGcb3bMqVl1Z/5OnWAp7L5gUdd7djcft7nmOgvmt/9OpRlts+u+RdTHodWP479q55zXTYvbBhwi+3x2bQzBlY/A3Q6NCflYcHvCGA2gJMBTOZQFk/Yf7fuPurnk8djSdpDWFtOIw2eAqBNE3UoaB7pEjxQax+xs0/Vi5bHaCTbe2MtzbZ6/iY33TzPdmWlOLnvHjiyu4mFkgNmy2EqQeDSnBY0Oaz2KQztZl42xbqKB0rD6jQBuhnu42LpUyQO7+e7VB/NNer4Rz/ZhrHIspK2QiXK2ArogyUtj8Lmvn8PPB/e+KqdlNJ5lNIFvArjqQwAPkoNAiANsfyl5a2hbFP9Z2ZbP9HlLn8eZFNRPjBeguX91GDb43/Bev0BL0KSktyFzY0S4LEz+uCAimZM56vvxkzFtoGWAfDm6Xt49SOGfWtQjqP3ZZ+k9srww6R7qXKwhkqq4kx5rV+UEDStb64+nZ2uwE21l2n2Ld6w01M+uSAdyd/CNX7I2RwAIWQkIWQ6IWR6ZWUl17QfTJ6Jg6uexG6qU0N4GNZvMgn45oYGZLfna+0+pP5kofd0OWk3/AgSpvZfd04uBQDKFK9YLw/LzmvW/TNbSttiYdq/X4QXupRLJtW7kQD+Md/yPLP7+vWw113n17eDeUiJR5OnoRJNNbls3V3jOn2FH1L7ur7GzZtLJMMrnOxwFACEkPGEkNkm/05wkxGldDSltD+ltH95OUcPPirZfq9GORe73Tut4tWb0LWVcRjcGLt8l0FP5/IGKCX2lf/B2jNxbPU93PNWY/bRL+t4Gq6puUo+bsLxzzBH+oxHtdWxaSOfvgGstDsA6Ceto+DVvFOPUhfn0ApPRYrocnBSl/BiYGdVg9zYnTo00nmwq/MJsb4rs+eb9hHbb7O+Y3fRV47XEKJ/B9ZvfVcJX8/6XOEoACilR1BKe5j8G5OLAvrDvUCYRztiO7VRZajosUcT/HLrUNB9T87s86OPteotdm7R0HS/mhdTx2I27WxqBspLBWT2NNv3GYqx6YOs8+lzNnDlNKibVqsPSX9167KGmH4bu2mm3vOZgrAtNHPx10Bcu3qaWaz822svlKw4dFAQPFJ7mmnSk9J9NL9Z34ThGQXd/p/7CTD0Tma1odkb3K9jU8wg3fFE8mSTo0aePsvO6MKY/170T5PzPOJhvfBUQGsE55M6ZQZq+GhUug/HRSuiJViYCbDF/rW1bFQKUpadrPQzCrH76JxKlC8nmagq5LRp+VliNlnR4xRX4SyO6KbthRFQoN3+zhdGsh82IUoDaGRcyjoC5+iU1szV6n3NZhwRuK1HK+OdXZ2v8GKfj1F76SRgz6HAof+A4c4PGIlTq+9gTu+j3qPxhEXocn396NLSWd2qLs0+dAlzORR4hkN5KTXC+mD4XDmY8GsGehIhZBWAgQC+IIR8w6dY3jAM81RcposkaHCfv30DdpqFKJB5PznYOuOo0cLFbGnHaR0uM+xTo//kfz9ktOpIGPwgzWv5sgfsPgyi/uOO9haNdytzCxBzO3GXGcudBjPzU6oZxXhg5Pd4LGk+UgAADLkNtze8S05f+75rkvb6j1UnfQJc/bvrIv3txCMQb2fTEz/mYUyn+0hhDE54NrNb/SzU4dCvGmIdIsMqDDgrbp/5Rso+nzcvbYyMOi7VT/N7l36OUUXT+omcqel44tcK6L+U0naU0hJKaStKKcs6jVxRT3BeVvMP3FJ7ifpoZmunzkJlRnpP6zRN9u1WWUWMTeni9ah0n0olN1uxaUAf+/gomh5SWQdsbHOY7fmW1wKBOMF5UQuY8Uva5+pfVdvZ82/MZmNvyMLCCsYsD4K0o70/AKBtn4xn8MYOx2jqDQDgsP/D9Ph+8vXuSMYbAs27mC+244G2TbQqsd9pV6DvuTArnFpX3rpJKfqq7PXtcZ48V6+ER0xCiOyOWIc171/9AqxrpTbvlbrIoqtoC7yf0qoBW+ueieZYY+tjahLRcCldwlUan1SiKd5NDc3uoNbqobPufM8yHbOGTr3vmtqrtc5SFVkzwBhSAOBpARe7Hoaa71J9mM5TSux2DuChU3uZ7jf9lFTPmFWFdW/yHLy134cWRxlwE3qjt73vgh1mPiGsJT1oiM2oCMCiQU8D51oHVvO6mtmsdCfb4wOqnmFKh/hR3VngpZMyJ12R2f6RGjtQz3V4AlMPeBon9eVrNVVLo9iJ+hpP9G3EZn6PtcMVskFCwQsA+16nzVH1pN+QW3VXeX9LTYlkDram11XGgw6VZIdOBUVU54/ombUBV5aH1JoKyqoW1T1HbJaEdOLBfT7EetmW3R71M2bLL4kY2nXt46FUSjYuhGvMuw54fFpSAdRQZfEh9XyHPYccYW8kRyLEVJBR6hBsuVkXwMbmXP3+3zNRW64Hm5+DEytUIb29r4hnNwJQ/mbPmZmW5jmquh6Hvw2StlfV64oDjzkfj5/Rx13WMW2Pfb+O5nOEalVg0/bOI9eTq0dhMylzV5Y8UvACwBZV79R24er2A7SXmSXlUiiUNWvBfK4yX0BBsJHKvYxB2oVn2pdlK+ws2hldq97ARJ2FiZ6IzYSmE1sTrQ0WL/78AIj174j8kW1fy5ZYJEhrDOlpDevRGg8mz0L/quexxcTrVX03v/zrCOdn3EGrNoxYdAZG9JRGHXoTxAxXTQduW28sNdWWa32rw3CLl3VyGZ1GZtA9cVXN1QCAJVQ7UuLRyTWra0nZDrQ0FjE1wXabg/an9ncpyS4vWk0lgfvwqc4hrn+nXbEiYuPBHoapPBUFLwAeP70PU5Asp1g1Trhu/DwOoatQgt8uWgb0y4YXMPsmaxBnLpNvnbtSDrP8eHiZ9ZStRirnsZ0fgHoiQ7fjgOZ7ocOQS5FGBBvRRHPXZndbGncozx1bgAu/1OyyGpxdOWRPzBp1lEYFdF/tWaoLI6YCUCnXyX2lOY9krB54hJo2o2NzSe/+eXogrkuMwt1JYygMMygIRuDJ7A6X81ReJllZq6deRVypGv0eU3MfcMwjqJew63iQzO18kjjOXSHzSMELgA7N6+Ph03rjCNM4KaxvX1uxeNjNJz0Mi5V8leJoUjCpyZPTRl19tiJnr/6NdgWgVxmZMzfdUZOawvkDO+Lps/sZL2BE/zQ0v49/2mViAY4AmnUGrp4OtDJG6KSwnsSzrTORiEHdox8RZU8laFQax021IzE7XYHfL1yE0Sn2BmVoN3uHJPVk5Zn7e4u1tEdZ1qBierQ3ahBHu6ZsvjMr0CY71+Wy89CoXixznW8bB13eVPdbLRCW0D2AA+wt+NT8HD8QGLXNX/lyRMELAIUXz9sPZx3gNXiYtjY1bWAcLexyOYKoTbnvGSuNiLl6wJieU0Cs1k2kMq+lzfFF6gDcXnux7fnDq+/HmTW3gcD4bd59Qg8M3ce6cYnpurR6Ezo11x/RVbsj6jKOyk6jCgQILKCnJdtofc8ZO03PtOs/AstO/cpW3685X2mA5bKYCqQuQzU/HzjFfLJfInt9hUPUTgB465IBjucoT+nEmrvxcvwcIGodu0spv96Rzi3s62j4cDO2oudpwCHX80+XI3VGAEQjBHcet6+2InpsEcwa4GeSJ7pKwzwImGpfsy6ZTf3H2qSe9NHv17EpSuMRXD64i+O9KEHM1I4vJ/aRevw1iOPK2uswjXbLHDuoi3FOZB7tiO1oYPxozvnIWH5V6c24rPafGksp9SO99gi25RQtaSqPUhxCTPBe0k+fJs85ET33n9wLx/Zqy5TDtH8NzcTwQUJSz9QkTCY19x7O0HM2PrOXL+iP586xH/2ZfTPZJRAliJz8QtoebyVs/CFUfJNW+YL4eJ2Gd9VMZy1l+L5cZkYIWjWSRlen9ZdV0qe8DBwxSneeu2SDps4IAAAojUdxyF7sk68Z9JW3tbFn9Oz5B7lKMk0jps5g2TzNF5f/8PKB6NRC+oibNkhg/r+HY/+KZnCqkG9dOgAL7hmGu0+Qg14RAkIIercvMz3/wM42k+LQfQ/1mmbStDqRdUheZhH90UDXYdbHWuwN3L4RuOIntrR8ohUk5jdqJgx6tbM2G2Q10LITFAdVPQVcNR2t1DboXYcBxzyCOd1vsLyOLePs5p4tG+GYnuZxgeze+++0K1DiPTSKHmaB28PcE1lDNA4cfb8mdTXj0+6XN2lSP44l9x2Dyw618coWk8A54NjHgb7nwc0AUIOJvu8Il3HiU4C9FYbJlzP91iPkxt4EhxFAIhZBScyoGzfkEokDA01MVFUM6NQMadP8nD/AFCXAUGPoAGUCr2GJc8juyamewOk2K4FFItIH7GANpG8waqN+g8u56769c9mB+O4Gc2c+KysgPcmUtWpiDVoALXSjKUKAAy7Dwd07oLxRCVYNfgw4TF6ft72zmsbrqNl2Zb7MOcg8QqezzUbQZyg9a6erT30Fm/65wbE82sJpn7NTaPkxR/1guj8aIY6juzBRNwVA/4uBE55hr8zyy89Mbik6aYuQAyykKLvjy3dpyRW/rIGNNyFl1FHq7vmW4To1yU1/Akf+2/LyI7q1RMfmDczN7Bgqdpfqt4FDb8AR3Vrh0kOyw+zdtZKDnD7ip4ZmUs/poeQZ9vb7jFZAB3Qs0/y2zZsVi0egeeo9JfVGw5IYOpebB/JjbSPWbKtiL5uKZg0S+PXWI9Bu8CXAkH8Bd24F2vQKmwbCErPefmPW0aM6Hbs2QBXtNB3Tdg6cRhsnDOim21MoT1ZL3RQAGbQv//hqi4Zv9XQAwNirDsaYKw/O7m/YEmhijBHCQsNSh0ljVSN2Te1VOLjqyUDs2w0OLiWNgEjEsrp2ayPFTzlvYEeLM3TIDjV6E72XL+iP247NWtIosWwalNjcoxxTqdphMRJrNYz2fV8xuIvpee5x7khoShRzDgvAOgKwbcDcwOyp6r8h0/aAvc2Z6M+dk+6oeQ1KEEK98YF5GSzofmJms8Epz2oOLaHeQogUGnVbALQfAMTqAUfchQsPqsBM2gV7Vb0J3KBfXEWqLM0blhh15pd9B1wyznXW7do4VKDdWzOb1UhgNZzWSPDWEFh9CFbfx/AeUq9I+rD0eeouOvJuoAdb6F9942w6B5GxYHGAcQRQUsZ3BS2qE3O/p2X1SzSuVVkwlI+1nc21ZZPbDB1t83UOcJac/YGuGNl0O1e9hWNr7tUIhWN6tsGlh3TCrSP0PXEttndDCDDsAWD/y1CvqVbFaxf5NXPtGW/bn1MA1G0B0KQdcNs64JDrMOp4aXK0FjGgkU6fb/c1NiwH2hsX3bbqeWTTdChbQ5eL4rhUZymNkLqYwxiWFFQeRSwayVqW6A8qHHyt51FLImZW9WxMGDXlYKu2pJX7VaDU1Jcdf+6rPQepSALboA08dlXtNbit5TNybHmCWxUzW4bysY4AUmnz9/7Iab3xqXq0yh228inPyFIQnPYacNobbFn2ysZtUgvUNCKgiGBH6wOAaAlw0DWIRyO47djuKKvvNFp04MArgBHGJTiZ6Has8zkhx98iunUFl56l314/CGX1HPSRJII4ktbHI9lH/+HlA7HWUdfrtiuoOJVlP6QXzsv2aliGyI1K9fdocw0PFSjrPIfF+7JshK6dCaSTwOjBrooz6rh9cePHM/Hf9KEYdsp1qP3Pb1Df6C6UYlki64WesRZiEgBsZTCfjAdOZfB+94a7evbyBf0xZsYatG+WdQTT3FqiAcAqiE94Flj7P6BynmkpkqXNgdtdTu56pKJ5fSzbZLe6X2Hq/PXU7REAKy4FQNdWjdDSKfwrMdOzE9Pt/Sua4fjeDiqj+ozmrdTYCDUqieGGI7saTj20+vHMtuLhyqwB2IdtARRX2DkxaTJjmwPI0LQj0Nz9fIA6mF631tLciD4cgDrPTPgGJhUQ4xwA01nsEELwYXIQdu19ktOJTOm1a1ofVw7Z0/R+3rnU2urItJ5FY5mVukwj8rp4GH7r4wd/G4iXzrcxBVXu99B/+swpvwgBACAQaU70q7rqj7vMk3UJO2pshH6/40hcPdTofLVSFdGxS0tJ3WNrzqcuM+uw3hWMAsAr6ob5xj8dT1fH+OnQvD6WPTAC9eI6AaB6XBEXIwDWO+Q2Cazi/5KXY/Ow58wPKhPYTTuZH3dBTLG6aiw5JFqtFKbFug44PovuJwL17f1bWGnZuBRHsph+N5A7Znbfc78LkO4QpLrOO0IAAAEFFyPGSpyq0Rx3h3nlN4RcaClPinUZktnFYv6olMb+G1OV2cKNn3VhDFPkzM29qC3K4Qa5IcJZ7wP1m0kezrogbWqi8kd99L5sPiD/TR2CdWX7SXMjDrDOAbTy8zxNeOz03hjYubn1e2rcFjjzXUl375PMLSbqY+alyzNrR2sok63NSsukv3IDbmYJ5igKT38DuHGp9hre8lMJzeGmA3fck6g9bwzngvBBzAEAXEzfMjTpAGxbYS5USpwXd3fL32uvw6KbVb2LNr2k3m19+7jv+lvOLCBv98HYPCfl0Lh/DDI/ztRo+1MBMetLmsiCYK8j3Wdz4N+Bb2/FVnlCuIlqLmgbGuLnw97ESU2cg+6xCoA+slVaIwYHOhYGdG6Od0c69JL3OcZXHq7a3KPukVZG6yCri058Hpj7KeZ85M7xMmeMnAQs/Dr7m0XCEIJ4NIb6iaij1VKuESMAAIYeZUPZWqaNc/xvA8oShMRkBKDJ0qXQsahotYhlh6EKDo0/kG2Qn+j3DXDjn2zFIQToeAhw0ouW6UV9LELjaAbq4MGcEw66ChVV72A3pB70P4/eW3OYNWSx29dfQM6lGbQzXhY3EC/VWtPUbyY5csqwRhnNGa17AIPM9P72LygSIZh79zCcM4DRvyZHCAEAmMQC6iFJ+iG3eUjMGI45e8g5poxzunzZHWsC1G+W+UAdXfov+sLXMou2OE0CN3boWTtqjry1onrZ+/vt2ZGD3lSWNQvW1doKcaFxlnkLltARAPDahftnTE1dTQL7eWwjHvVxcWEhBABgrq5p29c2XK2BRrJbuYkVjnme+f2wrVRAFmbnzPjTudoITw2q46e/CfxtMlvyh/5D+lvG2gtThKKWZg182p6DXfwrVkdXDN7Td565IvMWfVTx8kaSJ33jenH03EMKKGdlEmtbFrNRZe+zTM/NsL+bldRCFt3NJUU1BzDlxiHYWW1im8+jMf7bZGDLcuDrm+U0LayArvgJ2LQY+PlZs6PW7H8ZMH6Uz0Ia0Te5Xq1OuMgz5WO1LILJge4n2B7W0OMU6R8jTPMiHmGdA0jEIlj2gP0C82HjsdP74NmJi9G7XZnnNNRLXG7bLS3PqIQTYUExfNi7dSP8umxLVuAe+4RmtT1uFKKODkU2AmjfrH4m1o0WDi+vYUug/f6mZpgaWu0rN1puzUD5TiAbcjdbP7iJ7GzkwkrKV1tZKvX0kghyzV92SmWTT6U3yhM/UyVhp1OLBnjktN5ZM1BPKGHGSdYSysUza1ASwzuXDcDL5++vPZBoEPCa0oVFUY0ALOFpBjrwSuDjS4DmnY26bHVXMiQ9BqXHb2oGeuS/gfJuTJPhXO7mnA9w10MPYD2cJ7FzwUFdmuOKwV1w0UEVzNewOngVUshgM24b0Q2rt+5mPt/t7SqqSIu4ckwc1EUyjtijrB5Ka6JwWvTr7eRQzKKd8ICbTHIerIkvQgAAfAVAz1Mzi5zbu4KFYw5Aqb+Pnd4bT05YpF3EpGlHYMgtrtL15bjUpB1eSw23S1z6a9WacH6k8WgENw2zX3XMaxEKfQRwqd2iJxy45JBOePibBUzrRzjx482HAx+/A8yyP+/W5CUA4E4AZCjMFyoEAMDcPendvsx0KUUrDozMtT7YuiewwuWKVkfdI0VXfEZaE/eVC/p7dhRS1BvK387lDfHkmX09pQXkukdr7wewmjbHHmRToCX49MqDsdakB8wedbkwGwxeOPUTrhyyJ64copv49vPIKg4BZn1oXEDHN0U8AiCEPAzgOAA1AJYAuIhSupVDuXIL4whgjMvoi3GkdHtUleWoe4BfjPb0thx0tbzxBQBgaDfvzjJn7t8Bm3bW4PLDeMXMl7D6HBRrlsyiOwEyvPp+NCU78X2AefRpX5Zx0vJCcTf/HvHT1va7ANjrqKyfDiOJWATlDRnmgApUoPsdAYwDcAulNEkIeRDALQBu8l+sXBPMy4vqBUCHA7PbMf+mhH5IxCK43iRAnFcal8awszpp+ST3bNkQz53TD4eq12xONAJqdjgn3usMoAF7+OztaIjtlL/XNU9Y/QDqGl7umkvbSohj4z/hhsMyQREV5t1tszZ1HcCXAKCUfqv6ORUAS7Sn8BGQ9K6kZdkfo7YFkkdYeG/kQEyYv94khHQWw8LiV04DtjgHZcPJo6W/Pz3to4ThokA7jL5pVBrH9qokDt3L5XoYOcCw/gV8erYXADznAC4G8L7VQULISAAjAaBDB2/LLAZHMC95bGogzo+NA1p2dz65wOnQvD4uOthlBMkme2Tj8rDgNAlcQLD6AdQ1mtSL472RB6J1E/dzV6zewzml3/nA8p+Bg6/Ld0k84SgACCHjAZgtJXUrpXSMfM6tAJIALNdIo5SOBjAaAPr37x+uNxnQx1gDuTdst8C5k1eioE5SxzuWtrRvVt/5pEKhtAlw1jv5LoVnHAUApfQIu+OEkAsBHAtgKA0ieHld5pZVQLwOfQwCZoptBNC5vAEalcbwf7rgeW4oxLhIYcevFdAwADcCOIxSard+WjjZ51hg/uf2PXQeWMlF1kVeBDL2/QvR+wgv9RMxzBp1tK80QqkCKnD8zgE8A6AEwDjZrnkqpfRy36XKFSe9CEx/FdjnuECSD2xlq2InxL1n1jFwsY0A/CCeVHD4tQIqnBCFZpQ0BA6+JrDkP7vqYOClwJIvPprL1a3c3jv35uH7cPdv4I1o/90jFMz8EZ7AOUHUXC7sMwIY+b23hXpyBLMncLDFqFMUu9d0kAgBICgs2vZxPCWfzQVrL7Wu25fzRNiWBEdRhYMWCMKC6NUKwoAQAEEiPnKBwDdCWAaHUAEFSete0kpeB16R75IUDGOvOhjbd5us2sbAQV2aY/TkpdivY1POpWJHKCsEhYQQAEESiQIjHsl3KQqKXj6WERy8d0vMvfto1E/kvlqP6NUGX8xc63jeDzcNwcadNTkoUd1DTAXwRwgAQZ0iH42/GidlRbum9dGuqfD+doNQAAWHmAMQCDgiOqmCQkKMAAQCDoheanD846iuWL55FwZ0Dsda0XUJIQAEAkGo2bdtE4z/x2H5LkadRKiABAKBoEgRAkAgEAiKFCEABAKBoEgRAkAg4IiIWyMoJIQAEAg4IMIVCAoRIQAEAoGgSBECQCDgwLB9WwOQTBYFgkJB+AEIBBwY0asNjt53OGJR0acSFA6itgoEnBCNv6DQEDVWIBAIihQhAAQCgaBIEXMABcirF/ZHTTKd72IIBIICRwiAAuTwfVrluwgCgaAOIFRAAoFAUKQIASAQCARFihAAAoFAUKQIASAQCARFii8BQAj5NyFkJiFkBiHkW0JIW14FEwgEAkGw+B0BPEwp7UUp7QPgcwB3+C+SQCAQCHKBLwFAKd2u+tkAgAiGLhAIBAWCbz8AQsi9AM4HsA3AEJvzRgIYCQAdOnTwm61AIBAIfEKcVjAihIwH0Nrk0K2U0jGq824BUEopvdMxU0IqASx3WVaFFgA2ery2LlDM9y/uvXgp5vtX33tHSmk5r4QdBQBzQoR0APAlpbQHlwSt85lOKe0fZB5hppjvX9x7cd47UNz3H+S9+7UC2kv18wQA8/0VRyAQCAS5wu8cwAOEkL0BpCGpdC73XySBQCAQ5AJfAoBSegqvgrhgdB7yDBPFfP/i3ouXYr7/wO6d2xyAQCAQCAoLEQpCIBAIihQhAAQCgaBIKSgBQAgZRghZQAhZTAi5Od/l4QEhpD0hZCIhZC4hZA4h5Fp5fzNCyDhCyCL5b1N5PyGEPCU/g5mEkH6qtC6Qz19ECLkgX/fkFkJIlBDyByHkc/l3J0LINPke3yeEJOT9JfLvxfLxClUat8j7FxBCjs7TrbiGEFJGCPmIEDKfEDKPEDKwWN49IeR6uc7PJoS8SwgprcvvnhDyKiFkAyFktmoft3dNCNmPEDJLvuYpQghxLBSltCD+AYgCWAKgM4AEgP8B6J7vcnG4rzYA+snbjQAsBNAdwEMAbpb33wzgQXn7GABfASAADgQwTd7fDMBS+W9Tebtpvu+P8Rn8A8A7AD6Xf38A4Ex5+wUAV8jbfwfwgrx9JoD35e3ucn0oAdBJrifRfN8X472/AeBSeTsBoKwY3j2APQD8CaCe6p1fWJffPYBBAPoBmK3ax+1dA/hFPpfI1w53LFO+H4qLhzcQwDeq37cAuCXf5QrgPscAOBLAAgBt5H1tACyQt18EcJbq/AXy8bMAvKjarzkvrP8AtAMwAcDhkAIKEkhejzH9ewfwDYCB8nZMPo/o64L6vDD/A9BEbgSJbn+df/eyAFgpN2Qx+d0fXdffPYAKnQDg8q7lY/NV+zXnWf0rJBWQUmEUVsn76gzysLYvgGkAWlFK18qH1gFQFgK2eg6F+nyeAHAjJF8SAGgOYCulNCn/Vt9H5h7l49vk8wv13jsBqATwmqwCe5kQ0gBF8O4ppasBPAJgBYC1kN7lbyied6/A613vIW/r99tSSAKgTkMIaQjgYwDXUW2UVVBJpNc5e11CyLEANlBKf8t3WfJEDJJK4HlKaV8Af0FSA2Sow+++KaToAZ0AtIUUTXhYXguVZ/LxrgtJAKwG0F71u528r+AhhMQhNf5vU0o/kXevJ4S0kY+3AbBB3m/1HArx+RwM4HhCyDIA70FSAz0JoIwQojgpqu8jc4/y8SYANqEw7x2QemmrKKXT5N8fQRIIxfDujwDwJ6W0klJaC+ATSPWhWN69Aq93vVre1u+3pZAEwK8A9pKtBBKQJoLG5rlMvpFn6l8BMI9S+pjq0FgAygz/BZDmBpT958tWAgcC2CYPIb8BcBQhpKncuzpK3hdaKKW3UErbUUorIL3P7yil5wCYCOBU+TT9vSvP5FT5fCrvP1O2FOkEYC9IE2KhhlK6DsBKIoVTAYChAOaiCN49JNXPgYSQ+vI3oNx7Ubx7FVzetXxsOyHkQPl5nq9Ky5p8T4q4nEA5BpKVzBJI4ajzXiYO93QIpGHfTAAz5H/HQNJvTgCwCMB4AM3k8wmAZ+VnMAtAf1VaFwNYLP+7KN/35vI5DEbWCqgzpI94MYAPAZTI+0vl34vl451V198qP5MFYLB+CMs/AH0ATJff/6eQLDuK4t0DuAtSAMnZAP4DyZKnzr57AO9Cmu+ohTT6u4TnuwbQX36WSwA8A51xgdk/EQpCIBAIipRCUgEJBAKBgCNCAAgEAkGRIgSAQCAQFClCAAgEAkGRIgSAQCAQFClCAAgEAkGRIgSAQCAQFCn/D2oRiokeXLuFAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots()\n",
    "\n",
    "ts = list(range(20))\n",
    "ax.scatter(ts, correlator_average[0], c='blue', label=\"C(t)\")\n",
    "\n",
    "ax.legend()\n",
    "\n",
    "plt.xlabel(\"t\")\n",
    "plt.show()\n",
    "\n",
    "fig, ax = plt.subplots()\n",
    "\n",
    "ax.plot([x[0] for x in X[0]])\n",
    "ax.plot([x[0] for x in X[1]])\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "b194e7af",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAD8CAYAAAB5Pm/hAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAYGklEQVR4nO3df5BV5Z3n8feHphFjXEXoUaa7kZ5gopgomDu4ltaIiQGiDCa1KQczkzWWFlNTMZtouRuS3RqzZGtjkqoxk9GMoQxRZxJxxoSEzSQSKtExGZdI4zAawB8skqXbbNGAv1CJAt/945wOt5t7ubdvn+Z2P/15Vd265zzPc855DujnHp7z3HMVEZiZWbomNLsDZmY2shz0ZmaJc9CbmSXOQW9mljgHvZlZ4hz0ZmaJqxn0kjolPSxpq6Qtkj5VoY0kfU3SdklPSrqgrO5aSc/lr2uLPgEzMzs21ZpHL2k6MD0inpB0MrAJ+FBEbC1rcwXwSeAK4ELgryPiQkmnAd1ACYh82/dGxIsjcjZmZnaUmlf0EfGbiHgiX34V2Aa0D2p2FXBfZDYAp+YfEAuB9RGxLw/39cCiQs/AzMyOaeJQGkuaCcwFfjmoqh3YVbbek5dVK6+072XAMoCTTjrpvWefffZQumZmNq5t2rRpT0S0VaqrO+glvR34LvDpiHilqM71i4iVwEqAUqkU3d3dRR/CzCxZkn5dra6uWTeSWslC/tsR8b0KTXqBzrL1jrysWrmZmR0n9cy6EfBNYFtE/FWVZmuB/5jPvvn3wMsR8RtgHbBA0hRJU4AFeZmZmR0n9QzdXAx8DHhK0ua87HPADICIuAv4EdmMm+3A68B1ed0+SV8ANubbrYiIfYX13szMaqoZ9BHxC0A12gTwiSp1q4BVDfXOzJLz1ltv0dPTw4EDB5rdlTFp8uTJdHR00NraWvc2Q5p1Y2Y2XD09PZx88snMnDmTbGTY6hUR7N27l56eHrq6uurezo9AMLPj6sCBA0ydOtUh3wBJTJ06dcj/GnLQm9lx55BvXCN/dg56Mxv15s/PXtYYB72ZWeIc9GY27rS0tDBnzpzfvW677baqbe+44w5mzZqFJPbs2TPkY33+85+nvb19wPFeeumlqu2/+MUvMmvWLN71rnexbl0xXzvyrBszG3dOPPFENm/eXFfbiy++mMWLFzN/GGNHN910E7fcckvNdlu3bmX16tVs2bKFF154gcsvv5xnn32WlpaWho8NDnoza6JPfxrqydv+NvVk7Zw58NWvNtqjo82dO7e4ndXwgx/8gKVLl3LCCSfQ1dXFrFmzePzxx7nooouGtV8P3ZjZuPPGG28MGEp54IEHRvR4t99++++Oddlll1Vt19vbS2fnkceDdXR00Ns7/MeD+YrezJqm3ivv/iv5Rx4p5rhDGbopQr1DNyPFV/RmZsN03XXXMWfOHK644oph7ae9vZ1du478hEdPTw/t7RV/wmNIfEVvZjZM3/rWtwrZz5IlS/joRz/KzTffzAsvvMBzzz3HvHnzhr1fX9Gb2bgzeIx++fLlVdt+7Wtfo6Ojg56eHs477zxuuOGGIR+vfIx+zpw57Ny5s2K7c889l6uvvprZs2ezaNEi7rzzzmHPuIE6fhy8GfwLU2bp2rZtG+ecc06zuzGmVfozlLQpIkqV2vuK3swscR6jNzMDPvzhD/P8888PKPvSl77EwoULCz/WunXr+MxnPjOgrKurizVr1hR+LHDQm1kTRMSoe4LlSIVsJQsXLmz4A6SR4XYP3ZjZcTV58mT27t3bUGCNd/0/PDJ58uQhbVfzil7SKmAxsDsi3l2h/j8Df1q2v3OAtvz3YncCrwKHgIPVbhSY2fjRP4Olr6+v2V0Zk/p/SnAo6hm6uQe4A7ivUmVEfAX4CoCkPwZuGvQD4JdFxNAf+WZmSWptbR3Sz+DZ8NUcuomIR4F9tdrlrgHuH1aPzMysUIWN0Ut6G7AI+G5ZcQA/kbRJ0rKijmVmZvUrctbNHwP/MmjY5pKI6JX0e8B6SU/n/0I4Sv5BsAxgxowZBXbLzGx8K3LWzVIGDdtERG/+vhtYA1R9aENErIyIUkSU2traCuyWmdn4VkjQSzoFuBT4QVnZSZJO7l8GFgC/KuJ4ZmZWv3qmV94PzAemSeoBbgVaASLirrzZh4GfRMRrZZueDqzJvxQxEfhORDxUXNfNzKweNYM+Iq6po809ZNMwy8t2AOc32jEzMyuGvxlrZpY4B72ZWeIc9GZmiXPQm5klzkFvZpY4B72ZWeIc9GZmiXPQm5klzkFvZpY4B72ZWeIc9GZmiXPQm5klzkFvZpY4B72ZWeIc9GZmiXPQm5klzkFvZpY4B72ZWeIc9GZmiasZ9JJWSdot6VdV6udLelnS5vz1l2V1iyQ9I2m7pOVFdtzMzOpTzxX9PcCiGm1+HhFz8tcKAEktwJ3AB4HZwDWSZg+ns2ZmNnQ1gz4iHgX2NbDvecD2iNgREW8Cq4GrGtiPmZkNQ1Fj9BdJ+jdJP5Z0bl7WDuwqa9OTl1UkaZmkbkndfX19BXXLzMyKCPongDMj4nzgb4DvN7KTiFgZEaWIKLW1tRXQLTMzgwKCPiJeiYj9+fKPgFZJ04BeoLOsaUdeZmZmx9Gwg17SGZKUL8/L97kX2AicJalL0iRgKbB2uMczM7OhmVirgaT7gfnANEk9wK1AK0BE3AV8BPgLSQeBN4ClERHAQUk3AuuAFmBVRGwZkbMwM7OqlGXy6FIqlaK7u7vZ3TAzGzMkbYqIUqU6fzPWzCxxDnozs8Q56M3MEuegNzNLnIPezCxxDnozs8Q56M3MEuegNzNLnIPezGwUmD8/e40EB72ZWeIc9GZmiXPQm5klzkFvZpY4B72ZWeIc9GZmiXPQm5klzkFvZpY4B72ZWeJqBr2kVZJ2S/pVlfo/lfSkpKckPSbp/LK6nXn5Zkn+bUAzsyao54r+HmDRMeqfBy6NiPcAXwBWDqq/LCLmVPstQzMzG1kTazWIiEclzTxG/WNlqxuAjgL6ZWZmBSl6jP564Mdl6wH8RNImScuOtaGkZZK6JXX39fUV3C0zs/Gr5hV9vSRdRhb0l5QVXxIRvZJ+D1gv6emIeLTS9hGxknzYp1QqRVH9MjMbCyLgwIGR2XchQS/pPOBu4IMRsbe/PCJ68/fdktYA84CKQW9mNt7s2wfr1sE//RM89hhMmJAFvlTscYYd9JJmAN8DPhYRz5aVnwRMiIhX8+UFwIrhHs/MbKyKgC1bsmDvD/dDh2Dq1Ox12mnZ+sTCxloyNXcn6X5gPjBNUg9wK9CadTruAv4SmAp8XdnH0MF8hs3pwJq8bCLwnYh4qNjum5mNbm+8AQ8/fCTcf/3rrPz882H5crjySpg3D97//qy86JCH+mbdXFOj/gbghgrlO4Dzj97CzCxtu3YdCfaf/jQL+7e9DS6/HD73ObjiCug4jvMTR+Czw8xsfDl0CDZsOBLuTz6ZlXd1wfXXZ1ft8+fD5MnN6Z+D3sysAeU3Uh96CPbuhZYWuOQS+PKXs3A/55zib6w2wkFvZlaHajdSp03LhmKuvBIWLIApU5rd06M56M3Mqqh2I3XOnIE3UltamtrNmhz0ZjZmzZ+fvT/ySHH7HG03UovgoDezcW2030gtgoPezMadF1/MbqBWu5G6eDGcffbouJFaBAe9mSUvArZuhR/+sPqN1IUL4dRTm93TkeGgN7Mk1bqRungx/OEfjv4bqUVw0JtZMlK8kVoEB72ZjUkR8NZb8PrrWYhXupG6eDFceunYvpFaBAe9mY06EdkN0127oKdn4Hv/ck9PdsUO8NRT6d5ILYKD3syOqwh46aXqAd7//vrrA7draYHf/33o7IS5c2HJEvj+97Or9V/8YuzfSC3yuwCDOejNxqGR+KJRv5dfPnaA79oFr702cJsJE7IQ7+jIHt975ZVZoHd2ZmWdnXDGGUffOO3uzt7HesiPNAe9mdXtlVdqX4m/+urAbSSYPj0L63PPhUWLBgZ4R0dWPxLPYbeM/2jNDID9+2tfib/yysBtpOxKu6Mje1LjggUDA7yzMwvx1tbmnJNlHPRmCTt4MPvWZ18f7NmTvff1wc6d8Oab2XTD/lB/+eWjtz/99Cys3/lOeN/7BgZ4f4hPmnTcT8uGyEFvNoa89trRod2/XKnsxRer76u1FXbvhne8IxuzLw/wjg5ob3eIp6KuoJe0ClgM7I6Id1eoF/DXwBXA68DHI+KJvO5a4L/lTf9HRNxbRMfNxrrDh7Mfr6g3tPfsOTKdcLCJE6GtLftKf1tbNiulf7n/vXz56quzG6AjOdPDRo96r+jvAe4A7qtS/0HgrPx1IfC3wIWSTiP7MfESEMAmSWsj4hjXGWajU62ZKgcODC209+7Nwr6Sk08+EspnnAHveU/10J42DU45ZWjzxidMGMqZj17+oKpPXUEfEY9KmnmMJlcB90VEABsknSppOjAfWB8R+wAkrQcWAfcPq9c2rkVkAXnwYPZgqvL3SmXV3ofaprc3W77llspBvn9/5f5OmABTpx4J5dmzjw7q8vCeNs3f5LRiFTVG3w7sKlvvycuqlR9F0jJgGcCMGTMa6sSf/3n2legJE468WloqL9daHw1tDx3KAu3QoSOv8vVj1RW93ui2jz2WBfMFFxQXzIcONfSfR2G+/vWBAf3Odx59lV2+PGXK6LuC9pXw+DJqbsZGxEpgJUCpVIpG9vHP/5x9m64/ZA4fPvKqtW4D9X/gtLQceTWy/tZb2f4OHMjKJk2CE0/MxpRbWrL38uVa781s+5GPZMs//3lz/27MhqqooO8FOsvWO/KyXrLhm/LyRwo65lGefrqx7SKODAfU+lAYygfIcNoePjzwCr9aoBYRxoPXR9vV52jhGSg2VhUV9GuBGyWtJrsZ+3JE/EbSOuB/Sur/XfQFwGcLOmZhpOzlgLNj8XCHjVX1Tq+8n+zKfJqkHrKZNK0AEXEX8COyqZXbyaZXXpfX7ZP0BWBjvqsV/Tdmzczs+Kh31s01NeoD+ESVulXAqqF3zczMiuDBCjOzxDnozcwS56A3M0ucg97MLHEOejOzxDnozcwS56A3M0ucg97MLHEOejOzxDnozcwS56A3M0ucg97MLHEOejOzxDnozcwS56A3M0ucg97MLHEOejOzxDnozcwSV1fQS1ok6RlJ2yUtr1B/u6TN+etZSS+V1R0qq1tbYN/NzKwONX8zVlILcCfwAaAH2ChpbURs7W8TETeVtf8kMLdsF29ExJzCemxmZkNSzxX9PGB7ROyIiDeB1cBVx2h/DXB/EZ0zM7Phqyfo24FdZes9edlRJJ0JdAE/KyueLKlb0gZJH6p2EEnL8nbdfX19dXTLzMzqUfTN2KXAgxFxqKzszIgoAR8FvirpHZU2jIiVEVGKiFJbW1vB3TIzG7/qCfpeoLNsvSMvq2Qpg4ZtIqI3f98BPMLA8XszMxth9QT9RuAsSV2SJpGF+VGzZySdDUwB/ndZ2RRJJ+TL04CLga2DtzUzs5FTc9ZNRByUdCOwDmgBVkXEFkkrgO6I6A/9pcDqiIiyzc8BviHpMNmHym3ls3XMzGzkaWAujw6lUim6u7ub3Q0zszFD0qb8fuhR/M1YM7PEOejNzBLnoDczS5yD3swscQ56M7PEOejNzBLnoDczS5yD3swscQ56M7PEOejNzBLnoDczS5yD3swscQ56M7PEOejNzBLnoDczS5yD3swscQ56M7PEOejNzBJXV9BLWiTpGUnbJS2vUP9xSX2SNuevG8rqrpX0XP66tsjOm5lZbTV/HFxSC3An8AGgB9goaW2FH/l+ICJuHLTtacCtQAkIYFO+7YuF9N7MzGqq54p+HrA9InZExJvAauCqOve/EFgfEfvycF8PLGqsq2Zm1oh6gr4d2FW23pOXDfYfJD0p6UFJnUPcFknLJHVL6u7r66ujW2ZmVo+ibsb+L2BmRJxHdtV+71B3EBErI6IUEaW2traCumVmZvUEfS/QWbbekZf9TkTsjYjf5qt3A++td1szMxtZ9QT9RuAsSV2SJgFLgbXlDSRNL1tdAmzLl9cBCyRNkTQFWJCXmZnZcVJz1k1EHJR0I1lAtwCrImKLpBVAd0SsBf6TpCXAQWAf8PF8232SvkD2YQGwIiL2jcB5mJlZFYqIZvfhKKVSKbq7u5vdDTOzMUPSpogoVarzN2PNzBLnoDczS5yD3swscQ56M7PEOejNzBLnoDczS5yD3swscQ56M7PEOejNzBLnoDczS5yD3swscQ56M7PEOejNzBLnoDczS5yD3swscQ56M7PEOejNzBLnoDczS1xdQS9pkaRnJG2XtLxC/c2Stkp6UtJPJZ1ZVndI0ub8tXbwtmZmNrJq/ji4pBbgTuADQA+wUdLaiNha1uxfgVJEvC7pL4AvA3+S170REXOK7baZmdWrniv6ecD2iNgREW8Cq4GryhtExMMR8Xq+ugHoKLabZmbWqHqCvh3YVbbek5dVcz3w47L1yZK6JW2Q9KGhd9HMzIaj5tDNUEj6M6AEXFpWfGZE9Er6A+Bnkp6KiP9TYdtlwDKAGTNmFNktM7NxrZ4r+l6gs2y9Iy8bQNLlwH8FlkTEb/vLI6I3f98BPALMrXSQiFgZEaWIKLW1tdV9AmZmdmz1BP1G4CxJXZImAUuBAbNnJM0FvkEW8rvLyqdIOiFfngZcDJTfxDUzsxFWc+gmIg5KuhFYB7QAqyJii6QVQHdErAW+Arwd+EdJAP83IpYA5wDfkHSY7EPltkGzdczMbIQpIprdh6OUSqXo7u5udjfMzMYMSZsiolSpzt+MNTNLnIPezCxxDnozs8Q56M3MEuegNzNLnIPezCxxDnozs8Q56M3MEuegNzNLnIPezCxxDnozs8Q56M3MEuegNzNLnIPezCxxDnozs8Q56M3MEuegNzNLnIPezCxxDnozs8TVFfSSFkl6RtJ2Scsr1J8g6YG8/peSZpbVfTYvf0bSwgL7bmZmdagZ9JJagDuBDwKzgWskzR7U7HrgxYiYBdwOfCnfdjawFDgXWAR8Pd+fmZkdJ/Vc0c8DtkfEjoh4E1gNXDWozVXAvfnyg8D7JSkvXx0Rv42I54Ht+f7MzOw4mVhHm3ZgV9l6D3BhtTYRcVDSy8DUvHzDoG3bKx1E0jJgWb66X9IzdfStkmnAnga3HW1SOZdUzgN8LqNRKucBwzuXM6tV1BP0x0VErARWDnc/krojolRAl5oulXNJ5TzA5zIapXIeMHLnUs/QTS/QWbbekZdVbCNpInAKsLfObc3MbATVE/QbgbMkdUmaRHZzde2gNmuBa/PljwA/i4jIy5fms3K6gLOAx4vpupmZ1aPm0E0+5n4jsA5oAVZFxBZJK4DuiFgLfBP4O0nbgX1kHwbk7f4B2AocBD4REYdG6Fz6DXv4ZxRJ5VxSOQ/wuYxGqZwHjNC5KLvwNjOzVPmbsWZmiXPQm5klLpmgr/WYhrFC0ipJuyX9qtl9GS5JnZIelrRV0hZJn2p2nxolabKkxyX9W34u/73ZfRoOSS2S/lXSD5vdl+GQtFPSU5I2S+pudn+GQ9Kpkh6U9LSkbZIuKmzfKYzR549VeBb4ANmXsjYC10TE1qZ2rAGS/gjYD9wXEe9udn+GQ9J0YHpEPCHpZGAT8KEx+vci4KSI2C+pFfgF8KmI2FBj01FJ0s1ACfh3EbG42f1plKSdQCkixvwXpiTdC/w8Iu7OZzi+LSJeKmLfqVzR1/OYhjEhIh4lm7k05kXEbyLiiXz5VWAbVb4ZPdpFZn++2pq/xuRVkqQO4Erg7mb3xTKSTgH+iGwGIxHxZlEhD+kEfaXHNIzJQElV/kTTucAvm9yVhuXDHZuB3cD6iBir5/JV4L8Ah5vcjyIE8BNJm/LHqIxVXUAf8K18SO1uSScVtfNUgt5GMUlvB74LfDoiXml2fxoVEYciYg7ZN7znSRpzQ2uSFgO7I2JTs/tSkEsi4gKyp+t+Ih/6HIsmAhcAfxsRc4HXgMLuNaYS9H7UwiiVj2d/F/h2RHyv2f0pQv5P6ofJHr091lwMLMnHtlcD75P0983tUuMiojd/3w2sYew+HbcH6Cn7V+KDZMFfiFSCvp7HNNhxlt/A/CawLSL+qtn9GQ5JbZJOzZdPJLvx/3RTO9WAiPhsRHRExEyy/09+FhF/1uRuNUTSSflNfvJhjgXAmJytFhH/D9gl6V150fvJnihQiFHz9MrhqPaYhiZ3qyGS7gfmA9Mk9QC3RsQ3m9urhl0MfAx4Kh/bBvhcRPyoeV1q2HTg3nyG1wTgHyJiTE9NTMDpwJrseoKJwHci4qHmdmlYPgl8O79Y3QFcV9SOk5heaWZm1aUydGNmZlU46M3MEuegNzNLnIPezCxxDnozs8Q56M3MEuegNzNL3P8HWh71BPOmOZsAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "ts = list(range(7))\n",
    "\n",
    "def effective_mass(C):\n",
    "    a = 0.5\n",
    "    return[np.log(C[i]/C[i+1])/a for i in range(7)]\n",
    "\n",
    "emp = np.array([effective_mass(C) for C in correlator_average])\n",
    "emp_mean = np.mean(emp, axis=0)\n",
    "emp_error = np.std(emp, axis=0) / np.sqrt(len(X))\n",
    "\n",
    "fig, ax = plt.subplots()\n",
    "\n",
    "plt.ylim([0,2])\n",
    "ax.errorbar(ts, emp_mean, emp_error, c='blue', label=\"E_1 - E_0\")\n",
    "\n",
    "ax.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c551d231",
   "metadata": {},
   "source": [
    "The plateau corresponds to $E_1-E_0=1$ of the Harmonic oscillator with $m=1$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "12b63662",
   "metadata": {},
   "outputs": [],
   "source": [
    "aDeltaE=0.5\n",
    "opmatel=np.array([[C[t] / (np.exp(-aDeltaE*t) + np.exp(-aDeltaE*(20-t))) for t in range(7)] for C in correlator_average])\n",
    "\n",
    "opmatel_mean = np.mean(opmatel, axis=0)\n",
    "opmatel_error = np.std(opmatel, axis=0) / np.sqrt(len(X))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "790e8643",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots()\n",
    "\n",
    "plt.ylim([0,1])\n",
    "ax.errorbar(ts, opmatel_mean, opmatel_error, c='blue', label=\"|<0|x|1>|^2\")\n",
    "\n",
    "ax.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "77614d95",
   "metadata": {},
   "source": [
    "This needs to be compared with the known $\\vert <1|x|0> \\vert^2 = \\frac12$."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "84eb689d",
   "metadata": {},
   "source": [
    "**Homework**: Study the discretization errors ($N$ dependence) in the Harmonic oscillator example.  Then also try the operators $x^3$ instead of $x$.  How do the above plots change.  Explain why!"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9b078b21",
   "metadata": {},
   "source": [
    "In the next chapter we study more advanced statistical methods to reduce the cost of the current analysis significantly.  Before venturing on, however, we complete our analytic study of Markov chains by looking at the correlation of variables between two different steps in the Markov chain."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2295e151",
   "metadata": {},
   "source": [
    "## Convergence and autocorrelation in reversible Markov chains\n",
    "\n",
    "In this section we discuss only **irreducible aperiodic** chains for which\n",
    "the **Perron-Frobenius theorem** states that\n",
    "$T$ has a non-degenerate largest eigenvalue $\\lambda_1=1$ with strictly positive left and right\n",
    "eigenvectors as well as that all other eigenvalues have $\\vert\\lambda_i\\vert<1$.\n",
    "\n",
    "We first define the matrix\n",
    "$$\n",
    "\\begin{align}\n",
    "  S \\equiv \\Pi^{1/2} T \\Pi^{-1/2}\n",
    "\\end{align}\n",
    "$$\n",
    "which for **reversible** chains is symmetric since\n",
    "$$\n",
    "\\begin{align}\n",
    "  S = \\Pi^{1/2} T \\Pi^{-1/2} = \\Pi^{-1/2} \\Pi T \\Pi^{-1/2}\n",
    "  =\\Pi^{-1/2} T^T \\Pi \\Pi^{-1/2}  =\\Pi^{-1/2} T^T \\Pi^{1/2}\n",
    "  =(\\Pi^{1/2} T \\Pi^{-1/2})^T = S^T \\,.\n",
    "\\end{align}\n",
    "$$\n",
    "From eigenvectors $v_n$ of $S$ with eigenvalues $\\tilde{\\lambda}_n$\n",
    "we can then construct right-eigenvectors\n",
    "$$\n",
    "\\begin{align}\n",
    "  r_n = \\Pi^{-1/2} v_n\n",
    "\\end{align}\n",
    "$$\n",
    "of $T$ since\n",
    "$$\n",
    "\\begin{align}\n",
    "  T r_n = \\Pi^{-1/2} \\Pi^{1/2}T \\Pi^{-1/2} v_n = \\Pi^{-1/2} S v_n = \\tilde{\\lambda}_n \\Pi^{-1/2} v_n\n",
    "  = \\tilde{\\lambda}_n r_n \\,.\n",
    "\\end{align}\n",
    "$$\n",
    "We already know the eigenvalues of $T$ such that $\\tilde{\\lambda}_n=\\lambda_n$.\n",
    "We also know that\n",
    "$$\n",
    "\\begin{align}\n",
    "  l_n = \\Pi r_n = \\Pi^{1/2} v_n\n",
    "\\end{align}\n",
    "$$\n",
    "must be left-eigenvectors of $T$ with same eigenvalues since\n",
    "$$\n",
    "\\begin{align}\n",
    "  l_n^T T = v_n^T \\Pi^{1/2}T \\Pi^{-1/2}\\Pi^{1/2}\n",
    "  = v_n^T S\\Pi^{1/2}\n",
    "  = v_n^T \\Pi^{1/2} \\lambda_n = \\lambda_n l_n^T \\,.\n",
    "\\end{align}\n",
    "$$\n",
    "\n",
    "We can therefore diagonalize $S$ by\n",
    "$$\n",
    "\\begin{align}\n",
    "  S = \\sum_n \\lambda_n v_n v_n^T\n",
    "\\end{align}\n",
    "$$\n",
    "or\n",
    "$$\n",
    "\\begin{align}\n",
    "  T = \\Pi^{-1/2} S \\Pi^{1/2} = \\sum_n \\lambda_n \\Pi^{-1/2} v_n v_n^T \\Pi^{1/2}\n",
    "  =\\sum_n \\lambda_n r_n l_n^T \\,.\n",
    "\\end{align}\n",
    "$$\n",
    "We furthermore have\n",
    "$$\n",
    "\\begin{align}\n",
    "  \\delta_{nm} = v_n^T v_m = l_n^T r_m\n",
    "\\end{align}\n",
    "$$\n",
    "such that\n",
    "$$\n",
    "\\begin{align}\n",
    "  T^k =\\sum_n \\lambda^k_n r_n l_n^T \\,.\n",
    "\\end{align}\n",
    "$$\n",
    "It therefore follows that\n",
    "$$\n",
    "\\begin{align}\n",
    "  p_k^T = \\sum_n \\lambda^k_n p_{0}^T r_n l_n^T \\,.\n",
    "\\end{align}\n",
    "$$\n",
    "\n",
    "Since $\\pi$ is the stationary state, we know that\n",
    "$\\pi=l_1$ and therefore $(r_1)_i=1$, $p_0^T r_1 = \\sum_i (p_0)_i=1$, and\n",
    "$$\n",
    "\\begin{align}\n",
    "  \\lim_{k \\to \\infty} p_k^T = p_{0}^T r_1 l_1^T\n",
    "  = \\pi^T \\,.\n",
    "\\end{align}\n",
    "$$\n",
    "\n",
    "So for sufficiently large $k$ we may approximate $p_k = \\pi$.  We call\n",
    "such values of $k$ **thermalized** and compute the autocovariance\n",
    "$$\n",
    "\\begin{align}\n",
    " \\textrm{Cov}(t) &= \\langle f(x_{k+t}) f(x_k) \\rangle-\\langle f(x_{k+t}) \\rangle \\langle f(x_k) \\rangle\n",
    "\\end{align}\n",
    "$$\n",
    "by\n",
    "$$\n",
    "\\begin{align}\n",
    "  \\textrm{Cov}(t) + \\langle f(x_{k+t}) \\rangle \\langle f(x_k) \\rangle &= \\langle f(x_{k+t}) f(x_k) \\rangle =\n",
    "  \\sum_{x_{k+t},x_k} f(x_{k+t}) f(x_k) P(x_{k+t} \\cap x_k) \\\\\n",
    "  &=\n",
    "  \\sum_{x_{k+t},x_k} f(x_{k+t}) f(x_k) P(x_k) (T^t)_{x_k,x_{k+t}}\n",
    "  =  \\sum_{j,i} F_j F_i \\pi_i (T^t)_{ij}\n",
    "  = F^T \\Pi T^t F \\\\\n",
    "  &= \\sum_n \\lambda^t_n F^T \\Pi r_n l_n^T F\n",
    " = \\sum_n \\lambda^t_n F^T l_n l_n^T F\n",
    "  = \\sum_n \\lambda^t_n c_n^2\n",
    "\\end{align}\n",
    "$$\n",
    "with $F_i=f(i)$ and $c_n= F^T l_n$.  Finally, using $\\langle f(x_{k+t}) \\rangle=F^T\\pi = c_1$,\n",
    "we find\n",
    "$$\n",
    "\\begin{align}\n",
    "  \\textrm{Cov}(t) = \\sum_{n \\geq 2} \\lambda^t_n c_n^2\n",
    "\\end{align}\n",
    "$$\n",
    "and we define the autocorrelator\n",
    "$$\n",
    "\\begin{align}\n",
    "  C(t) \\equiv \\frac{\\textrm{Cov}(t)}{\\textrm{Cov}(0)}\n",
    "  = \\sum_{n \\geq 2} \\textrm{Sign}(\\lambda_n)^t e^{-t / \\tau_n} \\tilde{c}_n^2\n",
    "\\end{align}\n",
    "$$\n",
    "with\n",
    "$$\n",
    "\\begin{align}\n",
    "  \\tilde{c}_n^2 &\\equiv \\frac{c_n^2}{\\sum_{m \\geq 2} c_m^2} \\,, &\n",
    "  \\tau_n &= -\\frac{1}{\\log(\\vert\\lambda_n \\vert)} \\,.\n",
    "\\end{align}\n",
    "$$\n",
    "\n",
    "The autocovariance therefore falls off exponentially.  The function $f$ determines how large the contribution of the various exponentials is.  If there was a single dominant mode $\\tau_2$ with $\\lambda_2>0$ and $\\tilde{c}_2 \\gg \\tilde{c}_{3,4,\\ldots}$, we would therefore have\n",
    "$$\n",
    "C(t) = e^{-t / \\tau_2} \\,.\n",
    "$$\n",
    "\n",
    "\n",
    "### Calculate autocorrelation numerically:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "f716c38e",
   "metadata": {},
   "outputs": [],
   "source": [
    "def autocovariance(Y, max_dt):\n",
    "    mean = sum(Y)/len(Y)\n",
    "    return [sum([ Y[t]*Y[t+dt] for t in range(len(Y) - dt) ])/(len(Y) - dt) - mean**2. for dt in range(max_dt) ]\n",
    "\n",
    "def autocorrelator(Y, max_dt):\n",
    "    Cov = autocovariance(Y, max_dt)\n",
    "    return [ Cov[t] / Cov[0] for t in range(len(Cov))]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "a34b7c1e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "C = np.array([autocorrelator([ Xj[i][0] for i in range(len(Xj)) ], 40) for Xj in X])\n",
    "C_mean = np.mean(C, axis=0)\n",
    "C_error = np.std(C, axis=0) / np.sqrt(len(X))\n",
    "\n",
    "fig, ax = plt.subplots()\n",
    "\n",
    "plt.ylim([0,1.1])\n",
    "ax.errorbar(range(len(C_mean)), C_mean, C_error, marker='+', ls='', c='blue', label=\"autocorrelation of x[0]\")\n",
    "\n",
    "ax.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "73160955",
   "metadata": {},
   "source": [
    "In the next chapter, we will see how the autocorrelation in a Markov chain relates to the statistical precision of our measurements."
   ]
  }
 ],
 "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.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
