From 037830e6632580fb7d30ad6f040943e5f56f0f36 Mon Sep 17 00:00:00 2001 From: Tizian Zeltner Date: Thu, 28 Jul 2022 13:51:29 +0200 Subject: [PATCH] Estimator comparison (Veach scene) --- .gitignore | 1 + results/Estimator comparison (Veach).ipynb | 274 ++++++++++++++++++ results/scenes/meshes/veach_floor.obj | 16 + results/scenes/meshes/veach_plates_bottom.obj | 90 ++++++ results/scenes/meshes/veach_plates_top.obj | 64 ++++ results/scenes/textures/veach_roughness.png | Bin 0 -> 45300 bytes results/scenes/veach.xml | 109 +++++++ 7 files changed, 554 insertions(+) create mode 100644 results/Estimator comparison (Veach).ipynb create mode 100644 results/scenes/meshes/veach_floor.obj create mode 100644 results/scenes/meshes/veach_plates_bottom.obj create mode 100644 results/scenes/meshes/veach_plates_top.obj create mode 100644 results/scenes/textures/veach_roughness.png create mode 100644 results/scenes/veach.xml diff --git a/.gitignore b/.gitignore index 09970e0e..acdb42f8 100644 --- a/.gitignore +++ b/.gitignore @@ -34,3 +34,4 @@ results/.ipynb_checkpoints results/estimator_comparison_simple results/estimator_comparison_optimization results/estimator_comparison_attached_reparam +results/estimator_comparison_veach diff --git a/results/Estimator comparison (Veach).ipynb b/results/Estimator comparison (Veach).ipynb new file mode 100644 index 00000000..b9c2b006 --- /dev/null +++ b/results/Estimator comparison (Veach).ipynb @@ -0,0 +1,274 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": null, + "id": "43337124", + "metadata": { + "ExecuteTime": { + "end_time": "2022-07-28T11:40:41.771668Z", + "start_time": "2022-07-28T11:40:41.739437Z" + } + }, + "outputs": [], + "source": [ + "import mitsuba as mi\n", + "mi.set_variant(\"llvm_ad_rgb\")\n", + "import drjit as dr\n", + "\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import cmap_diff\n", + "%config InlineBackend.figure_formats = ['svg']\n", + "%matplotlib inline\n", + "\n", + "import time\n", + "import os\n", + "base_dir = 'estimator_comparison_veach'\n", + "if not os.path.exists(base_dir):\n", + " os.makedirs(base_dir)\n", + " \n", + "mi.Thread.thread().logger().set_log_level(mi.LogLevel.Warn)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "dd6b3dbf", + "metadata": { + "ExecuteTime": { + "end_time": "2022-07-28T11:40:42.753437Z", + "start_time": "2022-07-28T11:40:42.551628Z" + } + }, + "outputs": [], + "source": [ + "scene = mi.load_file('scenes/veach.xml')\n", + "params = mi.traverse(scene)\n", + "param_key = 'plates_top.bsdf.alpha.data'\n", + "params.keep([param_key])\n", + "\n", + "roughness_tex = mi.TensorXf(params[param_key])\n", + "\n", + "diff_methods = [\n", + " 'es_detached',\n", + " \n", + " 'bs_detached',\n", + " 'bs_attached',\n", + " \n", + " 'mis_detached_detached',\n", + " 'mis_attached_attached',\n", + " 'mis_detached_attached',\n", + " 'mis_attached_detached',\n", + " \n", + " 'bs_detached_diff',\n", + " 'mis_detached_detached_diff',\n", + " \n", + " 'bs_attached_reparam',\n", + " 'mis_attached_attached_reparam',\n", + "]\n", + "diff_method_names = [\n", + " 'Detached emitter sampling',\n", + " \n", + " 'Detached BSDF sampling',\n", + " 'Attached BSDF sampling (BIASED!)',\n", + " \n", + " 'Detached MIS weights, detached BSDF sampling,\\ndetached emitter sampling',\n", + " 'Attached MIS weights, attached BSDF sampling,\\ndetached emitter sampling (BIASED!)',\n", + " 'Detached MIS weights, attached BSDF sampling,\\ndetached emitter sampling (BIASED!)',\n", + " 'Attached MIS weights, detached BSDF sampling,\\ndetached emitter sampling',\n", + " \n", + " 'Detached diff. BSDF sampling',\n", + " 'Detached MIS weights, detached diff. BSDF sampling,\\ndetached emitter sampling',\n", + " \n", + " 'Attached reparam. BSDF sampling',\n", + " 'Attached MIS weights, attached reparam. BSDF sampling,\\ndetached emitter sampling'\n", + "]\n", + "diff_method_spps = [\n", + " 128,\n", + " \n", + " 128,\n", + " 128,\n", + " \n", + " 128,\n", + " 128,\n", + " 128,\n", + " 128,\n", + " \n", + " 128,\n", + " 128,\n", + " \n", + " 64,\n", + " 64,\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c137fe74", + "metadata": { + "ExecuteTime": { + "end_time": "2022-07-28T11:38:43.576475Z", + "start_time": "2022-07-28T11:38:03.315102Z" + } + }, + "outputs": [], + "source": [ + "# Render a converged primal image and a finite differences gradient image for comparison\n", + "# (This might take a while ...)\n", + "eps = 1e-3\n", + "fd_spp = 2048\n", + "\n", + "integrator = mi.load_dict({'type': 'path', 'max_depth': 2})\n", + "image = mi.render(scene, params, integrator=integrator, seed=0, spp=fd_spp)\n", + "outname = \"{}/primal.exr\".format(base_dir)\n", + "mi.util.convert_to_bitmap(image, uint8_srgb=False).write(outname)\n", + "\n", + "roughness_tex_fd = roughness_tex + eps\n", + "params[param_key] = roughness_tex_fd\n", + "params.update()\n", + "\n", + "image_fd = mi.render(scene, params, integrator=integrator, seed=0, spp=fd_spp)\n", + "outname = \"{}/grad_fd.exr\".format(base_dir)\n", + "mi.util.convert_to_bitmap((image_fd - image) / eps, uint8_srgb=False).write(outname)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1a705a08", + "metadata": { + "ExecuteTime": { + "end_time": "2022-07-28T11:41:34.283391Z", + "start_time": "2022-07-28T11:40:44.418618Z" + } + }, + "outputs": [], + "source": [ + "for method, method_name, spp in zip(diff_methods, diff_method_names, diff_method_spps):\n", + " print(\"* {}\".format(method_name))\n", + " print(\" spp = {}\".format(spp))\n", + " integrator = mi.load_dict({'type': 'estimator_comparison',\n", + " 'method': method,\n", + " 'reparam_kappa': 1e5,\n", + " 'reparam_rays': 32})\n", + " \n", + " # Diff. input parameter\n", + " pi = mi.Float(0.0)\n", + " dr.enable_grad(pi)\n", + " dr.set_grad(pi, 1.0)\n", + " params[param_key] = roughness_tex + pi\n", + " params.update()\n", + " \n", + " start = time.time()\n", + " \n", + " image_grad = mi.Float(0.0)\n", + " if 'diff' in method:\n", + " # Differential sampling strategy, use antithetic sampling.\n", + " # Note that we use the same seed twice, and use half the number of samples for each pass.\n", + " image = mi.render(scene, params,\n", + " integrator=integrator, seed=0, spp=spp//2, antithetic_pass=False)\n", + " dr.forward(pi)\n", + " image_grad = dr.grad(image)\n", + " \n", + " params[param_key] = roughness_tex + pi\n", + " params.update()\n", + "\n", + " image = mi.render(scene, params,\n", + " integrator=integrator, seed=0, spp=spp//2, antithetic_pass=True)\n", + " dr.forward(pi)\n", + " image_grad += dr.grad(image)\n", + "\n", + " # Average both passes\n", + " image_grad *= 0.5\n", + " else:\n", + " # Produce differentiable rendering\n", + " image = mi.render(scene, params, integrator=integrator, seed=0, spp=spp)\n", + " # And propagate derivatives forwards through it\n", + " dr.forward(pi)\n", + " image_grad = dr.grad(image)\n", + " \n", + " # Save output gradient image\n", + " outname = \"{}/grad_{}.exr\".format(base_dir, method)\n", + " mi.util.convert_to_bitmap(image_grad, uint8_srgb=False).write(outname)\n", + " \n", + " end = time.time() \n", + " print(\" took {:.2f} seconds\".format(end - start))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7315e600", + "metadata": { + "ExecuteTime": { + "end_time": "2022-07-28T11:44:47.308320Z", + "start_time": "2022-07-28T11:44:47.080781Z" + }, + "scrolled": false + }, + "outputs": [], + "source": [ + "# Display images and save PNGs\n", + "image_primal = np.array(mi.Bitmap(\"{}/primal.exr\".format(base_dir)))\n", + "image_primal = np.clip(image_primal**(1/2.2), 0.0, 1.0) # Crude gamma correction\n", + "plt.imsave('{}/primal.jpg'.format(base_dir), image_primal)\n", + "\n", + "plt.figure()\n", + "plt.imshow(image_primal)\n", + "plt.axis('off')\n", + "plt.title(\"Primal\")\n", + "plt.show()\n", + "\n", + "image_fd = np.array(mi.Bitmap(\"{}/grad_fd.exr\".format(base_dir)))[:, :, 0]\n", + "plt.imsave('{}/grad_fd.jpg'.format(base_dir), image_fd, vmin=-20, vmax=+20, cmap='diff')\n", + "\n", + "plt.figure()\n", + "plt.imshow(image_fd, cmap='diff', vmin=-20, vmax=+20)\n", + "plt.axis('off')\n", + "plt.title(\"Finite differences\")\n", + "plt.show()\n", + "\n", + "for method, method_name in zip(diff_methods, diff_method_names):\n", + " image_grad = np.array(mi.Bitmap(\"{}/grad_{}.exr\".format(base_dir, method)))[:, :, 0]\n", + " plt.imsave('{}/grad_{}.jpg'.format(base_dir, method), image_grad, vmin=-20, vmax=+20, cmap='diff')\n", + " \n", + " plt.figure()\n", + " plt.imshow(image_grad, cmap='diff', vmin=-20, vmax=+20)\n", + " plt.axis('off')\n", + " plt.title(method_name, size=7)\n", + " plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a93cc8d2", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "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.9.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/results/scenes/meshes/veach_floor.obj b/results/scenes/meshes/veach_floor.obj new file mode 100644 index 00000000..3f05db06 --- /dev/null +++ b/results/scenes/meshes/veach_floor.obj @@ -0,0 +1,16 @@ +v -10 -4.14615 -10 +v -10 -4.14615 10 +v 10 -4.14615 10 +v 10 -4.14615 10 +v 10 -4.14615 -10 +v -10 -4.14615 -10 +v -10 -10 -2 +v 10 -10 -2 +v 10 10 -2 +v 10 10 -2 +v -10 10 -2 +v -10 -10 -2 +f 1 2 3 +f 4 5 6 +f 7 8 9 +f 10 11 12 diff --git a/results/scenes/meshes/veach_plates_bottom.obj b/results/scenes/meshes/veach_plates_bottom.obj new file mode 100644 index 00000000..652f1767 --- /dev/null +++ b/results/scenes/meshes/veach_plates_bottom.obj @@ -0,0 +1,90 @@ +# Blender v2.82 (sub 7) OBJ File: 'mis_grad.blend' +# www.blender.org +o plates_bottom_plate4 +v 3.125000 -3.996151 4.066700 +v 3.125000 -3.820690 3.082209 +v -3.125000 -3.820690 3.082209 +v -3.125000 -3.996151 4.066700 +v 3.125000 -3.968363 3.055890 +v -3.125000 -3.968363 3.055890 +v 3.125000 -4.143824 4.040380 +v -3.125000 -4.143824 4.040380 +v 3.125000 -2.706510 0.256090 +v 3.125000 -2.083750 -0.526323 +v -3.125000 -2.083750 -0.526323 +v -3.125000 -2.706510 0.256090 +v 3.125000 -2.201112 -0.619737 +v -3.125000 -2.201112 -0.619737 +v 3.125000 -2.823872 0.162676 +v -3.125000 -2.823872 0.162676 +v 3.125000 -3.288250 1.369720 +v 3.125000 -2.838560 0.476536 +v -3.125000 -2.838560 0.476536 +v -3.125000 -3.288250 1.369720 +v 3.125000 -2.972538 0.409082 +v -3.125000 -2.972538 0.409082 +v 3.125000 -3.422228 1.302266 +v -3.125000 -3.422228 1.302266 +v 3.125000 -3.730960 2.700459 +v 3.125000 -3.433780 1.745639 +v -3.125000 -3.433780 1.745639 +v -3.125000 -3.730960 2.700459 +v 3.125000 -3.577003 1.701062 +v -3.125000 -3.577003 1.701062 +v 3.125000 -3.874184 2.655882 +v -3.125000 -3.874184 2.655882 +vn 0.0000 -0.9845 -0.1755 +vn 0.0000 -0.1755 0.9845 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.1755 -0.9845 +vn 0.0000 -0.7824 -0.6228 +vn 0.0000 -0.6228 0.7824 +vn 0.0000 0.6228 -0.7824 +vn 0.0000 -0.8932 -0.4497 +vn 0.0000 -0.4497 0.8932 +vn 0.0000 0.4497 -0.8932 +vn 0.0000 -0.9548 -0.2972 +vn 0.0000 -0.2972 0.9548 +vn 0.0000 0.2972 -0.9548 +s off +f 7//1 6//1 5//1 +f 6//1 7//1 8//1 +f 8//2 1//2 4//2 +f 7//3 2//3 1//3 +f 3//4 8//4 4//4 +f 5//5 3//5 2//5 +f 8//2 7//2 1//2 +f 7//3 5//3 2//3 +f 3//4 6//4 8//4 +f 5//5 6//5 3//5 +f 15//6 14//6 13//6 +f 14//6 15//6 16//6 +f 16//7 9//7 12//7 +f 9//3 13//3 10//3 +f 14//4 12//4 11//4 +f 13//8 11//8 10//8 +f 16//7 15//7 9//7 +f 9//3 15//3 13//3 +f 14//4 16//4 12//4 +f 13//8 14//8 11//8 +f 23//9 22//9 21//9 +f 22//9 23//9 24//9 +f 24//10 17//10 20//10 +f 23//3 18//3 17//3 +f 22//4 20//4 19//4 +f 21//11 19//11 18//11 +f 24//10 23//10 17//10 +f 23//3 21//3 18//3 +f 22//4 24//4 20//4 +f 21//11 22//11 19//11 +f 31//12 30//12 29//12 +f 30//12 31//12 32//12 +f 32//13 25//13 28//13 +f 31//3 26//3 25//3 +f 30//4 28//4 27//4 +f 29//14 27//14 26//14 +f 32//13 31//13 25//13 +f 31//3 29//3 26//3 +f 30//4 32//4 28//4 +f 29//14 30//14 27//14 diff --git a/results/scenes/meshes/veach_plates_top.obj b/results/scenes/meshes/veach_plates_top.obj new file mode 100644 index 00000000..cfe82f04 --- /dev/null +++ b/results/scenes/meshes/veach_plates_top.obj @@ -0,0 +1,64 @@ +# Blender v2.82 (sub 7) OBJ File: 'mis_grad.blend' +# www.blender.org +o plates_top_plate4.001 +v 3.125000 -3.996151 4.066700 +v 3.125000 -3.820690 3.082209 +v -3.125000 -3.820690 3.082209 +v -3.125000 -3.820690 3.082209 +v -3.125000 -3.996151 4.066700 +v 3.125000 -3.996151 4.066700 +v 3.125000 -2.706510 0.256090 +v 3.125000 -2.083750 -0.526323 +v -3.125000 -2.083750 -0.526323 +v -3.125000 -2.083750 -0.526323 +v -3.125000 -2.706510 0.256090 +v 3.125000 -2.706510 0.256090 +v 3.125000 -3.288250 1.369720 +v 3.125000 -2.838560 0.476536 +v -3.125000 -2.838560 0.476536 +v -3.125000 -2.838560 0.476536 +v -3.125000 -3.288250 1.369720 +v 3.125000 -3.288250 1.369720 +v 3.125000 -3.730960 2.700459 +v 3.125000 -3.433780 1.745639 +v -3.125000 -3.433780 1.745639 +v -3.125000 -3.433780 1.745639 +v -3.125000 -3.730960 2.700459 +v 3.125000 -3.730960 2.700459 +vt 1.000000 0.000000 +vt 1.000000 0.160000 +vt 0.000000 0.160000 +vt 0.000000 0.160000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 0.840000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.840000 +vt 1.000000 0.840000 +vt 1.000000 0.560000 +vt 1.000000 0.720000 +vt 0.000000 0.719341 +vt 0.000000 0.719341 +vt 0.000000 0.560000 +vt 1.000000 0.560000 +vt 1.000000 0.280000 +vt 1.000000 0.440000 +vt 0.000000 0.440000 +vt 0.000000 0.440000 +vt 0.000000 0.280000 +vt 1.000000 0.280000 +vn 0.0000 0.9845 0.1755 +vn 0.0000 0.7824 0.6228 +vn 0.0000 0.8932 0.4497 +vn 0.0000 0.9548 0.2972 +s off +f 1/1/1 2/2/1 3/3/1 +f 4/4/1 5/5/1 6/6/1 +f 7/7/2 8/8/2 9/9/2 +f 10/10/2 11/11/2 12/12/2 +f 13/13/3 14/14/3 15/15/3 +f 16/16/3 17/17/3 18/18/3 +f 19/19/4 20/20/4 21/21/4 +f 22/22/4 23/23/4 24/24/4 diff --git a/results/scenes/textures/veach_roughness.png b/results/scenes/textures/veach_roughness.png new file mode 100644 index 0000000000000000000000000000000000000000..75b3faa1a6b70d9e3d6a7635afcf9c7529656c05 GIT binary patch literal 45300 zcmeFZXIN8d+b-;kqcb2b8!Bo7qJoH&&_hBQiGoOrf;0t;^d3qGNE-_*MT(-*BSsvm zbfp(16se;0stJVNL6D~VURa)azx}+&-p6x%KlYE;Lz1w#*Sh<4UgvpTckU3i)wXjU zUw0Q*i`Quk`rQ$Uq7rb$h&lKVEl zYH8xkogKwU7S2~K#XKF!p!B9q3d){jlDWO5`{ApW*0xTHN2ZI*j~uqOP&{HFqlM8T z6D)0P&t7x2)V-#yXMWAzT;Ae{veID%PaJrFqoq6Pu&1MglN-)c@yNz=ao{s@S^UW1 zjUw*$ibqZ%6&^O!A|56bXAWTj;!baSS-np>Xn0L?s#^oEQh zxLT6jon7^uogIEm6!Axs4@*jlNgNi^BAMGdA)Pq!k6SEHliV#8k4VVNVMH+!;J+S5 z0*Aqz+<5&~PRrTC*2?Q!IWWISAyG+5JqbyiBnBsg{Vzqqim@QMlm3r|EzEIN&aRFm z&|h0elC`Bc*~$9I;h&?3BRD%ayMl^A)1>}+U7bK6x;k6gI)Fd8T~JdwtbT?dDlX{8xxMxakT|IkmT?mKL^>D$kM@`wRHoN>h*o+=vumb|KwnMcw@ETNan~c zP&{IeOuwbYk?)sn|IG;e-}T_zW2rWl;GzHBqWD(E&DqMGN^-S4WetYv|6NfW3=+rpl!#QUB~|T(;W5L1?4T)cC?w&>1gQrv>@? z?ksbTi)B{Yrk#9<)hlSSgY6EwV0-E8vgciO)o9_tBqr1r=!DwZ&Qm5nkfm-snx0K( z9Q$h1=t6%=;uN1=G>8L6Xc6WsE*4zez^>N`fY-j(4t4OJb}SXwh*6g;)Fu> zYt9i{U2MD*|A6bH;#)E^dm|qVCcrOFFLyXybXs)c^$o%5Jyw+K=(LR@w%;bKUyRe= zb^z<}ceYubfvN61t9hy~+4dl*~nfARCtHQYpc z_9I62K^LA^q%?Ya4kP1WPh#5ngD%PXvM*_hO6VP;nHmw1?lhI`bcSv3oRb5b!b+HQ z@QRZSYho*=MqkB0?_b!3dy%jUUJo?ZJ@h=9-d;hGb?IDH2-Jl+$4_Zp_)?F~>n`(L zF0$~16WebJXGketc!F_N55&~N$-)_XV66<@O4Z^uZ&1+npkMa3zEQxBePE zyIj11*>T9^a?-3oc_g;AFne&6l93wXnYI zmc7uVeI-BS!b3<{--|_+odQq%yihM#f3w0n=6ARZxp|*7>)!GXXtNC{$miQ=;Y0K! z%#R?qi6WQ4z2K(X1euW9Gv=oqc~PvLA=pa#7VyFkncHwpW8^tU&Nkj;oIPj~Z}^HI zdIuUG^B%ldp#-TnRsI^1NZtjD$9?^Xd8`UNfcyJ66oN$&3#MCdiMMhiRVJ)(yL9Rwg?!~L zc&94(`#9nI&0@V_>u$??uKo&R7czFi*hT3zvAsRnd3-m}ok^qO?SyE##(^u5AfWQdr#HFN$q7$rz8D%5Ja0=J9Mjx#6^k=~Q8C4Tcf{#vSi z4aXl7YAf=#!MN;Wg(Y?&TraUGC2u_so3E1^ZT85+Vf#wvXoqG+rs#=B(y%d&*>;~1 z^jTlyyotE;b3!9=qPsGBM-4wDBR)Mg&xkt)7G(9cozQB)5nr#RPr8)RuGHS%^~NEc zJMCt>y!6WCPRN}^Ef%~vKij9kji<$(N6d^%o+EXNdP76k{5Tw7woHS10*^rKgT;@l zUz8*UGI+;N0Sn>%aDt+nwid=ye8;OtVO=_}uZ-vK?8%o*qT3=ElY_C&XOP9;`00tZ zy`Ap3s7pQAxDFTgEg42uG9Sth_CRT#UDbr^5X zsqVwPvlTc5djuNOI0h4Z_ zC-Q9uFR+IbGv}8jWs}AlcwIWrnOE68o&9teB`cyR)6q({@z4_O;!}(j=Lt5s1-3Qb zwvrx05PvL_=7H?ueGyV%?&(9QoHg^7K_)lc<(m7{s~K!lV=$oK7Z>IkV22JM*7xY?F;G!}V>k?uJj8&hw;nBeiU8xy_JE^1*+v(r_4a z#*Wwi@7<6YUNfrgHbZd#kdQ%F>yPG+;WZ^P|?P^5F=KN^McS)Q`gO0Oij_9>K|6F_a{6^#42B?u9Zr=(fL*Cf|&1;6^n zzI+~@57^U3AqJKUX*lRg2zFu&Q)vH~hdng2taA)8FtKP=VC*`eq(8?`0Xu61*BZ?K zmInI6klXQ+Uxw9eUKf@G?)Gt9=JoTED=c1lCFEfC5zGiGumg0ZtcK)(4229_Yr+`G zS{Gw(lR*_V^Gxe;K+KD_0;z;{N%C2%KRS&$OXt2z5TsUIlP1K_yfE% zz^)MwN0fi!X}+l38=xb8&H8q} zZ^oYQR&K-8A?pb*ubFwR!o^ENM7GXs<$*rg z0~&4se*|)gGWLBjt2W;8D7KE@>FcN8_Ob;Tr_+eRgT(Zt-#oCw+%ow`7+iNYqg74b zyh3c&NGr*1?j4R{ZzB9?!vc6hmu&U^Z~+MDj`OZ0r4cPozQ0eXC$OFs09%m_iAKs* zG(4Tga3~wgD=V&d&!I9~6k-mpnp~>2E^8t65G(1I%{%D&T1O!m>(EK_PV&(TSUE@!W!blV zX(c_lTS*#9;_8SxP{Cc~<_UAsJI5B@8G_|FnU$}K>UP0~nD%d~Eq1e`%MBv;g4k_avklEwGV>9oJRjb`dD{l554%g4J%27)fWE5+kFZN-+iL*D;TVt z(CWdzC0H^$fDHqWYYs(TZWG#D$x$v*K3m*_hhCEueynR|eLXO_WSd^n99F2ni8uDU z?fGG2%JO{P+G}e6z9p>D-0Uc1CaKATY}yShE=ygo@G__&xuTm*0T3gW0=}Hub(wtz zYz$<%Gq9SZa{{rz*OEhE{hNJCo+pC}N8XV*^_^nuc&C3<$T)lA!zX|vVBF}{+?f{n z%?kIWSRNaDOuL36?8_deOQ!RbEMfj`~R8gXC|AcVmSB_2Y)@CUO zV660oBeL(3O$w$AG3rGPfbma&>q>_FVKHqT@>3g$-u{yz+wcx*twfmnI z1ylo&ftgiNYN2&w$dVI(7Yfh= zAvma_s9OU&;hWo*f?Rc#O}hNMrxH*)b3IW_Cr!1OstbH0-VV{lSDMa1sE2PI{5xEG-X?S#ww2mxv6w8SnQS{ToHb~UY>w8akE;8Vlv_usK?GhNt5dx@K)U067WlB4OR}u;zhpZ(DKAZ z@D98|5-6Op?zlS*yD&1dF!#PC%x_`)_>f{iVJed{CZ|&#t<$rU4=@f+#%Y5P?27^N zb5+#Xv$YI+yY2Of*8y_1o={v(*I;23S8QI28<`esWau)nt$)HKU_NMp90BT{RTN(T zd%(q$c?y`y_TmrE2ZDaTlx&}A4xceZc(1}+~pqRaL z31B%tY)t)WV_vbnv)Fxu`Cf7Qlh|N6&4M4kA3jM5wEf(oAM~JRXx7w;g=yF@Jf%r# z0NY1=zaT^_E1xl#=5^#z>}G-j!VPC$jtWPqqEZ=@rfO%|P~&zIgT%MV=6A~&8( zMdoO>DBmD|9kjZ1nh<&|-Ohk3^Z2}cK(d%5N6?kU@bAYP~ zrf6f+mo)>o=zN>@ZLs5C{}Uz7HtCU0^3D*gtAS#b5AR`-g7BrfnAH4;h1D+2_DB?rShh~zi^vl#Q zLzJ5;Z!CAKFX(Y`u0VSQl{ukIE&!H{d-A;Sb^_>5)Tbxcq0R6SC;);T?i^oMvk%>- zGhbR_(P7J54;`|bK(i2uDAi+s6QB;l+X9Bl=ho~vx{5C!*%b9KH(V;=d?etwUme_4M#^qMZdVKO$`a4CO%P2UE7VIGBRKR?-7=0zUS+bH}KE*UBzwN+1c zzVrek{zC@(wt5L$LTb;OpSI&gZFL)=24ldE6sOt%cVz=;H{&&@e(m<2|A={}8aB`O zT`$r?>e^d7@Z@8@m&m_Fi4A1_TrszUy1DC4G*jO>~jBx z(8O)0$*-}P-M9w~5DnV1v74Q>mw|(nRZAr)j?f_8iByw9FY-51-g;tfVM`>Vit`9wU_%VnSWLICJFl7zfRZ>3?<{buU*?& z)QT&Q19XRAw?x(U^ZEOcv;`6Sg^_UGWq6}>aa6j;h z>rz2}QSovkaQ;xL??2D&*@l(=fdI}PQK~ObFY8KuXjj0t0+%Qt`fcp6GWG?6DicXA zl#18X0HRMiZy#u-wa0C*_RYT=*ozQ=Ar#Q@Ha?_F($5p(k#A8VtB^?kN42#b>Wdf$2<~abY#W=lM2xuUSdkQXADUefA=R54h?E8^qrM6tBn6$}PkWn6ax@V7tD;bOPS1 ztBf%OWU*I~1vqD>Q_m5VPlEy3PDQ~6yyu`ZMFQE{y?inJGdFvHyD^_^(MpRlw zsP`A-!}qtpD$vMp-{1a|tN-;uKc4WPU;Uq^{Lcja?+f(budDwT*2)t{=9lI9;XJ;T z)#>v1FUxH^idI%lGSh31=dVlOsZMHg;i;vgLt>x=Ao02+yS?<12gtM&E{-4RCLIqM zb@pHFndXyT8&dxAd0@2d>+I{=GtcUm8UA19;{*3EF5hG?m9H=Mj8;9IA8kqc6e~+D zSf4TZE$+*clki+-*XpGux6jhtZ7A8V?LDuYdMqCYK22ogeYp0JVJ=in?tIzN>oI&D z3Q2mT)@Rg0&wSx}FenLpBF#IePtQnmo8TuN>R*_jlG8PH;&oss0JG_ymgZl~a?`4gLE|dBHe5X~AhnkOx@pcV%d2z=OK6_3 zoo^`b`m(ICHDJKw(n|)r!$AJB%B*{RPUR*jQzg3upP7+|Mjlphwwk1r`!S1Z^_s4b z`;llW#F{A~n+b{~)HQ|=b;*(`mA{F}QBaHRLcxUPiCu7d(fp!#c{Az3RBsRIGti>W zS%qO8qKwEw(@kEmxY0E;mD#V#3VMq6@{V`ZJrryl|C+4fj2#}s^{85yEaB1ITsVdF zGu^m{4UaE1@)qMJ4&LgqN_FeBTl9kcE$HCO$ToO|a>e0`F2v|!!{&0b<2IML-CtHxgwnUqE&9Ayus z69Q2FV`Qqj0l$+dcV-|5o9Hvx{AMD%o0LTKxwa!Zg;?U+IhHsXiM<>+n{c3UYOR%? z(hzRc-`*gycS*9FqiSv6_3k2z00KUmox;$j8%|>O1f`Ipvh;JzWWrnvmy^AoKbklI z+sS{yDk@g@v@>_N@S;-#uF?sy^a6@!ce^U8iRbd0PI(2V&0``K5AiQ#y?adu+v#6a zR0|0pKBES&ME^Zws=6OiqYSISRviLV2zDQy^S0Aak$ALYPeh7mk9PTxyzjwMT^J|- zWjpkUAdw2fP771b70I_5eo%)uN;EUY@{6ui?x4<#B9G*KLHW>e#&~$N^1B9+#A%D2Ss91O4tXddlsi-_<6 zQJH|%Hnj)wgFx?F!lLlr!GmN^U_!96+@<&z%`|f?s)x22i{cF;p&+iRmI2ZC6{WRm z<$1k;%e88}>6MoTGL%me;b?BnCTQ~3Q+rrd=NHBOKP4w5q1SudJ``lC-DEh`q=OdhXdHOj3phz2$NpTkRR|sM z)DkvTdFN0^dk?$4`k8~1wXfvl$}(?`PZap^!DkA*%7i{#vE_ZKJ6yYw<4;!uPF|2!VI5X@9P!LkQKa&FBeb)s~ESBaZ~s)o)4?7576hVOCV!E(!> zRkv5s7}D1TimERIwlQoU82@L6x!Lrt#qH3lKjjAh_0{%K8G!*zYZEdv#u6ObLPMCWtl07s9gk0c| zZ-hoF=@v+A6qMA5I)3HW*o){9VC3#qtosnLO1t8A`o|2obdrY{#FHX&EhvGek`__JkDbehxNSDtqh$uEjLTIqQu_e-P7b_oV9gfzZ zH*b08A){;MG)1TJrqQgY!3-0t!fTHP7Inymkw)5p@c6_4JbNob06{Dkh$V;Q-ts&H zDilQ6%@{DoH5Bfm`IMcgh+C}51oP079#|jlpc=r*;;q22NY(FzM=$DN#f&Z#-Pl=< z<|cPKFB*=_T-2D>`BuG);f0*Y9hNmFPdaeV>qQKX@9Q7U5(Du2*ytfTF;ZHG5^CV| z*mBTSTIk`RCn_&Su^;C^aZOAkEU)UO)@y0O*TI7n8b$VUSQhoa_G~+WC0Q|#AqY+m zPuH-+X=*7I4chX|-F{x2mv;Qv+5Q{ZvTsKpg^8z zS0EM**d7|TrM}ZqURm_J#4)$`c0;fVc2#~ozb#2=h34`Q-w=5?0-eWdWwvZBDk>RE zErl83!<%HIzZ$v~q($GNWiP1&R+19$^t97d07fZQSl(z6oXS3SLX(rz-mVRb6}MPG zf`&aADWAxl-V!$JyD0Ztd`xm$Qa*m#^S28d}?U$+W}Qubfhw0qOd2dVYFmQm@5) ze#W{j%jcjk`x&*+h=pk}CCus47yw`CjOz&S>L!>knV>_rSM7!?823%k#v@GuJ-($< zcL%q|GW!af=@lx0gJpx+^v`cd9Sz}Lr%244Q8Jv*eAZ4&LtF$`ILVPVR~^Qees4g4 zkRISV-%i&CRn55n;l?C7E*cI4kezL(H%(+W(Nl;G&KG40ZHs%E39IoU4ZP#1#cfqM zc%O>IG?BDuIN7XCE$j2puNMKiLeDiGhmHY2obn?c9S;|PbiP^%e;r|0mRi+*N%op( zRnLcH>KjWKlRNXuv|bf3*mi0GSNoZx=6xdg);L98w3RlwkesaS-J7A`i<6e|Zos16 z)9R=BrFeppPM9fk*Q2|mK{3OxVufxXYpR&|+{Z1|DpcH-H%urp_B#3-;s&xtYY(96&?_cQJmE$x`PLn0%At_w z8r5#tW87veOq3}%uYgaTc#7;XT&{WJy^ z)k!-luduyp@Na>+#(`u&Ovq6Rb3EkSWR-IfgIC)T_Ag*uj_1)D>?{(@Afmg5H0X2?SYhEaqbD2(kH*=q#P`_1FD_%Km~GC zWkcq-Sg+jo3WBt#!Mj`v@_UZva#48>bBki1Lsi^4y{PvJ_g&Xs?F>5@v;qwTJe?yR zvIQWK{2)!mW0)U08o;{uKshvQVmgaM3*pTbkh? zCHEvwJYM;umj-}$vZ)Rt1U?<&$k3-p{Th~DGZa1V+ws=_CL==vU0_#3PbgaqgHCFJp9&=AUnhcfXrs9Ro`vNOJaUP};9N>W>CC@z zQ}_YM||cO~5iKy)Ay%`|=k3d2W| zBm$xX9<-$ftd2g(^8KXZcB%k^yD^6xIjlefctz_?{LS97-T*dIt-Px1Q0uhJFiuJLD84s4<%I?!KNfuX38so|qw!v(GnswG;X{spww@By!uuXNV zLf1F%y}hhnlOBK@Ln=zM1oY=DTkx?-$7ArhzLkGQ&P@ zEer;m-RDKA;>h@FP*87X%zr}8K=QaXi0M&)UyyDUW(Rdx$9tPyI0AWt>?n{=(vR!) z;|7t_Vg%H;ozZ^bRP5HBK>!H3H^zE3G0IOi4P95SMcesSS^Jr~$1WUq6YpM>$M!RH zMqXdx_=$pkx{ym}7M==_=Iq1F-#M(qenCO;iep%=%T9JU_k%%UWuDWzQe~J|{%(?aPB3{rHLWs_ItmYmK;jBDBOJ+y+ zzb)Z9J4NnD5J*y*z&rHQKuFi8;(0HrFTc$0DxEQ4D5~K50>9i`+2e9PZ>sy6`!Fx$ zZM_eG+@~Uourh^DW|7=Dhhnj=TGDh}P7~)bsN=3Cg?(H5K%^1ZNr%U4HyO7KB>gL9 zH?b3bOCa8O;fgg;{+;+ZSp;8F6qp2C&cFQyHJ(L1kngZ3p3`eEYw0eBj$BTC%b!Zz z0o(iPn61kJuko;suB}q;f?@k3{KJQb0aBaDhnwlzD;;Z>Z&3c7?11u^Y^t}6E1OMa zabGUy5~4=E6$#IC8YcqI?PTZTz*<=Nay;Pg7(qh%40*7{#p9aij;`eJb=%u=X3jPv zf`RfL}=r5Um$I$7k&R$Zes`*Y|Md*4V)w|H4|K2y8E;wcg~x z_jaxyCmn9&l%MJ@snMr(PPJ%0oj_~2;F}N$7OG@W^iZ)Ih<@t|cqe+by84`% zj}n%nLizPQfbiaDeEQnWRW-2h`q0EIV0F1QYS3Pl>@{A=n{;3vvy682Gg~Je8XTAX zif(4R0T_wHwZ0Vzo3ebdFUX*$sVAYH08vfJ&( z8m{5;W0gW9Ue+QyV<~s+Ew3}$Y5L{Ml!bP>F%=phUlHnmd_xNB-GJBA7HatfRkzdG zGA|n_sg@DpAa945j{ks*`%<+0{^Pag#TB)54Q^wMQV{7R`}QagXr|%`ouU+SVv%7!1Vl1#wz5#aE;Uv3;mgZd1nnB0Kw;-aAJ5V6->|U z!XQ^}%?zZqJ+MECrE0MObb`_ zH#E)Ip8aK#ca7jsmF#9x>gq_gu21>V=P8!E!`O+Z;0(gMP(nG~#-g@`LggLD{HYS% zAi{wVSG|iv7uDH?H%_A?@+lM&D}@OGnSg074$IPW#XAx03 zzPm(ngS&qX;tn#HpJ|;=u;sW3B?zXf+ozl$=XAL96yWV~T$icB!SMAxbJ zvnG_JhtL!%k>l{?+ecsLFe0Ui9Uwj6mFJ-$d>QFrR~u8Ky;UFZR0ORzL3UKmB@HG2 zFKgkGt$yJ6#GOyhs9#^Xp8dGpI&RaGlYq`1ow&wxcdj&}H_ixz`ySq6T_}DqEdZrN z4+8mh?p99eTdq{XeeA=UW6(P88Ch9ePJMX}RUZ5GBN6L;%!C8*Uq4X*)Ad%7sC-7x&isT`kNw^G(1dJ|-GA-2)-B4G3Qv zKM(Q}+}MJnsfCO!DE(vJC|Qm(-$2w3(<^FCEbFK}2C+Bzbt^T>=8n0>^Bun_(%8A0 z7s3ZR@?9sYx1scrxI4W-7iOpdnA1A9c=2f3KF60G~KPOv!sH-GV3JVum1KZZfpKbUz!#aEFY=s`<6lh1^(K02sA&!VzE!M|a z$O@S6H+N1k0UXP`cZ#|a{p?uHKvpdfXYR3!l7Jkd@(04(u|5xpk8yE^pM1iR0of3o zEl?gbI4NH-eeHaqQFw-Ff#zH?5GWpW4M-#mWMu#)pr7Uv74|Bes6fG%dbiEn3hf4x zcR2NPxBOrNl5$x(oW3(alB9y@-@HLIs2;#$o2ARAt|(4ecd{;93J9a;N#OMKBoX_GAj@x5+U@fVe&_U$JO}w~wo|W}KPoDidO)Fh-em zE@702JQo1Yu5d+Q`(>_f6Vm_&uVWuzp3*r@fWr&e+g;K~clz^#sdcLTE0kSC?0K~CTi$rwi-?I#lwA|}1XS2%xjS|q!*i=M&-)%5PGwPr`ulfW^D)m( z;dhx7Z!ufa$}7^Mt@*7^`Uhb6P-#K?pciw?x2mI5j$abmReTI*D9I6 zKc$7HF~yKtCCBzHRwYwvEB2&s?Pv{!04}S#8cKR2T-i9(zgwX!(6|wV?_Ht_wO@9b zJHT~xo;JFbkZI{3wK8>m@_S%YURC)LytOuYnUahO>PMTV$MX^-y7;&`V{7_e;kNr` zUgCi_6E?{1H%f6I1w@OM7B!0qDh|aHeU8EU9WAmq|VETb@3?}d?O2kIib*-8k9 zlQ)+I1YH=mlDdnB1?W+0L!RP|<|P(OyIDY^Mr3K55A=1Sw4ZDB8EW2ivme!i+3YFQ zt-QrrnY$D#!d1onq*uB}!PK>6cIOgLP&-u5nz@);vnBSpwa<5@dxAqut*ugaQfx4dM$vu&1aBEYTO~yIEB*q+A9G)<J;tm(8~UM>e<5clUSbTY#wvjvMC6u$}*iYsx1s&Qaj~wHQ&#ScU zIz6u-43uiHazN7VwgYJl%TYAk2Iw;aVj%E}fD}l2j)yqM4+(^x6p+?oKKY9wc(Y>k zF2%(Vpd~72!E|?!8XOmQzkxU39|+Xn^JI|Vsh()B6nkiF{d0wIOj1_wW&3leb9Iev zJ3ul`jQ|kKc(>^mxg~DYlBq57F-w6vQ@aUyL)-*|q>tn%_pJeGOS180SwTb5IVUUe z$Gu=@Q&};j%M2(+753x3=KIKZ!tmxyh))SPTe*b{Hy|JDtZ7e&5xQJ#638fOxWO3fItm>EG#H%Z8n0`d8}eej_dXL^PWfD+%Lk5A zKs_GAZEf{Bd~Ko@fZYp;g}VsV{!k&LARW%7PwOWde-B8Km1=amd^feADOujMk?s;Q z*JTbQlO=rx;|q28-W2a#Mi9|wS-nCqI-n&A$znuC*vBMXmps0t^}ylc>R5!`oyt!i z^1vC8+R1q>hjvPN+ND(gudi-1QYO?PbF^&qvOC4od$pvOZn5QQ+r(^CNVigYN&G8E zsWy2)kn!>p=%5NJId6NFc9H}Q_xzCgD$QoHk0vlJ;aDIB+{J6Ot?0bTCKH|A8&rPM z=0PgqxLGwNW<^i>?WEf#0T5V@FuUZZ%1`xN;n)i~$8W|0R3-MBKCWcCFQHy#L-PW+ zEn$=4dwU@raUDsH4}o>FRiwR;)XO(y0Q~!`*nuv|dxF|PxVP&eqhE@TWE5w6Ro%Z9 z@3T@1^yaqu#74NXs%`d2Z00F&GS*^L{-V2bK$FKRTO%fE@*2VKx93sIqYn?Oz;lzL zC~dTUPT0Y;>Av$kOR-o73X}>nuG2qDn^-oT+D`S1HCjpkodYe~D&(HLGss~4R2XVV z>aGjC-ro9Hn@ckK@7in4#|oGr1;Cb_HC{C6Vl+A0%6f69#kqVv?@{cu-)6V9grQN| zK$ujy+L9zBBF7itIqf<>lC@U$U?Z@MqZ|58hX#O1F$i>g-U{RT3cJDSn+q%=9S<<* z5N}X`MlL5PIOJe0GnvRWL_YgXopu4o?4sF=r_(m#$y}pEd2Wr+{8sKM1HQ&5 zhn;!nT6%!Db*2M=?(ilErVjG}N9!pfQ6njb_l&f|^3QHt669O&1`$7y*=Y@2T@XlE z7;n}Vy5??^j$ftNB;oOhyse`{-WBvClney##nRWNfgJS!$PE5IX`ic>1P1LXena3+ zxpI>}GWDAQ4_xa#&m%5ZdaIxdHC<0$MtZveRd&4jJXJP!?nh90qV|AVbk*GGQSrXQUgXf-RGk(| z6)o7?$m@s*Z0)FPTxWEXl;S|<&rNyv7$Yv6`~DyS=t1$2i-}V=hf6s-@dW&f%DWqc zX*zZ->-o}@1G5zduQl`!L}}NRHxv*j1;_bX6(n5OW_Iq7ntx4SqRUoqz<6m614GBQ zlY)sTPgg-rgk-BydA)C(R0W(!P`q)^iJBemJSn}X5sZb99rW@%;r#p{*SE;?wkm$; zX28=g>J^@J&oRu)m642kO1VEKz-s-*I!cwc{4wiW7`Y5TjtxeG5l;}am_T`;ce|XW z%CdmY4LGlUe6hnzYSBpN-{A+v-*tYnFMG`lSBbh6OTljGn=f1mrAe37&?^LwK?io% z;J7}}I`*XNrtPI}+H_?%wCRbmU8$W(__zGSSHEyi4L|qBId`_#(2bOQ0e&F>Cj_8$ zpLEW^EdnRCbNKTl>A4&#VB&r}`8yis)_|i*AS_HES$Q#{hx+LSty9>CSX5giLS2X6 zE7Y%-fZ%Cp4Ji#k2$H}A5PT!up^d+1e>ftR=W@9KR&3-nbrrB;p^b9R0&(@y4fyGLmlo3LR?VRX3RH8hFQFUyUF$DioaM0|)i= zJP=-7=%wc`68p!jW~ed}L`K@HF2t(?z|?24z<0M)l2U5%{E-82_*98f<3V^Y;$ikJ zON)x*CH6R4ts)<0S6M71q zEfE0{y~BHuA^`3-U=P);R0ylAo&PZgxiy!529P(Bryd#QfkV>(W&zqAU|~wfIBIn2 zwNx&D!|v>6W?Dpl8WMf~HhQE_6SLBmA2;H~{j^8OiHXu%8s%hezsZJ>Enz`beM+lo zDhh64cTa#^q3o6?GYfakQY|F)elTr z*BETCsa=nt>^S+5{8qFq*BLb^_IGf^+YzoDf-YG`O#a!|3)0>CWV0>>uaJM_THs_&~RdXC1wZNiAvY7AyW-Wip7n4~#ym4tNt2WHW^S(mO zM!GDrToFfc)AzSOzeQudzx^jy|LcQ(JmEjT`aezip9%Wk7wErVSN{*Km6?o+_4u!A z)@g57W^4F5K73sn&#cf{Wr8Hw59R(}2f~zN{Ff)UWUejtIG2C@vbr)5VQ-jeVfkg- z{6(4aXL%otUo#`c&6IpsxI39^lS9)5ewooj`%Bh$U4q9m55TmTm&^H1cx)@h+7fOo ze|dwEHl^?tXCLRkzP2m{Vv0Pk=qkpw))D+r-`|gXtfFPc@D8i#6qHrbysYd)beVgV z@0U4^R;#+kPdg%+<{h&0d`prlG}dGQS#zrCArVM`ED4MxItWw)#2;{Z5!k>RkcJI+)lK&b#y@YG<=R8hIJX(i zyYxGwfwv8bi_OFJ;+fYL3szS_&g(Jmjy>BlMPmnn=vzUl9c2wR^wd#FRDHLo!IJ_8 zFVDKgQq1tW!WZ}F7&IO=ax5xxo1#JEN_mLLCL5>dLBXysIU3TW_5ImH^v+u5DDzF; zJedxH!GHp8-!IuNZ?OY5aXY6B&OsEWF*5d?T}I_h7Fi_iNe79!&7>YmtzXiO{qX1u z?@0fJi?CRP`>0Q6u0)mbwga-TfKf#Im|U9XPL_Zj`UHGLDy=ZlJP_dZqund7prcmiNY2kiD1xqYJhh=Zuzc~^7B zOv8n#EPF69KnJau%b;3$f$vc2GxB^8exthQ^|RAeqgfBm#aOS8@OpD@kF7ad2)=^^ zC*bV>+vV1@1Vr?ZDnQbYM-&kP(a!V$)*}L~YhdvKUmt8O%pH%5TTys2gyeoksV~R$ zEsy$odZ32#SEZ#isv2EA+6AN_8A5giokpoGVQ5;Zv-x~ij@#uQ8V0G_c3L61EoPY~ zTM(*O5U`ikbK;BpY_|f9SVAed{MZ*x>bS#D)6iN0+P=b?tcg*qqA6Q%Js>#cv#ILM zZ3mK|N7iANU;&UI%vGfV5&Dh zTh8m#i#=>&@EB2wn}E}Uz#$@xzvks65C!z?4b_LL!n>=VH(Y`N*)-&fG3htSPd(Qz zVBa5?Y6cG7*BG=ZDJX-a{^co!)8J4wkRziQ{Lup8jPr=UGbg-y6fTPpgsIlk&^CfZ zArE&(pl1@}H)wt6^MEC4NB!;~3Pfwy+^6!c7$ij_GUiAVh}Q3@nt>i9oZ|m;p67&I zDO>;&m~kR^8A*`N^d>sK#sd%{6TI|pAaQns*bEEvf%YIFVy0gKe7n(%Bb46As|dZ6 z-N@>}ZpV%7OL36o37XR8JJ2A)t3!Tt>#A$afUis#J38zrya-ZjF(f3lb~jvIoO>7K z*8)40n$#(-C~6N*7<-A!QTIDczREU(Jy<>U6Yp}6m|#0Sfhg^LqyD@Q_*R4s$6y`xz9-dg{X8`&dtJAxe)ln^;MBx>lQjds7)f zQ*l73OpK|SZulL3jk-47v@g(jnr_3ays-qR&=>a=1uA9?zk8HQL@WV()d4tw zc?_i4h9$he2=qnL1FwP{#tBx@GuP1rt|k|}@cHUi>h)@s^*Tw7^X&RazmVD8@Vbh^ zOoN(R)NM5IPm!alXn8JqZ#}WtU%_YJN7L!jiIxX(rGI5ez=ZwreEp=)9D`%zDVNf1 zf+$Y7at53iXUN@ps$%8`(jR)>dw-UZ*#b)eRC8uyN}m~nFB*L*KdA8@eA^e6Ynptm zF~+z<-hu$zBHuu|Y12HHP_MG@$^tlPGK%(2SvMRC_%1*qG)ddRkJXHPyV6df-X->s zht!RSW(H19|BJo%3~M@#+I?rnQ4}ONN>dZik=~^SLK$Qb=?F+KBE5$aLT6MUBcdoE zy-JBlm0kiUp$MTGsx$*6^xpeA*M0vMtbz1Eh)U$j zY_?iL{DGp5%>WQ-3Rv)3Nk5v7jri{NPa%I~lzcP|!9z=BfTq{JUiVLPCQ|>bOJY6~ zK40^WY14#R&#P|AQq80yj3IkJ=&O3Bdp*y(qqDoDilcCE$b>`iM(y^UvVh~HzgHM5~jv4qOr6)1y-ivi& zKPRu4Ke;baRZ>%oBd<(;ou!>v{mQu^%Kipf9iNlC?EJ^Uw$lrx{Z1_UUl#cUTi}T% z=XQ(qX+P%142;*LD}}8H@Tw#U*!ZG(%m@y{sX(?BSKT+S^Ww%ZP1fcsO*=ak)_M)a zh?&FA>_BEOt;(FQJM-i&ti%gX$K5>2m#&YjrL<3$jp6M4Z^$HKZ(YhN$pi|g^gmfp z3YhCtMZ*_(jcbP5O@^4wmU4fYVh>Cgi>N?H8T;_lfl@Ft+EG<;7 zctrQQSg!P^2EhA`^74&dYwkZ2ZEMIMT;gYmG@B;_re&<7f1^FCXYER zj=QOnf5h{!AO;d*07?kNIfl=QhTlNSTtjd z#fNrB82Zio4am}?^OJjy1mFV3F3uJ8k7m~@0~TF=6ZZf|cs`7JRw_>d6xmgbcCqWf zcpN==wQIiE6|`2g zWp(PXuRan_0CAwa9`jq;t0AIH5s6m!>~~lJQ0vS|yOLrltV7pA`_s=OSf)QVtaB3W znG6BYo!Vrjr2=)z(1~}gmkae&3X0K{FUyXON`n+w2I60sPi>2?UQ5e2ZEx3 zn>@XTb6H!y)jhu*BU0~UU=7mmHS%Ro>(Y_UW-%v+}* z1xOyd9hnIs2+SRT8F{V-WkVBOWn}BMDpmpm_=W*l@!&9jvHw!bDA0x0uln)rJ49U$ zG}q$55Hs4g&U~+D*AD6QqR5^Q0pNBYm6io(b4#Ss;SI5#!*7;)2sx%mr5E@J*9iRy z*%@xXfA#plDcn%&MYY&~OAh4Jc}Z(7J&oU=#p(b@ zL#1Kw^TtaKlSX)e5oUDAz5=#8QSnA^LXWG&f)&TZXc~6DM!C_ zzSpqEaU?TqBuf*_@PJ7cR=e1JLEE~PPB|G81Y}CRFAeuTt?47dEz18s;g6IPSS)#Hfk+T!#H|#h7fpo$z3$6BkFPJn z9)s&~BjgTMC(k3P>^djE0T{G#X*2QGWVr>zWoU%VJT0csGf@AP6Sv7Z42Ud(^LHjY z;Jt(s4_g#db~yWZ@uMe(DKe0FZ=mTPU-)rFkZfunHCXD@tZ>=4n= zOo}%6_WRkvO36ej%o4HM=?Wpi?a`M(X4?6wbQdA?$aT6=o4VR2GheVXs+%1o{Tr~Z`{)iHMKWsuDUI1 zLD>M7M{U#t4{G&VF%Kg{FhV3fxdKjY3ZQSW0b{Ox+) z?|)pGdPRQD!h$-G9#x8Hh0%H)xsH$UHP1%X*T1mohi>e|Rj3pwxq{AA=^>oKeK_^7 zg|sy^{f~=`OX-`p0E|?T2cj`fBQUefX z;msUJbCnfeSCnST;yRZb&uV4%{ak6Wlh`;C$ zU1PepPKXyqLBx{hU1t^U0dN|Rx9|7nfpNca*Yx5Ap56jH`On3M?E!Mo>B%@anPGm> z^=;($% z&<{Q5qjuOnRO9hJqtvyCre9~}Ab`YVAzffvrE7F~fuu8>IvWz8!CyG2tp~VJsTt*| z6_@j3ZpgU6#UI!O<0Y8GeMh&$(J~-t8_jev%tL|w@c;lu0UaOMXXihnc^XEn@a<7H z66=+SU4+*02bYB;%&g!ZAvR9vV^b-46;k7l&=hRrC4NpqN zq@Q3-&_Yxf~!IdFtSsyPw$k6t)e2EGYWXQSfI+!+LPtKw>!aYg&{g;s@@dDC) zPJXVtKF8ki#(a}0G7EiahPE*(;_5pe0Hx*$^$8gn`PcGHs)T_Vow@rZ-x(yf`$z7` z9Skt!czL!uLKiSkK(Ua?`i!Mz!@5k<-c&~V}&Yip>^)p`TJU(JwTgn`v1xun;#@fc@=};k-KsK4l=S-38Svz;> z?!7Tzo>~wN_1c*uWUhm+=R=d0yI*S|6X}&LsT0EDn9#8QvEPJHrkgV3b;<*c2Gx0h zUjdZ_4$U0IO$FrApNy~455OR2#lPC5fE2pU`kTdzS97j_>NXcBZB+9O=xH5m90i-rL7#X>I;B&XcSPGTSg9{o37goW zKQbfE=)u}!WscT*+tFpcDbNTm{i|Z^&~OjdEJT#t7p6M^2{}$hcSe$W1MEH_`HZec z@LIG7M~YNXF6p_g0EV7o&zsB-Ax4rGARcP;`S$q8GrVsmyu&J62a0;eugi0QN_Zca z+|hMyH1oS+&u8#bcVspR+4qM6I-t4q2 zv&7??Nl>IYx591poGg6sSwQ7JH2Cxch5@!*h&4!ON_x*JTbl^^`~NDupA?*EedCf2 zo8a;N;rK`<;GtdPRC+SBogr0_rx_wR^)0ol)oN7LHwmOyf=c47#%|O9e#MS$;tfc$ zcz%n2sCq^u20on6>Ht(c3vHbE{mRJ?eFf&Ho5laNyzqKE^;%2tyLy3N+x6w~2Jui( z(ooGgFPeftW|KFal9#-HMyvt_37$oi+O>M{c!Tp3cxB+FNQEx#YXlTr{0)eLg0|C$ zgajU9YU0Dg;da^4+OMNEU^WOqfX5(ysVv*2_YfRHu4lu@pDOBEeifWW&6#CQ$KI-r z2a67eN6FIy=@j0}bCF60Y8^14_eju8W1||$TMw1NQ>E&%8&n_5nUMQ0NSz$>wYk5{ zB(fOv$#O~uzw`3`dbnE)NB?ja;i=d^crr>9##&xJamjvzZ1~kN^0mN_!AZ|%bu#Axk zTV1u=&Km19V~T?11T%2jP{)913z#Qgbv7cMw#IXhLXH%d@DEWluQ8sGbsy#};{R_( z8h$np)JImw*|x$4!=^+TxFMWWH}FbeZ7QOETffA{JUS-Sndii~x<`nkjM=Zfh$w45 zX~XZ$BMg`hK3!Wt^Hut^*q%5s5RGILN|)n#E+QWD3 zF9E1i8?c3DR_?3q3_y#UGVk$BK)!N90?@NW^M;LB1rhMr$pY8D!geh5>X?k+4YsvF zH6Tk=u~5}1V)PMDE)croC&ljK^!Xw)C!~XSKSiyK zuTPaM?--b3nC+s-5Ny{-La_byP3^0)CZg5p9e1A}5 zJd0fLTlJ|?0!frwj!Hy#k=J3L2MstZk97jQPh&v8Ss|WZ^Jcw2vjQL>KBO4)QT@1B z2m&>W-4#uuZRwPJX@`DI6@U3Bx;>JOzb&hn@(&g#aqG3s$@1}pcv9eZN~O=sfZnxM zEKRBF;#j32zwv3vO1aLoZ~LA_E-&IZe>xrUskO_1dB3WdNTY=+6K# z&qk=b4d`y`d5@Esrrq+LzShp@2l7>mFcOzl4sE~EL5eI)NKHnog;iD3(7lLPonO!_ zzX^sup^$llVF0yz=GOrtua_4%^dVG}jj6Oo7`tZsNx2>E59Ezqi*u`xS2(6s@0{Ng zoAw#T0alzQ{D}xg>E2zc5dALz(Sv--r_CEyL$}>Nu56Kef4nR>)_U67&4$nBr@Q+? zi9&Kx8Gll2dzqmHSaj@|GXVz8FLK6r^|o8d%GOk`-S493{k>|NtZ>20TYu++lNXSE zrPCagvtHx%Px@M&xd_7atyaF6*5!S^NkPI^X^@rQjd=&UuP%V>;tJu;UyOcT>D5)F zE{{s+Q21`wfPN@4f_9K>8%57?{)WEcS`;gC>InXGI+rV8%Go1?pf`F1ga$<;!8L3f z#?{z0oiirRHl?+wMF$zr8#Tw}y}ODYAE6wz8ESy=C=X*-Hy#F9HP#5wPZMBVQC-td zRNI69tt&#b$!x(LZD{+2uL@-ILmO%=lVy-g;*6Swws3mo=ZlIf_dWrt_K<85xIkV& zvbLs$ZODapewycN75DV**aega2(%3e_Yu6)T0670o$WbTy`WE2u*Bam6r>E_1!e(PZa zX%$jk*=zhT_&-aY8rC*e9B;z#;sLg=Cv`bd(Yu&PJ2oM42uO@sD|2%L}OjN5BdD>k{J% zH^`~XZ_f4*Rwqk1#|Lhs>?`VXkm(^o_?oo|(Lbn&b#8+^4+rq}q9#%r1riJ%7-}2y zYb|th{ZW0wO?*I6I0qC~YS5JGeE~Y~Sl`TP7w)$td28C2VMa5*efnJRgt zag_?9ds}gtnh(ta{E770z5LP_SBmoy9z2nMsr69wZcUYRlXe(9jE0KO^k;b#JQdJi z0aF6JhhN0OE1M;sMG^I!xS$^&C1Tx+GXjg#2G-yM+2=X)$54CV+YsW> zxun1?(d9YrPwhHpO!I|?0GV9E2z)@vy{SkOBhb!(xrOJJaPZqFo0o6f0kwhGs zE(E(I@anH?NhNw`nl%psyl4D_tlxe~QZ*{gm(U(cQnf%E%X z7W=CvPr4siz-YibvUhp5ch6rZrV~i5t31(`X#ncP&1_-n-=XyOT457PRTHDyp!@#K z5~l=lp#Aq3%{hKI3yHlY%Y)oOR&s=Xtta<}jM|CO&ErT4Z5Jr2#2a42vWct1b2phsN)C_44 z>02t%(SbR5i)xeYOuv&-G2{FPseg7WeMr#HLRq7+whR!hDBg6Cy6`6z_~^EUOZKGA z##9B;*6lX(an2g=hV`t%F<@)p7yPQb89&r0wR4!Y0oW8ylYbyjy!hc1GJZRBQ8D!Z z<&KHI?J<7e85K!Qi3<6OYMQ|!QlUPYcdugP204=vW9IfBi`0{ZgJ6Y^dQ4hZ_TmvP z)e|~%YY&YB5i7f+h!_Cfgq4E_Kipl_UZs)nq|8({ic9-gf*KAAiQRWNAtL7&WBD;* zuKfZ2J}7$aA+wF1Ul~gSA5?&=`5uUxO8>(QwY&F8&jeU!siR|XYCDsW3pncBxO`ft zA=d|$n)lw%KR&t6n2;6lbqV^d&b7d@l=O*BbfWqSSV# zX`6}Owm`O@b##?5VDG5962m!^2igM!@XAIfD}|$Hsl(!*V`Bi!pi?Gks#z;NtiF)S z7F2FhV>~2#zoToE(#IB#5oAmUEwhv6viINLdIa3PhO-ccV{^9l=AzRg>BhSID%vcE zFqyMa@s>g%`D5gLI!F|Mha@b`!hUtc`h^k;gLS)QwieGsD@n9MME*2UaK4AF%IoV@ z%msWYuu89(`3h%s%?iL4uO7E#(U*(F1dtl8#LqbEtc}VJc4%U6yHP_a zk{HRlvSM#rF~)H!$7!X5i|U@;`U5gh>$PE88sNxwhvq5{Q~gq>e6@FJsju%Rhw10A zxU`+xZ}&OLGS;Wi3Nf_I$h5H+k9@Z>78Xm-QbMdR3o*K;9jt+8b9sqsq5YqUF}@vN zJ7aUGzefCj$Hl&A2djAE^ip3EH9p#v*#;0yPrd*IlSsA_IO>1Q-=Stvt(19kMaa3S zlyy_LB--^~K>N)K;pSFX^TQBURdV>j?a69I})Ug&cP%5 zQ&s3I-rn=*2LkasSYi-LH4tEI?06AxRl|H#l(XFrdcrZy%7QTo)xh{8))r= zRLbe!&iyD=@;9-Wq@)cWw`-UX=9Py8(7OljZ{%27|DC$;AOk$Jv|zqJ4|q@)fSEvs zFZnmLy(abUh`@_#ZBi8A|0__Y#})uc1TdF&PF}+~x>#gV0?Zo!-VO%`$0200Hi^79DgheZXXU`BGF#Mg`B72Ezo7brRE0suX({uk2Nr@E zr`rvDZFxGg74}F&n+}w8%rZFeTxbEf2zX7{l$WJ<(6&KZR0_^}aGq}@PDX>DfdwM*1ntJy8`|L}4{d3m;-!C)+ zNkjd@e}Db*fAO#X=S}|S9{%tD_5Xh=KmV)!pReHm|Em0d>s9eJsy^*GJ?ar|JlX(W zQ*0X+urJ8PfvD%pKJiER`+Fm&U}>ta!>r?xO7V65HPRzY%9!0 zB`K6(@ae$^jtv`F$gIU+7DDQDaPzCkZpF63>FVi8G10b1^YjB^*K7F5vJYFp z5FdpfH*WSy9@comPf6dhELV^Q>v$UMqeEy!S-LU{$S-Yn=HY9EdsJsSNbc;oF_NoY zB21`;6*B;Izc7fsa$D!dDtLK7MN811fpc^>c?{HTmw6=CXX! zbi}=R>hJZXoU*4eAWySf%H^?uG{ze_6IsH2t*!`}#7(ltj4UAclZ7K&Ii*vXW1X*b z8#}#yjt_j@NZT^dc{GGfu#AMm76)yjlvM4E$pYlQ^#*{@So(BSqWm<{-gA`w>-y*|Guqv-k(qfN z#O6Ir7?}ce#Ex}mn1!G=6dVEt$#N^9KL8V8Rd-pG)eh>$z1+#BEk*|+*hd*Y+AHM@ ze#BV>vGo1x4$3tupHxxu*na@$B>e^{!DH5CvjIWhZs0evtjqT1vl{SCnL6}@tG_X` zB1M0Dhu;_OO#d-%h2_j~ecjk0MGbPSK+}YV3L&T4#Ub@JdQ$1eMY1!nldUfSpgEO- z3(R-7ZNDVq0w0lZYyY&0256*y&nhwbCXm23ZfH34Y0)ltpEHLza&!kXdL zZYyf2R8dzm>!^uG-JU;zsexX97?AY`$^yWP?F6!kcr&5lPLF5+N`K7U#Z>q zaPGq>QzE%`e!AiAey-c94kM*tBg@Si=A+rQiJ_}2%f|J2IE2W}dG8oCSTq>GH;d~A z-t0nqhwb7N7E6rht{S1tivop>5Y@b$Sh5OT)O%h3ajUKoA0SOD0Yvf7Or9g>3ra!s*iqr7Hr7a=)s5BVia zY1E0VnTpTnvQS%#AQ%O2&EvCjzn{C|lxRC*?zgb!Z7w>%lv*`eCZt~YC20FfJ63si z`HxsOrR8NN<~WbC&kH}&+E+!!!hK0T5zPZfmrf6c8W&b>^DntHnTBkfR@x*~o43bJ z8r|_QGHO+Y3Nfe<3NYhrTLL46%rYsaRwpU70oUo;uB$4|9<#8;)tk37%b00x4US_B z!S}oQbexVh;Y+LdNA?|x7X`?~vgpn~rL{^T_YGb3S40}4$49LixZ`Z%fDvX^WYe9% z;JO$u6$Sk$c*RUwV1%Ka0nr36D7p@ENAnNg^QCj{&ILq8bVqwRHVJGmk5*xKpUWqW zqEOZJ>(h|n?Lrh&;t6mLcO?IEhAupYYSkwH5~ltKmRohftuUZtYIeRpGKuBVfZDT!(H#yK5u+>NmtY0o=28Y1x;#x5LX zvG67HiO!U?2fT?UMqdSh7GA6_m;cTI z_@hy>Km*T4V2^N4sXj&tUGa<>_4b?KW!t7Lw#c#Tn9-of)J;^F!!^w6ulFV46Z7pg zw*uZ+l8&_v-RH!~$jWlKelnOy!%rv4n&Yi7yNR`4>z%!?qz#BX@Pp}L)cKZcjUO%} zRl8bYMXRPu=5B-1W)?>-UixE2?;*VI9h1l>UgjHfIw9tzM_pIR0a5clT352>mUdfT zMIR~(j`G)NrP_B*gjcg*4iu}s68zRNbeKd_S*Eo8cYa$&zhGSBV?V-bdlN$P@2|2% z#*Pu@nt)jkog@eHf%oiQ%piGRZ;Pq7zZg_`=Tj?~V8)W_wCdi0*m`*~I=&%Xxc2Xf zdh?WYioctInY0<3oZXs3Ts+mQz4@ZAD!H~u>}5AXI7_B~srxQ8&ESR8>gNtbpuQuv zN&0D9!irpSl)1>OAbZ!75&^|MHcZT*U5g_+t(4|9uaqTOCu9daPrJ>2jPh27y z66L@S5XrKyu-wPzLc=sxzmtX)NgXo-R>sdnO7KsUnXY3RB#B$`u~X9G1F5Mp4cW0$^HU`SUvA0Dl!rX%`wkMHy#z(= zvxKWA@O8_GCmRFca)R*~Oh_cbcmbNr3T|8G7p06Hfi@E1Bk}^y(ihQ?E;ikA*#Peu zYRmo--`@IA3d{)X<6O1w*4=gU*{PQC_Ne~6S39GJX+Oku^jnnFy(jKv{IE?x{t?;= zt4#p#Oq0O7n*9b%1^xMJ;&2# z8Me3f>K0lN5TlAmrUx@q@ufRb{ATbiKuUytA7R~1FfNeZ0v}*PYYE1*FtCc)>GlW$ zX0Z(SPMVJ5qG8kZhK1gTY6Zu|3Lv%+0b|n8y4#MYA57WkZca~#z5D}HL`ZILCH*$E z7+nR?8=r+}=m(GDpW(q;%e&3*82no=HhqGei%n*R%8VCOoAj}k-kx9lkgSQZs@)uZ z<*{0(LI=SYsM|qv7Z?V#_3wVS&cL%izsJ?g1mV3v*Ypr_r;80BmI1q4S|5Rg0{-KI z4(YQ;_Q*63=C;_&6Vfx^L~@5!bjaLBjb&r7tuGVTVbQtf(vOVVKL%%@+?EZ2^EWW+ zaS_0nD()%G_*CiAWJAzPsm&4TBNB$4GPz4+^`w-cKCJBx<%~ssPaR;(JR}G=h6=cI zwcyV`9O49QXD;?y?;pX1qEU34%Gw^r7ygxgyOo^KYRb`YkW_EVhr<_5da&{MS3UH_ z5Z``V4{fB0T4nnrdXf;Gd1chg>1cPj6Y@9U!iPmcW3VBb z=V$hobB%tOGWyfphLFqJB*45~4zQX5WeMERPs+lJgN*ZCouVDL!w$)79lxx{+N#d` zYMiz)uyQSQbQR)7dJ2hP!zMW5$D|{Js%xmT|0g@u1c7|~=PDMopgR&c$EkR$G{P2R z>cI1+Kf+%u+%nsrfBw0uXE*uhEoD-i^Y(>*h*-MWrDZ?GZ*+QY<0@LLaF~ZqKe@?M zI-CF8|1)Z~eN_L^ny$H3tSO zy=@#l9gn%!nTCdp^fOVP0O2N;t_7xC->1dZyJ`YQ+Bimr=xGTrBPhf5(VdDt(YMSj z@qP!vLQqP4Y~|t?I8IQi7{XEDNon)}&`U`Ub-Sp=hoQu`*D!SZS#E?&QdAoB*jq8F zY|>gKLfBm_m6O3E!67PNL*aP4Gmp64Jv2c!D0MBTA2~A3n)K`4e0W7GnPo2(Qc)}? z5Kw3Q2`05EtQc5^ZyK5Q-o4s91Zsj*xs{Y3C4ZJJl`a?J(Qc7oBNvNcnFf>=;7z=T z^hoBgTtkWb!NPlRvm*Bid2@UJQFAv=L_(Y9`@lZw`qdJb_ULa9n`HXaAlKZzd`;cb zR`lJ7k6KCUlEgHy-HW zTnEA2ZSnB8Bw=3L@S*7UWmf+RPkyRuT`&kP&-PX$iQJZbY(HkTAFZ3J#6ly7p3Mfw zt_miRUiHue4wf0N>agBxp<}!4)sf{sj@+sKW^HZ8UDmHDm=rH{3|$DFQaD+UipW#WADRCC7A!y4;(U_DCvlhuO1~qGt>(Hl8w0^v4b>F62m87 zZu61*^3?t{%8h!rI#OSN(Z^{nv7>h^8vA)^YqBGy``hB)Y^lMkOjm$PL~s zf*OpSW?u=7vcnm^G;$rfnS|&!{#bMTtO}y;lOM+7SMg^6;=626N?B6}ArFtO8hj)Y z(gYL=-C3QQ$b2N6sn~`NL8x+{si;rZkNe&BW@p(@1Y0Q3nbz*=+IH9OWXR}kaMW-&jTI-5i zfct)ZWbQMOX&r7*G5~zG9>Qy*pCnluS~a-suT;!^GQ;uRB2SA)AjvC*kxgJgr4K7sQNKJ97WOnM8`!Qif-}x01a)++}X{}ccCw~CSt;eE>mr6LII1&(9LQ59i$=2cT$yL6Sq}v z)e0#dwFyCC;)42jo+&YF+<%7T4C#%z1tve;qy5K162=K~{%H6-8;aj!&O>iV%Wt}m zvTn4Vza2yzeyDyV$nGZ-zENzf*DXCKgVm zDNA5s2*9$Ddp-Tc5*5rID`aW}`-rgF#?AQq%5eoe_tKlj=N~_7Z<#BRa9k@XczH{F zrMHDzfKzm1vQ}LDYP$O$N?{@9u~L$-@0N}5LS*O4W3Uc^_kM1A0o(UV+2krqks7)t zkbeAnox}3KIv8Mua=6g#!J;*0_RF{&70gO4;FG@|6xPcBTMxmC%1n52xtQMv;u?_H zl`NQm6W|@!TBk`<^t=%YI5H`6NuEGx@%4uL)O3U4ScXy~xeJLYx`WK`Yl4Jxlx2%} z@giRE{e_G|%>jVcVD^b(59^&JBWgC18S0-7;2^I}iZ-bg6tv)3$S8@jj+df^#NQKhvPe7m{-xLWtAj*<2BF`T4fb1Ahv?Vt z#vSM64}hJCFH&D!Xa0@}Z2R!&Q0PVg0!-KlRf|bQ?+uodAm>sRd9E`kgq)16s&q>8 zBmJ`8=-unSxlL39k@0fo3Pue^pqs4IXa2T!Vd71s$K10bM>41M%l@N}q(A2^k7esm zw&scIxgL+>z`*QwjyUE?f0sjQgDfBe(0hrkU%`OQ-n0_k<9^b6F9E$p2$2tujg=xg zGk*-=h)tZg9u+(4#wIrfUAH*hscKZNr+?_`n<}Bje%N>U3QDnhB2x79#-6O(>Mb+q z$re!?UO?Of!BXLPeB|(#ISZ=5 z%5fO}<&~1^6~IdDzBPV8i;p9m_Br>w0|DNZ&FXvfhP z$KI_9=;UhA$Fy$|@B*`O1gPWt$F(x5I2kiqE~pwsmauuPDDBTqtC4v(RmVKcptz5I zmtxPTr&p@uv`(}hGhpR*vc*3lajq^wOJ|JPA_#91JoYHHWj4D3yzX`ihM4LPNZn0? z_RgHj@nFBuvH8jD#~tY$7EH!kCke0#%HF^wNIs!U zB5b+@Fc9ckaG>B_h>Mro?63Xchmrtz9ME4xK48CAzK6cZ`7DP?F%?f`yqYbd!& zRX^<7fi2#Cbku$F#&IRSH0l}Bb^w0rpW@Z9oH4undc?8g3n^=4+Ht!~MmDHxlP-Rd zR*D}vT!Q;z<@dXtDB&o1pCKMimm(8rAGT?4*Vn#f7(FKOr4UF76_2-7?XViI1=%(TE+`~=^-ck<#w*9-m)r?7o~s) zH^P`tiWQ5nQOdTDX1%m~+#htrFD@ZEJK3;x_OBM{f1MS_7rF6N4xvPFN=fp{456D)Pa2wR zX(;ndaT;?VH)ts$_y9t1v!ok(G4dCRFQ_&@kjqr$x_m#+SgH=vqOcU1Fi=8 zhyn{IzD9D;ze*&kp#mRrE~*Gad7JQ4!ub*FsVJR#louRGsqJ zjR}5=_ltEa?FY+1QTZ=GM7SO{0YT8ij~sah5$Xq`j7)8h)0%9GCF4Kx%WRq#xp9?% z%{u}GQ-8Q@>tCmpO_<`8` zqy;$6Wld4=BVe) z7A+wlwU@Nq*u@SPGHZ`(vudf2Br_0~A2P?!K5q(8n2AZR4fxtIk<$q-lQXeRekgSX4B_cYwvX$M_0t&o7c(pxiCT)CYCU0<^X3T7F#Cf#-cwEi@mgOl~`|axT zno-cZ9yTIqK%zrN$D(uG8cV`9f=>Pf%Cq6Q=H+wZarc@F@D+1rTsNH(gZ(`fJ_Iqx zBr0Yu>IJBSoh*<5g^Jxlum!~2P|$8FZK!DPUGN$*=3YZke0_~41xBC$vvLf zWG0B1aF65^GSN`OURZ54)p&y;x!WxI3*TMs#!lTmpVyqzj0YN4(LuR#{t6f51HWXi zO?kWT&Zzlfe*HqW(}>gnp((V zvJi&^dUyg3$Ygi5reTp3@j^p}d}sK~XO?~yPk0ILQrTVk65Lya#`@KP&m@UR{8PO1 zWz2!PS{1%|;I=YVGgd`|BF>6ZB0$}Eo)AG|A_eB%IwWfJ=ga7*;;?*TYM?VLr+7-!`^>+ z3=&w($SC_3a zA4j~Mr;&+d40T2u$UkS~y+|W-Su6lbMsE1^7dB^7!fi@cWSy*KKLb_)SZV<7mxw>F zIw2zS+$DR5bxy=6*U*Pm^kNkL?^Vr6;2AhicMtH6?V`ZKp)R&62uiZGo*h;8Lj-Bp zH^$0fJYgoSvB6+|VPt>z*eUmcSl>fP$nh_jt8oLzyyE$-MR@0axEZY5vD*24gh|CJ zH27dE&k}voLj#XBWFo=38|Q~ot+AB(;#cd5!BQEG&7`CAjlsv?Gmw_gO)~}PEJaYq zuZ2C}_ESY+hrd%Wbhotr5|n8CVm0(OeIr~a@Zdc0_g}d7k64~oB{Nd*-SI@?NHoO# zmBP{5IpFDL-Ohmh@f_1FmdurDV#c2B*87CO^Dj1#A^^N-5h+$x@L9OAQ>Ow#9FrkFoL1nRB@sO0>l8 zSWn&J0f_FRf3LNab83JxJk+M$6b2(jAg|bNMjstnz3N05U7lr4C zfMPd}lS~tw@}Tk7e~X7eZs`n;HOx>nXELF|jvnj&p%ZN!4t5VVwr`CpN`59hIry}4 zeijz}Vc{7Pq0yNb>1D$HG^y9rQAwFzBESq~_ugxn$#kg3i_%u<&}{2jp9 zkc_@=GaGpSi#|LVJLkd{x+viAG#WP`3q~?f$>20HdAc|*Hjaiv*nJfb0E`}&00IF5jrX24 z?uO>K{bg&7lPweYRq_-DtrT?chXMr|E-rB0;b7QL;Y8xcgtiU19#UTJz zBNfc)pCDiquOkmrm+K70(1x{=rRAk{Ur`Wp1}F;hi*bwQjm3BPA^EPQz9kRRAc;<@ z6=cmvNTRR$z4vAr0`RzxHo|-T_~@nC(|3u6_4fZ%kJHJUD>6(Y{oZMBE60sZd%knu zP{tN#8cdZ0s?Kkz9G$R~wG+F_a0powyKSDoooP^au&g}&cqwKMjFOT9YBbp zjVu??VE?7>n-A~hXm_7!(-?>O4Sd@L+;ExXAvDivk{{)AeY0u{&{C(PCpmi_5ovS`Y95GlU{{SD$Sh2l@M%hj6@xXPzi8&1|#z>I=D^ZvcE z$N_1v%#vNY0AW@VL|!hJo3^;i%@d;Y8uutIuBGaF`3hSG=ZNs_;h73xVQ6r3ddqGR zats1`x>o5Ic8SmOW-h9E#c&pyd8E|8z)N76Un86pjfOg^Y{wQ#rqqfCAAp4&5$S&_ zbXYaKSUlJ$AJIUV-wN^nVT2tk;D4#!nn;!f>!tI{Hyko_!17ltGpJX=oGt%@ivh+^ zJx!a&GsO_pU?;ymtEUl9O8md1?uE$V_Msxt|gbP z2F~lLUU-+X)N@l9oshnes;1**6s^b!v6oIPTvJiDZyd4Cz2s(EQxa+Vn&Awh<|N;Ku6AgsDnYW{tQCyiLlU zPP;y`0%pqfH+;Sk{~id;TH{;VFvS=uD7)5KCM=D*F!&0Gk zMQabQ>?EX_cMbX=zSAng2PTy4I4-I~CC3UI%pH9F+0!T=t!nV*W)iZI=wySqcO_Ve zgw(GKP%T)u;v6@H=z$N*P9qC`i0LX&bFs!YOE9#xFMl#!NaPYFPx4y zG*_JX(u-wl@a$Wg_m1k|<`QKk?5!`?M-rH7eTI22 zMnS}GMwd-YMA^JWn7xLYncEN1?7tgRsuch9Wn{YBio&&B1U6}sO5?1=7^|?^l$V_| zv0Cosg1C4Os;ffC`FaPr>kh{2+NgkgB_zJGAytl9u1sLll_@R8WMd7}F6)OW+CA11dTe z_ktusOl9gwmcW|9gpkW%sJ_51S#V@mdNfKo`W7g>7X}%aD19p|bE!#%%f08;AEE9b z1|koxQX*w;%Xb+iCKIlKr5k?Nz5()($E*nG2t*P&N8F=6ym0!eJ`R>vhLD{&FxHa- z2?}%bUo*SylpkaCdd^+qgot5m=et4a{1KP9BH4PWg+&I(=dRmg|0?Lzwf(7e$N$sP zxyLiTKYqL(6|(xQQ}lJ&bfrWtxo!x_5rrg%Se9!pZEiz~T(V!+Nyq(`liYS(BDV~& zlG~(Q!fYCC?wNaI_`P?&-#_;GYwv&d`26wO>-~JaUUVKL3YDpg=d+D#wbD>|mkz{- zdjD)#W+9Mu>@J<v98$bv?_U$6bTFrTEr7=Q(?M}!&jCn9C1Tz z_Z6cURZ?W9tgY<06?j4v6ZMDESW7wuLFb;;3$C&9E1m=xMSU)@59j#ZIBc5GW^CP5 zX{HBlcFS3!f?Zfww1Lj_It;{Anmp2L>G^65e!_0O{rm?WdW8McUv<#wtF(exjlv4N z695$@CY!Vhbx^d26cJJ(XYiNe74i828Sh`5>ofwRvTectK0bXZ)WAfg#0 zACz=z3X#dr{sU6rR!$_3*rW^-gw-+O9cPGk$m?XC4iI(p+NA9P_K6}ff3%wd?hd1Z z_s_f`z^ASjxQe5w&jWS$cjm{@wxAdH2@^V^%ZvK?PKdrY9wPZt- zs;4@F{FCDbC*`J7k`72@yw%wJrUqJlvQL!VbZ=^A|NVB9?4Z!dMiP;@?{;y6UAf=t z-w?b7OV5@kSrCnMYd%Q^F}!{61XQo0sjQJ>FVnjWu@W8?oixe`S6Q3tEzof{L&$`- zU4`$!7hb4>t;w6d`70S|Br@dltdcgTEqz_r8CbEDJzKnH01Qj5Tm^S)Dg_0{nfe7~ z!WI|9&E-QtE$gn04VrzD=*XBFF9Z=g4&Cn{NkM$=jlsZ#(VmDO4Pwa_Emk%_m_IB{2-OuoJ(Xk z8YCE1%xi)}ceKegu5qobkDKBDmDnEm_bUJ2!B2Zoj+Wtm81nW8y8sc*u%&mmyK$Ii zI@44V==2#d0t>{lQfIUqbeAQ33n z_8Koo16t1Ajf!Ds}jHea3n%|Z-nJ`{0 zZmN6~07Ugh)8ztg57E@h@em)7!~jQe9*7M%t%^@>UK*SUaKN&DTrDCrWzpxk<`~t) zdwir5zu^bdf(L*Hkx(`-J!*U*1IeAxhcR3_DSroP@mowD19x|r`e8np^SesaUeOkqrLCS$qvN*;NTla{7X=izJ%mP+ z3-6G=j~DGiB#W|%Va(ySQya{yzT2-R1d=B)4u8Zkyfe331bYkSM$&e%?8t2TNCBg5^;n3foTn4ObP_1i*w#O`o#T*vQ60}H2EaVKKF>Vi?Lz|(UJKdL#GNCB&UM#t=n`WO;_n%F zpT%!=MJ+`sv$fpA&RSpZ5A{B4`{Z%`Oo!vBo6`b*DWaL9vB-i_Sd56(Yc5@OUECFz z!o$CVT;7BMQ?`beOnwS{U002{saVJ2w5X4Q%IxYu%2EA%O0{gF@7Ztt?8RR+aS|Ci zIRe(hij?YZZ`k-aTwCh>n%_SAwuTlmI5kb!TYv_yc}6KT@nzPj_DeX<;7_e`D(GCQ zQE$A@@o(y*F4sx_8zJg#b=iym*<-ki5gZ0P1Wxu~^!ElHF1!~G5K zt39bOY4-z$+v`(j#I=%d;@W|;%S7D_F8$7*+?Qx|z+SHlOqN7mRd+9&@@Xi3OALRtn2*8P}k2KP93-xHBuzin+u9QF zXN5VMv{0dXw@Qu};ZW@^e`Auc6$f15Uo<6YuVj*>{Y@+@ij5m$B>CmiIOUEYL;Fh^ zWtDK`WhauG;&ie^e{k>I|l@~q3VfO=WcVz@N8CRA=SdJX7M<9RlYv31vO8R(wLgNcGp;Ku(cuF zr`SZ&KiB$E%J=>$hyxA9??#h#iqwXD?{r86-u+R_u6vhQMJl+VozB<KS;}^sog{6TTX$wnQief2^shlth!)lI>CiaMaA~avn2~)VVS47eBTd+;J^l zF-3<1x2V>R(0AF10ANXz@+t#PQV&v<)Zy@cTVN|yWY+mt!DVaE6Hf1$*yvm_<#pn5w#K}C^xZ07& zE=R5jL`V&Q1ZKy0SeEd1^jb+%hW2wMLZN~`L=OV6SPR_k zFIN=#YEndrF$3}QMM0ZZZ>b=I<~hTnC9E|@`<{`P<;cqaTG z(6bnyx4GE*DZg}Kky}LT!&`me-9;NoA>94DxlGhMed@6FstUMy=u00?2>u@$JRIsR zgr~iEgy@t-&x!{1U-FgufvMTh0V3DVb1epm3f81LWsfpOV5?(2E(h*d4x=Wg3P&_& zdTyUiAC_9vig-8G;}#CIuGHFK7VKXT7>DKP^jdpD2)%SV7?MdFg=zol2?1xH8^r$f ztvo(X_~Dt}8yNKD;j@5(N;6xiAw}n9G+=sxxlg;kR@a$nWN5QT3VZfs#5|3%hg3?! zz#sz^MJ80$;gxV}H=C$X)bxjh+p2ImXXy1F60Rd7I^#WfKBZmX%w2!f@jZHX26Vz> zJsNV`SN0kKc;NA?6oP}c!+~FjVx;bKF!C8vSgtNtp*M3xMGVkIC$vLAT|OSEz$dBX zY^=;+hD}mu>!AZS8V&h0wMu@p=|tI)kB4ftP*Ke++gBV{b3anU_v!!g5YEUmeoxJi za4n>W3V?qtnID*ZFhI-ik^jA3WkEH4(Yy1O-0ls_D_+q-jPV5JkQ-|B*Cz8h=S&OM zLNj~sg^?PX+01N2jRyDOh3o;S(f|dVo$L^XT9@Sv zKo&s8S0bwC$x`3KH^4cfd%S91T^zM9(<&D0g ziYJ?WIozLv3D2S1s%asxU}9bjYylnp$WCe%cz)`CEFzl-YE3`~6J97Z`$AK(3^{8O z=3vsjuur+d4|PNzs=}WqIM?P~ALG$w6GMbwp9PM1vX1UwDLQCq)S*@t{x*dQbM;S6 z`~IgkBpcjxsxlm*4R1+Wc{Ksc!Kvs*f(Z13x>$O_HRk^T%7KJ! literal 0 HcmV?d00001 diff --git a/results/scenes/veach.xml b/results/scenes/veach.xml new file mode 100644 index 00000000..caab19fe --- /dev/null +++ b/results/scenes/veach.xml @@ -0,0 +1,109 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +