diff --git a/.gitignore b/.gitignore index 0629557..20a79e4 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,12 @@ # For project .vscode +__MACOSX *.yml +.ipynb_checkpoints data/visualization/ +data/static +data/dynamic +data/yaml_dataset # Byte-compiled / optimized / DLL files __pycache__/ diff --git a/README.md b/README.md index d0f987f..a0518a3 100644 --- a/README.md +++ b/README.md @@ -8,16 +8,22 @@ LEMP (Learning-Enabled Motion Planning) is a light-weight framework that combine ### Create Conda Environment ```bash -conda create -n lemp python=3.8 -conda activate lemp -conda install -c conda-forge jupyterlab numpy matplotlib -pip install pybullet Pillow scipy +$ conda create -n lemp python=3.8 +$ conda activate lemp +$ conda install -c conda-forge jupyterlab numpy matplotlib +$ pip install pybullet Pillow scipy +# install torch following the instructions from the pytorch website, for example: +$ conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia +# install torch-geometric following the instructions from the torch-geometric website, for example: +$ pip install pyg_lib torch_scatter torch_sparse torch_cluster torch_spline_conv -f https://data.pyg.org/whl/torch-2.1.0+cu118.html +$ pip install torch_geometric ``` ### Unzip the Datasets ```bash cd data -unzip *.zip +unzip static.zip +unzip dynamic.zip ``` ## Quickstart diff --git a/examples/static_gnn_planner.ipynb b/examples/static_gnn_planner.ipynb index 12954d2..000214b 100644 --- a/examples/static_gnn_planner.ipynb +++ b/examples/static_gnn_planner.ipynb @@ -25,16 +25,17 @@ "name": "stderr", "output_type": "stream", "text": [ - "pybullet build time: Dec 1 2021 18:33:43\n" + "pybullet build time: Nov 28 2023 23:51:11\n" ] } ], "source": [ - "from environment.static.dual_kuka_env import DualKukaEnv\n", + "from environment.static.ur5_env import UR5Env\n", "from objects.static.voxel import VoxelObject\n", "from wrappers.obstacles import ObstaclePositionWrapper\n", - "env = DualKukaEnv(objects=[VoxelObject(base_orientation=[0, 0, 0, 1], base_position=[0, 1, 1], half_extents=[0.2, 0.2, 0.2]),\n", - " VoxelObject(base_orientation=[0, 0, 0, 1], base_position=[0, -0.5, 0.7], half_extents=[0.3, 0.1, 0.4])])\n", + "from data.dataset import create_data_from_yaml\n", + "data_dict = create_data_from_yaml('data/static/ur5_env/0.yml')\n", + "env, start, goal = data_dict['env'], data_dict['start'], data_dict['goal']\n", "env = ObstaclePositionWrapper(env)" ] }, @@ -45,14 +46,12 @@ "outputs": [ { "data": { - "image/png": "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", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAigAAAF7CAYAAAD4/3BBAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/OQEPoAAAACXBIWXMAAA9hAAAPYQGoP6dpAABtgElEQVR4nO3de5Qb5X0//vdcdF+t9ubd9eK1vRBztUnAJAYnrWkAExpCc+gvbkNCSEJ/P/KFULbAl4TyPacmh9gJ31NwSxp6yOFgCqXu6UlIkzRJsZvEQM2tNgRsgoFgfMPrtb1aaS+6z/P749FoRqORdrU3Sbvv1znC7GgkPXo088xnnqsihBAgIiIiqiNqrRNARERE5MQAhYiIiOoOAxQiIiKqOwxQiIiIqO4wQCEiIqK6wwCFiIiI6g4DFCIiIqo7DFCIiIio7jBAISIiorrDAIWIiIjqTk0DlO9///vo6+uD3+/H6tWr8dxzz9UyOURERFQnahag/Ou//iv6+/txzz334NVXX8Uf/MEf4KqrrsKhQ4dqlSQiIiKqE0qtFgtcs2YNLrzwQjz88MOFbeeccw4++9nPYvPmzbVIEhEREdUJvRYfmk6nsXv3bnzzm98s2r5+/Xrs2rWrZP9UKoVUKlX42zAMDA0Nob29HYqizHp6iYiIaPqEEBgZGUFPTw9UtXIjTk0ClJMnTyKXy6Grq6toe1dXFwYGBkr237x5M+699965Sh4RERHNosOHD2PJkiUV96lJgGJy1n4IIVxrRO6++27cfvvthb9jsRiWLl2Kw4cPo7m5edbTSURERNMXj8fR29uLcDg84b41CVA6OjqgaVpJbcng4GBJrQoA+Hw++Hy+ku3Nzc0MUIiIiBrMZLpn1GQUj9frxerVq7F9+/ai7du3b8fatWtrkSQiIiKqIzVr4rn99ttx/fXX46KLLsIll1yCRx55BIcOHcLXvva1WiWJiIiI6kTNApQ/+7M/w6lTp/Ctb30Lx44dw8qVK/Hzn/8cy5Ytq1WSiIiIqE7UbB6U6YjH44hEIojFYuyDQkRE1CCquX5zLR4iIiKqOwxQiIiIqO4wQCEiIqK6wwCFiIiI6g4DFCIiIqo7DFCIiIio7jBAISIiorrDAIWIiIjqDgMUIiIiqjsMUIiIiKjuMEAhIiKiusMAhYiIiOoOAxQiIiKqOwxQiIiIqO4wQCEiIqK6wwCFiIiI6g4DFCIiIqo7DFCIiIio7jBAISIiorrDAIWIiIjqDgMUIiIiqjsMUIiIiKjuMEAhIiKiusMAhYiIiOoOAxQiIiKqOwxQiIiIqO4wQCEiIqK6wwCFiIiI6o5e6wQQEZUjhMDe3x3C6GgSALB8WScWd7XWOFVENBcYoBBR3br73ifxg8d3YGQ0AQB4cPNXcMtfXFXjVBHRXGATDxHVrTffOlIITgDgrf1HkcsZNUwREc0VBihE1DD+a+fryGZztU4GEc0BBihERERUdxigEBERUd1hJ1kimleEEK7bE4lxxEfijn0NvPvufqQz6cI2RVHwsY+uRVMoPKvpJKLKqg5Qnn32Wfzf//t/sXv3bhw7dgxPP/00PvvZzxaeF0Lg3nvvxSOPPIJoNIo1a9bgH/7hH3DeeecV9kmlUrjzzjvxL//yL0gkErjsssvw/e9/H0uWLJmRL0VE85MAYBgGDEP2QxkZHcHwcLRoH8Mw8O7v9yOTyRRtTybHMTo2OuFnKIqCrOO1RDT3qg5QxsbG8OEPfxhf+cpX8Kd/+qclz99///144IEHsHXrVpx55pm47777cMUVV2D//v0Ih+UdSX9/P376059i27ZtaG9vxx133IGrr74au3fvhqZp0/9WRNRwhBDI5bLIZnM4cvQQDCOHsfHigGJsbBT/8cun4dFlOZFKp5BMJtzejogaXNUBylVXXYWrrnKfh0AIgS1btuCee+7BtddeCwB4/PHH0dXVhaeeego33XQTYrEYHn30UTzxxBO4/PLLAQBPPvkkent7sWPHDlx55ZXT+DpE1KiEEPj1zmcwPBxFIh90DA8PFe1jGDnE4jF4dHafI5rvZvQsP3DgAAYGBrB+/frCNp/Ph3Xr1mHXrl0AgN27dyOTyRTt09PTg5UrVxb2cUqlUojH40UPIpp/EslkITghooVtRgOUgYEBAEBXV1fR9q6ursJzAwMD8Hq9aG1tLbuP0+bNmxGJRAqP3t7emUw2ERER1ZlZqSdVFKXobyFEyTanSvvcfffdiMVihcfhw4dnLK1E1Bh80LEmcTrG3zfKjtQhovljRgOU7u5uACipCRkcHCzUqnR3dyOdTiMajZbdx8nn86G5ubnoQURzQwiBbC6L94+9j3ePvFuz4ECFgo5sEwafz9bk84lobs1ogNLX14fu7m5s3769sC2dTmPnzp1Yu3YtAGD16tXweDxF+xw7dgx79+4t7ENE9SORGsc//vD7eOynj+Kf/mMrjg4eqWl6MiM1/XgimiNVj+IZHR3Fu+++W/j7wIEDeO2119DW1oalS5eiv78fmzZtwooVK7BixQps2rQJwWAQ1113HQAgEongxhtvxB133IH29na0tbXhzjvvxKpVqwqjeogWmuff/A1e2P8cANlE+v+svQ7LO0+vcaokwxAYig8VJjN7Ye8L+FwX+4ER0eyqOkD5n//5H/zRH/1R4e/bb78dAHDDDTdg69atuOuuu5BIJHDzzTcXJmp75plnCnOgAMCDDz4IXdexYcOGwkRtW7du5RwotGC9sP85/N3P7i/8vf21n+Mf/9cT6Os6o4apcpexzbpKRDRbqg5QLr300opt0IqiYOPGjdi4cWPZffx+Px566CE89NBD1X480YKw7/Ab+JfnHsdf/z/fqnVSiIhqgrMdEdUpwzBqnQQiopphgEJUB07v/hB0lWt3EhGZGKAQ1YG1Z6+Dz+OvdTKIiOoGAxQiIiKqOwxQiIiIqO4wQCGqUyfig8jkMrVOxoLj8/qg6ewPRFRrDFCI6tSv3vhPjCS4cvdc6+joQlMoPPGORDSrGKAQETlMtLgpEc0+BihEdaDJ34QzTzun1skgIqobDFCI6kA40Ixzl6ysdTKIiOoGAxQiqsjn9WH54r5aJ4OIFhgGKERUkUf3oK25tdbJIKIFhgEKEVVFCFFxwVAiopnAAIWoTqUySbx77O1aJ6PE74/+HtGRaK2TUTcOH47h33/yOzyz/V1ks1zgkWimMEAhqlPjqXHs+f3LtU5GiXQmjVwuV+tk1I233jqBv3/oJTy29VUGKEQziAEKUZ2IhFpqnQQiorrBAIWoTvzpJX8OXeMU60REAAMUorqhKlqtk0BEVDcYoBAREVHdYYBCRDRFQgik07LD8BlntEHTuIYP0UxhgEJEZOPxeCa9rxDAL//zXQDAyvM64fGwmY5opjBAIapj//3Ws0hn07VOxoKy4kNnTXpfIQRSqewspoZo4WKAQlQn/N4AWoLFU8q/88FbyBm8AM4lVWWxSFQPeCYS1Ykl7b246EMX1zoZRER1gQEKUZ1QFAVgH0siIgAMUIiIiKgOMUAhIiKiusMAhYgm9KHeM9l5lIjmFEscojqWyiRxauRkrZOBRa2LoCosLoho7rDEIaojmiMIOBEfxAv7n69RaqgaqsoezkQziQEKUR3Z8Ikv1joJVAXDEDAMgVDIg49/fGmtk0M0rzBAIaojLaG2WieBqrB37yAOHY5BVVWEQt5aJ4doXmGAQkRVERBIphO1TkZdyGRyyOVErZNBNC8xQCGiqhiGgVf3v1rrZBDRPMcAhYiqZggDwjAgBGsPiGh2VBWgbN68GR/96EcRDofR2dmJz372s9i/f3/RPkIIbNy4ET09PQgEArj00kuxb9++on1SqRRuvfVWdHR0IBQK4ZprrsGRI0em/22IaE68++J/Ydtf34D/efoxCMOodXJmGEfjENWDqgKUnTt34pZbbsGLL76I7du3I5vNYv369RgbGyvsc//99+OBBx7A9773Pbzyyivo7u7GFVdcgZGRkcI+/f39ePrpp7Ft2zY8//zzGB0dxdVXX41cLjdz34yoAWmqBl3Vi7btPfhbGKK+goBEPIoTB97CW8/9HIYxt+dt8LTZq/hta+tAW2v7rL0/EU2ePvEull/+8pdFfz/22GPo7OzE7t278Yd/+IcQQmDLli245557cO211wIAHn/8cXR1deGpp57CTTfdhFgshkcffRRPPPEELr/8cgDAk08+id7eXuzYsQNXXnnlDH01osZzXu/5OH/5Bdjz3iuFbbveelY2pfDGHgDQfIYqF1acBZqmQdO0WXlvIqrOtG5FYrEYAKCtTQ6NPHDgAAYGBrB+/frCPj6fD+vWrcOuXbsAALt370Ymkynap6enBytXrizs45RKpRCPx4seRPORrunw6ByuSkRUVQ2KnRACt99+Oz7xiU9g5cqVAICBgQEAQFdXV9G+XV1dOHjwYGEfr9eL1tbWkn3M1ztt3rwZ995771STSkQLiNfrRTAYmPT+kZYIOtpls04w0DRbySKiKk05QPn617+O119/Hc8/XzoNt7P6VQgxYZVspX3uvvtu3H777YW/4/E4ent7p5BqIqpXigK0t7XC47WaWLw+X8l+K878EFZc0ln2fXw+H5pCoaJtuu6FMom1hDTVU0WKLYsWBeHROSiSaCZNKUC59dZb8ZOf/ATPPvsslixZUtje3d0NQNaSLF68uLB9cHCwUKvS3d2NdDqNaDRaVIsyODiItWvXun6ez+eDz6WgIqL5RMFHL7oY6Yw1CVxr628BfFC0V2tLO5b3nglVnXxfEU3VJxWgVEMIgWxOdl5efWEPZ5IlmmFVnbFCCHz961/Hj370I/zqV79CX19f0fN9fX3o7u7G9u3bC9vS6TR27txZCD5Wr14Nj8dTtM+xY8ewd+/esgEKEc1/iqLA6wmiKdheeOhq6UXf722C1xOArnkn/Zjp4MT0i1+8MyvvS0RV1qDccssteOqpp/Dv//7vCIfDhT4jkUgEgUAAiqKgv78fmzZtwooVK7BixQps2rQJwWAQ1113XWHfG2+8EXfccQfa29vR1taGO++8E6tWrSqM6iEiagRjY5laJ4Fo3qoqQHn44YcBAJdeemnR9sceewxf/vKXAQB33XUXEokEbr75ZkSjUaxZswbPPPMMwuFwYf8HH3wQuq5jw4YNSCQSuOyyy7B161YO7yMC8MlV6/HS2/9d+PuDoSN468g+nLf0/JqlqSnQhNMWnYaDAwdrlgYiWliqClAmM621oijYuHEjNm7cWHYfv9+Phx56CA899FA1H0807ymKgrOXnFu0LTY+jOPDxwoBSrnzcLbmBgEAn9eHlnArAxQimjNTHsVDRLUxmozjwZ9+E8n0OABAVTWs//Cf4pKzruAcKkQ0bzBAIWowmqphLBnH7wfeLGw7fOJdnL/8YrTonKadiOYHDtwnajBBXxPO7KldfxQ7I5dDLpOudTKIaB5igEJEUxYf/ABH9v1PrZNBRPMQAxQimjIhDBjZbK2TUVOKAkQi/long2jeYYBCVGfOX34hejuWFW2bePzc3KvHNNWCx6Ph0nXLa50MonmHAQpRnWlrakOTv3jRuh/u+pdJDfOfK6nWdgh9auvWzBdCTG7qBSKaGo7iIWoAg7HjtU5CEcPjgVBnb96V2WIYBsbHEhACCAT90PWpTw554EAU+98+OYOpIyI71qAQzQNCCKQyyVono+5Fh2L482tuwzWX/39447W3pvVe6XQOqVRuhlJGRE4MUIgaUMgfLvp7PD2KF/fvqFFqGodhCAydHMapE1Gk0wu7cy9RvWOAQtSA/uCcP4auFfcByRpcuI6I5g8GKEQNSFV46hLR/MZSjqjOKFCxYvHZtU4GEVFNMUAhqjOqquKPVl1RtO1Y9GjdjeQhIppNDFCIGsDBEwdw9NThWieDiGjOMEAhqiEhDAwcO4Ajh/djYOD9up7468ylZ9Y6CXXprDPbOdU90SzgRG1ENZTNZvHAA/8vjh8/CL8/iDPP/Cj+7M/vqnWyXHW1d0OBAsFJ7ot0dYcRDC7sWXWJZgNrUIhqSsAwDBhGDuPjI3jttV9hdDQ68csUQEHxTK6DsQ+QMzhx2Fw5+kG81kkgmtcYoBDVkKpqOG3JiqJthw5NPMNpR3M3Vi77aNG21w7sQjqbmtH0UXnP//ehWieBaF5jgEJUQ5qm47zz1hZte/31Z3HG4jMRDjSXfZ1H8yLgDc128oiIaoYBClEdOue08xAJttQ6GfNW9+JFWLp8ca2TQUQVMEAhahD/9fova52EeaN9UQu6uhfVOhlEVAEDFKIG8fYH01t9l4iokTBAISIiorrDAIWoxjTNAziGDDeSXDYzJxPMtapBaA2cT0RUHQYoRDV24YWXIxxuLfw9ePwgYvGTNUzR5AhVFh/7fv2TOfm8biUMXdHm5LOqEfBzvkui2cAAhajGfF4/VNU6FY8ffx8j8SE0ByMVX3f+sjVFf+eMLJLpsVlJo5PQNCQXdQEAMsnxOfnMeqQowKeu/FCtk0E0LzFAIapDPo8Pf/KxP624T1/X2UWzyQ6PncKe9/57tpMmKQqE0njNLS/992tIJmduMjtFUaB76q9Wh2g+YIBCVGPuvTcUqKrm2E9M2NdDCGPG0jUfHT50DNns9JcDSCQzGB5OzkCKiKgcBihENTbZeoiX396FI6c4vXo9OHFiHL/73YlaJ4NoXmOAQtQg4ok4UhnetRPRwsAAhajGPF4f+vrOr3UyiIjqCgMUohrzeHxYtuzcwt+GIbD3jedqmCJ3LU0t6GzrrHUyiGiBYIBCVHcEDh/Zj47wImhq/cyxEQqE0ByqPPSZiGimMEAhqlOXnX8lmgPNZZ8P+poQDrTMXYKIiOZQVQHKww8/jPPPPx/Nzc1obm7GJZdcgl/84heF54UQ2LhxI3p6ehAIBHDppZdi3759Re+RSqVw6623oqOjA6FQCNdccw2OHDkyM9+GaF6pPL5ncetSLOtcUbTt8Kn3YHCo8ZxRVQVq400HQ9QQqqo/XrJkCb7zne/gQx+SMyc+/vjj+JM/+RO8+uqrOO+883D//ffjgQcewNatW3HmmWfivvvuwxVXXIH9+/cjHA4DAPr7+/HTn/4U27ZtQ3t7O+644w5cffXV2L17NzStugmP9rz2OoTahHROFuUdzSgUFvEEkMkChgBagoCSD8VGEoBhAH4PkM4/r2tAyC+fNwxgOD8Zp98LNAeAnAGMpYB0Rs4c6dWBpoDcz6cDXo/cP50BRpIyDc0BwJffHhu3PqvJn98ugEwOCHjlPqNJIJWR+7Q1AZoqPzc2DpjTNrSEAFWVaRxJuOdJJCT/TaaB8ZR8H48GNAfl9vGUTCMg0+jRZF55NCDgy+fduPxsXZWfac7HNTwGpLLy+5nbNRVIpWVeGULuk8vJPA0HrTyNJ+Rv5NGBoM+69MbGASFkPiTS8nNDPsCXz5dURn4XQOa5T5f7nxqV+wJA2C/zZTyVzyPbMZBMy7SY27M5+VpApqElJL97TgCJFBAOyPcfGgWyRnHe2dPi0a1jYzwFjKet94T8eRHyyXwBgLGk9TuG/PL4yxpAbEz++96h40W/Y3Qoir379iKbyxa2GUYO//U/OxA7LVHIu6Hh0aLX7dr3a5wT/iT8HhXJNBDLHyfmcacq8lgcyx8D4YD8DUX+mBmzHTPZnPyNzbwzBBCPj8ApFh/HMzt/Cyhyv/awzMOxlMwjQB7r0VH5OWae6qr8zcfz86Z5NCCYPw/NYzcWj5d83oH3D0J9bbzo3Aj45HkJkT9nDJkW81hQFCASBI4PDMhjYySB7c/+Fko+vZoqXzM0Yv12TX6ZjkxOvjZnyPSOpYChkykYhsDyZQEMDb2PwZOHMJayXuvRrWPGp8tj0CyTzDwVQn5ufFx+BiDzxTzfYmMyz+0BkEeXx3tOWGWVgDx/zLweT1nnkkeXv3EiJc+RgAcwYJVVgHydWQ4Nj8vzN2vIz/F6rDxtbZJpGUlaZWFT/tzL5eRrFRSfb6mMfK3muBW2l7nmcadAnhfm+ZZIy3LREFZZNTwmf+uQrazK2MpH83Ni4/KzFaW4DBtLyvwA8nmX/w2a8tuMfJmrKvJ8acqnMWcAp0aK5yxSFVmWmeV8KiPfX1PlZ3jzx8DQqJXGsF9uH0nIstr8bUcSVvlvlvPZnPz+iu34FZBpTqatsmo4X4Zoqi3vUvI8B+Tnmd95JGGVVYXfQrXKJHveaapVbtjLRM2Wp2NJ+VpNlWmP5vfx6VaeQshjX4h8XmWLy6xKqgpQPvOZzxT9/e1vfxsPP/wwXnzxRZx77rnYsmUL7rnnHlx77bUAZADT1dWFp556CjfddBNisRgeffRRPPHEE7j88ssBAE8++SR6e3uxY8cOXHnlldUkB79+bjc83gDGUzJj2sPyhwWsHz6dtQ6ydNY6GFVF/li6Kk+W0fyBZQYG4yl50qpq/gDIyRNDU2XA4/NYBVYqI9/fEPIgDnjlwaQq8oDKGfmCyiM/S1VkQdWUP+lyBnByxLqQR/KFd2uTfN93B+Tnmyef/cDpCMsDxQxmzH3GkvI7RYLWwQvI7yWE9V3MEzGXk981Pi73MYMwTZUniJE/kcfT8u9EWj6aA4CmyQIjkj85RhLyhDQ/czQpv5v5myTSMmBsCVrfQ1GsAjdr5E+8cZlP4fzvpalyv0xWFpy6+VurgDdf4KmKDKJ8Hvm54/mLpPm7nojL38gU8Mo0hPwy/ZoqP3skIdNpXrhj4/I9/R75m2mq/NxURv6mZgHk1WReZQ1ZSCTzx0ZzQAYrQZ8spIbHgcFhmSYBIBE9WnRsHx88gRdf2oNsxhagCAP/vP3f8XabBy3BfECIWFFFSyqVwCuvvAwIK0AxC10g/7v6rd9GUfLpz1rHochfEFpCVqGv5M+XqDIMOO4jhmKj2POLlwBFgaIAyzpkfpoXSF0FomPyM+IJeXHTtPyNQ/7YzWTla8xC1RDyaw2eHIbTvt+9g5O+A8gZcr+hEXncmBfzrBm4BoCeVuvipKnAkaMyn6OxUfzoFy9BURQrQMnJQjjkA/q6ZF7ljOJAIpaQgcPYGGAID6KxUfx0+/+gJSQvsiMJ+TBvZET+Bmhph8wLc549Mz8DXnk8prPyWMnmrOM6J4DOZitoA2Se5AyZFvPCZ96cmRcYKDJvR/JBcWzcCqwD+WNQCPn+5rEZ8Mpt0THrRkOBVYb5PMCyRXKfTFYGORDyM0YS8jzLGfI7tzXJ75zMB0kBr3WzYn4HVQWOnsoHOIpVvpjH29Bo/mYqIfNFVfJlhAB6O/I3JYp8HyHyZYqSP2eF/NzhMet48uSDJnvgYJ57QyNWwC7y6YuEZH76PFZgbd64mtrD8n2VfB6lbQHGuC1AGEvKYwOQn90eBoLe4mDUvEYMxuRvawZCQZ/1GXr+PGwOyiBhNGldXxTFKiMB66YPinXDqSryWDBv7MzAz/49zLRE89c8jyYf6RwwnM8HTQUWNcvjuclv5bf5XY8OWcEsIM/rgFe+XzwBZFJl7q5dTLkHXi6Xw7/9279hbGwMl1xyCQ4cOICBgQGsX7++sI/P58O6deuwa9cu3HTTTdi9ezcymUzRPj09PVi5ciV27dpVNkBJpVJIpazpqeP5u6rRBOAT8kAQkIWrpsoTpLVJHhRq/sKUy9c6CAADw1Zh1h4uzkgzmDEECkdJRzgfQY/Kz/wgKg9iIeTJY4+qzSgxZCtUAHkgmAeRefHMZOVBP5q0Ci6PJg9uRbFqS8z0FUWlkM+ZNRqATHs6KwvQRRFgSXu+MLMdDwGvfG/7nf5YUp44KbMQs90VmAdeNifzsz1sRdxCWFF/Ml9AmCe1olgntMhfsEcSsmAxT0wjX8Cls/mCSZfpHk/J9/V7rDuGVD6f0/k8M4MJkydkFQiADA6GRvJ3cGY6YDtxIfPATEsg/33Nu3ldk4VZNn/stIet987k5MP8nrExIJFBCVWRx6KiyN815Le+d0tIXkRMsfAy7Nv7EoSQkc5oEjh00rqImMwAOeSXv4mRQlGAks0B73wg0+fP3wFGgtYdFJAv5AIyP0byNVu6V/6+5nEYz58ro45pV0QTSgIUnw4ssw/uUWQ+GkIeW6msVdOhq4DHvCvL/x5CyMA3kQHa8xc3+/d1Gk0CRlTmIWAFQ0G/zGeTV7eCx2j+ps28EIVCvsK5MG4VLfB7gO5WmV7nhLMeXZYFrSHg+EngEOR3Gx6Xx7GZd+a5Y9ZOAVbBDljlhhm4+fLnTDgfKKSyVkCRSMuLtaLkjx8zi/N31KdGZDlhHpOmsaTc7stfRLy6DLzMMshOCJkHTfmLVSpj1T7bflIcPpk/N23nWcgnX9PWZG0zyzqz3FEgL97jaVl+msGbmg8o7MzjzeeR+RXyW+kwz+/D+XU09XxNRVvYCuqCXqs8bm2Sx4WZl6oiAwDn76prVs1zJpu/uUhbQZtZPpjHm8leOxcfl+ePYci8NxznrVnmtISA7haZx87vDsgLv1eXgYS9hl2BvMFRFZkmv62MBuRxMGY7jg0BfDAkb+Tsx2VLyApIMzn5e9qPdSNf1iqQ+W8GzoBVww5Yv1M0X5NtGPJ3UBXgtDYr2AHkc2Ye+D1AYvLxSfUByhtvvIFLLrkEyWQSTU1NePrpp3Huuedi165dAICurq6i/bu6unDw4EEAwMDAALxeL1pbW0v2GchXvbrZvHkz7r333pLt6Ryg5A/aJltAYEasmiojULPq0yykzTt6AIBiRc1mEAPI1yYzxRc9iOLPMQSgJUunKk9l5Gf49NLqNE2xghddk4VMxHahEvlamFz+QPd75UEV8Mr9HWULDCN/NwN5wJm1A4Mxq3khmS49KQsUeVIrijyhC80QvuKLQyJdeoICcv9kUhbSlaj56mAz7jPfOhKUB639gA765KPwHfMXuqwBKCmgKyK3j6asC86Qo9ZQzeez6rjAmTUgQV/xhSmWkDWP9m1uCsEZZB6ls/I3sQcARfLfK2sAA1FZaJvV2Hq+GSWZBnLZNsgrv1lSjENVsiVvpynyNSMJ6+4qYTsANVUGpopi/YajyeLCC7Bq7MbTKBzA5nlgvt1IwgpITRml9HjXNfnbRh13mGG//N5ej2N/tfj3TWWsqmlAngNm+tKlWYDRBBAfljcaJp9Hfkef7UJiD/o788fMwfznfuTCXizvsS5eimLVoBy3vW850ZhSqB1pCcnvGvKXP37M3wywbgrMWoOxpPU9Y4rVXGW/6JvngD3vzRsUIYrP71TGqsG057OtMq6oacuUTMvXJdLy9/S4XB1am+T7mOebouTPAdv5e2rUCnqcKzM0B2VZNpa0anHLMd+jp00el0OjVpMwINM6NFp67pu8ulVj1OSXx0fI576vybDl5WBMliPhgAye3W5CAFl+OsssQP420VGZdq9u1dwcj8nvb978lUu7vfYPKP7/khsHWMH5eFoea/YaFfO7AfK54XF5E+cUDljHmKLkjwF7oKrI72k2eQFyH7M5O+gt/53M12crfG+nqgOUs846C6+99hqGh4fxwx/+EDfccAN27txpS0DxJVQIUbLNaaJ97r77btx+++2Fv+PxOHp7e2Hk777Mi4CqyILCyN+hQMhagRP5QsistjPvHsssglLQGrKiTKdTI5UzOjYuC5CkS5Qc9Fl3ic5aHEWRUbTJ55HV4WZ1qvOO2hTwyAMk4ygszPcs25FPkdXD5sFtvjaRBg4MWgd1Kl3dgWXXlK+ZCgdKa5YA67codwiYhYR5d5LOFxQeVeZP2qXgEEJeyNyCR12Tv097uPhuHR6rycnvuKgWvUdWNokJWP0LTo2UFsZ2o7YCKZkBxJj8XXNGcfVq4TMSh3BacAyaqlgRKKyqYLP2I+1DUY1GNgccz1fP2+8snd9HABD55gsz2T4PsLilNO2GsJp+FKM0SM5kgdF89a+9dm40Kc8fe3Dk0eSFN2YLaNPZ0gDaTK/bBWxxKxBaLPPR3nRl/pbm+ep23poF+/C4guPDiszLfAa0h61m1YmcOKwWPjfok+dlLF/oR8es/k1QSvPLpEAe07pmpV1RrLvm2HhxOWMGx4Ug0nHDZPJ5SvPTWc6YkhnrDtmeLqD88Sxs/wpRXEOrwGq2UVy++3iq+HcJ+YuD06LPyQeAuXxfDJ/HCjTdjCaLL7qZrFU7YE8jYF0rzBuzonIAsjnDrClKZYFs/v8zBjDuCA5MHr30Aq2pMt8D3uLaPdi+R6XLkHljBiG/38n4hJetAiNfBhYo8nhrzjdztZTJ94oU6zu2Nsl0nRqRx/xEN6mmsSoWP686QPF6vYVOshdddBFeeeUV/N3f/R2+8Y1vAJC1JIsXLy7sPzg4WKhV6e7uRjqdRjQaLapFGRwcxNq1a8t+ps/ng89XGvoGPUBbs9UHxIz4hLCifwX5kzJ/ppgH3XiqNAp1MttDNaW4eguQUT1gq4mpRr5K0DSWKr6LKieTK19oeDR5wfPqpTUdZl40B0pPRDeGYbWVmjUUQa9sWsmUq4mBVe3sViCbd3XOPFfzfVxaQ+53bM59I8HiNISyle9EUlmricfINwfa+zk4C3iz+tlZRWtntsumMkA8adUOmYQofb2uWceKkb+YIWvtL3KOgkcAIhfAstBKvBV7yfpsXbbnC2H1qbIz02JW6bsZGnHPs3S2/PEV8uXzTy2KlwDkO5eOygtIb0dxmsz+JZU4FwNWFCtgc1so+NQoEB0q3lbpuLQzL8bm+e/P17gMj5X2MahEBsUKMlkBRz/lQr5nclbTYGzc/YLtZNYamHwewJv/TVS1uJnIrKkArP4AgPzt/d7Sz3IGImYanWWYeZdsD5qFkGWWeVybn+U81s0+TYriXqs4lrS+nxlom00dZt8aJ/O8nWi0VJMf6GqpvI9Xt5pafbr8N5WRF/6iz7Tlic9Wm1GuVg/Idy7X5fez57W9zCn5braOzm7S2eK0mMdQOOB+btg12To/A6VNkApKa5gL6XL83napjHyu8B2FVZNnf305E5UHdtOeBUoIgVQqhb6+PnR3d2P79u244IILAADpdBo7d+7Ed7/7XQDA6tWr4fF4sH37dmzYsAEAcOzYMezduxf3339/1Z8d8BUXtGZfhZGEFYgoCtAWKj7Z/F4ZiVeKxu3MjmLOo8gQsmlgooi20PmswoXU7BjqZHZQ9Hvcm1jcuNXaKAoQzZWvpbAzRx2lJ7j4O5ltjJP5DEDma2vIKkgztt/M/N5un+Gz5dNYsrgt1xDF+awp8o7d7GFuz2Kzo6+d2XmxHE2VaTYT3eQr7hcEyPwfcQRi9sDQ3g/GlM3I6n37MZDMqNBQ/OajSasNHgAyTR7AXggh3zfFKN+sp6qlBZPuyO9woLiNO2fI/Mu4/CbmaC+zE55TMl3+ZsD+e0WCsoAPeK2LvNsx0BEGmjrc328ip/J3jR3Nsq385AhwLFr9+9g7Grpd+E1HTsl/zZFAZk2i87cxj3kns43fZC/c7U3DZmAAWMeovTa00AlUFNeEqgrgNheg2++YyaGksDNHNTm1hkqPMVUpbuoArGDGTHelMq4lVP4GS+TP73IXRrOzs0ezahXN38Ash+zMPiCAfM8TpYPJSsoe+2fZ01GuLANk+TTZWjtAljV+22CLSsy+ISbnb+XVre4Pbry6PFaGx1Dyu6u2mhS33+TUyORvGiqpKkD567/+a1x11VXo7e3FyMgItm3bht/85jf45S9/CUVR0N/fj02bNmHFihVYsWIFNm3ahGAwiOuuuw4AEIlEcOONN+KOO+5Ae3s72tracOedd2LVqlWFUT3VyOQAzSj98ZsdJ65PL41oq7lbMkeUVIqeJ9ISLB+tVtJk63VutmUC+Tufydb1Qd7xuRU6bjRVBnGpCgWvnSd/shhl7oBMkVBx4QS4BwOaWlz42jlPBt3WAdQQ1oiCkvfMN2XFE5W/l0crDR6c7MdSMl3a98L8Dm4nrqoA7c2lhUsqBRxRCj1QABQPVzU1+WUfE1Mc5+A98X7hb8OQwZFi61fiPGb9Xlm9bRfy5ZsSzfdxufA2BYA0itMIyO/Z1oSy1QNNftncZD9+zVECiZRVyI+lZB+jmC0/3X7LkyPAUH4h4ZxRXdOj2W4+PAas8AC97ZX3L2d0ADgFWdOwYvGEuxeYtUNjSWt0TTo/WsKtuaYa9qBnzBYQ2ms5nM0dIVvfCVWtfFfuFkD5ve4XWNd9XQYPmMNXzSDMPGdyLgH20Kj8rHL9VsIVmixGE/I8SGVLg410tnLZ6NXdD23nEHCTas9DpbRDv5tIsLRsdDIDH7NGyY0CWWaoijy2nOew8zPMYyGXrwV1BiIC7jfW9uuP2/er5tpUSVUByvHjx3H99dfj2LFjiEQiOP/88/HLX/4SV1xxBQDgrrvuQiKRwM0334xoNIo1a9bgmWeeKcyBAgAPPvggdF3Hhg0bkEgkcNlll2Hr1q1Vz4ECyAuTfxIntfmjmU6NVOg0Woaer9pOTKIw9GjFFycFle+yzHbKclG2vWbB7MltDkmsRnO+s1elvhKmZHryB5nZ434iibRVu2MfMQXI19vv2N3Yh0u6SWcn7uSqqRMHIM67InOkkpPPIwNPv7f0t/N5yn+O28+sKCp03Y9cLp3/O9852tF8cCJ1AOHQOAK6LI2NpAbYLkaKmoXfm4IiZNRmDgu1Jz+ZtkZsmZxV3OWEFslROHaJNPD+keJtqprvR6JYI3NUW/8K+6ioip/ncn73tALNp8n/Lzcaopxh253y0VOTf52TWSOUTBfXaFVDQJZLZvW4qrgfS27MIbhTEXDUuBXmodGLO0SbHVqB/CihKd6c2TnPTwH38z6dKa29TWWAQyfc+9FMqandloZK3PqImSJBazCC02TKNJOCiX/3TG5yN432jsTlpFzyd6ImIzsjDRhmx+4JbnzN61vhsyfoWmFXVYDy6KOPVnxeURRs3LgRGzduLLuP3+/HQw89hIceeqiaj3Z1PAp4q7zryOYqF2heXda4FCiyStm8AHe5vsrxHh7He0yS8wA1767s7J2ezBN1bBL9aQAUJs+aTIBSjWRm4ot+s6M9FErxne9kCuXmQOUqyckwRyo4ZXKyb4abdKFXYjFz3gKzTXt6glB9fUDqtwDyI1nipdXnsVQUGSONAPIBiiNdGYzAExpAq9pX2DbZpkz7JH7l2GsBU+0daDpyqNBZ0n6uqKp7H5hqL6puQXgyA6i299FdguNy56C571jKveZrsswLRSY3vfcx5QwgFZd51hKSwbv9fHEeX84midnmbBqKjlp38SnnaMdZFPIVByjmsec8Pc2bB6fgBCOHqqaUv5FTRfnAwxypVq4J3TDyo6DkR8gRV5rt/KtQhlfq4G830Q1uTgCnJtEpN+iTNdSV2K+5zpujSqbdB6WWWsNAMuc+iqOciSJt+6QzUGRV+WBs4vcN2eZgqBQAmdXhk7mgOdulhQGcHHUPMNwKacA6geUbul/gRxKVa0vMScbK0VV5QfB7Ku83kXJpME9ytwDOrWaqMOujs7oy35mrmn41ExGYXHBoT7qan7/Bvi3kV5D1K0gUajIEQp7ohMMifToAexCT79DdPMlCyi4cKB+Am1l5PAck83/kvD4IRYGeS0EzkshpAZwsE+RNlVuN2EAUMMrPSgBAnmdeR1V7V0QUDorTWoHlp009XemTQOykwOJFAmdN433KMS/C0VFZk2EOS57he4sps3eAzWSLg/5Ttgtv0GvVXqezlWtAJ6NcDamzOE1n3MttswbazufSv0/XrHljTPZAaDI1HpUo+WC+HAGZV+V+7+ho+RqtVNZ9CLH9vWeSYWDC3t8e3WoKTFZRNjV0gHLoBOC1FeCqy0XMjTl76ES8ujWBz0TM2UVnktt7LnG0mdtnBnQzkpi4UJioRiWeKB2m50ZTywdKJnPUjpPX4/6bKJD9F9widF0D/GV+75K27vxEe6EZPjsNUZx/AtbMjSZzFkuTOVLI/ndLEBi2B6Mih6Gh91w7stjb592GnVfqIDsRc0i6Ob/FSCI/w2xcfk9fG6A5giZPNg5fOorxwDSrt2yEEMhmUhBTXFfIOdFadwsQ9OTw/jtyJlmvZ+I5MSoxf5alS4xpvc9E2sIy3/1eea6PJuW5OJ0mjbmUzlnngtcj+4GZmgOAnj8PJlt2z5VyHVBj43LIsb1MyuTKjz6a6dpqk7OzsZ3fKH9sG4a11Acgb3DsZaU5C7ibcqN+JtMZNpW1buTSEzTD2zV0gNLVYvVBUfI9sSezcJd9uN5syU6iE6uzh77TaLJy3xXzc2rFrc3SXNuoXG/8SND9dfZRCJOla9W9ZkmVFxLnb1gYCWTblknLCePsnL9pJuc+CsDumAokHP1NTo0A/tCFULETRn5MsiHkTLH+/PdO6QAceX3oJDA4iSp3BVb++fMzmaqq1Xyga/IiMp627n7SWukwY0BWQUcm2a/ETggDY6NjEBB4++13MDoqq2CymTQGDr+FoXgvgOI3jp86hO4PdcDv90NRVAw5fhNFUaDmeypmDVlj2R4WMLIGcvl2itw0OrwDtk6nE7yPNgNljaJYc4B0NMvjcnhMXkzGUrUtAyaSzRVG0yOVLW7iM2fIBeQF1d6kZe8Mq7uMOqsF8xrjpKnuNdOxROlvY/52ds7ms7mUzgE522+Sq3AsmcufuFGV4untncxlVYBZnkm2nmSzxdVcJ+KyMJrM8KtK133zDrdcRG/veZ7Juf+oY6mJOzTNVE/nmeDT4Vq10eQvnSERkHcP9rUknOrtjsjJbX4Oc70Yk9tvOFu/WdYofW/DABTkF9TIE5DHnHni5lzy2G0EBJAfbZXvJGxOw25OS+52d2QOQY3o1qiqWC6IIaO4hCnUcrVW8YUBjI6O4rnnnsObb74JwzCQyWQgbJGGoigwjNIvcuDtV/FW9BQ++clPwuv1IqKgkEWKqkDTdHi9XigAxlIK0uMCh8cBv5bC+WuWIBZNICWA3x02IKpb0L3AnDr//UFgsEKBG/BO3D9rqsyZYuPj1vxHlcotp8Qk+hzNFeeEceZUB0JY8/oAKMyAa5bxXr32wUu5odpuTThCWHNomcx11JyK5hqxvX4m+/s4ZyGuJJUFUhWacE9VeM7+G85aJ9l6c2oU8Dp+wJNxa5EkN2ZhWqkpQlMnHvLV1mS1E6ZcDphKQ96mYzThPu+AXbkROPaVQu0UxVp8y8nrqa53t91UqzerDWycn+MccWCfOt2+j9uIgkajCC8gdMAxLb7fY3VUNe96Qj5ruYSpBo9eZWautrlcDv/xH/+B3//+90Xb1fzVRtd1eDwenHIpzAxhIBwOw+Px5Gehtr1eUZDLppHI5kdDwZomJpcDWjtCaO0IQSCLMSOBlKi+t6kwgGx+Qhhz2Gc5Y6mJz9eZkM4PnzXXugr7rf5glW606vaYFzJ4cstb+wVa16xlM7I56yIpkF84cJZqJoL+0qH603o/l9Mq4EXJD5QT7jNkO4MZMyiuZoTbdFU6D+xdBBZME88Z3aXDjM0lsCcy3Q5OgCz83NZgqFalC/m4Yx2d5qB8pLPWXdxkJTNAskyH3+NlXlOprXM2mCsLm5w/k3nXaP/9Yo6TMz2JUQXmkuip7OTne5lteuAsZMd+i2ouG55cJ/RcC7K6Nda1pw04zV+8YnG9EUJgeHi44hIXiqKU7XvX19fnut2o0DlDVVUYhiE/Uwj41DGkctUHKLksMB6vv0w1p52PJ6xysK3JWsHa2dF8MjPb1oxSfi6kcjS1eMSauWAlUDxKz+zYPp3+IZOd1r1WKp3zJSMqAfi8Uxt5Wi0hgA9OTH7/hg5QmvzADPbLmxHm6qxuEhOMOnGTyta2Q1ylaZqnq2TuED3/ebbAy1y63eTWnj/ZGXbdOEcgzDZDlF+3J+MJY+CkNabZ7wX0EKBEC5uQE2kcS72O89v+sBAYj6pWOz8gA1qzylhVrGacmVB2fRZhHaduI67KMQMU4XjjXC6H8fFx11BNgSKDF9uHOF/vnkYBVVUL/yrG1DOlbmse8gwhL8Jmx0Sz9jScn8m2mt+oUTi/j7OjvLn4YmEV+vyPmLJNYmkY1krecuf6/63dVJoPym3Qg3PuLsBav8mZr+aM4U6TPaY8nRPvY2roAGW2OadNtxsec+/gavZPcavuyhqN0/t+upx9UJzTWKtK6XDrcrOvziaPPvEaQDOt3Aiy8XHg+PtWwakaJ+HXndGhQEaMFS4+AkCmGUVn8gdjgxhOLIdZ/+ApMxPmVGheOZKnaPglgIMnZCdfRZlkP7Bc+Q7imqZB13UIIeA3dBgZBZmMyH+WAagCuq5DURQIISYVnNjf23yNqirQpnD1Meqgw2a1zNrTE7H8kM+QbPozV7yeb8FKJfYFGQFZ09RqC17sN2QJ2zIN9sAfmN1ROnMtk3O/UXNrnnTr+O1WngMyb521NdVcAxdMgGII2anW7XiKjbuPKU+XGT4GzOxcGo3GObOiTy/tc+M2WmehFYQTyWStuS2io0AyUVzgxeLHEPNlqi4EM/rRks+ZKboGuLVoZmw1bROtbSOEQPTEUYyNjReaZMwgw+Px4OKLLy4sMCqgITaSw8Gj4+hWPdDUKPoCXWhra6vYnGMGL27MICXgVdHbUjmtbqJx4H1FTvnfEQZa2iZ8ybQ4VwCeCebqs+YQeK9uLcSpTmFE3Xxhjpgy2edIKZojC/LibfbxSGeKayUmM4qzUeUM9+vfBy7nvdtgCbWKfGnoACWZRtFS84AcxuY2SU1OlA825uuBNBXOuVc0Nb+Oiq3fTXOw+A7ZnDuDyjOHtRq2SeRGkrIgMyfTM1ya/7xKCC2eXgxl3pvzNM80I5dD9ORhHD3wBk4e+z3SqdITcsmSJVi6dGlR803A70H3IrPaKYcQllX8HE3TkKswXtJsHtI0dUoXYrM/ByDvGjtbqn+PaszFnbqZ24m0DDazRr5v1hyUjUGXBTdnWzWLmpqcUyFEglY/GeeqzmMpK2BPOJYlSGcXzjXHEChdYHKhdJLd/0HxRG1UWcBbPCTPq5eO6w/6ys9TQuXZLyBZQ07nnBPWGjduo4YmQ1e8CKptGEJjBihCCKSTYzIoGXgPQ4OHKk6+FgqFKnacnUi54ERRFOi6XmgaMrc1AtU2jHq2RYLWxXY0KWv2JjNlwnScqrKz/3Qpigwy5+qmSoFcOdsse8dS1tQUI8niciFgn+l2qukT1jT5ja6hAxSyBLzFo22CvuLpqM19nCdlg5TRdcUejKTy03dnc/mCNj+vgNvQ84nN4ZVolgkhkE6N4+iB13H43VcxPjpBuw9kwLBsWeXakYleX67mRFXVQnCiqmrh7+lobgZaWubDZaCYosh5jiJB2cE6Z8g+LGP5WWzdhrk2EiGmvtDiVE1l1E8kaHVGrTaoGk/PXf8YIYqXN5hIqoo+XA0doLQ1Ab5JjEUv9Mye5g82V9VyzoMwHCiuWtTzzS52br2wafrsVbfJtKwCz+byS5ND1pbM1Eyeih6B6uuFkXq/utdNcbKx2WLkcjh+dD/e/u1vJhWYmJwjc2aKqqpFq6XrupzIbboBiq4LeKaw5lEjMZs1mjR5gVwUkbUp0VEZsIylFk5zxVywz1vi7KDq81i3L61NVk23qhYPyVaV6S3jMBXOm+FKFsxMsr0dkxtmLMT0h5LmjPw059N8D+ey9gFv8TwqPk/ptMm6rVOqptR+5sT5yrB1ghtPybbSjG1q6lyFUV0zQVF0KJOYCC2W/QA5kYGmyKujL3U2svrg7CVskoQQGBo8hPf3v4RTA+8jl6uuXaCzsxORSKQQqFQaneOccdbc3xng2GtMTLquIxQKIZudWu9hXQfOOjMH/wJsXlbzI2ACbdZM2ubCdcPj9T3tfqOzN7M5O6KbwYo5HX9hmQDNWk9OQeMNVGjoAGWynIuzTVWgQm99wygNgmLjxQeVW3mbdJlU7Phw+c8J+ia/nHY55aavr4auyuW/G5V9OviRRL5zYM6q+q2LIYRGBrn0sZLNscxhGCILTfFAgQJVzNJc6lVIJkbw7rvv4tA7u107v1ZiBhVmHxH79nLzpLi9h9s+ZoBify+Px1OYhbaaIcomjwdYed4CHsaXZw43Xdyan8LdkAMRRpLyPJqt+ZOolP3ac9wxGac2JP81FyU1AxSfx6p5UZCfjqDOgpcFEaBMlxDFS18LyFkJ7Qs8ZXPWeHn76ybz3m4r0pYzkph+++mJ+PQPxIC3eDjeVISnGSgpyuR649snZjJnnc1krSrUmgciZWUhsicn3q1GDCFwYjyL358Yx+uv/hhjVXS8cavxMJtiygUak3lPt23O7bquIxwOIxqNVhztQ5NnNgW1hWXzQ86Q5dTwmKyNnFqfLJoJ9r4hJx0Tgh7NBy/mhI5mG1LQazXbqPmh17UIXhZcgOIs+wxROroinijeJoS8mNXvhax60/0uMzE3Q7VT9TspCtDkA2Cfsjvf/qoocv4Cs7Ypl5+XIOQrbp/NCeBUfHrt6ObxMVu6fatwJLUbk21gFEoaQklDEbPUBiEEjh8+gd+9/DsMvH8SxhQzz200zXT6odgDHvP/3d7LMAzE43EGJ7PEDFZam+Q5mDVkc+l4St4gzMXaRDQ55nUgJ+TcOCZ7C5K5vIgpbFuORFetNZ9MMxnIzKsApWTxq/xcE/Z+A0OjxdVhhuE+/TzVN3O8i6pa7a7mSq7OmQsVpfI8Cy3TXNhRIF/DNo0gxxDy7ubksJwAzBTwAl1NbVDi1rFtBl+efDvziArYb4xyWhSGNgQtu7jqdFT6CoZh4OSxo9j93PMYeH8ARoVu+6pLRylnIOJ8b7M5ppCWfIY693XWsLjVxlQKdDKZDNLpOVxFbQFTFNk/whOUd+SdLfJciY7lO9kmG3tE0EJg1oaZ7P+vqcU16faRR15PcVmsoPrgpaEDlFMjgM/R69kZnaczPAEamTmiSVPlBHFmMGLOZlvN8vLlTPv1mH6fHkAW4FqiCwdH3y5sa2sC9DYAH1j7aRqwbBHgz5+9x9LAcXu3DwVY1glEptCZejQphyja5bJZHDlyBG/tfbli51ePx4MlS5YgEAjg9NNPrxiQ2KXTabz//vtobW0tbDPXzCnX8RWA63Nu+1F9MBcnNBdYNScvHBqRN5LlVmGn+pUzimvS7f/vXLrELLeTLiuUl9PQAcqRU5yobT7RVQCK/LclZNUU2LfP92tOS+tyHDz43LTfx6tbAUw1zOpaIQTGx8exb98+HDx4EAcOHEAmU76qsbW1FR//+MfR3NzsWnsykY6ODgBAKpWC1+stGhbs7MzqXCTQrSOtvfbF+fqcMfnp/+0j6Ghmaaq8wz6tXf4mhiGbgEbz861wRFBjc06JPzAs/00vlJlkqXGZNR+6BrSFUFhe3Rwe57aGA82N0dFRvPHGG9izZw9isdikRrqsXr0aLS0t0/5swzAKQYrPV3r34ZaWXC5XsRkol8sVhhQLAXwwpGB8EgGKqsghmtM5Ds1F1KYza6m+AOY4MkcEdTTLFXRz+WAlNi7vyjkiaGFigEKzzqPJIWzefMc5RbEt+Z7fh8GIu9HR44i0nla0LZlN4ODI73FW60oAQETrhFcJIC0mHt5VqSZibGwMe/fuxZ49exCNTn6CNQDw+XzweDwwDKOoxmIqw3iFEMhkMmhqaprUfChCCHg8npLvY61arCKXy0EIAUMoGMt4J9Xsa+RnyJyuE7GJ96nE5yntiFitkK/8KtqT5dHdl8Go1kTnunnj0h6WwV3WkLPXJjNyVFCC3YcWDAYoNKP8HlmQ+XRrCXOvbs1Dw0CksmCwA6vO/3zhb7+/BcO5saJ9ciKLWGq48LdPDclJ22wBijAMHD58uKQz6NDQEN5991185CMfgddrXfVOnjyJPXv2YGhoqOo0RyIRtLW1FeYwsQcp9kBlMnOZmEGGOcLG6/VO+DpncGL/PHvn21wuV5MDcLrdKpKZ6XfkHx6beJ+J2M/jqWryTy1QMkeSBH3ypiaeyPeX4oigeY0BClXNLONDPhmM+G0T/nj1+V8dPZt03YeWluL1aAIpA03eZoykJ3crnh4z8OOf/wwnDg+XnS31vfemv/igrutYvXo1Fi9eXAh25CrB8gBwq0WpVLNiD1DMoMIzwVzyZjCUy+WK9jUDFLP5R9d15HI5JLI+iHmy3tFcS2en39TinCtqKsy5j8wOtW1NMujxe4trZcsxa8amO7VAfHz6wed8mrpiNjBAobIUxWo7Dwdk9W7ANoGPrll9Rmj2RHyt6AosnlSAkh4z8PtnRjH6wew32p911ln40Ic+VAgsnEOF3eY5qabJx+PxwO/3V3yNGaCk0+lCTYo9CDIDFI/Hg1Q6g1TOi/myIONC5axNGhqVfVU0VU421hSQ/1aa1n26zV1CTD9YM4QcwTSdQCmZmX4tUl3Mml0GAxQCIAMRM9iIhGR/Eb/XmpBHU+dueXIq9eFFH0VveDneiu7FGZGzsKSpdNVfYQgcfSkxJ8GJ3+/HihUrCsGHYRjweDzI5XLI5XKF6eWdqhn66/F4EKiw2Ja92cjn82F0dBThcLhoVE82m4WmaVAUBeMZD5IjrN6bj8wRIydHZO2IpskRgOGAnMxxpkdjKcr0Z9IG5Aim6cgZ0x+anZiBSTfH03JOm8kQVZyCDFAWIF3LD92FtSpmwGt1xOMImvpzXvtHIITAxYvXQVdK+1wAQGZcIPre3PQgXLJkCUKhkPXZmQw0TSvUnpg1G9OZGfboiSR2/PebGMovHb1Ma8PyYDty53sAFVja3QRfYUlXHd6AhuGRBIKBALweDVkBGIoGoWo4Hs/hg2iO82wsAAJyiPLJuJwlWtOASABoaZJN0D7P/LnZ0lRguiG3JyjnmJqOamphFsxqxjQxRZHrKkAB2ptkcOL3yk6s9n2o/imKAo/LascqNJwbWIdX978KI/P6nKSjt7e3pOkmm80W+oHYJ1qzz1VSTbBycjiF/37lII4cOQUAuFBbAq1NR6bDB2gKDh0bLW2tEQCUUXh1Bemsve/L1L4rNTYzWDk1Kh8KrCagcMCa6ZRl4PSo5tTek1BNtwAGKPOIpsomGQVyiJ6uyqngi6Yb5ok47yiKghZ1McaP7YGYg0V2FUVBc3NzyXbDMGAYRlEfFFVVYeTXmrAHK5MNVBYtisj+LUJAS+owutRCQSgK/3EQQCrDiIRKCVgLrqr5ZTHawrLDP4OV+sMApcGYvdR1TS7apCjyBDP7iMzE1O/UeDKZDA4cODDr07sLIbB48eKivh52ZjBiBinO2hPn0ONyNStmjccFF55e2DedyiLnn4GGfyLIZglzeRRNlU3d4YD1YFN37TFAqWNmVZhXl1WSSn5WSnN0DafhprlmjoixT0Vv55z/xBmcmLUn5v8bhgFN0wqjbczAJmcIZHJWXbCiKPAxOKFZYnayTWZk3xWPLjvZmvO2VBoRRLOHAUqdMCdA8nlkMKKqcpVdJR/FczgvTcZENShTmdnV7TOcc504P98MQOz/uu1nvo/5b2G7CuiamPSaOUQzRUAOIR6MASfi1tpgkaAsnz36/OlkW+8YoMwxRbGWozbnFNHU/NTvAKDw4KepmUzzzkw0ATknVDP/tdeaTPVzzPfICRXJLGtMqLaEADI5GaicjANQrA624YA1aRzNDgYosyzgtaZpDgcATbHmFgF4cNPMclvZdzY+w7lisb0/iVt6pvhJ03gt0cwyO2Wbixiq+bK8NST/NW88WabPHAYoM8A8HkN+WR0Ysq034fdaNSI8cGk22SdHczarTLTo3mSUqyGZneCEqL4ZwhoRpKmyrO8IFw9g4CkwPdPq2bB582YoioL+/v7CNiEENm7ciJ6eHgQCAVx66aXYt29f0etSqRRuvfVWdHR0IBQK4ZprrsGRI0emk5Q5YXZOVRUZNXeEgeWdwDlL5OND3cDp3UBXiwxSQrbOVTxQaTZ5vV6cddZZheDBrOUwH/a/7fu4PQCU/G1uM9/D4/FA13Xoug6Px1N46LoOTdMKk7YxSKGFIGfImVQPngDeGwB+dxT4ICprWnIG5+GZqikHKK+88goeeeQRnH/++UXb77//fjzwwAP43ve+h1deeQXd3d244oorMDJirVve39+Pp59+Gtu2bcPzzz+P0dFRXH311YUVTOuB7KQnh54taga6W2QAcm6vfCzvBJYukqNq/PlZWFV2ZKUaUVUVy5Ytg67rRYGJM0hRFAVer9d1+0SBjfm3ruvw+XwlD6/XC6/XC5/PV3GkD9F8JgCkMsDxYeC948DvjshgZSQBZLLTn5p+IZlSE8/o6Ci+8IUv4Ac/+AHuu+++wnYhBLZs2YJ77rkH1157LQDg8ccfR1dXF5566incdNNNiMViePTRR/HEE0/g8ssvBwA8+eST6O3txY4dO3DllVfOwNeqjkezxry3heX/N/nzc4pABh68EaR6t3z5cpx22mllayPNYGPFihXYv39/0XPlmn/cakA0TYPP5yt6jTn/ifn/2WwWQgioqlpXNx5Ec8lcVPD4sBwVpCr5DrZ+Ob08562qbEr3/Lfccgs+/elPFwIM04EDBzAwMID169cXtvl8Pqxbtw67du0CAOzevRuZTKZon56eHqxcubKwj1MqlUI8Hi96TJXPI6d+b/IDyxbJmpCzTgPO6QXOXgJ0RYDOiOzUqmtyHQceQNQIvF4v1qxZg2AwWLYWBQCOHj1asdZkohqYwcFBpNPpoloTv98Pv99fqMEB2AeFyE4I2dwzPAYcPiVrVt47Lhc3TKbZDOSm6hqUbdu2Yc+ePXjllVdKnhsYGAAAdHV1FW3v6urCwYMHC/t4vV60traW7GO+3mnz5s249957q00q9PwieJoCtDdb69LY5xRhGUrzybJly/CpT30KL774Ik6ePFk0aRqAQhONvX9Ipc6zztcCwNjYGGKxGNra2or2M6e6N/8/m80W1awQkcWwjQgyR3q2h2WNvrlkyUK/PlUVoBw+fBi33XYbnnnmGfj9/rL7lU5b7d7Lf7L73H333bj99tsLf8fjcfT29srPym/zeqzgoz1sTW42E0tiEzUKRVHQ19eHnp4exGIxHD9+HB988EHR816vF/v370dvb29RrUoqVbzmujNwMYMPANizZw/OOOMMeL3eQkCSSCSQTqeRTCaRTqdndagz0XySM6wRQYC8sY4EZXPQQg5WqgpQdu/ejcHBQaxevbqwLZfL4dlnn8X3vve9Qrv2wMAAFi9eXNhncHCwUKvS3d2NdDqNaDRaVIsyODiItWvXun6u2QnPqasFWNwh/99cS4GI5DnT2dmJzs5OrFq1qui5VCqFCy+8sLCejhACo6OjE/YVOXToMAZORDGSABKGglffPIrly5ZBAAh6shgbGcH4+DiyWU7/SjQdibR8HI/JfiptTbLfSsC3sNYIqipAueyyy/DGG28UbfvKV76Cs88+G9/4xjdw+umno7u7G9u3b8cFF1wAAEin09i5cye++93vAgBWr14Nj8eD7du3Y8OGDQCAY8eOYe/evbj//vurSnx3izU5DhFNjjPgVxQF4XC44muEALqWtkA0Ax35VpuRLPDG74cBACFPGm3+qfcNI6JSQsgRQceiwHHFWiPIp8tOtp553keyqgAlHA5j5cqVRdtCoRDa29sL2/v7+7Fp0yasWLECK1aswKZNmxAMBnHdddcBACKRCG688UbccccdaG9vR1tbG+68806sWrWqpNMtEdWeEHIEwgdD+dk0XeTY1YRoVhnCGr4MyFaD5iAQyTcDzccRQTM+k+xdd92FRCKBm2++GdFoFGvWrMEzzzxTdIf24IMPQtd1bNiwAYlEApdddhm2bt3KeROI6ojZhWQw7h6cFNbNyWYwOnYSi4IzV505Pp6Q7z/fSlyiGZIzgOiofGiqHJlqdrIN+OZHvxVFNGBPtng8jkgkgi1btiAQCNQ6OUTzjrlI2uGTQHy8ODgRQiAxFsPh37+K6InDyGXTSI3H8KEPnYGPfexj0HW9MCTZbRVjtyLH3DY2NobBwUHs+907WHnJBmi6DkXhDIhE1Qj6bJ1s86259RKsJBIJ9Pf3IxaLobm5ueK+XIuHiEpkcsCB48BYqvS5xNgwdj/7bxiNnShsUxQFb731Fo4dO4aenh50dMje6z09PRVH/A0NDWF4eBgA8N577yEajWJsbAyqquGF7VsRCEWw4tyPobNzUdn3yAovcvCAiwsSSeMp+RgYlv0025pkM1DQ21hLrzBAIaIi6Wz54EQIgUPv7CkKTsztQgjEYrFCwAEAgUCgYtNtOp1GOp0u/G1ONZDNZjAaO4HR2AmsOnspmiqsI6F5m3Ai0Va2fwzRQiWEHA10dEiO/jFHBHl0WcOi1fks6QxQiAiALMyGx+TQxnGX4AQAxkej+OD9N9yfzLPPZ5RMJif8XLd5k0yaplWsgVFVFcilEFSjSIsQMsIL1qQQlTIEkMzIdYEAQFeBSEg2AzX563NEEAMUIoIQwNCo7HNSaTGz+NAAUsmxMu8hXziVKe7N1zpnvm1rayuZddpOURTkchkE1CzCfh0Do96qP5toIcoacpr9UyMyWGkOyiHMQa+c+LQeMEAhWuAmG5wAwNH3X5/E+008c7Rzf/Nft061lZiTy5mdcomoellDlgFDo9YooCa/rF0J5mP+WpxeDFCIFrBsTt5BHYtOHJy4BRDO5wFrpM5kAoZKwQkA9PX1VXy9pmnI5XLQdZ2rJhPNgEwOyIzL0XuKIqfdb2uSo4GCczwiiAEK0QKVzQHvDwLxxOT2H4ufQuzU0Um/f6UgxR6MVAp8gsFgxUDHfM7j8cDnDQLjk04eEU1ACGtEkKbKTrbmXCvNwdmfdp8BCtEClMkBB6sITgDAMLLIZTOuAYMz4Jhsc8tE0zBN9D7muj+ZrEAsVScN50TzUM6QI4KOnJJ/ezTZZ6XJDzQFZD+WmQ5WGKAQLSBCAKkscORkdcGJRYHbhPeVakoqjdKpRNM06LpeWHHZ7b1N6ayC8bSZPiKabZkccCIOnIwDmga0BOWooIBX1rTMBAYoRAuEEEBsHDh4Ympr52iaB6FwK8ZGhlzee3qzkLgFOJFIBN3d3YUApVwHWkVRMJoLTevziWhqBGRz8ckR+fBoslYl6JPNQH7P1GtWGjpAabxJ+olqY7rBCQAEw2342GXXIx4dKGw7OXAAI9HjrvtnsynX58pNd++2n6ZpFZt5it+HtSdEtZbJAdEx+fggCjT5gJZ8J9uAt7rrdkMHKMNjQMpR2AbKjOGeDwsnEU3FTAQngAwYvL4gOrpPL2xr7yo/yiaXzWBs5FSZNBk4euB1ZNLuE7mNxk5CVQFFdQlQhAAgFxI0DB2qkkNWcKFRonojBDCSlA9NlbUpoSq6ijV0gHLoJOD1FW/TVdke5hQOAAFHxqiqnO7XWf4piuydTNTocoac32R4bOJhxFNRqXZD93gRaVtc9vmW9tPKPpdOjsPIpXEi0VTynKoYCOopZIWG8awfCgRyggsKEtWznCGXz4jGJ/+ahg5Q3GQN+XBKZdz3112CmSa/jPTsNBVoDaGkFllRZqf3MtF05Qzg0AlZ1dpovP4ggCCybkGVANJpzhhLNN/NuwClWlmXuZ2GyxTox6Kl27T8FMHO+CQckM1Ndkp+sSYGMzTbGjk4ISICGKBUxa2K3MjPxOl0cqQ0aFFUIOwvDVDCfmuGPjuvR9bOuGGQQ26EAEaTsnPa2MTr9BER1S0GKLPIGc8IQ3ZWdCpXY+PzyCFbdpoKdIRREv34PeXHnjOYWRjM4OTAoHvNIBFRI2GAUsdSGfe+M25Bjkcr7U+jqnJaYmd8oqmyCaqkhmeWpy2m2cPghIjmGwYo80QmJx9O5ar53Wpbmvyl/WZUVU5n7IxbVEU+R7VnGLJJ8fgwgxMimj8YoCxQ6WzptqFR932PlU4cipAf8LsMpHALcgBZw8PamZlnGMCRITndNBHRfMIAhSbkNmw7Nu7e1DSI0kBEVfIjnRzbm1w6ByuQfW8YzEzMMOTCXSddOmkTETU6Big0owRKpzI2hHvtjNvoJ1WRgYszQNHM/jSO7V69tCOxab4GOULIGrDjwwxOiGj+YoBCdcUQ5VfZdQty3AKUcsGM3wv4GnykkxByyfP3jrs30xERzRcMUKihpbPuF2q3IEfX3OeVcZtUz1wGwUmt4UgnBidEtJAwQKEFI5tzH+WSLLMMglvTUcWRTs5lECBrc2YioDEEkEjJYcQMTohoIWCAQlSG27BtcxlxJ7dlEFTFPXBxC3IUAJ4yyyAYQr7/idjsLPhHRFSPGKAQzYCcy0inHIATLsN/B2NlRjoFXJZByG8bGZejm0yZrPvoKiKi+YIBClENOEc65URpzYwCuYRBV0t+JW2bZKa0qcecsM353qmMe20QEVE9Y4BCVId8HmBph/uQa0A2ETmbiYSQTUpOmWxpgGIIObmbs8XIMICRJEqeYMsSEc01BihEdcbnAU7vcp+Rt5JynXG9HvlwCgdKtwnhvv7TSFJ20rUzhJysz1ljIwQDGiKaPgYoRHVkqsHJTFEU9yUM3LYJIUdFOYOR8ZR8OI2l5DDp4jdhXxoicscAhahOdISBzkhxZ9h6pihy5JGTV3dvajIM9yYlt1qY0SQw7ghmzBl0iWhhYIBCVAc6I0BPmxzNM1+5rX6tqUBHc+n2jubSYEYIYCTh0sHYkMsmOLeny8x7Q0SNgQEKUY0thOCkWooiRzEVb3SvmRFCLm3glHKZZdjIBzPO+WRSLqOiiKi2GKAQ1YhHkzUFXS0MTqajXOdgv0c+nNyCnHS2tLal3LBtw6zJcbyHcz8imh6XStfyNm7cCEVRih7d3d2F54UQ2LhxI3p6ehAIBHDppZdi3759Re+RSqVw6623oqOjA6FQCNdccw2OHDkyM9+GqEF4NKCvC1jcyuCkHnh1IOgrfjQFgOWd8neyP07vAs5ZApzreCxbBCxqLn50hOUaUJpa/GiUxSmJaqnqGpTzzjsPO3bsKPytadaCJffffz8eeOABbN26FWeeeSbuu+8+XHHFFdi/fz/CYVkH29/fj5/+9KfYtm0b2tvbcccdd+Dqq6/G7t27i96LaL7y6MDpnfIiSI1HUdw7Mvs8pU1NQgCLXUYpjadKh20DwGiZ7ZxojxaiqgMUXdeLak1MQghs2bIF99xzD6699loAwOOPP46uri489dRTuOmmmxCLxfDoo4/iiSeewOWXXw4AePLJJ9Hb24sdO3bgyiuvdP3MVCqFVMo6a+Nxl/nDiRpAwCsnYAv6eBe9ECiK+6KTkaD7atmGcJ9XpuxIJ0cwI+A+jw1RI6o6QHnnnXfQ09MDn8+HNWvWYNOmTTj99NNx4MABDAwMYP369YV9fT4f1q1bh127duGmm27C7t27kclkivbp6enBypUrsWvXrrIByubNm3HvvfdO4esR1Y/2JmBJh2zSYXBCblQFLr2D3TsBu20zhAxcSvrNlOlPk3aZZZioXlQVoKxZswb/9E//hDPPPBPHjx/Hfffdh7Vr12Lfvn0YGBgAAHR1dRW9pqurCwcPHgQADAwMwOv1orW1tWQf8/Vu7r77btx+++2Fv+PxOHp7e6tJOlFNtYeBJe2y/wHRTHALcjXFvWZGCKC1qXR72m2kkyg/0om1MzSXqgpQrrrqqsL/r1q1CpdccgnOOOMMPP7447j44osBAIrjrBFClGxzmmgfn88Hn48N9tR4FABtTQxOqLbKFa8+j3t/GrcgJ+My0gmQyyCUNDUJIJ4oDXI40omqMa1hxqFQCKtWrcI777yDz372swBkLcnixYsL+wwODhZqVbq7u5FOpxGNRotqUQYHB7F27drpJIWo7uiqHNkRDrhPUkbUSDy6+8zBAZd7RyFk05EzIBlPySUPnPsOj5UGM4CchI8WrmkFKKlUCr/73e/wB3/wB+jr60N3dze2b9+OCy64AACQTqexc+dOfPe73wUArF69Gh6PB9u3b8eGDRsAAMeOHcPevXtx//33T/OrENUPXZVDVMMB9jehhUdR5NBtJ5+ntKlJCDnc3snIBy7OIGfMZa0nMyCi+aWqAOXOO+/EZz7zGSxduhSDg4O47777EI/HccMNN0BRFPT392PTpk1YsWIFVqxYgU2bNiEYDOK6664DAEQiEdx4442444470N7ejra2Ntx5551YtWpVYVQPUaNjcEI0eYoi54px0xkp3SZcRjoZ+SalkmAmWVpjA+Sbq1g7U/eqClCOHDmCz3/+8zh58iQWLVqEiy++GC+++CKWLVsGALjrrruQSCRw8803IxqNYs2aNXjmmWcKc6AAwIMPPghd17FhwwYkEglcdtll2Lp1K+dAoXkhEpR3gwEvgxOi2aC4jIJTIft6ObltA4Cky9IGlUY6cRmE2lCEaLxuS/F4HJFIBF/p3wKvL1Dr5BABkMHJ8k52hiVqROWuhJlcaYAihAxmDKN0+4jLMG+ypFMJPLalH7FYDM3NLiuF2nAtHqIZ0BIEli5icELUqMrVeHp19/40YZd7YyHkUGxnfDLmMtLJKDMBnxClr1+oGKAQTYOmyjVXOiPl29GJaGFQFMDvLd0ecNlWrmPvuEsnYED2pUmknW8yv/vSMEAhmiJVkdPWt4TY34SIqlNupJNXd19x2zDc55UZdqmFGUsB40nHvmi8vjQMUIimQFXkHCcMTohoLqiq7AzstMilG4dbM5EQwIjL5HmG4T5zcCbnPjHfXGKAQlQlv0eO1GFwQkT1SFFclnRS3GtmhHBf1ymVBdKOpQ0KyyAYLvvOQu0MAxSiKoT9wPIuOdcJgxMianTlyjG/Rz6c3JZByOaAtEtty1hSPuxSVfTVY4BCNElhvxxG7GFnWCJaoNwCmnLLIIR8AByT7SUSk/8sBihEE1AUGZwsW+R+EhIR0cxjcUtUgaIAve1yRkou+EdENHcYoBCVYQYn7WH2NyEimmsMUIhcqAqwhMEJEVHNMEAhcgj6gN4OIMgF/4iIaoYBCpFN0Af0dQI+l+F1REQ0d9jtjyiPwQkRUf1gDQoteArkYn+LIu5rYxAR0dxjcUwLmgJgcRvQFWF/EyKiesImHlqwFMg1dRicEBHVH9ag0ILk8wCdzUBHM4MTIqJ6xACFFhy/B+jrAgLeWqeEiIjKYYBCC4rfA5zexZE6RET1jgEKLRghP7C0QwYnbNYhIqpvDFBoQeiKyNE6ChicEBE1AgYoNO+ZwYnKwISIqGEwQKF5S1HkSB0GJ0REjYcBCs1LXh1Y3imnr2dwQkTUeBig0Lzj1eWaOkEf+5sQETUqziRL8wqDEyKi+YE1KDRvtIdlh1gOIyYianwMUGheaA8Dve2AyjpBIqJ5gcU5NTwGJ0RE8w9rUKhh6Zps0lnUzOCEiGi+YYBCDUnXgOWLgHCA/U2IiOYjBijUcHRVznES9jM4ISKarxigUEMJ+oCeNgYnRETzHQMUahgtIWDZIkBjfxMionmv6qL+6NGj+OIXv4j29nYEg0F85CMfwe7duwvPCyGwceNG9PT0IBAI4NJLL8W+ffuK3iOVSuHWW29FR0cHQqEQrrnmGhw5cmT634bmrZYQsLSDwQkR0UJRVXEfjUbx8Y9/HB6PB7/4xS/w5ptv4m//9m/R0tJS2Of+++/HAw88gO9973t45ZVX0N3djSuuuAIjIyOFffr7+/H0009j27ZteP755zE6Ooqrr74auVxuxr4YzQ+qArTmgxNdq3VqiIhorlTVxPPd734Xvb29eOyxxwrbli9fXvh/IQS2bNmCe+65B9deey0A4PHHH0dXVxeeeuop3HTTTYjFYnj00UfxxBNP4PLLLwcAPPnkk+jt7cWOHTtw5ZVXlnxuKpVCKpUq/B2Px6v6ktSYVBVY1gFEQlzwj4hooamqBuUnP/kJLrroInzuc59DZ2cnLrjgAvzgBz8oPH/gwAEMDAxg/fr1hW0+nw/r1q3Drl27AAC7d+9GJpMp2qenpwcrV64s7OO0efNmRCKRwqO3t7eqL0mNR1Vkf5MWBidERAtSVQHKe++9h4cffhgrVqzAf/7nf+JrX/sa/vIv/xL/9E//BAAYGBgAAHR1dRW9rqurq/DcwMAAvF4vWltby+7jdPfddyMWixUehw8fribZ1GA0FVjWCbQEOVKHiGihqqqJxzAMXHTRRdi0aRMA4IILLsC+ffvw8MMP40tf+lJhP8VxVRFClGxzqrSPz+eDz+erJqnUoMIBOW09F/wjIlrYqqpBWbx4Mc4999yibeeccw4OHToEAOju7gaAkpqQwcHBQq1Kd3c30uk0otFo2X1oYQoH5Oywfi+DEyKiha6qAOXjH/849u/fX7Tt7bffxrJlywAAfX196O7uxvbt2wvPp9Np7Ny5E2vXrgUArF69Gh6Pp2ifY8eOYe/evYV9aOEJB+TssB7OzENERKiyieev/uqvsHbtWmzatAkbNmzAyy+/jEceeQSPPPIIANm009/fj02bNmHFihVYsWIFNm3ahGAwiOuuuw4AEIlEcOONN+KOO+5Ae3s72tracOedd2LVqlWFUT20cKgK0N0qVyT2cBgxERHlVRWgfPSjH8XTTz+Nu+++G9/61rfQ19eHLVu24Atf+EJhn7vuuguJRAI333wzotEo1qxZg2eeeQbhcLiwz4MPPghd17FhwwYkEglcdtll2Lp1KzSNV6iFRFWAJe0yOGGTDhER2SlCCFHrRFQrHo8jEongK/1b4PUFap0cmgIGJ0REC08ikUB/fz9isRiam5sr7ssWf5pzAS/Q1SJniGVwQkREbhig0JwK+oC+TjmMmIiIqBwGKDRngj7g9C7Ay6OOiIgmwEsFzToFchjx0kUcqUNERJPDAIVmlQKgpw3ojOT/Zp8TIiKaBAYoNGvswQkDEyIiqgYDFJoVmgp0tzA4ISKiqWGAQjPO7wH6uuS/DE6IiGgqGKDQjPJ75EgdrkZMRETTUdVigUSVMDghIqKZwhoUmhHNQWBJG4MTIiKaGQxQaNq6WoDFrXJ9HSIiopnAJh6aFgYnREQ0G1iDQlOiqcCiZqCbwQkREc0CBihUNa8uhxEHvexvQkREs4NNPFQVBidERDQXWINCk2YGJyFfrVNCRETzHQMUmpSOsOxv4uURQ0REc4CXG5pQR7Oc40RlgyAREc0RXnKooo4wgxMiIpp7rEEhV7oGnNYGtIYYnBAR0dxjgEIldBXo6wSa/BypQ0REtcEAhYromgxOwoFap4SIiBYyBihU0ByQU9c3+WudEiIiWugYoBAA2ddk6SI5hT0REVGt8XJEDE6IiKjusAZlAVNVGZwsaWdwQkRE9YUBygKlqcCyRUAkyJE6RERUf3jfvAAxOCEionrHGpQFxqMBvR0MToiIqL4xQFlAmgOyM6xHY3BCRET1jQHKAtEcAJZ3yonYiIiI6h37oCwADE6IiKjRsAZlHlMV4LR2OZSYwQkRETWSqmpQli9fDkVRSh633HILAEAIgY0bN6KnpweBQACXXnop9u3bV/QeqVQKt956Kzo6OhAKhXDNNdfgyJEjM/eNCIAMTno7gI4wgxMiImo8VQUor7zyCo4dO1Z4bN++HQDwuc99DgBw//3344EHHsD3vvc9vPLKK+ju7sYVV1yBkZGRwnv09/fj6aefxrZt2/D8889jdHQUV199NXK53Ax+rYVNVYAlHUBbEzvDEhFRY6oqQFm0aBG6u7sLj5/97Gc444wzsG7dOgghsGXLFtxzzz249tprsXLlSjz++OMYHx/HU089BQCIxWJ49NFH8bd/+7e4/PLLccEFF+DJJ5/EG2+8gR07dszKF1xoQj6grwtoZ3BCREQNbMqdZNPpNJ588kl89atfhaIoOHDgAAYGBrB+/frCPj6fD+vWrcOuXbsAALt370Ymkynap6enBytXrizs4yaVSiEejxc9qJQZnHCOEyIianRTDlB+/OMfY3h4GF/+8pcBAAMDAwCArq6uov26uroKzw0MDMDr9aK1tbXsPm42b96MSCRSePT29k412fOWGZx42N+EiIjmgSkHKI8++iiuuuoq9PT0FG1XHLfuQoiSbU4T7XP33XcjFosVHocPH55qsucdBUBrkwxOvDprToiIaH6YUoBy8OBB7NixA3/xF39R2Nbd3Q0AJTUhg4ODhVqV7u5upNNpRKPRsvu48fl8aG5uLnqQDE562oDli2RwQkRENF9MKUB57LHH0NnZiU9/+tOFbX19feju7i6M7AFkP5WdO3di7dq1AIDVq1fD4/EU7XPs2DHs3bu3sA9NjhmcdEZYa0JERPNP1ffdhmHgscceww033ABdt16uKAr6+/uxadMmrFixAitWrMCmTZsQDAZx3XXXAQAikQhuvPFG3HHHHWhvb0dbWxvuvPNOrFq1CpdffvnMfat5zqMBXS3AomYGJ0REND9VHaDs2LEDhw4dwle/+tWS5+666y4kEgncfPPNiEajWLNmDZ555hmEw+HCPg8++CB0XceGDRuQSCRw2WWXYevWrdA09u6cjIBX9jfxsb8JERHNY4oQQtQ6EdWKx+OIRCL4Sv8WeH2BWidnzvi9wOkMToiIqEElEgn09/cjFotN2J+UXSsbRMAL9HUCfk+tU0JERDT7GjJAMSt90qlkjVMyNzqbgUURQOSARKLWqSEiIpqaZFJetyfTeNOQTTxHjhzhZG1EREQN6vDhw1iyZEnFfRoyQDEMA/v378e5556Lw4cPc16UWRaPx9Hb28u8niPM77nF/J5bzO+5VW/5LYTAyMgIenp6oKqVZzppyCYeVVVx2mmnAQAnbptDzOu5xfyeW8zvucX8nlv1lN+RSGRS+015qnsiIiKi2cIAhYiIiOpOwwYoPp8Pf/M3fwOfz1frpMx7zOu5xfyeW8zvucX8nluNnN8N2UmWiIiI5reGrUEhIiKi+YsBChEREdUdBihERERUdxigEBERUd1hgEJERER1pyEDlO9///vo6+uD3+/H6tWr8dxzz9U6SQ1n8+bN+OhHP4pwOIzOzk589rOfxf79+4v2EUJg48aN6OnpQSAQwKWXXop9+/YV7ZNKpXDrrbeio6MDoVAI11xzDY4cOTKXX6Uhbd68GYqioL+/v7CN+T2zjh49ii9+8Ytob29HMBjERz7yEezevbvwPPN75mSzWfyf//N/0NfXh0AggNNPPx3f+ta3YBhGYR/m99Q9++yz+MxnPoOenh4oioIf//jHRc/PVN5Go1Fcf/31iEQiiEQiuP766zE8PDzL364C0WC2bdsmPB6P+MEPfiDefPNNcdttt4lQKCQOHjxY66Q1lCuvvFI89thjYu/eveK1114Tn/70p8XSpUvF6OhoYZ/vfOc7IhwOix/+8IfijTfeEH/2Z38mFi9eLOLxeGGfr33ta+K0004T27dvF3v27BF/9Ed/JD784Q+LbDZbi6/VEF5++WWxfPlycf7554vbbrutsJ35PXOGhobEsmXLxJe//GXx0ksviQMHDogdO3aId999t7AP83vm3HfffaK9vV387Gc/EwcOHBD/9m//JpqamsSWLVsK+zC/p+7nP/+5uOeee8QPf/hDAUA8/fTTRc/PVN5+6lOfEitXrhS7du0Su3btEitXrhRXX331XH3NEg0XoHzsYx8TX/va14q2nX322eKb3/xmjVI0PwwODgoAYufOnUIIIQzDEN3d3eI73/lOYZ9kMikikYj4x3/8RyGEEMPDw8Lj8Yht27YV9jl69KhQVVX88pe/nNsv0CBGRkbEihUrxPbt28W6desKAQrze2Z94xvfEJ/4xCfKPs/8nlmf/vSnxVe/+tWibddee6344he/KIRgfs8kZ4AyU3n75ptvCgDixRdfLOzzwgsvCADirbfemuVv5a6hmnjS6TR2796N9evXF21fv349du3aVaNUzQ+xWAwA0NbWBgA4cOAABgYGivLa5/Nh3bp1hbzevXs3MplM0T49PT1YuXIlf48ybrnlFnz605/G5ZdfXrSd+T2zfvKTn+Ciiy7C5z73OXR2duKCCy7AD37wg8LzzO+Z9YlPfAL/9V//hbfffhsA8Nvf/hbPP/88/viP/xgA83s2zVTevvDCC4hEIlizZk1hn4svvhiRSKRm+d9QqxmfPHkSuVwOXV1dRdu7urowMDBQo1Q1PiEEbr/9dnziE5/AypUrAaCQn255ffDgwcI+Xq8Xra2tJfvw9yi1bds27NmzB6+88krJc8zvmfXee+/h4Ycfxu23346//uu/xssvv4y//Mu/hM/nw5e+9CXm9wz7xje+gVgshrPPPhuapiGXy+Hb3/42Pv/5zwPg8T2bZipvBwYG0NnZWfL+nZ2dNcv/hgpQTIqiFP0thCjZRpP39a9/Ha+//jqef/75kuemktf8PUodPnwYt912G5555hn4/f6y+zG/Z4ZhGLjooouwadMmAMAFF1yAffv24eGHH8aXvvSlwn7M75nxr//6r3jyySfx1FNP4bzzzsNrr72G/v5+9PT04IYbbijsx/yePTORt2771zL/G6qJp6OjA5qmlURzg4ODJdEjTc6tt96Kn/zkJ/j1r3+NJUuWFLZ3d3cDQMW87u7uRjqdRjQaLbsPSbt378bg4CBWr14NXdeh6zp27tyJv//7v4eu64X8Yn7PjMWLF+Pcc88t2nbOOefg0KFDAHh8z7T//b//N775zW/iz//8z7Fq1Spcf/31+Ku/+its3rwZAPN7Ns1U3nZ3d+P48eMl73/ixIma5X9DBSherxerV6/G9u3bi7Zv374da9eurVGqGpMQAl//+tfxox/9CL/61a/Q19dX9HxfXx+6u7uL8jqdTmPnzp2FvF69ejU8Hk/RPseOHcPevXv5ezhcdtlleOONN/Daa68VHhdddBG+8IUv4LXXXsPpp5/O/J5BH//4x0uGzb/99ttYtmwZAB7fM218fByqWnw50TStMMyY+T17ZipvL7nkEsRiMbz88suFfV566SXEYrHa5X8teuZOhznM+NFHHxVvvvmm6O/vF6FQSLz//vu1TlpD+V//63+JSCQifvOb34hjx44VHuPj44V9vvOd74hIJCJ+9KMfiTfeeEN8/vOfdx26tmTJErFjxw6xZ88e8clPfpLDAifJPopHCOb3THr55ZeFruvi29/+tnjnnXfEP//zP4tgMCiefPLJwj7M75lzww03iNNOO60wzPhHP/qR6OjoEHfddVdhH+b31I2MjIhXX31VvPrqqwKAeOCBB8Srr75amF5jpvL2U5/6lDj//PPFCy+8IF544QWxatUqDjOu1j/8wz+IZcuWCa/XKy688MLC0FiaPACuj8cee6ywj2EY4m/+5m9Ed3e38Pl84g//8A/FG2+8UfQ+iURCfP3rXxdtbW0iEAiIq6++Whw6dGiOv01jcgYozO+Z9dOf/lSsXLlS+Hw+cfbZZ4tHHnmk6Hnm98yJx+PitttuE0uXLhV+v1+cfvrp4p577hGpVKqwD/N76n7961+7ltc33HCDEGLm8vbUqVPiC1/4ggiHwyIcDosvfOELIhqNztG3LKUIIURt6m6IiIiI3DVUHxQiIiJaGBigEBERUd1hgEJERER1hwEKERER1R0GKERERFR3GKAQERFR3WGAQkRERHWHAQoRERHVHQYoREREVHcYoBAREVHdYYBCREREdef/B90o8E0fYJegAAAAAElFTkSuQmCC", "text/plain": [ - "
" + "
" ] }, - "metadata": { - "needs_background": "light" - }, + "metadata": {}, "output_type": "display_data" } ], @@ -80,15 +79,12 @@ "metadata": {}, "outputs": [], "source": [ - "# sample a non-trival problem setting and solve\n", - "while True:\n", - " start, goal = env.robot.sample_random_init_goal()\n", - " if not env.edge_fp(start, goal):\n", - " result = GNNStaticPlanner(num_batch=100, model_args=dict(config_size=env.robot.config_dim, \n", - " embed_size=64, \n", - " obs_size=6)).plan(env, start, goal, timeout=('time', 100))\n", - " if result.solution:\n", - " break" + "import numpy as np\n", + "start = np.array(start)\n", + "goal = np.array(goal)\n", + "result = GNNStaticPlanner(num_batch=100, model_args=dict(config_size=env.robot.config_dim, \n", + " embed_size=64, \n", + " obs_size=6)).plan(env, start, goal, timeout=('time', 100))" ] }, { @@ -112,7 +108,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -139,13 +135,13 @@ "Direct GLX rendering context obtained\n", "Making context current\n", "GL_VENDOR=NVIDIA Corporation\n", - "GL_RENDERER=NVIDIA GeForce RTX 3080/PCIe/SSE2\n", - "GL_VERSION=3.3.0 NVIDIA 470.161.03\n", + "GL_RENDERER=NVIDIA GeForce RTX 4090/PCIe/SSE2\n", + "GL_VERSION=3.3.0 NVIDIA 535.154.05\n", "GL_SHADING_LANGUAGE_VERSION=3.30 NVIDIA via Cg compiler\n", "pthread_getconcurrency()=0\n", - "Version = 3.3.0 NVIDIA 470.161.03\n", + "Version = 3.3.0 NVIDIA 535.154.05\n", "Vendor = NVIDIA Corporation\n", - "Renderer = NVIDIA GeForce RTX 3080/PCIe/SSE2\n", + "Renderer = NVIDIA GeForce RTX 4090/PCIe/SSE2\n", "b3Printf: Selected demo: Physics Server\n", "startThreads creating 1 threads.\n", "starting thread 0\n", @@ -158,7 +154,7 @@ { "data": { "text/html": [ - "" + "" ], "text/plain": [ "" @@ -190,7 +186,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -199,10 +195,10 @@ "text": [ "numActiveThreads = 0\n", "stopping threads\n", - "destroy semaphore\n", "Thread with taskId 0 exiting\n", - "Thread TERMINATED\n", + "destroy semaphore\n", "semaphore destroyed\n", + "Thread TERMINATED\n", "destroy main semaphore\n", "main semaphore destroyed\n", "finished\n", @@ -238,7 +234,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.12" + "version": "3.8.18" }, "vscode": { "interpreter": { diff --git a/planner/learned/GNN_static_planner.py b/planner/learned/GNN_static_planner.py index 74a3e28..bbad791 100644 --- a/planner/learned/GNN_static_planner.py +++ b/planner/learned/GNN_static_planner.py @@ -113,7 +113,7 @@ def _explore(self, env, start, goal, model_gnn, timeout, k, n_sample, loop=10): if not success: # ----------------------------------------resample---------------------------------------- - new_points = env.sample_n_points(n_sample, need_negative=True) + new_points = env.robot.sample_n_free_points(n_sample) points = points + list(new_points) return list(data.v[path].data.cpu().numpy())