Skip to content

Instantly share code, notes, and snippets.

@maximerischard
Created August 24, 2020 20:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save maximerischard/1f89081be235f374217bd63dc7a496a8 to your computer and use it in GitHub Desktop.
Save maximerischard/1f89081be235f374217bd63dc7a496a8 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"\u001b[32m\u001b[1m Activating\u001b[22m\u001b[39m environment at `~/Documents/Harvard/GaussianProcesses/Project.toml`\n",
"\u001b[32m\u001b[1mPrecompiling\u001b[22m\u001b[39m project...\n",
"┌ Info: Precompiling BenchmarkTools [6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf]\n",
"└ @ Base loading.jl:1260\n",
"┌ Info: Precompiling ScikitLearn [3646fa90-6ef7-5e7e-9f22-8aca16db6324]\n",
"└ @ Base loading.jl:1260\n"
]
}
],
"source": [
"# executing this cell will install all required julia packages\n",
"import Pkg\n",
"Pkg.activate(\".\")\n",
"Pkg.instantiate()\n",
"Pkg.precompile()"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import PyPlot; plt=PyPlot\n",
"using LaTeXStrings\n",
";"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"using Distributions\n",
"import Calculus\n",
"using LinearAlgebra\n",
"using PDMats\n",
"using Profile"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"using Revise\n",
"using GaussianProcesses\n",
"using GaussianProcesses: get_params, update_mll!, set_params!"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"using Random\n",
"Random.seed!(1)\n",
"n,p = 100,1\n",
"f_star(x::Real) = abs(x-5)*cos(2*x)\n",
"σ_y = 0.8\n",
"X_distr = Uniform(-2,2)\n",
"ϵ_distr = Normal(0,σ_y)\n",
"x = sort(rand(X_distr, n))\n",
"Y = f_star.(x) .+ rand(ϵ_distr,n)\n",
"k = SEIso(0.5, 0.8)\n",
"logNoise = log(σ_y)\n",
"gp = GP(Matrix(x'), Y, MeanZero(), k, logNoise)\n",
"optimize!(gp; domean=false, kern=true, noise=true)\n",
"optim_params = get_params(gp; domean=false, kern=true, noise=true)\n",
";"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Leave-one-out"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAiIAAAGdCAYAAAAvwBgXAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nOzdeXhkdZXw8e+tPVVJVfZ9T+803Q00NKvAgIqOCsoiIy7wuiIMsrgMo6+oM4rOuI2OI8or4CgIIosCCgKyCvS+r+ns+56q1F51733/qE66m06lqtKppJKcz/Pk8aFyNxq76tT5nd85iq7rOkIIIYQQc8Aw1w8ghBBCiMVLAhEhhBBCzBkJRIQQQggxZyQQEUIIIcSckUBECCGEEHNGAhEhhBBCzBkJRIQQQggxZyQQEUIIIcScMc31A0xF0zS6u7vJyclBUZS5fhwhhBBCJEHXdcbGxigvL8dgmDrnkdGBSHd3N1VVVXP9GEIIIYSYho6ODiorK6c8JqMDkZycHCD2L+J0Ouf4aYQQQgiRDI/HQ1VV1cTn+FQyOhAZX45xOp0SiAghhBDzTDJlFVKsKoQQQog5I4GIEEIIIeaMBCJCCCGEmDMSiAghhBBizkggIoQQQog5k/ZApKuri49+9KMUFBSQlZXFqaeeypYtW9J9WyGEEELMA2ndvjsyMsJ5553HxRdfzF/+8heKiopobGwkLy8vnbcVQgghxDyR1kDke9/7HlVVVdx///0Tr9XV1aXzlkIIIYSYR9K6NPOnP/2J9evXc/XVV1NcXMxpp53GvffeG/f4UCiEx+M57kcIIYQQC1daA5Hm5mZ+/vOfs3TpUp577jluvPFGbrnlFn79619Pevzdd9+Ny+Wa+JE5M0IIIcTCpui6rqfr4haLhfXr1/PGG29MvHbLLbewefNm3nzzzROOD4VChEKhiX8e71XvdrulxbsQQggxT3g8HlwuV1Kf32nNiJSVlbFq1arjXlu5ciXt7e2THm+1Wifmysh8GSGEEGLhS2sgct5553Hw4MHjXjt06BA1NTXpvK0QQggh5om07pq57bbbOPfcc/nOd77DNddcw6ZNm/jlL3/JL3/5y3TeVgiRITRNxxuO4glE0HVw2szk2EwYDIkncgohFoe01ogAPP3009x55500NjZSV1fH7bffzqc//emkzk1ljUkIMbd0XccXVvEEIniCETyBKN5QBE07/jiDAbKtZpxZJlxZZlxZZuyWtH4nEkLMslQ+v9MeiJwMCUSEyFxuf4RARGUseCTwCEZR1em9nZiMCs4jQYkry4zTZsZikgkUQsxXqXx+y9cQIURK/OEo+3s8jPgiM3bNqKoz7A0z7A1PvGYwgEFRWFuZS57DMmP3EkJkFvnKIYRIWtdogI3NwzMahMSjabEAZUfnKKP+WIDiD0fTfl8hxOySjIgQImktAz5UbXZXc1VVZ3vHKJW5WXSM+KnOd1BX6MAoBa9CLAiSERFCJCWqagQj6pzcW1V12ob8aBq0Dvp4q3mIQW8o8YlCiIwngYgQIinuQPqXY5IVCKvsaB9lV+fonAVHQoiZIUszQoi4ghGVPk+QPk8ITwYFIuP6PSH8YZUza/NlqUaIeUoCESHEcUJRlV535gYfb+cNRjnQ6+GUctdcP4oQYhokEBFCHGdXpxu3P/MDkGP1jAbJtVuoyM2a60cRQqRIakSEEBN63cF5F4SMO9jrwROcn88uxGImgYgQAojNhWka8M71Y0ybpsHuTjcRVUt8sBAiY0ggIoQAYH+vh0B4fu9ACYRV9nZ7ZCeNEPOIBCJCCNqH/PSMBuf6MWbE4FiIvx8eJBSVYESI+UACESEWuSFviMb+sbl+jBml67GtvUKIzCeBiBCLmD8cZXeXm8ydwT19/WMSiAgxH0ggIsQiFVE1dnSMElUXYBQCjPrDuP0RvCEZlCdEJpNARIhFSNd19nS58YcWbh2FrsPm1mG2tA5LMCJEBpNARIhFqGnAy5A3nPb7KGoYq6+biLsX79goaLMf+ERVnR3tMpNGiEwlnVWFWGTCUY32Yf+MX9cS6KOo62/YR/ZjGGnB4WsjN9KHgeOXfsKYcVtKGMpdS7h8Pf6i0/C5lqEb0vd2FIyo7OgYZX1NHiajfP8SIpNIICLEItM9GkCboZ5fRm8PtsNPU9b1HNW+3ScEHQAh3YQZFYMS+52FCEXhTor6O6H/GQACip39eRfT3fBhzNVnYUxDsOANxgpz11XloigyIE+ITCGBiBCLTNdo4KTOD4RVtm96lQu77+VCthz3u63aUjZqK+kzVRLJrcNYtITC4gpqCxyYCdM7OERP/xD6wEGK3TtZqR5knaGJHPycPvwMpw8/w4FN1byQdRk78t5NxOxkWXE2G+oLTuqZxw15w+zvGWNVuXNGrieEOHmKrmfuxj2Px4PL5cLtduN0yhuHECdr0BtiR/votM/vObyTku0/5F36mxOvbdWXs8X+DtpLLiW3tJa6Qge5dktS1xv1h2kd8EDnZtb2/5ELwq9hU2LzYjx6Fj+NfpAH1Mv4zEXLOa06b9rP/XYNxdnUFTpm7HpCiOOl8vktgYgQi4Sm6WzvGGXEl3qRqjk0TPYr32DdyHMYFR0NhQMF76R19S2Yi5fO2FKHITiK49Bj1LX+nuJgCwAtWgnfUz/Kq8YzcVjMXL6unA11+Sd9z9UVLkpdtpl4bCHE20ggIoQ4TkTV2NXpnlYQUtDzKqs234k1OADAVts5eM/9FyKFK2f6MY/SVMranqRh9w+xHbnv39VT+Hr0epr0ClaW5nDd2TWUOqcfSBgMsK4qj3xHctkbIUTyJBARQkzQdZ0dHaMpb9c1RIMs2fWfVB/+DQCHtAq+HPks1199Fdm22SkvM0a8VO+7h6qD92Mhgl+38k31Bh6JXoDJYOA9q0t576llmKdZ3GoyKqyvzSfbKuVyQsykVD6/ZR+bEAtc04Av5SAke3Q/Z73woYkg5CXXB3l/+Ns0WVfMWhACoJqzaVn7RTa+9y/0FWzAroT4nuke7nfei1Xz89SuHr7xp730eaY3sE96jAgx9yQQEWIB6/cEaR30pXROQc8rnPHitWR7DjOk5PGJ8Fe4oe9qQlhoKMpO05NOLZRdze6LH+Dw6tvQFCMXh1/mNdddbLB10DcW4n9ebiI0zWAiGFHZ2TFKVJ2hPc1CiJRIICLEAuUNRdnb40npnOz9D7Pmtc9iVgO8pq7mnYG7eVVfy8qyHD5+dg2fOr8uTU+bBIOR1lU3svWi3xC0l5Ef6uQhw9e4yraFrtEAv93YznRXmseC48P/MnalWogFS2pEhFiAIqrG5pZh/OEkswS6Tu2+/2HJ3v8C4DH1Au7Lu43T6oo5vToPZ5Y5jU+bOlNolFM2/wtF3X9DR+Fb0Y9xf/QyPnZ2DRcuK5r2davy7SwvzZnBJxVicUrl81sqtIRYYCYG2iUZhChalOXbvkVl88MA/I96BTnv+Qa35drT+ZgnJWrNZee5P2P59n+jqukh7jL9LyWM8INN11JTYKe2YHo9QjqG/ZQ4rUn3QRFCnDxZmhFigUmpOFXXWLnlq1Q2P4yGwtciN7Br2S2UZXAQMsFg5ODpd3F49W0AfM70FN8z/pz/9/KBk5q2e6B3TJZohJhFEogIsYAEwiptQ0kWp+o6y3bcTXnrE6gY+Hz4Czxpeg/vPbU0vQ85kxSF1lU3svfM76IpRj5kfJ1vh/+DLz2yhY0tQ9O6pDcYpXPk5NrgCyGSJ4GIEAtIy6CPZL/M1+37b6obfw3AHeHP8Zx+Fp86vw67Zf6t2PbUfYid599D1GDjEuN2/sv839z32mF808yMHB7wEorKll4hZoMEIkIsEIGwSo87uW/yVYd+TcPenwLwjcgneFI7n6vPqGR1hSudj5hWQ2UXsuv8n6EqZt5r3MR/mn/BjvbhaV1LVXUa+7wz/IRCiMlIICLEAtE86E0qG1LW+jjLd3wbgJ9qV/OA+m7ObSjgnStL0vyE6TdcegG7z/0JKrFlmrP3/RtJp4jeptcdnFZLfCFEaiQQEWIB8Iej9LoTdxfNHdjMys1fA+Bh4/v4QfgK6gsdfOzsmhkbXDfXBisu4e9rvoOqK7w79BydD3+BPZ3Tmzh8oHcMTZPCVSHSSQIRIRaAZGpDrP4eTn3jFgx6lFct7+BO37Xk2S18/qKGac9qyVThFR/ke9Z/BuB647NEX/sR7cP+lK/jC0XpGEn9PCFE8hbWu48Qi1Ay2RCDGmLNGzdjDQ3RZanns57rMRmN3HTxkgXbM2Ppuz7D8zV3APBF4+/Y88JvGZ7GUkvzgE9m0QiRRhKICDHPJcyG6Dortt6Fa3g3YbOLj/tvJYCNj59dO+3GX/NBnt2CsuGzNNdfB8C39Z/w7PPP4g+ntpNG1XQO9Y2l4xGFEEggIsS8lkw2pPLwbylvfRxdMfBg1TdoihZS4rRydn1+Wp9NUSDbZqI8N4uV5U5OqXBSlW/HmWXGMIvvPC2nf5XuovPJUsLcHfp3Hn1pY8oD7vo9IYa8oTQ9oRCL26y9HXz3u99FURRuvfXW2bqlEAte88DU2RDXwBaW7bgbgMZTv8SvemoBuGhZ8YwXp9otRkpdNpaV5LC+No+Llhdzdn0Bq8qdVORmUebKYnlpDmfV5XPRsmLOrMtneWkOpS4bdotxRp/lWLrBxMHzf8KIo4ESZZR/GfkGj7xxIOXuqQd7x1ClcFWIGTcrnYs2b97ML37xC9asWTMbtxNiUXAHIvR54mdDTGEPqzd+EYMepbf6ffwt7xo6Rw5iMRo4t6HgpO5tNCqU5MQCiBybCWeWOaWCV4NBwZVlxpVlpurIaxFVwxOI4A5E8ASjBCMqmq7jD518fYZqzmbvRfdy2l+v4pRIGx/u/DZP7fwPPrCuIulr+MMqTQNelpXIUDwhZlLaMyJer5frrruOe++9l7y8vHTfTohFQdN09na7p8yGLN/2TbL83fizq9mx7hs8ubMbgDNr83BYp/8dJM9h4ZwjmY7aQgcF2dYZ2XVjNhooyLZSX5TNuqpczq4v4NyGQirzs0762gBBRyX7Lvg5UcXMZcbNlOy9l783DaZ0jY5hP6N+6S0ixExKeyBy00038Y//+I9ceuml6b6VEItG04B3ykxBSdtTlLU/haYY2Xr69/jui50c6B3DZFB456rpNy5rKM7mjJo8bOb0LaW83YpSJ+W5WRgMUOy0ntS13IWn0XharI/KV0wPs/fN59jf40n6fF2Hfd0eWaIRYgaldWnm4YcfZtu2bWzevDmp40OhEKHQ0YIwjyf5NwghFgu3PzJlTwybr4sV274BQPPKz/P9fU5ah9xkW03cdHEDlXnTn6xbnmub9rknY1W5kxKnlYJsK0PeEAd7x/CHp7dk09VwLbmDmylrf5qfmH/ClS9X8OnLzkr6z0WWaISYWWnLiHR0dPCFL3yBBx98EJstuTevu+++G5fLNfFTVVWV+CQhFhE10ZKMpnLKpq9gjozhzl/Lf0cvZ2enG5NB4dZLlrK0ePofnmaTAatp9jIhb1eQbZ3437PrC6grckxv942icOCMf8Ob00CpMsJ3+Qn//cLBlJZcOob9eIKRadxcCPF2ip5q6XiSnnzyST74wQ9iNB5941JVFUVRMBgMhEKh434Hk2dEqqqqcLvdOJ3OdDymEPPKob4x2ofiZ0NqDtzL0l3/SdRk54HVv+Hf34r9fbrh3FrOW1I47fsqCrFtuGWZ9ffQH46yp8uDJ5B6UOBwH+bMF67EpAb4cfRDPJbzMb5y2Yqkl51y7WbW16Z3C7QQ85XH48HlciX1+Z22pZlLLrmE3bt3H/faDTfcwIoVK/jKV75yQhACYLVasVpPbg1YiIXKF4rSMcWSjMPdSMOeHwOweflX+MHWWOOuf1hePK0gRFFihaklThtF2VYspsxrO2S3mFhb5WJTyzChSGq9QXyuJRxY/y1Wb/wSt5ieYLN7Ofe8Yuaf/2EpRkPirc2j/gj9niDFzrlZrhJioUhbIJKTk8Pq1auPe83hcFBQUHDC60KIxKbsGaJrrNzyfzFoEXpLLuK2xtUEIiGWFmdzzZmVKd3HYTVRmZdFsdM6p0sxybKajJxa4WJr20jKg3Z7ay4nd2ALlc2P8EPzPbyru47HtmVxzfrkloUb+70UZlsxJBG4CCEml3lfcYQQJ/CGolP2DKlo/j25Q9uImux8LXIDvZ4QeXYzn7uwAVMKhRSKAmsqXVTl2+dFEDIu125hSXH2tM49tO5f8eXUUaKM8G3zfTy/v3fKzNOxAmF1WsP0hBBHzWog8vLLL/PjH/94Nm8pxILQPOCN+ztLoJ8lu/4TgKcKPskL3WZMBoUbL2rAlWVO6T4VeVkn1WNkLtUUOCjKSX1pVzNlsWfD99EUE+8zvsXlyt/57cY2tCTTKy1DPkJRGYonxHRJRkSIDDcWjNDviT/nZPn2b2OOjDGcu5o7O88B4LoN1dQXppYhMBmVlM/JNKvKndNqFz+Wfyotp9wMwL+Z7yc40MobTUNJnauqOk39vpTvKYSIkUBEiAzXNBD/Q66w+2+UdP4FTTHyU8ctBFWoL3RwforFqYoCqytcGVmQmgqz0cCplS7ysy0pn9u64jOMFpxGjhLgB5Z7eHxrO95QcpN6e9wBxmQ7rxDTMr/fdYRY4NyBCINjk2dDjBEfK7Z9E4DG+k/wYGtsi9wH1panPNBuSXE2hdkLY8dajs3M6dV5KWdGdIOJvRtiW5/PNuznn6J/5MntXcmdq8e2VgshUieBiBAZbKrakPq9P8Hm78HvqOQn0SsJqxr1hQ5OKU+t10epy0ZNgeNkHzXjTKcdfCC7mkPrvgrA7aZH6WrcTutgcssuI74I/WPxC4qFEJOTQESIDOX2RxjyTt7t0+5ppqrxNwBsW/01/no4Ng4h1WyIM8vMqgxrUjZTptvfo7vuKgbKLsKqRPme+Zc89FYzWpKzZQ73eZM+VggRI4GIEBmqaTB+NmTpzu9i0KMMlF3MA/1LiKh6ytkQq9nAmkrXgu2B4bSZqcjLSn0njaJw4IxvETE5ON1wmAvdT/La4eSm9PrDKh0jsp1XiFRIICJEBhrxhRmOkw0p6HmVop6X0Qxmti6/g1cODQBw+brksyEGA6ypzJ3VKbpzYWWZkzWVLgpSLF4N2Us5vPYrAHzJ9Hs2btuadDFqy6CPcDS1Lq9CLGYSiAiRgZrjZEMULcKyHd8BoGPJx/hDm42IqtNQ5EhpiWV5qTPlHiPzlaIonFrhItuWWn+UrvprGC46C7sS4uv6L3hsa2dS50VVnaYpanuEEMeTQESIDOMJRhjxTf7tu/Lw73CMNRO25rO97tMT2ZBUakOsZgPlrsU1H8VkNLCuKherOYW3PMXA/vXfJmKwcb5xL+Wtf0g6wOgeDSS99VeIxU4CESEyTPdoYNLXzaER6vf9FICm1bfy9CHftLIhFblZKW/vXQhsZiPrqnIxGpP/dw/k1NBy6hcA+JrpQf78xnaiauJlF12HRtnOK0RSJBARIoOomk6ve/ItoPV7f4I57GYsdwWb897HyweP1IasrUg6sFAUKM/NmrHnnW9ybGbWVLhIJQ7rWPoJhnNX41T8fNb/C57Z3ZPUeUPeMKP+yet8hBBHSSAiRAbp8wSJqidu/7R7DlPZ9DsA9q+5k1+92U5U01lT6WJlWU7S1y/KsS74AtVECrKtrEghg6QbTBw66ztoGHmvcRO+vc/SPpTczpjD/VIrIkQiEogIkUHiLcss2f0jFF2jv+JSHuqvoW3Ij91i5ONn1ySdDTEalQXZuGw6KnKzqC1M/s/Cm7uCjmUfB+Au4/08+PcDSS3RjPojDMTpjCuEiJFARIgM4QtFGfWfWKTqHNpJcdfz6IqB16tu5KldsaWBj5xVTa49uW2pFpOB9TV5i2anTDKWFGdTmkLRbvMp/0zAVkKNoZ/LvQ/z5z29SZ3XNOBFT3KSrxCLkQQiQmSIrsmyIbrOkt0/iP2++gp+tNOAqumcVp3Lhrr8pK5rMMDaylxybBKEvN2qMid5juT+XFRzNo2nfw2AzxmfYt/urfR5Erd09waj9CZxnBCLlQQiQmQATdPpmaRINb/vDfL730IzmPml4Ro6RgJkW018dEPySzLLSnJw2SUImYzBoLCmMhe7Nbm6mf6KdzFY+g4siso3jffx6JaOpM5rHvBJ63ch4pBARIgMMOANEXl7N05dm8iGNNb8Ew8djH2QXbehOukllvLcLCrz7DP6rAuN2WjgtKo8LKYk3g4VhYOnf52owcp5xr3UdD/DgV5PwtMCYXXyjJcQQgIRITJB58iJH1LFnc/hHNlD1OTgp+H3E9V0lpVkc2ZtcksyLruZFaXJ76hZzLIsRtZW5WJMYu5OILua1lWfB+Br5gd5etOBpLIdLYM+VMmKCHECCUSEmGOBsMqI7/h+E4oWpWHPjwHYX/cJ/tIS69J5xbqKpK5pMRk4tWLhDrRLB1eWmVVJDg1sW/5Jxhy1FClurvQ+xOtNiYfihaMa7cMyEE+It5NARIg5NlnKvqz1cRxjLYStefyX712oms6qMifLShJnOGID7VyLvl/IdJQ4bUkNyNONFg4fKVy93vgcO7ZvIhBWE57XOiQD8YR4OwlEhJhDuq7T4z4+EFHUMPX7fgbArrpP8beW2Lfoy9eVJ3XNpcU5SW/rFSdaXpqDIYl3xqGyd9BfehFmReUO9X7+vLs74TmqqtM25JuBpxRi4ZBARIg5NOANEYoc/w25vPVxbP4eglnF/MT9DjQdTq1w0VCUnfB6dquRyrzF28J9JtgtpqQbvzWe9lWiipkLjbtQD/yFQW/i5mUdI36CkcTZEyEWCwlEhJhD3aPHb9lV1DC1+38BwO6a63mtNTY47fK1yWVD6guzF+VAu5lWV+Agy5J4aSuQU0PHsusB+Ffjb3hyS3PCczQt1uSsOclJvkIsdBKICDFHghGVobd9gy5re5IsfxchWxE/HjkPXYd1lblJtSN3WE2UOK3petxFxWBQkqrHAWhddSN+SxG1hj5O6/pdUlN3e0aDtAz6JDMiBBKICDFnukcDHNv5W9Ei1O6/B4Bd1Z/gjbZYLcEHkqwNqS9ySDZkBhXlWCnMSRzYqeZsmtd9CYCbTU/wwqadaEm0dNf1+LOFhFhMJBARYg7oun7Cskxp25+w+zoJWQv44eh56MAZ1XlU5yduSOawmihO4kNTpGZ5SU5SvUV6az7AUN5aHEqIj3jv463moaSuP1k3XSEWGwlEhJgDw77wcWl5RYtSt//nAOys/jhvtgdQgA8kWxsi2ZC0yLIYqSlIojOtYqDpjP8LwJXG1zmw9VVCSSy7BMInLs8JsdhIICLEHHh775DS9qewe9sJW/P5wcgFAJxZm09FEjtgJBuSXrUFDuxJFK568tfQVf0BAL6gPcCze3qSun6bNDkTi5wEIkLMslBUPW6bp6JFqd0Xy4bsrf04GzuDKMD715YldT3JhqSXwaCwLMlW+c1r7iCiWNlgOIC6/xmG39YxdzLD3jD9Y7JEIxYvCUSEmGU9o0G0Y1qHFHc+i8PbStiSy/9G3gnAKeVOylzJZUNKnLZ0Pao4ojDbSlESWaeQvYyOFTcA8CXDb3l6e2tS12/s88p0XrFoSSAixCw7bqeErlN74JcAtC79xEQX1QuWFiV1rfqi5BpviZO3vDQHozFx5qltxWfwWwqoM/SxpP2RpHbGBMIqvR7JiojFSQIRIWbRiC+M/5iZJAW9r5EzeoCoycGzWe/DHYjgtJlYW+VKeK08h1myIbPIZjYm1VtENWfTuuY2AG4xPs4L2w4kdf1Waf0uFikJRISYRW8vUh3PhnTVX8PzLbF6gnMbCjElGHZiNCqsKkscrIiZVZGbRX4SQ/G6a69kOHspuYqPC3sfoGUwcZDhD6lSKyIWJQlEhJglEVU77oPGObSTvIFNaAYzuyqvY0+3G4ALlhYmvNaSouykWpCLmbeqzJl4icZgpPX0fwXg48a/8tbmTUldu21IdtCIxUcCESFmSa/7+CLV8WxIb/X7eb7LhK7HGmglWm7Jz7ZQlUSTM5EeNrORpcWJBxAOl55Hd9H5mBWVD47ex75uT8Jz3P4II0nstBFiIZFARIhZcuyyjN3TRFHXCwC0LPsUrzcOAvCOBNmQ2JKMM30PKZJSmWfHZTcnPK7ttK+gofA+40b2b/kbehKt36VWRCw2EogIMQvc/gjeYHTin2sO/goFnf7yS9jkK2LYH8ZhMXJ6Td6U11lWkoPNLEsymWBZceLCVV/ucjqqLgfgev99bGsbSXjOkDfMWDBy0s8nxHwhgYgQs6Bj5Ojav9XfS1nbH4HYVs9XGwcAOKehALMx/l/JHJuJitzEvUXE7HDZzZS6Eu9aal97G2HFwgbDAQa3/RE1iX4hUisiFhMJRIRIs7cXqVYfegCDFmGk6EzaHavZ1XGkSHXJ1L1D6osS1yWI2bWkODvhULyQvYy2JR8H4NPh/2VjU1/C6/Z5gsfNIhJiIZNARIg0O7aTqjE8RkXzIwC0rvg0bzQNouo69YWOKefKOLPMSXX2FLPLZjYmVTjcdcrn8BmdLDN0wY6HiKjalMfrumRFxOKR1kDk7rvv5swzzyQnJ4fi4mKuuOIKDh48mM5bCpFxOkePfqBUtDyKKerD61zCYMk7eG2iSDVRNkQ6qGaq2gI7VvPUb6VRi5O2VZ8H4DPaI/x9f3vC63aPBghHpw5YhFgI0hqIvPLKK9x000289dZbPP/880QiEd71rnfh80lVuFgcRnxh/KFYil3RolQ1/i8A7Us/wcF+L/1jIWxmA2fWxi9SddnNFGZLNiRTmYyGpJbNepZ9lBFLGaXKCPm7f8Xz+/rwh6Nxj1c1/bjaIiEWqrQGIs8++yzXX389p5xyCmvXruWBBx6gvb2drVu3pvO2QmSMY7fsFnU9T5a/m7A1j96ay3n1UCwbsqGuAOsUO2HqCyUbkunKXTZybKYpj9GNFjrW3QHApwx/4rkt+/j9ls4pz+kY9idcxhFivpvVGhG3O1aUl5+fP+nvQ6EQHo/nuB8h5qtw9O1FqvcD0NnwETxRE9vaY1s5p+qkmucwUyDZkIynKEpSc2j6a95HnxjfrCYAACAASURBVH0pTiXA501/4vXDgwTC8YtSo6pO04B3Jh9ViIwza4GIpmnceuutnHfeeaxevXrSY+6++25cLtfET1VV1Ww9nhAzrns0MFGk6hrcTu7QDjSDmc6Gj/Bm8xBRTac6305tQfyMR32h7JSZL/IclsQFxYqBrtO/BMAnjH+ljCE2tw5PeUrXSACP9BURC9isBSI33XQTe/bs4eGHH457zJ133onb7Z746ejomK3HE2JG6bp+3LJM9aEHgFg795CtkNeO9A65YMlU2RALeY7EA9ZE5lhakk2CeYUMl13ISNFZWJUIXzA9xmuHB6c8XtfhYO/YDD6lEJllVgKRm2++maeffpqXXnqJysrKuMdZrVacTudxP0LMR4Pe8ETK3ebrpLjrOQDal11P04CPbncQi9HAhvrJlykBGmSnzLxjt5iozEuwnVdROHxqrFbkauMrGIYO0ZmgKNXtj9D9tsnNQiwUaQ1EdF3n5ptv5oknnuBvf/sbdXV16bydEBnj2A+WqsbfoOgaQ8Xn4M1dMdFJdX1tHnbL5AWO+dkWcu2SDZmP6godmE1Tv7W6C0+jv/wSjIrOHaZHeWF/f8LrNvZ7pXBVLEhpDURuuukmfvvb3/LQQw+Rk5NDb28vvb29BAIS2YuFKxBWGfLGJqgaI14qWh4FoH35DfjDUba0JS5SbZAuqvOW2WhIaqdT06m3o2HgvcZNeJveoi3BsLtIVKN5QFofiIUnrYHIz3/+c9xuNxdddBFlZWUTP4888kg6byvEnDo2G1Le8himiBdfTh1Dpe9gU8sw4ahGmcvGkjjBhstuxpWVeLKryFyVeVk4rFNv5/W5ltJbewUAXzY9zEMb2xJO5+0c8ctAPLHgpH1pZrKf66+/Pp23FWLOaNoxRaq6RtXh3wLQsfTjoBh49Ugn1QuWFqIok88okcF285+iKDQUJ86KNJ/yz6gGM+ca91E2vJH9PVMXpUrhqliIZNaMEDOo1xMkqsa+1Rb0vo7d20bUnE1PzRW0DfloH/ZjMiicU18w6flGo0KJM/FEV5H5inNsuOxTZ7aCjgq6Gq4D4EumR/jLnu6E1x31R+hxy/K2WDgkEBFiBnWOHP2AqDr8GwC6a69ENTsmsiGnVeeSY5v8A6rUaUs4zVXMH/GW347VsvKzRIxZrDU0U93/Eq0JakUAGvukcFUsHBKICDFD3IEInkBs/T5rrI2CnlcB6FhyHaGIysaWIWDqAXdTTeAV80+ew0J+9tS7nyK2AjqW3QDAHabf89fdXQmvG5bCVbGASCAixAw5bsvu4QdR0BksfQeBnFo2t40QjGgUZVtZXjp5K/AcmwlnnEyJmL+WFCfOirQt/yQhk5Nlhi6qup4+bjRAPFK4KhYKCUSEmAERVaPfEwLAGPFR1voYAB1LPwZwtJPq0kIMcYpUy6VIdUFy2swJ635USw7tqz4LwK3Gx3hhz9TD8EAKV8XCIYGIEDOgezSAqsWKVEvb/oQ5MoY/u4ah0gvoHPHTNODDoMC5DXGKVA0KZS4pUl2o6oscxIk/J3Qs+Sg+SwFVhgGqWh7FHUic7ZDCVbEQSCAixAzoGi9S1fWjW3aXXAeKgVcOxbIh66py43ZLLXZaMRnlr+NC5bCaKHNNnfHSTFm0n3ITADcZn+C1fa1JXbuxz0tUClfFPCbvfEKcpEFvCP+RuTJ5/W+R7WkkarLTXXsloYjKW82x6aoXLpuiSFWWZRa8+iJHwoF43fXXMGoto1gZparxQYIRNeF1w1GN1qGpZ9UIkckkEBHiJB2/ZTeWDempuQLVksOm1mECEZWiHCsryyYf4uiwmmSuzCJgMxsTDsTTjRY61twKwCeVP7Jxf3NS1+4Y9icVtAiRiSQQEeIkBCMqQ95YkarV30NR94sAdC75KMDEssyFS4viFqlKNmTxqC1wYDROXSzSV/MB+m115Co+qg7cl9Syi6rpHO73ztRjCjGrJBAR4iR0jvgZHw9S0fQIiq4xXLQBn2sJrUM+WodinVTPWzJ5karBAKVSpLpoWEwGavKnzopgMNK5LpYV+Yj+DLsONSV17T5PEI9s5xXzkAQiQkxTbK5MrN+DokUmpux2LvknAF49kg05oyYvbifV4hwblgQj48XCUp1vx5zgv/lw1WV02paRrQSp2PsLolrirIiuxwpXhZhv5B1QiGnqGwsSicY+IIq6XsAaHCBkK2Sg/FL84SgbWxIXqUrvkMXHZDRQV+CYuouuotB1+hcBuEr9C1t2703q2iO+MANjoZl4TCFmjQQiQkxT1zFFqpVNv4u9VncNutHCW83DhKIa5S4bS+N01rRbjOQ7pEh1MaousLO8JGfKzMhYxYW0OdZgVSI07P85o/5wUtc+3O9FH18vFGIekEBEiGkIhFVG/bH1eLunifz+t9AVA10NH0bXdV4+2A/EsiGKdFIVkzAkamKnKPSf+WUArlJe4tVNm5O6ri8UpWtUmpyJ+UMCESGm4dhZIJVNDwMwWHYxIXsZB/vG6HYHsZoMnBOnk6rBAGW5UqS62CXaMeUuPovO/HMwKyoX9tzHob7kWro3D/ikyZmYNyQQEWIa+o+swxuiAcpanwCgsyFWpPrywViR6tn1BdgtpknPL8y2YjUZZ+FJRSZzWE247FMPOhyvFbnC8DpvvPX3iVECUwlHNdqGpcmZmB8kEBEiRcGIivvIskxp+zOYIx78jiqGSs9n1B9me/soABctlyJVkVh1gu28Y/mn0l16KUZF5yP+304s+yXSPiRNzsT8IIGIECk6dldCRdNDAHQ1XAuKgVcbB1F1naXF2VTF6aJpMxspkCJVcUSJ00ZugqxI29rb0FB4r3ETh3a8jieJgXiqptM0INt5ReaTQESIFI3Xh+QM78Y1sgfNYKa79kqimjbRO+Ti5cVxzy/PtcUtYBWL0/LSnCl/73Mtpbf6fQDczMM8tq0zqev2uoOMSZMzkeEkEBEiBaHo0d0y41t2+yrfQ8SWz46OUUYDEXJsJk6vzp30fEWRZRlxohybmaIc65THtJxyC5pi5GLjToLNbySV7dB1aJTW7yLDSSAiRAoGvWF0HYwRL6XtzwDQ2XAtcLRI9R1LizAZJ/+rle+wYDNLkao4UW2BY8rfB3Jq6K67EoAvmX/Pg2+1oSVRuDrsDTPolSZnInNJICJECvo8sWWZ0rY/YVQDeJ0NuAvPoHs0wIHeMRRl6k6qU3bTFIuay24mzzF1rUjLqptQDWbONuyn2r2JVxsHkrp2Y580OROZSwIRIZIUUbVYd0tdp7I51jukq/5aUJSJbMi6yty43VItJgNF2VOn38XiVpMgKxKyl9HV8BEAvmh6hMe3dyZVA+ILRel2BxMeJ8RckEBEiCQ19nnRNHCO7CZn9ACqwUJPzeUEIypvNA8CiYpUs6RIVUypMNtKtm3y3jPjWld+lqgxi3WGZs6LbuKJ7V1JXbuxb0y284qMJIGIEEloGvDSfaRtdsWRTqr9VZcRtebyVvMQwYhGidPKirL4ux/KpZOqSEJNwdR9RcK2QjqWfhyAO0yP8vfGfloHfQmvG1V19nZ7ZuQZhZhJEogIkUBE1Wgbir3RH1uk2lUfmyvz0pFlmYuWFWOIk/HIz7bE7bIqxLFKnbaEBc1tKz5FxJzDCkMH/2h4kwc3taMlUQMy4gvTPiQdV0VmkUBEiAQGxkJoR8Z2lLY9NVGkOlq4nsZ+L12jASxGA+ctmXyuDEClbNkVSVIUJWG31ajFRdvyTwFwh/kPdAy62dQynNT1Dw+M4Q1FT/o5hZgpEogIkcD4Tpnji1Q/fFyR6oa6/LgZD6vZkLBHhBDHqsjLwmScup6oY+nHCVvzqVH6uNr4Co9v7yKSxKA7TYM9Xe6ktv4KMRskEBFiChFVY8QfBsaLVPcfKVK9Ancgwtb2EQAuXhG/SLXMJUWqIjVGg0JVgqyIanbQsvJGAG41P4HP5+WF/X1JXd8bjNI8KI3ORGaQQESIKRy7LFPR9AhwtEj1tcYBVE2nocgRN5WuKFApvUPENFTl2TEapg5guxquJWgvo4RhPmp8gT/v7k26pXvbkJ8RX3gmHlWIkyKBiBBTGF+WMUa8lHQcLVJVNZ1XjsyVuWiKLbsF2VbppCqmxWIyUJZgp5VmtNK86mYA/tn8JwwRL0/v6knq+roOe7s9RJNYzhEinSQQESKOY5dlStufxhT148upZ7RwPTs7RxnxR8i2mlhfkxf3GhVSpCpOQk2+A0OCd+me2g/iy64lFw//x/gXXj44cLSuKYFgROVA79gMPKkQ0yeBiBBxHLssU97yKABd9VeDovDSwX4ALlhaiDnOXBmb2Uhh9uRdVoVIRpbFmHAHjW4w0bz6CwB8zvJncnQPj29LrskZxCb09icZuAiRDhKICBFH50isgVn26H5cw7vRDGZ6aq5gxB9mf0/sW2SiuTJSpCpOVl1hNlbz1G/VfVXvYSx3BQ7dz42mp9jaPkJjf/KZjn09Hum6KuaMBCJCTMLtj+AJxIr+ypv/AMBA+SVEbAVsbx8FoKHIQWGc2TEGg3RSFTPDaFBYVhK/Yy8AioHDq28D4AbzXylhmEe3dCY96C6q6uzrka6rYm5IICLEJDpGYt0nDdEgZW1/BI4sywBb22Jbdk+vjl8bUpxjw2qSIlUxM0qcNvLiDFMcN1R2ESOFZ2DRw9xmeYLmQd/E/1eTMewN0zkiXVfF7JNARIi3CUZU+sdia+ZFXc9jjngI2CsYLjmPsWCEQ0dS3lMFIrJlV8y05aU5TLnSpygcPvUOAK42vESt0sNj27pS2hVzuN+bVFM0IWaSBCJCvE3XaOBo75Dm3wPQXXclKAa2d4yi61Cdb4/bLTXbZiLXLkWqYmZlW00Jm5y5i9YzUHYRRjT+xfoYA97QxCykZERVnaYBaXQmZtesBCI/+9nPqK2txWazsWHDBjZt2jQbtxUiZZqm03WkSDVrrJX8gY3oKLFABNg2sSyTG/caiT4shJiu+kIHFtPUb9tNp8ZqRS7jDU5RWnl6Vze+FGbLdI0Ekm6KJsRMSHsg8sgjj3D77bdz1113sW3bNtauXcu73/1u+vv7031rIVLWNxYkHI2lQ8pbYkWqQ6UXELKX4Q9H2X+k58IZcXqHmIwKpU4pUhXpYTIaWFqSPeUx3tyV9FS/H4CvZT2KL6zy593JNTmDWKOzg9JbRMyitAciP/zhD/n0pz/NDTfcwKpVq7jnnnuw2+3cd9996b61ECnrGI5lQxQtQnnrE8DRItWdHW5UTafcZaPMNXkNSHluVsK23EKcjDJXFrl285THNK/+Appi4hxtOxuU/bx4oJ9Bbyjpe4z6I/S6pbeImB1pDUTC4TBbt27l0ksvPXpDg4FLL72UN99884TjQ6EQHo/nuB8hZsuxW3YLe17BGhwgZC1gsPwfACYG3J0+RSdVKVIVsyFR4Wogu5qu+msAuMv+KFFNS6nJGUBj/xiqTOgVsyCtgcjg4CCqqlJSUnLc6yUlJfT29p5w/N13343L5Zr4qaqqSufjCXGcjmO2LpY3xzqp9tR+EN1gJhhR2dvtBuCMOLtl8rMt2C2m9D+oWPRybGYqEgS9Las+j2q0sUo9wLsMW9nUOkzLoC/pe4QiWkrHCzFdGbVr5s4778Ttdk/8dHR0zPUjiUXi2C27lkAfhb2vANBddxWarvObt9qIqDrFOda4WQ/JhojZ1FCUjXmKwtVwVjHty64HYlkRIyr/+2ZrSttz24d9BMLScVWkV1oDkcLCQoxGI319fce93tfXR2lp6QnHW61WnE7ncT9CzIbOkaNbdstbn0DRNUYKz8DvrOfJ7V1sbBnGqChct6F60rbtNrORojhdVoVIB7PRwJLiqQtXW5d/mrAll4poBx+1vk7HSIA/7uhO+h6aBof6pHBVpFdaAxGLxcIZZ5zBiy++OPGapmm8+OKLnHPOOem8tRBJ0zSd7tFYkSq6TnnLYwB0111NMKLy132xQPr6c2s5pdw16TVkroyYC+UuG86s+IWrqiWHllWfB+CLlsexEeK5vb0pBRcDY6GUCl2FSFXal2Zuv/127r33Xn7961+zf/9+brzxRnw+HzfccEO6by1EUno9R7fs5g5sxu5tI2py0F/5bnZ2jhLVdEqcVs6uz5/0fJkrI+aKoigsL516Dk1nw0cI2CvIiQzwzeJX0YFfvd6S0pLLob4xNClcFWmS9kDkwx/+MN///vf5+te/zrp169ixYwfPPvvsCQWsQsyVjuGjRaoVLbEi1b6q96KaHWw50sBsfU1+3IyHzJURc8mVZabUFT8Q1o0Wmk69FYAP+R+lwRFiyBfmd5vbk76HP6TSNZ41FGKGzUqx6s0330xbWxuhUIiNGzeyYcOG2bitEAkFwipjwVjXSWN4jOLO54BY75BgRGV3Z2ynzHrZsisy2JLibAxTvJv3Vr+fsdwVmKNeflD2AooCbzQNpTQUr3nQl9LcGiGSlVG7ZoSYbZ5jWlmXtj+NUQ3idS7Bk7/26LLMFDtlZK6MyAQ2s5HqqUYLKAYa13wJgDXdv+e6ZbGXf/NWG6P+cFL3iEQ1WodkOq+YeRKIiEVtvIEZQPmRZZnuuqtAUSaWZc6ozYu7LCPZEJEpagocU27nHS45n+HiszFoET6v/Y7qfDveUJQH3mxF15Or/+gY9hOMyHZeMbMkEBGL2nhGJHv0AK6RPWgGMz01VxCMqOzpGl+WmbxI1WRU4rZ6F2K2mY0G6gsd8Q9QFBrXfBmA8o6n+PKaACaDwp4uDy8fSm5Cr6rpNA9IkzMxsyQQEYua50h9yPiAu4HyfyBiy2dn5+hEA7OqOFmPMpfMlRGZpSI3C7slfuH0WP5qemo+AMC5TT/mqtMrAHh0Sye9nuRmy/S4A3hTmOYrRCISiIhFyxuKoqo6ihqmtO1PAHTXXQnAK0e+IZ5VF3+3jCzLiExjMCgJm5wdXn07qsFC/sBGPuzay8qyHMKqxv97rZmolrgYVdehUZqciRkkgYhYtA73ewEo6n4BS3iUYFYJQyUX0D7s51CfF4MCFy4rmvTcHJsJh1XmyojMU+y0TTmdN+Qon2j9vmzXf/B/zq7EbjHSOuTnmV09Sd1jyBtm2JdckasQiUggIhalHneAwbFYt8jxTqo9tR8Cg5G/HegH4IyaPPLi7IgpdkoDM5G5lhZP3eSsdcVnCVvzcIy1sLrvj3x0Qw0Az+zuSXrQnWRFxEyRQEQsOqGoysHe2Juo1d9DQe/rAHTXfoixYIS3mocAuGRF/KZ7xTkyV0ZkLpfdTLEz/v9HVUsOzatuBqBh7084p9LCWbX5aDo8tKkdLYldNGPBKL3u5OpKhJiKBCJi0ekaCRBVY2+05a1PoKAzUnQWgZwaXmscJKrp1BTYaSiafAeC3WqUZRmR8RI1OetquBZfdi2W0DC1B37JNesrsZkNtAz6eLNpKKl7HO73Sut3cdIkEBGLji90pA+CrlF2ZFmmq+4qoprGSwdjyzKXrCiesqW7EJnObjFRkRu/yZluMHN4bazJWfWh+ynRB3n/mnIAHtvWiT+ceGdMMKLSNixNzsTJkUBELDrjWw/zBjZh93VMDLjb0T7KiD9Cjs3EmbWT9w4BKJki5S1EJqkrdGAyxt9iPlB+KSNFZ2JUQyzd/X0uWVFMidOKJxjl6SQLV5v6vTKHRpwUCUTEoqLrOoHI8b1Deqvfh2bK4sUjRaoXLivCbJz8r0aWxUiOLf6OBCEyicVkoLZg6iZnh9Z9FR2F0vanKRjZwbVnVgPw4v5+etzJBRj7uz10SzAipkkCEbGo9I+F0LTjB9x1111F25CPxn4vRkXhojhbdkGKVMX8U51vx2aeoslZ3qqJ/jnLtv87p5bnsKbSharrPLy5I+n27/t7JBgR0yOBiFg0wlGNvd2xtu2lHc9gVEN4nUvx5K+ZyIacUZM35RA7qQ8R843BoNBQPEVWBGg69XaiJgeukT2UtT3Jh9dXYTIo7O32sPPIBOpEdD0WjMgyjUiVBCJi0eh1BxlvHDm+LNNddyWeYJRNLcMAXLKyOO75NrMR1xSNooTIVGWuLHJs8Xd6hW2FtKz6PABLdv2Q8iyVd66KbV9/ZHMHETVxx1U4EozIMo1IkQQiYtHoPrLe7XAfwjW8C00x0VNzOa82DhDVdGoL7HGHhhkMcEq5czYfV4gZtaLUSZyNYAC0L/0E/uxqrMF+ag/8kn88tYzcLDMD3hDP7+tL6V4Hej24j5lsLTJXskFmOkkgIhYFTzCC920D7gbLLyZgyePlg7G5MpesLIm7ZfeUchd5jvhLNkJkOpfdTM0Uhau60ULj2q8AUH3wV+SGe7jqjEoAnt7dk1JLd02D3Z1uwtG5/5ATU5NARIhZMp4qVtQwZW1/jL1WdxXb2kYZDURw2kysr8mb9Fyb2UiJtHQXC0B9oWPKJZqB8ksZLj4boxZm6c7vsaEun4YiB+GoxmPbOlO6VzCisqfbnXSxq5gbkejc//eRQEQseKqmT7SiLux5CUtohJCtmKHSC3jxQCzlPNWW3alaZQsxnxgMCqsrXBgNcdZoFIWD676Kphgp6XyOgv43+MhZ1SjAxpZhmge8Kd1v2BumY1jqRTJZSFXn+hEkEBELX/9Y8GhL9yOdVLtrr2DQr9I04Jtyyi5AieyUEQuIw2piSXF23N/7cpfTueQ6AJZv+xa1uWbOaSgA4A/bOlPOcDQPeglF5/7DTkwuokpGRIi0G1+Wsfp7Kex9FYCeuitpGYpNGa3Ms8fdsis7ZcRCVJVvJz87fs1T8ym3ELIW4Bhrobrx11yxrgKzUeFQnzfp7bzjoqrO4f7UMili9kQyoI5HAhGxoPnDUUZ8ser9srYnUXSNkcIz8OfUTYw7r4uzUwZkWUYsXKvKnHHbv0ctzok5NHX7fkaZMsylK2PbeR/b1oma4qC7ntEgo/7ki13F7JFiVSHSrHv0yJhyXT+6LFN3FQBtQ7FhXbUF8QeDybKMWKhsZiMrSuNvSe+puYLRgtMxRf0s3fld3rO6lGyriR53kL8fHkz5ftvaRzjcP0Y0Az74xFGyNCNEGum6PjErI3dwC3Zv25EBd5eh6/pEIBJvS6Msy4iFrtRlo9QVJ9hWDBw4/evoioHSjj9TMbqF960pA+CPO7sJRVKr+9A0aB3080bTEF2jAdlNkwEiqoaWAf8dJBARC9agN0woEvv2NZ4N6at6D6rZQY87SCCiYjIolOdO/kYsU3bFYrC8NAerefKPAm/eKjob/il23LZvcvGSXIqyrbgDEf6aYpOzceGoxv5uD5tahmW5Zo4FUwwm00UCEbFgjRepGiNeSjr+Enut7ip0XefRrbGeCMtKcjAZTvxroCixIlYhFjqz0cCqsvhLNE2rbyVszSfb00T94V/zodMrAHh2b+9JdU8dC0bZ0jrC7k53xnwgLiZ9niDb2kfn+jEACUTEAhWKqgx6QwCUdPwZoxrAl1OHu+A03moeZneXG5NB4dozqyY9vzDbSpYl/sRSIRaSgmwrVfmTB95Ri4vGtV8GoH7ff3NBgZfaAjuhqMZTO7tP+t59niBvNg3RNOBNuQhWpC4c1djd6WZ3pzsjdsyABCJigep1Bxlf+jy2SNUdjPK7ze0AvH9tOeW5WZOeH+9NWYiFaklxNnbr5MF3T80HYx1X1SArt32Da460fn+1cWCiWeDJUDWdlgEfbzQNTtR1iZMXiqr0jwVp7BtjS+swrzUO8FrjAH2ek/9vNpMkEBEL0vgocrvnMLlD29EUIz01l/Na4wD+sEp1vp13n1Iy6bkOq4l8mSsjFhmjQYm/i0ZR2H/Gt1ANFgr6XueC0Cusq8xF0+Gx7am1fp9KKKKxt8vD5tZhGZp3EgbGQrxxeJDXDg2yq8NN25CfUX+EUEQjA2pTTyCBiFhwRv1h/KHYmvN4NmSo7ELCWcV0jsQClA11+ZPWhgBU5U+eJRFioct3WOL2zgnk1NK66vMALNvxHa49NRtFge3toxzqG5vR53D7I2xuGWZPl9SPpKrHHWBX5yj+8Pz5c5NARCw449kQRYtQ1vokcLR3SM+RNHJZnC2LJqNCmUsCEbF4LSvJiTuLpnX5p/A6l2ANDXFB60+5YEkhAP/zchMdI/4Zf5Zed6x+pGXQhyb1Iwm1D/nZ2+XJyKzHVCQQEQuKqun0j8WKVAt7XsYaGiJkK2Sw7EKCEXUiSIlXG1KRmxV/IJgQi4DNbKQ6TpM/3Whh/xnfAqCi5VE+U9NLXaEDbyjKD/56iM40BCOqptPU7+XN5qGMq23IJIf7x2Y8MzVbJBARC8qgN4Q6PuCu+Q9ArNBON5j5rxcbJ46brAZEUaRIVQiA2gIHNvPkhavuovV01n8YgNN23sUdF1dRW2DHG4ry/b8eomskPcWmgbDK7k43W9uG8QSlfmScruvs6/bQOjjzQeBskUBELCjjSy+WQB+Fva8A0F33IfzhKI1HBm+ZDAoG5cSsR2G2Ne6brxCLidGgsLQk/oTew2u+RMhWjGOshdWH/ofbLl1GzXgw8vzBtAUjACO+WP3Ivm7Pop/qq2k6u7vcEz2T5isJRMSCEY5qDPtiyzLlrU+g6BqjhafjdzawqWV44ri73r9q0vOrJRsixIQSp428OLvHohYn+9f/GwA1h+6jzLuH2y9dRnW+nbFglP/868G0fjjqeqxh4RtNQ7QNLZ76kWP/PaOqxvaOUfo9oTl8opkhgYhYMPrHgmgaxw2466q7GoDXjwzpumZ95aTFqNk2U9w3XSEWq2UlsZ0xkxksv5jumitQdI1TNn2FHGOUO955NDPys5cO4w9H0/p8qqrT2OflreYh+scWfv3IwJEmjeGoxrb2UUZ8J9cif9gXZmvbCE0D3pl4vGmTQEQsGOONld4+4K5rJEDrkB+jonBOfcGk50ptiBAnyrGZqciLv4vs0GlfnViiqd/7ExxWE7despR8u4W+sRAPvNE6CVZ8IgAAIABJREFUK8Pt/GGVXR1utrWP4A2lN/iZSz3uIMGIypa2YTwz0GdlT7ebu/60l+88s38Gnm76JBARC0IgrDLqj/3FLG9+FIC+qveimh28dngAgLVVLnJsJ07TNZsMlDnjTCAVYpFrKMrGbJr8oyJqcbF/fWwXTc2h+3AO7SDHZuZzF9VjNChsax/l+f3TG443HcPeMBubhzjQ6yGcIe3LZ4qu63gCETa3Dk/0STpZ3mAsaJvrBo4SiIgFoffItj5jeIySzmeBWO+QiKrxVnOsPuT8Iz0P3q4i14ZBtuwKMSmz0UB9oSPu7wfL/4GemssnlmgM0SD1hdlcuz42x+kPWztpHfLN1uOi69A5HOCNpkHah/yzkpGZDboeW5IZnyg+E8ZCCzwQaW1t5ZOf/CR1dXVkZWXR0NDAXXfdRTgsY5/FzBufT1Ha8QxGNYjX2YC7YB07OkbxhqLk2c2sLnedcJ5M2RUiscq8LLJtpri/P3ja1yaWaJbs/gEAFy0vYn1NHpoOD21sR5vlgCCq6hzqG+PN5qGJAZjzWVid+QzPeEZkruvj0haIHDhwAE3T+MUvfsHevXv50Y9+xD333MO//uu/puuWYpHyBCPHtHSP9Q7prrsKFIXXG2NFquc1FE6a9XBYTbJlV4gEFEVhSXH87bxRi4t9Z/47ANWNv6ag51UUJTbd2moy0Dzo482modl63OP4Qyo72kfZ3j6Cbx7Vj2iazpA3xOH+MTY2D028l82ksVCEcwx7Kcia28WRtN39sssu4/777+dd73oX9fX1fOADH+CLX/wijz/+eLpuKRap8SLV7NEDuIZ3oRnM9NRcwZA3xL4eDwDnxVmWcU5SMyKEOFFhtnXKb85DZRfRseSjAKza/C+Yg0Pk2i28f005AH/Y1jnxDXwuDHnDbGwZonmOd4hMZSwYoW3Ix7b2EV45NMD29lFaB/2MpenP7XTvqzxo/g4Xbb8NonO3WjGrYZDb7SY/Pz/u70OhEB6P57gfIaai6/pE2+fxbMhA+SVEbAX8vWkIHfj/7N13fFvlvfjxz9GWbEnee9tZdrZDnAQogQYCLZQAhQ6gDeWySgctF5pAW0rHTS/NLW2hv1va3kJ7bweFFii0QNgEyN52YieO7XhvW7Yly1rn94cdZ1mOlzy/79dLrzjS0TnPsSydr57n+3yfuQlWYq0DL+RlMwfvbhZCnGmwImcAxxY+SJdtFkZ3M7m7HgJVZc28OBJsJjrdPr7zj0I+ONY87sM0JwUCUNbk5EBVO74QDHUMl9vrp7a9m8IaB+8fbWJHWSvHGrpo7fLgD3FtFHvzHh7ueRyNooI9GbQT96Vs3AKR0tJSnnjiCe66666g22zatAm73d5/S01NHa/miSlIVVWaOnvo8QbQ+HtIPPESADVZNxIIqP21Qy4O0hsCYDNLj4gQQ2Uz6UkIsmAkQEBnonDFf+HXGIite4eU439Cp9Vw58VZxFuNdLp9PLOtgh/+8wjHJnBdlKbOHnZWtIa8zsnZfP4ATZ09lNR38tHxZj441szh2g7qHe5xneVj6TjOog/uwYiXLf58nJdtImjBmHEw7EBkw4YNKIoy6K24uPiM59TU1HDllVdy4403cscddwTd98aNG3E4HP23qqqq4Z+RmDFanR6ON/Vm48dWb0HvcdBtSaI1bhVH6jtodXqwGLQsSYsc8PkaDYQbpEdEiOHIjg1HM8iVoytiLqULHwBg1oEfE+Y4Rlq0hUc/lceN+SmY9VoqW1385+sl/Pr9MlomKJHU1eNnZ3krTZ2hO76qqjhcXsqauthd0cp7R5s4UNVOVatrzKbgDpehu4klW+/A4GlnXyCHr3m/QpRtYlccH/an8P3338/69esH3SYrK6v/59raWi699FJWrVrFr3/960GfZzQaMRoH7kIX4mx1Dnd/8llyeW/tkNrMG0CjZWtfYldBZhSGIDUQ7GaDTNsVYpjMBi0pkRYqW4IvslY161ai698npn4r87d/k10ffw6dzsTavARWZkXz4v4ath5rZmdFK/ur2lmbF8+V8xMw6sY3cdznVzlY3U5alIX06LCgnxXD4fL4aOny0Or00Oby4PNPnunDWm8Xiz+4E7Ozmk5LGre3/js+jQmrcWK/kA376LGxscTGxg5p25qaGi699FLy8/N5+umn0QwWRgsxDP6A2v9Nxtx5gqjG7ago1GZ+mi63j/1V7QBcnDPw36pG05s7IoQYvsyYMGrbu4NfZBUNhy/4MSu2XIPVUcLcvd/j8AW93f82s54vrMxg9ew4/rK7kqMNXbx8sI4PS1v4dH4KF2REoozjMIGqwokWF9Xt3aRGWoi06PH4e+t1JNhNGLSaQb+wuL1+HN3e/uDD7Z2cC/Epfg8Ltn0dW1sR3fpIvq77Nq2EE2XWj+vveyAhC4NqampYvXo16enpbN68maampv7HEhISQnVYMUM0drr7k7mS+npDWhIupseSyPYjDfgCKmlRFtKiB64RkhkTTtgEfwsQYqrSazVkRIdR2hh8BorHHMuhFY+z9P3bSKr4O+0xS6nNuqn/8bRoCw9cMYc9J9r4655qWp0efr21jLeLw/ns8lQyooMXUQsFv1+lotlJxWn3nex1Neo1mPVaTHotZoMWjy+As8dHV49vUvV4nC2gqrR0eahv7+LSww8T49iKWzHyua5vsL8zHK1G4YalyRPdzNAFIm+88QalpaWUlpaSkpJyxmPTpdKdmDh1fVN2lYCXpIoXgN4kVVVV+4dlgiWpWk06MoIEKEKIoUmLslDd1j1oD0Bb/EqOz7+PnEM/Zc7e79MZmUdnZF7/44qisCwjioUpEbx+uJ5XC+spberiR/88woU5MVy3JBn7BCaUnxz67fGerGg6+vVdQs0XCPDKgToO1jh6k2D9fn6o+x2LdW/jUbXc6bmP/WoOy9IjuWFpCgtSzi30ON5CNlayfv16VFUd8CbEaLi9/v5VJ2Pq3sPobqLHGE1z4qWUtzipae9Gr1UoyBp4qniC3TThXZFCTHUajUJ23Pl7LSrm3klT0mVoAx4WfvRVdD3t52xj0Gm4ZmESP7x2PgWZUaj0rpj98IuHeK2wHu8kmGo7Fbi9fp58p5RXDtVR2erC4w/wgP45btG9RQCFX0V9CyVnDRuvmsvdl2QHLWsw3iRpQ0w5DR1uTsazJxe4q8u4DlVr4MPS3uqNS9MisQSZERPsfiHE8CTYTIOWfgdA0VC0/D9xhaVgdlaTt/NBUAcOLKLCDNxxcRYbrpxLRrQFtzfA83ur+e4/ithf1S5fZAfh6Pbyky0lFNZ0YNBq+OLKdP62aC/3al8EoCT/UXIvX8+tK9LJjh28Hsx4k0BETDknh2WMrnpi6t8DoDbrRrz+ALsqBl/gDiBcckOEGBOKopCXZEOnHbyH0Wewc2jVk331Rd4lq+jJQbfPiQvnoU/M47YLM7Cb9TR19vDkO6U8/uYxatq7x/IUpoWGDjc/frWYEy0uwo06/v2K2XxG+w75JZsBKF3wTWqyPzvBrQxOAhExpXS6vf1lopPK/4aiBmiLWYbLmklhjQOXx0+EWc+c+IFnxGg1Cia9/NkLMVasJj1L0yPPG4x0RuZSnP8oAFmHnyS+8pVBt9coChdmx/CjdfO5an4COo3C4boOHn25iD/tqKRrCq0bE0plzV1serWYpq4eYsONbLxqLhd2bWHe7u8AUDHndirmBi8kOhnIJ7KYUk6uK0PA3z9bpib7MwBsL+vtDVmeGRV0ul1mTJjkhwgxxmwmPUvSzh+M1GXeQMWc2wHI3bkBe/O+8+7bpNdyw9IUvn9tHkvSIgio8HZJIw+/cIi3ixtDXgp9MjtY3c7mLUfp6vGRHm1hw1VzWdT2Orm7NqKgUpVzC6ULH5zQqqlDIYGImDJUVaW+b12Z6IYPMLtq8RrsNKZcicvj40B1bxLciqzoAZ9vMWrJiBnfKYFCzBR289CCkdIF/05T0sfRBjws+vAeTM7qIe0/zmri3tU53H/5bJIjzDg9fv60s5JHXynicO30X5fM7fXz0v6a/vpJ7x9r4sl3SvH4AsxPsvHAFXOY3fQ6eTu/hYJKdfbnKFnynUkfhIAEImIKaXV6+qbQQXLZswDUpV9HQGtk74l2fAGVJLuJ1MiByxUn2Se2jLEQ092QghGNlsKCzXRGzMPQ08rirXeh9Q59Rdx5iTa+e3UuNy9PI8ygpbbdzU/fPMqT75TS2Okeg7OYnH75TikvH6zjfz4o5x8HavnDthMEVFiVHc1XLsshrX4LeTseQFED1GTeSPHSR6ZEEAISiIgppKy5d10ZQ3cDMbXvAFDTVyBpe3nvbJkVWdEDDr0oCoMu1iWEGBt2s55FKRGDXgP9+jD2X/QUPaY4wjuOsWDb11ECQ6/RodUoXDo3jh9dt4CPz41Do8D+qna++1IRz++pnrTVTUfjSH3vIoGlTV3840AtAFcvSOS2VRmkVL3M/O3fRKP6qc24niPLfgDK1Lm8T52WihmtqbMHh6v3gyq5/G9oVD9tMfk47Tm0Oj2U9L1JCzIHrh0SHW7EpB/fdSyEmKkiwwznnSLaY0lg/0X/jV9rIqZ+K3k7vwWB4QUQ4UYdn1uexveuySMv0YYvoPJaUT0Pv1jIh6XNBKbJdN+eswIrRYFbCtJYtySZlON/IW/Hg31ByHUcXvajKRWEgAQiYoo43tTXdRvw99cOOTkdbWd5KyowKy6c6PCBC/QkRUhviBDjKSMm7LwFszqjFnBw1S8IKDoSKl9h7t5HYQTBQ1KEmfvWzOKrl+UQZzXi6Pby9EcV/Me/jgxahn6q8J/2O1GAL1+Szeo5caQX/5Z5ex/pT0w9fMEm0Ey9L1wSiIhJr97h7p+y25ukWtObpJq8FoAdpw3LDMSg0xAbJEARQoRObpINs2HwC2NL4mqKCn6CikJK2V/IObh5RMGIoigsSong+5/K48b8FEx6DRUtLn78WjG/2VpGa1815qmo3XVq2Op71+SxJDWCrEM/Y9bBxwAon3tXX2Lq8C/p50suHg9S2UlMaqqqUtZ06hvNqSTVdQR0Jmrauqlq60arUchPjxxwH0kRUtJdiImg12qYHW/lQNW5Zd1P15D2SbQ+J7m7v01GyW/w6cOpyL1nRMfUaTWszUtgRVY0L+6r4YPSZnaUt7Kvqp2r8hK4Ii8eo25y9xq4vX5KGjopqu3gcF1Hf9kCrUYhyapjzt5HST3+JwCOLbifE/NGXifEoJ34/ggJRMSk1tjZg8vTOz56ZpJqX+2Qvt6QBUn2oBVTE2W2jBATJtZqJMZqpLlv2mkwtVk3ofN2MfvAj8kpfJyA1kTlnNtGfFy7Wc8XV2Wwek4sf9lVxbHGLl46UMsHpc3c9bEssiZRmfNAQKWi1cnhvsDjeKPzzOEYBTKjw1iTHcaSbV8mpu49VBRKlnyH6lm3jOrYeglEhBhcRd9MGYCk8r+fkaTq7PHx5pEGAFYEWeAuwqInTEq6CzGhZseH0+rsIXCetesq53wJnbeTrMO/ZPaBTWh9Tspz7x3VNNT06DAeXDuHXRVtPL+3mhanh8deL+GWFemDLgURas1dPf09HkfqOvq/cJ0UE24gL8lObqKNuQlWIgMtLN56F7b2w/i1RgoLNtOUsnbU7TDoJBARIqiWrh46+3JDCPhJLvsr0NsbElBVvv7s/v5tF6ZEDLiPpAjpDRFiolkMOuYl2iip78TnHzz/oyzva6gaPdmFPyO76BfovB0cW7RxVMGIoigsz4xiQbKd331Yzr6qdp75qIITLU4+c0EqOk3oL8Yuj4+S+k4O13VQVNtB41k9RGa9lrmJVvISbeQm2YiznkqwD2svYckHd2Jy1eExRrH/oqfoiF40Ju2SHhEhBlHRcqo3JLr+/VNJqilXcrShs/+xOKtxwKheq1WIt8lsGSEmg0S7megwI8ebuqht7w6ej6oolOd+GZ8unDn7f0j60WfQebs4kv+DUc8IMRu03LM6m38erOOlA7W8U9JETXs3d38sG5tZP6p9n80fUClvdvYFHg7Km52cXo1eo0BWTDh5Sb2BR0Z0GNoBlqaIrd5C3s5vofM5cVoz2X/xb+gOTxuzdkqPiBBBOFxe2pynMsVTjv8ZgNqM6wnoTGwvq+9/7JaC9AH3EW81DfjGFkJMDINOw7xEGymRZo42dJ7xHj9b1ewv4DOEk7vrIZLLn0fn7aJo+WMEdKP7cqFRFK5ZlERqlIXfflDG0YYufvDPw9yYn8qy9Mig61Sdj6qqNHb2cLiug8O1HRTXd9J9Vv2PeKuR3CQbuYk25iRYsRiCX4KVgI/swsfJKP4NAG2xyzmw6kl8xoF7f0dKL7NmhBhYdbur/2dTVxUxde/13p/9OTy+AHtOtAHwhZXp5CbZBtxHsgzLCDEpWU168tOjaOhwc6yhK2gl1LqM6/Hpwliw/ZvEV7+GyVnNwQv/Hz2WhFG3YXFqBA9/Yh5PvlNKQ0cPv95axisHTVyQGYWzx0eby0u7y8ON+anEhBuwm/VnzL7zBQI0dPRQ3eqipKF3yKW568wpwhaDltzE3sAjN8lGzBDLCOjdLSzY/g2iGrcDcGL2bZQu/HdUzdj22oDMmhFiQIGA2r+wE/RO2VVQaYlfRbc1g/3lrXR7/USFGYImm4UZddgtY/+mFUKMnXibiZhwIydanJxocQ24km5Tylr2fex/WPDR17C3FbL8zes5uOpJHDFLR338RLuZ73wylzePNLDlcAO1Djcv7a89Y5sfv1YM9PYcRIcbiQ4z4Oj2Uudwn9NerUYhOzaM3EQbeUl20qMsw+5hsTfvYcG2+zB1N+DTWTh8wX/QmPqJ0Z1oEDqtMilKG0ggIiadVpenP6FN8XtILn8egOrszwOwvexkAbMoNEHeRNIbIsTUoNUoZMWGkxRhprSxq79mxuna4lawc83fWPThl7E6Ssh/91aKlz5Cbd9aU6Nh0mu5emESl82N452SJuodbuxmPa8VnRr+VRTw+lXqHe4z2mfSa0iOMJMRHUZeko3Z8dYRLyWh+D1kF/2c9JL/QVEDOK1ZHLjwSVy2nFGfYzBW0+QIASZHK4Q4TUPHqTd6XM0WDD2tuM3xNCddRqfbS2GtA4CVQSqpajSywJ0QU41Jr2V+sp2USDMl9Z2nZsz1cYensvuyv5C7awPx1a+Tu/vb2Fv2c3TxQ/j1o68JYjHo+OSCxP7/z4oPp7Gjh4/PiyOgqrQ6PTR3emh1egg36UiJNBMdZhiTHoXwtsPk7fwWVkcJALUZ11Gy5Dtjcl4nKcqpgrXR4QbSoixBl8QYbxKIiEnl7GGZlNLe6oE1WTehanTsLG8goEJGtCVoobLYcNOkyAQXQgxfhMXA8swoah1ujjd24fGdKj7i14dxaOXP6Tr832QX/Zzk8ueJatxO0QU/pj1u+Zi2Y9FpJQE0ikKc1XTGlNqxoPg9pJf8D1mHn0QT8OIxRnFk2Q9oSr58VPu1mfWkRpkxaDUY9VoMWg0GnQafP0BAnRwzZU4ngYiYVE4flglrLyGyeTcBRUtt5o0AbCsbfF0ZgERZ4E6IKU1RFJIjzMRbjZQ3O6lqc50qhqZoKM+7l/bYZeTu3IDZWc2yd2+hctZ6Shd8c9SzasZLdN27zN6/ibDOcgAaky/nSP738ZqCf7YNRazVyPxk+4AzBnWTIDF1IJOzVWLGauw4rTekb8puU/IaeiwJ1DvcVLS40CiwPGPgSqoGnYboMMO4tFUIEVo6rYZZ8VZWZEUTHX7m+7otroDta1+mui9PJO3YMxS8cS3Rde+OaNG88WLpLGfx1jtYsvVOwjrL6THFUFiwmYOrnhx1EJIWbWFhysBByGQmPSJi0vD6A/35IVqvk8QTLwG9U3bhVG9IXpI9aPGheJsscCfEdGMx6FiSFklzVw9HGzpx9fRO9/Xrwyle9kOakteQu+vbhHWWs2TrnbTGreDYwgfojFowwS0/xeisJaPktySXPYsm4CWg0VM564uU53551LkgigKz462kRlnGqLXjSwIRMWlUt3X3T4dLqHy5v5JgW9xKAqrKjr4F7oIlqYIkqQoxncWEG4myGKhu66asuat/GLclcTXbrvwXGUd+ReqxPxDVuJ2CN2+gPu1qjud9jW5rxoS1OcxRSnrxr0mofAWN2puA25S4mmOLN+KyZo56/1qtwvwkO7HWyZF4OhISiIhJIRBQqWrtK2KmqqQe+1+grzdEUTha31ssyKTXsCjVPuA+LAYt9jEu0yyEmFw0GoW0aAsJdhOljV3UOXrLxfsMNkoXPUh1zs1kF/6MxBMvkVD5CgmVr9CccDHV2Z+nOXH1qMvED4Xi9xDd8AFJZc8RV/tW//0tcSupmHc3bfErx+Q4Rr2GxakRWE1T+3NPAhExKdR1uPuz4yObdhDecQyfzkJtxg2oqso/DvQWGSrIjMaoG/iDJF56Q4SYMQw6DblJNlKizByt76Td1Vsu3h2WTFHBT6icfRtZhT8jpu49Yuq3ElO/lW5LErVZN9GYvAanbdaoFtI7h6pib9lHwol/EF/1Lwye9v6HGpMvp2LeXXRELRzVIcwGLd19q/SGm3QsTo0Ycd2SyUQCETEpnDhtgbuTvSF16evwG6wcrnVwtKELnUY5Y57/2RIlEBFixrGZ9CzLOLdcfGdkLgcu/jXmrkqSjz9LUvlzmF21vav6Fv4MtzmeloSLaUm4mPaYpXhMccMKTJSAj/D2YiKa9xDRvJuI5j0Y3c39j/eYYmhIvZrq7JvGrChZot1EWZOT6HADC5Ltk3YWzHBJICImXGOnuz/5zOSsIbavK7M65xZUVeXv+2oAWD0nlqggM2JsZv2gC0gJIaa3YOXiu8PTKF30AGXzv0Z81b+Ir3yFyKadmLobSC5/vr9ys09noTs8Hac1g+6wVAJaE6qiRdXoUBUdWl8XJlcdJlc9xu46zM5atP7uM9rg01loTL6C+vRP0Ra3AlUztp9J0WFGPP4Ac+Kt0yopXz65xYSrbDm1wF1K6Z9Q1AAtcStx2nPYe6KNEy0ujDoNn5gvvSFCiOBOLxd/rKHrjCrNAa2RuozrqMu4Do3PTUTzbqLrtxJd/wGWzjJ0PhfW9iNY248M+XhevRVHzFLaY/Jpi1lGZ9QCAtrQJI0qCtjMOuyWgRf5nMokEBETytHt7R/b1fjcJJU/B0D1rFsJnJYbsmZefNApu4oCcbapmzEuhBhbJr2WBSl2Ul0Dl4sP6Ey0JlxEa8JFHKM3udTsrMbSVYGlswKTswZNwIui+lBUP0rAT0BrxG1JxG1JpMeSgNuShCssbVySX6H3c2469YKcTgIRMaFOzw1JqHwZg6ed7rAUmhIv5VCNg5r2bkx6DVfkxgfdR1SYIWgCqxBi5jq9XHxpYxfe08rFn07VGnDZsnDZssa5heen0YDdbCAmfPoWapRAREyYbo//1Loyqkpq6ckpu58HjZZXD/WufnnJ7FjCjMH/VKV2iBAimJPl4uP6ysVXn14ufpKyGLW9NVPCDERaDFOuUupwSSAiJkxlq6u/EnNE826s7cX4tSZqMj/N0YZOSpt6Z8pcPi94b4hWo4z5QlRCiOlHr9UwO95KvNXEwZp2eryTJxrR6zREWQxEhRuIDjNMiym5wyGBiJgQXn+A2vZTGeepx/4PgLr0T+EzRvBq4TEAVmVHE2EZuEtSq1FIiTRP+28LQoixY7fouSAjikM1Dhx9+WnjrXe4RU9UWG+vh82km7b5H0MhgYiYEKeXcze66oit2QJAVc6tVLW5OFTjQFFgbV5C0H3EWo2kRU/NtRWEEBPHpNeSnxZJcX3nGV+IQsli0BLdP9yinzY1QMaCBCJi3Hl8gVPl3IHUY39Ao/ppjS3AGTGHd7efACA/LZJ4W/Bhl0S7SZJUhRAjotEo5CbZsJp0HGvsHPO8EZ1WISrMQHS4cUYOtwyHBCJiXLm9frYdb+nvDdF6u0gpexaAyjlfIhBQ2VvZBsBFOTFB92PUa4IWNxNCiKFKjbIQGWagrKmLxo6eEe9HUU4OtxiIDjNiM8/s4ZbhkEBEjKvSxq7+IAQgqfxv6LxdOK2ZNCdewtGG3jn/YQYtcxOtQfeTYDPJm1wIMSbCjToWpkTQ6fbS5vRi1Gsw6jSUNzvRahS6PX66vf7+1X6hd62bcJMOq1GH3aInymKQ4ZYRGpdApKenh4KCAg4cOMC+fftYvHjxeBxWTDKObi/1jlOVDgn4STv2ewAqZ98GioY9J3p7Q5akRaLTBH9Ty5RdIcRYs5r0Z6xkOz9Zh/604MLnD9Dt9WPUaTHoJOgYK+Pym3zwwQdJSkoaj0OJSexYQ+cZ/4+reQOzsxqPIYK69Gv7hmV6V6zMT48Mup9wk27KL3sthJj89Gf1cOi0GqwmvQQhYyzkv81XX32VLVu2sHnz5lAfSkxiDR3u/lLuJ6UdfRqA6pybCejMlDZ14ej2YjFomZcQfFhG1pURQojpI6RDMw0NDdxxxx28+OKLWCznn2bZ09NDT8+pZKGOjo5QNk+Mk0BApbSx64z77M37iGjZR0Cj762kCuyu6B2WWZwaEXSsVVEYdCaNEEKIqSVkPSKqqrJ+/Xruvvtuli1bNqTnbNq0Cbvd3n9LTU0NVfPEOKpsddHt8Z9xX9rRZwCoT/sUHnNs72yashYALsiICrqvCItMgxNCiOlk2IHIhg0bUBRl0FtxcTFPPPEEnZ2dbNy4ccj73rhxIw6Ho/9WVVU13OaJScbjC1B+2sJ2AKauKuJqXgfgxOz1AGw91ky310+CzUReUvBlrmVYRgghppdhD83cf//9rF+/ftBtsrKyePvtt9m2bRtG45nLsy9btoybb76Z3//+9+c8z2g0nrO9mNqON3XhP23KG0DasT+gqAFa4i/CGTEHf0DljSMNAFyRG48myLTc3nVl5O9DCCGmk2EHIrGxscTGxp53u1/84hf88Ic/7P9/bW0ta9fkIS5oAAAgAElEQVSu5dlnn6WgoGC4hxVTUFeP75zyyfqeVpLL/grAiTlfAmDPiTZanR6sJh0rs6OD7i/eZpJ5+kIIMc2ELFk1LS3tjP+Hh4cDkJ2dTUpKSqgOKyaRYw2d/avrnpR67H/R+rvpiMyjNf5CVFXltaJ6AC6bG3fOdLmTNBrIjAkLdZOFEEKMM/l6KUKipauHli7PGfdpvV2klvauslsx905QFEoaOqlsdWHQalg9O3hPW1KEGbNBklSFEGK6GbcS7xkZGahnfz0W09axs6brAiSX/RW9x4HTmklj8hUAbCnqzQ25MCc6aJEyrUYhI1p6Q4QQYjqSHhEx5uodbrrcvjPuU/we0o7+DoATc/4NNFpq27s5WONAAdbMiw+6v5RIs0zZFUKIaUoCETGmVFWlrOnc3pDEEy9i6m7EbY6nLv1aALYc7u0NWZIWEbRImVajkC69IUIIMW1JICLGVE17N66zipcR8JNe/FsAKmd/CVVrwNHtZXtfAbO1eQlB95cUYZZ1HYQQYhqTT3gxZgIBlfJm5zn3x9VsIayrAo8hgpqsmwB4u7gRX0AlOzaM7NjwAfenKJAeff6lAYQQQkxdEoiIMVPV5qLHGzjzTlUl48hTAFTn3IJfH0aP1887JY3A4L0h8TaT5IYIIcQ0J4GIGBM+f4CKFtc590fXv4et/TB+rZmqWbcC8OHxFlweP3FWI4tTIoLuM0PqhgghxLQ3MwORjjp4/WHY+ZuJbsm0cbzJidd3bm9IVuEvAKjKuRmvMZLjTV38aWclAJfnxqPRDFzOPcZqJNw4brPLhRBCTJCZGYiUvgnbnoT3N4OvZ6JbM+VVtbqoaj23NySm7h3sbYX4dBZOzPk3Ot1efvbmMQCsJh2rBinnnhQhi9sJIcRMMDMDkYWfAVsydNXD/j9NdGumtKbOHo42dJ77gKqSVfQEANU5N+M1RfHygTq6vX6sJh0PXDEHo27g/A+tViEmTBa3E0KImWBmBiI6A6z6au/PH/4c/L7BtxcD6nB7KaxxnLOeDEBs7VvY2orw6cI4Med26hzdvHu0N0H1zouzSIowB91vbLgx6JCNEEKI6WVmBiIAS78A5ihoK4fDL050a6Ycrz/Agap2/IEBohA1QFZRX27IrFvxGqN4fk81ARUWp0QwL9E26L7jrNIbIoQQM8XMDUQMYbDint6fP3icgb7Wd/X4ZH2cIEobu86dqtsntuYNrO3Fvb0hs7/EkboODlQ70CoKn84ffOVlrUYhOlwCESGEmClmbiACsPwOMIRDQyEc2wJAj89PSX0nH5Y2s/14C1Wt3RPcyMnH4fJS2x7k96IGyCp6EoDKWV/Eo7fz191VAFwyJ5YE++BJqDHhRrQyLCOEEDPGzA5EzJGw7Eu9P2/9KQDHGrqoanXR3Vem/HhzF26vP9geZhxVVTlS3zFgXghAXPUWrI4SfPpwKufcxkdlLVS1dWMxaPnUwqTz7j/eJr0hQggxk8zsQARg5b2gNULVdjpL3qPe4T7jYb9fpXSAJe1nqqrW7nNW1j1JCfjIKvo50Nsb0qWE88K+GgCuXphIuGnwuiAmvZZYyQ8RQogZRQIRawIs/jwA/vf+a8BN6h1uWp2e8WzVpOT2+jneHDwoSyz/G+Edx/EYIjgx+0u8XlSPo9tLbLiRS+fEnXf/aVEWFEWGZYQQYiaRQATgwq+hKhoiat/D2lY04CbF9R0EBpohMkN4fAEOVjvw+wf+HWh8LrL7ZsqU595Ls8/I60UNAHw6PwW9dvA/NZ1WkSJmQggxA0kgAhCVRXvWtQBkFf58wE1cPX4qB6geOhN0e/zsrmilo9sbdJv0kqcxuptwhaVSnf05XthXg8cfYFZcOEvTgq8nc1JyhBndeYIVIYQQ04988vdpXHofAUVLbN272Jv3DLhNebNzxiWudrq97KpoxeUJft4GdzPpJb8F4PiCb1LR7mXb8RYAblqWet7hFo0GUqMsY9doIYQQU4YEIn089kxqM28AIOfQTwesK+IPqJTUD1DOfJpqdXrYfaINz9mL2Z0ls+hJdD4njsj5NKRexd/21qACBZlRZA5hBd04qwmTfuBy70IIIaY3CUROU557L36NgcimXUQ1fDjgNk2dPTR3Tf+F8ho63OyvaguaE3KSpbOc5LK/AlC66EGKG7o4XNeBVqNw3ZLkIR0rPVp6Q4QQYqaSQOQ0PZZEqnN6Z9AE6xUBKKnvnNaJq1WtLgprHAQG7wgBIPvQT9GoPpoSV9MaW9A/Xfdjs2KIGUKF1KhwA1aTfrRNFkIIMUVJIHKWirl349OFYWsrJK5my4DbdHv8lLc4x7ll46O0sYuS+s6gBctOZ2/eQ3z166iKhtKF/87BGgfHm5wYtBo+uSBxSMdLk9wQIYSY0SQQOYvXFEXl7PUAZB96HAIDJ2meaHHi8kyfVXtVVeVwbQcVzUMLsJSAj7l7HwWgNuMGOm2z+ntDLpsbR4TFcN59hJt0Q+o1EUIIMX1JIDKAE7O/hNdgJ6yzjMTKlwbcJhBg2iSu+gMqB6odwdePGUDK8T9hbS/Ga7BTuuB+dle0Ud3WjVmv5cr5CUPah/SGCCGEkEBkAH6DlYq5dwKQVfgLNL6BL9AtXR4aO90DPjaV7K9qo7lz6Am4Bncz2YU/A6B0/jfpNkTw4v7e3pC1efGEGwcv5Q5g1GtIsEkBMyGEmOkkEAmiKucW3JZEzK5aMop/E3S7o/Vd+Kdw4qrb66fNGbxQ2UByDjyGzttFR+R8arJu4o3DDTR29mA16VgzL35I+0iJtKCRVXaFEGLGk0AkiIDOzNFF3wIgveQ3mJzVA27n9vopH2T9lcmuzTW8NXTsTbtJOvEiKgrFSx9hT1UHf9/b2xuybnHykOqBWAxaUiLNI2qvEEKI6UUCkUE0plxFa9wKtP4eZu/fFHS7ylYXzp6pmbg6nN6Q0xNUa7JuZH8gm99+UIYKXDonlo/NijnvPiwGLSuyos+79owQQoiZQa4Gg1EUSpZ8m4CiJa7mDaLqBy5yFghA8RRNXG0fRo9ISumfsDpK8Bgi2JH5FZ54pxSvX2Vhsp3PXpA2pJVzc+LCZUhGCCFEPwlEzsNpn011zs0AzNn3AxT/wBfuNqeHesfUSVzt8fk53tQ16BoypzM5q8kufByAo3nf4KcfttDp9pEWZeHOj2WhHUJwEWHREycJqkIIIU4jgcgQlOV9DY8xirDOMlJL/zfodscaO/H5h1COdAI5ur0U1jj4sLSZ8qYhFmVTA+Tuegidz0lbTD7PuD9GTXs34UYdX7ssZ8jrxMyKt46i5UIIIaYjCUQG4QsE8PkD+Aw2ShfcD0BW0ZMYuhsH3L7HG6BsiAXBxpOqqjR0uNld0cqu8lbqHe4hlW8/KaX0j0Q1bsevNfNh3g/4x6EGAG5cljKkwmUACXYTdrOUchdCCHEmCUQG0Or08OzuKr7+l/18/5+HcXv91GbegCNqATqfk7l7vx90HZqqVhed7uFNhw0Vrz9ARbOTD0tbOFTtoN01/HaZO08w6+BmAI4tfID/OQweX4BZceGsyooe0j40mt7cECGEEOJsEoicJhBQ+fPOSja+cIg3DjfQ4wtQ2+7mpf21oGg4kv8DAoqOuJotxFe+MuA+VJW+tVpGX1vEH1Dx+IY/1NPV4+NwbQcfHGumtLELt3doeSDnUAPk7tqA1t9Na9wK/mn6BPuq2tEqCrcUpA8pORV6K6gOdfhGCCHEzHL+EpgzyLayFt4q7h12mR0fTm6ijRf31/JmcQPLM6PIjMmlPPdesot+zty9j9IWtxyP+dwCXu0uL++UNGLW6wg36rAYtb3/GrSEGXRBZ404XF4aO920OD24vX58fhW7Rc8FGVHnbbuqqjR3eahsddHmHF5tkGDSjv6eyOY9+HRh7F/yQ/78Vm8tlTW5cSQPsQ6IXqchIzpsTNojhBBi+pFApI/XH+ClA7UAXLckuX/12DqHmx3lrfx+WwXf/uQ8KubdSUztW9jbCsnd9TD7L/4NDNAzEAiAs8d3Tn0RRQGzXkuYUUeYsfffgAplTV30eM/t/eg6T32SQEClpr2bqlbXkGfADIWl4zjZhT8F4Mj8B/jpbjfNXR4iLXquWZg05P1kxYShk5ohQgghgpArRJ9XC+tpdfZeaC8/rUz5Z5alEmbQUt3WzZaiBlSNnsPLH8OvMRBT/z5J5c8N6ziqCi6Pn6bOHiqaXRTVdHCktmPAIATA71eDDq3UO9x8dLyFkvrOMQ1CtF4nCz/6Klp/D42xq/j6scUU1nRg0Gr40oWZQx5mCTPqpIKqEEKIQUkgQm/PxV93VwFw9cIkDLpTvxabWc9NF6QC8PLBWho63DjtORxf8A0AZu/fFLT8+1g5u1ek3eVhZ3krhTWOked/BKOqzNvzHcI7Suk2xnKb43bKWlxYDFruv2I28xJtQ97VrPjwIeeRCCGEmJlCGoj885//pKCgALPZTGRkJOvWrQvl4Ubsdx+U4+j2Emc1cmHOuTNBVmVFMy/Ritev8r/bT6CqKpWz1tMesxSdz0nuzo0QGOOA4DQnh3dcHh8HqtrZXdFGR3doZuaklP6RhMpXCChavuz5KkUdZiIter515VyyY4c+8yUq3EBMuDEkbRRCCDF9hCwQ+dvf/satt97KbbfdxoEDB/jwww/5/Oc/H6rDjVggoPbnhqxbnIxOc+6vRFEUbl2RjkGrobi+kw+Pt4BGS9EF/4lPZyGqaQc5h34asja2u7yU1HeyvayFps6ekB3H1rKf2Qd619T5if9m3unOIcFuYsOVc0mOGN4Qi0zXFUIIMRSKOhbzTM/i8/nIyMjg0Ucf5fbbbx/xfjo6OrDb7TgcDmy2oQ8JDJfb6+eX75SyINmOZpChhNcK63l+bzUWg5YfXDsfu1lPXNW/WLjtPgAOrfgpDWlXh6ydoaR3t1LwxjpM3fW8GijgHs/XyIoJ56uX5WA1Da8QWZzNyMKUiBC1VAghxGQ3nOt3SHpE9u7dS01NDRqNhiVLlpCYmMhVV11FYWHhoM/r6emho6PjjNt4MOm1XJGbMGgQAnB5bjxpURZcHj/P7urNKWlM/QTlc+8EIHfXQ4S3HQ55e8ea4vewYPt9mLrrOR5I4gHPHcxPsnP/5bOHHYQoCsMawhFCCDGzhSQQKSsrA+B73/se3/72t3nllVeIjIxk9erVtLa2Bn3epk2bsNvt/bfU1NRQNG/EtBqFL6xMR1FgZ0UrB6vbATg+/xs0J1yM1u9m0Yf3ou8Jfo6TTsBP3s4HiWrcjlM1crf3PvIyU/jKZTkYR1CELN5mIswos8KFEEIMzbACkQ0bNqAoyqC34uJiAn0LmTz88MPccMMN5Ofn8/TTT6MoCs89F3y668aNG3E4HP23qqqq0Z1dCGREh/VP7/2/7ZW9s1Y0WgpX/BRXeBpmVw0Ltt2HEhi8/sekoKrM2fcDEqr+hUfVcrf3G2TMzef2izIHzJU5H41GekOEEEIMz7C+ut5///2sX79+0G2ysrKoq6sDIDc3t/9+o9FIVlYWlZWVQZ9rNBoxGif/TItrFyWxt7KN5i4PL+yr4XPL0/AZ7By48L+54K0biWrcztw93+XIsh+CMnlnSGcefpLU438ioCp80/tl4hZfxZV5CSOecpsUYcZskFLuQgghhm5YgUhsbCyxsbHn3S4/Px+j0UhJSQkXXXQRAF6vl4qKCtLT00fW0knEqNdy64p0Hn/zGG8XN1KQGUVWbDhO+yyKCn7Cwo++SnL584DCkWU/mJTBSErpH8kuegKA7/rWE1XwWT426/yvbTBajSKl3IUQQgxbSK6QNpuNu+++m0ceeYQtW7ZQUlLCPffcA8CNN94YikOOu7wkOyuzolGB3287ga9vOKop+XIKl/8EVdGQXP4cc/d8D9ThL1wXSkllzzFn7/cBeNx7A/8yfpKLc2JGtc+0aFnYTgghxPCFLKvwJz/5CTqdjltvvZXu7m4KCgp4++23iYyMDNUhx91Ny1I4VOOgpr2b14sa+tenaUi/BoUAeTseJKXsL6iKhpKljwy4Js24UlWyin5B1uFfAvCe/Tp+3nA9KxJGVwE1zmaU3BAhhBAjErIxA71ez+bNm2loaKCjo4M33niDvLy8UB1uQlhNej5zsvz7gVrqO9z9j9WnX8vh5T9GRSH1+J+Ys/fRkFZfPR/F7yF314b+IKR83j38MLAeUJgdbx3xfu0WPXlJ9rFppBBCiBln8iUvTDErMqPIS7LhC6j877be8u8n1WVcx+Hlm/qDkSXvfwm9e/yn9mq9XSz+4E6SKl4goGjZu/ARfuq/ibIWF8CIAxGzQcvCFDtajawnI4QQYmQkEBklRVG4pSAdg05DSUMnH5Q2n/F4Xcb1HFr5OH6tmejGbRS8cS325r3j1j5rayEXvHUT0Q0f4dWa2Rz1PW7aPZeXD9bhD6jMS7ASbx3+TCWNBhalRmDUSV6IEEKIkZNAZAzEWo2sW5wEwHN7qnGctSBdY+on2LnmbzitWZi6G8h/5xZSjz4DY19dv5/G30P2wf/igrduJLyjlBYlkutcD/P/arLxBVSyY8O462NZfH3NrBHlh6RHhxEuhcuEEEKMkgQiY+Tjc+NJj+4t//7nnefWSnHac9i55nnqUz+BRvUxZ/9/sPS9L2JrPTjmbbE37+OC168ls/gpNKqfl/0ruLx7E4fJYnlGFA9dNZeNV83jgoyoERUuMxu0ZMpUXSGEEGMgJIvejZXxWvQO4FC1g4bTkk1HorLVxQ//eZiACl+5NIfFqQMs/KaqpJT+H7MP/BhNoLfnpDH5co7P/wZOew4AXT0+2lwe2l1eXD0+cpNs51/zRVWxt+wj7sgzpNa9jgaVRjWC73hvY6tuBZfMjuXSOXFEhRlGdY7QOyQTO4LhHCGEEDPDcK7fEoj0GYtABOD5PdW8VlSPTqOQYDcRZzUSZ+3719b7c4RFj8VVQ1bREySeeAlFDRBAw17bZTzfvYyXO2fhxNy/zwsyIrnrY9kDHk/j7yGu8hXijvyeuK7iU+3wf4xfm29n+bxsVmZFj2jdmIHEWo0sGijAEkIIIfpIIDICZwciWo1Cdmw4dY5uOt1DXzemx+dn85ajlDc7g26j0yj9AcpcXQ1X1P+Gy9jZ/7hH1bKPuezQLuWgOw69KYzbLp2PX2dBE/BibTuCtf0w1rYiLG3FGALdALhVPS/6L+TDqOvJXrCS3CTbeVcUHg6tRmFldrQULhNCCDEoCURG4PRAJDrcwNwEG2aDlq4eHzvLWwgMozhqIKDS1NVDY2cPjR3u3n87e2jsdNPc6cE/wK98keY4/2bbySp1H9E91cNqe7Uaw58Dl1OeegMr5s8iKcJ8/icNk6JAbpKNRPvY71sIIcT0Mpzrt0x7OEuM1XhGbke4UUdmTDjHG7uGvA+NRiHeZiLeZoLkM4t9+QMqrU4PjZ2nApQut4+r5udhjvgM+wBzZwUxde8T1fgRtbVVmALdJFkCGNVuAiqUksY2VzKFgQyOKlnk5C7m4/OSWGIKzcup0cD8ZDtxVlNI9i+EEGLmkkDkLAPNBsmIttDU2UPHWdNyR0KrUYi1Gom1GglWZ7bbmkGVNYOq2V9g85YSius7+eyiVNpdXt480oAvoKIAK7Oj+dKSZCIto09ADdpercLilAgixyDJVQghhDibBCKniQwzYLecOztFURTykmzsGOYQzVhIijBTXN/JX3ZV9d83N8HKTctSSYuyhPTYBp2GxWkR2M43Y0cIIYQYIQlETpMRHfzCHmbUkRUTTukwhmjGQvJp+R4JNhOfzk9hUYp9VIvUDYXZoGVJWgQWg/yJCCGECB25yvSxmnREhw9eGyM92kJTVw8O1+iHaIZqWXokx5u6yIwO4+LZMSMqQDZcYUYdS9IiZHaMEEKIkJNApE9K5Plng/QP0ZS14g+Mz2SjMKOOL12YOS7HAoiw6FmUGoFeK0V3hRBChJ5cbfrohnjhtRh0ZMeGh7g1EyM63MCStEgJQoQQQowbueKMQGqUmYgBklqnsgS7icWpEWg1oc09EUIIIU4ngcgIKIpCbpJt2ly0U6MszE8OfQKsEEIIcTYJREbIYtCREzf1h2i0GoVZ0+A8hBBCTE0SiIxCapSFyLCpPURjM+vRTJOeHSGEEFOPBCKjlJtoR6uduhfyyGmW6yKEEGJqkUBklMwGLTlTeBZNKMvDCyGEEOcjgcgYSI2yEBU+9S7oJr0Wu1l6RIQQQkwcCUTGSG6ibcoM0djMeuYn27kwJ1ryQ4QQQkwoqaw6Rkx6LbPjrRyp7ZjopgxIUSDWaiQtykKEDMcIIYSYJCQQGUPJEWYaOty0dnkmuin9tFqF5AgzqZEWzAZZO0YIIcTkIoHIGMtNtLG9rAWff3zWognGpNeSFmUhKcI05PL1QgghxHiTQGSMnRyiOTyKIRqrSYdJr8Wk1+ILBKhrdw/5uXaLnrQoC3FWo1RKFUIIMelJIBICSRFmrCYdbm8At9dPj8+P2xug2+vH7fXj8QVQz+owsVv0xFtNxNmMmPSnhlBcHt95AxFFgTiribQoC3apCyKEEGIKkUAkRKwmPVbTwI8FAio9vt4gxe3zo9UoxAXZ2KzXotFAIDDwvhLsJrJjwyX/QwghxJQkgcgE0GgUzAbtkIIHRVGwGHR0uX1n3B9h0TMr3ip1QIQQQkxpEohMAeHGU4GI2aBlVlw4cbYg3S1CCCHEFCKByBQQZtSh0ypkxoSRGmmRImRCCCGmDQlEpoB4m5HkCDMGnUzDFUIIMb1IIDIFWAzyMgkhhJie5Cu2EEIIISaMBCJCCCGEmDASiAghhBBiwkggIoQQQogJI4GIEEIIISZMyAKRo0ePcu211xITE4PNZuOiiy7inXfeCdXhhBBCCDEFhSwQufrqq/H5fLz99tvs2bOHRYsWcfXVV1NfXx+qQwohhBBiiglJINLc3MyxY8fYsGEDCxcuZNasWfz4xz/G5XJRWFgYikMKIYQQYgoKSSASHR3NnDlz+MMf/oDT6cTn8/HUU08RFxdHfn5+0Of19PTQ0dFxxk0IIYQQ01dISnYqisKbb77JunXrsFqtaDQa4uLieO2114iMjAz6vE2bNvHoo4+GoklCCCGEmISG1SOyYcMGFEUZ9FZcXIyqqtx7773ExcWxdetWdu7cybp167jmmmuoq6sLuv+NGzficDj6b1VVVaM+QSGEEEJMXoqqqupQN25qaqKlpWXQbbKysti6dStXXHEFbW1t2Gy2/sdmzZrF7bffzoYNG4Z0vI6ODux2Ow6H44z9CCGEEGLyGs71e1hDM7GxscTGxp53O5fLBYBGc2aHi0ajIRAIDOeQQgghhJjGQpKsunLlSiIjI/niF7/IgQMHOHr0KA888ADl5eV88pOfDMUhhRBCCDEFhSRZNSYmhtdee42HH36Yyy67DK/XS15eHi+99BKLFi0a8n5OjhrJ7BkhhBBi6jh53R5K9sewckTGW3V1NampqRPdDCGEEEKMQFVVFSkpKYNuM6kDkUAgQG1tLVarFUVRxnTfHR0dpKamUlVVNS0TYeX8pr7pfo7T/fxg+p+jnN/UF6pzVFWVzs5OkpKSzskXPVtIhmbGikajOW8kNVo2m23a/oGBnN90MN3PcbqfH0z/c5Tzm/pCcY52u31I28nqu0IIIYSYMBKICCGEEGLCaL/3ve99b6IbMVG0Wi2rV69Gp5vUI1QjJuc39U33c5zu5wfT/xzl/Ka+iT7HSZ2sKoQQQojpTYZmhBBCCDFhJBARQgghxISRQEQIIYQQE0YCESGEEEJMmBkRiFRUVHD77beTmZmJ2WwmOzubRx55BI/HM+jz3G439957L9HR0YSHh3PDDTfQ0NAwTq0evh/96EesWrUKi8VCRETEkJ6zfv16FEU543bllVeGuKUjM5LzU1WV7373uyQmJmI2m1mzZg3Hjh0LcUtHrrW1lZtvvhmbzUZERAS33347XV1dgz5n9erV57yGd9999zi1eHC//OUvycjIwGQyUVBQwM6dOwfd/rnnnmPu3LmYTCYWLFjAv/71r3Fq6cgN5xyfeeaZc14rk8k0jq0dnvfff59rrrmGpKQkFEXhxRdfPO9z3n33XZYuXYrRaCQnJ4dnnnkm9A0doeGe37vvvnvO66coCvX19ePU4uHZtGkTF1xwAVarlbi4ONatW0dJScl5nzfe78MZEYgUFxcTCAR46qmnKCoq4vHHH+dXv/oVDz300KDP+8Y3vsHLL7/Mc889x3vvvUdtbS3XX3/9OLV6+DweDzfeeCP33HPPsJ535ZVXUldX13/785//HKIWjs5Izu+xxx7jF7/4Bb/61a/YsWMHYWFhrF27FrfbHcKWjtzNN99MUVERb7zxBq+88grvv/8+d95553mfd8cdd5zxGj722GPj0NrBPfvss3zzm9/kkUceYe/evSxatIi1a9fS2Ng44PYfffQRn/vc57j99tvZt28f69atY926dRQWFo5zy4duuOcIvRUsT3+tTpw4MY4tHh6n08miRYv45S9/OaTtT66wfumll7J//37uu+8+/u3f/o3XX389xC0dmeGe30klJSVnvIZxcXEhauHovPfee9x7771s376dN954A6/XyxVXXIHT6Qz6nAl5H6oz1GOPPaZmZmYGfby9vV3V6/Xqc88913/fkSNHVEDdtm3beDRxxJ5++mnVbrcPadsvfvGL6rXXXhviFo2toZ5fIBBQExIS1J/85Cf997W3t6tGo1H985//HMomjsjhw4dVQN21a1f/fa+++qqqKIpaU1MT9HmXXHKJ+vWvf308mjgsy5cvV++9997+//v9fjUpKUndtGnTgNvfdNNN6ic/+ckz7isoKFDvuuuukLZzNIZ7jsN5b042gPrCCy8Mus2DDz6o5uXlnXHfZz7zGXXt2rWhbNqYGMr5vfPOOyqgtrW1jVOrxlZjY6MKqOox8fMAAAfGSURBVO+9917QbSbifTgjekQG4nA4iIqKCvr4nj178Hq9rFmzpv++uXPnkpaWxrZt28ajiePm3XffJS4ujjlz5nDPPffQ0tIy0U0aE+Xl5dTX15/xGtrtdgoKCibla7ht2zYiIiJYtmxZ/31r1qxBo9GwY8eOQZ/7xz/+kZiYGObPn8/GjRtxuVyhbu6gPB4Pe/bsOeN3r9FoWLNmTdDf/bZt287YHmDt2rWT8rWCkZ0jQFdXF+np6aSmpnLttddSVFQ0Hs0dF1PtNRypxYsXk5iYyOWXX86HH3440c0ZMofDATDotW8iXsPpWypuEKWlpTzxxBNs3rw56Db19fUYDIZzchHi4+Mn7XjgSFx55ZVcf/31ZGZmcvz4cR566CGuuuoqtm3bhlarnejmjcrJ1yk+Pv6M+yfra1hfX39OF69OpyMqKmrQ9n7+858nPT2dpKQkDh48yLe+9S1KSkr4+9//HuomB9Xc3Izf7x/wd19cXDzgc+rr66fMawUjO8c5c+bwu9/9joULF+JwONi8eTOrVq2iqKgo5At8jodgr2FHRwfd3d2YzeYJatnYSExM5Fe/+hXLli2jp6eH3/72t6xevZodO3awdOnSiW7eoAKBAPfddx8XXngh8+fPD7rdRLwPp3SPyIYNGwZMHDr9dvYHQk1NDVdeeSU33ngjd9xxxwS1fOhGco7D8dnPfpZPfepTLFiwgHXr1vHKK6+wa9cu3n333bE7iUGE+vwmg1Cf45133snatWtZsGABN998M3/4wx944YUXOH78+BiehRgLK1eu5Atf+AKLFy/mkksu4e9//zuxsbE89dRTE900MQRz5szhrrvuIj8/n1WrVvG73/2OVatW8fjjj090087r3nvvpbCwkL/85S8T3ZRzTOkekfvvv5/169cPuk1WVlb/z7W1tVx66aWsWrWKX//614M+LyEhAY/HQ3t7+xm9Ig0NDSQkJIyq3cMx3HMcraysLGJiYigtLeXjH//4mO03mFCe38nXqaGhgcTExP77GxoaWLx48Yj2ORJDPceEhIRzkhx9Ph+tra3D+psrKCgAenv+srOzh93esRATE4NWqz1nltlg75+EhIRhbT/RRnKOZ9Pr9SxZsoTS0tJQNHHcBXsNbTbblO8NCWb58uV88MEHE92MQX3lK1/pT34/X8/bRLwPp3QgEhsbS2xs7JC2ramp4dJLLyU/P5+nn34ajWbwzqD8/Hz0ej1vvfUWN9xwA9CbKV1ZWcnKlStH3fahGs45joXq6mpaWlrOuHCHUijPLzMzk4SEBN56663+wKOjo4MdO3YMe2bRaAz1HFeuXEl7ezt79uwhPz8fgLfffptAINAfXAzF/v37AcbtNRyIwWAgPz+ft956i3Xr1gG9XcNvvfUWX/nKVwZ8zsqVK3nrrbe47777+u974403xvX9NhwjOcez+f1+Dh06xCc+8YlQNnXcrFy58pypnpP5NRwL+/fvn9D32mBUVeWrX/0qL7zwAu+++y6ZmZnnfc6EvA9DlgY7iVRXV6s5OTnqxz/+cbW6ulqtq6vrv52+zZw5c9QdO3b033f33XeraWlp6ttvv63u3r1bXblypbry/7dv/yDJhHEcwO+tvBORMiHciixraLGGoEWFIKIl2nKQo6GglhoSXCJsKogaotnGaIgchAKphqKC6iApif4cNrU0xIG2fd/hfTvStz/e0mO83w/c4v2E54v3eN/l6ekREaEsuVwOmqYhHo/D6XRC0zRomgbDMMyZ9vZ2bG5uAgAMw8D09DSOjo6g6zrS6TS6urrg8/nw8vIiKsaHrOYDgPn5ebhcLiSTSVxcXGBwcBDNzc0oFAoiInypv78fnZ2dODk5wcHBAXw+H8LhsHm/9Dm9vb3F3NwcTk9Poes6kskkvF4vAoGAqAim9fV1KIqCtbU1XF1dYWxsDC6XC4+PjwCASCSCWCxmzh8eHqKmpgaLi4vIZrOYnZ2FzWZDJpMRFeFLVjPG43Hs7Ozg7u4OZ2dnGB4eht1ux+XlpagInzIMw9xnkiRhaWkJmqYhl8sBAGKxGCKRiDl/f38Ph8OBaDSKbDaL1dVVVFdXY3t7W1SET1nNt7y8jK2tLdzc3CCTyWBychJVVVVIp9OiInxqfHwcdXV12N/fL3rv5fN5c6YS9uF/UUQSiQQkSXr3eqXrOiRJwt7envlZoVDAxMQE6uvr4XA4MDQ0VFReKo2qqu9mfJtJkiQkEgkAQD6fR19fHxoaGmCz2dDU1ITR0VHzT7TSWM0H/DnCOzMzA4/HA0VR0Nvbi+vr6+9ffJmenp4QDofhdDpRW1uLkZGRoqJV+pw+PDwgEAjA7XZDURS0trYiGo3i+flZUIJiKysraGxshCzL6O7uxvHxsXkvGAxCVdWi+Y2NDbS1tUGWZXR0dCCVSn3ziq2zknFqasqc9Xg8GBgYwPn5uYBVl+f1uGrp9ZpJVVUEg8F/vuP3+yHLMrxeb9F+rDRW8y0sLKClpQV2ux1utxuhUAi7u7tiFl+Gj957b3+TStiHv/4uloiIiOjb/ehTM0RERPSzsYgQERGRMCwiREREJAyLCBEREQnDIkJERETCsIgQERGRMCwiREREJAyLCBEREQnDIkJERETCsIgQERGRMCwiREREJAyLCBEREQnzG2JneBJ38WhtAAAAAElFTkSuQmCC",
"text/plain": [
"PyPlot.Figure(PyObject <Figure size 640x480 with 1 Axes>)"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"μi,σ2i = GaussianProcesses.predict_LOO(gp)\n",
"plt.plot(x, μi)\n",
"plt.fill_between(x, μi.-sqrt.(σ2i), μi.+sqrt.(σ2i), alpha=0.3)\n",
"xx = range(-2,stop=2,length=100)\n",
"plt.plot(xx, f_star.(xx))\n",
";"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"-122.58828939891164"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"GaussianProcesses.logp_LOO(gp)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"-122.58828939891187"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"CV = 0.0\n",
"for i in 1:n\n",
" xV, yV = gp.x[:,i], gp.y[i]\n",
" T = [j for j in 1:n if j!=i]\n",
" xT, yT = gp.x[:,T], gp.y[T]\n",
" gpT = GPE(xT, yT, gp.mean, gp.kernel, gp.logNoise)\n",
" pred_i = predict_y(gpT, xV)\n",
" @assert isapprox(pred_i[1][1], μi[i], atol=1e-6)\n",
" @assert isapprox(pred_i[2][1], σ2i[i], atol=1e-6)\n",
" CV += logpdf(Normal(pred_i[1][1], sqrt(pred_i[2][1])), gp.y[i])\n",
"end\n",
"CV"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"true"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"function target(θ)\n",
" θprev = get_params(gp.kernel)\n",
" set_params!(gp.kernel, θ)\n",
" update_mll!(gp)\n",
" CV = GaussianProcesses.logp_LOO(gp)\n",
" set_params!(gp.kernel, θprev) # put it back\n",
" return CV\n",
"end\n",
"grad_numerical = Calculus.gradient(target, get_params(k))\n",
"update_mll!(gp)\n",
"grad_analytical = GaussianProcesses.dlogpdθ_LOO(gp; noise=false, domean=false, kern=true)\n",
"all(isapprox.(grad_numerical,grad_analytical, atol=1e-6))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Folds"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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du3axfz581m8eDEzZswo87oHHniAr7/+ms8//5w1a9aQkpLC9ddfX0VR+85mszFq1CgmTJjg03VDhw7l+PHjJa+PP/7YTxFWTHmeb+7cubz88sssXryYjRs3EhgYyJAhQygqKvJjpOU3evRodu3axY8//sg333zD2rVrueeee8573d13333Oz3Du3LlVEG3ZPv30Ux588EFmzZrFli1b6NKlC0OGDOHUqVNuz//tt9+45ZZbGDt2LFu3bmXEiBGMGDGCnTt3VnHk3vP1GUGrYPn3n9XRo0erMGLf5Ofn06VLFxYtWuTV+YcPH2b48OEMGDCAbdu2MXnyZO666y5++OEHP0daPr4+3xn79u0752fYsGFDP0VYMWvWrGHixIn8/vvv/Pjjj9jtdq644gry8/M9XlMtfw/Vemru3Llqy5YtPR7PyspSjUaj+vnnn5d8b8+ePSqgbtiwoSpCLLd33nlHDQ0N9erc22+/Xb322mv9HFHl8vb5XC6XGh0drc6bN6/ke1lZWarZbFY//vhjf4ZYLrt371YB9Y8//ij53nfffacqiqImJyd7vO6yyy5T77///qoI0ScXXnihOnHixJKvnU6nGhMTo86ZM8ft+TfeeKM6fPjwc77Xu3dvddy4cX6NsyJ8fUZf/m7WNID6xRdflHnOww8/rHbo0OGc7910003qkCFD/BlapfDm+VavXq0CamZmZhVFVblOnTqlAuqaNWs8nlMdfw/rRY+IO9nZ2URERHg8vnnzZux2O4MHDy75Xrt27WjWrBkbNmyoihCrzC+//ELDhg2Jj49nwoQJpKenV3dIleLw4cOcOHHinJ9haGgovXv3rpE/ww0bNhAWFkbPnj1Lvjd48GB0Oh0bN24s89oPP/yQyMhIOnbsyPTp0ykoKPB3uGWy2Wxs3vz/7d1fSFP/Gwfw98+5aSJm4tgMUja1XZQxXRhngX+w0rxIKwItzLrQ/hkJJUkQYVcFkhcSVIRGV9KFJhQUOfNCsZE20cykmSizJmT4J7Qifb4X/jw0dXNTtzO/3+cFAzl+znje++zjHj6eo50Or31AQAD27dvn9LVvb293GA8AmZmZfjlXwOoyAsCPHz8QExODbdu2IScnB729vb4o1yc22hyull6vR1RUFPbv34+2tjapy3HbxMQEALj87JNiDv+9fyrOBavViurqalRWVjodY7fb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",
"text/plain": [
"PyPlot.Figure(PyObject <Figure size 640x480 with 1 Axes>)"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"folds = [1:10, 11:50, 51:80, 81:100]\n",
"μ,Σ=GaussianProcesses.predict_CVfold(gp, folds)\n",
"for (V,μVT,ΣVT) in zip(folds,μ,Σ)\n",
" plt.plot(x[V], μVT)\n",
" err = sqrt.(diag(ΣVT))\n",
" plt.fill_between(x[V], μVT.-err, μVT.+err, alpha=0.3)\n",
"end\n",
"xx = range(-2,stop=2,length=100)\n",
"plt.plot(xx, f_star.(xx), color=\"black\")\n",
";"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"-125.87309965178507"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"GaussianProcesses.logp_CVfold(gp, folds)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"true"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"function target(θ)\n",
" θprev = get_params(gp.kernel)\n",
" set_params!(gp.kernel, θ)\n",
" update_mll!(gp)\n",
" CV = GaussianProcesses.logp_CVfold(gp, folds)\n",
" set_params!(gp.kernel, θprev) # put it back\n",
" return CV\n",
"end\n",
"grad_numerical = Calculus.gradient(target, get_params(k))\n",
"update_mll!(gp)\n",
"grad_analytical = GaussianProcesses.dlogpdθ_CVfold(gp, folds; noise=false, kern=true, domean=false)\n",
"all(isapprox.(grad_numerical,grad_analytical, atol=1e-6))"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"3-element Array{Float64,1}:\n",
" -0.22892239541138876\n",
" -0.08158749657391891\n",
" 1.5412099504509285"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"get_params(gp; noise=true, kern=true, domean=false)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"true"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"function target(θ)\n",
" θprev = get_params(gp; noise=true, kern=true, domean=false)\n",
" set_params!(gp, θ; noise=true, kern=true, domean=false)\n",
" update_mll!(gp; noise=true, kern=true, domean=false)\n",
" CV = GaussianProcesses.logp_CVfold(gp, folds)\n",
" set_params!(gp, θprev; noise=true, kern=true, domean=false) # put it back\n",
" return CV\n",
"end\n",
"grad_numerical = Calculus.gradient(target, get_params(gp; noise=true, kern=true, domean=false))\n",
"update_mll!(gp)\n",
"grad_analytical = GaussianProcesses.dlogpdθ_CVfold(gp, folds; noise=true, kern=true, domean=false)\n",
"all(isapprox.(grad_numerical,grad_analytical, atol=1e-6))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Performance"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"using Random\n",
"Random.seed!(1)\n",
"n,p = 3000,1 # bigger\n",
"f_star(x::Real) = abs(x-5)*cos(2*x)\n",
"σ_y = 0.8\n",
"X_distr = Uniform(-2,2)\n",
"ϵ_distr = Normal(0,σ_y)\n",
"x = sort(rand(X_distr, n))\n",
"Y = f_star.(x) .+ rand(ϵ_distr,n)\n",
"k = SEIso(0.5, 0.8)\n",
"logNoise = log(σ_y)\n",
"gp_big = GP(Matrix(x'), Y, MeanZero(), k, logNoise)\n",
"optimize!(gp; domean=false, kern=true, noise=true)\n",
";"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" 0.782424 seconds (28.80 k allocations: 1.592 MiB)\n"
]
}
],
"source": [
"precomp = GaussianProcesses.init_precompute(gp_big)\n",
"@time GaussianProcesses.update_mll_and_dmll!(gp_big, precomp; domean=false, kern=true, noise=false)\n",
";"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" 3.518531 seconds (217 allocations: 561.574 MiB, 5.84% gc time)\n"
]
}
],
"source": [
"folds_big = [1:500, 501:1500, 1501:2200, 2201:3000]\n",
"GaussianProcesses.dlogpdθ_CVfold(gp_big, folds_big; noise=true, domean=true, kern=true)\n",
"@time GaussianProcesses.dlogpdθ_CVfold(gp_big, folds_big; noise=true, domean=true, kern=true)\n",
";"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"3-element Array{Float64,1}:\n",
" -7.203671608482038\n",
" -4070.9279980851143\n",
" 866.1506727441109"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"Profile.clear()\n",
"@profile GaussianProcesses.dlogpdθ_CVfold(gp_big, folds_big; noise=true, domean=true, kern=true)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Optimization"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Main.GPCV"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"module GPCV\n",
" using GaussianProcesses: GaussianProcesses, get_params_kwargs, get_params, set_params!,\n",
" GPBase, LBFGS, bounds, Optim, optimize, OnceDifferentiable,\n",
" LinearAlgebra,\n",
" update_target!, \n",
" dlogpdθ_LOO, logp_LOO\n",
"# using Optim: Optim, optimize\n",
" \n",
" \"\"\"\n",
" optimize!(gp::GPBase, args...; kwargs...)\n",
"\n",
" Optimise the hyperparameters of Gaussian process `gp` based on type II maximum likelihood estimation. This function performs gradient based optimisation using the Optim pacakge to which the user is referred to for further details.\n",
"\n",
" # Keyword arguments:\n",
" * `domean::Bool`: Mean function hyperparameters should be optmized\n",
" * `kern::Bool`: Kernel function hyperparameters should be optmized\n",
" * `noise::Bool`: Observation noise hyperparameter should be optimized (GPE only)\n",
" * `lik::Bool`: Likelihood hyperparameters should be optimized (GPA only)\n",
" * `meanbounds`: [lowerbounds, upperbounds] for the mean hyperparameters\n",
" * `kernbounds`: [lowerbounds, upperbounds] for the kernel hyperparameters\n",
" * `noisebounds`: [lowerbound, upperbound] for the noise hyperparameter\n",
" * `args/kwargs`: Arguments and keyword arguments for the optimize function from the Optim package https://julianlsolvers.github.io/Optim.jl/stable/#user/config/\n",
" \"\"\"\n",
" function optimize!(gp::GPBase, method = LBFGS(), args...; domean::Bool = true, kern::Bool = true,\n",
" noise::Bool = true, lik::Bool = true,\n",
" meanbounds = nothing, kernbounds = nothing,\n",
" noisebounds = nothing, likbounds = nothing, kwargs...)\n",
" params_kwargs = get_params_kwargs(gp; domean=domean, kern=kern, noise=noise, lik=lik)\n",
" # println(params_kwargs)\n",
" func = get_optim_target(gp; params_kwargs...)\n",
" init = get_params(gp; params_kwargs...) # Initial hyperparameter values\n",
" if meanbounds == kernbounds == noisebounds == likbounds == nothing\n",
" results = optimize(func, init, method, args...; kwargs...) # Run optimizer\n",
" else\n",
" lb, ub = bounds(gp, noisebounds, meanbounds, kernbounds, likbounds;\n",
" domean = domean, kern = kern, noise = noise, lik = lik)\n",
" results = optimize(func.f, func.df, lb, ub, init, Fminbox(method), args...)\n",
" end\n",
" set_params!(gp, Optim.minimizer(results); params_kwargs...)\n",
" update_target!(gp)\n",
" return results\n",
" end\n",
"\n",
" function get_optim_target(gp::GPBase; params_kwargs...)\n",
" function ltarget(hyp::AbstractVector)\n",
" prev = get_params(gp; params_kwargs...)\n",
" try\n",
" set_params!(gp, hyp; params_kwargs...)\n",
" update_target!(gp)\n",
" logp = logp_LOO(gp)\n",
" return -logp\n",
" catch err\n",
" # reset parameters to remove any NaNs\n",
" set_params!(gp, prev; params_kwargs...)\n",
"\n",
" if !all(isfinite.(hyp))\n",
" println(err)\n",
" return Inf\n",
" elseif isa(err, ArgumentError)\n",
" println(err)\n",
" return Inf\n",
" elseif isa(err, LinearAlgebra.PosDefException)\n",
" println(err)\n",
" return Inf\n",
" else\n",
" throw(err)\n",
" end\n",
" end\n",
" end\n",
"\n",
" function ltarget_and_dltarget!(grad::AbstractVector, hyp::AbstractVector)\n",
" prev = get_params(gp; params_kwargs...)\n",
" try\n",
" set_params!(gp, hyp; params_kwargs...)\n",
" update_target!(gp)\n",
" dlogpdθ = dlogpdθ_LOO(gp; params_kwargs...)\n",
" grad[:] = -dlogpdθ\n",
" logp = logp_LOO(gp)\n",
" return -logp\n",
" catch err\n",
" # reset parameters to remove any NaNs\n",
" set_params!(gp, prev; params_kwargs...)\n",
" if !all(isfinite.(hyp))\n",
" println(err)\n",
" return Inf\n",
" elseif isa(err, ArgumentError)\n",
" println(err)\n",
" return Inf\n",
" elseif isa(err, LinearAlgebra.PosDefException)\n",
" println(err)\n",
" return Inf\n",
" else\n",
" throw(err)\n",
" end\n",
" end\n",
" end\n",
"\n",
" function dltarget!(grad::AbstractVector, hyp::AbstractVector)\n",
" prev = get_params(gp; params_kwargs...)\n",
" try\n",
" set_params!(gp, hyp; params_kwargs...)\n",
" update_target!(gp)\n",
" dlogpdθ = dlogpdθ_LOO(gp; params_kwargs...)\n",
" grad[:] = -dlogpdθ\n",
" return -dlogpdθ\n",
" catch err\n",
" # reset parameters to remove any NaNs\n",
" set_params!(gp, prev; params_kwargs...)\n",
" if !all(isfinite.(hyp))\n",
" println(err)\n",
" return Inf\n",
" elseif isa(err, ArgumentError)\n",
" println(err)\n",
" return Inf\n",
" elseif isa(err, LinearAlgebra.PosDefException)\n",
" println(err)\n",
" return Inf\n",
" else\n",
" throw(err)\n",
" end\n",
" end\n",
" end\n",
"\n",
" xinit = get_params(gp; params_kwargs...)\n",
" func = OnceDifferentiable(ltarget, dltarget!, ltarget_and_dltarget!, xinit)\n",
" return func\n",
" end\n",
"end"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"3-element Array{Float64,1}:\n",
" -0.2305426001964157\n",
" 0.14212460173583263\n",
" 1.790568654194302"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"GPCV.optimize!(gp; domean=false, kern=true, noise=true)\n",
"optimCV_params = get_params(gp; domean=false, kern=true, noise=true)"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"optim_params = [-0.22892239541138876, -0.08158749657391891, 1.5412099504509285]\n",
"optimCV_params = [-0.2305426001964157, 0.14212460173583263, 1.790568654194302]\n"
]
}
],
"source": [
"@show optim_params\n",
"@show optimCV_params\n",
";"
]
}
],
"metadata": {
"hide_input": false,
"kernelspec": {
"display_name": "Julia 1.4.0",
"language": "julia",
"name": "julia-1.4"
},
"language_info": {
"file_extension": ".jl",
"mimetype": "application/julia",
"name": "julia",
"version": "1.4.0"
},
"toc": {
"nav_menu": {},
"number_sections": true,
"sideBar": true,
"skip_h1_title": false,
"title_cell": "Table of Contents",
"title_sidebar": "Contents",
"toc_cell": false,
"toc_position": {},
"toc_section_display": true,
"toc_window_display": true
}
},
"nbformat": 4,
"nbformat_minor": 2
}
[deps]
BenchmarkTools = "6e4b80f9-dd63-53aa-95a3-0cdb28fa8baf"
CSV = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b"
Calculus = "49dc2e85-a5d0-5ad3-a950-438e2897f1b9"
DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0"
Distances = "b4f34e82-e78d-54a5-968a-f98e89d6e8f7"
Distributions = "31c24e10-a181-5473-b8eb-7969acd0382f"
ElasticPDMats = "2904ab23-551e-5aed-883f-487f97af5226"
Flux = "587475ba-b771-5e3f-ad9e-33799f191a9c"
ForwardDiff = "f6369f11-7733-5829-9624-2563aa707210"
GaussianProcesses = "891a1506-143c-57d2-908e-e1f8e92e6de9"
IJulia = "7073ff75-c697-5162-941a-fcdaad2a7d2a"
LaTeXStrings = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f"
Markdown = "d6f4376e-aef5-505a-96c1-9c027394607a"
NPZ = "15e1cf62-19b3-5cfa-8e77-841668bca605"
Optim = "429524aa-4258-5aef-a3af-852621145aeb"
PDMats = "90014a1f-27ba-587c-ab20-58faa44d9150"
PyPlot = "d330b81b-6aea-500a-939a-2ce795aea3ee"
Revise = "295af30f-e4ad-537b-8983-00126c2a3abe"
ScikitLearn = "3646fa90-6ef7-5e7e-9f22-8aca16db6324"
StaticArrays = "90137ffa-7385-5640-81b9-e52037218182"
StatsBase = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91"
StatsFuns = "4c63d2b9-4356-54db-8cca-17b64c39e42c"
TimerOutputs = "a759f4b9-e2f1-59dc-863e-4aeb61b1ea8f"
Traceur = "37b6cedf-1f77-55f8-9503-c64b63398394"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment