{ "cells": [ { "cell_type": "markdown", "id": "1cbd9571-9e54-4514-92d1-a02a215d6af7", "metadata": {}, "source": [ "# Reading/Writing interchange with ORSO data files and the ORSO model language\n", "\n", "The [Open Reflectometry Standards Organisation](https://www.reflectometry.org/) is an international, open effort to improve the scientific techniques of neutron and X-ray reflectometry. One aspect of ORSO is to provide a standardised (reduced) data file that is designed to be Findable Accessible Interoperable Reusable (FAIR), which is vital for reproducible research. The Python functionality for reading/writing such files is provided by [orsopy](https://orsopy.readthedocs.io/en/latest/index.html). Another aspect of this effort is the desire to have a [simple model language](https://www.reflectometry.org/advanced_and_expert_level/file_format/simple_model) that permits a description of the interfacial model used for analysis. This description should allow others to recreate the same analysis setup. Placing the data and model in the electronic supporting information of a paper helps with reproducible research.\n", "\n", "Currently `refnx` is able to read/write ORSO data files, and can work with the ORSO model language for simple models composed solely of `Slabs`. The example is simulated reflectivity from a Nickel thin film." ] }, { "cell_type": "code", "execution_count": 1, "id": "534d092a-e7fb-4ec9-83b1-7cade3b9e16d", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from refnx.reflect import SLD, MaterialSLD, ReflectModel\n", "from refnx.analysis import CurveFitter" ] }, { "cell_type": "markdown", "id": "d0a59a23-1a89-4a40-aa84-730762a6c790", "metadata": {}, "source": [ "### Working with ORSO files that contain a model description\n", "\n", "Let's grab the example ORT dataset first." ] }, { "cell_type": "code", "execution_count": 2, "id": "0f373a73-49c3-4698-a9de-fc74356d7f12", "metadata": {}, "outputs": [], "source": [ "import urllib.request\n", "import shutil\n", "url = \"https://github.com/refnx/refnx-testdata/raw/refs/heads/master/data/dataset/Ni_example.ort\"\n", "with (urllib.request.urlopen(url, timeout=5) as response, open(\"Ni_example.ort\", 'wb') as f):\n", " shutil.copyfileobj(response, f)" ] }, { "cell_type": "code", "execution_count": 3, "id": "f15095c6-fafe-47e7-9ff5-c4965e0473be", "metadata": {}, "outputs": [], "source": [ "# load the example ORSO dataset\n", "from refnx.dataset import load_data, OrsoDataset\n", "\n", "# data = load_data(\"Ni_example.ort\")\n", "data = OrsoDataset(\"Ni_example.ort\")" ] }, { "cell_type": "markdown", "id": "c894f398-7554-4c08-a3bf-c92845509605", "metadata": {}, "source": [ "The example dataset already contains a model description of the sample. We can use this to create a `Structure`, `ReflectModel` and `Objective`" ] }, { "cell_type": "code", "execution_count": 4, "id": "6a727ecf-8d3f-4241-87f5-6ff4fa44bafb", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "s, model, objective = data.setup_analysis()\n", "\n", "objective.plot()\n", "plt.yscale('log')" ] }, { "cell_type": "markdown", "id": "936efb8a-50ce-4d55-acf5-ffb88f01bedb", "metadata": {}, "source": [ "### View a Structure in terms of the ORSO model language" ] }, { "cell_type": "code", "execution_count": 5, "id": "3c0c3708-ebc4-4728-9562-9ecd85714e32", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "stack: air | m1 | SiO2 | Si\n", "layers:\n", " air:\n", " thickness: 0.0\n", " roughness: 0.0\n", " material:\n", " sld: {real: 0.0, imag: 0.0}\n", " m1:\n", " thickness: 1000.0\n", " roughness: 4.0\n", " material:\n", " formula: Ni\n", " mass_density: 8.9\n", " SiO2:\n", " thickness: 10.0\n", " roughness: 3.0\n", " material:\n", " sld: {real: 3.4700000000000002e-06, imag: 0.0}\n", " Si:\n", " thickness: 0.0\n", " roughness: 3.5\n", " material:\n", " sld: {real: 2.0699999999999997e-06, imag: 0.0}\n", "globals:\n", " roughness: {magnitude: 0.3, unit: nm}\n", " length_unit: angstrom\n", " mass_density_unit: g/cm^3\n", " number_density_unit: 1/nm^3\n", " sld_unit: 1/angstrom^2\n", " magnetic_moment_unit: muB\n", "reference: ORSO model language | 1.0\n", "\n" ] } ], "source": [ "orso_model = s.to_orso() # an ORSO SampleModel object\n", "\n", "print(orso_model.to_yaml()) # the YAML representation of the SampleModel object." ] }, { "cell_type": "markdown", "id": "1485a712-d16e-4211-9bb6-fd64f83d91ae", "metadata": {}, "source": [ "### Fitting the ORSO example\n", "\n", "Now let's try fitting this data. First of all we need to vary some parameters." ] }, { "cell_type": "code", "execution_count": 6, "id": "02f15129-6bd4-4975-91ca-8a5bb842c0ec", "metadata": {}, "outputs": [], "source": [ "# s[1] is the first slab (Ni) after the fronting (air) medium\n", "s[1].thick.setp(vary=True, bounds=(950, 1050))\n", "\n", "for slab in s:\n", " slab.rough.setp(vary=True, bounds=(2, 6))\n", "\n", "# s[2] is the second slab (SiO2) after the fronting medium.\n", "s[2].thick.setp(vary=True, bounds=(5, 20))\n", "\n", "# ReflectModel has a background that we'll want to vary\n", "model.bkg.setp(vary=True, bounds=(1e-7, 1e-5))" ] }, { "cell_type": "markdown", "id": "0ea28483-36c2-4107-9ea2-bad32436ba79", "metadata": {}, "source": [ "If you don't know how to figure out what parameters are present you can try examining the Component and printing its Parameters" ] }, { "cell_type": "code", "execution_count": 7, "id": "fc153476-f94b-4aa9-8da5-af2278258fda", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "________________________________________________________________________________\n", "Parameters: 'm1' \n", "\n", "________________________________________________________________________________\n", "Parameters: '' \n", "\n", "\n", "\n" ] } ], "source": [ "print(s[1])" ] }, { "cell_type": "code", "execution_count": 8, "id": "fba6dce3-2b91-4a84-bd97-cd8dd3c234aa", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0 \n", "1 \n", "2 \n", "3 \n" ] } ], "source": [ "for i, p in enumerate(s[1].parameters.flattened()):\n", " print(i, p)" ] }, { "cell_type": "markdown", "id": "cfd2a7a7-5ad6-4ecd-82bb-02ab572d0675", "metadata": {}, "source": [ "You can see that there's a density parameter, that's because the Slab was setup using a `MaterialSLD` object. The density parameter is the density of the Nickel film. Let's vary the Nickel density in the fit as well." ] }, { "cell_type": "code", "execution_count": 9, "id": "08419ba5-3a2b-4b95-bf15-a3e4a1c8e57a", "metadata": {}, "outputs": [], "source": [ "s[1].parameters.flattened()[1].setp(vary=True, bounds=(8.5, 8.9))\n", "\n", "# the following is equivalent, and is straightforward to think about once you're familiar with how refnx works.\n", "# s[1].sld.density.setp(vary=True, bounds=(8.5, 8.9))" ] }, { "cell_type": "code", "execution_count": 10, "id": "258b2109-3c10-4e7d-be3e-ce2d18a507fe", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "-2462.809685994783: : 19it [00:01, 13.12it/s] \n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAi8AAAGdCAYAAADaPpOnAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAX3dJREFUeJzt3Xlc1NX+x/HXzCC444KCCmolppZiuaB2valZZGW72W5eUq/XtktqWl2t26KF2UppSmmL5vIrbbtmkWal5Ra2aIblwqTgDoIJOvP9/fF1hh1BB2bh/Xw85oHzne9858z31w/e95zPOcdiGIaBiIiIiJ+wersBIiIiIpWh8CIiIiJ+ReFFRERE/IrCi4iIiPgVhRcRERHxKwovIiIi4lcUXkRERMSvKLyIiIiIXwnydgM8zel0snv3bho0aIDFYvF2c0RERKQCDMPgyJEjtGzZEqu1/L6VgAsvu3fvJioqytvNEBERkdOQnp5OZGRkuecEXHhp0KABYH75hg0berk1IiIiUhHZ2dlERUW5/46XJ+DCi2uoqGHDhgovIiIifqYiJR8BU7CblJREp06d6NGjh7ebIiIiIlXIEmi7SmdnZxMaGkpWVpZ6XkRERPxEZf5+B0zPi4iIiNQMCi8iIiLiVxReRERExK8ovIiIiIhfUXgRERERv6LwIiIiIn5F4UVERET8isKLiIiI+BWFFxEREfErPhlePv74Y84991yio6OZPXu2t5sjIiIiPsTnNmY8ceIECQkJrFixgtDQULp168Z1111H06ZNvd00ERER8QE+F17Wrl3LeeedR6tWrQAYNGgQy5cv55ZbbvFyy+Dmm2HVKjhxAurVM481bgz160N6Ohw/Dq1aQZMm0KwZ7NsHwcFw9Cjs3w9hYdC0qfm8Vi0YPhyuusq730lERMTfeDy8rFq1isTERDZs2MCePXv44IMPuPbaa4uck5SURGJiIhkZGcTExPDyyy/Ts2dPAHbv3u0OLgCtWrXizz//9HQzK61dO/j994Ln+/aZP3fsKHpeZZr6/vsQGgrvvKMQIyIiUlEeDy+5ubnExMTwj3/8g+uvv77E6wsWLCAhIYEZM2YQGxvLCy+8QFxcHFu3bqV58+aV/ry8vDzy8vLcz7Ozs8+o/aWZMwfq/v4jb/MsBhYMLADuf5f1ONU5e2jBvKxbGTy4Ld26wfr1Hm+6iIhIwPF4eBk0aBCDBg0q8/Xp06czYsQIhg8fDsCMGTP45JNPeOONN5gwYQItW7Ys0tPy559/untlSjNlyhQef/xxz32BUsybBy3Zze286/FrP8hzdCWVDRuiuO8+eOklj3+EiIhIQLEYhmFU2cUtliLDRvn5+dStW5fFixcXGUoaNmwYhw8fZunSpZw4cYKOHTuycuVKd8Hu6tWryyzYLa3nJSoqiqysLBo2bOiR7/HQQ7Dg2R1cz/tF+k6AU/S9lP2w4uRGFnMuv/EM45nAM1gssGsXREZ6pNkiIiJ+Izs7m9DQ0Ar9/a7Wgt39+/fjcDgIDw8vcjw8PJxff/3VbFBQEM899xz9+/fH6XQyfvz4cmcahYSEEBISUqXtvvdeePbZtjxPgkevu4kYFjKUK/mECTyDYcC2bQovIiIi5fG52UYAV199NVdffXWl3pOUlERSUhIOh8Pj7YmMhNmz4e67PXvd1fQBoAO/Upu/OEYd9ywmERERKV21hpewsDBsNhuZmZlFjmdmZhIREXFG1x4zZgxjxoxxdzt5Wnw8xMXB22/DN9+Ys4RatzaHeY4fh2HDIDwcPvkE9u41p0N36QLZ2RARAd26mTOTDhwwp0uvXw/PPtuKAzShKQdpz2/8SAy5uR5vuoiISECp1vASHBxMt27dSElJcde8OJ1OUlJSuOeee6qzKaclMhImTiz/nB49KvZa796QmGhhh9GWphwkinR+ssTQrp1n2ioiIhKoPB5ecnJy2LZtm/v59u3bSU1NpUmTJrRu3ZqEhASGDRtG9+7d6dmzJy+88AK5ubnu2UenqyqHjapSOlF0YyNRpGOxeLs1IiIivs/j4WX9+vX079/f/TwhwSxyHTZsGHPmzGHo0KHs27ePSZMmkZGRQdeuXVm2bFmJIt7KquphI09LSwPDMMMLQCR2nE4V7IqIiJyKx8NLv379ONXs63vuuccvhomqUnQ0WK2Q6TRDW3P2YrOhYSMREZFT8MldpU9HUlISnTp1okd5RSc+JDISXn8dDlrCAGjGfqZMUa+LiIjIqQRMeBkzZgybN29m3bp13m5KhcXHQ9ztzQAIYx8TJkByspcbJSIi4uMCJrz4I7sdnn/HDC/N2IfTCaNGmcdFRESkdAETXvxt2AjMot29hjlsFMZ+ABwOs2hXRERESlelext5Q2X2RvA2ux26td5HpmHuph3EcbAFsWOHal9ERKRmqczf74DpefFHkZEwZWYTnJgLvDSzHGDmTAUXERGR8ii8eJlhtXGQJkDB0JGIiIiULWDCiz/WvNjtMHIk7Mese2lq7FPBroiIyCkETHjxx6nSaWngdMI+CmYcqWBXRESkfAETXvyRa5VdV89LGPuxWqFePS83TERExIcpvHiRa5Xd/Zaia73ExkJiopcbJyIi4qMUXrwsPh7a9zZ7Xv7N8zzLOKzGCcaPh2nTvNw4ERERH6Tw4mV2OyxZbfa8NOYw45jGtSwB4KGHVLwrIiJSXMCEF3+cbQSwejX8Socixy5nGWAW86p4V0REpKiACS/+ONsI4MAB2MiFRY61w0wsNhu0a+eNVomIiPiugAkv/qppU9hLOGNJ5H9cDkBbdgBw++1abVdERKQ47W3kZXY7tG4NhgER7GEPLXFgpTbHMGy1tM+RiIjUCNrbyI9ERsKsWWCxQCbhOLBiw0lTDmjBOhERkVIovPiA+Hj4/nuwWK1F9jlSzYuIiEhJARNe/HW2kUuPHuaCdQdoCkBzy37tMC0iIlKKgAkv/jrbqLjCWwWIiIhISQETXvxd8R2mmxj7tcO0iIhIKRRefIRrh2lXzUsTDqpgV0REpBQKLz7CtcN0Nub0sAYcUcGuiIhIKRRefIRrh+kcixleQi3ZKtgVEREpRZC3GyAF4uPh8PaG8BQMuy6bevHebpGIiIjvUc+Lj2nU2ux5OZqRrWJdERGRUii8+JgVG8zw8vPqbNq0geRkLzdIRETExyi8+BC7HZ6bZYaXhmTjdJrTpxcu1JRpERERl4AJL/6+wi6Y06UPGwWzjcCcPj10qLl5Y2KiN1snIiLiGwImvATCCrvR0ZBraQCYPS8Al/EZbzCc1sYOxo+HadO82UIRERHvC5jwEggiI2HC0wXDRmDwKv9iOHP4gOsAeOghDSGJiEjNpvDiY4aOMMNLXf6iMz9xDn8AcAGphHAMp1Or7oqISM2m8OJrGjRw/zOW74u81JVUAOrVq84GiYiI+BaFF18THAy1awNwIRuLvHQOvwOQm1vtrRIREfEZCi8+6Hhdc+ioeHhpw06sVu13JCIiNZvCi49JToYdB83w0oFfAdhFFABt2YFhwGefea15IiIiXqfw4kPsdnNRuiOYdS+hJ6dLr6UnAK3ZhWHAqFGacSQiIjWXwosPSUszF6XLpmGR4z/SBYDm7AXA4dCMIxERqbl8Mrxcd911NG7cmBtvvNHbTalW0dFgtZYMLz/RGSgILzab6l5ERKTm8snwcv/99/PWW295uxnVLjISXn8djhQLLz9zPmCGF6vFYOZM81wREZGayCfDS79+/WhQaL2TmiQ+Hi69oSC8HCYUO2ZSCea4e9sAERGRmqrS4WXVqlUMHjyYli1bYrFYWLJkSYlzkpKSaNu2LbVr1yY2Npa1a9d6oq01RvN2BeElk3COUYfsk0W8zYxMFeyKiEiNVunwkpubS0xMDElJSaW+vmDBAhISEpg8eTIbN24kJiaGuLg49u7d6z6na9eunH/++SUeu3fvPv1vEkgaFoQXo3k4AAdpAkBjDqlgV0REarSgyr5h0KBBDBo0qMzXp0+fzogRIxg+fDgAM2bM4JNPPuGNN95gwoQJAKSmpp5ea0uRl5dHXl6e+3l2tv8Pq6z5uQG9T/77p71meMkiFIBQslSwKyIiNZpHa17y8/PZsGEDAwcOLPgAq5WBAweyZs0aT36U25QpUwgNDXU/oqKiquRzqovdDq/Ob+x+nkEEUBBeGluzVLArIiI1mkfDy/79+3E4HISHhxc5Hh4eTkZGRoWvM3DgQIYMGcKnn35KZGRkucFn4sSJZGVluR/p6emn3X5fkJYG2zin4DnRQEF4eW1qFvHxXmmaiIiIT6j0sFF1+OKLLyp8bkhICCEhISQlJZGUlITD4ajCllW9+vXhN9q7n6ef3Bog+2R4OfhHFkftZs+L3W6Gneho9cSIiEjN4dGel7CwMGw2G5mZmUWOZ2ZmEhER4cmPKmHMmDFs3ryZdevWVennVLWcHDhIU/7C3Fn6e2IBaBhlhpd5M7Jo0wbuugvatIEBA6B1a0hM9FaLRUREqpdHw0twcDDdunUjJSXFfczpdJKSkkLv3r3Leae4uFbZbcc2OvELe2iJxQI/pxcU7DqdMHcu4HQQxS4shoPx42HaNO+2XUREpDpUOrzk5OSQmprqnjG0fft2UlNT2bVrFwAJCQnMmjWLuXPnsmXLFkaPHk1ubq579lFVSUpKolOnTvTo0aNKP6equVbZzbS1YgudsNngwQfNxerADC8mgy8ZwC7a8F8mATB+vNZ/ERGRwGcxDMOozBtWrlxJ//79SxwfNmwYc+bMAeCVV14hMTGRjIwMunbtyksvvURsbKxHGnwq2dnZhIaGkpWVRcOGDU/9Bh9lt5trubimRD/degavGqP5gGu5ng+I5jd+41wADtKYcDI5QS0WLoQhQ7zYcBERkdNQmb/flS7Y7devH6fKO/fccw/33HNPZS8thURGFi3CHXJ3KMwye16sVrjMudz9WhMOcSEbWUv1BEQRERFv8sm9jU5HoAwblaX/teawUY/oLObPh/P4pcjrrucqLRIRkUAXMOElUGYblSnUDC8NnFns3AnRpAEFtTDn8QsWC3z2mddaKCIiUi0CJrwEvJPhxXEoiwkTCsLLUq4BoCNbMAy0aaOIiAS8gAkvgT5s5AovZGVhcZ4gCnMl4S8ZAEAkZmLRpo0iIhLoAia8BPqw0VtLzfBicxwnEjtWDJxY+IELgILwok0bRUQk0AVMeAlkdjv84776OLEABUNG+wljJ20Ac8ZRXXK5/XZtFSAiIoFN4cUPpKWBw7CSjTnv3RVe8hs1J8fSkCPUB6AVf/LOO6p5ERGRwKbw4gdcWwYcoQEA5/A7AFsPh+M0LNgxu1pa8adqXkREJOAFTHgJ5IJd15YBrp6XdpjpZC/NAdhHMwCasU81LyIiEvACJrwEesFufDy0u6Boz0vx8BJu2cfMmap5ERGRwFbp7QHEe0KamuGleM/L/pPh5akH9tEw3jttExERqS4B0/NSI5zcqKo2eYAZXmw26HmVGV6y/9inYl0REQl4Ci/+pEGDIk/vGtecHTvgWH0zvKxeuo82bSA52QttExERqSYBM2yUlJREUlISDofD202pOsW2CB83LZzrmkHqgmb0xizYdTrNLQLi4sxzVq82f/bpo1oYEREJDAHT8xLoBbsA2UbRnpcMozkTJsA+oykATTkAmFsEvPginBt1lIVDF3Pn0GO0bq0eGRERCQwBE15qgq9/DC3yfC/NcTohy9IYgMYcAsw1YaZNM1jATSxmCDMZpU0bRUQkYCi8+Am7Hd5fFeZ+fpQ65FIPmw1GjDfDSyMOY7PB3XdDV1K5ik8AGMZbtGW7FrATEZGAoPDiJ9LSYB8F4cWcJm3h3/+Gu8eZ4aUBOexIO47FAhfxbZH3/41vAFi/vtqaLCIiUiUUXvxEdDQcsDRzP88kHIsF7r8faNTIfdyafZjXX4c+rC7yftfzCRM0dCQiIv4tYMJLIG8PAOZMoYuuLQgvrgXqPvsMsNncM5F2bTqEYcB5/ALAm9wFwAX8AKChIxER8XsBE14CfbaR3Q6vf1AQXrJpWLQI92Tvy9mND2G1GJzNHwAs43KgYEsB7X0kIiL+LmDCS6BLS4MsGpJBOABzGQYU9KTk1zfrXiyHD/HW9P00IAcnFr7kEgCasZ9GliztfSQiIn4vYBapC3TR0WCxWLjESKEeuayjJ2D2pKxfD8bmxvQHHhh2iHMHmb0uu2nJfsLYSzOas+9k78uF3vsSIiIiHqCeFz8RGQmzZsEWy3nu4GK1wpQp8NBDcAiz56WhcZjNn24HYDtnAfA75wBwlvG71noRERG/p/DiR+LjYdcuWLjQfOzcCd27g9NZEF4ac4hwMgHYQwsAdtEagFb8qYJdERHxexo28jORkTBkSNFjViscchaEl/rkAOZ0aigIMS3Yo4JdERHxe+p58XORkfD66wVbBDSxHKJXW7PnxbUWTIbFDC8t2cOUKSrYFRER/6aelwAQHw+H9jSC/0Df8w6R9nMeAHsJ55ln4LwNLWABRLCHuyZAkybme0RERPyRel4CROOzzZ4X+8+HaH6y5iWDcCZMgBcXFgwbOZ1FN2i022HFChXxioiI/wiY8BLoK+yeUuOSBbuZhON0wp9GQXiBgrVhkpMhKgoGDDB/Jid7p+kiIiKVETDhJdBX2D2VD78uPbxYrbDXEgFAUw4SxHFsNqhXD0aMADBoxl4ARo5UD4yIiPi+gAkvNZndDg9NNcNLW3YSQj4A+63hvP46TJ3ZGCcWAJpZDzJzJsyeDfWMI6ymD3sJZxQzcDphzRqvfQ0REZEKUXgJAGlpcMBoXORYNg148706xMfDP0bYMJo0BWDj8v3ExZkzlIaygN58B8DDPI2NE3z5ZbU3X0REpFIUXgJAdDRkWxoVOZZJOG3bFjy3NQ8DIMK2j7Q089g1LHW/3pp0LuJbZs3S0JGIiPg2hZcAEBkJSbOCyaWu+1gm4fTqVagIN8wML+zfT3Q0WC0Gf+MbAHbQBoBubNAKvCIi4vMUXgJEfDzUal4wdOSaaeSeFl0ovERGwiuPZtCYwziw8hZ3AnAhGwFzo0cRERFfpfASQI6GFA0vUDAt2hVe/li7n2nT4P0nNwOwjXasoTdQEF4mTNDQkYiI+C6FlwCRnAw/pheEl50nh4Jcexml7m4GwIdv7mfcOOhgmOFlM534ic4ARJOGFYeGjkRExKcpvAQAu91co8W1szTAds7CZoOZM83nb//P7Hlpxj4A2vMbAL/Sgd20JJ9a1OIEkdi1eaOIiPg0nwsv6enp9OvXj06dOtGlSxcWLVrk7Sb5vLQ0zJV0aeU+toO2zJ9v1sKkpcE+wwwvYewHoBV/ApBOFFis7p6as9jBzJnavFFERHyXz4WXoKAgXnjhBTZv3szy5ct54IEHyM3N9XazfFp0NFitsJzL3Md2WdrSu3fB6wctpYeXPdZWzJoFUX3PAuDZ0duJi6vGxouIiFSSz4WXFi1a0LVrVwAiIiIICwvj4MGD3m2Uj4uMNBedW8Yg1tONL+nPXqMZn31W8PqIiQXhxWaDjvXNitwn32hFfDzssJjh5X+vbad1a+1zJCIivqvS4WXVqlUMHjyYli1bYrFYWLJkSYlzkpKSaNu2LbVr1yY2Npa1a9eeVuM2bNiAw+EgKirqtN5fk8TFwXFrCD1YzyV8iYGlyO7R18Sb4SWy9n6eeeoE9XIyALhseCsSE+Gtr9sC0JYdGIZ2nhYREd9V6fCSm5tLTEwMSUlJpb6+YMECEhISmDx5Mhs3biQmJoa4uDj27t3rPqdr166cf/75JR67d+92n3Pw4EHuvPNOXn/99dP4WjWPq+6lsCKzhpqZs41sx44yc+IObDg5gY0Mo7k5Ndow62UiyCjy3uRkaNPG3Hm6TRv1yIiIiPcFVfYNgwYNYtCgQWW+Pn36dEaMGMHw4cMBmDFjBp988glvvPEGEyZMACA1NbXcz8jLy+Paa69lwoQJ9OnT55Tn5uXluZ9nZ2dX8JsEFlfdS+EAU2TWUP36GMHBWPLz6WxsAmAPLXBiA+fJnaeNgvDi2nl65MiCazqd5vO4OBX0ioiI93i05iU/P58NGzYwcODAgg+wWhk4cCBrKrhdsWEY3HXXXQwYMIA77rjjlOdPmTKF0NBQ96OmDjG56l5sNvO5a5q0K2Qkv2Fhd745dNSVVKBgdpLNBrc8YC5qF0GG+705OWZg6c+XvMlddOUHnE548cVq/WoiIiJFeDS87N+/H4fDQXh4eJHj4eHhZGRkVOga3377LQsWLGDJkiV07dqVrl278tNPP5V5/sSJE8nKynI/0tPTz+g7+LP4eNixw6xP2bHDfA4F68DsxwwvMZg9L3/Syh1Uhj0UAUBzyz52bDtBfDzUrw/B5PEOt3MXc9lAN8LJ4LnnVP8iIiLeU+lho6r2t7/9DWfx4o1yhISEEBISQlJSEklJSTgcjipsne+LjCw5pOOqhykeXs7u24od806e7wjDsFqxOJ1YD+yDti3IyYFbmE9L9gBgxWAwHzHbGMGLL0JiYnV+MxEREZNHe17CwsKw2WxkZmYWOZ6ZmUlERIQnP6qEMWPGsHnzZtatW1eln+OPXPUw+zCLdtuwC4Cz/9aqYFhpjo0MZ3MAruqeQXKy+b4BfAmA4+R/KlfxMQDPP6/eFxER8Q6Phpfg4GC6detGSkqK+5jT6SQlJYXerhXTpNq56mEOnFyozsUR3hIoGFbKwAyY4WQwahS89x50x9xiehL/BcwwY8Gp/Y9ERMRrKh1ecnJySE1Ndc8Y2r59O6mpqezaZf6v+YSEBGbNmsXcuXPZsmULo0ePJjc31z37qKokJSXRqVMnevToUaWf46/i4+GOB4qGl5v+3Yrk5IJhJVd4iSADhwOeGH+EDvwKwBzuIp9aNCCHKNK1/5GIiHhNpcPL+vXrueCCC7jgggsAM6xccMEFTJo0CYChQ4cybdo0Jk2aRNeuXUlNTWXZsmUling9TcNGp7b2j6LhZbvRhlGjzMJcq7Vwz0smVit0NjZhxcBOK3bTiq2cC0Bn62btfyQiIl5T6YLdfv36YRhGuefcc8893HPPPafdKPE8ux2Sl4bhmsR+nCB20gaHA3JzzWGlzLvN8NKCDKZOhS0PbQMDNtMJgC10ojM/89Stv9A0ruy1fkRERKqSz+1tdLo0bFS+tDTYe7JgFzCDC0FYrebwT3w8/PMxM7yMGJzBuHFwz1U7AHOHapsNasWYIWbDO5u12q6IiHhNwIQXDRuVLzoa9lhauZ//RR0AnnmmYPinUQczvNTNNtfkOTdkBwC9b27LmjWw4MeO5nG24nQW3f9IRESkugRMeJHyRUbCg6+f637+Kx0AaNy40Eknp7Pn/pHBtGmwbvEOAKa+15aFC+EPoy0ArU9OtdaMIxER8QaFlxok7nILHSxbeZO7mMgUoGjvyeJvzPByPN0cNmrLDgC205bp08FuaQ1AS3YTxPEiM47sdli40HyoN0ZERKpSwIQX1bycWloabDXa8w/e5HfM1OHqPbHbYcR/zPDSiCzqc4QozK0WtnMWTifcntCcPIKx4STKuts94yg5GVq3hqFDzUdUlFbfFRGRqmMxTjV1yM9kZ2cTGhpKVlYWDRs29HZzfIrdDm3alNx5escOM9gMGGDwF3WoTR79+ZIVDOAYIdTlKFablR07IOJv7Qja+Tt7F31F8xv/jt1uBhfDgMF8yEV8yxP8h1zqk5gIY8d669uKiIg/qczf74DpeZFTK2/naXMLAYt7rZdefAeYs5KsNqv7vKBz2gCwf+Mu7HYz9BgG3MY7fMg1PMSzTOZxAB56SENIIiLieQovNUxZO0+7gk3x8NKse9si5/12zKx7eWfKLtq0gfXrwWKB+3jJ/Rn38RLhZOB0qqBXREQ8L2DCi2peKi4yEvr1K7lCbnw8xFxmhpcrmnwPQHCHs9zn2e2wYHUUAFGk43TCxIkwfPA+9x5IGYQTQj79WaEtBEREpEoETHjROi+eUecsM7zUOmjuDP7Uu23di9GlpcGfmJs5tmAPYBb85n30OVYMUonhPW4G4CJWM2WKthAQERHPC5jwIp6RXTeiyPMdJ/c/stvNupgMixleWrIbMPdE6mWsBiCFS1hNHwB6s5oJE7QKr4iIeJ7CixSxxygaXrbQ0T2dOjIShj9SEF4sFpg6Fc7jFwB+pAtr6A1ADJuo7czVKrwiIuJxCi9SRNPzCsLLcYLYQscitSvXjDbDSytrBru2O2jSpCC8/MJ52IliH2EE4aA9v2kVXhER8biACS8q2PWMlIMXuP+dSz3yCeH22wvVrjRvjmG1YnE62Ld5Hw+P2Edz9gFmLw3Ab7QHoD2/qWhXREQ8LmDCiwp2z5zdDrdMaON+nkk4AO+8UzD0kzw3iD1O8/jdV+ymo2H2uvzBWRylHgBpJ8PLuZY09/owIiIinhIw4UXOnGvBuT58SyoxjGAWUHQLgZEjYbd7xtFuOvArAJvpBJgL3w0cHQ3AP/72G3FxpX+W3W6uNaN6GBERqSyFF3GLjjYXnFtDHy4gla/5O4B76CctzdxawBVeIrETTRpgDhW5Vuzdapg9Lxlf/0abNkVnHNnt8M9/mlsKDBhAiddFREROReFF3CIjYdYsM8C4WCzFtxCAXZir7LZmF9GY1bhX3d+OHTsgLg4enFlQ8+J0FuxcnZwMMVEHaD7zv9xuvEUIx4q8LiIiUhFB3m6A+Jb4eDOArFljPu/du6BmxbWFwG8j2oABbSy76BuRBnug/ZXREGkOBaUZ5wDQhEOEcpgsRyPWrIERI2AW44nnDQA68CuP8HSRqdgiIiKnop4XKSEyEoYMMR+lbSEw/hWz5+XGbttpdOB3APbUM6cURUfDMWs99tMUgDbsxGYza2kaGwe4lXnua93JW1hxAFCvXlV/KxERCRQBE140Vbr6NL3QnJEUsn41lvx88ggm6qLWJCcX9M7sxDznLOtOZs6EPn3gVuZTh2P8QicO0phI/qQfKwHIzfXWtxEREX8TMOFFU6Wrz/xvWxd5vo12OLC5a1fi46HT5WZ4efOxncTHm6Hmni6rAHiH21nMjQAM5iOtBSMiIpUSMOFFqofdDneMiyCfWu5j3xMLUGQ13TodzPBy5Ked7mLd2j9+7z7/W/4GwIVs1AaOIiJSKQovUilpaeAwrPzM+e5j39ELoEgPynd7zPDy/aKdtG4Nj96dQRt24cTCerqzkQsBuIAfmPiQU9OlRUSkwhRepFJca8HMYoT7mGszxn//2+xBsdvh2YVtAbNg1zCgJ2avy2Y6cYSGbKEDf1GbBuRwtrFN06VFRKTCFF6kUiIj4Zln4C3uZCvt+ZHObKYTVivcf795TloabDfMnpe27ADM4SGAdZgF1Q6C2EQMYPa+aANHERGpKK3zIpU2bhxYLPWIGf8T+UYQVpu1yB5G0dGww3I2GNCcfTQgm878BMAmYrBazanTPxgX0IvvuYAf+D/b0BJFu3Y7rF5t/rtPH9XFiIiIST0vclrGjoVtu4L5coWVHTvMGUYukZEwbVYoe2kGQHvr71zS3Awvw6edz86d5kq+v1rM/ZA68muJDRynTTO3EBg61Hy0bq1tBERExGQxDMPwdiM8KTs7m9DQULKysmjYsKG3m1Oj5XXvQ8iGNRycPofGDw7HYhjs3phBywvMXan3vbucZrfHcbxdB2qlbXG/LzERnhm/nxe5n7X05CXuAyzYbLBjh3pgREQCUWX+fgdMz4sWqfM9IZ3McaCsdz7EYhjspRlR3cPdPSjN+nYAoNbO3+H4ccAcKnroIXiBB7iNebzIAzzDQwCqixERESCAwosWqfNBJ4tYztr4PgA/0bnoRoyRkVCnjhlctm8H4MUXobfxLbfzrvsy9/Mi9cjBatVidiIiEkDhRXxQsaTxzcmF6dw9KFYr+WeZO1Dv/3Yrdjs89xxcjxl23uZ2tnEOIeQTx2cYBnz2WbV+AxER8UEKL1JlFv9xYZHnnxEHFCxml5wMH2w2h46eid/Kiy+as5Au5XMAPuFKlnINAFfzIYaB1oMRERGFF6kadjsMndyB34h2H1tLTywWmDnTfD5yJPzKuQC0N7YyfTq0sGTQ5eS06hQucYeXK/kEMFT3IiIiCi9SNdLSwOmE23iXo9ThJe7FcXJZobi4gtd/xex56cCvOJ2QeMWXAGzkAg5am/E9vcinFmEcoDW7tImjiIgovEjVcG0jsJ4eNOYQ9/MiYA4Lbdtmvm61wtaTPS/nshWbDa4JM1ela3ZjP3buhFdnB7MZcz2YC6ybSqwHIyIiNY/Ci1QJ1zYCAPmEABagoN4lMhJefx1+t5oFu83Zx5vPHaT+z98BEHVTbyIjzcXvom80txF48oZU4uJKfpbdDgsXmg/Vw4iIBD6FF6ky48aZC85ZzNzirndx9ZzEx8MvO+tzrJl54PKIVJypmwDY06aX+zo/W83wsnXRJtq0KbrSrlbiFRGpeRRepEqNHQu7dsGKFebPwtsIgBlkancxh44+vHkeVscJ/qQlrWIjSU42e1IeWdQVgBg2FVknJjERHh6XzxPGI4xkJmBoRpKISA3gc+Hl8OHDdO/ena5du3L++ecza9YsbzdJzlBkJPTrV3atSk6kWbQbj9ll8j2xGFgYNcrcmPEHw+x5acfvNCAbhwPWrDFX4v0vk3iEp5nJP09uI6CVeEVEAp3PhZcGDRqwatUqUlNT+f7773n66ac5cOCAt5slVWhx1qVFni/hWsAMIRYLHLY2xU4rADrzEzabWfjbzVjHeJ4FwImFe3mFzvyoGUkiIgHO58KLzWajbt26AOTl5WEYBgG2d6QUYrfDiCVXFjm2iCGAWdzbu7dZ2LuJrgBcaEll5kzo0wduYx5WDBYyhI8YDMCN/J9mJImIBLhKh5dVq1YxePBgWrZsicViYcmSJSXOSUpKom3bttSuXZvY2FjWrl1bqc84fPgwMTExREZGMm7cOMLCwirbTPETaWlwgiDGY05NeobxHKMOUFDcGx8Pfe8xh46m3LKJ+Hj4bJnBVXwEwHvczP9xAwD3R/5fqTOSREQkcFQ6vOTm5hITE0NSUlKpry9YsICEhAQmT57Mxo0biYmJIS4ujr1797rPcdWzFH/s3r0bgEaNGrFp0ya2b9/OvHnzyMzMPM2vJ77Otd7LNMbSm9U8wlNYLLB2bdHi3oZ9zfDi3LiJdetg+shfacfv5BHMci7jYwaTTy1C7b9waeutmnEkIhLIjDMAGB988EGRYz179jTGjBnjfu5wOIyWLVsaU6ZMOa3PGD16tLFo0aIyXz927JiRlZXlfqSnpxuAkZWVdVqfJ9Vv9mzDsFgMA8yfs2eXPGfhk1sNA4xc6hg2ThjjeMYwwPgfcYZZAWMYXzDAMMAYxWuGzWYY6enV/11EROT0ZGVlVfjvt0drXvLz89mwYQMDBw50H7NarQwcOJA1a9ZU6BqZmZkcOXIEgKysLFatWsW5555b5vlTpkwhNDTU/YiKijqzLyHVLj6+/OnUdjvc+p9zyKUudfmLDmxh8MkhI1etCxTsWt2H1WXOOLLbzc/RVGoREf/l0fCyf/9+HA4H4eHhRY6Hh4eTkZFRoWvs3LmTvn37EhMTQ9++fbn33nvp3LlzmedPnDiRrKws9yM9Pf2MvoN4R3nTqdPS4IRhc4eT23iXPpjbCHzEYKxWc1bSGnoDZngpbcbRtGnQpg0MGECJxe5ERMR/BHm7AcX17NmT1NTUCp8fEhJCSEgISUlJJCUl4XA4qq5x4hWuuphPnFcSx3ImMhUAe1gMby1qTbt28NlnMH5kL3Ca68HMTdxLZGRz8zw7PPkkzJ+ZhYV6QJB7sbu4OM1MEhHxNx7teQkLC8Nms5UosM3MzCQiIsKTH1XCmDFj2Lx5M+vWravSz5HqFxkJU6fCJxSdUv3m/sGsX18wI2nTzkZkRZ0HQFxDc5gyOdncMmDHzGUcoClHaMDrjAC0mJ2IiL/yaHgJDg6mW7dupKSkuI85nU5SUlLo3bu3Jz9Kapju3eEPzuGXkztM/87ZvMR9PPRQQf3KZ5/BwvQ+ALxx92oSE2HkSAgy8nmZewnCQR2OMYLZ9GINFosWsxMR8UeVDi85OTmkpqa6h3a2b99Oamoqu3btAiAhIYFZs2Yxd+5ctmzZwujRo8nNzWX48OEebXhxSUlJdOrUiR49elTp54h3REebdS3DeZOHeYqupLKfZjidZu+J3W4GldUn6156sYYJE8DphH/xKtFsI4NwFnATAAlMB8zAIyIi/sViGJVbvnblypX079+/xPFhw4YxZ84cAF555RUSExPJyMiga9euvPTSS8TGxnqkwaeSnZ1NaGgoWVlZNGzYsFo+U6pHYiKMH1/0mM0GO3aYRb0DBkB7trKVDvxFbULJwmGpxWajA+fyG//kNb7hb/xMZxxYOYffsdvasmOH6l5ERLytMn+/Kx1efJ3CS2CbNs3ckNHpNIPLzJlmvYvdbs4gcjoN9hNGUw7Sy/I9NwyxMm5hD45ShwgyOUIDVtCPfnzFfbzIy9zHihXmTCcREfGeyvz99rm9jU6Xho1qhrFjYedOc62WHTsK1oSJjDT3QLLZLKzGrHuJNdYQtPBdAJZyDfc+3ACrFT7lCgAuYzlWK9Sr541vIiIip0s9LxJQ1q2DJbFP85TxCF/zNzqyhTAOcBUfscx2FVOnwryHNrHR2ZVc6tKEg5ywhvD66wVByG43h6Hq14ecHLPeRsNKIiJVq0b2vIiAGTYWGkPIpxZ9+YYwDvALnVjG5Tgc5qylmas7k0E49ThKH1a713yx24suZNezpxa0ExHxRQovElCio+F3SzRTmeA+dh8v4SAIq9WcGp1z1MrnXAqYQ0dgrvny5JMwbhxc7PySJ3mEpuwHKBJuRETE+wImvKjmRcAc3nnmGXiah3mLO3iMyXzJJYB5PDLSDDhfWC4DCsKL1WrWzAziU5ZxOY/wNJuI4QI2AlrQTkTEl6jmRQJS4VlJVqu5Qu+4cQWvz5uewa0PtgCgOZn0v6k53y3cyRY6Upe/yKEe9cllPd3owXqsVrNQWLUvIiJVQzUvUuMVnpW0c2fR4AJwa0IE+Z1iALiUL1i4EMaRSF3+4hsuIpo0jhFCdzbQnXUYhha0ExHxFQovErDK26kaILWZOXR0KctpTibxmFW5/+EJMmjBwpOr8f6LVzEM1b2IiPiKgAkvqnmRyrDb4eGv4gC4nveZxQjqcIw19GIl/bBY4DVGA3Az79GQLNW9iIj4CNW8SI20YgUMHODga/rSB3MH6hPY6M8KvqEvAFaLwS9GRzqwlZuZz2LbzUW2EnCtB6N1YEREzpxqXkROIToasNq4jXfJwvx/kolMcQcXmw2eedbCUst1AFzHEqZMKQgpyckF68G0bm3W1GhISUSkeii8SI3k2k4g3XYWsXzPdXzAc4wFCvZMGjsWWt1zLWBOoZ70UB7JyQU7WJ/l3MbtvE2Ysde9uJ0WsxMRqXoaNpIazW4361jatTOfu/4dGWm+1ra1k11GJC3ZwyA+5XPbIObNg0lDf+Ub/kYYBziBjYd5mkTGu3e51jCSiEjl1MhhIxXsyukoPCOp+OyktDRwGFY+wBw6iicZhwN2rN3Lci4jjAMcohFBOHiKRziHbSrqFRGpBgETXsaMGcPmzZtZt26dt5siASI62lzg7lX+BZizks5hG+2e+yetSWcr7YkmjU8ZRC1O8AT/AWD9em+2WkQk8AVMeBHxNFddzFbbeXzKIKwYfMxVXM8H5FOLm1jIAcKYyBQAbuE9zucnJkxQ8a6ISFVSeBEpR3w8rFkD0zCX6O3AVgD+yyR+xFyh90diWMwNAIxgloaORESqmMKLyCnk5MAK+nMr7zKRp7mapTzFI0XOmcUIAG7nHepaj7kLgF3sdnNtGfXIiIicuSBvN0DE17lqX+Y7by3xms0Gt98O894eyC5nFK1J56O7lxIZOdR9TnKyObXatUnk66+bPToiInJ61PMicgqu2hebzXxutcLDD5s9KTt2wJw58MdOG8477gLgwu9exZ5urkCwbh28P+J/bHTG8C196OD8hZEjzeMiInJ6Amadl6SkJJKSknA4HPz2229a50U8rvCaMKWt4/Les7u47qFoQsjnSj6BQYO4/H/3cy8vu885Rgg3sphPLVfxzDMld7sWEampKrPOS8CEFxctUifeYLebK+xOdY5jHNPYQgdW04d43sCJhRd4gE5s5nI+YxdRtOc38qhNYqK5kq+ISE1XIxepE/GmtDSzpuVpHuYgjenIr8TzBgCjmMmDTOc6PiCdSFqTzhiSAHjoIRXxiohUlsKLiAdER4PFAodpzK3MYzE3sJgbuIkFzD45E+kYdfgPTwDwCE8RymGcTk2rFhGpLIUXEQ+IjIRnnjH//RmXM4TFDGExi7jJfc6VV8Lb3MHPnEcTDnE/L2K1Qr16Ra+ladUiIuVTeBHxkHHjIDHR7IEpzGqFZ5+Fjz+GZxJt/JfJADzAC9R3ZtGrV8Fu1K7dqQcM0C7VIiJlUcGuiIe5ZiXVqwe5uSVnJ6373kndXp05j808xmQe5zGsVnhswCou+OJZ/qIOy7mMuQzDYQ3mu+9A+42KSKCrzN9vLVIn4mGuHarLknPUynP8h/e4hUn8FytOOjq3MOSLxe5zhrCY/qzgNue79Opl0cJ2IiKFqOdFpJrZ7dCmtcFLxj2M4VX3cScWZjGC3bTkPzxBEA5GMYPXGYXNZi6IV14oEhHxZzVyqnRSUhKdOnWih/rXxcdFRsLUZyzcwytMYAq7acEs7qYrqfyTmfyXyUxgKgAvcR/n8qs2exQRKUQ9LyJesGKFWZRbNoNPuYJBLOMzLuMKyzK++95SovbFbjfXmImOVq+MiPi3GtnzIuJPXJs9Fme1mivuJiZaeMD6MnkEE8dyrjQ+KjIrCcx/a2aSiNRE6nkR8ZLkZBg1ChwOM7QkJMD99xf0oKxbByk9JzKBqdhpxd9ZxU7r2cyfD6HH93P/HQfZakQD5txsqxXNTBIRv6W9jRRexE+Ut9njihUweEAO6+hBR35lF1HM41a68COXsZwgHOwiitcYzVQmABasVjQzSUT8ksKLwosEANdmj82de/iSAXTk1yKv5xFMCPkAPMKTPM0jAJqZJCJ+STUvIgEgMtLsRdlrbUF/VjCVh3ieBxhLIufyK404zEMnZyU9xaPcyrsAmpkkIgFPPS8iPm7hQhg6tOzXn2Uc45jGUerQnfX8ZuvEjh3ma5qJJCL+Qj0vIgGkT5/SZyaBuY/S5jufYTmXUZe/eI+bSfzvX7z4YsFMpNatzX2X1q3Tho8iEhjU8yLiB4rPTJowAS69tKDQd/fGDMIGxhB8aC/LiONO3mIfzUu9lop6RcQXBUTB7tGjR+nYsSNDhgxh2rRpFX6fwosEqvJmJgEsHPkFV8+6itrksZ+mZBBBA47QgCMcphFP8zBvMhwnNk2rFhGfExDDRk899RS9evXydjNEfEZkJPTrV3pwsdvh5tkD6clafqETYRzgfH6hDbtowiHOZjuzGcEaetOU/TidlFj0TkTEX/hkeElLS+PXX39l0KBB3m6KiF9ISwPDgJ/oQjc2cCnLuYQv6Mn3dGQz/2Y6hwmlJ+v4mKuoSy5OpzkUpRoYEfE3lQ4vq1atYvDgwbRs2RKLxcKSJUtKnJOUlETbtm2pXbs2sbGxrF27tlKfMXbsWKZMmVLZponUWIW3G8ijNl9wKV9yCXUv7kmarSMv8G96s4YDNKEX37OQmwgmr9Rp1Xa7CntFxLdVOrzk5uYSExNDUlJSqa8vWLCAhIQEJk+ezMaNG4mJiSEuLo69e/e6z+natSvnn39+icfu3btZunQp7du3p3379qf/rURqGNeaMDab+dxqhWefhZUrzQXrVqyAxI86crXlY45Shyv5lP/jBupYjlGvnvkeu92claT9kkTE151Rwa7FYuGDDz7g2muvdR+LjY2lR48evPLKKwA4nU6ioqK49957mTBhwimvOXHiRN555x1sNhs5OTkcP36cBx98kEmTJpV6fl5eHnl5ee7n2dnZREVFqWBXaqRTFfUmJ8N7d3/BUq6mLn+xlh7MZBRBfWL5erWNdCLJoYH7fK3WKyLVpdpmGxUPL/n5+dStW5fFixcXCTTDhg3j8OHDLF26tFLXnzNnDj///HO5s40ee+wxHn/88RLHFV5ESrduHYyP/YqPjCupT26R144RwjIu51X+xedcBpiL5A0Z4o2WikhN4rXZRvv378fhcBAeHl7keHh4OBkZGZ78KLeJEyeSlZXlfqSnp1fJ54gEipwcWGlcTCc28zBPsZEL2EszDhNKbfK4lqUsJ45HeQIwuOkmczhJNTAi4it8craRy1133XXKNV5CQkJo2LBhkYeIlM1V3JtOa6bwMN3YSDh7acwhurCJWdwNwBNM4m3uoBb5TJumGhgR8R0eDS9hYWHYbDYyMzOLHM/MzCQiIsKTH1VCUlISnTp1oodW3RIpl6u4t+SWAxZ+ogsjmcVIZnKcIG7nXT5iMPXIcU+t1jYDIuJtHg0vwcHBdOvWjZSUFPcxp9NJSkoKvXv39uRHlTBmzBg2b97MunXrqvRzRAJBfDzs3Aljx5r7I7mMHQtr10KydSRX8TE51COO5aymD1ezFKfDSa9eRfdMUogRkepW6fCSk5NDamoqqampAGzfvp3U1FR27doFQEJCArNmzWLu3Lls2bKF0aNHk5uby/Dhwz3a8OLU8yJSOZGRkJgIu3aZPSnp6ebzHj3MnpkvrHEM4Ev205Qu/MRSrmUHbfnYOYipPERv41uem+akdWsNJ4lI9ar0bKOVK1fSv3//EseHDRvGnDlzAHjllVdITEwkIyODrl278tJLLxEbG+uRBp+K9jYS8Qy7HV58EeZO28cDPM89vEJDjhQ5J51I/sWrfGodzHffQYsW5mq/0dGaXi0ilRMQGzOeLoUXEc9at87cB6meM5uupHIuW/k7qxjMRzQiC4AZjOJBpvOXpS6GUbBzdVycwoyIVExAbMxYWRo2EqkaOTngdMIRGvI1f2c2I7iTt4kgg+dIAOCfzGQ1vTnL+B0wzx8xwqyLcdXHaGhJRDxFPS8iUi673Zwm7XQWHLNYzI0gAS7hC97lNsLZy2FCeZQnSSaeY9Qpch2rFb77zqypEREprkb2vIhI1XBNrXbNSrJYYNYsc1aS1QopDORCNrKa3jQii1e4l5204RXGcDPzaYa5r5nTCbGx6oERkTOnnhcRqZDS9k1KTjaHhwwDapHPCGYxlmmcxQ73+44TxEcM5jVG8wWXar8kESlVjSzYTUpKIikpCYfDwW+//abwIlJNCoeaPXvgotgTDDI+oR8r6c8KurLJfe4ibuReXublhRH07q1iXhEpUCPDi4t6XkS8q3BvDMD5/MxIZjKa1wjCwUEa82+e523uxMDinpkUH+/ddouIdym8KLyIeFXh3pjPPoORI6GzM5Vk4unGRgA+4zLGMo2f6YzNBmvWmDOb1BMjUjMpvCi8iPiUhQth6FCwcYIEpvM4k6nDMQBW05u5DOMjBrOHllgs8Mwz0L27goxITVIjZxtpnRcR39WnjzkzyUEQiYwnhk0s4kaOE0Qf1jCTf7KbVnxLH24wFjFhvKPM9WHsdm0MKVLTqedFRKpF8VoYgOZkMoy5XMcH9OY79/HfiGYiU3if67FaLe71YQpfwzVlOz7eDDIq/hXxbxo2UngR8UmFa2FWrzaHklwi2MM/mcG9vEwTDgGwjDju4yW2WdozcqQZVgovlmezwdSpMH58yUAjIv5F4UXhRcTnlbZyL0A9cniIZxjPs4SQzwlszGUYT/IoOzirxHWs1pKBRuvIiPifGlnzIiL+pfjKvQBjx8JjifWZxBN05ic+4QqCcBDPG2yjHR9zJTeyiJCTxb7FgwuAw2H27ohI4AqYnhctUifin0pbude1k7XTCb1Yw+NM5jI+d7/nEI1YwM3Uve9uhr/STT0vIgFAw0YaNhLxe8nJcPfdBc+j+Y1hzOVO3iKKgqlG2zoN5sbNT7CJGNW8iPgxhReFF5GAYLfDiy/Cc88VFOTOnumgxa8rODT9DYayABtmt8ve/kNxTn6ciIvPLXENzUQS8X0KLwovIgGl8NASFBT6tmcrjzOZm1lgvmC1wm23wb33Qo8eZU6tFhHfo4JdEQkokZHQr5/5My2toEj3N87lFt4jhlT29xlsvvD229CzJ2lNevLN3XMIMf4CzAAzapQWtxMJBAovIuJXoqPNDpbCfrHFcGzBh7B2Ldt63U4ewUQfWsebDMdOJM8wnrP4A4cDFi1SgBHxdwovIuJXik+xtlhg5kzzuL1FD85d+zZRpDOBKeygDU05yHgS3VOtlyaspHWU4d52wLXdwAMPwLBhMGmS176aiFRQwNS8aKq0SM1S2hRr1waQLlYcXMGnjCGJy/nMffxr/sZU6yP0n3IZ4ydYKf5b8NlntTGkSHVTwa4KdkVqnOJTq12sVnj0UZj33zQe4AXuZjYh5APmHkqv8i/mMozDNC7xXhX5ilQfhReFF5EapaytBlzhIy6u4PUW7GYcicSTTEOOAHCUOszjVpIYQyoXFLnGqRa901RsEc/QbCMRqVEKz0AqbMECs9ekcJ3MHlqSwPNcEbOb0bzGj3SmLn9xN8n8wIWspje387Z7C4LythtITobWrWHAAPOnq45GRKqWel5ExO+V1vNSWo+Ja9G7adMKv9vgIr7lX7zKjSwmmOMA7COMZOKZbR3Fyp1nFbnOpEmweTO8/z5F6mW0NYHI6dOwkcKLSI1TkQXpyhpeuvFGaNUKbvp7Bo5ZybRdNsO9BYFhsWC58krebvAvUoLiOHDIyscfl92OFSvMNWlEpHIUXhReRGqk0mYgFbZihTnEU9rxwoHjsUdP0GT1x1yx81Xa/VGwIeTvnM1rjOZNhnOQpqW24cYboWNH+O9/z/DLiNQwCi8KLyJSiooOLxX29LCt1H1rBnfxJo3IAuAYIbzHzSQxhvX0KPV9s2drlpJIZahgV0SkFK7C3cJcC9yVJjkZHnnrXP7N87TiT+KZzUYuoDZ53MVc1tGTtfRgeuc3qcNfRd6rrQhEqk7A9LxokToRqahJk2DXLnOGUFnDO2XVx4BBLN/zL15lKAvca8YcpDFv8A9m8E9+x9xBsvhw1KRJsHOned2RIzXFWqQwDRtp2EhEzlBZ9TEAV10FTZtCh6b7mND8DU688hpB9p3u15cRxwzrGF754woi29iAshfRK15cXDjgqG5GahKFF4UXETlDZfW83H8/vPBCsZMdDpb/+3+cePlVLmcZVk7+Wm3TBkaNYvegeKK6NS91LRooqLv57LOiAUd1M1KTKLwovIiIB1Rk+nVhdjvYv/qd876eQYNFb8DBgwA4awUz7/gQXuVfrKE3YCnx3oUL4eabK1dMLBJIVLArIuIB8fFmbcyKFebPU/WCREZCr9vOocGMRDPJzJmDvWUPrMfzuZ13Wc1FbORC7mYWdcl1v89mMwNS8Z6Z8lb3FanJFF5ERMoRGWkW3Va696NOHZJPDCNq91p6sJY3GM5f1OYCUpnFSP6kFS9yH535kZkzoU8fcxPJwmw2c80aESlKw0YiIlWgtJqZxhzk+S5vclX6azQ99HvBC927Q3w8bx2/hWH3hboPF655USGvBDrVvCi8iIgXTZoE338Py5eXfG3FCuj3dyf/98/P6fjNLM797UNsDnM/JerUYaExhFeOxZMW3pc9GWZtTPGZSlddBU2aKMhIYFF4UXgRES8pa0o0lFGAu28fvP22+cbNm92HD4VF03hsPLsvHUZUj4gyZyrddJO5HUHDhnD4cMV6Z6ZPh+xs8z0JCZX9hiJVQ+FF4UVEvKDshe1MZU19njQJdu4wuCjoe0ZaZ8OCBZCTA4DTauMj55UkE8+nXIGDoFKv3bChGUhO9VkALVpARgZERMCePZX5hiJVR7ONRES8IC2t7OASEVF6mEhOhieegLfetjDqzV4k955tJorkZOjTB6vTwTV8yIdcQzpRTGEC7UgrcZ3CwQXM3p8hQ8xgVPzzMjLMf2dkmM9F/I1P9ry0bduWhg0bYrVaady4MStWrKjwe9XzIiLeUlrPi8UCDzxgDhUVH6Kp0EaRW7bw0wPJhC9/i+bsc5/3FX8nmXgWcyN/Ubfcdrl6YU5nY0qR6lKZv9+l9z/6gNWrV1O/fn1vN0NEpMJcGz8Wrnkpb2G70npqXGu7uMNEx450/mwarSOepnvmx4wKSmbgiWVczCouZhUvcy/zuYVk4llPd0pbAG/ECPjlFzh2rAKfJ+IHfLbn5eeffz6t8KKeFxHxtorWlFSmJ6Rwke07U+0M2jeXeJI5m+3uc36kM8nE8w63c5CmJT6vWTM4cEA9L+KbqrTmZdWqVQwePJiWLVtisVhYsmRJiXOSkpJo27YttWvXJjY2lrVr11bqMywWCxdffDE9evTg3XffrWwTRUS8atw4mDzZ/FkeV09NYTNnlh4kEhLgscfMn7dPiKTW5Ed4eMg2BpDCu9zKMULowk+8yAPspiXzuZmBfI6FgqSybx/ccUfFPk/El1W65+V///sf3377Ld26deP666/ngw8+4Nprr3W/vmDBAu68805mzJhBbGwsL7zwAosWLWLr1q00b94cgK5du3LixIkS116+fDktW7bkzz//pFWrVuzZs4eBAwcyf/58unTpUmp78vLyyMvLcz/Pzs4mKipKPS8i4jfK6qmpyJRm13vPbX6IpIvm0WlNMi0yfnC/voM2vMlw3mQ46bTGZjPXiNm3T7ONxLdU21Rpi8VSIrzExsbSo0cPXnnlFQCcTidRUVHce++9TJgwodKfMW7cOM477zzuuuuuUl9/7LHHePzxx0scV3gREX9RVkipyPBTqe/duJE3+yZz3dF3aUQWAE4sLOcykomnxciradIipNrXedH6MlIer4WX/Px86taty+LFi4sEmmHDhnH48GGWLl16ymvm5ubidDpp0KABOTk5XHzxxcyYMYMePXqUer56XkQkEBVf7K68dVtKExkJB/78i+t5n3iSGUDBrE1H46bY7rgN7rwTLrzQnBJ1BioaSrS+jJTHa7ON9u/fj8PhIDw8vMjx8PBwfv311wpdIzMzk+uuuw4Ah8PBiBEjygwuACEhIYSEhJx+o0VEfIzdDiNHFj02ahTExVW8PiUhAbKz67Bly21csvA2zuZ3hvMm/270JvUO7YaXXoKXXmJ/eCdSz7+DP3rfxsgnotzvLy+QFH8tMbEglEDp7yttfZnKhDGRwnxuqvTZZ5/Npk2bKv2+pKQkkpKScDgcVdAqEZHqU6Ep1KdQODisWgV/ZJxDUsSTPJr+mLnp0ttvw5IlhGVuZmDmRJwpD8OaAWZvzPXXk5hY3x1IEhKKBpbp0+HPP6FVKwgNLRpKHn/cPM/1PqhYGNOQklSGR8NLWFgYNpuNzMzMIsczMzOJcEXyKjJmzBjGjBnj7nYSEfFX0dFgtZac0tyu3eldb9y4gmBAUBBccQVccQVvvZzFV/ct5g7eph9fQUoKpKRwfMRons2/nre4ky8zBpCcbCsSWFz/GzE/v2Qoca30W7h3pSJhrPD1FV7kVDy6PUBwcDDdunUjJSXFfczpdJKSkkLv3r09+VEiIgGrMlOoK6LwNGsXux2GPxDKG8TTn5W0ZTuTLE9wLCqaWvlHuYN3+JzL2EVrDo0Yz9lHfwbgyJGCnpZ9+8reDgHMxfESEsydtK3F/toUD2OuQKTOc6mISoeXnJwcUlNTSU1NBWD79u2kpqaya9cuABISEpg1axZz585ly5YtjB49mtzcXIYPH+7RhheXlJREp06dyq2PERHxF/HxBTUkZe2LdCaK94bspC1PGI9yTYet9GINSfyLgzSmFbsZaySy6lBnNnAhw7NfoDmZZV+4EMOA5583VxkuL4xpvyWpNKOSVqxYYQAlHsOGDXOf8/LLLxutW7c2goODjZ49exrfffddZT/mtGVlZRmAkZWVVW2fKSJSFVq1Mgwwf3paerphWK3m9ct6BHPMuJb3jfe51sijlvuF49iMj7nCuIn3jNocLfcarsfs2YYREWH+OyKi/HbYbOZxqVkq8/fbJ7cHOBPaHkBEAkVVF7EWn47dsGHB5xXfpboJBxjKAu7kLXrxvft4Fg35sPZNvH7sTn5qcBFZR0rv0LfZzO0JMjLMuha73Ty+YgUMGFDy/BUroF+/M/yC4leqbZ0XX1J4ttFvv/2m8CIiUgGutVeKBxbX89L2Q2rPVm7nHe7gbdqy0318l60ti2vfwYzc20mjfYnPCguD/fsLwsv06ebPF14w+1xciu+35MkQp1lNvqtGhhcX9byIiFRcZKQ5y6csrVqZ059L66FpEe5k94Kvee+Kt7ji6CIacsR9znq6MY9bWcBQdtMKmw0eftgs3HUFB9dnN2oEhw8XXL/4gnyu8wr32Jzp9/XEtUqjcHT6FF4UXkREKqQi4cVuL7o6rs1WNABMnw5/HThK110fUmfRW/w9bzlBmNOGnFhYxd8JuuNW/vb8DdC0YLfrwkHC4Sh79V1Prsxb1av8VnU4qih/DFFeW2HXm7RInYhI5SUklD50Y7HAAw8UDN3YbAU/zdV7T64bg+uPY13gZqZfcDPr9+yj2x+LqP/RfGKPf2OuIfP2VzB/jLky3a23wtVX43DUB8zgUvj6hXlyZd6atMpvoK+bo54XERE55V5Kp9OjEBkJ1j93Marhezxy9nw4ucQGwPHguizOv5r53MIyLqdeo2AOHy56fbsd2rQpuVhf8eGnivQylHWtwrU1nuAr+zf5Sg9QZdTInhcRETl98fHw6KMFf3iL90gU722pqHRa81qD8Tzyw3jYsgXmz+f42/OptWMbt/Aet/Aeh2jE/x2+kfwbbiGv18WA2f1S1sq8r71WUPjrCi+uP9RQepDxxJYLp+JLPTuBvuifel5ERATw/P9aL6tHZMWXBuMu2cCtzGMoC2jF7oIXW7SAoUPhlluwt+hBm7aWEr0lTZqYq/u6ejcKtxtK/w6e6nkp6ztVV89ORZzpjuTeUiMLdjVVWkTkzFTXUEPhP/RWHPTla26zzCO+4WKsWYcKTjznHH7oeAu3fXwLW+gEwLBhMHduwSmzZxftMSpeTFxYaX/Us7KKhpFTDUGVdY98Zb0aXwpRlVUjw4uLel5ERE5Pdc5QKbV34I58c8frefNg6VI4etT9+ia68GG9W3nj6M3sMNq4j1ssRQuNXdO4y6o5KV6TUjyMnCrAlfW6r4QGXwlRp0PhReFFRMTnlVvcmpsLH30E8+aR/9Eygjnufulb+jCfW/g/biCDFmVev7ThklOFlVOFl/La7AvDNZUJUb42nboyf789uqu0iIhIRZU1PRqAevXg5pvhww+5sEUGdzOLb4L748TCRazmFe7lT1qxgn78iyTCyShxiVGjYNIkc0ft6dNLb0PxwtbyCl1PtYFkVW+mWRGV2ZF8+nRzAcKy7o0vU3gRERGfdtjahGTu5uZmX7Jgmp0HeJ7V9MaKQT++Iol72E1LVtCP0bzqDjKumUll/YEuHkbuuqvscGK3w8iRRd8/alTJ3plyA1kFTZ9efuA6FV8IUVVNw0YiIuIVFS0QLj684Rq66dZsF0n9F+NcuIjefOc+34GVVfydxZabWBV2PT/vCy+yGnB2tjms8tRTJadPF1Z4uKWitSSeKHqurmv42lowNXKdF62wKyLiXyq6dkzxegxXr0ZGcGtiFyTQYlUCtTJ2cXvIYq7OW0gvvqc/K+lvrMSx7x6+4mI+OzIEMq8nISEcMEPHE0+U/7mF14GJjjYXxiteS9KuXSW/tAf4Wq2KN6jnRURE/Ep5RbYOBwRn7GR4g8X8K2whzbevdb/PabFi7Xcx3HQTu3tdT1S35hXueYGKFeRWRa9J8bDiqV4VX1kN2KVG9ryIiIjYbLCLNsys9yBP7HyQKHZwI4u5iYX0NNaZXS4rVtDSOob09v34769DeJ/r2UfzEmvIFC90LW0V4uLBonhvkid6Sapin6IzWQ3YF3p+1PMiIiJ+pbyeFzD/HRZmbiFQWFu288WoxZyzYSGsX+8+7sDK97X60mfa9XR78jo27oty90acqtfjdNeFKc+ZrkVzqs890zVpqqpWRj0vIiISsCpSKxMUVLJGJd12FiGPjoPIcbB9OyxaxKZHFxJzfAN9jn8F93/FBu5nLT1IOXo9/HY906e3r9bdmU81HbuiyrtH1bHPU1VTeBEREZ9T3tBEac9d57qmF9ts5nonhWtUigwDnXUWjB/PlS+Nx/bnTu4K/YDHu7yP8+tv6Mk6emavg3Mn8kXQeSzker7Jvx6MGMBSZd/zpptKn47drFnRYxXZdLG8oOVLxcenzQgQr7zyitGxY0ejffv2BmBkZWV5u0kiInKaWrUyDDB/nsn7IiLM5xERFTs/JiLDGMFMY0VInGEEBZkvuh5nnWW8Vv9BozffGpEtHRVqZ2Ve//LLoh/nejRuXPAdZs8u+trs2ZW7Py5ncp3T/b/NqWRlZVX477dqXkRExOecbl1FZWfmlFtP8tMh7jvnE/odep9BlmXUMf5yvy/D2oKIf17HkPnXs+TQ3wmLqFWhvZTK+/zvvitZi1J876biz121KgsXVr6I9nRnG/lCzYtW2BURkYCRkGCuTuuR+pTGjVkUcjs38D7nNdsH//d/bLngVo6FNCTCuQdefZVFhwaSQQRPZwxn+b0fwbFj7rdXtn6ltKX9iyve3eCqVTmdpf49sRqwt6jmRUREaqziha2FnxcOH9v31iP50PXEb7we8vLYv/BLltz5PtewhGbsZzhz4JU5ON+oh/WKQRzsew3jH7gSaOz+rFGjIC6u/KLYwtOxGzeGQ4fKb783alUqUnNT1RReRETE51TXH8iyioFd04kLKwgfIfwUOYgRDOKfvMZFfMv1vM/1vE/UUTssXkyTxYvJxMYq/s5SruFDrmaH46wKzehx9YSEhJQsrC0+bFTWpotV5UzWh/EkDRuJiIhP8dR04TNR3nRiKJix4yCIVVzMA7zIWdZdZH74PTzyCMfPPZ8gHAxgBS/yANs5m0104cIP/mOuMXMygZQX0lwzpgqbNct7my5WdHPK6qDwIiIiPsNX/kC6wklhhYdoSqtPmfm6hfDBPeHJJ6n1608sfHob/2Y6K+jHCWx04ScavvQk9OgBkZFs6TeamIxlBJNXZkgrbYdob9WqnCrQVSeFFxER8Rme/gOZkACTJ1e+gLfUcFLKdgHl9YLcNPEc3ov4NwNYQZfmmfDWW3DjjVC/PuzeTcevZrCMQewnjIUM4asR7/DnTwdLtMVXCmtPFeiqk8KLiIj4DE//gTyT2UenCieuthX+Wdbr2bWawh13wKJFsG8fm6Z8ygxGsZsWNCCHISzmLeMOWnZtzoJ9A/g30zn7+NaS04vKUB01QhUJdNVF4UVERHyGL/2BhCrq9ahdm6a3D2KMdQaR2OnBWp7kEX6kMxang4vyVzCdB1m1twNER/Pfw/dxGZ8RYhwr9XLVWSNUkUBXHQImvCQlJdGpUyd69Ojh7aaIiMgZ8JU/kFVh+nSzJ2jhQjOkGVhZTw/+w5Osm/0j/P47k0NfYDmXkkcw/P47/8h9mc+4nJ/2NIVrruG23NdphVkE5I0aIV8YxtIKuyIi4nOqahVXT7fjjFbwtZe+yq1rleCmITnc2/EL5t32CRcf/ZRW7C5y7V9qxVB/yBXcOu9KvqMXTgrSxIoV0K9f+d+tvP2jzuSenC7tKi0iIuIHSuvFKAgS9YFrGd/4Wv48anBZs1Q+u/9T1v/3Ey7M/47zjm+CeZv4likcoAnLuJxPuJIvrHG0a9f0lJ9dHbtkV5WAGTYSEREJXBZ+Cb4AHnmEa5utpjl7ua/x23DzzeTVbURTDnIb85jHbWQYzYkcehE8/TT88AMYhnu4qjLbB/gyhRcRERE/c4Aw3q97O8yfT0jWPq5tsoqpPMSWoPOxGk5YvRoeeQQuvBBatqTVf4az+fGFJE87xX4DfkLDRiIiIj6svP2XAAgKYn2dviylL6+ET8W+ehd8+qn5SEmBjAyGMoehzOHEHhv8rRcMGgRXXAFdu5p7DvgZhRcREZEqUiJonOY1ynteQuvW8M9/mo+8PPj6a2Ze9z/65vyPTmyBb781H48+Cs2bw8CBcOml5qNVq9NvaDVSeBERESnDqcJHRV4vrNp3ZA4JgYEDeSJ0IH/mPEfP8J18/9j/4H//M3tl9u6FefPMB0DHjgVB5uKLoUGDampo5Si8iIiIlOFUvRyVmbHjCxtO/hnUpqBXJj8f1qyBzz83H+vXw5Yt5uOllyAoCHr3NoPMwIHmnkxBvhEbfKMVIiIihXhiuMWXlLWYXLNm3mkPAMHBZu/KxRfDk0/CoUPw5ZcFYeaPP+Drr83HpEkQGgr9+3NnzqUs4lL+ItprTffJ8LJ9+3b+8Y9/kJmZic1m47vvvqNevXrebpaIiFQTf16DpDRlbTh54oR32lOqxo3hhhvMB5jhxRVkUlLg8GFYsoSnWcIQujKYH7zWVJ8ML3fddRdPPvkkffv25eDBg4SEhHi7SSIiIqfNteFk4QBjs8Ho0eZxn+xhOvtss3to1CgzaW3YAJ9/zpr/fk5K/t+82jSfCy+//PILtWrVom/fvgA0adLEyy0SERE5M64NJ+++u+DYzJnVt2/TGRcK22zQsyf07MmaOo9wIhsSvBi4Kr1I3apVqxg8eDAtW7bEYrGwZMmSEuckJSXRtm1bateuTWxsLGvXrq3w9dPS0qhfvz6DBw/mwgsv5Omnn65sE0VERHyOtzacrGihcGmr8JZ2LCHBPObNob1K97zk5uYSExPDP/7xD66//voSry9YsICEhARmzJhBbGwsL7zwAnFxcWzdupXmzZsD0LVrV06UMtC3fPlyTpw4wddff01qairNmzfn8ssvp0ePHlx66aWn8fVERER8R3XvyFxWoXBcnNkbVNj06QUbLrqCSWnHfEGlw8ugQYMYNGhQma9Pnz6dESNGMHz4cABmzJjBJ598whtvvMGECRMASE1NLfP9rVq1onv37kRFRQFwxRVXkJqaWmZ4ycvLIy8vz/08Ozu7sl9JREQkIJVVKLxtW8nw4k88urdRfn4+GzZsYODAgQUfYLUycOBA1qxZU6Fr9OjRg71793Lo0CGcTierVq2iY8eOZZ4/ZcoUQkND3Q9X6BEREanpXIXChdls0K6dd9rjKR4NL/v378fhcBAeHl7keHh4OBmuAbdTCAoK4umnn+bvf/87Xbp0ITo6mquuuqrM8ydOnEhWVpb7kZ6efkbfQURExN8kJMDkySWHdlyFwoXNnOnfvS7gg7ON4NRDU4WFhIQQEhJCUlISSUlJOKptzWURERHfUF49Sny8uY1RRkb1FgpXJY/2vISFhWGz2cjMzCxyPDMzkwhXiXUVGTNmDJs3b2bdunVV+jkiIiL+proLhauaR8NLcHAw3bp1IyUlxX3M6XSSkpJC7969PflRIiIiUkNVetgoJyeHbdu2uZ9v376d1NRUmjRpQuvWrUlISGDYsGF0796dnj178sILL5Cbm+uefVRVNGwkIiJSM1Q6vKxfv57+/fu7nyecHGgbNmwYc+bMYejQoezbt49JkyaRkZFB165dWbZsWYkiXk8bM2YMY8aMITs7m9DQ0Cr9LBEREfGeSoeXfv36YRhGuefcc8893HPPPafdKBEREZGyeLTmxZuSkpLo1KkTPXr08HZTREREpAoFTHjRbCMREZGaIWDCi4iIiJy+0naePuPdqKtIwIQXDRuJiIicntJ2nq7obtTeYDFOVX3rZ1yzjbKysmjYsKG3myMiIuIWGVmwS7Pd7hufa7dDmzZFN3B07YdU+JjNBjt2VN3WApX5+x0wPS8iIiJSeaXtPO10lr0btS/wyb2NREREAlFCAmRngy8NDLh2nq5Iz4uv7Eat8CIiIlJNyttA0VtcO0/ffXfBMddO1IWP+dJu1AEzbKSCXRERkdMTH2/uOA0FO0+XdsxXBEx40TovIiIip6+0nad9dTfqgAkvIiIiUjMovIiIiIhfUXgRERERvxIw4UUFuyIiIjVDwIQXFeyKiIjUDAETXkRERKRmUHgRERERv6LwIiIiIn5F4UVERET8SsCEF802EhERqRkCZmPGMWPGMGbMGLKzswkNDfV2c0RERHyGL+5mfSYCJry4GIYBQHZ2tpdbIiIi4hsK7w5d1p9Hp7Pgp+uc0o5VFdffbdff8fJYjIqc5UfsdjtRUVHeboaIiIichvT0dCIjI8s9J+DCi9PpZPfu3TRo0ACLxVLktezsbKKiokhPT6dhoPSdeZnuqefpnnqe7mnV0H31vJp8Tw3D4MiRI7Rs2RKrtfyS3IAbNrJaradMbA0bNqxx/1FUNd1Tz9M99Tzd06qh++p5NfWeVrRmNWBmG4mIiEjNoPAiIiIifqVGhZeQkBAmT55MSEiIt5sSMHRPPU/31PN0T6uG7qvn6Z5WTMAV7IqIiEhgq1E9LyIiIuL/FF5ERETEryi8iIiIiF9ReBERERG/4vfhJSkpibZt21K7dm1iY2NZu3ZtuecvWrSIDh06ULt2bTp37synn35a5HXDMJg0aRItWrSgTp06DBw4kLS0tKr8Cj7H0/f0rrvuwmKxFHlcfvnlVfkVfE5l7ukvv/zCDTfcQNu2bbFYLLzwwgtnfM1A5Ol7+thjj5X477RDhw5V+A18T2Xu6axZs+jbty+NGzemcePGDBw4sMT5+n3q+Xuq36cnGX7svffeM4KDg4033njD+OWXX4wRI0YYjRo1MjIzM0s9/9tvvzVsNpvx7LPPGps3bzYeffRRo1atWsZPP/3kPmfq1KlGaGiosWTJEmPTpk3G1VdfbZx11lnGX3/9VV1fy6uq4p4OGzbMuPzyy409e/a4HwcPHqyur+R1lb2na9euNcaOHWvMnz/fiIiIMJ5//vkzvmagqYp7OnnyZOO8884r8t/pvn37qvib+I7K3tNbb73VSEpKMn744Qdjy5Ytxl133WWEhoYadrvdfY5+n3r+ntb036cufh1eevbsaYwZM8b93OFwGC1btjSmTJlS6vk33XSTceWVVxY5Fhsba4waNcowDMNwOp1GRESEkZiY6H798OHDRkhIiDF//vwq+Aa+x9P31DDM/2e75pprqqS9/qCy97SwNm3alPqH9kyuGQiq4p5OnjzZiImJ8WAr/cuZ/jd14sQJo0GDBsbcuXMNw9DvU8Pw/D01DP0+dfHbYaP8/Hw2bNjAwIED3cesVisDBw5kzZo1pb5nzZo1Rc4HiIuLc5+/fft2MjIyipwTGhpKbGxsmdcMJFVxT11WrlxJ8+bNOffccxk9ejQHDhzw/BfwQadzT71xTX9Sld8/LS2Nli1bcvbZZ3Pbbbexa9euM22uX/DEPT169CjHjx+nSZMmgH6fVsU9dampv08L89vwsn//fhwOB+Hh4UWOh4eHk5GRUep7MjIyyj3f9bMy1wwkVXFPAS6//HLeeustUlJSeOaZZ/jqq68YNGgQDofD81/Cx5zOPfXGNf1JVX3/2NhY5syZw7Jly3jttdfYvn07ffv25ciRI2faZJ/niXv60EMP0bJlS/cfa/0+9fw9hZr9+7SwgNtVWnzPzTff7P53586d6dKlC+eccw4rV67kkksu8WLLRAoMGjTI/e8uXboQGxtLmzZtWLhwIfHx8V5sme+bOnUq7733HitXrqR27drebk5AKOue6vepyW97XsLCwrDZbGRmZhY5npmZSURERKnviYiIKPd818/KXDOQVMU9Lc3ZZ59NWFgY27ZtO/NG+7jTuafeuKY/qa7v36hRI9q3b6//Tk9xT6dNm8bUqVNZvnw5Xbp0cR/X71PP39PS1KTfp4X5bXgJDg6mW7dupKSkuI85nU5SUlLo3bt3qe/p3bt3kfMBPv/8c/f5Z511FhEREUXOyc7O5vvvvy/zmoGkKu5paex2OwcOHKBFixaeabgPO5176o1r+pPq+v45OTn8/vvv+u+0nHv67LPP8sQTT7Bs2TK6d+9e5DX9PvX8PS1NTfp9WoS3K4bPxHvvvWeEhIQYc+bMMTZv3myMHDnSaNSokZGRkWEYhmHccccdxoQJE9znf/vtt0ZQUJAxbdo0Y8uWLcbkyZNLnSrdqFEjY+nSpcaPP/5oXHPNNTVuap8n7+mRI0eMsWPHGmvWrDG2b99ufPHFF8aFF15oREdHG8eOHfPKd6xulb2neXl5xg8//GD88MMPRosWLYyxY8caP/zwg5GWllbhawa6qrinDz74oLFy5Upj+/btxrfffmsMHDjQCAsLM/bu3Vvt388bKntPp06dagQHBxuLFy8uMm33yJEjRc7R71PP3VP9Pi3g1+HFMAzj5ZdfNlq3bm0EBwcbPXv2NL777jv3axdffLExbNiwIucvXLjQaN++vREcHGycd955xieffFLkdafTafznP/8xwsPDjZCQEOOSSy4xtm7dWh1fxWd48p4ePXrUuOyyy4xmzZoZtWrVMtq0aWOMGDGixvyRdanMPd2+fbsBlHhcfPHFFb5mTeDpezp06FCjRYsWRnBwsNGqVStj6NChxrZt26rxG3lfZe5pmzZtSr2nkydPdp+j36eevaf6fVrAYhiGUb19PSIiIiKnz29rXkRERKRmUngRERERv6LwIiIiIn5F4UVERET8isKLiIiI+BWFFxEREfErCi8iIiLiVxReRERExK8ovIiIiIhfUXgRERERv6LwIiIiIn5F4UVERET8yv8DfCEswmB6BW8AAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fitter = CurveFitter(objective)\n", "fitter.fit('differential_evolution')\n", "objective.plot()\n", "plt.yscale('log')" ] }, { "cell_type": "markdown", "id": "55cf4ff4-1d2b-47df-9278-eb1b9d226853", "metadata": {}, "source": [ "### updating the model within the ORSO file using a `Structure`\n", "\n", "Once you've fitted the data you'll need to update the model within the original ORSO file, it's not done automatically. This is done by using the `OrsoDataset.update_model` method, you need to supply a `Structure` object to do so. Again, there's no link between the `Structure` originally created by `OrsoDataset.setup_analysis()` and the model contained within the `OrsoDataset`.\n", "\n", "Once the update is done you'll need to resave the ORSO file." ] }, { "cell_type": "code", "execution_count": 11, "id": "de27254b-7b55-49cd-89a4-c42a9e82589f", "metadata": {}, "outputs": [], "source": [ "data.update_model(s)\n", "data.save(\"Ni_example_updated.ort\")" ] } ], "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.6" } }, "nbformat": 4, "nbformat_minor": 5 }