diff --git a/dpm_tools/io/_read_data.py b/dpm_tools/io/_read_data.py index 7b2f794..39fe84f 100644 --- a/dpm_tools/io/_read_data.py +++ b/dpm_tools/io/_read_data.py @@ -181,7 +181,7 @@ def _not_implemented(): raise NotImplementedError("No support for this datafile type... yet") -def read_image(read_path: pathlib.Path, **kwargs) -> np.ndarray: +def read_image(read_path: str, **kwargs) -> np.ndarray: """ A general use function for reading in an image of the implemented filetypes Currently supports reading in tiff, raw, and mat. @@ -193,6 +193,7 @@ def read_image(read_path: pathlib.Path, **kwargs) -> np.ndarray: Returns: np.ndarray: The image array """ + read_path = pathlib.Path(read_path) filetypes = {'.tiff': _read_tiff, '.tif': _read_tiff, diff --git a/dpm_tools/visualization/_plot_3d.py b/dpm_tools/visualization/_plot_3d.py index 01b8349..f925d38 100644 --- a/dpm_tools/visualization/_plot_3d.py +++ b/dpm_tools/visualization/_plot_3d.py @@ -11,7 +11,7 @@ def orthogonal_slices(data, fig: pv.DataSet = None, show_slices: list = None, pl Plots 3 orthogonal slices of a 3D image. Parameters: - data: A dataclass containing 3D image data + data: A np array containing 3D image data fig: Pyvista plotter object show_slices: List of slices in x, y, z to show. Default is middle slice in each direction. plotter_kwargs: Additional keyword arguments to pass to the plotter. @@ -40,6 +40,7 @@ def orthogonal_slices(data, fig: pv.DataSet = None, show_slices: list = None, pl assert 0 <= y_slice < data.ny, "Y-slice value outside image dimensions" assert 0 <= z_slice < data.nz, "Z-slice value outside image dimensions" + # Initialize plotter object if fig is None: fig = _initialize_plotter(**plotter_kwargs) @@ -162,7 +163,9 @@ def plot_isosurface(data, fig: pv.Plotter = None, show_isosurface: list = None, if fig is None: fig = _initialize_plotter(**plotter_kwargs) + pv_image_obj = _wrap_array(data.scalar) + if show_isosurface is None: show_isosurface = [(np.amax(data.scalar)+np.amin(data.scalar))/2] @@ -239,9 +242,9 @@ def plot_glyph(vector_data, fig: pv.Plotter = None, glyph: pv.PolyData = None, g 'factor': scale_factor} if vector_data.vector is not None: - glyph_kwargs['orient'] = [vector_data.vector[i][::glyph_space, ::glyph_space, - ::glyph_space]/np.max(vector_data.magnitude) for i in range(3)] + glyph_kwargs['orient'] = [vector_data.vector[i][::glyph_space, ::glyph_space, ::glyph_space]/np.max(vector_data.magnitude) for i in range(3)] + # plotter_kwargs, mesh_kwargs = _initialize_kwargs(plotter_kwargs, mesh_kwargs) x, y, z = np.mgrid[:vector_data.nx:glyph_space, :vector_data.ny:glyph_space, :vector_data.nz:glyph_space] @@ -422,6 +425,7 @@ def plot_medial_axis(data, fig: pv.Plotter = None, show_isosurface: list = None, fig = _initialize_plotter(**plotter_kwargs) medial_axis = skimage.morphology.skeletonize(data.scalar) + pv_image_obj = _wrap_array(medial_axis) contours_ma = pv_image_obj.contour(isosurfaces=[0.5]) diff --git a/examples/Vector_Field_Visualization_Tutorial.ipynb b/examples/Vector_Field_Visualization_Tutorial.ipynb new file mode 100644 index 0000000..a83e00b --- /dev/null +++ b/examples/Vector_Field_Visualization_Tutorial.ipynb @@ -0,0 +1,391 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "8c81d0ea", + "metadata": {}, + "source": [ + "## This notebook contains examples for 3D visualization of vector fields using DPM Tools." + ] + }, + { + "cell_type": "markdown", + "id": "e9d762e8", + "metadata": {}, + "source": [ + "Tutorial Contact: [Cinar Turhan](https://www.linkedin.com/in/cinarturhan/)" + ] + }, + { + "cell_type": "markdown", + "id": "c9a6b693", + "metadata": {}, + "source": [ + "Importing the required packages." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "9673eef2", + "metadata": {}, + "outputs": [], + "source": [ + "import requests\n", + "import numpy as np\n", + "import pyvista as pv\n", + "pv.set_jupyter_backend('server')\n", + "import warnings\n", + "warnings.filterwarnings('ignore')" + ] + }, + { + "cell_type": "markdown", + "id": "cb3b8aad", + "metadata": {}, + "source": [ + "Importing visualization moduel of the dpm_tools package." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "6766be6c", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/html": [ + "
[19:17:32] ERROR    PARDISO solver not installed, run `pip install pypardiso`. Otherwise,          _workspace.py:56\n",
+       "                    simulations will be slow. Apple M chips not supported.                                         \n",
+       "
\n" + ], + "text/plain": [ + "\u001b[2;36m[19:17:32]\u001b[0m\u001b[2;36m \u001b[0m\u001b[1;31mERROR \u001b[0m PARDISO solver not installed, run `pip install pypardiso`. Otherwise, \u001b]8;id=862055;file:///home/gomathecat/myvenvs/dpm_tools_venv/lib64/python3.11/site-packages/openpnm/utils/_workspace.py\u001b\\\u001b[2m_workspace.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=145524;file:///home/gomathecat/myvenvs/dpm_tools_venv/lib64/python3.11/site-packages/openpnm/utils/_workspace.py#56\u001b\\\u001b[2m56\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m simulations will be slow. Apple M chips not supported. \u001b[2m \u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from dpm_tools import visualization as dpm_vis\n", + "from dpm_tools import io" + ] + }, + { + "cell_type": "markdown", + "id": "c1c8bf85", + "metadata": {}, + "source": [ + "Define a function to download data from Digital Porous Media Portal. The data is a velocity field data along with the corresponding 3D image of the Bentheimer Sandstone and is available on the Digital Porous Media Portal (https://www.digitalrocksportal.org/projects/11).\n", + "\n", + "Data Citation:
\n", + "Muljadi, B. (2015, September 28). Bentheimer Sandstone. Retrieved May 19, 2024, from www.digitalrocksportal.org \n", + "\n", + "We download the image and velocity field components vx, vy, and vz in the following cell.\n", + "\n", + "**Warning**
\n", + "Executing the cell below may take some time based on your network connection." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "508d0b75", + "metadata": {}, + "outputs": [], + "source": [ + "# Function to download files\n", + "def download_file_url(file_url,filename):\n", + " # download file\n", + " r = requests.get(file_url, stream = True) \n", + "\n", + " with open(filename,\"wb\") as f: \n", + " for chunk in r.iter_content(chunk_size=1024): \n", + "\n", + " # writing one chunk at a time to pdf file \n", + " if chunk: \n", + " f.write(chunk)\n", + " return()\n", + "\n", + "# Downloading the data\n", + "parent_dir = '../data/'\n", + "\n", + "file_names = ['bentheimer_image.raw', 'vx.raw', 'vy.raw', 'vz.raw']\n", + "file_dirs = [parent_dir+file for file in file_names]\n", + "file_links = ['https://www.digitalrocksportal.org/projects/11/images/65559/download/',\n", + " 'https://www.digitalrocksportal.org/projects/11/images/65553/download/',\n", + " 'https://www.digitalrocksportal.org/projects/11/images/65554/download/',\n", + " 'https://www.digitalrocksportal.org/projects/11/images/65557/download/']\n", + "\n", + "for i in range(0,len(file_dirs)):\n", + " download_file_url(file_links[i],file_dirs[i])" + ] + }, + { + "cell_type": "markdown", + "id": "60a4eb93", + "metadata": {}, + "source": [ + "Loading the data to the notebook and reshaping it using the metadata from Digital Porous Media Portal (https://www.digitalrocksportal.org/projects/11)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "b4453309", + "metadata": {}, + "outputs": [], + "source": [ + "# Importing the image:\n", + "metadata = {\n", + " 'bits': 8,\n", + " 'signed': 'unsigned',\n", + " 'byte_order': 'little',\n", + " 'nx': 1000,\n", + " 'ny': 1000,\n", + " 'nz': 1000,\n", + "}\n", + "\n", + "bentheimer_ss_scalar = io.read_image(read_path='../data/bentheimer_image.raw', meta=metadata)\n", + "\n", + "# Reducing the size for faster visualization (subset selected randomly)\n", + "bentheimer_ss_scalar = bentheimer_ss_scalar[105:205, 155:255, 115:215]\n", + "\n", + "# Reading the velocity field data and reshaping it from the metadata from DPMP.\n", + "bentheimer_ss_vx = np.fromfile(\"../data/vx.raw\", dtype=np.float64)\n", + "bentheimer_ss_vx = bentheimer_ss_vx.reshape((500,500,500))\n", + "\n", + "bentheimer_ss_vy = np.fromfile(\"../data/vy.raw\", dtype=np.float64)\n", + "bentheimer_ss_vy = bentheimer_ss_vy.reshape((500,500,500))\n", + "\n", + "bentheimer_ss_vz = np.fromfile(\"../data/vz.raw\", dtype=np.float64)\n", + "bentheimer_ss_vz = bentheimer_ss_vz.reshape((500,500,500))\n", + "\n", + "# Reducing the size using the same subset from the image above.\n", + "bentheimer_ss_vx = bentheimer_ss_vx[105:205, 155:255, 115:215]\n", + "bentheimer_ss_vy = bentheimer_ss_vy[105:205, 155:255, 115:215]\n", + "bentheimer_ss_vz = bentheimer_ss_vz[105:205, 155:255, 115:215]\n", + "\n", + "\n", + "## Creating a DRP Tools Image class, specifying the image, the scalar data, and the vectors\n", + "bentheimer_ss_data = io.Image(scalar=bentheimer_ss_scalar, \n", + " vector=[bentheimer_ss_vx,\n", + " bentheimer_ss_vy,\n", + " bentheimer_ss_vz])" + ] + }, + { + "cell_type": "markdown", + "id": "6bce1014", + "metadata": {}, + "source": [ + "Let's visuzalize a slice from our dataset." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "808c241c", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAB1QAAAY3CAYAAADY4E2MAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAD2EAAA9hAHVrK90AACR7klEQVR4nOzdabRU5Z0u8H8dC0EZBFRkEBREjQo0RETRTisBIU6kr3rj2EYFNb24dmKv2CZqbLkriYmmOx1NGzEmaAajV00UMXgcANGIEwbUGIeoOAAqehABZTq17wdNK6nzekbOLqzfb6368t+13/24KbJ0PXn3LmRZlgUAAAAAAAAAZWryDgAAAAAAAABQqRSqAAAAAAAAAAkKVQAAAAAAAIAEhSoAAAAAAABAgkIVAAAAAAAAIEGhCgAAAAAAAJCgUAUAAAAAAABIUKgCAAAAAAAAJChUAQAAAAAAABIUqgAAAAAAAAAJClUAAAAAAACABIUqAAAAAAAAQIJCFQAAAAAAACBBoQoAAAAAAACQoFAFAAAAAAAASFCoAgAAAAAAACQoVAEAAAAAAAASFKoAAAAAAAAACQpVAAAAAAAAgASFKgAAAAAAAECCQhUAAAAAAAAgQaEKAAAAAAAAkKBQBQAAAAAAAEhQqAIAAAAAAAAkKFQBAAAAAAAAEhSqAAAAAAAAAAkKVQAAAAAAAIAEhSoAAAAAAABAgkIVAAAAAAAAIEGhCgAAAAAAAJCgUAUAAAAAAABIUKgCAAAAAAAAJChUAQAAAAAAABIUqgAAAAAAAAAJClUAAAAAAACABIUqAAAAAAAAQEIx7wAAAAAAAACVZNWqVfHUU0/lHWOLNGTIkOjatWveMaBNKVQBAAAAAAA+5qmnnooDDzww7xhbpAcffDBGjx6ddwxoUx75CwAAAAAAAJBQ8TtUS6/vnncEEib0HZ53BKCd1C5dmHeELYL/XQQA/sq/PwEArVXT+/m8IwDwITtUAQAAAAAAABIqfocqAAAAAABA3n5yaa8YutfWeceoKE/+eX3887+9mXcM2OwUqgAAAAAAAI0YutfWMXrkNnnHAHLgkb8AAAAAAAAACXaoAgAAAAAANKIUWZSilHeMilKKLO8I0C7sUAUAAAAAAABIUKgCAAAAAAAAJChUAQAAAAAAABK8QxUAAAAAAAAi4v3334+nn346nn/++airq4uVK1dGhw4dokePHtGjR4/Ye++9Y88994xCoZB31Fxs2LAhHn/88XjmmWdi+fLlsXbt2ujSpUv07ds3hg4dGnvttVfeETcLhSoAAAAAAABV6c0334w5c+bE7Nmz47777ovnn38+SqXSJ57To0eP+NznPheTJ0+OI444ImpqWvdA2FNPPTWuu+66Vq3xt3bZZZdYvHhxm633yCOPxI9+9KO4/fbbY9WqVcnv9e3bN0466aQ4++yzo3///m12/bwpVAEAAAAAABpRykpRn31y0VZtSlvo/XjjjTfilltuiZtuuinmzZvXaIH6t1asWBEzZsyIGTNmxK677hqXX355HHXUUZspbb7eeeedOPvss+NXv/pVk76/dOnSuOyyy+LHP/5xfOtb34pvfOMbn4rdvN6hCgAAAAAAQNW44IILYsqUKTF37txml6l/a/HixTFx4sQ47bTTYt26dW2UsDK8+OKLsd9++zW5TP24999/P84///yYOHFirF27djOka192qAIAAAAAAMDH9OjRI3r16hW9evWKiIjly5fHc889lyxgr7322nj77bfjlltuiQ4dOrRn1M1i2bJl8fnPfz5efvnlBo937do19t577+jSpUssX748/vznP8eGDRvKvjdz5sw45phjYsaMGbHVVltt7tibjUIVgEZN6Ds8l+vWLl2Yy3UBAAAAgOrSpUuXOProo2PMmDHxD//wDzFo0KCy77z77rtxxx13xGWXXRZ//OMfy47ffvvtMWXKlLj66qtbnefCCy+MI444osXnd+zYscXn1tfXx/HHH99gmbrnnnvGJZdcEkcddVQUix/VjO+8805Mnz49pk6dGitXrtzknN///vfx7//+7/Htb3+7xZnyplAFAAAAAACgKo0ePTrOPPPM+N//+39H586dP/G73bp1ixNOOCGOO+64+Pa3vx3//u//Xvada665Jk499dQ48MADW5Vrt912iwMOOKBVa7TUT37yk5g3b17Z/PDDD4+bbroptt1227Jj3bt3j3POOScmTpwYY8eOLStjv/e978WXvvSlGDZs2GbLvTl5hyoAAAAAAABV5aCDDoq77747HnzwwTj11FMbLVM/rqamJi666KL43ve+V3Ysy7K44IIL2jJqu1q1alVcdNFFZfMhQ4bEzTff3GCZ+nG77bZbzJo1q+x79fX18fWvf71Ns7YnhSoAAAAAAEAjssii5LPJJ4ss7z+WFpk6dWo88MADMW7cuFatc95558Xo0aPL5vPmzYs333yzVWvnZdq0abFixYqy+U9/+tPYZpttmrTGXnvtFd/61rfK5nfffXcsWLCg1RnzoFAFAAAAAACgavTr16/N1jr33HPLZqVSKWpra9vsGu3ppz/9adnsC1/4QrMfP/wv//Iv0bNnzyatvyVQqAIAAAAAAEALHHrooVEoFMrmf/sO0S3BggUL4rnnniubn3nmmc1ea9ttt40TTzyxbH7TTTfFxo0bW5QvTwpVAAAAAAAAaIEuXbpEjx49yuavv/56DmlaZ9asWWWzbbbZJg477LAWrXfssceWzerq6uLhhx9u0Xp5UqgCAAAAAABAC3Xo0KFsVlOz5VVwc+bMKZsddNBB0alTpxatN3r06Abfuzp79uwWrZenLe9PEwAAAAAAACrAmjVrYvny5WXzPn365JCm5bIsiwULFpTN999//xavufXWW8fw4cPL5g1dp9IV8w4AAAAAAABQ6UqRRSlKeceoKKXI8o6Qu/vuuy9KpfLfxeDBg9tk/VKpFG+99Va89dZbsW7duujRo0f07NkzunXr1ibr/9XLL78cK1euLJsPGTKkVesOGzYs5s+fv8ls0aJFrVozDwpVAAAAAAAAaIHp06eXzTp06BDjx49v1br/7//9v/j1r38dDz30UKxevbrseJcuXeKAAw6Iv//7v48jjjgiRo4c2arrvfDCCw3OW1sM77bbbmWzV199NTZu3BjF4pZTU3rkLwAAAAAAADTTokWL4re//W3ZfMyYMbHddtu1au1Zs2bFPffc02CZGhGxevXquOeee+Liiy+O/fbbLz73uc/Frbfe2uLrLV68uMF5v379Wrxm6vz6+vp49dVXW7Vue9tyql8AAAAAAAAq2pNPPtnqNUaPHt0GSTav+vr6+MpXvtLg437PPffcds/zwAMPxAMPPBDHHnts/PSnP43u3bs36/yG3gNbKBSiV69ercrVu3fv5PUGDhzYqrXbk0IVAAAAAACANnHWWWe1eo0sq/x3s37nO9+Jhx56qGx+xBFHxLhx43JI9IGbb745HnnkkZgzZ04MGjSoyefV1dWVzTp37hxbbbVVq/Kk3vX69ttvt2rd9qZQBQAAAAAAaEQpy6J+Cyj62lOpSu9HbW1tTJ06tWy+3XbbxZVXXtmqtXffffeYMGFC7LvvvrHPPvtE//79o2vXrrH11ltHXV1dvPHGG/Hwww/HPffcE7/73e9iw4YNZWu88sor8YUvfCH+8Ic/xI477tik66be09panTt3bnC+Zs2aVq/dnhSqAPAxE/oOzzsCAAAAAFChnn766TjuuOMafNTvVVddFQMGDGj2mn369InzzjsvTj/99Nhjjz2S39tpp51ip512imHDhsUZZ5wRS5cujQsvvDCmT59e9t3nn38+jj/++Lj33nublKGhYrZYbH2N2KFDhwbn69evb/Xa7UmhCgAAAAAAAI1YsmRJHH744bFy5cqyY2effXYcf/zxLVr3kksuadF5ffv2jZ///Odx6KGHxj/90z9FfX39Jsdnz54dM2bMiIkTJza61t+eGxGtftzvJ62xcePGVq/dnhSqAAAAAAAAtIlp06bF0KFD847R5pYvXx7jx4+Pl19+uezYF7/4xfjhD3+YQ6oPnHDCCbFmzZo444wzyo6df/75TSpUG9qN2halZ2qN1M7VSqVQBQAAAAAAoE0MHTo0Ro8enXeMNrVixYoYP358PP3002XHxo8fHzfeeGOb7OZsjcmTJ8dvfvObmD179ibzP/3pT/HMM8/EZz7zmU88v2PHjmWztngsb2qNhq5XyWryDgAAAAAAAACV6N13340JEybEwoULy44dfPDBceutt1ZMOfitb32rwfnvf//7Rs/t2rVr2WzVqlWtzpRao1u3bq1euz3ZoQoAAAAAANCIUmRRiizvGBXl034/Vq9eHYcddlg8+uijZccOPPDAmDlzZmyzzTY5JGvY3//930f37t3jnXfe2WTeUP6/tf3225fN1q5dG+vWrWtVYfy3WT7pepXMDlUAAAAAAAD4mDVr1sThhx8eDz74YNmxUaNGxaxZs6JLly45JEsrFosxbNiwsvkbb7zR6Lm9e/ducP7666+3KlPq/NT1KpVCFQAAAAAAAD703nvvxZFHHhn3339/2bHPfvazUVtbW7GPrO3Vq1fZ7M0332z0vIEDBzY4f+WVV1qVp6HzO3XqpFAFAAAAAACALdH7778fEydOjLlz55YdGzZsWNx9993RvXv3ds/VGuvXr2/0O7vvvnuD8+eee65V137++efLZoMHD45CodCqddubQhUAAAAAAICqt3bt2vjiF78Y9957b9mxIUOGxL333hs9e/bMIVnTNbQbtSm7aXfcccfo169f2XzRokWtyvPHP/6xbDZ8+PBWrZkHhSoAAAAAAABVbd26dXH00UfH3XffXXZsr732invvvTd22GGHHJI13caNG+OJJ54omw8YMKBJ5++///5ls4beIdtU77zzTvz5z39u0nUqnUIVAAAAAACgEaXIot5nk08psrz/WNrE+vXr49hjj41Zs2aVHdtzzz1j9uzZDb6btNLcf//98c4775TNR4wY0aTzx40bVzb74x//GMuXL29RnnvuuSdKpVKTrlPpFKoAAAAAAABUpY0bN8Zxxx0XM2fOLDu2xx57xJw5c6J37945JGu+b3/72w3Ox44d26TzjzjiiLJ3m5ZKpbjppptalOeGG24om+2+++7xmc98pkXr5UmhCgAAAAAAQNWpr6+PE044IW699dayY4MHD47Zs2dHnz592j9YC1xzzTUxe/bssvmgQYNi9OjRTVpjwIAB8Q//8A9l8x//+MeRZc3bjfzqq6/GbbfdVjY/+eSTm7VOpSjmHQAAAAAqUe3ShXlHAAAANpNSqRSnnHJK3HzzzWXHBg0aFHPmzIl+/fpt1gzPPPNMrF69OkaOHNmqdX7zm9/EV77ylQaPnXfeeWW7Tj/J//k//yfuu+++TWZ//vOf49prr43TTjutyetccMEFsXHjxk1mHTt2jDPOOKPJa1QSO1QBAAAAAACoGlmWxaRJk+L6668vOzZw4MCYM2dO7Lzzzps9xzPPPBP77bdfjBkzJm688cZYtWpVs85ftmxZTJ48OU488cSor68vO77ffvvF5MmTm7Xm0UcfHfvss0/Z/Jxzzom//OUvTVrjxhtvjF/+8pdl80mTJm0xO37/lh2qAAAAAAAAVI2zzz47rr322rL5tttuG5dcckksXbo0li5d2qprdOzYMUaMGNGk786dOzfmzp0bHTt2jM9//vMxatSoGDZsWOy1117Ro0eP6NatW3To0CHeeeedeP311+Phhx+Oe+65J37729/Ghg0bGlyzV69ecdNNN0VNTfP2VtbU1MTll19e9t7VlStXxtixY2PGjBnxd3/3d8nzf/3rX8fpp59eNu/Zs2f83//7f5uVpZIoVAEAAAAAABpRiohSNO89kp92pbwDtNDMmTMbnL/33ntx/PHHt8k1dtlll1i8eHGzzlm3bl3MmjUrZs2a1apr77zzznHnnXfGLrvs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7bfHlClTWnT9J598Ms4888wGy9STTjopnn766Vi8eHHMnTs37rvvvnjllVfiqaeeihNOOKHs+1mWxeTJk+PJJ59sUZbVq1fHMccc02CZOmrUqLjnnnvirbfeigceeCDuvffeePrpp2PJkiVx0UUXRceOHcvOmTZtWlxzzTUtylIpFKoAAAAAAABUpdGjR8f06dPj9ddfj+uuuy5OPfXUGDRoUIPf7datW5xwwgnx2GOPxdSpUxv8zjXXXNPs95iWSqWYNGlSvP/++5vMa2pq4pprrolf/epXsddee5Wdt88++8T111//P7tAP+7999//xN2un+Tiiy9u8JHDkyZNij/84Q8xduzYsuv17t07pk6dGvfff3/06NGj7Nx//dd/jddff73ZWSqFQhUAAAAAAKARpazg08BnS3XQQQfF3XffHQ8++GCceuqp0blz5yafW1NTExdddFF873vfKzuWZVlccMEFzcpy/fXXx6OPPlo2v/jii2PSpEmNnn/GGWfExRdfXDZ/5JFH4je/+U2zsrz00ktx+eWXl80PPfTQuPrqq6NY/OS3ie63335xyy23RE3NphXkqlWr4qKLLmpWlkqiUAUAAAAAAKBqTJ06NR544IEYN25cq9Y577zzYvTo0WXzefPmxZtvvtnkdb7//e+XzYYMGRLnn39+k9c4//zzY5999imbN1T6fpL/+I//iA0bNmwy69SpU1x99dVlJWnKmDFj4owzziibX3fddbFs2bJm5akUClUAAAAAAACqRr9+/dpsrXPPPbdsViqVora2tknnP/jgg/HUU0+VzS+88MLYaqutmpyjWCzGhRdeWDZ/8skn46GHHmrSGmvXro1f/vKXZfNTTz01dt111yZniYi44IILynazrl+/Pq677rpmrVMpFKoAAAAAAADQAoceemjZ+0QjIl5++eUmnd/QI3m33377OProo5ud5ZhjjomePXuWza+//vomnX/HHXfEu+++WzY/88wzm52lf//+8YUvfKHFWSrNJz/ouALULl2Yd4RmaU3eCX2Ht1kOAACAT4st7b8LAQCA6tGlS5fo0aNH1NXVbTJ//fXXm3T+rFmzymYTJ06MDh06NDtLhw4dYuLEiXHttdc2eo2mZhk4cGCMGDGi2VkiIo499tiYOXPmJrMnn3wylixZ0qa7hNuDHaoAAAAAAACNyKIQpajx+dgni/KdmdWoofKzKe8bffXVV+OFF14om48dO7bFWRo69y9/+Uu8+uqrjZ47Z86czZ4lImL27NktXjMvClUAAAAAAABogTVr1sTy5cvL5n369Gn03EcffbTB+f7779/iPKNGjWpwvmDBgk88r66uLl588cU2zbLzzjs3eB8ay1KJFKoAAAAAAADQAvfdd1+USqWy+eDBgxs994knniibbbPNNrHbbru1OM/uu+8enTp1KpsvWrSo2VkiIoYMGdLiLBERw4YNa3aWSqRQBQAAAAAAgBaYPn162axDhw4xfvz4Rs9t6HG/gwYNikKh5Y9SLhQKMWjQoLJ5Q7tPG8sS0bRi+JM0VA43lqUSFfMOAAAAAAAAwKfDk08+2eo1Ro8e3QZJNr9FixbFb3/727L5mDFjYrvttmv0/MWLF5fN+vXr1+pc/fr1i6effrrRazV2vGPHjrHDDju0Osvfeu2112Ljxo1RLG45NeWWkxQAAAAAAICKdtZZZ7V6jSzL2iDJ5lVfXx9f+cpXGnzc77nnntukNRp69+pOO+3U6my9e/du0rUaO96rV6/NkqVUKkVdXV2brN9eFKoAAAAAAACNqM8KUZ+1/FGsn0bVfD++853vxEMPPVQ2P+KII2LcuHFNWqOurq5s1pSdrY3p1q1b2eztt9+umCx/zbMlFareoQoAAAAAAABNVFtbG1OnTi2bb7fddnHllVc2eZ3Vq1eXzbp06dKqbBERnTt3LputWbOmYrI0JU+lUagCAAAAAABAEzz99NNx3HHHNfio36uuuioGDBjQ5LU2bNhQNmuL94p26NChbLZ+/fqKydKUPJXGI38BAAAAAABoE9OmTYuhQ4fmHWOzWLJkSRx++OGxcuXKsmNnn312HH/88c1ar76+vmy21VZbtTjfJ62xcePGisnSlDyVRqEKAAAAAABAmxg6dGiMHj067xhtbvny5TF+/Ph4+eWXy4598YtfjB/+8IfNXrNYLJbtDG2LorGhNVI7RT+epSnrtEWWpuSpNB75CwAAAAAAAAkrVqyI8ePHx9NPP112bPz48XHjjTe2aDdnx44dy2Zt8SjchtZo6Fp5ZWlKnkpjhyoAAAAAAEAjsqwQpayQd4yKklXB/Xj33XdjwoQJsXDhwrJjBx98cNx6660tLge7du0aq1ev3mS2atWqFq3V2BrdunVrNEtT1mmLLE3JU2kUqhWkdunCvCO0mwl9h+cdAQAAAAAAIGn16tVx2GGHxaOPPlp27MADD4yZM2fGNtts0+L1t99++1i2bNkms3feeafF633SGttvv32jWZqyTltkaUqeSuORvwAAAAAAAPAxa9asicMPPzwefPDBsmOjRo2KWbNmRZcuXVp1jd69e5fNXn/99VatmVqjoWs1dnz58uVRKpXaPEvHjh2je/furVq3vSlUAQAAAAAA4EPvvfdeHHnkkXH//feXHfvsZz8btbW1bfLI2oEDB5bNXnnllVav29AaDV2rseP19fWxZMmSNs+y6667RqGwZT0uWqEKAAAAAAAAEfH+++/HxIkTY+7cuWXHhg0bFnfffXeb7a7cfffdy2Yvv/xyrF+/vsVrrlu3rsESs6FrNeX4c8891+IsERHPP/98s7NUIoUqAAAAAAAAVW/t2rXxxS9+Me69996yY0OGDIl77703evbs2WbXGzFiRNmsvr4+nnrqqRav+eSTT0Z9fX3ZfPjw4Z943tChQ6NYLJbNFy1a1OIsWZY1eH5jWSqRQhUAAAAAAKARpShEKavx+fgntqzHtn6SdevWxdFHHx1333132bG99tor7r333thhhx3a9JojR46Mmpryqq6h97Y21fz588tmW221Vey7776feF6nTp1i2LBhbZrlqaeeilWrVpXN999//xavmReFKgAAAAAAAFVr/fr1ceyxx8asWbPKju25554xe/bs6NWrV5tft3v37jFy5MiyeW1tbYvXbOjckSNHNukxxePGjSubzZ49OzZu3NhmWTp06BAHH3xwi9bLk0IVAAAAAACAqrRx48Y47rjjYubMmWXH9thjj5gzZ0707t17s13/qKOOKpvdddddsWLFimavVVdX1+AO24kTJ7Y4y4oVK+Kuu+5qdpaIiBtuuKFsdsghh0TXrl1btF6eFKoAAAAAAABUnfr6+jjhhBPi1ltvLTs2ePDgmD17dvTp02ezZjjppJOiUNj00cnr16+PadOmNXutq6++OtavX7/JrFAoxIknntik8w866KDYddddy+aXX355s7M89NBDsWDBgrL5ySef3Oy1KoFCFQAAAAAAgKpSKpXilFNOiZtvvrns2KBBg2LOnDnRr1+/zZ5j4MCBcfjhh5fNL7vssnj77bebvM5bb70Vl156adn8yCOPbLAkbUihUIgpU6aUzWtra2POnDlNzpJlWZx33nll8169esWXvvSlJq9TSRSqAAAAAAAAVI0sy2LSpElx/fXXlx0bOHBgzJkzJ3beeed2y3PhhReWzerq6uK0006LUqnU6Pn19fVx2mmnlT0muFAoxAUXXNCsLGeddVbsuOOOZfPTTjst3nrrrSatcemll8a8efPK5l//+tejU6dOzcpTKYp5BwAAAAAAAKh0pShEfRQa/2IVKW2h9+Pss8+Oa6+9tmy+7bbbxiWXXBJLly6NpUuXtuoaHTt2jBEjRjTpuwcccECccsop8Ytf/GKT+e233x4nnXRS/OxnP4ttt922wXPXrFkTp59+eoPvgD3llFNi//33b1burl27xve///04/fTTN5m//PLLMXbs2Ljttts+ccfrD37wg/jmN79ZNt99993jq1/9arOyVBKFKgAAAAAAAFWjofIxIuK9996L448/vk2uscsuu8TixYub/P0f/ehHMW/evLJzbrjhhnjwwQfjnHPOicMOO+x/yswXX3wx7rzzzvjP//zPeO2118rWGzhwYPzXf/1Xi7KfdtppMWPGjLJ3yz7xxBMxZMiQmDJlShx77LGx9957R8eOHWPZsmUxb968uOKKK+Lhhx8uW2/rrbeO66+/PrbeeusW5akEClUAAAAAAADIUffu3WPGjBlxyCGHRF1d3SbHXnnllTjnnHPinHPOadJa22+/fcyYMSO6d+/e4jzXXXddjB07Nh577LFN5mvWrIlLL720wfe1NqSmpiamT58eI0eObHGWSuAdqgAAAAAAAJCzoUOHxty5c2PgwIEtXmPQoEExd+7cGDJkSKuydOvWLe66664YN25ci9fo3Llz3HDDDXHiiSe2KkslsEOVLU7t0oUtPndC3+G5XLel8srbmuuyeeXxO2wtvycAAAAAgKYZOnRoLFiwIM4///z46U9/GvX19U06b6uttoozzzwzvvvd77ZqZ+rH9ejRI+6888644oor4uKLL46VK1c2+dxx48bFj3/849hzzz3bJEveFKoAAAAAAACNKGWFKGWFvGNUlC31fjTn3aZ56NGjR/zkJz+Jb37zm/Gzn/0s7rjjjli0aFFs3Lhxk+8Vi8X4u7/7uzjiiCNi0qRJMWDAgDbPstVWW8XXvva1mDRpUvziF7+IW2+9NebPnx9r1qzZ5HuFQiEGDRoUEyZMiC9/+csxatSoNs+SJ4Uq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u3Rhm+UAAGDL9dJLL8Vjjz3WaHlazV577bU444wz4s4772zS91944YW46KKL4oc//GFcdtllMWnSpM2csP0oVAEAAAAAAKgqI0aMiJUrV+Ydo2I99thjceSRR8Ybb7zR7HNXrFgRkydPjkceeSR+8pOfRE1NzWZI2L4UqgAAAAAAAEBERPzpT3+K8ePHJ3fs9uzZM/baa6/o2LFjLFu2LJ599tkolUpl37v66qujUCjEVVddtbkjb3YKVQAAAAAAgMZkhQ8+fMT92Cz++7//Oz772c+2+Pxu3bq1+NzVq1fHMccc02CZOmrUqPjud78bn//856NQ+OjP/vXXX4+f/OQn8f3vfz/WrVu3yTnTpk2LkSNHxuTJk1ucqRIoVAEAAAAAAKh6AwYMiH333TdGjhwZ++67b+ywww4xcuTIds+x9957xwEHHNDu142IuPjii+PZZ58tm0+aNCmuuuqqKBbLq8XevXvH1KlT48gjj4wJEyaUlbH/+q//GkceeWT07t17s+Xe3BSqAAAAAAAAVJUBAwbE4MGDY9999/2fEnWHHXbY5DuLFy/OJ1xOXnrppbj88svL5oceemhcffXVjb4Ldb/99otbbrklxo0bt8kjgFetWhUXXXRRXH311W2eub0oVAEAAAAAAKgqTzzxRN4RKs5//Md/xIYNGzaZderUqUll6l+NGTMmzjjjjJg2bdom8+uuuy6mTp0affr0abO87alp//QAAAAAAADAp9LatWvjl7/8Zdn81FNPjV133bVZa11wwQVljwZev359XHfdda2JmCuFKgAAAAAAAFSxO+64I959992y+Zlnntnstfr37x9f+MIXyubXX399i7JVAoUqAAAAAABAI7LMp6EPnw6zZs0qmw0cODBGjBjRovWOPfbYstmTTz4ZS5YsadF6eVOoAgAAAAAAQBWbM2dO2Wzs2LEtXi917uzZs1u8Zp4UqgAAAAAAAFCl6urq4sUXXyyb77///i1ec+edd44+ffqUzRcsWNDiNfNUbPwrAAAAAAAAQHvauHFjLF++PN56660olUrRs2fP6NGjR3Tp0qVNr/PEE080OB8yZEir1h02bFgsW7Zsk9miRYtatWZeFKoAAAAAAABQIa688sr41re+FY8++misW7eu7HjPnj3jwAMPjIMOOij+8R//MT7zmc+06novvPBCg/PBgwe3at3ddtutbNbQTtgtgUIVAACAT63apQtbfO6EvsPbLAcAAFSLJ598stVrjB49ug2SbLluuummTzxeV1cXM2fOjJkzZ8b5558fhx12WJx77rlxyCGHtOh6ixcvLpt17Ngxdthhhxat91f9+vUrm7322muxcePGKBa3rIpyy0oLAAAAAACQlyzvAJXvrLPOavUaWeZGN1WWZfH73/8+fv/738eUKVPiBz/4QXTq1KlZayxfvrxs1qtXr1Zn6927d9msVCpFXV1dm6zfnmryDgAAAAAAAAC0zn//93/HAQccEG+//Xazzqurqyubbbfddq3O061btwbnzc1XCexQBQAAAAAAgBwVCoUYOnRojB8/PkaMGBH77LNP9O7dO7p16xY1NTVRV1cXS5Ysifnz50dtbW3MmjUrSqVS2TqLFi2Ko446Ku69997YZpttmnTt1atXl826dOnS6n+mzp07Nzhfs2ZNq9dubwpVAAAAAAAAyMGgQYNi3Lhxceqpp8bOO++c/F6fPn2iT58+MXLkyDj77LPjL3/5S5xzzjkxc+bMsu/Onz8/pkyZEj//+c+blGHDhg1ls7Z4x2mHDh0anK9fv77Va7c3hSoAAAAAAABtYtq0aTF06NC8Y2wxmlp6/q3BgwfH7bffHpdddln827/9W9nx6667Lv7lX/4lhg8f3uha9fX1ZbOtttqqRbmassbGjRtbvXZ7U6gCAAAAAADQJoYOHRqjR4/OO0bVOPfcc2PlypXxne98Z5N5qVSKCy64IO64445G12hoN2pblJ6pNVI7VytZTd4BAAAAAAAAKl2WFXwa+JC/iy++OPbcc8+y+d133x2rVq1q9PyOHTuWzdrisbypNRq6XqVTqAIAAAAAAMAWqlgsxje+8Y2y+YYNG+Luu+9u9PyuXbuWzZpSxDYmtUa3bt1avXZ7U6gCAAAAAADAFuzwww+PQqF8x/Cjjz7a6Lnbb7992eydd95pdabUGg1dr9IpVAEAAAAAAGAL1qtXr+jfv3/Z/I033mj03N69e5fNli9fHqVSqVWZXn/99bJZx44do3v37q1aNw8KVQAAAAAAANjC9erVq2z25ptvNnrewIEDy2b19fWxZMmSVuV55ZVXyma77rprgztpK51CFQAAAAAAAD6F1q9f3+h3dt999wbnzz33XKuu/fzzzzf5WpVOoQoAAAAAANCYzKfBDxWjod2o3bp1a/S8oUOHRrFYLJsvWrSoxVmyLGvw/OHDh7d4zTwpVAEAAAAAAGALtnz58nj11VfL5gMGDGj03E6dOsWwYcPK5g8++GCL8zz11FOxatWqsvn+++/f4jXzVF43AwAAAHxKTeg7vMXn1i5d2GY5AACgLc2cOTOyrHzL8IgRI5p0/rhx4+Lxxx/fZDZ79uzYuHFjg7tXG1NbW1s269ChQxx88MHNXqsS2KEKAAAAAAAAW6iNGzfG9773vbJ5oVCIMWPGNGmNo446qmy2YsWKuOuuu1qU6YYbbiibHXLIIdG1a9cWrZc3hSoAAAAAAABsoS6++OJ47rnnyuaHHHJI7Lzzzk1a46CDDopdd921bH755Zc3O89DDz0UCxYsKJuffPLJzV6rUihUAQAAAAAAGpNFZFnB52OfKH/CLE306KOPxrPPPtvqdX7wgx/Ed77znQaPfeMb32jyOoVCIaZMmVI2r62tjTlz5jR5nSzL4rzzziub9+rVK770pS81eZ1Ko1AFAAAAAACAdvSHP/wh9tprr/jHf/zHmDlzZqxdu7ZZ57/wwgsxceLEOPfccxs8fswxx8T48eObteZZZ50VO+64Y9n8tNNOi7feeqtJa1x66aUxb968svnXv/716NSpU7PyVJLmv0UWAAAAAAAAaJUsy+K2226L2267Lbp06RKHHnpojBw5MoYNGxZ77LFHdO/ePbp16xY1NTWxYsWKWLJkScyfPz9mzZoVs2bNilKp1OC6e+yxR1xzzTXNztO1a9f4/ve/H6effvom85dffjnGjh0bt912W4OPBf6rH/zgB/HNb36zbL777rvHV7/61WbnqSQKVQAAAAAAAKrK4sWLY+DAgS06d8yYMY1+56WXXvrE8vFvrV69On73u9/F7373uxZl+qt99tknamtro3v37i06/7TTTosZM2bErbfeusn8iSeeiCFDhsSUKVPi2GOPjb333js6duwYy5Yti3nz5sUVV1wRDz/8cNl6W2+9dVx//fWx9dZbtyhPpVCoAgAAAAAAwBaspqYmvvrVr8Z3v/vdVj9a97rrrouxY8fGY489tsl8zZo1cemll8all17a5EzTp0+PkSNHtipPJfAOVQAAAAAAAGhHgwcPjkGDBrV6na233jqOO+64mD9/fvznf/5nm7yntFu3bnHXXXfFuHHjWrxG586d44YbbogTTzyx1XkqgR2qAAAAAAAATZHlHYBPiyOPPDKOPPLIePXVV+P++++Pxx9/PBYuXBjPPfdcLFu2LDZu3NjgeYVCIT7zmc/EqFGj4oADDoijjz46evXq1eb5evToEXfeeWdcccUVcfHFF8fKlSubfO64cePixz/+cey5555tnisvClUAAAAAAACqSp8+fWL+/Pmbdf2m6N+/f5x44omb7OQslUrxxhtvxMqVK+P999+PUqkU2223XXTv3j26d+8exWL71HtbbbVVfO1rX4tJkybFL37xi7j11ltj/vz5sWbNmk2+VygUYtCgQTFhwoT48pe/HKNGjWqXfO1JoQoAAAAAAEBV6dixYxxwwAF5x2hQTU1N9OnTp8ml7ObWtWvXmDJlSkyZMiWyLIvXXnst6urqYsOGDdGlS5fo379/dO7cOe+Ym5VCFQAAAAAAAGhUoVCI/v37R//+/fOO0q5q8g4AAAAAAAAAUKkUqgAAAAAAAAAJHvkLAAAA0AQT+g5v92vWLl3Y7tcEAFIKH374iPtBdbBDFQAAAAAAACBBoQoAAAAAAACQoFAFAAAAAAAASFCoAgAAAAAAACQoVAEAAAAAAAASinkHAAAAAAAAqHjZhx8+4n5QJexQBQAAAAAAAEhQqAIAAAAAAAAkKFQBAAAAAAAAEhSqAAAAAAAAAAnFvAMAAAAAAABUvOzDDx9xP6gSdqgCAAAAAAAAJChUAQAAAAAAABIUqgAAAAAAAAAJ3qEKAAAADahdurDF507oO7zNcgAAAJAvO1QBAAAAAAAAEuxQBQAAAAAAaExW+ODDR9wPqoQdqgAAAAAAAAAJClUAAAAAAACABIUqAAAAAAAAQIJCFQAAAAAAACBBoQoAAAAAAACQUMw7AAAAAAAAQKXLsg8+fMT9oFrYoQoAAAAAAACQoFAFAAAAAAAASFCoAgAAAAAAACQoVAEAAAAAAAASFKoAAAAAAAAACcW8AwAAAAAAAGwRsrwDAHlQqAIAAABsZrVLF+YdAQAAaCGP/AUAAAAAAABIUKgCAAAAAAAAJChUAQAAAAAAABIUqgAAAAAAAAAJxbwDAAAAAAAAVLys8MGHj7gfVAk7VAEAAAAAAAASFKoAAAAAAAAACQpVAAAAAAAAgASFKgAAAAAAAEBCMe8AAAAAAAAAla6QffDhI+4H1cIOVQAAAAAAAIAEhSoAAAAAAABAgkIVAAAAAAAAIME7VAEAAAAq1IS+w3O5bu3ShblcFwAAKpEdqgAAAAAAAAAJdqgCAAAAAAA0Jvvww0fcD6qEHaoAAAAAAAAACQpVAAAAAAAAgASFKgAAAAAAAECCQhUAAAAAAAAgQaEKAAAAAAAAkFDMOwAAAAAAAMAWISvknQDIgR2qAAAAAAAAAAkKVQAAAAAAAIAEhSoAAAAAAABAgkIVAAAAAAAAIEGhCgAAAAAAAJBQzDsAAAAAAABAxcs+/PAR94MqoVAFAACANla7dGGLzpvQd3ib5qBcS/9sWsufLQAAbLk88hcAAAAAAAAgQaEKAAAAAAAAkKBQBQAAAAAAAEjwDlUAAAAAAIDGZB9++Ij7QZWwQxUAAAAAAAAgQaEKAAAAAAAAkKBQBQAAAAAAAEhQqAIAAAAAAAAkKFQBAAAAAAAAEop5BwAAAAAAAKh42YcfPuJ+UCXsUAUAAAAAAABIUKgCAAAAAAAAJChUAQAAAAAAABIUqgAAAAAAAAAJxbwDAAAAAB+oXbow7wh8ggl9h+cdAQAAyIFCFQAAAAAAoDFZ4YMPH3E/qBIe+QsAAAAAAACQoFAFAAAAAAAASFCoAgAAAAAAACQoVAEAAAAAAAASFKoAAAAAAAAACcW8AwAAAAAAAGwJClneCYA82KEKAAAAAAAAkKBQBQAAAAAAAEhQqAIAAAAAAAAkKFQBAAAAAAAAEop5BwAAAAAAAKh42YcfPuJ+UCXsUAUAAAAAAABIUKgCAAAAAAAAJHjkLwAAAACbmNB3eIvPrV26sM1yAABAJbBDFQAAAAAAACBBoQoAAAAAAACQoFAFAAAAAAAASFCoAgAAAAAAACQoVAEAAAAAAAASFKoAAAAAAAAACQpVAAAAAAAAgASFKgAAAAAAAEBCMe8AAAAAAAAAla6QffDhI+4H1cIOVQAAAAAAAIAEhSoAAAAAAABAgkIVAAAAAAAAIEGhCgAAAAAAAJCgUAUAAAAAAABIKOYdAAAAAGBLULt0YYvPndB3eJvlAABykhU++PAR94MqYYcqAAAAAAD8//buP8zKus4f/+s4ZwAFgQQVR0EBrdyAQE3EvfyIuddSafTD0m9q7oqp2+aW2na1iZq15da2l6Rba1Lm7mqWG7plP5DyZ5uoKQqiZqKCILP+AnFFEIaZ+/sHfD4Te86bmTlnmPsezuNxXfcfvs7c7/s578G/ntf7PgCQoFAFAAAAAAAASFCoAgAAAAAAACQoVAEAAAAAAAASFKoAAAAAAAAACeW8AwAAAAAAAPQLWd4BgDw4oQoAAAAAAACQoFAFAAAAAAAASFCoAgAAAAAAACQoVAEAAAAAAAASynkHAAAAAAAAKLxs20Un+0GDcEIVAAAAAAAAIEGhCgAAAAAAAJDglb8AAAAAO9mC1sU13TejZXKv5gAAAHrOCVUAAAAAAACABIUqAAAAAAAAQIJX/gIAAAAAAHShlG296GQ/aBROqAIAAAAAAAAkKFQBAAAAAAAAEhSqAAAAAAAAAAkKVQAAAAAAAIAEhSoAAAAAAABAQjnvAAAAAAAAAIWXbbvoZD9oEE6oAgAAAAAAACQoVAEAAAAAAAASFKoAAAAAAAAACQpVAAAAAAAAgASFKgAAAAAAAEBCOe8AAAAAAFS3oHVxzffOaJncazkAgIjItl10sh80CCdUAQAAAAAAABIUqgAAAAAAAAAJClUAAAAAAACABIUqAAAAAAAAQEI57wAAAAAAAABFV4qIUpZ3imIp5R0A+ogTqgAAAAAAAAAJClUAAAAAAACABIUqAAAAAAAAQIJCFQAAAAAAACBBoQoAAAAAAACQUM47AAAAAAAAQOFlpa0XnewHDcIJVQAAAAAAAIAEhSoAAAAAAABAgkIVAAAAAAAAIMF3qAIAAAAU1IyWyXlH6LF6Mi9oXdxrOQAAoLc4oQoAAAAAAACQ4IQqAAAAAABAV7JtF53sBw3CCVUAAAAAAACABIUqAAAAAAAAQIJCFQAAAAAAACBBoQoAAAAAAACQoFAFAAAAAAAASCjnHQAAAAAAAKDwsohSlneIgrEfNAgnVAEAAAAAAAASFKoAAAAAAAAACQpVAAAAAAAAgASFKgAAAAAAAECCQhUAAAAAAAAgoZx3AAAAAAAAgH4hyzsAkAeFKgAAAEBBLWhdnHeEHpvRMjmXe2vVH/cYAIC+5ZW/AAAAAAAAAAkKVQAAAAAAAIAEhSoAAAAAAABAgu9QBQAAAAAA6EIp23rRyX7QKJxQBQAAAAAAAEhQqAIAAAAAAAAkKFQBAAAAAAAAEhSqAAAAAAAAAAkKVQAAAAAAAICEct4BAAAAAAAACi/bdtHJftAgnFAFAAAAAAAASFCoAgAAAAAAACQoVAEAAAAAAAASFKoAAAAAAAAACQpVAAAAAAAAgIRy3gEAAAAAAAAKL9t20cl+0CCcUAUAAAAAAABIUKgCAAAAAAAAJChUAQAAAAAAABIUqgAAAAAAAAAJClUAAAAAAACAhHLeAQAAAAAAAIqulG296GQ/aBROqAIAAAAAAAAkKFQBAAAAAAAAEhSqAAAAAAAAAAkKVQAAAAAAAIAEhSoAAAAAAABAgkIVAAAAAAAAIKGcdwAAAAAAyMuMlsm5PHdB6+JcngsAQM85oQoAAAAAAACQoFAFAAAAAAAASFCoAgAAAAAAACT4DlUAAAAAAIDuyPIOAOTBCVUAAAAAAACABIUqAAAAAAAAQIJCFQAAAAAAACBBoQoAAAAAAACQoFAFAAAAAAAASCjnHQAAAAAAAKDoStnWi072g0bhhCoAAAAAAABAgkIVAAAAAAAAIEGhCgAAAAAAAJCgUAUAAAAAAABIKOcdAAAAAAAazYyWyX3+zAWti/v8mQAAuwKFKgAAAAAAQFeybRed7AcNwit/AQAAAAAAABIUqgAAAAAAAAAJClUAAAAAAACABIUqAAAAAAAAQIJCFQAAAAAAACChnHcAAAAAAACAwsu2XXSyHzQIJ1QBAAAAAAAAEhSqAAAAAAAAAAkKVQAAAAAAAIAEhSoAAAAAAABAQjnvAAAAAAAAAEVXiohSlneKYinlHQD6iBOqAAAAAAAAAAkKVQAAAAAAAIAEr/wFAAAAoNcsaF1c870zWib3Wg4q1bO/9fxdAQD6OydUAQAAAAAAABIUqgAAAAAAAAAJXvkLAAAAAADQlWzbRSf7QYNwQhUAAAAAAAAgQaEKAAAAAAAAkKBQBQAAAAAAAEhQqAIAAAAAAAAkKFQBAAAAAAAAEsp5BwAAAAAAACi8LKKU5R2iYOwHDcIJVQAAAAAAAIAEhSoAAAAAAABAgkIVAAAAAAAAIEGhCgAAAAAAAJCgUAUAAAAAAABIKOcdAAAAAAAiIha0Lq7pvhktk3s1BwBUlW276GQ/aBBOqAIAAAAAAAAkKFQBAAAAAAAAEhSqAAAAAAAAAAkKVQAAAAAAAICEct4BAAAAAAAACi/bdtHJftAgnFAFAAAAAAAASHBCFQAAAAAAAAro+eefjyVLlsTy5cvjf/7nf6KpqSmGDx8eb33rW+Owww6LYcOG9VmW1157LR5++OF46qmnYt26ddHe3h5Dhw6NsWPHxuTJk2P//ffvsyx9TaEKAAAAAABAw3v22Wdj0aJF212vvvpqxc/dddddMX369J2WY/369XHttdfG9773vXjssceSP1cul+PYY4+NT37yk/HhD384SqVSr2fJsixuueWW+Jd/+Zf4zW9+E1u2bEn+7MSJE+Oss86Ks846K4YMGdLrWfKkUAUAAAAAAKChLF++PB566KEuy9O+9tOf/jQ+9alPxerVq7v82S1btsQdd9wRd9xxR0ydOjWuu+66OPTQQ3styxNPPBFnnnlm/O53v+vWzy9dujTOP//8+MY3vhFXX311vP/97++1LHlTqAIAAAAAANBQpkyZEq+99lreMbbz5S9/OS677LLIsqzH9z7wwAMxderUuOmmm+K9731v3Vl++ctfximnnBLr16/v8b2rV6+OD3zgA/GlL30pLrnkkrqzFIFCFQAAAAAAoAuliCj1vOfapfX+C2Yb1+WXXx5f/OIXq35WKpVi/PjxMXr06Ghra4tly5bFiy++WPFzr7/+enzoQx+K2267ra5XEt91113x4Q9/ODZt2lT181GjRsUhhxwS5XI5Vq5cGc8880zFz2RZFpdeemk0NzfH3/3d39WcpSh2yzsAAAAAAAAANKpf/epXcfHFF1fMd9ttt/j0pz8dy5cvj2XLlsWdd94Z//Vf/xUvvPBC3HffffHnf/7nFfds2rQpTjnllGhtba0pS2tra5xyyilVy9T3vOc98cADD8R///d/x29+85u488474+mnn47ly5fHeeedF7vtVlk7zp49O371q1/VlKVIFKoAAAAAAAA0vDFjxsSHPvSh+OpXvxq33XZbPPTQQzv9mRs2bIizzz674jW/gwYNip///Odx5ZVXxoEHHlhx31FHHRULFiyoWsS+9NJL8ZnPfKamPJ/+9Kfj5Zdfrph/8YtfjPnz58eRRx5Z8dlBBx0U//zP/xy33nprDBw4cLvPOjo64pxzzomNGzfWlKcovPIXAAAAgEKY0TI57wgk1PO3WdC6uNdydJd/SztfPX9Xf5/u+XVH3glg1zZmzJg4+OCD4/DDD4/DDz88jjjiiBg5cuR2P7NixYqdnuOKK66IlStXVsznzp3bre9C/fu///tYvXp1XHfdddvN582bFwsXLoyjjz6621l++9vfxs0331wxnzVrVlx22WVd3n/CCSfE3Llz4y/+4i+2mz/33HMx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KCtWrIhSqbTDa+zYsVXvPe6447q8d8WKFd3O8q//+q8xfPjwivkVV1wR73znO+N73/teLF++PNra2mLDhg2xZMmS+PKXvxxve9vb4u677664b+rUqTF79uxuP/+PzZ49O4488siK+Z133hlvf/vb4ytf+Uo8+uijsXHjxmhra4tnn3025s6dG5MmTYorr7yy4r63vOUt8W//9m81ZSmSct4BAAAAAAAAoFEddNBBcfPNN8cJJ5wQb7755nafPfHEE3H22Wd3e61x48bFzTffHM3NzTVlGTBgQNxyyy1xzDHHxPLly7f7bM2aNXHJJZdU/Y7Uanbfffe4+eab48ADD6wpS5E4oQoAAAAAANCVzFX1ole8+93vjvnz58fIkSNrXuOwww6Lu+++O/bff/+6suy///5xzz33xJQpU2peY++994758+fHcccdV1eWolCoAgAAAAAAQM6mT58eixcvjpNPPjlKpVK37xs0aFBcfPHFce+998bo0aN7Jcvo0aNj4cKFMXv27Bg0aFC37yuVSnHyySfH4sWLq343bH/llb8AAAAAAAA0lP322y/uu+++nbp+Lfbff/+46aab4rLLLotrr702brvttvj9738fHR0d2/3cwIED413velfMnDkzzjzzzLpOtqYMGjQovvKVr8RnPvOZuO666+LWW2+Nhx56KDZt2rTdz+22225x6KGHxnvf+96YNWtWHHroob2eJW+lLMsKfSC744VD8o4AAAAAQB+Y0TI57wgAhfHrjh/nHaGh3XfffXH00UdvNxv3/3069mg5KJ9ABbWhdUU8+6OrtpstXLgwpk2bllOiXdObb74ZK1eujNdffz2amppi+PDhMXr06GhqaurzLO3t7bFq1apYt25dtLe3x9ChQ2P06NE9OsXaHzmhCgAAAAAAAAU1aNCgeOtb35p3jIiIaGpqioMOOijvGH3Od6gCAAAAAAAAJDihCgAAAAAA0JVs20Un+0GDcEIVAAAAAAAAIEGhCgAAAAAAAJCgUAUAAAAAAABIUKgCAAAAAAAAJJTzDgAAAAAAANAflPIOAOTCCVUAAAAAAACABCdUAQAAAABgJ1jQujjvCAD0AidUAQAAAAAAABIUqgAAAAAAAAAJClUAAAAAAACABN+hCgAAAAAA0JVs20Un+0GDcEIVAAAAAAAAIEGhCgAAAAAAAJCgUAUAAAAA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ec1q9z799NOxatWqmtckopx3AAAAAAB2HTNaJtd874LWxb2WAwCg6B588MGq86lTp9a85pFHHll1vmjRohg9enTN6zY6hSoAAAAAAEBXsojoyDtEwWR5B9h5Nm7cGC+//HKsWbMmBgwYEHvttVfstddeMXDgwF57xqOPPlox23333WP8+PE1r3nIIYfEoEGD4s0339xuvmTJkvjgBz9Y87qNTqEKAAAAAAAAEfHXf/3X8dvf/jYef/zx6OiobNAPPPDA+NM//dM45phj4iMf+UiMHDmy5mdVe93vuHHjolQq1bxmqVSKcePGxRNPPLHd/Nlnn615TRSqAAAAAAAA9JKlS5fWvca0adN6IUltrr766h1+/txzz8Vzzz0XN954Y1x44YXx8Y9/PD73uc/FwQcf3ONnrVixomK2//7793idamv870K12rPoPoUqAAAAAAAAveLcc8+te40s6x/vEt64cWPMnTs3brjhhpgzZ06cc845Pbr/5Zdfrpjtu+++decaNWpUt55F9+2WdwAAAAAAAADorzZs2BDnnntunHHGGT0qg9euXVsxGzZsWN15hg4dWjFbs2ZN3es2MidUAQAAAAAAaFgDBgyIo48+Oo4//viYMGFCHHrooTFy5MgYOnRobNq0KV599dV45pln4t57742bb745HnnkkarrXH/99TFixIiYM2dOt567fv36itmQIUPq+l0iIgYPHlwxe+ONN+pet5EpVAEAAAAAALpQyiJK/eRVtH2l1M+3Y9q0aXHWWWfFKaeckiwym5ubY8iQITF69OiYPn16zJ49O+6+++745Cc/GU8++WTFz3/zm9+MKVOmxBlnnNHl89va2ipm5XL91V1zc3PFbPPmzXWv28gUqgAAAAAAAPSKa665JiZOnJh3jG5ZuHBhTfdNnz49Hn744TjjjDNi3rx5FZ9fdNFF8dGPfjR23333Ha7T3t5eMWtqaqopU1drbNmype51G5lCFQAAAAAAgF4xceLEmDZtWt4xdrrdd989fvCDH8SaNWvirrvu2u6z1atXx7e+9a343Oc+t8M1yuVyxSnV3ig+q61R7dQq3bdb3gEAAAAAAACgvxkwYEB897vfjQEDBlR8dvPNN3d5/8CBAytmvfFq3mprVHsW3adQBQAAAAAAgBqMHz8+Pvaxj1XMH3zwwXjllVd2eO+ee+5ZMXv99dfr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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "p = dpm_vis.plot_slice(bentheimer_ss_data, slice_num=50)" + ] + }, + { + "cell_type": "markdown", + "id": "3f39f7a7", + "metadata": {}, + "source": [ + "Now, lets plot orthogonal slices using drp tools." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "5ca3307f", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "ae8331d020c9431baeac50339ce6ff52", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Widget(value='