From 080e39d0474a9f8b0f95894e1eef00b56022240b Mon Sep 17 00:00:00 2001 From: PoorvaGarg Date: Thu, 1 Aug 2024 17:02:07 -0400 Subject: [PATCH 01/53] tests for indepepdent and correct --- chirho/explainable/handlers/components.py | 9 +- docs/source/dynamical_intro.ipynb | 2 +- docs/source/explainable_categorical.ipynb | 2 +- docs/source/test_notebook.ipynb | 203 ++++++++++++++++++ .../explainable/test_handlers_explanation.py | 55 +++++ 5 files changed, 265 insertions(+), 6 deletions(-) create mode 100644 docs/source/test_notebook.ipynb diff --git a/chirho/explainable/handlers/components.py b/chirho/explainable/handlers/components.py index 597ca484..f6fdac14 100644 --- a/chirho/explainable/handlers/components.py +++ b/chirho/explainable/handlers/components.py @@ -292,16 +292,17 @@ def _consequent_eq_neq(consequent: T) -> torch.Tensor: FACTUAL_NEC_SUFF = torch.zeros_like(sufficiency_log_probs) + index_keys = set(antecedents) & set(indices_of(consequent, event_dim=support.event_dim)) if indices_of(consequent, event_dim=support.event_dim) else set(antecedents) + + print(index_keys) + print("poorva«") nec_suff_log_probs_partitioned = { **{ factual_indices: FACTUAL_NEC_SUFF, }, **{ IndexSet(**{antecedent: {ind}}): log_prob - for antecedent in ( - set(antecedents) - & set(indices_of(consequent, event_dim=support.event_dim)) - ) + for antecedent in index_keys for ind, log_prob in zip( [necessity_world, sufficiency_world], [necessity_log_probs, sufficiency_log_probs], diff --git a/docs/source/dynamical_intro.ipynb b/docs/source/dynamical_intro.ipynb index 2624e858..27577bde 100644 --- a/docs/source/dynamical_intro.ipynb +++ b/docs/source/dynamical_intro.ipynb @@ -1330,7 +1330,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.16" + "version": "3.10.14" } }, "nbformat": 4, diff --git a/docs/source/explainable_categorical.ipynb b/docs/source/explainable_categorical.ipynb index 93d73df4..b9c14154 100644 --- a/docs/source/explainable_categorical.ipynb +++ b/docs/source/explainable_categorical.ipynb @@ -878,7 +878,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.9" + "version": "3.10.14" } }, "nbformat": 4, diff --git a/docs/source/test_notebook.ipynb b/docs/source/test_notebook.ipynb new file mode 100644 index 00000000..e7b0bb3d --- /dev/null +++ b/docs/source/test_notebook.ipynb @@ -0,0 +1,203 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import math\n", + "\n", + "import pyro\n", + "import pyro.distributions as dist\n", + "import pyro.distributions.constraints as constraints\n", + "import torch\n", + "\n", + "from chirho.counterfactual.handlers.counterfactual import MultiWorldCounterfactual\n", + "from chirho.explainable.handlers.components import undo_split\n", + "from chirho.explainable.handlers.explanation import SearchForExplanation, SplitSubsets\n", + "from chirho.explainable.handlers import ExtractSupports\n", + "from chirho.explainable.handlers.preemptions import Preemptions\n", + "from chirho.indexed.ops import IndexSet, gather\n", + "from chirho.observational.handlers.condition import condition" + ] + }, + { + "cell_type": "code", + "execution_count": 104, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'X'}\n", + "poorva\n", + "{'X'}\n", + "poorva\n", + "{'Y'}\n", + "poorva\n", + "testing with tensor([0., 0., 1.])\n", + "tensor([0., 1., 1.])\n", + "tensor([[[[[-inf, 0., 0.]]]]])\n" + ] + } + ], + "source": [ + "# def test_edge_eq_neq():\n", + "\n", + "def model_independent():\n", + " X = pyro.sample(\"X\", dist.Bernoulli(0.5))\n", + " Y = pyro.sample(\"Y\", dist.Bernoulli(0.5))\n", + "\n", + "def model_connected():\n", + " X = pyro.sample(\"X\", dist.Bernoulli(0.5))\n", + " Y = pyro.sample(\"Y\", dist.Bernoulli(X))\n", + "\n", + "\n", + "\n", + "with ExtractSupports() as supports_independent:\n", + " model_independent()\n", + "\n", + "with ExtractSupports() as supports_connected:\n", + " model_connected()\n", + "\n", + "with MultiWorldCounterfactual() as mwc_independent: \n", + " with SearchForExplanation(\n", + " supports=supports_independent.supports,\n", + " antecedents={\"X\": torch.tensor(1.0)},\n", + " consequents={\"Y\": torch.tensor(1.0)},\n", + " witnesses={},\n", + " alternatives={\"X\": torch.tensor(0.0)},\n", + " antecedent_bias=-0.5,\n", + " consequent_scale=0,\n", + " ):\n", + " with pyro.plate(\"sample\", size=3):\n", + " with pyro.poutine.trace() as trace_independent:\n", + " model_independent()\n", + "\n", + "with MultiWorldCounterfactual() as mwc_connected: \n", + " with SearchForExplanation(\n", + " supports=supports_connected.supports,\n", + " antecedents={\"X\": torch.tensor(1.0)},\n", + " consequents={\"Y\": torch.tensor(1.0)},\n", + " witnesses={},\n", + " alternatives={\"X\": torch.tensor(0.0)},\n", + " antecedent_bias=-0.5,\n", + " consequent_scale=0,\n", + " ):\n", + " with pyro.plate(\"sample\", size=3):\n", + " with pyro.poutine.trace() as trace_connected:\n", + " model_connected()\n", + "\n", + "with MultiWorldCounterfactual() as mwc_reverse: \n", + " with SearchForExplanation(\n", + " supports=supports_connected.supports,\n", + " antecedents={\"Y\": torch.tensor(1.0)},\n", + " consequents={\"X\": torch.tensor(1.0)},\n", + " witnesses={},\n", + " alternatives={\"Y\": torch.tensor(0.0)},\n", + " antecedent_bias=-0.5,\n", + " consequent_scale=0,\n", + " ):\n", + " with pyro.plate(\"sample\", size=3):\n", + " with pyro.poutine.trace() as trace_reverse:\n", + " model_connected()\n", + "\n", + "\n", + "trace_connected.trace.compute_log_prob\n", + "trace_independent.trace.compute_log_prob\n", + "trace_reverse.trace.compute_log_prob\n", + "\n", + "#print(trace_independent.trace.nodes[\"__cause____consequent_Y\"][\"fn\"].log_factor)\n", + "#print(trace_independent.trace.nodes[\"Y\"][\"value\"])\n", + "\n", + "Y_values_ind = trace_independent.trace.nodes[\"Y\"][\"value\"]\n", + "Y_values_con = trace_connected.trace.nodes[\"Y\"][\"value\"]\n", + "X_values_rev = trace_reverse.trace.nodes[\"X\"][\"value\"]\n", + "\n", + "\n", + "if torch.any(Y_values_ind == 1.):\n", + " print(\"testing with \", Y_values_ind)\n", + " assert trace_independent.trace.nodes[\"__cause____consequent_Y\"][\"fn\"].log_factor[1,0,0,0,:].sum().exp() == 0.\n", + "else:\n", + " assert trace_independent.trace.nodes[\"__cause____consequent_Y\"][\"fn\"].log_factor[1,0,0,0,:].sum().exp() == 1.\n", + " \n", + "\n", + "if torch.any(Y_values_ind == 0.):\n", + " assert trace_independent.trace.nodes[\"__cause____consequent_Y\"][\"fn\"].log_factor[2,0,0,0,:].sum().exp() == 0.\n", + "else:\n", + " assert trace_independent.trace.nodes[\"__cause____consequent_Y\"][\"fn\"].log_factor[2,0,0,0,:].sum().exp() == 1.\n", + "\n", + "assert torch.all(trace_connected.trace.nodes[\"__cause____consequent_Y\"][\"fn\"].log_factor.sum() == 0)\n", + " \n", + "\n", + "print(X_values_rev)\n", + "print(trace_reverse.trace.nodes[\"__cause____consequent_X\"][\"fn\"].log_factor)\n", + "\n", + "\n", + "\n", + "# assert torch.all(trace_connected.trace.nodes[\"__cause____consequent_Y\"][\"fn\"].log_factor[0,0,0,0,:] == 0)" + ] + }, + { + "cell_type": "code", + "execution_count": 108, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'Y'}\n", + "poorva\n" + ] + } + ], + "source": [ + "with MultiWorldCounterfactual() as mwc_reverse: \n", + " with SearchForExplanation(\n", + " supports=supports_connected.supports,\n", + " antecedents={\"Y\": torch.tensor(1.0)},\n", + " consequents={\"X\": torch.tensor(1.0)},\n", + " witnesses={},\n", + " alternatives={\"Y\": torch.tensor(0.0)},\n", + " antecedent_bias=-0.5,\n", + " consequent_scale=0,\n", + " ):\n", + " with pyro.plate(\"sample\", size=3):\n", + " with pyro.poutine.trace() as trace_reverse:\n", + " model_connected()\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "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.10.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/tests/explainable/test_handlers_explanation.py b/tests/explainable/test_handlers_explanation.py index 7900acb5..b8675421 100644 --- a/tests/explainable/test_handlers_explanation.py +++ b/tests/explainable/test_handlers_explanation.py @@ -8,6 +8,7 @@ from chirho.counterfactual.handlers.counterfactual import MultiWorldCounterfactual from chirho.explainable.handlers.components import undo_split from chirho.explainable.handlers.explanation import SearchForExplanation, SplitSubsets +from chirho.explainable.handlers import ExportSupports from chirho.explainable.handlers.preemptions import Preemptions from chirho.indexed.ops import IndexSet, gather from chirho.observational.handlers.condition import condition @@ -314,3 +315,57 @@ def test_SplitSubsets_two_layers(): ).item() assert obs_bill_hits == 0.0 and int_bill_hits == 0.0 and int_bottle_shatters == 0.0 + +def test_edge_eq_neq(): + + def model_independent(): + X = pyro.sample("X", dist.Bernoulli(0.5)) + Y = pyro.sample("Y", dist.Bernoulli(0.5)) + + def model_connected(): + X = pyro.sample("X", dist.Bernoulli(0.5)) + Y = pyro.sample("Y", dist.Bernoulli(X)) + + with ExtractSupports() as supports_independent: + model_independent() + + with ExtractSupports() as supports_connected: + model_connected() + + with MultiWorldCounterfactual() as mwc_independent: + with SearchForExplanation( + supports=supports_independent.supports, + antecedents={"X": torch.tensor(1.0)}, + consequents={"Y": torch.tensor(1.0)}, + witnesses={}, + alternatives={"X": torch.tensor(0.0)}, + antecedent_bias=-0.5, + consequent_scale=0, + ): + with pyro.plate("sample", size=3): + with pyro.poutine.trace() as trace_independent: + model_independent() + + with MultiWorldCounterfactual() as mwc_connected: + with SearchForExplanation( + supports=supports_connected.supports, + antecedents={"X": torch.tensor(1.0)}, + consequents={"Y": torch.tensor(1.0)}, + witnesses={}, + alternatives={"X": torch.tensor(0.0)}, + antecedent_bias=-0.5, + consequent_scale=0, + ): + with pyro.plate("sample", size=3): + with pyro.poutine.trace() as trace_connected: + model_connected() + + + trace_connected.trace.compute_log_prob + trace_independent.trace.compute_log_prob + + print(trace_independent.trace.nodes["__cause____consequent_Y"]["fn"].log_factor) + + assert trace_independent.trace.nodes["__cause____consequent_Y"]["fn"].log_factor[1,0,0,0,:].sum() <0 + assert torch.all(trace_independent.trace.nodes["__cause____consequent_Y"]["fn"].log_factor[2,0,0,0,:] == 0) + assert torch.all(trace_connected.trace.nodes["__cause____consequent_Y"]["fn"].log_factor[0,0,0,0,:] == 0) From 7dd59ade1f5a7dd58e19f056f09fb52e62a69d19 Mon Sep 17 00:00:00 2001 From: rfl-urbaniak Date: Thu, 1 Aug 2024 17:18:16 -0400 Subject: [PATCH 02/53] added print --- chirho/explainable/handlers/components.py | 59 ++++++++++++++++++++++- 1 file changed, 57 insertions(+), 2 deletions(-) diff --git a/chirho/explainable/handlers/components.py b/chirho/explainable/handlers/components.py index f6fdac14..5a55cd2d 100644 --- a/chirho/explainable/handlers/components.py +++ b/chirho/explainable/handlers/components.py @@ -193,6 +193,8 @@ def consequent_neq( """ def _consequent_neq(consequent: T) -> torch.Tensor: + + indices = IndexSet( **{ name: ind @@ -231,6 +233,7 @@ def consequent_eq_neq( def _consequent_eq_neq(consequent: T) -> torch.Tensor: + print("consequent", consequent) factual_indices = IndexSet( **{ name: ind @@ -242,6 +245,8 @@ def _consequent_eq_neq(consequent: T) -> torch.Tensor: necessity_world = kwargs.get("necessity_world", 1) sufficiency_world = kwargs.get("sufficiency_world", 2) + # print(indices_of(consequent, event_dim=support.event_dim).keys()) + necessity_indices = IndexSet( **{ name: {necessity_world} @@ -265,6 +270,11 @@ def _consequent_eq_neq(consequent: T) -> torch.Tensor: consequent, sufficiency_indices, event_dim=support.event_dim ) + # print("necessity_indices: ", necessity_indices) + # print("sufficiency_indices: ", sufficiency_indices) + # print("necessity_value: ", necessity_value) + # print("sufficiency_value: ", sufficiency_value) + # compare to proposed consequent if provided # as then the sufficiency value can be different # due to witness preemption @@ -284,18 +294,20 @@ def _consequent_eq_neq(consequent: T) -> torch.Tensor: ) ) + # print("necessity_log_probs", necessity_log_probs) + sufficiency_log_probs = ( soft_eq(support, sufficiency_value, proposed_consequent, **kwargs) if proposed_consequent is not None else torch.zeros_like(necessity_log_probs) ) + # print("sufficiency_log_probs", sufficiency_log_probs) + FACTUAL_NEC_SUFF = torch.zeros_like(sufficiency_log_probs) index_keys = set(antecedents) & set(indices_of(consequent, event_dim=support.event_dim)) if indices_of(consequent, event_dim=support.event_dim) else set(antecedents) - print(index_keys) - print("poorva«") nec_suff_log_probs_partitioned = { **{ factual_indices: FACTUAL_NEC_SUFF, @@ -303,6 +315,9 @@ def _consequent_eq_neq(consequent: T) -> torch.Tensor: **{ IndexSet(**{antecedent: {ind}}): log_prob for antecedent in index_keys + for antecedent in ( + index_keys + ) for ind, log_prob in zip( [necessity_world, sufficiency_world], [necessity_log_probs, sufficiency_log_probs], @@ -310,11 +325,51 @@ def _consequent_eq_neq(consequent: T) -> torch.Tensor: }, } + # nec_suff_log_probs_partitioned = { + # **{ + # factual_indices: FACTUAL_NEC_SUFF, + # }, + # **{ + # IndexSet(**{antecedent: {ind}}): log_prob + # for antecedent in ( + # set(antecedents) + # & set(indices_of(consequent, event_dim=support.event_dim)) + # ) + # for ind, log_prob in zip( + # [necessity_world, sufficiency_world], + # [necessity_log_probs, sufficiency_log_probs], + # ) + # }, + # } + new_value = scatter_n( nec_suff_log_probs_partitioned, event_dim=0, ) + # for ind, log_prob in zip([necessity_world, sufficiency_world], [necessity_log_probs, sufficiency_log_probs]): + # print(ind, log_prob) + + # print(set(antecedents)) + # print(set(indices_of(consequent, event_dim=support.event_dim))) + # print(set(antecedents) & set(indices_of(consequent, event_dim=support.event_dim))) + + # for antecedent in ( + # set(antecedents) + # & set(indices_of(consequent, event_dim=support.event_dim)) + # ): + # print("yo") + # print(antecedent) + + # print({factual_indices: FACTUAL_NEC_SUFF}) + # print(**{factual_indices: FACTUAL_NEC_SUFF}) + + + + # print("nec_suff_log_prob_partitioned", nec_suff_log_probs_partitioned) + # print("new_value", new_value) + + # print(necessity_log_probs, sufficiency_log_probs) return new_value return _consequent_eq_neq From 03516b795b62ca1d000af70c89cfd6990c218bfa Mon Sep 17 00:00:00 2001 From: rfl-urbaniak Date: Thu, 1 Aug 2024 17:18:42 -0400 Subject: [PATCH 03/53] extra case --- docs/source/test_notebook.ipynb | 91 ++++++++++++++++++++++++++++----- 1 file changed, 78 insertions(+), 13 deletions(-) diff --git a/docs/source/test_notebook.ipynb b/docs/source/test_notebook.ipynb index e7b0bb3d..88c1bb2c 100644 --- a/docs/source/test_notebook.ipynb +++ b/docs/source/test_notebook.ipynb @@ -24,22 +24,26 @@ }, { "cell_type": "code", - "execution_count": 104, + "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "{'X'}\n", - "poorva\n", - "{'X'}\n", - "poorva\n", - "{'Y'}\n", - "poorva\n", - "testing with tensor([0., 0., 1.])\n", - "tensor([0., 1., 1.])\n", - "tensor([[[[[-inf, 0., 0.]]]]])\n" + "consequent tensor([0., 0., 0.])\n", + "consequent tensor([[[[[1., 1., 0.]]]],\n", + "\n", + "\n", + "\n", + " [[[[0., 0., 0.]]]],\n", + "\n", + "\n", + "\n", + " [[[[1., 1., 1.]]]]])\n", + "consequent tensor([0., 1., 0.])\n", + "tensor([0., 1., 0.])\n", + "tensor([[[[[-inf, 0., -inf]]]]])\n" ] } ], @@ -142,15 +146,76 @@ }, { "cell_type": "code", - "execution_count": 108, + "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "{'Y'}\n", - "poorva\n" + "consequent tensor([[[[[1., 1., 1.]]]],\n", + "\n", + "\n", + "\n", + " [[[[0., 0., 0.]]]],\n", + "\n", + "\n", + "\n", + " [[[[1., 1., 1.]]]]])\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[4], line 13\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m pyro\u001b[38;5;241m.\u001b[39mplate(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124msample\u001b[39m\u001b[38;5;124m\"\u001b[39m, size\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m3\u001b[39m):\n\u001b[1;32m 12\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m pyro\u001b[38;5;241m.\u001b[39mpoutine\u001b[38;5;241m.\u001b[39mtrace() \u001b[38;5;28;01mas\u001b[39;00m trace_connected:\n\u001b[0;32m---> 13\u001b[0m \u001b[43mmodel_connected\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n", + "Cell \u001b[0;32mIn[2], line 9\u001b[0m, in \u001b[0;36mmodel_connected\u001b[0;34m()\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mmodel_connected\u001b[39m():\n\u001b[1;32m 8\u001b[0m X \u001b[38;5;241m=\u001b[39m pyro\u001b[38;5;241m.\u001b[39msample(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mX\u001b[39m\u001b[38;5;124m\"\u001b[39m, dist\u001b[38;5;241m.\u001b[39mBernoulli(\u001b[38;5;241m0.5\u001b[39m))\n\u001b[0;32m----> 9\u001b[0m Y \u001b[38;5;241m=\u001b[39m \u001b[43mpyro\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msample\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mY\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdist\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mBernoulli\u001b[49m\u001b[43m(\u001b[49m\u001b[43mX\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/miniconda3/envs/chirho/lib/python3.10/site-packages/pyro/primitives.py:189\u001b[0m, in \u001b[0;36msample\u001b[0;34m(name, fn, obs, obs_mask, infer, *args, **kwargs)\u001b[0m\n\u001b[1;32m 172\u001b[0m msg \u001b[38;5;241m=\u001b[39m Message(\n\u001b[1;32m 173\u001b[0m \u001b[38;5;28mtype\u001b[39m\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124msample\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 174\u001b[0m name\u001b[38;5;241m=\u001b[39mname,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 186\u001b[0m continuation\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[1;32m 187\u001b[0m )\n\u001b[1;32m 188\u001b[0m \u001b[38;5;66;03m# apply the stack and return its return value\u001b[39;00m\n\u001b[0;32m--> 189\u001b[0m \u001b[43mapply_stack\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmsg\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 190\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m msg[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mvalue\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;66;03m# type narrowing guaranteed by apply_stack\u001b[39;00m\n\u001b[1;32m 191\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m msg[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mvalue\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n", + "File \u001b[0;32m~/miniconda3/envs/chirho/lib/python3.10/site-packages/pyro/poutine/runtime.py:386\u001b[0m, in \u001b[0;36mapply_stack\u001b[0;34m(initial_msg)\u001b[0m\n\u001b[1;32m 383\u001b[0m default_process_message(msg)\n\u001b[1;32m 385\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m frame \u001b[38;5;129;01min\u001b[39;00m stack[\u001b[38;5;241m-\u001b[39mpointer:]:\n\u001b[0;32m--> 386\u001b[0m \u001b[43mframe\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_postprocess_message\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmsg\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 388\u001b[0m cont \u001b[38;5;241m=\u001b[39m msg[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mcontinuation\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n\u001b[1;32m 389\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m cont \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n", + "File \u001b[0;32m~/miniconda3/envs/chirho/lib/python3.10/site-packages/pyro/poutine/messenger.py:194\u001b[0m, in \u001b[0;36mMessenger._postprocess_message\u001b[0;34m(self, msg)\u001b[0m\n\u001b[1;32m 192\u001b[0m method \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mgetattr\u001b[39m(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m_pyro_post_\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mmsg[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtype\u001b[39m\u001b[38;5;124m'\u001b[39m]\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28;01mNone\u001b[39;00m)\n\u001b[1;32m 193\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m method \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m--> 194\u001b[0m \u001b[43mmethod\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmsg\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/s78projects/chirho/chirho/observational/handlers/condition.py:56\u001b[0m, in \u001b[0;36mFactors._pyro_post_sample\u001b[0;34m(self, msg)\u001b[0m\n\u001b[1;32m 53\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m:\n\u001b[1;32m 54\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m\n\u001b[0;32m---> 56\u001b[0m pyro\u001b[38;5;241m.\u001b[39mfactor(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mprefix\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;132;01m{\u001b[39;00mmsg[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mname\u001b[39m\u001b[38;5;124m'\u001b[39m]\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m, \u001b[43mfactor\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmsg\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mvalue\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m)\u001b[49m)\n", + "File \u001b[0;32m~/s78projects/chirho/chirho/explainable/handlers/components.py:311\u001b[0m, in \u001b[0;36mconsequent_eq_neq.._consequent_eq_neq\u001b[0;34m(consequent)\u001b[0m\n\u001b[1;32m 307\u001b[0m FACTUAL_NEC_SUFF \u001b[38;5;241m=\u001b[39m torch\u001b[38;5;241m.\u001b[39mzeros_like(sufficiency_log_probs)\n\u001b[1;32m 309\u001b[0m index_keys \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mset\u001b[39m(antecedents) \u001b[38;5;241m&\u001b[39m \u001b[38;5;28mset\u001b[39m(indices_of(consequent, event_dim\u001b[38;5;241m=\u001b[39msupport\u001b[38;5;241m.\u001b[39mevent_dim)) \u001b[38;5;28;01mif\u001b[39;00m indices_of(consequent, event_dim\u001b[38;5;241m=\u001b[39msupport\u001b[38;5;241m.\u001b[39mevent_dim) \u001b[38;5;28;01melse\u001b[39;00m \u001b[38;5;28mset\u001b[39m(antecedents)\n\u001b[0;32m--> 311\u001b[0m nec_suff_log_probs_partitioned \u001b[38;5;241m=\u001b[39m {\n\u001b[1;32m 312\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m{\n\u001b[1;32m 313\u001b[0m factual_indices: FACTUAL_NEC_SUFF,\n\u001b[1;32m 314\u001b[0m },\n\u001b[1;32m 315\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m{\n\u001b[1;32m 316\u001b[0m IndexSet(\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m{antecedent: {ind}}): log_prob\n\u001b[1;32m 317\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m antecedent \u001b[38;5;129;01min\u001b[39;00m index_keys\n\u001b[1;32m 318\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m antecedent \u001b[38;5;129;01min\u001b[39;00m (\n\u001b[1;32m 319\u001b[0m index_keys\n\u001b[1;32m 320\u001b[0m )\n\u001b[1;32m 321\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m ind, log_prob \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mzip\u001b[39m(\n\u001b[1;32m 322\u001b[0m [necessity_world, sufficiency_world],\n\u001b[1;32m 323\u001b[0m [necessity_log_probs, sufficiency_log_probs],\n\u001b[1;32m 324\u001b[0m )\n\u001b[1;32m 325\u001b[0m },\n\u001b[1;32m 326\u001b[0m }\n\u001b[1;32m 328\u001b[0m \u001b[38;5;66;03m# nec_suff_log_probs_partitioned = {\u001b[39;00m\n\u001b[1;32m 329\u001b[0m \u001b[38;5;66;03m# **{\u001b[39;00m\n\u001b[1;32m 330\u001b[0m \u001b[38;5;66;03m# factual_indices: FACTUAL_NEC_SUFF,\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 342\u001b[0m \u001b[38;5;66;03m# },\u001b[39;00m\n\u001b[1;32m 343\u001b[0m \u001b[38;5;66;03m# }\u001b[39;00m\n\u001b[1;32m 345\u001b[0m new_value \u001b[38;5;241m=\u001b[39m scatter_n(\n\u001b[1;32m 346\u001b[0m nec_suff_log_probs_partitioned,\n\u001b[1;32m 347\u001b[0m event_dim\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m0\u001b[39m,\n\u001b[1;32m 348\u001b[0m )\n", + "File \u001b[0;32m~/s78projects/chirho/chirho/explainable/handlers/components.py:311\u001b[0m, in \u001b[0;36mconsequent_eq_neq.._consequent_eq_neq\u001b[0;34m(consequent)\u001b[0m\n\u001b[1;32m 307\u001b[0m FACTUAL_NEC_SUFF \u001b[38;5;241m=\u001b[39m torch\u001b[38;5;241m.\u001b[39mzeros_like(sufficiency_log_probs)\n\u001b[1;32m 309\u001b[0m index_keys \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mset\u001b[39m(antecedents) \u001b[38;5;241m&\u001b[39m \u001b[38;5;28mset\u001b[39m(indices_of(consequent, event_dim\u001b[38;5;241m=\u001b[39msupport\u001b[38;5;241m.\u001b[39mevent_dim)) \u001b[38;5;28;01mif\u001b[39;00m indices_of(consequent, event_dim\u001b[38;5;241m=\u001b[39msupport\u001b[38;5;241m.\u001b[39mevent_dim) \u001b[38;5;28;01melse\u001b[39;00m \u001b[38;5;28mset\u001b[39m(antecedents)\n\u001b[0;32m--> 311\u001b[0m nec_suff_log_probs_partitioned \u001b[38;5;241m=\u001b[39m {\n\u001b[1;32m 312\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m{\n\u001b[1;32m 313\u001b[0m factual_indices: FACTUAL_NEC_SUFF,\n\u001b[1;32m 314\u001b[0m },\n\u001b[1;32m 315\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m{\n\u001b[1;32m 316\u001b[0m IndexSet(\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m{antecedent: {ind}}): log_prob\n\u001b[1;32m 317\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m antecedent \u001b[38;5;129;01min\u001b[39;00m index_keys\n\u001b[1;32m 318\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m antecedent \u001b[38;5;129;01min\u001b[39;00m (\n\u001b[1;32m 319\u001b[0m index_keys\n\u001b[1;32m 320\u001b[0m )\n\u001b[1;32m 321\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m ind, log_prob \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mzip\u001b[39m(\n\u001b[1;32m 322\u001b[0m [necessity_world, sufficiency_world],\n\u001b[1;32m 323\u001b[0m [necessity_log_probs, sufficiency_log_probs],\n\u001b[1;32m 324\u001b[0m )\n\u001b[1;32m 325\u001b[0m },\n\u001b[1;32m 326\u001b[0m }\n\u001b[1;32m 328\u001b[0m \u001b[38;5;66;03m# nec_suff_log_probs_partitioned = {\u001b[39;00m\n\u001b[1;32m 329\u001b[0m \u001b[38;5;66;03m# **{\u001b[39;00m\n\u001b[1;32m 330\u001b[0m \u001b[38;5;66;03m# factual_indices: FACTUAL_NEC_SUFF,\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 342\u001b[0m \u001b[38;5;66;03m# },\u001b[39;00m\n\u001b[1;32m 343\u001b[0m \u001b[38;5;66;03m# }\u001b[39;00m\n\u001b[1;32m 345\u001b[0m new_value \u001b[38;5;241m=\u001b[39m scatter_n(\n\u001b[1;32m 346\u001b[0m nec_suff_log_probs_partitioned,\n\u001b[1;32m 347\u001b[0m event_dim\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m0\u001b[39m,\n\u001b[1;32m 348\u001b[0m )\n", + "File \u001b[0;32m_pydevd_bundle/pydevd_cython.pyx:1457\u001b[0m, in \u001b[0;36m_pydevd_bundle.pydevd_cython.SafeCallWrapper.__call__\u001b[0;34m()\u001b[0m\n", + "File \u001b[0;32m_pydevd_bundle/pydevd_cython.pyx:701\u001b[0m, in \u001b[0;36m_pydevd_bundle.pydevd_cython.PyDBFrame.trace_dispatch\u001b[0;34m()\u001b[0m\n", + "File \u001b[0;32m_pydevd_bundle/pydevd_cython.pyx:1152\u001b[0m, in \u001b[0;36m_pydevd_bundle.pydevd_cython.PyDBFrame.trace_dispatch\u001b[0;34m()\u001b[0m\n", + "File \u001b[0;32m_pydevd_bundle/pydevd_cython.pyx:1135\u001b[0m, in \u001b[0;36m_pydevd_bundle.pydevd_cython.PyDBFrame.trace_dispatch\u001b[0;34m()\u001b[0m\n", + "File \u001b[0;32m_pydevd_bundle/pydevd_cython.pyx:312\u001b[0m, in \u001b[0;36m_pydevd_bundle.pydevd_cython.PyDBFrame.do_wait_suspend\u001b[0;34m()\u001b[0m\n", + "File \u001b[0;32m~/.local/lib/python3.10/site-packages/debugpy/_vendored/pydevd/pydevd.py:2070\u001b[0m, in \u001b[0;36mPyDB.do_wait_suspend\u001b[0;34m(self, thread, frame, event, arg, exception_type)\u001b[0m\n\u001b[1;32m 2067\u001b[0m from_this_thread\u001b[38;5;241m.\u001b[39mappend(frame_custom_thread_id)\n\u001b[1;32m 2069\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_threads_suspended_single_notification\u001b[38;5;241m.\u001b[39mnotify_thread_suspended(thread_id, thread, stop_reason):\n\u001b[0;32m-> 2070\u001b[0m keep_suspended \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_do_wait_suspend\u001b[49m\u001b[43m(\u001b[49m\u001b[43mthread\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mframe\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mevent\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43marg\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43msuspend_type\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfrom_this_thread\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mframes_tracker\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 2072\u001b[0m frames_list \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 2074\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m keep_suspended:\n\u001b[1;32m 2075\u001b[0m \u001b[38;5;66;03m# This means that we should pause again after a set next statement.\u001b[39;00m\n", + "File \u001b[0;32m~/.local/lib/python3.10/site-packages/debugpy/_vendored/pydevd/pydevd.py:2106\u001b[0m, in \u001b[0;36mPyDB._do_wait_suspend\u001b[0;34m(self, thread, frame, event, arg, suspend_type, from_this_thread, frames_tracker)\u001b[0m\n\u001b[1;32m 2103\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_call_input_hook()\n\u001b[1;32m 2105\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mprocess_internal_commands()\n\u001b[0;32m-> 2106\u001b[0m \u001b[43mtime\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msleep\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m0.01\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 2108\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcancel_async_evaluation(get_current_thread_id(thread), \u001b[38;5;28mstr\u001b[39m(\u001b[38;5;28mid\u001b[39m(frame)))\n\u001b[1;32m 2110\u001b[0m \u001b[38;5;66;03m# process any stepping instructions\u001b[39;00m\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + ] + } + ], + "source": [ + "with MultiWorldCounterfactual() as mwc_connected: \n", + " with SearchForExplanation(\n", + " supports=supports_connected.supports,\n", + " antecedents={\"X\": torch.tensor(1.0)},\n", + " consequents={\"Y\": torch.tensor(1.0)},\n", + " witnesses={},\n", + " alternatives={\"X\": torch.tensor(0.0)},\n", + " antecedent_bias=-0.5,\n", + " consequent_scale=0,\n", + " ):\n", + " with pyro.plate(\"sample\", size=3):\n", + " with pyro.poutine.trace() as trace_connected:\n", + " model_connected()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "consequent tensor([1., 0., 1.])\n" ] } ], From a7b3a8a496596a69fe0b82681b1d8f053158b7fe Mon Sep 17 00:00:00 2001 From: rfl-urbaniak Date: Fri, 2 Aug 2024 09:29:37 -0400 Subject: [PATCH 04/53] debugged reverse --- chirho/explainable/handlers/components.py | 13 +++-- docs/source/test_notebook.ipynb | 61 ++++++++--------------- 2 files changed, 31 insertions(+), 43 deletions(-) diff --git a/chirho/explainable/handlers/components.py b/chirho/explainable/handlers/components.py index 5a55cd2d..a31e2db8 100644 --- a/chirho/explainable/handlers/components.py +++ b/chirho/explainable/handlers/components.py @@ -307,17 +307,22 @@ def _consequent_eq_neq(consequent: T) -> torch.Tensor: FACTUAL_NEC_SUFF = torch.zeros_like(sufficiency_log_probs) index_keys = set(antecedents) & set(indices_of(consequent, event_dim=support.event_dim)) if indices_of(consequent, event_dim=support.event_dim) else set(antecedents) + null_index = factual_indices if factual_indices != {} else IndexSet( + **{ + name: {0} + for name in index_keys + } + ) + nec_suff_log_probs_partitioned = { **{ - factual_indices: FACTUAL_NEC_SUFF, + #factual_indices: FACTUAL_NEC_SUFF, + null_index: FACTUAL_NEC_SUFF for antecedent in index_keys }, **{ IndexSet(**{antecedent: {ind}}): log_prob for antecedent in index_keys - for antecedent in ( - index_keys - ) for ind, log_prob in zip( [necessity_world, sufficiency_world], [necessity_log_probs, sufficiency_log_probs], diff --git a/docs/source/test_notebook.ipynb b/docs/source/test_notebook.ipynb index 88c1bb2c..fc23906c 100644 --- a/docs/source/test_notebook.ipynb +++ b/docs/source/test_notebook.ipynb @@ -24,15 +24,15 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "consequent tensor([0., 0., 0.])\n", - "consequent tensor([[[[[1., 1., 0.]]]],\n", + "consequent tensor([1., 1., 1.])\n", + "consequent tensor([[[[[1., 0., 0.]]]],\n", "\n", "\n", "\n", @@ -41,9 +41,18 @@ "\n", "\n", " [[[[1., 1., 1.]]]]])\n", - "consequent tensor([0., 1., 0.])\n", - "tensor([0., 1., 0.])\n", - "tensor([[[[[-inf, 0., -inf]]]]])\n" + "consequent tensor([0., 0., 1.])\n", + "testing with tensor([1., 1., 1.])\n", + "tensor([0., 0., 1.])\n", + "log_factor tensor([[[[[0., 0., 0.]]]],\n", + "\n", + "\n", + "\n", + " [[[[0., 0., -inf]]]],\n", + "\n", + "\n", + "\n", + " [[[[-inf, -inf, 0.]]]]])\n" ] } ], @@ -137,23 +146,22 @@ " \n", "\n", "print(X_values_rev)\n", - "print(trace_reverse.trace.nodes[\"__cause____consequent_X\"][\"fn\"].log_factor)\n", - "\n", + "print(\"log_factor\", trace_reverse.trace.nodes[\"__cause____consequent_X\"][\"fn\"].log_factor)\n", "\n", "\n", - "# assert torch.all(trace_connected.trace.nodes[\"__cause____consequent_Y\"][\"fn\"].log_factor[0,0,0,0,:] == 0)" + "assert torch.all(trace_reverse.trace.nodes[\"__cause____consequent_X\"][\"fn\"].log_factor.sum().exp() == 0)" ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "consequent tensor([[[[[1., 1., 1.]]]],\n", + "consequent tensor([[[[[1., 0., 0.]]]],\n", "\n", "\n", "\n", @@ -163,31 +171,6 @@ "\n", " [[[[1., 1., 1.]]]]])\n" ] - }, - { - "ename": "KeyboardInterrupt", - "evalue": "", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[4], line 13\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m pyro\u001b[38;5;241m.\u001b[39mplate(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124msample\u001b[39m\u001b[38;5;124m\"\u001b[39m, size\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m3\u001b[39m):\n\u001b[1;32m 12\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m pyro\u001b[38;5;241m.\u001b[39mpoutine\u001b[38;5;241m.\u001b[39mtrace() \u001b[38;5;28;01mas\u001b[39;00m trace_connected:\n\u001b[0;32m---> 13\u001b[0m \u001b[43mmodel_connected\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n", - "Cell \u001b[0;32mIn[2], line 9\u001b[0m, in \u001b[0;36mmodel_connected\u001b[0;34m()\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mmodel_connected\u001b[39m():\n\u001b[1;32m 8\u001b[0m X \u001b[38;5;241m=\u001b[39m pyro\u001b[38;5;241m.\u001b[39msample(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mX\u001b[39m\u001b[38;5;124m\"\u001b[39m, dist\u001b[38;5;241m.\u001b[39mBernoulli(\u001b[38;5;241m0.5\u001b[39m))\n\u001b[0;32m----> 9\u001b[0m Y \u001b[38;5;241m=\u001b[39m \u001b[43mpyro\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msample\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mY\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdist\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mBernoulli\u001b[49m\u001b[43m(\u001b[49m\u001b[43mX\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/miniconda3/envs/chirho/lib/python3.10/site-packages/pyro/primitives.py:189\u001b[0m, in \u001b[0;36msample\u001b[0;34m(name, fn, obs, obs_mask, infer, *args, **kwargs)\u001b[0m\n\u001b[1;32m 172\u001b[0m msg \u001b[38;5;241m=\u001b[39m Message(\n\u001b[1;32m 173\u001b[0m \u001b[38;5;28mtype\u001b[39m\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124msample\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 174\u001b[0m name\u001b[38;5;241m=\u001b[39mname,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 186\u001b[0m continuation\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[1;32m 187\u001b[0m )\n\u001b[1;32m 188\u001b[0m \u001b[38;5;66;03m# apply the stack and return its return value\u001b[39;00m\n\u001b[0;32m--> 189\u001b[0m \u001b[43mapply_stack\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmsg\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 190\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m msg[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mvalue\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;66;03m# type narrowing guaranteed by apply_stack\u001b[39;00m\n\u001b[1;32m 191\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m msg[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mvalue\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n", - "File \u001b[0;32m~/miniconda3/envs/chirho/lib/python3.10/site-packages/pyro/poutine/runtime.py:386\u001b[0m, in \u001b[0;36mapply_stack\u001b[0;34m(initial_msg)\u001b[0m\n\u001b[1;32m 383\u001b[0m default_process_message(msg)\n\u001b[1;32m 385\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m frame \u001b[38;5;129;01min\u001b[39;00m stack[\u001b[38;5;241m-\u001b[39mpointer:]:\n\u001b[0;32m--> 386\u001b[0m \u001b[43mframe\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_postprocess_message\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmsg\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 388\u001b[0m cont \u001b[38;5;241m=\u001b[39m msg[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mcontinuation\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n\u001b[1;32m 389\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m cont \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n", - "File \u001b[0;32m~/miniconda3/envs/chirho/lib/python3.10/site-packages/pyro/poutine/messenger.py:194\u001b[0m, in \u001b[0;36mMessenger._postprocess_message\u001b[0;34m(self, msg)\u001b[0m\n\u001b[1;32m 192\u001b[0m method \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mgetattr\u001b[39m(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m_pyro_post_\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mmsg[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtype\u001b[39m\u001b[38;5;124m'\u001b[39m]\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28;01mNone\u001b[39;00m)\n\u001b[1;32m 193\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m method \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m--> 194\u001b[0m \u001b[43mmethod\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmsg\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/s78projects/chirho/chirho/observational/handlers/condition.py:56\u001b[0m, in \u001b[0;36mFactors._pyro_post_sample\u001b[0;34m(self, msg)\u001b[0m\n\u001b[1;32m 53\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m:\n\u001b[1;32m 54\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m\n\u001b[0;32m---> 56\u001b[0m pyro\u001b[38;5;241m.\u001b[39mfactor(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mprefix\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;132;01m{\u001b[39;00mmsg[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mname\u001b[39m\u001b[38;5;124m'\u001b[39m]\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m, \u001b[43mfactor\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmsg\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mvalue\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m)\u001b[49m)\n", - "File \u001b[0;32m~/s78projects/chirho/chirho/explainable/handlers/components.py:311\u001b[0m, in \u001b[0;36mconsequent_eq_neq.._consequent_eq_neq\u001b[0;34m(consequent)\u001b[0m\n\u001b[1;32m 307\u001b[0m FACTUAL_NEC_SUFF \u001b[38;5;241m=\u001b[39m torch\u001b[38;5;241m.\u001b[39mzeros_like(sufficiency_log_probs)\n\u001b[1;32m 309\u001b[0m index_keys \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mset\u001b[39m(antecedents) \u001b[38;5;241m&\u001b[39m \u001b[38;5;28mset\u001b[39m(indices_of(consequent, event_dim\u001b[38;5;241m=\u001b[39msupport\u001b[38;5;241m.\u001b[39mevent_dim)) \u001b[38;5;28;01mif\u001b[39;00m indices_of(consequent, event_dim\u001b[38;5;241m=\u001b[39msupport\u001b[38;5;241m.\u001b[39mevent_dim) \u001b[38;5;28;01melse\u001b[39;00m \u001b[38;5;28mset\u001b[39m(antecedents)\n\u001b[0;32m--> 311\u001b[0m nec_suff_log_probs_partitioned \u001b[38;5;241m=\u001b[39m {\n\u001b[1;32m 312\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m{\n\u001b[1;32m 313\u001b[0m factual_indices: FACTUAL_NEC_SUFF,\n\u001b[1;32m 314\u001b[0m },\n\u001b[1;32m 315\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m{\n\u001b[1;32m 316\u001b[0m IndexSet(\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m{antecedent: {ind}}): log_prob\n\u001b[1;32m 317\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m antecedent \u001b[38;5;129;01min\u001b[39;00m index_keys\n\u001b[1;32m 318\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m antecedent \u001b[38;5;129;01min\u001b[39;00m (\n\u001b[1;32m 319\u001b[0m index_keys\n\u001b[1;32m 320\u001b[0m )\n\u001b[1;32m 321\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m ind, log_prob \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mzip\u001b[39m(\n\u001b[1;32m 322\u001b[0m [necessity_world, sufficiency_world],\n\u001b[1;32m 323\u001b[0m [necessity_log_probs, sufficiency_log_probs],\n\u001b[1;32m 324\u001b[0m )\n\u001b[1;32m 325\u001b[0m },\n\u001b[1;32m 326\u001b[0m }\n\u001b[1;32m 328\u001b[0m \u001b[38;5;66;03m# nec_suff_log_probs_partitioned = {\u001b[39;00m\n\u001b[1;32m 329\u001b[0m \u001b[38;5;66;03m# **{\u001b[39;00m\n\u001b[1;32m 330\u001b[0m \u001b[38;5;66;03m# factual_indices: FACTUAL_NEC_SUFF,\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 342\u001b[0m \u001b[38;5;66;03m# },\u001b[39;00m\n\u001b[1;32m 343\u001b[0m \u001b[38;5;66;03m# }\u001b[39;00m\n\u001b[1;32m 345\u001b[0m new_value \u001b[38;5;241m=\u001b[39m scatter_n(\n\u001b[1;32m 346\u001b[0m nec_suff_log_probs_partitioned,\n\u001b[1;32m 347\u001b[0m event_dim\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m0\u001b[39m,\n\u001b[1;32m 348\u001b[0m )\n", - "File \u001b[0;32m~/s78projects/chirho/chirho/explainable/handlers/components.py:311\u001b[0m, in \u001b[0;36mconsequent_eq_neq.._consequent_eq_neq\u001b[0;34m(consequent)\u001b[0m\n\u001b[1;32m 307\u001b[0m FACTUAL_NEC_SUFF \u001b[38;5;241m=\u001b[39m torch\u001b[38;5;241m.\u001b[39mzeros_like(sufficiency_log_probs)\n\u001b[1;32m 309\u001b[0m index_keys \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mset\u001b[39m(antecedents) \u001b[38;5;241m&\u001b[39m \u001b[38;5;28mset\u001b[39m(indices_of(consequent, event_dim\u001b[38;5;241m=\u001b[39msupport\u001b[38;5;241m.\u001b[39mevent_dim)) \u001b[38;5;28;01mif\u001b[39;00m indices_of(consequent, event_dim\u001b[38;5;241m=\u001b[39msupport\u001b[38;5;241m.\u001b[39mevent_dim) \u001b[38;5;28;01melse\u001b[39;00m \u001b[38;5;28mset\u001b[39m(antecedents)\n\u001b[0;32m--> 311\u001b[0m nec_suff_log_probs_partitioned \u001b[38;5;241m=\u001b[39m {\n\u001b[1;32m 312\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m{\n\u001b[1;32m 313\u001b[0m factual_indices: FACTUAL_NEC_SUFF,\n\u001b[1;32m 314\u001b[0m },\n\u001b[1;32m 315\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m{\n\u001b[1;32m 316\u001b[0m IndexSet(\u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m{antecedent: {ind}}): log_prob\n\u001b[1;32m 317\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m antecedent \u001b[38;5;129;01min\u001b[39;00m index_keys\n\u001b[1;32m 318\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m antecedent \u001b[38;5;129;01min\u001b[39;00m (\n\u001b[1;32m 319\u001b[0m index_keys\n\u001b[1;32m 320\u001b[0m )\n\u001b[1;32m 321\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m ind, log_prob \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mzip\u001b[39m(\n\u001b[1;32m 322\u001b[0m [necessity_world, sufficiency_world],\n\u001b[1;32m 323\u001b[0m [necessity_log_probs, sufficiency_log_probs],\n\u001b[1;32m 324\u001b[0m )\n\u001b[1;32m 325\u001b[0m },\n\u001b[1;32m 326\u001b[0m }\n\u001b[1;32m 328\u001b[0m \u001b[38;5;66;03m# nec_suff_log_probs_partitioned = {\u001b[39;00m\n\u001b[1;32m 329\u001b[0m \u001b[38;5;66;03m# **{\u001b[39;00m\n\u001b[1;32m 330\u001b[0m \u001b[38;5;66;03m# factual_indices: FACTUAL_NEC_SUFF,\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 342\u001b[0m \u001b[38;5;66;03m# },\u001b[39;00m\n\u001b[1;32m 343\u001b[0m \u001b[38;5;66;03m# }\u001b[39;00m\n\u001b[1;32m 345\u001b[0m new_value \u001b[38;5;241m=\u001b[39m scatter_n(\n\u001b[1;32m 346\u001b[0m nec_suff_log_probs_partitioned,\n\u001b[1;32m 347\u001b[0m event_dim\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m0\u001b[39m,\n\u001b[1;32m 348\u001b[0m )\n", - "File \u001b[0;32m_pydevd_bundle/pydevd_cython.pyx:1457\u001b[0m, in \u001b[0;36m_pydevd_bundle.pydevd_cython.SafeCallWrapper.__call__\u001b[0;34m()\u001b[0m\n", - "File \u001b[0;32m_pydevd_bundle/pydevd_cython.pyx:701\u001b[0m, in \u001b[0;36m_pydevd_bundle.pydevd_cython.PyDBFrame.trace_dispatch\u001b[0;34m()\u001b[0m\n", - "File \u001b[0;32m_pydevd_bundle/pydevd_cython.pyx:1152\u001b[0m, in \u001b[0;36m_pydevd_bundle.pydevd_cython.PyDBFrame.trace_dispatch\u001b[0;34m()\u001b[0m\n", - "File \u001b[0;32m_pydevd_bundle/pydevd_cython.pyx:1135\u001b[0m, in \u001b[0;36m_pydevd_bundle.pydevd_cython.PyDBFrame.trace_dispatch\u001b[0;34m()\u001b[0m\n", - "File \u001b[0;32m_pydevd_bundle/pydevd_cython.pyx:312\u001b[0m, in \u001b[0;36m_pydevd_bundle.pydevd_cython.PyDBFrame.do_wait_suspend\u001b[0;34m()\u001b[0m\n", - "File \u001b[0;32m~/.local/lib/python3.10/site-packages/debugpy/_vendored/pydevd/pydevd.py:2070\u001b[0m, in \u001b[0;36mPyDB.do_wait_suspend\u001b[0;34m(self, thread, frame, event, arg, exception_type)\u001b[0m\n\u001b[1;32m 2067\u001b[0m from_this_thread\u001b[38;5;241m.\u001b[39mappend(frame_custom_thread_id)\n\u001b[1;32m 2069\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_threads_suspended_single_notification\u001b[38;5;241m.\u001b[39mnotify_thread_suspended(thread_id, thread, stop_reason):\n\u001b[0;32m-> 2070\u001b[0m keep_suspended \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_do_wait_suspend\u001b[49m\u001b[43m(\u001b[49m\u001b[43mthread\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mframe\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mevent\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43marg\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43msuspend_type\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfrom_this_thread\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mframes_tracker\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 2072\u001b[0m frames_list \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 2074\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m keep_suspended:\n\u001b[1;32m 2075\u001b[0m \u001b[38;5;66;03m# This means that we should pause again after a set next statement.\u001b[39;00m\n", - "File \u001b[0;32m~/.local/lib/python3.10/site-packages/debugpy/_vendored/pydevd/pydevd.py:2106\u001b[0m, in \u001b[0;36mPyDB._do_wait_suspend\u001b[0;34m(self, thread, frame, event, arg, suspend_type, from_this_thread, frames_tracker)\u001b[0m\n\u001b[1;32m 2103\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_call_input_hook()\n\u001b[1;32m 2105\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mprocess_internal_commands()\n\u001b[0;32m-> 2106\u001b[0m \u001b[43mtime\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msleep\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m0.01\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 2108\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcancel_async_evaluation(get_current_thread_id(thread), \u001b[38;5;28mstr\u001b[39m(\u001b[38;5;28mid\u001b[39m(frame)))\n\u001b[1;32m 2110\u001b[0m \u001b[38;5;66;03m# process any stepping instructions\u001b[39;00m\n", - "\u001b[0;31mKeyboardInterrupt\u001b[0m: " - ] } ], "source": [ @@ -208,14 +191,14 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "consequent tensor([1., 0., 1.])\n" + "consequent tensor([1., 1., 0.])\n" ] } ], @@ -233,7 +216,7 @@ " with pyro.plate(\"sample\", size=3):\n", " with pyro.poutine.trace() as trace_reverse:\n", " model_connected()\n", - " " + "\n" ] }, { From 6ee8651e8b4b72b190000e1d28f45b0de2460a31 Mon Sep 17 00:00:00 2001 From: PoorvaGarg Date: Fri, 2 Aug 2024 13:52:12 -0400 Subject: [PATCH 05/53] debug consequen_eq_neq --- chirho/explainable/handlers/components.py | 2 +- docs/source/test_notebook.ipynb | 196 ++++++++++++------ tests/explainable/test_handlers_components.py | 4 +- .../explainable/test_handlers_explanation.py | 56 ++++- 4 files changed, 185 insertions(+), 73 deletions(-) diff --git a/chirho/explainable/handlers/components.py b/chirho/explainable/handlers/components.py index a31e2db8..a8ae00b8 100644 --- a/chirho/explainable/handlers/components.py +++ b/chirho/explainable/handlers/components.py @@ -233,7 +233,7 @@ def consequent_eq_neq( def _consequent_eq_neq(consequent: T) -> torch.Tensor: - print("consequent", consequent) + # print("consequent", consequent) factual_indices = IndexSet( **{ name: ind diff --git a/docs/source/test_notebook.ipynb b/docs/source/test_notebook.ipynb index fc23906c..85496a95 100644 --- a/docs/source/test_notebook.ipynb +++ b/docs/source/test_notebook.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": 26, "metadata": {}, "outputs": [], "source": [ @@ -14,9 +14,11 @@ "import torch\n", "\n", "from chirho.counterfactual.handlers.counterfactual import MultiWorldCounterfactual\n", - "from chirho.explainable.handlers.components import undo_split\n", + "from chirho.explainable.handlers.components import undo_split, consequent_eq_neq, sufficiency_intervention\n", "from chirho.explainable.handlers.explanation import SearchForExplanation, SplitSubsets\n", "from chirho.explainable.handlers import ExtractSupports\n", + "from chirho.observational.handlers.condition import Factors\n", + "from chirho.interventional.handlers import do\n", "from chirho.explainable.handlers.preemptions import Preemptions\n", "from chirho.indexed.ops import IndexSet, gather\n", "from chirho.observational.handlers.condition import condition" @@ -24,15 +26,15 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "consequent tensor([1., 1., 1.])\n", - "consequent tensor([[[[[1., 0., 0.]]]],\n", + "consequent tensor([1., 1., 0.])\n", + "consequent tensor([[[[[0., 0., 0.]]]],\n", "\n", "\n", "\n", @@ -41,18 +43,9 @@ "\n", "\n", " [[[[1., 1., 1.]]]]])\n", - "consequent tensor([0., 0., 1.])\n", - "testing with tensor([1., 1., 1.])\n", - "tensor([0., 0., 1.])\n", - "log_factor tensor([[[[[0., 0., 0.]]]],\n", - "\n", - "\n", - "\n", - " [[[[0., 0., -inf]]]],\n", - "\n", - "\n", - "\n", - " [[[[-inf, -inf, 0.]]]]])\n" + "consequent tensor([1., 1., 0.])\n", + "testing with tensor([1., 1., 0.])\n", + "testing with tensor([1., 1., 0.])\n" ] } ], @@ -67,8 +60,6 @@ " X = pyro.sample(\"X\", dist.Bernoulli(0.5))\n", " Y = pyro.sample(\"Y\", dist.Bernoulli(X))\n", "\n", - "\n", - "\n", "with ExtractSupports() as supports_independent:\n", " model_independent()\n", "\n", @@ -122,101 +113,182 @@ "trace_independent.trace.compute_log_prob\n", "trace_reverse.trace.compute_log_prob\n", "\n", - "#print(trace_independent.trace.nodes[\"__cause____consequent_Y\"][\"fn\"].log_factor)\n", - "#print(trace_independent.trace.nodes[\"Y\"][\"value\"])\n", - "\n", "Y_values_ind = trace_independent.trace.nodes[\"Y\"][\"value\"]\n", - "Y_values_con = trace_connected.trace.nodes[\"Y\"][\"value\"]\n", - "X_values_rev = trace_reverse.trace.nodes[\"X\"][\"value\"]\n", - "\n", "\n", "if torch.any(Y_values_ind == 1.):\n", " print(\"testing with \", Y_values_ind)\n", " assert trace_independent.trace.nodes[\"__cause____consequent_Y\"][\"fn\"].log_factor[1,0,0,0,:].sum().exp() == 0.\n", "else:\n", " assert trace_independent.trace.nodes[\"__cause____consequent_Y\"][\"fn\"].log_factor[1,0,0,0,:].sum().exp() == 1.\n", - " \n", "\n", "if torch.any(Y_values_ind == 0.):\n", " assert trace_independent.trace.nodes[\"__cause____consequent_Y\"][\"fn\"].log_factor[2,0,0,0,:].sum().exp() == 0.\n", "else:\n", " assert trace_independent.trace.nodes[\"__cause____consequent_Y\"][\"fn\"].log_factor[2,0,0,0,:].sum().exp() == 1.\n", "\n", + "Y_values_con = trace_connected.trace.nodes[\"Y\"][\"value\"]\n", "assert torch.all(trace_connected.trace.nodes[\"__cause____consequent_Y\"][\"fn\"].log_factor.sum() == 0)\n", " \n", + "X_values_rev = trace_reverse.trace.nodes[\"X\"][\"value\"]\n", + "if torch.any(X_values_rev == 1.):\n", + " print(\"testing with \", Y_values_ind)\n", + " assert trace_reverse.trace.nodes[\"__cause____consequent_X\"][\"fn\"].log_factor[1,0,0,0,:].sum().exp() == 0.\n", + "else:\n", + " assert trace_reverse.trace.nodes[\"__cause____consequent_X\"][\"fn\"].log_factor[1,0,0,0,:].sum().exp() == 1.\n", "\n", - "print(X_values_rev)\n", - "print(\"log_factor\", trace_reverse.trace.nodes[\"__cause____consequent_X\"][\"fn\"].log_factor)\n", - "\n", + "if torch.any(X_values_rev == 0.):\n", + " assert trace_reverse.trace.nodes[\"__cause____consequent_X\"][\"fn\"].log_factor[2,0,0,0,:].sum().exp() == 0.\n", + "else:\n", + " assert trace_reverse.trace.nodes[\"__cause____consequent_X\"][\"fn\"].log_factor[2,0,0,0,:].sum().exp() == 1.\n", "\n", "assert torch.all(trace_reverse.trace.nodes[\"__cause____consequent_X\"][\"fn\"].log_factor.sum().exp() == 0)" ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "consequent tensor([[[[[1., 0., 0.]]]],\n", - "\n", - "\n", - "\n", - " [[[[0., 0., 0.]]]],\n", - "\n", - "\n", - "\n", - " [[[[1., 1., 1.]]]]])\n" + "consequent tensor([1., 0., 1.])\n" ] + }, + { + "data": { + "text/plain": [ + "tensor([[[[[0., 0., 0.]]]],\n", + "\n", + "\n", + "\n", + " [[[[-inf, 0., -inf]]]],\n", + "\n", + "\n", + "\n", + " [[[[0., -inf, 0.]]]]])" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ - "with MultiWorldCounterfactual() as mwc_connected: \n", + "def model_triple():\n", + " X = pyro.sample(\"X\", dist.Bernoulli(0.5))\n", + " Y = pyro.sample(\"Y\", dist.Bernoulli(X))\n", + " Z = pyro.sample(\"Z\", dist.Bernoulli(Y))\n", + "\n", + "with ExtractSupports() as supports_triple:\n", + " model_triple()\n", + "\n", + "with MultiWorldCounterfactual() as mwc_triple: \n", " with SearchForExplanation(\n", - " supports=supports_connected.supports,\n", - " antecedents={\"X\": torch.tensor(1.0)},\n", - " consequents={\"Y\": torch.tensor(1.0)},\n", + " supports=supports_triple.supports,\n", + " antecedents={\"Z\": torch.tensor(1.0)},\n", + " consequents={\"X\": torch.tensor(1.0)},\n", " witnesses={},\n", - " alternatives={\"X\": torch.tensor(0.0)},\n", + " alternatives={\"Z\": torch.tensor(0.0)},\n", " antecedent_bias=-0.5,\n", " consequent_scale=0,\n", " ):\n", " with pyro.plate(\"sample\", size=3):\n", - " with pyro.poutine.trace() as trace_connected:\n", - " model_connected()" + " with pyro.poutine.trace() as trace_triple:\n", + " model_triple()\n", + "\n", + "trace_triple.trace.compute_log_prob\n", + "\n", + "\n", + "trace_triple.trace.nodes[\"X\"][\"value\"]\n", + "trace_triple.trace.nodes[\"__cause____consequent_X\"][\"fn\"].log_factor" ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 30, + "metadata": {}, + "outputs": [], + "source": [ + "event_shape = ()\n", + "plate_size = 3\n", + "\n", + "def test_consequent_eq_neq():\n", + " factors = {\n", + " \"consequent\": consequent_eq_neq(\n", + " support=constraints.independent(constraints.real, len(event_shape)),\n", + " proposed_consequent=torch.Tensor([0.1]), \n", + " antecedents=[\"w\"],\n", + " )\n", + " }\n", + "\n", + " @Factors(factors=factors)\n", + " @pyro.plate(\"data\", size=plate_size, dim=-1)\n", + " def model_ce():\n", + " w = pyro.sample(\n", + " \"w\", dist.Normal(0, 0.1).expand(event_shape).to_event(len(event_shape))\n", + " )\n", + " consequent = pyro.deterministic(\n", + " \"consequent\", w * 0.1, event_dim=len(event_shape)\n", + " )\n", + "\n", + " return consequent\n", + "\n", + " antecedents = {\n", + " \"w\": (\n", + " torch.tensor(0.1).expand(event_shape),\n", + " sufficiency_intervention(\n", + " constraints.independent(constraints.real, len(event_shape)), [\"w\"]\n", + " ),\n", + " )\n", + " }\n", + "\n", + " with MultiWorldCounterfactual() as mwc:\n", + " with do(actions=antecedents):\n", + " with pyro.poutine.trace() as tr:\n", + " model_ce()\n", + " # with pyro.poutine.trace() as tr:\n", + " # model_ce()\n", + "\n", + " tr.trace.compute_log_prob()\n", + " nd = tr.trace.nodes\n", + "\n", + " with mwc:\n", + " eq_neq_log_probs = gather(\n", + " nd[\"__factor_consequent\"][\"log_prob\"], IndexSet(**{\"w\": {1}})\n", + " )\n", + "\n", + " # this asserion no longer makes sense\n", + " # assert eq_neq_log_probs.sum() == 0 \n", + "\n", + " assert eq_neq_log_probs.sum() < 0 " + ] + }, + { + "cell_type": "code", + "execution_count": 28, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "consequent tensor([1., 1., 0.])\n" + "consequent tensor([[[[[ 0.0194, -0.0109, 0.0051]]]],\n", + "\n", + "\n", + "\n", + " [[[[ 0.0100, 0.0100, 0.0100]]]],\n", + "\n", + "\n", + "\n", + " [[[[ 0.0194, -0.0109, 0.0051]]]]])\n", + "consequent tensor([-0.0094, -0.0123, 0.0056])\n" ] } ], "source": [ - "with MultiWorldCounterfactual() as mwc_reverse: \n", - " with SearchForExplanation(\n", - " supports=supports_connected.supports,\n", - " antecedents={\"Y\": torch.tensor(1.0)},\n", - " consequents={\"X\": torch.tensor(1.0)},\n", - " witnesses={},\n", - " alternatives={\"Y\": torch.tensor(0.0)},\n", - " antecedent_bias=-0.5,\n", - " consequent_scale=0,\n", - " ):\n", - " with pyro.plate(\"sample\", size=3):\n", - " with pyro.poutine.trace() as trace_reverse:\n", - " model_connected()\n", - "\n" + "test_consequent_eq_neq()" ] }, { diff --git a/tests/explainable/test_handlers_components.py b/tests/explainable/test_handlers_components.py index f41dbd9c..0cc16f12 100644 --- a/tests/explainable/test_handlers_components.py +++ b/tests/explainable/test_handlers_components.py @@ -407,8 +407,8 @@ def model_ce(): with do(actions=antecedents): with pyro.poutine.trace() as tr: model_ce() - with pyro.poutine.trace() as tr: - model_ce() + # with pyro.poutine.trace() as tr: + # model_ce() tr.trace.compute_log_prob() nd = tr.trace.nodes diff --git a/tests/explainable/test_handlers_explanation.py b/tests/explainable/test_handlers_explanation.py index b8675421..89d067f0 100644 --- a/tests/explainable/test_handlers_explanation.py +++ b/tests/explainable/test_handlers_explanation.py @@ -8,7 +8,7 @@ from chirho.counterfactual.handlers.counterfactual import MultiWorldCounterfactual from chirho.explainable.handlers.components import undo_split from chirho.explainable.handlers.explanation import SearchForExplanation, SplitSubsets -from chirho.explainable.handlers import ExportSupports +from chirho.explainable.handlers import ExtractSupports from chirho.explainable.handlers.preemptions import Preemptions from chirho.indexed.ops import IndexSet, gather from chirho.observational.handlers.condition import condition @@ -317,7 +317,6 @@ def test_SplitSubsets_two_layers(): assert obs_bill_hits == 0.0 and int_bill_hits == 0.0 and int_bottle_shatters == 0.0 def test_edge_eq_neq(): - def model_independent(): X = pyro.sample("X", dist.Bernoulli(0.5)) Y = pyro.sample("Y", dist.Bernoulli(0.5)) @@ -360,12 +359,53 @@ def model_connected(): with pyro.poutine.trace() as trace_connected: model_connected() + with MultiWorldCounterfactual() as mwc_reverse: + with SearchForExplanation( + supports=supports_connected.supports, + antecedents={"Y": torch.tensor(1.0)}, + consequents={"X": torch.tensor(1.0)}, + witnesses={}, + alternatives={"Y": torch.tensor(0.0)}, + antecedent_bias=-0.5, + consequent_scale=0, + ): + with pyro.plate("sample", size=3): + with pyro.poutine.trace() as trace_reverse: + model_connected() + trace_connected.trace.compute_log_prob trace_independent.trace.compute_log_prob - - print(trace_independent.trace.nodes["__cause____consequent_Y"]["fn"].log_factor) - - assert trace_independent.trace.nodes["__cause____consequent_Y"]["fn"].log_factor[1,0,0,0,:].sum() <0 - assert torch.all(trace_independent.trace.nodes["__cause____consequent_Y"]["fn"].log_factor[2,0,0,0,:] == 0) - assert torch.all(trace_connected.trace.nodes["__cause____consequent_Y"]["fn"].log_factor[0,0,0,0,:] == 0) + trace_reverse.trace.compute_log_prob + + Y_values_ind = trace_independent.trace.nodes["Y"]["value"] + + if torch.any(Y_values_ind == 1.): + print("testing with ", Y_values_ind) + assert trace_independent.trace.nodes["__cause____consequent_Y"]["fn"].log_factor[1,0,0,0,:].sum().exp() == 0. + else: + assert trace_independent.trace.nodes["__cause____consequent_Y"]["fn"].log_factor[1,0,0,0,:].sum().exp() == 1. + + assert torch.all(trace_independent.trace.nodes["__cause____consequent_Y"]["fn"].log_factor.sum().exp() == 0) + + if torch.any(Y_values_ind == 0.): + assert trace_independent.trace.nodes["__cause____consequent_Y"]["fn"].log_factor[2,0,0,0,:].sum().exp() == 0. + else: + assert trace_independent.trace.nodes["__cause____consequent_Y"]["fn"].log_factor[2,0,0,0,:].sum().exp() == 1. + + Y_values_con = trace_connected.trace.nodes["Y"]["value"] + assert torch.all(trace_connected.trace.nodes["__cause____consequent_Y"]["fn"].log_factor.sum() == 0) + + X_values_rev = trace_reverse.trace.nodes["X"]["value"] + if torch.any(X_values_rev == 1.): + print("testing with ", Y_values_ind) + assert trace_reverse.trace.nodes["__cause____consequent_X"]["fn"].log_factor[1,0,0,0,:].sum().exp() == 0. + else: + assert trace_reverse.trace.nodes["__cause____consequent_X"]["fn"].log_factor[1,0,0,0,:].sum().exp() == 1. + + if torch.any(X_values_rev == 0.): + assert trace_reverse.trace.nodes["__cause____consequent_X"]["fn"].log_factor[2,0,0,0,:].sum().exp() == 0. + else: + assert trace_reverse.trace.nodes["__cause____consequent_X"]["fn"].log_factor[2,0,0,0,:].sum().exp() == 1. + + assert torch.all(trace_reverse.trace.nodes["__cause____consequent_X"]["fn"].log_factor.sum().exp() == 0) From 513ec6ee7693f693005caab3e8fb88a2f6ccf0d4 Mon Sep 17 00:00:00 2001 From: rfl-urbaniak Date: Fri, 2 Aug 2024 14:25:07 -0400 Subject: [PATCH 06/53] fixed test_consequent_eq_neq --- docs/source/test_notebook.ipynb | 85 +++++++++++++++++++-------------- 1 file changed, 48 insertions(+), 37 deletions(-) diff --git a/docs/source/test_notebook.ipynb b/docs/source/test_notebook.ipynb index 85496a95..08ebae7a 100644 --- a/docs/source/test_notebook.ipynb +++ b/docs/source/test_notebook.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 26, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -26,24 +26,13 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "consequent tensor([1., 1., 0.])\n", - "consequent tensor([[[[[0., 0., 0.]]]],\n", - "\n", - "\n", - "\n", - " [[[[0., 0., 0.]]]],\n", - "\n", - "\n", - "\n", - " [[[[1., 1., 1.]]]]])\n", - "consequent tensor([1., 1., 0.])\n", "testing with tensor([1., 1., 0.])\n", "testing with tensor([1., 1., 0.])\n" ] @@ -146,16 +135,9 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 3, "metadata": {}, "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "consequent tensor([1., 0., 1.])\n" - ] - }, { "data": { "text/plain": [ @@ -163,14 +145,14 @@ "\n", "\n", "\n", - " [[[[-inf, 0., -inf]]]],\n", + " [[[[-inf, -inf, -inf]]]],\n", "\n", "\n", "\n", - " [[[[0., -inf, 0.]]]]])" + " [[[[0., 0., 0.]]]]])" ] }, - "execution_count": 22, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -207,7 +189,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 25, "metadata": {}, "outputs": [], "source": [ @@ -218,7 +200,7 @@ " factors = {\n", " \"consequent\": consequent_eq_neq(\n", " support=constraints.independent(constraints.real, len(event_shape)),\n", - " proposed_consequent=torch.Tensor([0.1]), \n", + " proposed_consequent=torch.Tensor([0.01]), \n", " antecedents=[\"w\"],\n", " )\n", " }\n", @@ -254,27 +236,48 @@ " tr.trace.compute_log_prob()\n", " nd = tr.trace.nodes\n", "\n", - " with mwc:\n", - " eq_neq_log_probs = gather(\n", - " nd[\"__factor_consequent\"][\"log_prob\"], IndexSet(**{\"w\": {1}})\n", - " )\n", "\n", - " # this asserion no longer makes sense\n", - " # assert eq_neq_log_probs.sum() == 0 \n", + " with mwc:\n", + " eq_neq_log_probs_fact = gather(\n", + " nd[\"__factor_consequent\"][\"log_prob\"], IndexSet(**{\"w\": {0}})\n", + " )\n", "\n", - " assert eq_neq_log_probs.sum() < 0 " + " eq_neq_log_probs_nec = gather(\n", + " nd[\"__factor_consequent\"][\"log_prob\"], IndexSet(**{\"w\": {1}})\n", + " )\n", + " \n", + " consequent_suff = gather(\n", + " nd[\"consequent\"][\"value\"], IndexSet(**{\"w\": {2}})\n", + " )\n", + " eq_neq_log_probs_suff = gather(\n", + " nd[\"__factor_consequent\"][\"log_prob\"], IndexSet(**{\"w\": {2}})\n", + " )\n", + " \n", + " assert torch.equal(eq_neq_log_probs_suff, dist.Normal(0.0, .1).log_prob(consequent_suff - torch.tensor(.01)))\n", + " assert eq_neq_log_probs_nec.sum().exp() == 0 \n" ] }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 26, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "consequent tensor([[[[[ 0.0194, -0.0109, 0.0051]]]],\n", + "odict_keys(['w', 'consequent', '__factor_consequent'])\n", + "w tensor([[[[[ 0.0679, -0.0206, -0.1378]]]],\n", + "\n", + "\n", + "\n", + " [[[[ 0.1000, 0.1000, 0.1000]]]],\n", + "\n", + "\n", + "\n", + " [[[[ 0.0679, -0.0206, -0.1378]]]]])\n", + "antecedent {'w': (tensor(0.1000), ._sufficiency_intervention at 0x7fa24de345e0>)}\n", + "consequent tensor([[[[[ 0.0068, -0.0021, -0.0138]]]],\n", "\n", "\n", "\n", @@ -282,8 +285,16 @@ "\n", "\n", "\n", - " [[[[ 0.0194, -0.0109, 0.0051]]]]])\n", - "consequent tensor([-0.0094, -0.0123, 0.0056])\n" + " [[[[ 0.0068, -0.0021, -0.0138]]]]])\n", + "log_prob tensor([[[[[0.0000, 0.0000, 0.0000]]]],\n", + "\n", + "\n", + "\n", + " [[[[ -inf, -inf, -inf]]]],\n", + "\n", + "\n", + "\n", + " [[[[1.3831, 1.3764, 1.3554]]]]])\n" ] } ], From ce96b9f83a9885330fe650e61dc2612a5d1baf02 Mon Sep 17 00:00:00 2001 From: rfl-urbaniak Date: Fri, 2 Aug 2024 15:29:13 -0400 Subject: [PATCH 07/53] fixed the test with dimensions --- docs/source/test_notebook.ipynb | 274 ++++++++++++++++++++++---------- 1 file changed, 187 insertions(+), 87 deletions(-) diff --git a/docs/source/test_notebook.ipynb b/docs/source/test_notebook.ipynb index 08ebae7a..f17c2640 100644 --- a/docs/source/test_notebook.ipynb +++ b/docs/source/test_notebook.ipynb @@ -21,7 +21,8 @@ "from chirho.interventional.handlers import do\n", "from chirho.explainable.handlers.preemptions import Preemptions\n", "from chirho.indexed.ops import IndexSet, gather\n", - "from chirho.observational.handlers.condition import condition" + "from chirho.observational.handlers.condition import condition\n", + "from chirho.indexed.ops import indices_of" ] }, { @@ -33,8 +34,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "testing with tensor([1., 1., 0.])\n", - "testing with tensor([1., 1., 0.])\n" + "testing with tensor([0., 1., 0.])\n", + "testing with tensor([0., 1., 0.])\n" ] } ], @@ -145,11 +146,11 @@ "\n", "\n", "\n", - " [[[[-inf, -inf, -inf]]]],\n", + " [[[[-inf, 0., -inf]]]],\n", "\n", "\n", "\n", - " [[[[0., 0., 0.]]]]])" + " [[[[0., -inf, 0.]]]]])" ] }, "execution_count": 3, @@ -189,117 +190,216 @@ }, { "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [], - "source": [ - "event_shape = ()\n", - "plate_size = 3\n", - "\n", - "def test_consequent_eq_neq():\n", - " factors = {\n", - " \"consequent\": consequent_eq_neq(\n", - " support=constraints.independent(constraints.real, len(event_shape)),\n", - " proposed_consequent=torch.Tensor([0.01]), \n", - " antecedents=[\"w\"],\n", - " )\n", - " }\n", - "\n", - " @Factors(factors=factors)\n", - " @pyro.plate(\"data\", size=plate_size, dim=-1)\n", - " def model_ce():\n", - " w = pyro.sample(\n", - " \"w\", dist.Normal(0, 0.1).expand(event_shape).to_event(len(event_shape))\n", - " )\n", - " consequent = pyro.deterministic(\n", - " \"consequent\", w * 0.1, event_dim=len(event_shape)\n", - " )\n", - "\n", - " return consequent\n", - "\n", - " antecedents = {\n", - " \"w\": (\n", - " torch.tensor(0.1).expand(event_shape),\n", - " sufficiency_intervention(\n", - " constraints.independent(constraints.real, len(event_shape)), [\"w\"]\n", - " ),\n", - " )\n", - " }\n", - "\n", - " with MultiWorldCounterfactual() as mwc:\n", - " with do(actions=antecedents):\n", - " with pyro.poutine.trace() as tr:\n", - " model_ce()\n", - " # with pyro.poutine.trace() as tr:\n", - " # model_ce()\n", - "\n", - " tr.trace.compute_log_prob()\n", - " nd = tr.trace.nodes\n", - "\n", - "\n", - " with mwc:\n", - " eq_neq_log_probs_fact = gather(\n", - " nd[\"__factor_consequent\"][\"log_prob\"], IndexSet(**{\"w\": {0}})\n", - " )\n", - "\n", - " eq_neq_log_probs_nec = gather(\n", - " nd[\"__factor_consequent\"][\"log_prob\"], IndexSet(**{\"w\": {1}})\n", - " )\n", - " \n", - " consequent_suff = gather(\n", - " nd[\"consequent\"][\"value\"], IndexSet(**{\"w\": {2}})\n", - " )\n", - " eq_neq_log_probs_suff = gather(\n", - " nd[\"__factor_consequent\"][\"log_prob\"], IndexSet(**{\"w\": {2}})\n", - " )\n", - " \n", - " assert torch.equal(eq_neq_log_probs_suff, dist.Normal(0.0, .1).log_prob(consequent_suff - torch.tensor(.01)))\n", - " assert eq_neq_log_probs_nec.sum().exp() == 0 \n" - ] - }, - { - "cell_type": "code", - "execution_count": 26, + "execution_count": 110, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ + "w torch.Size([3, 4, 1, 1, 3]) c torch.Size([3, 4, 1, 1, 3])\n", "odict_keys(['w', 'consequent', '__factor_consequent'])\n", - "w tensor([[[[[ 0.0679, -0.0206, -0.1378]]]],\n", + "IndexSet({'w': {0, 1, 2}})\n", + "IndexSet({'w': {0, 1, 2}})\n", + "IndexSet({'w': {0, 1, 2}})\n", + "tensor([[[[[0.0000, 0.0000, 0.0000]]],\n", + "\n", + "\n", + " [[[0.0000, 0.0000, 0.0000]]],\n", + "\n", + "\n", + " [[[0.0000, 0.0000, 0.0000]]],\n", "\n", "\n", + " [[[0.0000, 0.0000, 0.0000]]]],\n", "\n", - " [[[[ 0.1000, 0.1000, 0.1000]]]],\n", "\n", "\n", + " [[[[ -inf, -inf, -inf]]],\n", "\n", - " [[[[ 0.0679, -0.0206, -0.1378]]]]])\n", - "antecedent {'w': (tensor(0.1000), ._sufficiency_intervention at 0x7fa24de345e0>)}\n", - "consequent tensor([[[[[ 0.0068, -0.0021, -0.0138]]]],\n", "\n", + " [[[ -inf, -inf, -inf]]],\n", "\n", "\n", - " [[[[ 0.0100, 0.0100, 0.0100]]]],\n", + " [[[ -inf, -inf, -inf]]],\n", "\n", "\n", + " [[[ -inf, -inf, -inf]]]],\n", "\n", - " [[[[ 0.0068, -0.0021, -0.0138]]]]])\n", - "log_prob tensor([[[[[0.0000, 0.0000, 0.0000]]]],\n", "\n", "\n", + " [[[[1.3789, 1.3721, 1.3781]]],\n", "\n", - " [[[[ -inf, -inf, -inf]]]],\n", "\n", + " [[[1.3789, 1.3718, 1.3780]]],\n", "\n", "\n", - " [[[[1.3831, 1.3764, 1.3554]]]]])\n" + " [[[1.3789, 1.3719, 1.3778]]],\n", + "\n", + "\n", + " [[[1.3788, 1.3719, 1.3779]]]]])\n", + "what's up IndexSet({'w': {0, 1, 2}})\n" ] } ], "source": [ - "test_consequent_eq_neq()" + "event_shape = (3,) #(3,)\n", + "plate_size = 4\n", + "\n", + "\n", + "factors = {\n", + " \"consequent\": consequent_eq_neq(\n", + " support=constraints.independent(constraints.real, 0),\n", + " proposed_consequent=torch.Tensor([0.01]), \n", + " antecedents=[\"w\"],\n", + " )\n", + "}\n", + "\n", + "\n", + "fake_w = dist.Normal(0, 0.1).expand(event_shape).to_event(len(event_shape)).sample()\n", + "\n", + "@Factors(factors=factors)\n", + "@pyro.plate(\"data\", size=plate_size, dim=-4)\n", + "def model_ce():\n", + " w = pyro.sample(\"w\", dist.Normal(fake_w, .001))\n", + "\n", + " consequent = pyro.deterministic(\"consequent\", w * torch.tensor(0.1))\n", + "\n", + " print(\"w\", w.shape, \"c\", consequent.shape)\n", + " assert w.shape == consequent.shape\n", + "\n", + "\n", + "antecedents = {\n", + " \"w\": (\n", + " torch.tensor(0.1).expand(event_shape),\n", + " sufficiency_intervention(\n", + " constraints.independent(constraints.real, len(event_shape)),\n", + " [\"w\"]\n", + " ),\n", + " )\n", + " }\n", + "\n", + "with MultiWorldCounterfactual() as mwc_ce:\n", + " with do(actions = antecedents):\n", + " with pyro.poutine.trace() as trace_ce: \n", + " model_ce()\n", + " \n", + "print(trace_ce.trace.nodes.keys())\n", + "with mwc_ce:\n", + " print(indices_of(trace_ce.trace.nodes[\"w\"][\"value\"]))\n", + " print(indices_of(trace_ce.trace.nodes[\"consequent\"][\"value\"]))\n", + " print(indices_of(trace_ce.trace.nodes['__factor_consequent'][\"fn\"].log_factor))\n", + " print(trace_ce.trace.nodes['__factor_consequent'][\"fn\"].log_factor)\n", + "\n", + "\n", + "nd = trace_ce.trace.nodes\n", + "\n", + "trace_ce.trace.compute_log_prob\n", + "\n", + "with mwc_ce:\n", + " eq_neq_log_probs_fact = gather(\n", + " nd[\"__factor_consequent\"][\"fn\"].log_factor, IndexSet(**{\"w\": {0}}, event_dim = 0)\n", + " )\n", + "\n", + " eq_neq_log_probs_nec = gather(\n", + " nd[\"__factor_consequent\"][\"fn\"].log_factor, IndexSet(**{\"w\": {1}}, event_dim = 0)\n", + " )\n", + " \n", + " consequent_suff = gather(\n", + " nd[\"consequent\"][\"value\"], IndexSet(**{\"w\": {2}}, event_dim = 0 )\n", + " )\n", + "\n", + "\n", + " print(\"what's up\", indices_of(nd[\"consequent\"][\"value\"]))\n", + "\n", + "\n", + " eq_neq_log_probs_suff = gather(\n", + " nd[\"__factor_consequent\"][\"fn\"].log_factor, IndexSet(**{\"w\": {2}})\n", + " )\n", + "\n", + " assert eq_neq_log_probs_nec.shape == consequent_suff.shape\n", + "\n", + " assert torch.equal(eq_neq_log_probs_suff, dist.Normal(0.0, .1).log_prob(consequent_suff - torch.tensor(.01)))\n", + " assert eq_neq_log_probs_nec.sum().exp() == 0 \n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": {}, + "outputs": [], + "source": [ + "# event_shape = (3,) #(3,)\n", + "# plate_size = 4\n", + "\n", + "# def test_consequent_eq_neq():\n", + "# factors = {\n", + "# \"consequent\": consequent_eq_neq(\n", + "# support=constraints.independent(constraints.real, len(event_shape)),\n", + "# proposed_consequent=torch.Tensor([0.01]), \n", + "# antecedents=[\"w\"],\n", + "# event_dim=len(event_shape),\n", + "# )\n", + "# }\n", + "\n", + "# @Factors(factors=factors)\n", + "# @pyro.plate(\"data\", size=plate_size, dim=-1)\n", + "# def model_ce():\n", + "# w = pyro.sample(\n", + "# \"w\", dist.Normal(0, 0.1).expand(event_shape).to_event(len(event_shape))\n", + "# )\n", + "# #consequent = pyro.deterministic(\n", + "# # \"consequent\", w * 0.1, event_dim=len(event_shape)\n", + "# #)\n", + "# consequent = pyro.sample(\"consequent\", dist.Delta(w * 0.1).to_event(len(event_shape)))\n", + "\n", + "# return consequent\n", + "\n", + "# antecedents = {\n", + "# \"w\": (\n", + "# torch.tensor(0.1).expand(event_shape),\n", + "# sufficiency_intervention(\n", + "# constraints.independent(constraints.real, len(event_shape)), [\"w\"]\n", + "# ),\n", + "# )\n", + "# }\n", + "\n", + "# with MultiWorldCounterfactual() as mwc:\n", + "# with do(actions=antecedents):\n", + "# with pyro.poutine.trace() as tr:\n", + "# model_ce()\n", + "\n", + "# tr.trace.compute_log_prob()\n", + "# nd = tr.trace.nodes\n", + "\n", + "\n", + "# with mwc:\n", + "# eq_neq_log_probs_fact = gather(\n", + "# nd[\"__factor_consequent\"][\"log_prob\"], IndexSet(**{\"w\": {0}}, event_dim = 0)\n", + "# )\n", + "\n", + "# eq_neq_log_probs_nec = gather(\n", + "# nd[\"__factor_consequent\"][\"log_prob\"], IndexSet(**{\"w\": {1}}, event_dim = 0)\n", + "# )\n", + " \n", + "# consequent_suff = gather(\n", + "# nd[\"consequent\"][\"value\"], IndexSet(**{\"w\": {2}}, event_dim = 0 )\n", + "# )\n", + "\n", + "\n", + "# print(indices_of(nd[\"consequent\"][\"value\"]))\n", + "\n", + "\n", + "# eq_neq_log_probs_suff = gather(\n", + "# nd[\"__factor_consequent\"][\"log_prob\"], IndexSet(**{\"w\": {2}})\n", + "# )\n", + "\n", + "# assert eq_neq_log_probs_nec.shape == consequent_suff.shape\n", + "\n", + "# assert torch.equal(eq_neq_log_probs_suff, dist.Normal(0.0, .1).log_prob(consequent_suff - torch.tensor(.01)))\n", + "# assert eq_neq_log_probs_nec.sum().exp() == 0 \n" ] }, { From 1f8e72af7cacd9bf2be3d5976d15bbe5faf0d331 Mon Sep 17 00:00:00 2001 From: PoorvaGarg Date: Fri, 2 Aug 2024 17:26:55 -0400 Subject: [PATCH 08/53] consequent_eq_neq --- docs/source/test_notebook.ipynb | 116 +++++++----------- tests/explainable/test_handlers_components.py | 66 +++++----- 2 files changed, 82 insertions(+), 100 deletions(-) diff --git a/docs/source/test_notebook.ipynb b/docs/source/test_notebook.ipynb index f17c2640..d8878dd2 100644 --- a/docs/source/test_notebook.ipynb +++ b/docs/source/test_notebook.ipynb @@ -27,15 +27,26 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 32, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "testing with tensor([0., 1., 0.])\n", - "testing with tensor([0., 1., 0.])\n" + "consequent tensor([1., 0., 1.])\n", + "consequent tensor([[[[[1., 1., 0.]]]],\n", + "\n", + "\n", + "\n", + " [[[[0., 0., 0.]]]],\n", + "\n", + "\n", + "\n", + " [[[[1., 1., 1.]]]]])\n", + "consequent tensor([1., 0., 1.])\n", + "testing with tensor([1., 0., 1.])\n", + "testing with tensor([1., 0., 1.])\n" ] } ], @@ -190,55 +201,17 @@ }, { "cell_type": "code", - "execution_count": 110, + "execution_count": 29, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "w torch.Size([3, 4, 1, 1, 3]) c torch.Size([3, 4, 1, 1, 3])\n", - "odict_keys(['w', 'consequent', '__factor_consequent'])\n", - "IndexSet({'w': {0, 1, 2}})\n", - "IndexSet({'w': {0, 1, 2}})\n", - "IndexSet({'w': {0, 1, 2}})\n", - "tensor([[[[[0.0000, 0.0000, 0.0000]]],\n", - "\n", - "\n", - " [[[0.0000, 0.0000, 0.0000]]],\n", - "\n", - "\n", - " [[[0.0000, 0.0000, 0.0000]]],\n", - "\n", - "\n", - " [[[0.0000, 0.0000, 0.0000]]]],\n", - "\n", - "\n", - "\n", - " [[[[ -inf, -inf, -inf]]],\n", - "\n", - "\n", - " [[[ -inf, -inf, -inf]]],\n", - "\n", - "\n", - " [[[ -inf, -inf, -inf]]],\n", - "\n", - "\n", - " [[[ -inf, -inf, -inf]]]],\n", - "\n", - "\n", - "\n", - " [[[[1.3789, 1.3721, 1.3781]]],\n", - "\n", - "\n", - " [[[1.3789, 1.3718, 1.3780]]],\n", - "\n", - "\n", - " [[[1.3789, 1.3719, 1.3778]]],\n", - "\n", - "\n", - " [[[1.3788, 1.3719, 1.3779]]]]])\n", - "what's up IndexSet({'w': {0, 1, 2}})\n" + "w torch.Size([3, 4, 1, 1, 1, 3]) c torch.Size([3, 4, 1, 1, 1, 3])\n", + "odict_keys(['w', 'consequent'])\n", + "IndexSet({'w': {0, 1, 2, 3}})\n", + "IndexSet({'w': {0, 1, 2, 3}})\n" ] } ], @@ -256,12 +229,13 @@ "}\n", "\n", "\n", - "fake_w = dist.Normal(0, 0.1).expand(event_shape).to_event(len(event_shape)).sample()\n", + "# fake_w = dist.Normal(0, 0.1).expand(event_shape).to_event(len(event_shape)).sample()\n", "\n", - "@Factors(factors=factors)\n", + "# @Factors(factors=factors)\n", "@pyro.plate(\"data\", size=plate_size, dim=-4)\n", "def model_ce():\n", - " w = pyro.sample(\"w\", dist.Normal(fake_w, .001))\n", + " w = pyro.sample(\"w\", dist.Normal(0, 0.1).expand(event_shape).to_event(len(event_shape)))\n", + " # w = pyro.sample(\"w\", dist.Normal(fake_w, 0.001))\n", "\n", " consequent = pyro.deterministic(\"consequent\", w * torch.tensor(0.1))\n", "\n", @@ -275,7 +249,7 @@ " sufficiency_intervention(\n", " constraints.independent(constraints.real, len(event_shape)),\n", " [\"w\"]\n", - " ),\n", + " )\n", " )\n", " }\n", "\n", @@ -288,39 +262,39 @@ "with mwc_ce:\n", " print(indices_of(trace_ce.trace.nodes[\"w\"][\"value\"]))\n", " print(indices_of(trace_ce.trace.nodes[\"consequent\"][\"value\"]))\n", - " print(indices_of(trace_ce.trace.nodes['__factor_consequent'][\"fn\"].log_factor))\n", - " print(trace_ce.trace.nodes['__factor_consequent'][\"fn\"].log_factor)\n", + " # print(indices_of(trace_ce.trace.nodes['__factor_consequent'][\"fn\"].log_factor))\n", + " # print(trace_ce.trace.nodes['__factor_consequent'][\"fn\"].log_factor)\n", "\n", "\n", - "nd = trace_ce.trace.nodes\n", + "# nd = trace_ce.trace.nodes\n", "\n", - "trace_ce.trace.compute_log_prob\n", + "# trace_ce.trace.compute_log_prob\n", "\n", - "with mwc_ce:\n", - " eq_neq_log_probs_fact = gather(\n", - " nd[\"__factor_consequent\"][\"fn\"].log_factor, IndexSet(**{\"w\": {0}}, event_dim = 0)\n", - " )\n", + "# with mwc_ce:\n", + "# eq_neq_log_probs_fact = gather(\n", + "# nd[\"__factor_consequent\"][\"fn\"].log_factor, IndexSet(**{\"w\": {0}}, event_dim = 0)\n", + "# )\n", "\n", - " eq_neq_log_probs_nec = gather(\n", - " nd[\"__factor_consequent\"][\"fn\"].log_factor, IndexSet(**{\"w\": {1}}, event_dim = 0)\n", - " )\n", + "# eq_neq_log_probs_nec = gather(\n", + "# nd[\"__factor_consequent\"][\"fn\"].log_factor, IndexSet(**{\"w\": {1}}, event_dim = 0)\n", + "# )\n", " \n", - " consequent_suff = gather(\n", - " nd[\"consequent\"][\"value\"], IndexSet(**{\"w\": {2}}, event_dim = 0 )\n", - " )\n", + "# consequent_suff = gather(\n", + "# nd[\"consequent\"][\"value\"], IndexSet(**{\"w\": {2}}, event_dim = 0 )\n", + "# )\n", "\n", "\n", - " print(\"what's up\", indices_of(nd[\"consequent\"][\"value\"]))\n", + "# print(\"what's up\", indices_of(nd[\"consequent\"][\"value\"]))\n", "\n", "\n", - " eq_neq_log_probs_suff = gather(\n", - " nd[\"__factor_consequent\"][\"fn\"].log_factor, IndexSet(**{\"w\": {2}})\n", - " )\n", + "# eq_neq_log_probs_suff = gather(\n", + "# nd[\"__factor_consequent\"][\"fn\"].log_factor, IndexSet(**{\"w\": {2}})\n", + "# )\n", "\n", - " assert eq_neq_log_probs_nec.shape == consequent_suff.shape\n", + "# assert eq_neq_log_probs_nec.shape == consequent_suff.shape\n", "\n", - " assert torch.equal(eq_neq_log_probs_suff, dist.Normal(0.0, .1).log_prob(consequent_suff - torch.tensor(.01)))\n", - " assert eq_neq_log_probs_nec.sum().exp() == 0 \n", + "# assert torch.equal(eq_neq_log_probs_suff, dist.Normal(0.0, .1).log_prob(consequent_suff - torch.tensor(.01)))\n", + "# assert eq_neq_log_probs_nec.sum().exp() == 0 \n", "\n", "\n" ] diff --git a/tests/explainable/test_handlers_components.py b/tests/explainable/test_handlers_components.py index 0cc16f12..17421186 100644 --- a/tests/explainable/test_handlers_components.py +++ b/tests/explainable/test_handlers_components.py @@ -371,54 +371,62 @@ def model_ce(): assert nd["__factor_consequent"]["log_prob"].sum() < -10 + @pytest.mark.parametrize("plate_size", [4, 50, 200]) @pytest.mark.parametrize("event_shape", [(), (3,), (3, 2)], ids=str) def test_consequent_eq_neq(plate_size, event_shape): factors = { "consequent": consequent_eq_neq( - support=constraints.independent(constraints.real, len(event_shape)), - proposed_consequent=torch.Tensor([0.1]), # added this + support=constraints.independent(constraints.real, 0), + proposed_consequent=torch.Tensor([0.01]), antecedents=["w"], ) } + w_initial = dist.Normal(0, 0.1).expand(event_shape).to_event(len(event_shape)).sample() + @Factors(factors=factors) - @pyro.plate("data", size=plate_size, dim=-1) + @pyro.plate("data", size=plate_size, dim=-4) def model_ce(): - w = pyro.sample( - "w", dist.Normal(0, 0.1).expand(event_shape).to_event(len(event_shape)) - ) - consequent = pyro.deterministic( - "consequent", w * 0.1, event_dim=len(event_shape) - ) + w = pyro.sample("w", dist.Normal(w_initial, .001)) + consequent = pyro.deterministic("consequent", w * torch.tensor(0.1)) + assert w.shape == consequent.shape - return consequent antecedents = { - "w": ( - torch.tensor(5.0).expand(event_shape), - sufficiency_intervention( - constraints.independent(constraints.real, len(event_shape)), ["w"] - ), - ) - } + "w": ( + torch.tensor(0.1).expand(event_shape), + sufficiency_intervention( + constraints.independent(constraints.real, len(event_shape)), + ["w"] + ), + ) + } - with MultiWorldCounterfactual() as mwc: - with do(actions=antecedents): - with pyro.poutine.trace() as tr: + with MultiWorldCounterfactual() as mwc_ce: + with do(actions = antecedents): + with pyro.poutine.trace() as trace_ce: model_ce() - # with pyro.poutine.trace() as tr: - # model_ce() - tr.trace.compute_log_prob() - nd = tr.trace.nodes - - with mwc: - eq_neq_log_probs = gather( - nd["__factor_consequent"]["log_prob"], IndexSet(**{"w": {1}}) + nd = trace_ce.trace.nodes + trace_ce.trace.compute_log_prob + with mwc_ce: + eq_neq_log_probs_fact = gather( + nd["__factor_consequent"]["fn"].log_factor, IndexSet(**{"w": {0}}, event_dim = 0) + ) + eq_neq_log_probs_nec = gather( + nd["__factor_consequent"]["fn"].log_factor, IndexSet(**{"w": {1}}, event_dim = 0) + ) + consequent_suff = gather( + nd["consequent"]["value"], IndexSet(**{"w": {2}}, event_dim = 0 ) + ) + eq_neq_log_probs_suff = gather( + nd["__factor_consequent"]["fn"].log_factor, IndexSet(**{"w": {2}}) ) - assert eq_neq_log_probs.sum() == 0 + assert eq_neq_log_probs_nec.shape == consequent_suff.shape + assert torch.equal(eq_neq_log_probs_suff, dist.Normal(0.0, .1).log_prob(consequent_suff - torch.tensor(.01))) + assert eq_neq_log_probs_nec.sum().exp() == 0 options = [ From bc5ffb6fbfd8094a344d858dc450409ed6899a06 Mon Sep 17 00:00:00 2001 From: PoorvaGarg Date: Fri, 2 Aug 2024 17:48:08 -0400 Subject: [PATCH 09/53] three variable model --- docs/source/test_notebook.ipynb | 127 ++++++++++++-------------------- 1 file changed, 49 insertions(+), 78 deletions(-) diff --git a/docs/source/test_notebook.ipynb b/docs/source/test_notebook.ipynb index d8878dd2..01f1a301 100644 --- a/docs/source/test_notebook.ipynb +++ b/docs/source/test_notebook.ipynb @@ -27,27 +27,28 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 48, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "consequent tensor([1., 0., 1.])\n", - "consequent tensor([[[[[1., 1., 0.]]]],\n", - "\n", - "\n", - "\n", - " [[[[0., 0., 0.]]]],\n", - "\n", - "\n", - "\n", - " [[[[1., 1., 1.]]]]])\n", - "consequent tensor([1., 0., 1.])\n", - "testing with tensor([1., 0., 1.])\n", - "testing with tensor([1., 0., 1.])\n" + "IndexSet({'X': {0, 1, 2}})\n", + "IndexSet({'Z': {0, 1, 2}})\n", + "IndexSet({})\n", + "IndexSet({'Z': {0, 1, 2}})\n" ] + }, + { + "data": { + "text/plain": [ + "torch.Size([1, 3, 1, 1, 1, 1])" + ] + }, + "execution_count": 48, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ @@ -56,34 +57,53 @@ "def model_independent():\n", " X = pyro.sample(\"X\", dist.Bernoulli(0.5))\n", " Y = pyro.sample(\"Y\", dist.Bernoulli(0.5))\n", - "\n", - "def model_connected():\n", - " X = pyro.sample(\"X\", dist.Bernoulli(0.5))\n", - " Y = pyro.sample(\"Y\", dist.Bernoulli(X))\n", + " Z = pyro.sample(\"Z\", dist.Bernoulli(0.5))\n", + " return {\"X\": X, \"Y\": Y, \"Z\": Z}\n", "\n", "with ExtractSupports() as supports_independent:\n", " model_independent()\n", "\n", - "with ExtractSupports() as supports_connected:\n", - " model_connected()\n", - "\n", "with MultiWorldCounterfactual() as mwc_independent: \n", " with SearchForExplanation(\n", " supports=supports_independent.supports,\n", - " antecedents={\"X\": torch.tensor(1.0)},\n", + " antecedents={\"X\": torch.tensor(1.0), \"Z\": torch.tensor(1.0)},\n", " consequents={\"Y\": torch.tensor(1.0)},\n", " witnesses={},\n", - " alternatives={\"X\": torch.tensor(0.0)},\n", - " antecedent_bias=-0.5,\n", + " alternatives={\"X\": torch.tensor(0.0), \"Z\": torch.tensor(0.0)},\n", + " # antecedent_bias=-0.5,\n", " consequent_scale=0,\n", " ):\n", - " with pyro.plate(\"sample\", size=3):\n", + " with pyro.plate(\"sample\", size=1):\n", " with pyro.poutine.trace() as trace_independent:\n", " model_independent()\n", "\n", - "with MultiWorldCounterfactual() as mwc_connected: \n", + "trace_independent.trace.compute_log_prob\n", + "\n", + "with mwc_independent:\n", + " print(indices_of(trace_independent.trace.nodes[\"X\"][\"value\"]))\n", + " print(indices_of(trace_independent.trace.nodes[\"Z\"][\"value\"]))\n", + " print(indices_of(trace_independent.trace.nodes[\"Y\"][\"value\"]))\n", + " print(indices_of(trace_independent.trace.nodes[\"__cause____consequent_Y\"][\"value\"]))\n", + "\n", + "trace_independent.trace.nodes[\"__cause____consequent_Y\"][\"fn\"].log_factor.shape" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def model_independent():\n", + " X = pyro.sample(\"X\", dist.Bernoulli(0.5))\n", + " Y = pyro.sample(\"Y\", dist.Bernoulli(0.5))\n", + "\n", + "with ExtractSupports() as supports_independent:\n", + " model_independent()\n", + "\n", + "with MultiWorldCounterfactual() as mwc_independent: \n", " with SearchForExplanation(\n", - " supports=supports_connected.supports,\n", + " supports=supports_independent.supports,\n", " antecedents={\"X\": torch.tensor(1.0)},\n", " consequents={\"Y\": torch.tensor(1.0)},\n", " witnesses={},\n", @@ -92,57 +112,8 @@ " consequent_scale=0,\n", " ):\n", " with pyro.plate(\"sample\", size=3):\n", - " with pyro.poutine.trace() as trace_connected:\n", - " model_connected()\n", - "\n", - "with MultiWorldCounterfactual() as mwc_reverse: \n", - " with SearchForExplanation(\n", - " supports=supports_connected.supports,\n", - " antecedents={\"Y\": torch.tensor(1.0)},\n", - " consequents={\"X\": torch.tensor(1.0)},\n", - " witnesses={},\n", - " alternatives={\"Y\": torch.tensor(0.0)},\n", - " antecedent_bias=-0.5,\n", - " consequent_scale=0,\n", - " ):\n", - " with pyro.plate(\"sample\", size=3):\n", - " with pyro.poutine.trace() as trace_reverse:\n", - " model_connected()\n", - "\n", - "\n", - "trace_connected.trace.compute_log_prob\n", - "trace_independent.trace.compute_log_prob\n", - "trace_reverse.trace.compute_log_prob\n", - "\n", - "Y_values_ind = trace_independent.trace.nodes[\"Y\"][\"value\"]\n", - "\n", - "if torch.any(Y_values_ind == 1.):\n", - " print(\"testing with \", Y_values_ind)\n", - " assert trace_independent.trace.nodes[\"__cause____consequent_Y\"][\"fn\"].log_factor[1,0,0,0,:].sum().exp() == 0.\n", - "else:\n", - " assert trace_independent.trace.nodes[\"__cause____consequent_Y\"][\"fn\"].log_factor[1,0,0,0,:].sum().exp() == 1.\n", - "\n", - "if torch.any(Y_values_ind == 0.):\n", - " assert trace_independent.trace.nodes[\"__cause____consequent_Y\"][\"fn\"].log_factor[2,0,0,0,:].sum().exp() == 0.\n", - "else:\n", - " assert trace_independent.trace.nodes[\"__cause____consequent_Y\"][\"fn\"].log_factor[2,0,0,0,:].sum().exp() == 1.\n", - "\n", - "Y_values_con = trace_connected.trace.nodes[\"Y\"][\"value\"]\n", - "assert torch.all(trace_connected.trace.nodes[\"__cause____consequent_Y\"][\"fn\"].log_factor.sum() == 0)\n", - " \n", - "X_values_rev = trace_reverse.trace.nodes[\"X\"][\"value\"]\n", - "if torch.any(X_values_rev == 1.):\n", - " print(\"testing with \", Y_values_ind)\n", - " assert trace_reverse.trace.nodes[\"__cause____consequent_X\"][\"fn\"].log_factor[1,0,0,0,:].sum().exp() == 0.\n", - "else:\n", - " assert trace_reverse.trace.nodes[\"__cause____consequent_X\"][\"fn\"].log_factor[1,0,0,0,:].sum().exp() == 1.\n", - "\n", - "if torch.any(X_values_rev == 0.):\n", - " assert trace_reverse.trace.nodes[\"__cause____consequent_X\"][\"fn\"].log_factor[2,0,0,0,:].sum().exp() == 0.\n", - "else:\n", - " assert trace_reverse.trace.nodes[\"__cause____consequent_X\"][\"fn\"].log_factor[2,0,0,0,:].sum().exp() == 1.\n", - "\n", - "assert torch.all(trace_reverse.trace.nodes[\"__cause____consequent_X\"][\"fn\"].log_factor.sum().exp() == 0)" + " with pyro.poutine.trace() as trace_independent:\n", + " model_independent()" ] }, { From 5aabfc6173946a10ebe6a2bc3f5e3966e6981843 Mon Sep 17 00:00:00 2001 From: rfl-urbaniak Date: Mon, 5 Aug 2024 09:34:13 -0400 Subject: [PATCH 10/53] testing three dependent --- docs/source/test_notebook.ipynb | 75 ++++++++++++++++++++++++++++++--- 1 file changed, 69 insertions(+), 6 deletions(-) diff --git a/docs/source/test_notebook.ipynb b/docs/source/test_notebook.ipynb index 01f1a301..4d26efd6 100644 --- a/docs/source/test_notebook.ipynb +++ b/docs/source/test_notebook.ipynb @@ -27,7 +27,7 @@ }, { "cell_type": "code", - "execution_count": 48, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -46,7 +46,7 @@ "torch.Size([1, 3, 1, 1, 1, 1])" ] }, - "execution_count": 48, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -54,14 +54,14 @@ "source": [ "# def test_edge_eq_neq():\n", "\n", - "def model_independent():\n", + "def model_three_independent():\n", " X = pyro.sample(\"X\", dist.Bernoulli(0.5))\n", " Y = pyro.sample(\"Y\", dist.Bernoulli(0.5))\n", " Z = pyro.sample(\"Z\", dist.Bernoulli(0.5))\n", " return {\"X\": X, \"Y\": Y, \"Z\": Z}\n", "\n", "with ExtractSupports() as supports_independent:\n", - " model_independent()\n", + " model_three_independent()\n", "\n", "with MultiWorldCounterfactual() as mwc_independent: \n", " with SearchForExplanation(\n", @@ -70,12 +70,12 @@ " consequents={\"Y\": torch.tensor(1.0)},\n", " witnesses={},\n", " alternatives={\"X\": torch.tensor(0.0), \"Z\": torch.tensor(0.0)},\n", - " # antecedent_bias=-0.5,\n", + " antecedent_bias=-0.5,\n", " consequent_scale=0,\n", " ):\n", " with pyro.plate(\"sample\", size=1):\n", " with pyro.poutine.trace() as trace_independent:\n", - " model_independent()\n", + " model_three_independent()\n", "\n", "trace_independent.trace.compute_log_prob\n", "\n", @@ -88,6 +88,69 @@ "trace_independent.trace.nodes[\"__cause____consequent_Y\"][\"fn\"].log_factor.shape" ] }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "ename": "TypeError", + "evalue": "unbound method set.union() needs an argument", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[13], line 22\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m pyro\u001b[38;5;241m.\u001b[39mplate(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124msample\u001b[39m\u001b[38;5;124m\"\u001b[39m, size\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m1\u001b[39m):\n\u001b[1;32m 21\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m pyro\u001b[38;5;241m.\u001b[39mpoutine\u001b[38;5;241m.\u001b[39mtrace() \u001b[38;5;28;01mas\u001b[39;00m trace_independent:\n\u001b[0;32m---> 22\u001b[0m \u001b[43mmodel_three_dependent\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 24\u001b[0m trace_independent\u001b[38;5;241m.\u001b[39mtrace\u001b[38;5;241m.\u001b[39mcompute_log_prob\n\u001b[1;32m 26\u001b[0m \u001b[38;5;66;03m# with mwc_independent:\u001b[39;00m\n\u001b[1;32m 27\u001b[0m \u001b[38;5;66;03m# print(indices_of(trace_independent.trace.nodes[\"X\"][\"value\"]))\u001b[39;00m\n\u001b[1;32m 28\u001b[0m \u001b[38;5;66;03m# print(indices_of(trace_independent.trace.nodes[\"Z\"][\"value\"]))\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 31\u001b[0m \n\u001b[1;32m 32\u001b[0m \u001b[38;5;66;03m# trace_independent.trace.nodes[\"__cause____consequent_Y\"][\"fn\"].log_factor.shape\u001b[39;00m\n", + "Cell \u001b[0;32mIn[13], line 3\u001b[0m, in \u001b[0;36mmodel_three_dependent\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mmodel_three_dependent\u001b[39m():\n\u001b[1;32m 2\u001b[0m X \u001b[38;5;241m=\u001b[39m pyro\u001b[38;5;241m.\u001b[39msample(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mX\u001b[39m\u001b[38;5;124m\"\u001b[39m, dist\u001b[38;5;241m.\u001b[39mBernoulli(\u001b[38;5;241m0.5\u001b[39m))\n\u001b[0;32m----> 3\u001b[0m Y \u001b[38;5;241m=\u001b[39m \u001b[43mpyro\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msample\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mY\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdist\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mBernoulli\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m0.5\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 4\u001b[0m Z \u001b[38;5;241m=\u001b[39m pyro\u001b[38;5;241m.\u001b[39msample(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mZ\u001b[39m\u001b[38;5;124m\"\u001b[39m, dist\u001b[38;5;241m.\u001b[39mBernoulli(torch\u001b[38;5;241m.\u001b[39mmin(X,Y)))\n\u001b[1;32m 5\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m {\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mX\u001b[39m\u001b[38;5;124m\"\u001b[39m: X, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mY\u001b[39m\u001b[38;5;124m\"\u001b[39m: Y, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mZ\u001b[39m\u001b[38;5;124m\"\u001b[39m: Z}\n", + "File \u001b[0;32m~/miniconda3/envs/chirho/lib/python3.10/site-packages/pyro/primitives.py:189\u001b[0m, in \u001b[0;36msample\u001b[0;34m(name, fn, obs, obs_mask, infer, *args, **kwargs)\u001b[0m\n\u001b[1;32m 172\u001b[0m msg \u001b[38;5;241m=\u001b[39m Message(\n\u001b[1;32m 173\u001b[0m \u001b[38;5;28mtype\u001b[39m\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124msample\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 174\u001b[0m name\u001b[38;5;241m=\u001b[39mname,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 186\u001b[0m continuation\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[1;32m 187\u001b[0m )\n\u001b[1;32m 188\u001b[0m \u001b[38;5;66;03m# apply the stack and return its return value\u001b[39;00m\n\u001b[0;32m--> 189\u001b[0m \u001b[43mapply_stack\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmsg\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 190\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m msg[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mvalue\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;66;03m# type narrowing guaranteed by apply_stack\u001b[39;00m\n\u001b[1;32m 191\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m msg[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mvalue\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n", + "File \u001b[0;32m~/miniconda3/envs/chirho/lib/python3.10/site-packages/pyro/poutine/runtime.py:386\u001b[0m, in \u001b[0;36mapply_stack\u001b[0;34m(initial_msg)\u001b[0m\n\u001b[1;32m 383\u001b[0m default_process_message(msg)\n\u001b[1;32m 385\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m frame \u001b[38;5;129;01min\u001b[39;00m stack[\u001b[38;5;241m-\u001b[39mpointer:]:\n\u001b[0;32m--> 386\u001b[0m \u001b[43mframe\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_postprocess_message\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmsg\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 388\u001b[0m cont \u001b[38;5;241m=\u001b[39m msg[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mcontinuation\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n\u001b[1;32m 389\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m cont \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n", + "File \u001b[0;32m~/miniconda3/envs/chirho/lib/python3.10/site-packages/pyro/poutine/messenger.py:194\u001b[0m, in \u001b[0;36mMessenger._postprocess_message\u001b[0;34m(self, msg)\u001b[0m\n\u001b[1;32m 192\u001b[0m method \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mgetattr\u001b[39m(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m_pyro_post_\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mmsg[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtype\u001b[39m\u001b[38;5;124m'\u001b[39m]\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28;01mNone\u001b[39;00m)\n\u001b[1;32m 193\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m method \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m--> 194\u001b[0m \u001b[43mmethod\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmsg\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/s78projects/chirho/chirho/observational/handlers/condition.py:56\u001b[0m, in \u001b[0;36mFactors._pyro_post_sample\u001b[0;34m(self, msg)\u001b[0m\n\u001b[1;32m 53\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m:\n\u001b[1;32m 54\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m\n\u001b[0;32m---> 56\u001b[0m pyro\u001b[38;5;241m.\u001b[39mfactor(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mprefix\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;132;01m{\u001b[39;00mmsg[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mname\u001b[39m\u001b[38;5;124m'\u001b[39m]\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m, \u001b[43mfactor\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmsg\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mvalue\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m)\u001b[49m)\n", + "File \u001b[0;32m~/s78projects/chirho/chirho/explainable/handlers/components.py:350\u001b[0m, in \u001b[0;36mconsequent_eq_neq.._consequent_eq_neq\u001b[0;34m(consequent)\u001b[0m\n\u001b[1;32m 318\u001b[0m nec_suff_log_probs_partitioned \u001b[38;5;241m=\u001b[39m {\n\u001b[1;32m 319\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m{\n\u001b[1;32m 320\u001b[0m \u001b[38;5;66;03m#factual_indices: FACTUAL_NEC_SUFF,\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 330\u001b[0m },\n\u001b[1;32m 331\u001b[0m }\n\u001b[1;32m 333\u001b[0m \u001b[38;5;66;03m# nec_suff_log_probs_partitioned = {\u001b[39;00m\n\u001b[1;32m 334\u001b[0m \u001b[38;5;66;03m# **{\u001b[39;00m\n\u001b[1;32m 335\u001b[0m \u001b[38;5;66;03m# factual_indices: FACTUAL_NEC_SUFF,\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 347\u001b[0m \u001b[38;5;66;03m# },\u001b[39;00m\n\u001b[1;32m 348\u001b[0m \u001b[38;5;66;03m# }\u001b[39;00m\n\u001b[0;32m--> 350\u001b[0m new_value \u001b[38;5;241m=\u001b[39m \u001b[43mscatter_n\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 351\u001b[0m \u001b[43m \u001b[49m\u001b[43mnec_suff_log_probs_partitioned\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 352\u001b[0m \u001b[43m \u001b[49m\u001b[43mevent_dim\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 353\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 355\u001b[0m \u001b[38;5;66;03m# for ind, log_prob in zip([necessity_world, sufficiency_world], [necessity_log_probs, sufficiency_log_probs]):\u001b[39;00m\n\u001b[1;32m 356\u001b[0m \u001b[38;5;66;03m# print(ind, log_prob)\u001b[39;00m\n\u001b[1;32m 357\u001b[0m \n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 376\u001b[0m \n\u001b[1;32m 377\u001b[0m \u001b[38;5;66;03m# print(necessity_log_probs, sufficiency_log_probs)\u001b[39;00m\n\u001b[1;32m 378\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m new_value\n", + "File \u001b[0;32m~/miniconda3/envs/chirho/lib/python3.10/site-packages/pyro/poutine/runtime.py:461\u001b[0m, in \u001b[0;36meffectful.._fn\u001b[0;34m(name, infer, obs, *args, **kwargs)\u001b[0m\n\u001b[1;32m 444\u001b[0m msg \u001b[38;5;241m=\u001b[39m Message(\n\u001b[1;32m 445\u001b[0m \u001b[38;5;28mtype\u001b[39m\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mtype\u001b[39m,\n\u001b[1;32m 446\u001b[0m name\u001b[38;5;241m=\u001b[39mname,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 458\u001b[0m infer\u001b[38;5;241m=\u001b[39minfer \u001b[38;5;28;01mif\u001b[39;00m infer \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;28;01melse\u001b[39;00m {},\n\u001b[1;32m 459\u001b[0m )\n\u001b[1;32m 460\u001b[0m \u001b[38;5;66;03m# apply the stack and return its return value\u001b[39;00m\n\u001b[0;32m--> 461\u001b[0m \u001b[43mapply_stack\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmsg\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 462\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m TYPE_CHECKING:\n\u001b[1;32m 463\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m msg[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mvalue\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n", + "File \u001b[0;32m~/miniconda3/envs/chirho/lib/python3.10/site-packages/pyro/poutine/runtime.py:378\u001b[0m, in \u001b[0;36mapply_stack\u001b[0;34m(initial_msg)\u001b[0m\n\u001b[1;32m 375\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m frame \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mreversed\u001b[39m(stack):\n\u001b[1;32m 376\u001b[0m pointer \u001b[38;5;241m=\u001b[39m pointer \u001b[38;5;241m+\u001b[39m \u001b[38;5;241m1\u001b[39m\n\u001b[0;32m--> 378\u001b[0m \u001b[43mframe\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_process_message\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmsg\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 380\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m msg[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mstop\u001b[39m\u001b[38;5;124m\"\u001b[39m]:\n\u001b[1;32m 381\u001b[0m \u001b[38;5;28;01mbreak\u001b[39;00m\n", + "File \u001b[0;32m~/miniconda3/envs/chirho/lib/python3.10/site-packages/pyro/poutine/messenger.py:189\u001b[0m, in \u001b[0;36mMessenger._process_message\u001b[0;34m(self, msg)\u001b[0m\n\u001b[1;32m 187\u001b[0m method \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mgetattr\u001b[39m(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m_pyro_\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mmsg[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtype\u001b[39m\u001b[38;5;124m'\u001b[39m]\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28;01mNone\u001b[39;00m)\n\u001b[1;32m 188\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m method \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m--> 189\u001b[0m \u001b[43mmethod\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmsg\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/s78projects/chirho/chirho/indexed/handlers.py:112\u001b[0m, in \u001b[0;36mIndexPlatesMessenger._pyro_scatter_n\u001b[0;34m(self, msg)\u001b[0m\n\u001b[1;32m 111\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_pyro_scatter_n\u001b[39m(\u001b[38;5;28mself\u001b[39m, msg: Dict[\u001b[38;5;28mstr\u001b[39m, Any]) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m--> 112\u001b[0m add_indices(\u001b[43munion\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mmsg\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43margs\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m]\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mkeys\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m)\n\u001b[1;32m 113\u001b[0m msg[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mstop\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n", + "File \u001b[0;32m~/s78projects/chirho/chirho/indexed/ops.py:90\u001b[0m, in \u001b[0;36munion\u001b[0;34m(*indexsets)\u001b[0m\n\u001b[1;32m 63\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21munion\u001b[39m(\u001b[38;5;241m*\u001b[39mindexsets: IndexSet) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m IndexSet:\n\u001b[1;32m 64\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 65\u001b[0m \u001b[38;5;124;03m Compute the union of multiple :class:`IndexSet` s\u001b[39;00m\n\u001b[1;32m 66\u001b[0m \u001b[38;5;124;03m as the union of their keys and of value sets at shared keys.\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 85\u001b[0m \u001b[38;5;124;03m union(a, union(a, b)) == union(a, b)\u001b[39;00m\n\u001b[1;32m 86\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[1;32m 87\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m IndexSet(\n\u001b[1;32m 88\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m{\n\u001b[1;32m 89\u001b[0m k: \u001b[38;5;28mset\u001b[39m\u001b[38;5;241m.\u001b[39munion(\u001b[38;5;241m*\u001b[39m[vs[k] \u001b[38;5;28;01mfor\u001b[39;00m vs \u001b[38;5;129;01min\u001b[39;00m indexsets \u001b[38;5;28;01mif\u001b[39;00m k \u001b[38;5;129;01min\u001b[39;00m vs])\n\u001b[0;32m---> 90\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m k \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28;43mset\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43munion\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mset\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mvs\u001b[49m\u001b[43m)\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mvs\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mindexsets\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 91\u001b[0m }\n\u001b[1;32m 92\u001b[0m )\n", + "\u001b[0;31mTypeError\u001b[0m: unbound method set.union() needs an argument" + ] + } + ], + "source": [ + "def model_three_dependent():\n", + " X = pyro.sample(\"X\", dist.Bernoulli(0.5))\n", + " Y = pyro.sample(\"Y\", dist.Bernoulli(0.5))\n", + " Z = pyro.sample(\"Z\", dist.Bernoulli(torch.min(X,Y)))\n", + " return {\"X\": X, \"Y\": Y, \"Z\": Z}\n", + "\n", + "with ExtractSupports() as supports_independent:\n", + " model_three_dependent()\n", + "\n", + "with MultiWorldCounterfactual() as mwc_independent: \n", + " with SearchForExplanation(\n", + " supports=supports_independent.supports,\n", + " antecedents={\"X\": torch.tensor(1.0), \"Z\": torch.tensor(1.0)},\n", + " consequents={\"Y\": torch.tensor(1.0)},\n", + " witnesses={},\n", + " alternatives={\"X\": torch.tensor(0.0), \"Z\": torch.tensor(0.0)},\n", + " antecedent_bias=-0.5,\n", + " consequent_scale=0,\n", + " ):\n", + " with pyro.plate(\"sample\", size=1):\n", + " with pyro.poutine.trace() as trace_independent:\n", + " model_three_dependent()\n", + "\n", + "trace_independent.trace.compute_log_prob\n", + "\n", + "# with mwc_independent:\n", + "# print(indices_of(trace_independent.trace.nodes[\"X\"][\"value\"]))\n", + "# print(indices_of(trace_independent.trace.nodes[\"Z\"][\"value\"]))\n", + "# print(indices_of(trace_independent.trace.nodes[\"Y\"][\"value\"]))\n", + "# print(indices_of(trace_independent.trace.nodes[\"__cause____consequent_Y\"][\"value\"]))\n", + "\n", + "# trace_independent.trace.nodes[\"__cause____consequent_Y\"][\"fn\"].log_factor.shape" + ] + }, { "cell_type": "code", "execution_count": null, From 776208f071fbd07c1af5f407968f2f3f3ebd51c9 Mon Sep 17 00:00:00 2001 From: rfl-urbaniak Date: Mon, 5 Aug 2024 11:07:56 -0400 Subject: [PATCH 11/53] debugging --- docs/source/test_notebook.ipynb | 312 ++++++++++++++++++++++++++++---- 1 file changed, 273 insertions(+), 39 deletions(-) diff --git a/docs/source/test_notebook.ipynb b/docs/source/test_notebook.ipynb index 4d26efd6..ecb17685 100644 --- a/docs/source/test_notebook.ipynb +++ b/docs/source/test_notebook.ipynb @@ -13,7 +13,19 @@ "import pyro.distributions.constraints as constraints\n", "import torch\n", "\n", + "from typing import Callable, Mapping, Optional, TypeVar, Union\n", + "\n", + "\n", + "from chirho.explainable.handlers.components import (\n", + " consequent_eq_neq,\n", + " random_intervention,\n", + " sufficiency_intervention,\n", + " undo_split,\n", + ")\n", + "\n", + "from chirho.observational.handlers.condition import Factors\n", "from chirho.counterfactual.handlers.counterfactual import MultiWorldCounterfactual\n", + "from chirho.counterfactual.handlers.selection import get_factual_indices\n", "from chirho.explainable.handlers.components import undo_split, consequent_eq_neq, sufficiency_intervention\n", "from chirho.explainable.handlers.explanation import SearchForExplanation, SplitSubsets\n", "from chirho.explainable.handlers import ExtractSupports\n", @@ -22,33 +34,26 @@ "from chirho.explainable.handlers.preemptions import Preemptions\n", "from chirho.indexed.ops import IndexSet, gather\n", "from chirho.observational.handlers.condition import condition\n", - "from chirho.indexed.ops import indices_of" + "from chirho.indexed.ops import indices_of\n", + "\n", + "S = TypeVar(\"S\")\n", + "T = TypeVar(\"T\")" ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ + "factual IndexSet({'X': {0}, 'Y': {0}})\n", "IndexSet({'X': {0, 1, 2}})\n", - "IndexSet({'Z': {0, 1, 2}})\n", - "IndexSet({})\n", - "IndexSet({'Z': {0, 1, 2}})\n" + "IndexSet({'Y': {0, 1, 2}})\n", + "IndexSet({})\n" ] - }, - { - "data": { - "text/plain": [ - "torch.Size([1, 3, 1, 1, 1, 1])" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" } ], "source": [ @@ -62,17 +67,242 @@ "\n", "with ExtractSupports() as supports_independent:\n", " model_three_independent()\n", + " \n", + "antecedents = {\"X\": (torch.tensor(0.0), torch.tensor(1.0)),\n", + " \"Y\": (torch.tensor(0.0), torch.tensor(1.0))}\n", "\n", - "with MultiWorldCounterfactual() as mwc_independent: \n", + "with MultiWorldCounterfactual() as m_ind_do:\n", + " with do(actions = antecedents):\n", + " with pyro.poutine.trace() as tr_do:\n", + " model_three_independent()\n", + " \n", + "nodes_do = tr_do.trace.nodes\n", + "\n", + "with m_ind_do:\n", + " print(\"factual\", get_factual_indices())\n", + " print(indices_of(nodes_do[\"X\"][\"value\"]))\n", + " print(indices_of(nodes_do[\"Y\"][\"value\"]))\n", + " print(indices_of(nodes_do[\"Z\"][\"value\"]))" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "factual IndexSet({'X': {0}, 'Y': {0}})\n", + "IndexSet({'X': {0, 1}})\n", + "IndexSet({'Y': {0, 1}})\n", + "IndexSet({})\n" + ] + } + ], + "source": [ + "antecedents={\"X\": torch.tensor(1.0), \"Y\": torch.tensor(1.0)}\n", + "alternatives={\"X\": torch.tensor(0.0), \"Y\": torch.tensor(0.0)}\n", + "supports=supports_independent.supports\n", + "antecedent_bias = 0.0 #-0.5\n", + "prefix = \"__cause__\"\n", + "consequents={\"Z\": torch.tensor(1.0)}\n", + "consequent_scale=0\n", + "factors = None\n", + "witnesses = {}\n", + "preemptions = None\n", + "witness_bias = 0.0\n", + "\n", + "\n", + "\n", + "alternatives = (\n", + " {a: alternatives[a] for a in antecedents.keys()}\n", + " if alternatives is not None\n", + " else {\n", + " a: random_intervention(supports[a], name=f\"{prefix}_alternative_{a}\")\n", + " for a in antecedents.keys()\n", + " }\n", + " )\n", + "\n", + "with MultiWorldCounterfactual() as m_ind_do:\n", + " with do(actions = alternatives):\n", + " with pyro.poutine.trace() as tr_do:\n", + " model_three_independent()\n", + " \n", + "nodes_do = tr_do.trace.nodes\n", + "\n", + "with m_ind_do:\n", + " print(\"factual\", get_factual_indices())\n", + " print(indices_of(nodes_do[\"X\"][\"value\"]))\n", + " print(indices_of(nodes_do[\"Y\"][\"value\"]))\n", + " print(indices_of(nodes_do[\"Z\"][\"value\"]))" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'Z': tensor(1.)}\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[38], line 55\u001b[0m\n\u001b[1;32m 53\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m antecedent_handler, witness_handler, consequent_handler:\n\u001b[1;32m 54\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m pyro\u001b[38;5;241m.\u001b[39mpoutine\u001b[38;5;241m.\u001b[39mtrace() \u001b[38;5;28;01mas\u001b[39;00m tr_do:\n\u001b[0;32m---> 55\u001b[0m \u001b[43mmodel_three_independent\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 57\u001b[0m nodes_do \u001b[38;5;241m=\u001b[39m tr_do\u001b[38;5;241m.\u001b[39mtrace\u001b[38;5;241m.\u001b[39mnodes\n\u001b[1;32m 59\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m m_ind_do:\n", + "Cell \u001b[0;32mIn[2], line 6\u001b[0m, in \u001b[0;36mmodel_three_independent\u001b[0;34m()\u001b[0m\n\u001b[1;32m 4\u001b[0m X \u001b[38;5;241m=\u001b[39m pyro\u001b[38;5;241m.\u001b[39msample(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mX\u001b[39m\u001b[38;5;124m\"\u001b[39m, dist\u001b[38;5;241m.\u001b[39mBernoulli(\u001b[38;5;241m0.5\u001b[39m))\n\u001b[1;32m 5\u001b[0m Y \u001b[38;5;241m=\u001b[39m pyro\u001b[38;5;241m.\u001b[39msample(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mY\u001b[39m\u001b[38;5;124m\"\u001b[39m, dist\u001b[38;5;241m.\u001b[39mBernoulli(\u001b[38;5;241m0.5\u001b[39m))\n\u001b[0;32m----> 6\u001b[0m Z \u001b[38;5;241m=\u001b[39m \u001b[43mpyro\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msample\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mZ\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdist\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mBernoulli\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m0.5\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 7\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m {\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mX\u001b[39m\u001b[38;5;124m\"\u001b[39m: X, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mY\u001b[39m\u001b[38;5;124m\"\u001b[39m: Y, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mZ\u001b[39m\u001b[38;5;124m\"\u001b[39m: Z}\n", + "File \u001b[0;32m~/miniconda3/envs/chirho/lib/python3.10/site-packages/pyro/primitives.py:189\u001b[0m, in \u001b[0;36msample\u001b[0;34m(name, fn, obs, obs_mask, infer, *args, **kwargs)\u001b[0m\n\u001b[1;32m 172\u001b[0m msg \u001b[38;5;241m=\u001b[39m Message(\n\u001b[1;32m 173\u001b[0m \u001b[38;5;28mtype\u001b[39m\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124msample\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 174\u001b[0m name\u001b[38;5;241m=\u001b[39mname,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 186\u001b[0m continuation\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[1;32m 187\u001b[0m )\n\u001b[1;32m 188\u001b[0m \u001b[38;5;66;03m# apply the stack and return its return value\u001b[39;00m\n\u001b[0;32m--> 189\u001b[0m \u001b[43mapply_stack\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmsg\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 190\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m msg[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mvalue\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;66;03m# type narrowing guaranteed by apply_stack\u001b[39;00m\n\u001b[1;32m 191\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m msg[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mvalue\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n", + "File \u001b[0;32m~/miniconda3/envs/chirho/lib/python3.10/site-packages/pyro/poutine/runtime.py:386\u001b[0m, in \u001b[0;36mapply_stack\u001b[0;34m(initial_msg)\u001b[0m\n\u001b[1;32m 383\u001b[0m default_process_message(msg)\n\u001b[1;32m 385\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m frame \u001b[38;5;129;01min\u001b[39;00m stack[\u001b[38;5;241m-\u001b[39mpointer:]:\n\u001b[0;32m--> 386\u001b[0m \u001b[43mframe\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_postprocess_message\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmsg\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 388\u001b[0m cont \u001b[38;5;241m=\u001b[39m msg[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mcontinuation\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n\u001b[1;32m 389\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m cont \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n", + "File \u001b[0;32m~/miniconda3/envs/chirho/lib/python3.10/site-packages/pyro/poutine/messenger.py:194\u001b[0m, in \u001b[0;36mMessenger._postprocess_message\u001b[0;34m(self, msg)\u001b[0m\n\u001b[1;32m 192\u001b[0m method \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mgetattr\u001b[39m(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m_pyro_post_\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mmsg[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtype\u001b[39m\u001b[38;5;124m'\u001b[39m]\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28;01mNone\u001b[39;00m)\n\u001b[1;32m 193\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m method \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m--> 194\u001b[0m \u001b[43mmethod\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmsg\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/s78projects/chirho/chirho/observational/handlers/condition.py:56\u001b[0m, in \u001b[0;36mFactors._pyro_post_sample\u001b[0;34m(self, msg)\u001b[0m\n\u001b[1;32m 53\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m:\n\u001b[1;32m 54\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m\n\u001b[0;32m---> 56\u001b[0m pyro\u001b[38;5;241m.\u001b[39mfactor(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mprefix\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;132;01m{\u001b[39;00mmsg[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mname\u001b[39m\u001b[38;5;124m'\u001b[39m]\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m, \u001b[43mfactor\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmsg\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mvalue\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m)\u001b[49m)\n", + "File \u001b[0;32m~/s78projects/chirho/chirho/explainable/handlers/components.py:350\u001b[0m, in \u001b[0;36mconsequent_eq_neq.._consequent_eq_neq\u001b[0;34m(consequent)\u001b[0m\n\u001b[1;32m 318\u001b[0m nec_suff_log_probs_partitioned \u001b[38;5;241m=\u001b[39m {\n\u001b[1;32m 319\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m{\n\u001b[1;32m 320\u001b[0m \u001b[38;5;66;03m#factual_indices: FACTUAL_NEC_SUFF,\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 330\u001b[0m },\n\u001b[1;32m 331\u001b[0m }\n\u001b[1;32m 333\u001b[0m \u001b[38;5;66;03m# nec_suff_log_probs_partitioned = {\u001b[39;00m\n\u001b[1;32m 334\u001b[0m \u001b[38;5;66;03m# **{\u001b[39;00m\n\u001b[1;32m 335\u001b[0m \u001b[38;5;66;03m# factual_indices: FACTUAL_NEC_SUFF,\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 347\u001b[0m \u001b[38;5;66;03m# },\u001b[39;00m\n\u001b[1;32m 348\u001b[0m \u001b[38;5;66;03m# }\u001b[39;00m\n\u001b[0;32m--> 350\u001b[0m new_value \u001b[38;5;241m=\u001b[39m \u001b[43mscatter_n\u001b[49m(\n\u001b[1;32m 351\u001b[0m nec_suff_log_probs_partitioned,\n\u001b[1;32m 352\u001b[0m event_dim\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m0\u001b[39m,\n\u001b[1;32m 353\u001b[0m )\n\u001b[1;32m 355\u001b[0m \u001b[38;5;66;03m# for ind, log_prob in zip([necessity_world, sufficiency_world], [necessity_log_probs, sufficiency_log_probs]):\u001b[39;00m\n\u001b[1;32m 356\u001b[0m \u001b[38;5;66;03m# print(ind, log_prob)\u001b[39;00m\n\u001b[1;32m 357\u001b[0m \n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 376\u001b[0m \n\u001b[1;32m 377\u001b[0m \u001b[38;5;66;03m# print(necessity_log_probs, sufficiency_log_probs)\u001b[39;00m\n\u001b[1;32m 378\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m new_value\n", + "File \u001b[0;32m~/s78projects/chirho/chirho/explainable/handlers/components.py:350\u001b[0m, in \u001b[0;36mconsequent_eq_neq.._consequent_eq_neq\u001b[0;34m(consequent)\u001b[0m\n\u001b[1;32m 318\u001b[0m nec_suff_log_probs_partitioned \u001b[38;5;241m=\u001b[39m {\n\u001b[1;32m 319\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m{\n\u001b[1;32m 320\u001b[0m \u001b[38;5;66;03m#factual_indices: FACTUAL_NEC_SUFF,\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 330\u001b[0m },\n\u001b[1;32m 331\u001b[0m }\n\u001b[1;32m 333\u001b[0m \u001b[38;5;66;03m# nec_suff_log_probs_partitioned = {\u001b[39;00m\n\u001b[1;32m 334\u001b[0m \u001b[38;5;66;03m# **{\u001b[39;00m\n\u001b[1;32m 335\u001b[0m \u001b[38;5;66;03m# factual_indices: FACTUAL_NEC_SUFF,\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 347\u001b[0m \u001b[38;5;66;03m# },\u001b[39;00m\n\u001b[1;32m 348\u001b[0m \u001b[38;5;66;03m# }\u001b[39;00m\n\u001b[0;32m--> 350\u001b[0m new_value \u001b[38;5;241m=\u001b[39m \u001b[43mscatter_n\u001b[49m(\n\u001b[1;32m 351\u001b[0m nec_suff_log_probs_partitioned,\n\u001b[1;32m 352\u001b[0m event_dim\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m0\u001b[39m,\n\u001b[1;32m 353\u001b[0m )\n\u001b[1;32m 355\u001b[0m \u001b[38;5;66;03m# for ind, log_prob in zip([necessity_world, sufficiency_world], [necessity_log_probs, sufficiency_log_probs]):\u001b[39;00m\n\u001b[1;32m 356\u001b[0m \u001b[38;5;66;03m# print(ind, log_prob)\u001b[39;00m\n\u001b[1;32m 357\u001b[0m \n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 376\u001b[0m \n\u001b[1;32m 377\u001b[0m \u001b[38;5;66;03m# print(necessity_log_probs, sufficiency_log_probs)\u001b[39;00m\n\u001b[1;32m 378\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m new_value\n", + "File \u001b[0;32m_pydevd_bundle/pydevd_cython.pyx:1457\u001b[0m, in \u001b[0;36m_pydevd_bundle.pydevd_cython.SafeCallWrapper.__call__\u001b[0;34m()\u001b[0m\n", + "File \u001b[0;32m_pydevd_bundle/pydevd_cython.pyx:701\u001b[0m, in \u001b[0;36m_pydevd_bundle.pydevd_cython.PyDBFrame.trace_dispatch\u001b[0;34m()\u001b[0m\n", + "File \u001b[0;32m_pydevd_bundle/pydevd_cython.pyx:1152\u001b[0m, in \u001b[0;36m_pydevd_bundle.pydevd_cython.PyDBFrame.trace_dispatch\u001b[0;34m()\u001b[0m\n", + "File \u001b[0;32m_pydevd_bundle/pydevd_cython.pyx:1135\u001b[0m, in \u001b[0;36m_pydevd_bundle.pydevd_cython.PyDBFrame.trace_dispatch\u001b[0;34m()\u001b[0m\n", + "File \u001b[0;32m_pydevd_bundle/pydevd_cython.pyx:312\u001b[0m, in \u001b[0;36m_pydevd_bundle.pydevd_cython.PyDBFrame.do_wait_suspend\u001b[0;34m()\u001b[0m\n", + "File \u001b[0;32m~/.local/lib/python3.10/site-packages/debugpy/_vendored/pydevd/pydevd.py:2070\u001b[0m, in \u001b[0;36mPyDB.do_wait_suspend\u001b[0;34m(self, thread, frame, event, arg, exception_type)\u001b[0m\n\u001b[1;32m 2067\u001b[0m from_this_thread\u001b[38;5;241m.\u001b[39mappend(frame_custom_thread_id)\n\u001b[1;32m 2069\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_threads_suspended_single_notification\u001b[38;5;241m.\u001b[39mnotify_thread_suspended(thread_id, thread, stop_reason):\n\u001b[0;32m-> 2070\u001b[0m keep_suspended \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_do_wait_suspend\u001b[49m\u001b[43m(\u001b[49m\u001b[43mthread\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mframe\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mevent\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43marg\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43msuspend_type\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfrom_this_thread\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mframes_tracker\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 2072\u001b[0m frames_list \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 2074\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m keep_suspended:\n\u001b[1;32m 2075\u001b[0m \u001b[38;5;66;03m# This means that we should pause again after a set next statement.\u001b[39;00m\n", + "File \u001b[0;32m~/.local/lib/python3.10/site-packages/debugpy/_vendored/pydevd/pydevd.py:2106\u001b[0m, in \u001b[0;36mPyDB._do_wait_suspend\u001b[0;34m(self, thread, frame, event, arg, suspend_type, from_this_thread, frames_tracker)\u001b[0m\n\u001b[1;32m 2103\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_call_input_hook()\n\u001b[1;32m 2105\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mprocess_internal_commands()\n\u001b[0;32m-> 2106\u001b[0m \u001b[43mtime\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msleep\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m0.01\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 2108\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcancel_async_evaluation(get_current_thread_id(thread), \u001b[38;5;28mstr\u001b[39m(\u001b[38;5;28mid\u001b[39m(frame)))\n\u001b[1;32m 2110\u001b[0m \u001b[38;5;66;03m# process any stepping instructions\u001b[39;00m\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + ] + } + ], + "source": [ + "print(consequents)\n", + "\n", + "sufficiency_actions = {\n", + " a: (\n", + " antecedents[a]\n", + " if antecedents[a] is not None\n", + " else sufficiency_intervention(supports[a], antecedents=antecedents.keys())\n", + " )\n", + " for a in antecedents.keys()\n", + "}\n", + "\n", + "antecedent_handler = SplitSubsets(\n", + " {a: supports[a] for a in antecedents.keys()},\n", + " {a: (alternatives[a], sufficiency_actions[a]) for a in antecedents.keys()}, # type: ignore\n", + " bias=antecedent_bias,\n", + " prefix=f\"{prefix}__antecedent_\",\n", + ")\n", + "\n", + "\n", + "witness_handler = Preemptions(\n", + " (\n", + " {w: preemptions[w] for w in witnesses}\n", + " if preemptions is not None\n", + " else {\n", + " w: undo_split(supports[w], antecedents=antecedents.keys())\n", + " for w in witnesses\n", + " }\n", + " ),\n", + " bias=witness_bias,\n", + " prefix=f\"{prefix}__witness_\",\n", + " )\n", + "\n", + "\n", + "consequent_handler: Factors[T] = Factors(\n", + " (\n", + " {c: factors[c] for c in consequents.keys()}\n", + " if factors is not None\n", + " else {\n", + " c: consequent_eq_neq(\n", + " support=supports[c],\n", + " proposed_consequent=consequents[c], # added this\n", + " antecedents=antecedents.keys(),\n", + " scale=consequent_scale,\n", + " )\n", + " for c in consequents.keys()\n", + " }\n", + " ),\n", + " prefix=f\"{prefix}__consequent_\",\n", + " )\n", + "\n", + "\n", + "with MultiWorldCounterfactual() as m_ind_do:\n", + " with antecedent_handler, witness_handler, consequent_handler:\n", + " with pyro.poutine.trace() as tr_do:\n", + " model_three_independent()\n", + " \n", + "nodes_do = tr_do.trace.nodes\n", + "\n", + "with m_ind_do:\n", + " print(\"factual\", get_factual_indices())\n", + " print(indices_of(nodes_do[\"X\"][\"value\"]))\n", + " print(indices_of(nodes_do[\"Y\"][\"value\"]))\n", + " print(indices_of(nodes_do[\"Z\"][\"value\"]))\n" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "IndexSet({'X': {0}, 'Y': {0}})\n", + "IndexSet({'X': {0, 1, 2}})\n", + "IndexSet({})\n", + "IndexSet({'Y': {0, 1, 2}})\n", + "IndexSet({'Y': {0, 1, 2}})\n" + ] + }, + { + "data": { + "text/plain": [ + "torch.Size([3, 3, 1, 1, 1, 1])" + ] + }, + "execution_count": 46, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "antecedents={\"X\": torch.tensor(1.0), \"Y\": torch.tensor(1.0)}\n", + "alternatives={\"X\": torch.tensor(0.0), \"Y\": torch.tensor(0.0)}\n", + "supports=supports_independent.supports\n", + "antecedent_bias = 0.0 #-0.5\n", + "prefix = \"__cause__\"\n", + "consequents={\"Z\": torch.tensor(1.0)}\n", + "consequent_scale=0\n", + "factors = None\n", + "witnesses = {}\n", + "preemptions = None\n", + "witness_bias = 0.0\n", + "\n", + "\n", + "with MultiWorldCounterfactual() as mwc_independent:\n", " with SearchForExplanation(\n", " supports=supports_independent.supports,\n", - " antecedents={\"X\": torch.tensor(1.0), \"Z\": torch.tensor(1.0)},\n", - " consequents={\"Y\": torch.tensor(1.0)},\n", + " antecedents={\"X\": torch.tensor(1.0), \"Y\": torch.tensor(1.0)},\n", + " consequents={\"Z\": torch.tensor(1.0)},\n", " witnesses={},\n", - " alternatives={\"X\": torch.tensor(0.0), \"Z\": torch.tensor(0.0)},\n", + " alternatives={\"X\": torch.tensor(0.0), \"Y\": torch.tensor(0.0)},\n", " antecedent_bias=-0.5,\n", " consequent_scale=0,\n", - " ):\n", + " ): \n", + " # with SearchForExplanation(\n", + " # supports=supports_independent.supports,\n", + " # antecedents={\"X\": torch.tensor(1.0), \"Z\": torch.tensor(1.0)},\n", + " # consequents={\"Y\": torch.tensor(1.0)},\n", + " # witnesses={},\n", + " # alternatives={\"X\": torch.tensor(0.0), \"Z\": torch.tensor(0.0)},\n", + " # antecedent_bias=-0.5,\n", + " # consequent_scale=0,\n", + " # ):\n", " with pyro.plate(\"sample\", size=1):\n", " with pyro.poutine.trace() as trace_independent:\n", " model_three_independent()\n", @@ -80,39 +310,43 @@ "trace_independent.trace.compute_log_prob\n", "\n", "with mwc_independent:\n", + " print(get_factual_indices())\n", " print(indices_of(trace_independent.trace.nodes[\"X\"][\"value\"]))\n", " print(indices_of(trace_independent.trace.nodes[\"Z\"][\"value\"]))\n", " print(indices_of(trace_independent.trace.nodes[\"Y\"][\"value\"]))\n", - " print(indices_of(trace_independent.trace.nodes[\"__cause____consequent_Y\"][\"value\"]))\n", + " print(indices_of(trace_independent.trace.nodes[\"__cause____consequent_Z\"][\"value\"]))\n", "\n", - "trace_independent.trace.nodes[\"__cause____consequent_Y\"][\"fn\"].log_factor.shape" + "trace_independent.trace.nodes[\"__cause____consequent_Z\"][\"fn\"].log_factor.shape" ] }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 33, "metadata": {}, "outputs": [ { - "ename": "TypeError", - "evalue": "unbound method set.union() needs an argument", + "ename": "KeyboardInterrupt", + "evalue": "", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[13], line 22\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m pyro\u001b[38;5;241m.\u001b[39mplate(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124msample\u001b[39m\u001b[38;5;124m\"\u001b[39m, size\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m1\u001b[39m):\n\u001b[1;32m 21\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m pyro\u001b[38;5;241m.\u001b[39mpoutine\u001b[38;5;241m.\u001b[39mtrace() \u001b[38;5;28;01mas\u001b[39;00m trace_independent:\n\u001b[0;32m---> 22\u001b[0m \u001b[43mmodel_three_dependent\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 24\u001b[0m trace_independent\u001b[38;5;241m.\u001b[39mtrace\u001b[38;5;241m.\u001b[39mcompute_log_prob\n\u001b[1;32m 26\u001b[0m \u001b[38;5;66;03m# with mwc_independent:\u001b[39;00m\n\u001b[1;32m 27\u001b[0m \u001b[38;5;66;03m# print(indices_of(trace_independent.trace.nodes[\"X\"][\"value\"]))\u001b[39;00m\n\u001b[1;32m 28\u001b[0m \u001b[38;5;66;03m# print(indices_of(trace_independent.trace.nodes[\"Z\"][\"value\"]))\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 31\u001b[0m \n\u001b[1;32m 32\u001b[0m \u001b[38;5;66;03m# trace_independent.trace.nodes[\"__cause____consequent_Y\"][\"fn\"].log_factor.shape\u001b[39;00m\n", - "Cell \u001b[0;32mIn[13], line 3\u001b[0m, in \u001b[0;36mmodel_three_dependent\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mmodel_three_dependent\u001b[39m():\n\u001b[1;32m 2\u001b[0m X \u001b[38;5;241m=\u001b[39m pyro\u001b[38;5;241m.\u001b[39msample(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mX\u001b[39m\u001b[38;5;124m\"\u001b[39m, dist\u001b[38;5;241m.\u001b[39mBernoulli(\u001b[38;5;241m0.5\u001b[39m))\n\u001b[0;32m----> 3\u001b[0m Y \u001b[38;5;241m=\u001b[39m \u001b[43mpyro\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msample\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mY\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdist\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mBernoulli\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m0.5\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 4\u001b[0m Z \u001b[38;5;241m=\u001b[39m pyro\u001b[38;5;241m.\u001b[39msample(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mZ\u001b[39m\u001b[38;5;124m\"\u001b[39m, dist\u001b[38;5;241m.\u001b[39mBernoulli(torch\u001b[38;5;241m.\u001b[39mmin(X,Y)))\n\u001b[1;32m 5\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m {\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mX\u001b[39m\u001b[38;5;124m\"\u001b[39m: X, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mY\u001b[39m\u001b[38;5;124m\"\u001b[39m: Y, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mZ\u001b[39m\u001b[38;5;124m\"\u001b[39m: Z}\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[33], line 22\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m pyro\u001b[38;5;241m.\u001b[39mplate(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124msample\u001b[39m\u001b[38;5;124m\"\u001b[39m, size\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m1\u001b[39m):\n\u001b[1;32m 21\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m pyro\u001b[38;5;241m.\u001b[39mpoutine\u001b[38;5;241m.\u001b[39mtrace() \u001b[38;5;28;01mas\u001b[39;00m trace_independent:\n\u001b[0;32m---> 22\u001b[0m \u001b[43mmodel_three_dependent\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 24\u001b[0m trace_independent\u001b[38;5;241m.\u001b[39mtrace\u001b[38;5;241m.\u001b[39mcompute_log_prob\n\u001b[1;32m 26\u001b[0m \u001b[38;5;66;03m# with mwc_independent:\u001b[39;00m\n\u001b[1;32m 27\u001b[0m \u001b[38;5;66;03m# print(indices_of(trace_independent.trace.nodes[\"X\"][\"value\"]))\u001b[39;00m\n\u001b[1;32m 28\u001b[0m \u001b[38;5;66;03m# print(indices_of(trace_independent.trace.nodes[\"Z\"][\"value\"]))\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 31\u001b[0m \n\u001b[1;32m 32\u001b[0m \u001b[38;5;66;03m# trace_independent.trace.nodes[\"__cause____consequent_Y\"][\"fn\"].log_factor.shape\u001b[39;00m\n", + "Cell \u001b[0;32mIn[33], line 4\u001b[0m, in \u001b[0;36mmodel_three_dependent\u001b[0;34m()\u001b[0m\n\u001b[1;32m 2\u001b[0m X \u001b[38;5;241m=\u001b[39m pyro\u001b[38;5;241m.\u001b[39msample(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mX\u001b[39m\u001b[38;5;124m\"\u001b[39m, dist\u001b[38;5;241m.\u001b[39mBernoulli(\u001b[38;5;241m0.5\u001b[39m))\n\u001b[1;32m 3\u001b[0m Y \u001b[38;5;241m=\u001b[39m pyro\u001b[38;5;241m.\u001b[39msample(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mY\u001b[39m\u001b[38;5;124m\"\u001b[39m, dist\u001b[38;5;241m.\u001b[39mBernoulli(\u001b[38;5;241m0.5\u001b[39m))\n\u001b[0;32m----> 4\u001b[0m Z \u001b[38;5;241m=\u001b[39m \u001b[43mpyro\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msample\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mZ\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdist\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mBernoulli\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtorch\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmin\u001b[49m\u001b[43m(\u001b[49m\u001b[43mX\u001b[49m\u001b[43m,\u001b[49m\u001b[43mY\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 5\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m {\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mX\u001b[39m\u001b[38;5;124m\"\u001b[39m: X, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mY\u001b[39m\u001b[38;5;124m\"\u001b[39m: Y, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mZ\u001b[39m\u001b[38;5;124m\"\u001b[39m: Z}\n", "File \u001b[0;32m~/miniconda3/envs/chirho/lib/python3.10/site-packages/pyro/primitives.py:189\u001b[0m, in \u001b[0;36msample\u001b[0;34m(name, fn, obs, obs_mask, infer, *args, **kwargs)\u001b[0m\n\u001b[1;32m 172\u001b[0m msg \u001b[38;5;241m=\u001b[39m Message(\n\u001b[1;32m 173\u001b[0m \u001b[38;5;28mtype\u001b[39m\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124msample\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 174\u001b[0m name\u001b[38;5;241m=\u001b[39mname,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 186\u001b[0m continuation\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[1;32m 187\u001b[0m )\n\u001b[1;32m 188\u001b[0m \u001b[38;5;66;03m# apply the stack and return its return value\u001b[39;00m\n\u001b[0;32m--> 189\u001b[0m \u001b[43mapply_stack\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmsg\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 190\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m msg[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mvalue\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;66;03m# type narrowing guaranteed by apply_stack\u001b[39;00m\n\u001b[1;32m 191\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m msg[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mvalue\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n", "File \u001b[0;32m~/miniconda3/envs/chirho/lib/python3.10/site-packages/pyro/poutine/runtime.py:386\u001b[0m, in \u001b[0;36mapply_stack\u001b[0;34m(initial_msg)\u001b[0m\n\u001b[1;32m 383\u001b[0m default_process_message(msg)\n\u001b[1;32m 385\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m frame \u001b[38;5;129;01min\u001b[39;00m stack[\u001b[38;5;241m-\u001b[39mpointer:]:\n\u001b[0;32m--> 386\u001b[0m \u001b[43mframe\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_postprocess_message\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmsg\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 388\u001b[0m cont \u001b[38;5;241m=\u001b[39m msg[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mcontinuation\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n\u001b[1;32m 389\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m cont \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n", "File \u001b[0;32m~/miniconda3/envs/chirho/lib/python3.10/site-packages/pyro/poutine/messenger.py:194\u001b[0m, in \u001b[0;36mMessenger._postprocess_message\u001b[0;34m(self, msg)\u001b[0m\n\u001b[1;32m 192\u001b[0m method \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mgetattr\u001b[39m(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m_pyro_post_\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mmsg[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtype\u001b[39m\u001b[38;5;124m'\u001b[39m]\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28;01mNone\u001b[39;00m)\n\u001b[1;32m 193\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m method \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m--> 194\u001b[0m \u001b[43mmethod\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmsg\u001b[49m\u001b[43m)\u001b[49m\n", "File \u001b[0;32m~/s78projects/chirho/chirho/observational/handlers/condition.py:56\u001b[0m, in \u001b[0;36mFactors._pyro_post_sample\u001b[0;34m(self, msg)\u001b[0m\n\u001b[1;32m 53\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m:\n\u001b[1;32m 54\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m\n\u001b[0;32m---> 56\u001b[0m pyro\u001b[38;5;241m.\u001b[39mfactor(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mprefix\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;132;01m{\u001b[39;00mmsg[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mname\u001b[39m\u001b[38;5;124m'\u001b[39m]\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m, \u001b[43mfactor\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmsg\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mvalue\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m)\u001b[49m)\n", - "File \u001b[0;32m~/s78projects/chirho/chirho/explainable/handlers/components.py:350\u001b[0m, in \u001b[0;36mconsequent_eq_neq.._consequent_eq_neq\u001b[0;34m(consequent)\u001b[0m\n\u001b[1;32m 318\u001b[0m nec_suff_log_probs_partitioned \u001b[38;5;241m=\u001b[39m {\n\u001b[1;32m 319\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m{\n\u001b[1;32m 320\u001b[0m \u001b[38;5;66;03m#factual_indices: FACTUAL_NEC_SUFF,\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 330\u001b[0m },\n\u001b[1;32m 331\u001b[0m }\n\u001b[1;32m 333\u001b[0m \u001b[38;5;66;03m# nec_suff_log_probs_partitioned = {\u001b[39;00m\n\u001b[1;32m 334\u001b[0m \u001b[38;5;66;03m# **{\u001b[39;00m\n\u001b[1;32m 335\u001b[0m \u001b[38;5;66;03m# factual_indices: FACTUAL_NEC_SUFF,\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 347\u001b[0m \u001b[38;5;66;03m# },\u001b[39;00m\n\u001b[1;32m 348\u001b[0m \u001b[38;5;66;03m# }\u001b[39;00m\n\u001b[0;32m--> 350\u001b[0m new_value \u001b[38;5;241m=\u001b[39m \u001b[43mscatter_n\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 351\u001b[0m \u001b[43m \u001b[49m\u001b[43mnec_suff_log_probs_partitioned\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 352\u001b[0m \u001b[43m \u001b[49m\u001b[43mevent_dim\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 353\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 355\u001b[0m \u001b[38;5;66;03m# for ind, log_prob in zip([necessity_world, sufficiency_world], [necessity_log_probs, sufficiency_log_probs]):\u001b[39;00m\n\u001b[1;32m 356\u001b[0m \u001b[38;5;66;03m# print(ind, log_prob)\u001b[39;00m\n\u001b[1;32m 357\u001b[0m \n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 376\u001b[0m \n\u001b[1;32m 377\u001b[0m \u001b[38;5;66;03m# print(necessity_log_probs, sufficiency_log_probs)\u001b[39;00m\n\u001b[1;32m 378\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m new_value\n", - "File \u001b[0;32m~/miniconda3/envs/chirho/lib/python3.10/site-packages/pyro/poutine/runtime.py:461\u001b[0m, in \u001b[0;36meffectful.._fn\u001b[0;34m(name, infer, obs, *args, **kwargs)\u001b[0m\n\u001b[1;32m 444\u001b[0m msg \u001b[38;5;241m=\u001b[39m Message(\n\u001b[1;32m 445\u001b[0m \u001b[38;5;28mtype\u001b[39m\u001b[38;5;241m=\u001b[39m\u001b[38;5;28mtype\u001b[39m,\n\u001b[1;32m 446\u001b[0m name\u001b[38;5;241m=\u001b[39mname,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 458\u001b[0m infer\u001b[38;5;241m=\u001b[39minfer \u001b[38;5;28;01mif\u001b[39;00m infer \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;28;01melse\u001b[39;00m {},\n\u001b[1;32m 459\u001b[0m )\n\u001b[1;32m 460\u001b[0m \u001b[38;5;66;03m# apply the stack and return its return value\u001b[39;00m\n\u001b[0;32m--> 461\u001b[0m \u001b[43mapply_stack\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmsg\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 462\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m TYPE_CHECKING:\n\u001b[1;32m 463\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m msg[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mvalue\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n", - "File \u001b[0;32m~/miniconda3/envs/chirho/lib/python3.10/site-packages/pyro/poutine/runtime.py:378\u001b[0m, in \u001b[0;36mapply_stack\u001b[0;34m(initial_msg)\u001b[0m\n\u001b[1;32m 375\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m frame \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mreversed\u001b[39m(stack):\n\u001b[1;32m 376\u001b[0m pointer \u001b[38;5;241m=\u001b[39m pointer \u001b[38;5;241m+\u001b[39m \u001b[38;5;241m1\u001b[39m\n\u001b[0;32m--> 378\u001b[0m \u001b[43mframe\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_process_message\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmsg\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 380\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m msg[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mstop\u001b[39m\u001b[38;5;124m\"\u001b[39m]:\n\u001b[1;32m 381\u001b[0m \u001b[38;5;28;01mbreak\u001b[39;00m\n", - "File \u001b[0;32m~/miniconda3/envs/chirho/lib/python3.10/site-packages/pyro/poutine/messenger.py:189\u001b[0m, in \u001b[0;36mMessenger._process_message\u001b[0;34m(self, msg)\u001b[0m\n\u001b[1;32m 187\u001b[0m method \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mgetattr\u001b[39m(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m_pyro_\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mmsg[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtype\u001b[39m\u001b[38;5;124m'\u001b[39m]\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28;01mNone\u001b[39;00m)\n\u001b[1;32m 188\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m method \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m--> 189\u001b[0m \u001b[43mmethod\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmsg\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/s78projects/chirho/chirho/indexed/handlers.py:112\u001b[0m, in \u001b[0;36mIndexPlatesMessenger._pyro_scatter_n\u001b[0;34m(self, msg)\u001b[0m\n\u001b[1;32m 111\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_pyro_scatter_n\u001b[39m(\u001b[38;5;28mself\u001b[39m, msg: Dict[\u001b[38;5;28mstr\u001b[39m, Any]) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m--> 112\u001b[0m add_indices(\u001b[43munion\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mmsg\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43margs\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m]\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mkeys\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m)\n\u001b[1;32m 113\u001b[0m msg[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mstop\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n", - "File \u001b[0;32m~/s78projects/chirho/chirho/indexed/ops.py:90\u001b[0m, in \u001b[0;36munion\u001b[0;34m(*indexsets)\u001b[0m\n\u001b[1;32m 63\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21munion\u001b[39m(\u001b[38;5;241m*\u001b[39mindexsets: IndexSet) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m IndexSet:\n\u001b[1;32m 64\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 65\u001b[0m \u001b[38;5;124;03m Compute the union of multiple :class:`IndexSet` s\u001b[39;00m\n\u001b[1;32m 66\u001b[0m \u001b[38;5;124;03m as the union of their keys and of value sets at shared keys.\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 85\u001b[0m \u001b[38;5;124;03m union(a, union(a, b)) == union(a, b)\u001b[39;00m\n\u001b[1;32m 86\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[1;32m 87\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m IndexSet(\n\u001b[1;32m 88\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m{\n\u001b[1;32m 89\u001b[0m k: \u001b[38;5;28mset\u001b[39m\u001b[38;5;241m.\u001b[39munion(\u001b[38;5;241m*\u001b[39m[vs[k] \u001b[38;5;28;01mfor\u001b[39;00m vs \u001b[38;5;129;01min\u001b[39;00m indexsets \u001b[38;5;28;01mif\u001b[39;00m k \u001b[38;5;129;01min\u001b[39;00m vs])\n\u001b[0;32m---> 90\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m k \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28;43mset\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43munion\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mset\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mvs\u001b[49m\u001b[43m)\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mfor\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mvs\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;129;43;01min\u001b[39;49;00m\u001b[43m \u001b[49m\u001b[43mindexsets\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 91\u001b[0m }\n\u001b[1;32m 92\u001b[0m )\n", - "\u001b[0;31mTypeError\u001b[0m: unbound method set.union() needs an argument" + "File \u001b[0;32m~/s78projects/chirho/chirho/explainable/handlers/components.py:350\u001b[0m, in \u001b[0;36mconsequent_eq_neq.._consequent_eq_neq\u001b[0;34m(consequent)\u001b[0m\n\u001b[1;32m 318\u001b[0m nec_suff_log_probs_partitioned \u001b[38;5;241m=\u001b[39m {\n\u001b[1;32m 319\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m{\n\u001b[1;32m 320\u001b[0m \u001b[38;5;66;03m#factual_indices: FACTUAL_NEC_SUFF,\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 330\u001b[0m },\n\u001b[1;32m 331\u001b[0m }\n\u001b[1;32m 333\u001b[0m \u001b[38;5;66;03m# nec_suff_log_probs_partitioned = {\u001b[39;00m\n\u001b[1;32m 334\u001b[0m \u001b[38;5;66;03m# **{\u001b[39;00m\n\u001b[1;32m 335\u001b[0m \u001b[38;5;66;03m# factual_indices: FACTUAL_NEC_SUFF,\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 347\u001b[0m \u001b[38;5;66;03m# },\u001b[39;00m\n\u001b[1;32m 348\u001b[0m \u001b[38;5;66;03m# }\u001b[39;00m\n\u001b[0;32m--> 350\u001b[0m new_value \u001b[38;5;241m=\u001b[39m \u001b[43mscatter_n\u001b[49m(\n\u001b[1;32m 351\u001b[0m nec_suff_log_probs_partitioned,\n\u001b[1;32m 352\u001b[0m event_dim\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m0\u001b[39m,\n\u001b[1;32m 353\u001b[0m )\n\u001b[1;32m 355\u001b[0m \u001b[38;5;66;03m# for ind, log_prob in zip([necessity_world, sufficiency_world], [necessity_log_probs, sufficiency_log_probs]):\u001b[39;00m\n\u001b[1;32m 356\u001b[0m \u001b[38;5;66;03m# print(ind, log_prob)\u001b[39;00m\n\u001b[1;32m 357\u001b[0m \n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 376\u001b[0m \n\u001b[1;32m 377\u001b[0m \u001b[38;5;66;03m# print(necessity_log_probs, sufficiency_log_probs)\u001b[39;00m\n\u001b[1;32m 378\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m new_value\n", + "File \u001b[0;32m~/s78projects/chirho/chirho/explainable/handlers/components.py:350\u001b[0m, in \u001b[0;36mconsequent_eq_neq.._consequent_eq_neq\u001b[0;34m(consequent)\u001b[0m\n\u001b[1;32m 318\u001b[0m nec_suff_log_probs_partitioned \u001b[38;5;241m=\u001b[39m {\n\u001b[1;32m 319\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m{\n\u001b[1;32m 320\u001b[0m \u001b[38;5;66;03m#factual_indices: FACTUAL_NEC_SUFF,\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 330\u001b[0m },\n\u001b[1;32m 331\u001b[0m }\n\u001b[1;32m 333\u001b[0m \u001b[38;5;66;03m# nec_suff_log_probs_partitioned = {\u001b[39;00m\n\u001b[1;32m 334\u001b[0m \u001b[38;5;66;03m# **{\u001b[39;00m\n\u001b[1;32m 335\u001b[0m \u001b[38;5;66;03m# factual_indices: FACTUAL_NEC_SUFF,\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 347\u001b[0m \u001b[38;5;66;03m# },\u001b[39;00m\n\u001b[1;32m 348\u001b[0m \u001b[38;5;66;03m# }\u001b[39;00m\n\u001b[0;32m--> 350\u001b[0m new_value \u001b[38;5;241m=\u001b[39m \u001b[43mscatter_n\u001b[49m(\n\u001b[1;32m 351\u001b[0m nec_suff_log_probs_partitioned,\n\u001b[1;32m 352\u001b[0m event_dim\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m0\u001b[39m,\n\u001b[1;32m 353\u001b[0m )\n\u001b[1;32m 355\u001b[0m \u001b[38;5;66;03m# for ind, log_prob in zip([necessity_world, sufficiency_world], [necessity_log_probs, sufficiency_log_probs]):\u001b[39;00m\n\u001b[1;32m 356\u001b[0m \u001b[38;5;66;03m# print(ind, log_prob)\u001b[39;00m\n\u001b[1;32m 357\u001b[0m \n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 376\u001b[0m \n\u001b[1;32m 377\u001b[0m \u001b[38;5;66;03m# print(necessity_log_probs, sufficiency_log_probs)\u001b[39;00m\n\u001b[1;32m 378\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m new_value\n", + "File \u001b[0;32m_pydevd_bundle/pydevd_cython.pyx:1457\u001b[0m, in \u001b[0;36m_pydevd_bundle.pydevd_cython.SafeCallWrapper.__call__\u001b[0;34m()\u001b[0m\n", + "File \u001b[0;32m_pydevd_bundle/pydevd_cython.pyx:701\u001b[0m, in \u001b[0;36m_pydevd_bundle.pydevd_cython.PyDBFrame.trace_dispatch\u001b[0;34m()\u001b[0m\n", + "File \u001b[0;32m_pydevd_bundle/pydevd_cython.pyx:1152\u001b[0m, in \u001b[0;36m_pydevd_bundle.pydevd_cython.PyDBFrame.trace_dispatch\u001b[0;34m()\u001b[0m\n", + "File \u001b[0;32m_pydevd_bundle/pydevd_cython.pyx:1135\u001b[0m, in \u001b[0;36m_pydevd_bundle.pydevd_cython.PyDBFrame.trace_dispatch\u001b[0;34m()\u001b[0m\n", + "File \u001b[0;32m_pydevd_bundle/pydevd_cython.pyx:312\u001b[0m, in \u001b[0;36m_pydevd_bundle.pydevd_cython.PyDBFrame.do_wait_suspend\u001b[0;34m()\u001b[0m\n", + "File \u001b[0;32m~/.local/lib/python3.10/site-packages/debugpy/_vendored/pydevd/pydevd.py:2070\u001b[0m, in \u001b[0;36mPyDB.do_wait_suspend\u001b[0;34m(self, thread, frame, event, arg, exception_type)\u001b[0m\n\u001b[1;32m 2067\u001b[0m from_this_thread\u001b[38;5;241m.\u001b[39mappend(frame_custom_thread_id)\n\u001b[1;32m 2069\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_threads_suspended_single_notification\u001b[38;5;241m.\u001b[39mnotify_thread_suspended(thread_id, thread, stop_reason):\n\u001b[0;32m-> 2070\u001b[0m keep_suspended \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_do_wait_suspend\u001b[49m\u001b[43m(\u001b[49m\u001b[43mthread\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mframe\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mevent\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43marg\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43msuspend_type\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfrom_this_thread\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mframes_tracker\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 2072\u001b[0m frames_list \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 2074\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m keep_suspended:\n\u001b[1;32m 2075\u001b[0m \u001b[38;5;66;03m# This means that we should pause again after a set next statement.\u001b[39;00m\n", + "File \u001b[0;32m~/.local/lib/python3.10/site-packages/debugpy/_vendored/pydevd/pydevd.py:2106\u001b[0m, in \u001b[0;36mPyDB._do_wait_suspend\u001b[0;34m(self, thread, frame, event, arg, suspend_type, from_this_thread, frames_tracker)\u001b[0m\n\u001b[1;32m 2103\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_call_input_hook()\n\u001b[1;32m 2105\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mprocess_internal_commands()\n\u001b[0;32m-> 2106\u001b[0m \u001b[43mtime\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msleep\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m0.01\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 2108\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcancel_async_evaluation(get_current_thread_id(thread), \u001b[38;5;28mstr\u001b[39m(\u001b[38;5;28mid\u001b[39m(frame)))\n\u001b[1;32m 2110\u001b[0m \u001b[38;5;66;03m# process any stepping instructions\u001b[39;00m\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " ] } ], @@ -129,11 +363,11 @@ "with MultiWorldCounterfactual() as mwc_independent: \n", " with SearchForExplanation(\n", " supports=supports_independent.supports,\n", - " antecedents={\"X\": torch.tensor(1.0), \"Z\": torch.tensor(1.0)},\n", - " consequents={\"Y\": torch.tensor(1.0)},\n", + " antecedents={\"X\": torch.tensor(1.0), \"Y\": torch.tensor(1.0)},\n", + " consequents={\"Z\": torch.tensor(1.0)},\n", " witnesses={},\n", - " alternatives={\"X\": torch.tensor(0.0), \"Z\": torch.tensor(0.0)},\n", - " antecedent_bias=-0.5,\n", + " alternatives={\"X\": torch.tensor(0.0), \"Y\": torch.tensor(0.0)},\n", + " #antecedent_bias=-0.5,\n", " consequent_scale=0,\n", " ):\n", " with pyro.plate(\"sample\", size=1):\n", From c0a22c0ffcfebe5f2e1b2b51fbde241bb0d06781 Mon Sep 17 00:00:00 2001 From: PoorvaGarg Date: Mon, 5 Aug 2024 14:30:29 -0400 Subject: [PATCH 12/53] minimal example for three independent variables --- docs/source/test_three_independent.ipynb | 129 +++++++++++++++++++++++ 1 file changed, 129 insertions(+) create mode 100644 docs/source/test_three_independent.ipynb diff --git a/docs/source/test_three_independent.ipynb b/docs/source/test_three_independent.ipynb new file mode 100644 index 00000000..5723df52 --- /dev/null +++ b/docs/source/test_three_independent.ipynb @@ -0,0 +1,129 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "import math\n", + "\n", + "import pyro\n", + "import pyro.distributions as dist\n", + "import pyro.distributions.constraints as constraints\n", + "import torch\n", + "\n", + "from typing import Callable, Mapping, Optional, TypeVar, Union\n", + "\n", + "\n", + "from chirho.explainable.handlers.components import (\n", + " consequent_eq_neq,\n", + " random_intervention,\n", + " sufficiency_intervention,\n", + " undo_split,\n", + ")\n", + "\n", + "from chirho.observational.handlers.condition import Factors\n", + "from chirho.counterfactual.handlers.counterfactual import MultiWorldCounterfactual\n", + "from chirho.counterfactual.handlers.selection import get_factual_indices\n", + "from chirho.explainable.handlers.components import undo_split, consequent_eq_neq, sufficiency_intervention\n", + "from chirho.explainable.handlers.explanation import SearchForExplanation, SplitSubsets\n", + "from chirho.explainable.handlers import ExtractSupports\n", + "from chirho.observational.handlers.condition import Factors\n", + "from chirho.interventional.handlers import do\n", + "from chirho.explainable.handlers.preemptions import Preemptions\n", + "from chirho.indexed.ops import IndexSet, gather\n", + "from chirho.observational.handlers.condition import condition\n", + "from chirho.indexed.ops import indices_of\n", + "\n", + "S = TypeVar(\"S\")\n", + "T = TypeVar(\"T\")" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "def model_three_independent():\n", + " X = pyro.sample(\"X\", dist.Bernoulli(0.5))\n", + " Y = pyro.sample(\"Y\", dist.Bernoulli(0.5))\n", + " Z = pyro.sample(\"Z\", dist.Bernoulli(0.5))\n", + " return {\"X\": X, \"Y\": Y, \"Z\": Z}\n", + "\n", + "with ExtractSupports() as supports_independent:\n", + " model_three_independent()" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "consequent tensor([1.])\n", + "IndexSet({'X': {0}})\n", + "dict_keys(['X', 'Z'])\n", + "IndexSet({})\n" + ] + }, + { + "ename": "AssertionError", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mAssertionError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[16], line 17\u001b[0m\n\u001b[1;32m 15\u001b[0m trace_independent\u001b[38;5;241m.\u001b[39mtrace\u001b[38;5;241m.\u001b[39mcompute_log_prob\n\u001b[1;32m 16\u001b[0m nodes \u001b[38;5;241m=\u001b[39m trace_independent\u001b[38;5;241m.\u001b[39mtrace\u001b[38;5;241m.\u001b[39mnodes\n\u001b[0;32m---> 17\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m nodes[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m__cause____consequent_Y\u001b[39m\u001b[38;5;124m\"\u001b[39m][\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mfn\u001b[39m\u001b[38;5;124m\"\u001b[39m]\u001b[38;5;241m.\u001b[39mlog_factor\u001b[38;5;241m.\u001b[39mshape \u001b[38;5;241m==\u001b[39m torch\u001b[38;5;241m.\u001b[39mSize([\u001b[38;5;241m3\u001b[39m, \u001b[38;5;241m3\u001b[39m, \u001b[38;5;241m1\u001b[39m, \u001b[38;5;241m1\u001b[39m, \u001b[38;5;241m1\u001b[39m, \u001b[38;5;241m1\u001b[39m])\n", + "\u001b[0;31mAssertionError\u001b[0m: " + ] + } + ], + "source": [ + "with MultiWorldCounterfactual() as mwc_independent: \n", + " with SearchForExplanation(\n", + " supports=supports_independent.supports,\n", + " antecedents={\"X\": torch.tensor(1.0), \"Z\": torch.tensor(1.0)},\n", + " consequents={\"Y\": torch.tensor(1.0)},\n", + " witnesses={},\n", + " alternatives={\"X\": torch.tensor(0.0), \"Z\": torch.tensor(0.0)},\n", + " antecedent_bias=-0.5,\n", + " consequent_scale=0,\n", + " ):\n", + " with pyro.plate(\"sample\", size=1):\n", + " with pyro.poutine.trace() as trace_independent:\n", + " model_three_independent()\n", + "\n", + "trace_independent.trace.compute_log_prob\n", + "nodes = trace_independent.trace.nodes\n", + "assert nodes[\"__cause____consequent_Y\"][\"fn\"].log_factor.shape == torch.Size([3, 3, 1, 1, 1, 1])\n", + "\n" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "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.10.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 1911de24a5747d704ece23486127ff4182071cd7 Mon Sep 17 00:00:00 2001 From: PoorvaGarg Date: Mon, 5 Aug 2024 16:14:40 -0400 Subject: [PATCH 13/53] more three variable models --- docs/source/test_three_variables.ipynb | 245 +++++++++++++++++++++++++ 1 file changed, 245 insertions(+) create mode 100644 docs/source/test_three_variables.ipynb diff --git a/docs/source/test_three_variables.ipynb b/docs/source/test_three_variables.ipynb new file mode 100644 index 00000000..883d36c3 --- /dev/null +++ b/docs/source/test_three_variables.ipynb @@ -0,0 +1,245 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import math\n", + "\n", + "import pyro\n", + "import pyro.distributions as dist\n", + "import pyro.distributions.constraints as constraints\n", + "import torch\n", + "\n", + "from typing import Callable, Mapping, Optional, TypeVar, Union\n", + "\n", + "\n", + "from chirho.explainable.handlers.components import (\n", + " consequent_eq_neq,\n", + " random_intervention,\n", + " sufficiency_intervention,\n", + " undo_split,\n", + ")\n", + "\n", + "from chirho.observational.handlers.condition import Factors\n", + "from chirho.counterfactual.handlers.counterfactual import MultiWorldCounterfactual\n", + "from chirho.counterfactual.handlers.selection import get_factual_indices\n", + "from chirho.explainable.handlers.components import undo_split, consequent_eq_neq, sufficiency_intervention\n", + "from chirho.explainable.handlers.explanation import SearchForExplanation, SplitSubsets\n", + "from chirho.explainable.handlers import ExtractSupports\n", + "from chirho.observational.handlers.condition import Factors\n", + "from chirho.interventional.handlers import do\n", + "from chirho.explainable.handlers.preemptions import Preemptions\n", + "from chirho.indexed.ops import IndexSet, gather\n", + "from chirho.observational.handlers.condition import condition\n", + "from chirho.indexed.ops import indices_of\n", + "\n", + "S = TypeVar(\"S\")\n", + "T = TypeVar(\"T\")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "necessity_log_probs tensor([0.])\n", + "sufficiency_log_probs tensor([-inf])\n", + "IndexSet({'X': {0}, 'Y': {0}})\n", + "nec_suff_log_prob_partitioned {IndexSet({'X': {0}}): tensor([0.]), IndexSet({'Y': {0}}): tensor([0.]), IndexSet({'X': {1}}): tensor([0.]), IndexSet({'X': {2}}): tensor([-inf]), IndexSet({'Y': {1}}): tensor([0.]), IndexSet({'Y': {2}}): tensor([-inf])}\n", + "new_value tensor([[[[[[-inf]]]],\n", + "\n", + "\n", + "\n", + " [[[[-inf]]]],\n", + "\n", + "\n", + "\n", + " [[[[-inf]]]]]])\n", + "tensor([1., 0., 1.])\n", + "tensor([1., 0., 1.])\n", + "tensor(0.)\n", + "tensor([-inf, -inf, -inf])\n" + ] + } + ], + "source": [ + "def model_three_independent():\n", + " X = pyro.sample(\"X\", dist.Bernoulli(0.5))\n", + " Y = pyro.sample(\"Y\", dist.Bernoulli(0.5))\n", + " Z = pyro.sample(\"Z\", dist.Bernoulli(0.5))\n", + " return {\"X\": X, \"Y\": Y, \"Z\": Z}\n", + "\n", + "with ExtractSupports() as supports_independent:\n", + " model_three_independent()\n", + "\n", + "with MultiWorldCounterfactual() as mwc_independent: \n", + " with SearchForExplanation(\n", + " supports=supports_independent.supports,\n", + " antecedents={\"X\": torch.tensor(1.0), \"Y\": torch.tensor(1.0)},\n", + " consequents={\"Z\": torch.tensor(1.0)},\n", + " witnesses={},\n", + " alternatives={\"X\": torch.tensor(0.0), \"Y\": torch.tensor(0.0)},\n", + " antecedent_bias=-0.5,\n", + " consequent_scale=0,\n", + " ):\n", + " with pyro.plate(\"sample\", size=1):\n", + " with pyro.poutine.trace() as trace_independent:\n", + " model_three_independent()\n", + "\n", + "trace_independent.trace.compute_log_prob\n", + "nodes = trace_independent.trace.nodes\n", + "# assert nodes[\"__cause____consequent_Z\"][\"fn\"].log_factor.shape == torch.Size([3, 3, 1, 1, 1, 1])\n", + "\n", + "print(trace_independent.trace.nodes[\"X\"][\"value\"].squeeze())\n", + "print(trace_independent.trace.nodes[\"Y\"][\"value\"].squeeze())\n", + "print(trace_independent.trace.nodes[\"Z\"][\"value\"].squeeze())\n", + "print(trace_independent.trace.nodes[\"__cause____consequent_Z\"][\"fn\"].log_factor.squeeze())" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "necessity_log_probs tensor([0.])\n", + "sufficiency_log_probs tensor([-inf])\n", + "tensor([[[[[[0.]]]],\n", + "\n", + "\n", + "\n", + " [[[[0.]]]],\n", + "\n", + "\n", + "\n", + " [[[[-inf]]]]],\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[0.]]]],\n", + "\n", + "\n", + "\n", + " [[[[0.]]]],\n", + "\n", + "\n", + "\n", + " [[[[0.]]]]],\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[-inf]]]],\n", + "\n", + "\n", + "\n", + " [[[[-inf]]]],\n", + "\n", + "\n", + "\n", + " [[[[-inf]]]]]])\n" + ] + } + ], + "source": [ + "# X -> Y, X -> Z\n", + "\n", + "def model_three_diverge():\n", + " X = pyro.sample(\"X\", dist.Bernoulli(0.5))\n", + " Y = pyro.sample(\"Y\", dist.Bernoulli(X))\n", + " Z = pyro.sample(\"Z\", dist.Bernoulli(X))\n", + " return {\"X\": X, \"Y\": Y, \"Z\": Z}\n", + "\n", + "with ExtractSupports() as supports_diverge:\n", + " model_three_diverge()\n", + "\n", + "with MultiWorldCounterfactual() as mwc_diverge: \n", + " with SearchForExplanation(\n", + " supports=supports_independent.supports,\n", + " antecedents={\"Y\": torch.tensor(1.0), \"Z\": torch.tensor(1.0)},\n", + " consequents={\"X\": torch.tensor(1.0)},\n", + " witnesses={},\n", + " alternatives={\"Y\": torch.tensor(1.0), \"Z\": torch.tensor(1.0)},\n", + " antecedent_bias=-0.5,\n", + " consequent_scale=0,\n", + " ):\n", + " with pyro.plate(\"sample\", size=1):\n", + " with pyro.poutine.trace() as trace_diverge:\n", + " model_three_diverge()\n", + "\n", + "trace_diverge.trace.compute_log_prob\n", + "nodes = trace_diverge.trace.nodes\n", + "print(nodes[\"__cause____consequent_X\"][\"fn\"].log_factor)\n", + "assert nodes[\"__cause____consequent_X\"][\"fn\"].log_factor.shape == torch.Size([3, 3, 1, 1, 1, 1])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# X -> Y -> Z X -> Z\n", + "\n", + "def model_three_complete():\n", + " X = pyro.sample(\"X\", dist.Bernoulli(0.5))\n", + " Y = pyro.sample(\"Y\", dist.Bernoulli(X))\n", + " Z = pyro.sample(\"Z\", dist.Bernoulli(max(X, Y)))\n", + " return {\"X\": X, \"Y\": Y, \"Z\": Z}\n", + "\n", + "with ExtractSupports() as supports_complete:\n", + " model_three_complete()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# X -> Y Z\n", + "\n", + "def model_three_isolate():\n", + " X = pyro.sample(\"X\", dist.Bernoulli(0.5))\n", + " Y = pyro.sample(\"Y\", dist.Bernoulli(X))\n", + " Z = pyro.sample(\"Z\", dist.Bernoulli(0.5))\n", + " return {\"X\": X, \"Y\": Y, \"Z\": Z}\n", + "\n", + "with ExtractSupports() as supports_isolate:\n", + " model_three_isolate()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "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.10.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 84381e25885db2ed42a472aeb8adf4555fbdedb6 Mon Sep 17 00:00:00 2001 From: PoorvaGarg Date: Mon, 5 Aug 2024 17:06:58 -0400 Subject: [PATCH 14/53] diverge --- docs/source/test_three_variables.ipynb | 32 ++++++++++++-------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/docs/source/test_three_variables.ipynb b/docs/source/test_three_variables.ipynb index 883d36c3..0d47eb54 100644 --- a/docs/source/test_three_variables.ipynb +++ b/docs/source/test_three_variables.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ @@ -105,33 +105,31 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "necessity_log_probs tensor([0.])\n", - "sufficiency_log_probs tensor([-inf])\n", "tensor([[[[[[0.]]]],\n", "\n", "\n", "\n", - " [[[[0.]]]],\n", + " [[[[-inf]]]],\n", "\n", "\n", "\n", - " [[[[-inf]]]]],\n", + " [[[[0.]]]]],\n", "\n", "\n", "\n", "\n", - " [[[[[0.]]]],\n", + " [[[[[-inf]]]],\n", "\n", "\n", "\n", - " [[[[0.]]]],\n", + " [[[[-inf]]]],\n", "\n", "\n", "\n", @@ -140,7 +138,7 @@ "\n", "\n", "\n", - " [[[[[-inf]]]],\n", + " [[[[[0.]]]],\n", "\n", "\n", "\n", @@ -148,7 +146,7 @@ "\n", "\n", "\n", - " [[[[-inf]]]]]])\n" + " [[[[0.]]]]]])\n" ] } ], @@ -157,8 +155,8 @@ "\n", "def model_three_diverge():\n", " X = pyro.sample(\"X\", dist.Bernoulli(0.5))\n", - " Y = pyro.sample(\"Y\", dist.Bernoulli(X))\n", - " Z = pyro.sample(\"Z\", dist.Bernoulli(X))\n", + " Y = pyro.sample(\"Y\", dist.Bernoulli(0.5))\n", + " Z = pyro.sample(\"Z\", dist.Bernoulli(torch.min(X, Y)))\n", " return {\"X\": X, \"Y\": Y, \"Z\": Z}\n", "\n", "with ExtractSupports() as supports_diverge:\n", @@ -167,10 +165,10 @@ "with MultiWorldCounterfactual() as mwc_diverge: \n", " with SearchForExplanation(\n", " supports=supports_independent.supports,\n", - " antecedents={\"Y\": torch.tensor(1.0), \"Z\": torch.tensor(1.0)},\n", - " consequents={\"X\": torch.tensor(1.0)},\n", + " antecedents={\"Y\": torch.tensor(1.0), \"X\": torch.tensor(1.0)},\n", + " consequents={\"Z\": torch.tensor(1.0)},\n", " witnesses={},\n", - " alternatives={\"Y\": torch.tensor(1.0), \"Z\": torch.tensor(1.0)},\n", + " alternatives={\"Y\": torch.tensor(1.0), \"X\": torch.tensor(1.0)},\n", " antecedent_bias=-0.5,\n", " consequent_scale=0,\n", " ):\n", @@ -180,8 +178,8 @@ "\n", "trace_diverge.trace.compute_log_prob\n", "nodes = trace_diverge.trace.nodes\n", - "print(nodes[\"__cause____consequent_X\"][\"fn\"].log_factor)\n", - "assert nodes[\"__cause____consequent_X\"][\"fn\"].log_factor.shape == torch.Size([3, 3, 1, 1, 1, 1])" + "print(nodes[\"__cause____consequent_Z\"][\"fn\"].log_factor)\n", + "assert nodes[\"__cause____consequent_Z\"][\"fn\"].log_factor.shape == torch.Size([3, 3, 1, 1, 1, 1])" ] }, { From bbc121c326d0dd86d3181030065cc37c34d1dab2 Mon Sep 17 00:00:00 2001 From: rfl-urbaniak Date: Mon, 5 Aug 2024 18:13:15 -0400 Subject: [PATCH 15/53] debugged --- chirho/explainable/handlers/components.py | 45 ++++++++++++---- docs/source/test_three_independent.ipynb | 66 ++++++++++++++++------- 2 files changed, 82 insertions(+), 29 deletions(-) diff --git a/chirho/explainable/handlers/components.py b/chirho/explainable/handlers/components.py index a8ae00b8..c48480b3 100644 --- a/chirho/explainable/handlers/components.py +++ b/chirho/explainable/handlers/components.py @@ -234,13 +234,13 @@ def consequent_eq_neq( def _consequent_eq_neq(consequent: T) -> torch.Tensor: # print("consequent", consequent) - factual_indices = IndexSet( - **{ - name: ind - for name, ind in get_factual_indices().items() - if name in antecedents - } - ) + # factual_indices = IndexSet( + # **{ + # name: ind + # for name, ind in get_factual_indices().items() + # if name in antecedents + # } + # ) necessity_world = kwargs.get("necessity_world", 1) sufficiency_world = kwargs.get("sufficiency_world", 2) @@ -307,7 +307,14 @@ def _consequent_eq_neq(consequent: T) -> torch.Tensor: FACTUAL_NEC_SUFF = torch.zeros_like(sufficiency_log_probs) index_keys = set(antecedents) & set(indices_of(consequent, event_dim=support.event_dim)) if indices_of(consequent, event_dim=support.event_dim) else set(antecedents) - null_index = factual_indices if factual_indices != {} else IndexSet( + # null_index = factual_indices if factual_indices != {} else IndexSet( + # **{ + # name: {0} + # for name in index_keys + # } + # ) + + null_index = IndexSet( **{ name: {0} for name in index_keys @@ -315,14 +322,28 @@ def _consequent_eq_neq(consequent: T) -> torch.Tensor: ) + # nec_suff_log_probs_partitioned = { + # **{ + # #factual_indices: FACTUAL_NEC_SUFF, + # null_index: FACTUAL_NEC_SUFF for antecedent in index_keys + # }, + # **{ + # IndexSet(**{antecedent: {ind}}): log_prob + # for antecedent in index_keys + # for ind, log_prob in zip( + # [necessity_world, sufficiency_world], + # [necessity_log_probs, sufficiency_log_probs], + # ) + # }, + # } + nec_suff_log_probs_partitioned = { **{ #factual_indices: FACTUAL_NEC_SUFF, - null_index: FACTUAL_NEC_SUFF for antecedent in index_keys + null_index: FACTUAL_NEC_SUFF # for antecedent in index_keys }, **{ - IndexSet(**{antecedent: {ind}}): log_prob - for antecedent in index_keys + IndexSet(**{antecedent: {ind} for antecedent in index_keys}): log_prob for ind, log_prob in zip( [necessity_world, sufficiency_world], [necessity_log_probs, sufficiency_log_probs], @@ -330,6 +351,8 @@ def _consequent_eq_neq(consequent: T) -> torch.Tensor: }, } + + # nec_suff_log_probs_partitioned = { # **{ # factual_indices: FACTUAL_NEC_SUFF, diff --git a/docs/source/test_three_independent.ipynb b/docs/source/test_three_independent.ipynb index 5723df52..48542cd2 100644 --- a/docs/source/test_three_independent.ipynb +++ b/docs/source/test_three_independent.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 9, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -42,7 +42,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -58,31 +58,61 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 34, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "consequent tensor([1.])\n", - "IndexSet({'X': {0}})\n", - "dict_keys(['X', 'Z'])\n", - "IndexSet({})\n" - ] - }, - { - "ename": "AssertionError", - "evalue": "", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mAssertionError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[16], line 17\u001b[0m\n\u001b[1;32m 15\u001b[0m trace_independent\u001b[38;5;241m.\u001b[39mtrace\u001b[38;5;241m.\u001b[39mcompute_log_prob\n\u001b[1;32m 16\u001b[0m nodes \u001b[38;5;241m=\u001b[39m trace_independent\u001b[38;5;241m.\u001b[39mtrace\u001b[38;5;241m.\u001b[39mnodes\n\u001b[0;32m---> 17\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m nodes[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m__cause____consequent_Y\u001b[39m\u001b[38;5;124m\"\u001b[39m][\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mfn\u001b[39m\u001b[38;5;124m\"\u001b[39m]\u001b[38;5;241m.\u001b[39mlog_factor\u001b[38;5;241m.\u001b[39mshape \u001b[38;5;241m==\u001b[39m torch\u001b[38;5;241m.\u001b[39mSize([\u001b[38;5;241m3\u001b[39m, \u001b[38;5;241m3\u001b[39m, \u001b[38;5;241m1\u001b[39m, \u001b[38;5;241m1\u001b[39m, \u001b[38;5;241m1\u001b[39m, \u001b[38;5;241m1\u001b[39m])\n", - "\u001b[0;31mAssertionError\u001b[0m: " + "IndexSet({'X': {0, 1, 2}, 'Y': {0, 1, 2}})\n", + "0.0\n" ] } ], + "source": [ + "with MultiWorldCounterfactual() as mwc_independent: \n", + " with SearchForExplanation(\n", + " supports=supports_independent.supports,\n", + " antecedents={\"X\": torch.tensor(1.0), \"Y\": torch.tensor(1.0)},\n", + " consequents={\"Z\": torch.tensor(1.0)},\n", + " witnesses={},\n", + " alternatives={\"X\": torch.tensor(0.0), \"Y\": torch.tensor(0.0)},\n", + " antecedent_bias=-0.5,\n", + " consequent_scale=0,\n", + " ):\n", + " with pyro.plate(\"sample\", size=1):\n", + " with pyro.poutine.trace() as trace_independent:\n", + " model_three_independent()\n", + "\n", + "trace_independent.trace.compute_log_prob\n", + "nodes = trace_independent.trace.nodes\n", + "\n", + "log_probs = nodes[\"__cause____consequent_Z\"][\"fn\"].log_factor\n", + "\n", + "assert log_probs.shape == torch.Size([3, 3, 1, 1, 1, 1])\n", + "\n", + "with mwc_independent:\n", + " print(indices_of(log_probs))\n", + " nec_lp = gather(log_probs, IndexSet(**{\"X\":{1}, \"Y\":{1}} ))\n", + " print(nodes[\"Z\"][\"value\"].item())\n", + " if nodes[\"Z\"][\"value\"].item() == 1:\n", + " assert nec_lp.exp().item() == 0.0 \n", + " else:\n", + " assert nec_lp.exp().item() == 1.0\n", + "\n", + " suff_lp = gather(log_probs, IndexSet(**{\"X\":{2}, \"Y\":{2}} ))\n", + " if nodes[\"Z\"][\"value\"].item() == 1:\n", + " assert suff_lp.exp().item() == 1.0\n", + " else:\n", + " assert suff_lp.exp().item() == 0.0\n" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [], "source": [ "with MultiWorldCounterfactual() as mwc_independent: \n", " with SearchForExplanation(\n", From 498f070429165f6350db6938d936d0c78c68da3f Mon Sep 17 00:00:00 2001 From: PoorvaGarg Date: Tue, 6 Aug 2024 14:50:21 -0400 Subject: [PATCH 16/53] notebook tested three variable models --- chirho/explainable/handlers/components.py | 4 +- docs/source/test_three_independent.ipynb | 85 ++-- docs/source/test_three_variables.ipynb | 502 +++++++++++++++++----- 3 files changed, 424 insertions(+), 167 deletions(-) diff --git a/chirho/explainable/handlers/components.py b/chirho/explainable/handlers/components.py index c48480b3..8fac00fc 100644 --- a/chirho/explainable/handlers/components.py +++ b/chirho/explainable/handlers/components.py @@ -306,7 +306,8 @@ def _consequent_eq_neq(consequent: T) -> torch.Tensor: FACTUAL_NEC_SUFF = torch.zeros_like(sufficiency_log_probs) - index_keys = set(antecedents) & set(indices_of(consequent, event_dim=support.event_dim)) if indices_of(consequent, event_dim=support.event_dim) else set(antecedents) + # index_keys = set(antecedents) & set(indices_of(consequent, event_dim=support.event_dim)) if indices_of(consequent, event_dim=support.event_dim) else set(antecedents) + index_keys = set(antecedents) # null_index = factual_indices if factual_indices != {} else IndexSet( # **{ # name: {0} @@ -314,6 +315,7 @@ def _consequent_eq_neq(consequent: T) -> torch.Tensor: # } # ) + null_index = IndexSet( **{ name: {0} diff --git a/docs/source/test_three_independent.ipynb b/docs/source/test_three_independent.ipynb index 48542cd2..34dbdad2 100644 --- a/docs/source/test_three_independent.ipynb +++ b/docs/source/test_three_independent.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": 15, "metadata": {}, "outputs": [], "source": [ @@ -42,7 +42,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 16, "metadata": {}, "outputs": [], "source": [ @@ -58,26 +58,32 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "IndexSet({'X': {0, 1, 2}, 'Y': {0, 1, 2}})\n", - "0.0\n" + "X Y Z\n", + "X Z Y\n" ] } ], "source": [ - "with MultiWorldCounterfactual() as mwc_independent: \n", + "antecedent_sets = [{\"X\": torch.tensor(1.0), \"Y\": torch.tensor(1.0)}, {\"X\": torch.tensor(1.0), \"Z\": torch.tensor(1.0)}]\n", + "consequent_sets = [{\"Z\": torch.tensor(1.0)}, {\"Y\": torch.tensor(1.0)}]\n", + "\n", + "tests = [(\"X\", \"Y\", \"Z\"), (\"X\", \"Z\", \"Y\")]\n", + "for antecedent1, antecedent2, consequent in tests:\n", + " print(antecedent1, antecedent2, consequent)\n", + " with MultiWorldCounterfactual() as mwc_independent: \n", " with SearchForExplanation(\n", " supports=supports_independent.supports,\n", - " antecedents={\"X\": torch.tensor(1.0), \"Y\": torch.tensor(1.0)},\n", - " consequents={\"Z\": torch.tensor(1.0)},\n", + " antecedents={antecedent1: torch.tensor(0.0), antecedent2: torch.tensor(0.0)},\n", + " consequents={consequent: torch.tensor(1.0)},\n", " witnesses={},\n", - " alternatives={\"X\": torch.tensor(0.0), \"Y\": torch.tensor(0.0)},\n", + " alternatives={antecedent1: torch.tensor(0.0), antecedent2: torch.tensor(0.0)},\n", " antecedent_bias=-0.5,\n", " consequent_scale=0,\n", " ):\n", @@ -85,53 +91,30 @@ " with pyro.poutine.trace() as trace_independent:\n", " model_three_independent()\n", "\n", - "trace_independent.trace.compute_log_prob\n", - "nodes = trace_independent.trace.nodes\n", + " trace_independent.trace.compute_log_prob\n", + " nodes = trace_independent.trace.nodes\n", "\n", - "log_probs = nodes[\"__cause____consequent_Z\"][\"fn\"].log_factor\n", + " log_probs = nodes[f\"__cause____consequent_{consequent}\"][\"fn\"].log_factor\n", "\n", - "assert log_probs.shape == torch.Size([3, 3, 1, 1, 1, 1])\n", + " assert log_probs.shape == torch.Size([3, 3, 1, 1, 1, 1])\n", "\n", - "with mwc_independent:\n", - " print(indices_of(log_probs))\n", - " nec_lp = gather(log_probs, IndexSet(**{\"X\":{1}, \"Y\":{1}} ))\n", - " print(nodes[\"Z\"][\"value\"].item())\n", - " if nodes[\"Z\"][\"value\"].item() == 1:\n", - " assert nec_lp.exp().item() == 0.0 \n", - " else:\n", - " assert nec_lp.exp().item() == 1.0\n", + " nec_worlds = IndexSet(**{name : {1} for name in [antecedent1, antecedent2]})\n", + " suff_worlds = IndexSet(**{name : {2} for name in [antecedent1, antecedent2]})\n", "\n", - " suff_lp = gather(log_probs, IndexSet(**{\"X\":{2}, \"Y\":{2}} ))\n", - " if nodes[\"Z\"][\"value\"].item() == 1:\n", - " assert suff_lp.exp().item() == 1.0\n", - " else:\n", - " assert suff_lp.exp().item() == 0.0\n" - ] - }, - { - "cell_type": "code", - "execution_count": 35, - "metadata": {}, - "outputs": [], - "source": [ - "with MultiWorldCounterfactual() as mwc_independent: \n", - " with SearchForExplanation(\n", - " supports=supports_independent.supports,\n", - " antecedents={\"X\": torch.tensor(1.0), \"Z\": torch.tensor(1.0)},\n", - " consequents={\"Y\": torch.tensor(1.0)},\n", - " witnesses={},\n", - " alternatives={\"X\": torch.tensor(0.0), \"Z\": torch.tensor(0.0)},\n", - " antecedent_bias=-0.5,\n", - " consequent_scale=0,\n", - " ):\n", - " with pyro.plate(\"sample\", size=1):\n", - " with pyro.poutine.trace() as trace_independent:\n", - " model_three_independent()\n", + " with mwc_independent:\n", + " nec_lp = gather(log_probs, nec_worlds)\n", + " if nodes[consequent][\"value\"].item() == 1:\n", + " assert nec_lp.exp().item() == 0.0 \n", + " else:\n", + " assert nec_lp.exp().item() == 1.0\n", + "\n", + " suff_lp = gather(log_probs, suff_worlds)\n", + " if nodes[consequent][\"value\"].item() == 1:\n", + " assert suff_lp.exp().item() == 1.0\n", + " else:\n", + " assert suff_lp.exp().item() == 0.0\n", "\n", - "trace_independent.trace.compute_log_prob\n", - "nodes = trace_independent.trace.nodes\n", - "assert nodes[\"__cause____consequent_Y\"][\"fn\"].log_factor.shape == torch.Size([3, 3, 1, 1, 1, 1])\n", - "\n" + " assert torch.allclose(log_probs.squeeze().fill_diagonal_(0.0), torch.tensor(0.0))" ] } ], diff --git a/docs/source/test_three_variables.ipynb b/docs/source/test_three_variables.ipynb index 0d47eb54..b696e3c7 100644 --- a/docs/source/test_three_variables.ipynb +++ b/docs/source/test_three_variables.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 5, + "execution_count": 26, "metadata": {}, "outputs": [], "source": [ @@ -42,149 +42,204 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 2, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "necessity_log_probs tensor([0.])\n", - "sufficiency_log_probs tensor([-inf])\n", - "IndexSet({'X': {0}, 'Y': {0}})\n", - "nec_suff_log_prob_partitioned {IndexSet({'X': {0}}): tensor([0.]), IndexSet({'Y': {0}}): tensor([0.]), IndexSet({'X': {1}}): tensor([0.]), IndexSet({'X': {2}}): tensor([-inf]), IndexSet({'Y': {1}}): tensor([0.]), IndexSet({'Y': {2}}): tensor([-inf])}\n", - "new_value tensor([[[[[[-inf]]]],\n", - "\n", - "\n", - "\n", - " [[[[-inf]]]],\n", - "\n", - "\n", - "\n", - " [[[[-inf]]]]]])\n", - "tensor([1., 0., 1.])\n", - "tensor([1., 0., 1.])\n", - "tensor(0.)\n", - "tensor([-inf, -inf, -inf])\n" - ] - } - ], + "outputs": [], "source": [ - "def model_three_independent():\n", + "# X -> Z, Y -> Z\n", + "\n", + "def model_three_converge():\n", " X = pyro.sample(\"X\", dist.Bernoulli(0.5))\n", " Y = pyro.sample(\"Y\", dist.Bernoulli(0.5))\n", - " Z = pyro.sample(\"Z\", dist.Bernoulli(0.5))\n", + " Z = pyro.sample(\"Z\", dist.Bernoulli(torch.min(X, Y)))\n", " return {\"X\": X, \"Y\": Y, \"Z\": Z}\n", "\n", - "with ExtractSupports() as supports_independent:\n", - " model_three_independent()\n", + "with ExtractSupports() as supports_converge:\n", + " model_three_converge()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "with MultiWorldCounterfactual() as mwc_converge: \n", + " with SearchForExplanation(\n", + " supports=supports_converge.supports,\n", + " antecedents={\"Y\": torch.tensor(1.0), \"X\": torch.tensor(1.0)},\n", + " consequents={\"Z\": torch.tensor(1.0)},\n", + " witnesses={},\n", + " alternatives={\"Y\": torch.tensor(1.0), \"X\": torch.tensor(1.0)},\n", + " antecedent_bias=-0.5,\n", + " consequent_scale=0,\n", + " ):\n", + " with pyro.plate(\"sample\", size=1):\n", + " with pyro.poutine.trace() as trace_converge:\n", + " model_three_converge()\n", "\n", - "with MultiWorldCounterfactual() as mwc_independent: \n", - " with SearchForExplanation(\n", - " supports=supports_independent.supports,\n", - " antecedents={\"X\": torch.tensor(1.0), \"Y\": torch.tensor(1.0)},\n", - " consequents={\"Z\": torch.tensor(1.0)},\n", - " witnesses={},\n", - " alternatives={\"X\": torch.tensor(0.0), \"Y\": torch.tensor(0.0)},\n", - " antecedent_bias=-0.5,\n", - " consequent_scale=0,\n", - " ):\n", - " with pyro.plate(\"sample\", size=1):\n", - " with pyro.poutine.trace() as trace_independent:\n", - " model_three_independent()\n", + "trace_converge.trace.compute_log_prob\n", + "nodes = trace_converge.trace.nodes\n", + "\n", + "values = nodes[\"Z\"][\"value\"]\n", + "log_probs = nodes[\"__cause____consequent_Z\"][\"fn\"].log_factor\n", + "assert values.shape == log_probs.shape\n", + "\n", + "nec_worlds = IndexSet(**{name : {1} for name in [\"X\", \"Y\"]})\n", + "suff_worlds = IndexSet(**{name : {2} for name in [\"X\", \"Y\"]})\n", + "\n", + "with mwc_converge:\n", + " nec_value = gather(values, nec_worlds)\n", + " nec_lp = gather(log_probs, nec_worlds)\n", + " assert nec_lp.exp().item() == 1 - nec_value.item()\n", + "\n", + " suff_value = gather(values, suff_worlds)\n", + " suff_lp = gather(log_probs, suff_worlds)\n", + " assert suff_lp.exp().item() == suff_value.item()\n", + "\n", + "assert torch.allclose(log_probs.squeeze().fill_diagonal_(0.0), torch.tensor(0.0))" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "# X -> Y, X -> Z\n", + "\n", + "def model_three_diverge():\n", + " X = pyro.sample(\"X\", dist.Bernoulli(0.5))\n", + " Y = pyro.sample(\"Y\", dist.Bernoulli(X))\n", + " Z = pyro.sample(\"Z\", dist.Bernoulli(X))\n", + " return {\"X\": X, \"Y\": Y, \"Z\": Z}\n", + "\n", + "with ExtractSupports() as supports_diverge:\n", + " model_three_diverge()" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "with MultiWorldCounterfactual() as mwc_diverge: \n", + " with SearchForExplanation(\n", + " supports=supports_diverge.supports,\n", + " antecedents={\"Y\": torch.tensor(1.0), \"X\": torch.tensor(1.0)},\n", + " consequents={\"Z\": torch.tensor(1.0)},\n", + " witnesses={},\n", + " alternatives={\"Y\": torch.tensor(0.0), \"X\": torch.tensor(0.0)},\n", + " antecedent_bias=-0.5,\n", + " consequent_scale=0,\n", + " ):\n", + " with pyro.plate(\"sample\", size=1):\n", + " with pyro.poutine.trace() as trace_diverge:\n", + " model_three_diverge()\n", + "\n", + "trace_diverge.trace.compute_log_prob\n", + "nodes = trace_diverge.trace.nodes\n", + "\n", + "values = nodes[\"Z\"][\"value\"]\n", + "log_probs = nodes[\"__cause____consequent_Z\"][\"fn\"].log_factor\n", + "\n", + "assert log_probs.shape == torch.Size([3, 3, 1, 1, 1, 1])\n", + "\n", + "nec_worlds = IndexSet(**{name : {1} for name in [\"X\", \"Y\"]})\n", + "suff_worlds = IndexSet(**{name : {2} for name in [\"X\", \"Y\"]})\n", + "\n", + "with mwc_diverge:\n", + " nec_value = gather(values, nec_worlds)\n", + " nec_lp = gather(log_probs, nec_worlds)\n", + " assert nec_lp.exp().item() == 1 - nec_value.item()\n", "\n", - "trace_independent.trace.compute_log_prob\n", - "nodes = trace_independent.trace.nodes\n", - "# assert nodes[\"__cause____consequent_Z\"][\"fn\"].log_factor.shape == torch.Size([3, 3, 1, 1, 1, 1])\n", + " suff_value = gather(values, suff_worlds)\n", + " suff_lp = gather(log_probs, suff_worlds)\n", + " assert suff_lp.exp().item() == suff_value.item()\n", + "\n", + "assert torch.allclose(log_probs.squeeze().fill_diagonal_(0.0), torch.tensor(0.0))" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [], + "source": [ + "# X -> Y -> Z\n", + "\n", + "def model_three_chain():\n", + " X = pyro.sample(\"X\", dist.Bernoulli(0.5))\n", + " Y = pyro.sample(\"Y\", dist.Bernoulli(X))\n", + " Z = pyro.sample(\"Z\", dist.Bernoulli(Y))\n", + " return {\"X\": X, \"Y\": Y, \"Z\": Z}\n", "\n", - "print(trace_independent.trace.nodes[\"X\"][\"value\"].squeeze())\n", - "print(trace_independent.trace.nodes[\"Y\"][\"value\"].squeeze())\n", - "print(trace_independent.trace.nodes[\"Z\"][\"value\"].squeeze())\n", - "print(trace_independent.trace.nodes[\"__cause____consequent_Z\"][\"fn\"].log_factor.squeeze())" + "with ExtractSupports() as supports_chain:\n", + " model_three_chain()" ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 30, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor([[[[[[0.]]]],\n", - "\n", - "\n", - "\n", - " [[[[-inf]]]],\n", - "\n", - "\n", - "\n", - " [[[[0.]]]]],\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[-inf]]]],\n", - "\n", - "\n", - "\n", - " [[[[-inf]]]],\n", - "\n", - "\n", - "\n", - " [[[[0.]]]]],\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[0.]]]],\n", - "\n", - "\n", - "\n", - " [[[[-inf]]]],\n", - "\n", - "\n", - "\n", - " [[[[0.]]]]]])\n" + "tensor([0., 0., 1.])\n", + "tensor([[0., 0., 0.],\n", + " [0., 0., 0.],\n", + " [0., 0., 0.]])\n", + "tensor([[[[[0.]]]]]) tensor([[[[[[0.]]]]]])\n" ] } ], "source": [ - "# X -> Y, X -> Z\n", + "with MultiWorldCounterfactual() as mwc_chain: \n", + " with SearchForExplanation(\n", + " supports=supports_chain.supports,\n", + " antecedents={\"X\": torch.tensor(1.0), \"Z\": torch.tensor(1.0)},\n", + " consequents={\"Y\": torch.tensor(1.0)},\n", + " witnesses={},\n", + " alternatives={\"X\": torch.tensor(0.0), \"Z\": torch.tensor(0.0)},\n", + " antecedent_bias=-0.5,\n", + " consequent_scale=0,\n", + " ):\n", + " with pyro.plate(\"sample\", size=1):\n", + " with pyro.poutine.trace() as trace_chain:\n", + " model_three_chain()\n", "\n", - "def model_three_diverge():\n", - " X = pyro.sample(\"X\", dist.Bernoulli(0.5))\n", - " Y = pyro.sample(\"Y\", dist.Bernoulli(0.5))\n", - " Z = pyro.sample(\"Z\", dist.Bernoulli(torch.min(X, Y)))\n", - " return {\"X\": X, \"Y\": Y, \"Z\": Z}\n", + "trace_chain.trace.compute_log_prob\n", + "nodes = trace_chain.trace.nodes\n", "\n", - "with ExtractSupports() as supports_diverge:\n", - " model_three_diverge()\n", + "values = nodes[\"Y\"][\"value\"]\n", + "log_probs = nodes[\"__cause____consequent_Y\"][\"fn\"].log_factor\n", "\n", - "with MultiWorldCounterfactual() as mwc_diverge: \n", - " with SearchForExplanation(\n", - " supports=supports_independent.supports,\n", - " antecedents={\"Y\": torch.tensor(1.0), \"X\": torch.tensor(1.0)},\n", - " consequents={\"Z\": torch.tensor(1.0)},\n", - " witnesses={},\n", - " alternatives={\"Y\": torch.tensor(1.0), \"X\": torch.tensor(1.0)},\n", - " antecedent_bias=-0.5,\n", - " consequent_scale=0,\n", - " ):\n", - " with pyro.plate(\"sample\", size=1):\n", - " with pyro.poutine.trace() as trace_diverge:\n", - " model_three_diverge()\n", + "print(values.squeeze())\n", + "print(log_probs.squeeze())\n", "\n", - "trace_diverge.trace.compute_log_prob\n", - "nodes = trace_diverge.trace.nodes\n", - "print(nodes[\"__cause____consequent_Z\"][\"fn\"].log_factor)\n", - "assert nodes[\"__cause____consequent_Z\"][\"fn\"].log_factor.shape == torch.Size([3, 3, 1, 1, 1, 1])" + "assert log_probs.shape == torch.Size([3, 3, 1, 1, 1, 1])\n", + "\n", + "nec_worlds = IndexSet(**{name : {1} for name in [\"X\", \"Z\"]})\n", + "suff_worlds = IndexSet(**{name : {2} for name in [\"X\", \"Z\"]})\n", + "\n", + "with mwc_chain:\n", + " nec_value = gather(values, nec_worlds)\n", + " nec_lp = gather(log_probs, nec_worlds)\n", + " assert nec_lp.exp().item() == 1 - nec_value.item()\n", + "\n", + " suff_value = gather(values, suff_worlds)\n", + " suff_lp = gather(log_probs, suff_worlds)\n", + " assert suff_lp.exp().item() == suff_value.item()\n", + "\n", + "assert torch.allclose(log_probs.squeeze().fill_diagonal_(0.0), torch.tensor(0.0))" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 36, "metadata": {}, "outputs": [], "source": [ @@ -193,7 +248,7 @@ "def model_three_complete():\n", " X = pyro.sample(\"X\", dist.Bernoulli(0.5))\n", " Y = pyro.sample(\"Y\", dist.Bernoulli(X))\n", - " Z = pyro.sample(\"Z\", dist.Bernoulli(max(X, Y)))\n", + " Z = pyro.sample(\"Z\", dist.Bernoulli(torch.max(X, Y)))\n", " return {\"X\": X, \"Y\": Y, \"Z\": Z}\n", "\n", "with ExtractSupports() as supports_complete:\n", @@ -202,7 +257,66 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tensor([[1., 0., 1.],\n", + " [1., 0., 1.],\n", + " [1., 1., 1.]])\n", + "tensor([[0., 0., 0.],\n", + " [0., 0., 0.],\n", + " [0., 0., 0.]])\n" + ] + } + ], + "source": [ + "with MultiWorldCounterfactual() as mwc_complete: \n", + " with SearchForExplanation(\n", + " supports=supports_complete.supports,\n", + " antecedents={\"X\": torch.tensor(1.0), \"Y\": torch.tensor(1.0)},\n", + " consequents={\"Z\": torch.tensor(1.0)},\n", + " witnesses={},\n", + " alternatives={\"X\": torch.tensor(0.0), \"Y\": torch.tensor(0.0)},\n", + " antecedent_bias=-0.5,\n", + " consequent_scale=0,\n", + " ):\n", + " with pyro.plate(\"sample\", size=1):\n", + " with pyro.poutine.trace() as trace_complete:\n", + " model_three_complete()\n", + "\n", + "trace_complete.trace.compute_log_prob\n", + "nodes = trace_complete.trace.nodes\n", + "\n", + "values = nodes[\"Z\"][\"value\"]\n", + "log_probs = nodes[\"__cause____consequent_Z\"][\"fn\"].log_factor\n", + "\n", + "print(values.squeeze())\n", + "print(log_probs.squeeze())\n", + "\n", + "assert log_probs.shape == torch.Size([3, 3, 1, 1, 1, 1])\n", + "\n", + "nec_worlds = IndexSet(**{name : {1} for name in [\"X\", \"Y\"]})\n", + "suff_worlds = IndexSet(**{name : {2} for name in [\"X\", \"Y\"]})\n", + "\n", + "with mwc_complete:\n", + " nec_value = gather(values, nec_worlds)\n", + " nec_lp = gather(log_probs, nec_worlds)\n", + " assert nec_lp.exp().item() == 1 - nec_value.item()\n", + "\n", + " suff_value = gather(values, suff_worlds)\n", + " suff_lp = gather(log_probs, suff_worlds)\n", + " assert suff_lp.exp().item() == suff_value.item()\n", + "\n", + "assert torch.allclose(log_probs.squeeze().fill_diagonal_(0.0), torch.tensor(0.0))" + ] + }, + { + "cell_type": "code", + "execution_count": 39, "metadata": {}, "outputs": [], "source": [ @@ -217,6 +331,164 @@ "with ExtractSupports() as supports_isolate:\n", " model_three_isolate()" ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tensor([1., 0., 1.])\n", + "tensor([[0., 0., 0.],\n", + " [0., 0., 0.],\n", + " [0., 0., 0.]])\n" + ] + } + ], + "source": [ + "with MultiWorldCounterfactual() as mwc_isolate: \n", + " with SearchForExplanation(\n", + " supports=supports_isolate.supports,\n", + " antecedents={\"X\": torch.tensor(1.0), \"Z\": torch.tensor(1.0)},\n", + " consequents={\"Y\": torch.tensor(1.0)},\n", + " witnesses={},\n", + " alternatives={\"X\": torch.tensor(0.0), \"Z\": torch.tensor(0.0)},\n", + " antecedent_bias=-0.5,\n", + " consequent_scale=0,\n", + " ):\n", + " with pyro.plate(\"sample\", size=1):\n", + " with pyro.poutine.trace() as trace_isolate:\n", + " model_three_complete()\n", + "\n", + "trace_isolate.trace.compute_log_prob\n", + "nodes = trace_isolate.trace.nodes\n", + "\n", + "values = nodes[\"Y\"][\"value\"]\n", + "log_probs = nodes[\"__cause____consequent_Y\"][\"fn\"].log_factor\n", + "\n", + "print(values.squeeze())\n", + "print(log_probs.squeeze())\n", + "\n", + "assert log_probs.shape == torch.Size([3, 3, 1, 1, 1, 1])\n", + "\n", + "nec_worlds = IndexSet(**{name : {1} for name in [\"X\", \"Z\"]})\n", + "suff_worlds = IndexSet(**{name : {2} for name in [\"X\", \"Z\"]})\n", + "\n", + "with mwc_isolate:\n", + " nec_value = gather(values, nec_worlds)\n", + " nec_lp = gather(log_probs, nec_worlds)\n", + " assert nec_lp.exp().item() == 1 - nec_value.item()\n", + "\n", + " suff_value = gather(values, suff_worlds)\n", + " suff_lp = gather(log_probs, suff_worlds)\n", + " assert suff_lp.exp().item() == suff_value.item()\n", + "\n", + "assert torch.allclose(log_probs.squeeze().fill_diagonal_(0.0), torch.tensor(0.0))" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [], + "source": [ + "import pytest\n", + "\n", + "def model_three_converge():\n", + " X = pyro.sample(\"X\", dist.Bernoulli(0.5))\n", + " Y = pyro.sample(\"Y\", dist.Bernoulli(0.5))\n", + " Z = pyro.sample(\"Z\", dist.Bernoulli(torch.min(X, Y)))\n", + " return {\"X\": X, \"Y\": Y, \"Z\": Z}\n", + "\n", + "def model_three_diverge():\n", + " X = pyro.sample(\"X\", dist.Bernoulli(0.5))\n", + " Y = pyro.sample(\"Y\", dist.Bernoulli(X))\n", + " Z = pyro.sample(\"Z\", dist.Bernoulli(X))\n", + " return {\"X\": X, \"Y\": Y, \"Z\": Z}\n" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [], + "source": [ + "@pytest.mark.parametrize(\"model\", [model_three_converge, model_three_diverge])\n", + "def test_three_variables(model):\n", + " with ExtractSupports() as supports:\n", + " model()\n", + "\n", + " with MultiWorldCounterfactual() as mwc: \n", + " with SearchForExplanation(\n", + " supports=supports.supports,\n", + " antecedents={\"X\": torch.tensor(1.0), \"Z\": torch.tensor(1.0)},\n", + " consequents={\"Y\": torch.tensor(1.0)},\n", + " witnesses={},\n", + " alternatives={\"X\": torch.tensor(0.0), \"Z\": torch.tensor(0.0)},\n", + " antecedent_bias=-0.5,\n", + " consequent_scale=0,\n", + " ):\n", + " with pyro.plate(\"sample\", size=1):\n", + " with pyro.poutine.trace() as trace:\n", + " model()\n", + "\n", + " trace.trace.compute_log_prob\n", + " nodes = trace.trace.nodes\n", + "\n", + " values = nodes[\"Y\"][\"value\"]\n", + " log_probs = nodes[\"__cause____consequent_Y\"][\"fn\"].log_factor\n", + "\n", + " print(values.squeeze())\n", + " print(log_probs.squeeze())\n", + "\n", + " assert log_probs.shape == torch.Size([3, 3, 1, 1, 1, 1])\n", + "\n", + " nec_worlds = IndexSet(**{name : {1} for name in [\"X\", \"Z\"]})\n", + " suff_worlds = IndexSet(**{name : {2} for name in [\"X\", \"Z\"]})\n", + "\n", + " with mwc:\n", + " nec_value = gather(values, nec_worlds)\n", + " nec_lp = gather(log_probs, nec_worlds)\n", + " assert nec_lp.exp().item() == 1 - nec_value.item()\n", + "\n", + " suff_value = gather(values, suff_worlds)\n", + " suff_lp = gather(log_probs, suff_worlds)\n", + " assert suff_lp.exp().item() == suff_value.item()\n", + "\n", + " assert torch.allclose(log_probs.squeeze().fill_diagonal_(0.0), torch.tensor(0.0))\n", + "\n", + " \n" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tensor([0., 0., 1.])\n", + "tensor([[0., 0., 0.],\n", + " [0., 0., 0.],\n", + " [0., 0., 0.]])\n" + ] + } + ], + "source": [ + "test_three_variables(model_three_diverge)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { From 1e65c7d59635a295aa2bea4a66668dd5f5dcfea9 Mon Sep 17 00:00:00 2001 From: PoorvaGarg Date: Tue, 6 Aug 2024 15:02:55 -0400 Subject: [PATCH 17/53] three variable test cases aded --- docs/source/test_three_variables.ipynb | 23 ++--- .../explainable/test_handlers_explanation.py | 84 +++++++++++++++++++ 2 files changed, 96 insertions(+), 11 deletions(-) diff --git a/docs/source/test_three_variables.ipynb b/docs/source/test_three_variables.ipynb index b696e3c7..848a3c64 100644 --- a/docs/source/test_three_variables.ipynb +++ b/docs/source/test_three_variables.ipynb @@ -181,18 +181,19 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 50, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor([0., 0., 1.])\n", + "tensor([[0., 0., 1.],\n", + " [0., 0., 0.],\n", + " [1., 1., 1.]])\n", "tensor([[0., 0., 0.],\n", " [0., 0., 0.],\n", - " [0., 0., 0.]])\n", - "tensor([[[[[0.]]]]]) tensor([[[[[[0.]]]]]])\n" + " [0., 0., 0.]])\n" ] } ], @@ -200,10 +201,10 @@ "with MultiWorldCounterfactual() as mwc_chain: \n", " with SearchForExplanation(\n", " supports=supports_chain.supports,\n", - " antecedents={\"X\": torch.tensor(1.0), \"Z\": torch.tensor(1.0)},\n", - " consequents={\"Y\": torch.tensor(1.0)},\n", + " antecedents={\"X\": torch.tensor(1.0), \"Y\": torch.tensor(1.0)},\n", + " consequents={\"Z\": torch.tensor(1.0)},\n", " witnesses={},\n", - " alternatives={\"X\": torch.tensor(0.0), \"Z\": torch.tensor(0.0)},\n", + " alternatives={\"X\": torch.tensor(0.0), \"Y\": torch.tensor(0.0)},\n", " antecedent_bias=-0.5,\n", " consequent_scale=0,\n", " ):\n", @@ -214,16 +215,16 @@ "trace_chain.trace.compute_log_prob\n", "nodes = trace_chain.trace.nodes\n", "\n", - "values = nodes[\"Y\"][\"value\"]\n", - "log_probs = nodes[\"__cause____consequent_Y\"][\"fn\"].log_factor\n", + "values = nodes[\"Z\"][\"value\"]\n", + "log_probs = nodes[\"__cause____consequent_Z\"][\"fn\"].log_factor\n", "\n", "print(values.squeeze())\n", "print(log_probs.squeeze())\n", "\n", "assert log_probs.shape == torch.Size([3, 3, 1, 1, 1, 1])\n", "\n", - "nec_worlds = IndexSet(**{name : {1} for name in [\"X\", \"Z\"]})\n", - "suff_worlds = IndexSet(**{name : {2} for name in [\"X\", \"Z\"]})\n", + "nec_worlds = IndexSet(**{name : {1} for name in [\"X\", \"Y\"]})\n", + "suff_worlds = IndexSet(**{name : {2} for name in [\"X\", \"Y\"]})\n", "\n", "with mwc_chain:\n", " nec_value = gather(values, nec_worlds)\n", diff --git a/tests/explainable/test_handlers_explanation.py b/tests/explainable/test_handlers_explanation.py index 89d067f0..7e2b0b7d 100644 --- a/tests/explainable/test_handlers_explanation.py +++ b/tests/explainable/test_handlers_explanation.py @@ -4,6 +4,7 @@ import pyro.distributions as dist import pyro.distributions.constraints as constraints import torch +import pytest from chirho.counterfactual.handlers.counterfactual import MultiWorldCounterfactual from chirho.explainable.handlers.components import undo_split @@ -409,3 +410,86 @@ def model_connected(): assert trace_reverse.trace.nodes["__cause____consequent_X"]["fn"].log_factor[2,0,0,0,:].sum().exp() == 1. assert torch.all(trace_reverse.trace.nodes["__cause____consequent_X"]["fn"].log_factor.sum().exp() == 0) + + +def model_three_converge(): + X = pyro.sample("X", dist.Bernoulli(0.5)) + Y = pyro.sample("Y", dist.Bernoulli(0.5)) + Z = pyro.sample("Z", dist.Bernoulli(torch.min(X, Y))) + return {"X": X, "Y": Y, "Z": Z} + +def model_three_diverge(): + X = pyro.sample("X", dist.Bernoulli(0.5)) + Y = pyro.sample("Y", dist.Bernoulli(X)) + Z = pyro.sample("Z", dist.Bernoulli(X)) + return {"X": X, "Y": Y, "Z": Z} + +def model_three_chain(): + X = pyro.sample("X", dist.Bernoulli(0.5)) + Y = pyro.sample("Y", dist.Bernoulli(X)) + Z = pyro.sample("Z", dist.Bernoulli(Y)) + return {"X": X, "Y": Y, "Z": Z} + +def model_three_complete(): + X = pyro.sample("X", dist.Bernoulli(0.5)) + Y = pyro.sample("Y", dist.Bernoulli(X)) + Z = pyro.sample("Z", dist.Bernoulli(torch.max(X, Y))) + return {"X": X, "Y": Y, "Z": Z} + +def model_three_isolate(): + X = pyro.sample("X", dist.Bernoulli(0.5)) + Y = pyro.sample("Y", dist.Bernoulli(X)) + Z = pyro.sample("Z", dist.Bernoulli(0.5)) + return {"X": X, "Y": Y, "Z": Z} + +def model_three_independent(): + X = pyro.sample("X", dist.Bernoulli(0.5)) + Y = pyro.sample("Y", dist.Bernoulli(0.5)) + Z = pyro.sample("Z", dist.Bernoulli(0.5)) + return {"X": X, "Y": Y, "Z": Z} + +@pytest.mark.parametrize("ante_cons", [("X", "Y", "Z"), ("X", "Z", "Y")]) +@pytest.mark.parametrize("model", [model_three_converge, model_three_diverge, model_three_chain, model_three_complete, model_three_isolate, model_three_independent]) +def test_eq_neq_three_variables(model, ante_cons): + ante1, ante2, cons = ante_cons + with ExtractSupports() as supports: + model() + + with MultiWorldCounterfactual() as mwc: + with SearchForExplanation( + supports=supports.supports, + antecedents={ante1: torch.tensor(1.0), ante2: torch.tensor(1.0)}, + consequents={cons: torch.tensor(1.0)}, + witnesses={}, + alternatives={ante1: torch.tensor(0.0), ante2: torch.tensor(0.0)}, + antecedent_bias=-0.5, + consequent_scale=0, + ): + with pyro.plate("sample", size=1): + with pyro.poutine.trace() as trace: + model() + + trace.trace.compute_log_prob + nodes = trace.trace.nodes + + values = nodes[cons]["value"] + log_probs = nodes[f"__cause____consequent_{cons}"]["fn"].log_factor + + assert log_probs.shape == torch.Size([3, 3, 1, 1, 1, 1]) + + fact_worlds = IndexSet(**{name : {0} for name in [ante1, ante2]}) + nec_worlds = IndexSet(**{name : {1} for name in [ante1, ante2]}) + suff_worlds = IndexSet(**{name : {2} for name in [ante1, ante2]}) + with mwc: + fact_lp = gather(log_probs, fact_worlds) + assert fact_lp.exp().item() == 1 + + nec_value = gather(values, nec_worlds) + nec_lp = gather(log_probs, nec_worlds) + assert nec_lp.exp().item() == 1 - nec_value.item() + + suff_value = gather(values, suff_worlds) + suff_lp = gather(log_probs, suff_worlds) + assert suff_lp.exp().item() == suff_value.item() + + assert torch.allclose(log_probs.squeeze().fill_diagonal_(0.0), torch.tensor(0.0)) From 405866069b0dd7a8f80d06ef40f38a1fb7a1cca5 Mon Sep 17 00:00:00 2001 From: PoorvaGarg Date: Tue, 6 Aug 2024 15:24:16 -0400 Subject: [PATCH 18/53] clean up --- chirho/explainable/handlers/components.py | 94 +-- docs/source/test_notebook.ipynb | 676 ------------------ docs/source/test_three_independent.ipynb | 142 ---- docs/source/test_three_variables.ipynb | 516 ------------- .../explainable/test_handlers_explanation.py | 7 +- 5 files changed, 7 insertions(+), 1428 deletions(-) delete mode 100644 docs/source/test_notebook.ipynb delete mode 100644 docs/source/test_three_independent.ipynb delete mode 100644 docs/source/test_three_variables.ipynb diff --git a/chirho/explainable/handlers/components.py b/chirho/explainable/handlers/components.py index 8fac00fc..c4b04e92 100644 --- a/chirho/explainable/handlers/components.py +++ b/chirho/explainable/handlers/components.py @@ -233,20 +233,9 @@ def consequent_eq_neq( def _consequent_eq_neq(consequent: T) -> torch.Tensor: - # print("consequent", consequent) - # factual_indices = IndexSet( - # **{ - # name: ind - # for name, ind in get_factual_indices().items() - # if name in antecedents - # } - # ) - necessity_world = kwargs.get("necessity_world", 1) sufficiency_world = kwargs.get("sufficiency_world", 2) - # print(indices_of(consequent, event_dim=support.event_dim).keys()) - necessity_indices = IndexSet( **{ name: {necessity_world} @@ -270,14 +259,6 @@ def _consequent_eq_neq(consequent: T) -> torch.Tensor: consequent, sufficiency_indices, event_dim=support.event_dim ) - # print("necessity_indices: ", necessity_indices) - # print("sufficiency_indices: ", sufficiency_indices) - # print("necessity_value: ", necessity_value) - # print("sufficiency_value: ", sufficiency_value) - - # compare to proposed consequent if provided - # as then the sufficiency value can be different - # due to witness preemption necessity_log_probs = ( soft_neq( support, @@ -294,28 +275,15 @@ def _consequent_eq_neq(consequent: T) -> torch.Tensor: ) ) - # print("necessity_log_probs", necessity_log_probs) - sufficiency_log_probs = ( soft_eq(support, sufficiency_value, proposed_consequent, **kwargs) if proposed_consequent is not None else torch.zeros_like(necessity_log_probs) ) - # print("sufficiency_log_probs", sufficiency_log_probs) - FACTUAL_NEC_SUFF = torch.zeros_like(sufficiency_log_probs) - # index_keys = set(antecedents) & set(indices_of(consequent, event_dim=support.event_dim)) if indices_of(consequent, event_dim=support.event_dim) else set(antecedents) index_keys = set(antecedents) - # null_index = factual_indices if factual_indices != {} else IndexSet( - # **{ - # name: {0} - # for name in index_keys - # } - # ) - - null_index = IndexSet( **{ name: {0} @@ -323,26 +291,9 @@ def _consequent_eq_neq(consequent: T) -> torch.Tensor: } ) - - # nec_suff_log_probs_partitioned = { - # **{ - # #factual_indices: FACTUAL_NEC_SUFF, - # null_index: FACTUAL_NEC_SUFF for antecedent in index_keys - # }, - # **{ - # IndexSet(**{antecedent: {ind}}): log_prob - # for antecedent in index_keys - # for ind, log_prob in zip( - # [necessity_world, sufficiency_world], - # [necessity_log_probs, sufficiency_log_probs], - # ) - # }, - # } - nec_suff_log_probs_partitioned = { **{ - #factual_indices: FACTUAL_NEC_SUFF, - null_index: FACTUAL_NEC_SUFF # for antecedent in index_keys + null_index: FACTUAL_NEC_SUFF }, **{ IndexSet(**{antecedent: {ind} for antecedent in index_keys}): log_prob @@ -353,53 +304,10 @@ def _consequent_eq_neq(consequent: T) -> torch.Tensor: }, } - - - # nec_suff_log_probs_partitioned = { - # **{ - # factual_indices: FACTUAL_NEC_SUFF, - # }, - # **{ - # IndexSet(**{antecedent: {ind}}): log_prob - # for antecedent in ( - # set(antecedents) - # & set(indices_of(consequent, event_dim=support.event_dim)) - # ) - # for ind, log_prob in zip( - # [necessity_world, sufficiency_world], - # [necessity_log_probs, sufficiency_log_probs], - # ) - # }, - # } - new_value = scatter_n( nec_suff_log_probs_partitioned, event_dim=0, ) - - # for ind, log_prob in zip([necessity_world, sufficiency_world], [necessity_log_probs, sufficiency_log_probs]): - # print(ind, log_prob) - - # print(set(antecedents)) - # print(set(indices_of(consequent, event_dim=support.event_dim))) - # print(set(antecedents) & set(indices_of(consequent, event_dim=support.event_dim))) - - # for antecedent in ( - # set(antecedents) - # & set(indices_of(consequent, event_dim=support.event_dim)) - # ): - # print("yo") - # print(antecedent) - - # print({factual_indices: FACTUAL_NEC_SUFF}) - # print(**{factual_indices: FACTUAL_NEC_SUFF}) - - - - # print("nec_suff_log_prob_partitioned", nec_suff_log_probs_partitioned) - # print("new_value", new_value) - - # print(necessity_log_probs, sufficiency_log_probs) return new_value return _consequent_eq_neq diff --git a/docs/source/test_notebook.ipynb b/docs/source/test_notebook.ipynb deleted file mode 100644 index ecb17685..00000000 --- a/docs/source/test_notebook.ipynb +++ /dev/null @@ -1,676 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import math\n", - "\n", - "import pyro\n", - "import pyro.distributions as dist\n", - "import pyro.distributions.constraints as constraints\n", - "import torch\n", - "\n", - "from typing import Callable, Mapping, Optional, TypeVar, Union\n", - "\n", - "\n", - "from chirho.explainable.handlers.components import (\n", - " consequent_eq_neq,\n", - " random_intervention,\n", - " sufficiency_intervention,\n", - " undo_split,\n", - ")\n", - "\n", - "from chirho.observational.handlers.condition import Factors\n", - "from chirho.counterfactual.handlers.counterfactual import MultiWorldCounterfactual\n", - "from chirho.counterfactual.handlers.selection import get_factual_indices\n", - "from chirho.explainable.handlers.components import undo_split, consequent_eq_neq, sufficiency_intervention\n", - "from chirho.explainable.handlers.explanation import SearchForExplanation, SplitSubsets\n", - "from chirho.explainable.handlers import ExtractSupports\n", - "from chirho.observational.handlers.condition import Factors\n", - "from chirho.interventional.handlers import do\n", - "from chirho.explainable.handlers.preemptions import Preemptions\n", - "from chirho.indexed.ops import IndexSet, gather\n", - "from chirho.observational.handlers.condition import condition\n", - "from chirho.indexed.ops import indices_of\n", - "\n", - "S = TypeVar(\"S\")\n", - "T = TypeVar(\"T\")" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "factual IndexSet({'X': {0}, 'Y': {0}})\n", - "IndexSet({'X': {0, 1, 2}})\n", - "IndexSet({'Y': {0, 1, 2}})\n", - "IndexSet({})\n" - ] - } - ], - "source": [ - "# def test_edge_eq_neq():\n", - "\n", - "def model_three_independent():\n", - " X = pyro.sample(\"X\", dist.Bernoulli(0.5))\n", - " Y = pyro.sample(\"Y\", dist.Bernoulli(0.5))\n", - " Z = pyro.sample(\"Z\", dist.Bernoulli(0.5))\n", - " return {\"X\": X, \"Y\": Y, \"Z\": Z}\n", - "\n", - "with ExtractSupports() as supports_independent:\n", - " model_three_independent()\n", - " \n", - "antecedents = {\"X\": (torch.tensor(0.0), torch.tensor(1.0)),\n", - " \"Y\": (torch.tensor(0.0), torch.tensor(1.0))}\n", - "\n", - "with MultiWorldCounterfactual() as m_ind_do:\n", - " with do(actions = antecedents):\n", - " with pyro.poutine.trace() as tr_do:\n", - " model_three_independent()\n", - " \n", - "nodes_do = tr_do.trace.nodes\n", - "\n", - "with m_ind_do:\n", - " print(\"factual\", get_factual_indices())\n", - " print(indices_of(nodes_do[\"X\"][\"value\"]))\n", - " print(indices_of(nodes_do[\"Y\"][\"value\"]))\n", - " print(indices_of(nodes_do[\"Z\"][\"value\"]))" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "factual IndexSet({'X': {0}, 'Y': {0}})\n", - "IndexSet({'X': {0, 1}})\n", - "IndexSet({'Y': {0, 1}})\n", - "IndexSet({})\n" - ] - } - ], - "source": [ - "antecedents={\"X\": torch.tensor(1.0), \"Y\": torch.tensor(1.0)}\n", - "alternatives={\"X\": torch.tensor(0.0), \"Y\": torch.tensor(0.0)}\n", - "supports=supports_independent.supports\n", - "antecedent_bias = 0.0 #-0.5\n", - "prefix = \"__cause__\"\n", - "consequents={\"Z\": torch.tensor(1.0)}\n", - "consequent_scale=0\n", - "factors = None\n", - "witnesses = {}\n", - "preemptions = None\n", - "witness_bias = 0.0\n", - "\n", - "\n", - "\n", - "alternatives = (\n", - " {a: alternatives[a] for a in antecedents.keys()}\n", - " if alternatives is not None\n", - " else {\n", - " a: random_intervention(supports[a], name=f\"{prefix}_alternative_{a}\")\n", - " for a in antecedents.keys()\n", - " }\n", - " )\n", - "\n", - "with MultiWorldCounterfactual() as m_ind_do:\n", - " with do(actions = alternatives):\n", - " with pyro.poutine.trace() as tr_do:\n", - " model_three_independent()\n", - " \n", - "nodes_do = tr_do.trace.nodes\n", - "\n", - "with m_ind_do:\n", - " print(\"factual\", get_factual_indices())\n", - " print(indices_of(nodes_do[\"X\"][\"value\"]))\n", - " print(indices_of(nodes_do[\"Y\"][\"value\"]))\n", - " print(indices_of(nodes_do[\"Z\"][\"value\"]))" - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'Z': tensor(1.)}\n" - ] - }, - { - "ename": "KeyboardInterrupt", - "evalue": "", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[38], line 55\u001b[0m\n\u001b[1;32m 53\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m antecedent_handler, witness_handler, consequent_handler:\n\u001b[1;32m 54\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m pyro\u001b[38;5;241m.\u001b[39mpoutine\u001b[38;5;241m.\u001b[39mtrace() \u001b[38;5;28;01mas\u001b[39;00m tr_do:\n\u001b[0;32m---> 55\u001b[0m \u001b[43mmodel_three_independent\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 57\u001b[0m nodes_do \u001b[38;5;241m=\u001b[39m tr_do\u001b[38;5;241m.\u001b[39mtrace\u001b[38;5;241m.\u001b[39mnodes\n\u001b[1;32m 59\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m m_ind_do:\n", - "Cell \u001b[0;32mIn[2], line 6\u001b[0m, in \u001b[0;36mmodel_three_independent\u001b[0;34m()\u001b[0m\n\u001b[1;32m 4\u001b[0m X \u001b[38;5;241m=\u001b[39m pyro\u001b[38;5;241m.\u001b[39msample(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mX\u001b[39m\u001b[38;5;124m\"\u001b[39m, dist\u001b[38;5;241m.\u001b[39mBernoulli(\u001b[38;5;241m0.5\u001b[39m))\n\u001b[1;32m 5\u001b[0m Y \u001b[38;5;241m=\u001b[39m pyro\u001b[38;5;241m.\u001b[39msample(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mY\u001b[39m\u001b[38;5;124m\"\u001b[39m, dist\u001b[38;5;241m.\u001b[39mBernoulli(\u001b[38;5;241m0.5\u001b[39m))\n\u001b[0;32m----> 6\u001b[0m Z \u001b[38;5;241m=\u001b[39m \u001b[43mpyro\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msample\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mZ\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdist\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mBernoulli\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m0.5\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 7\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m {\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mX\u001b[39m\u001b[38;5;124m\"\u001b[39m: X, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mY\u001b[39m\u001b[38;5;124m\"\u001b[39m: Y, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mZ\u001b[39m\u001b[38;5;124m\"\u001b[39m: Z}\n", - "File \u001b[0;32m~/miniconda3/envs/chirho/lib/python3.10/site-packages/pyro/primitives.py:189\u001b[0m, in \u001b[0;36msample\u001b[0;34m(name, fn, obs, obs_mask, infer, *args, **kwargs)\u001b[0m\n\u001b[1;32m 172\u001b[0m msg \u001b[38;5;241m=\u001b[39m Message(\n\u001b[1;32m 173\u001b[0m \u001b[38;5;28mtype\u001b[39m\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124msample\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 174\u001b[0m name\u001b[38;5;241m=\u001b[39mname,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 186\u001b[0m continuation\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[1;32m 187\u001b[0m )\n\u001b[1;32m 188\u001b[0m \u001b[38;5;66;03m# apply the stack and return its return value\u001b[39;00m\n\u001b[0;32m--> 189\u001b[0m \u001b[43mapply_stack\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmsg\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 190\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m msg[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mvalue\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;66;03m# type narrowing guaranteed by apply_stack\u001b[39;00m\n\u001b[1;32m 191\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m msg[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mvalue\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n", - "File \u001b[0;32m~/miniconda3/envs/chirho/lib/python3.10/site-packages/pyro/poutine/runtime.py:386\u001b[0m, in \u001b[0;36mapply_stack\u001b[0;34m(initial_msg)\u001b[0m\n\u001b[1;32m 383\u001b[0m default_process_message(msg)\n\u001b[1;32m 385\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m frame \u001b[38;5;129;01min\u001b[39;00m stack[\u001b[38;5;241m-\u001b[39mpointer:]:\n\u001b[0;32m--> 386\u001b[0m \u001b[43mframe\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_postprocess_message\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmsg\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 388\u001b[0m cont \u001b[38;5;241m=\u001b[39m msg[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mcontinuation\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n\u001b[1;32m 389\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m cont \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n", - "File \u001b[0;32m~/miniconda3/envs/chirho/lib/python3.10/site-packages/pyro/poutine/messenger.py:194\u001b[0m, in \u001b[0;36mMessenger._postprocess_message\u001b[0;34m(self, msg)\u001b[0m\n\u001b[1;32m 192\u001b[0m method \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mgetattr\u001b[39m(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m_pyro_post_\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mmsg[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtype\u001b[39m\u001b[38;5;124m'\u001b[39m]\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28;01mNone\u001b[39;00m)\n\u001b[1;32m 193\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m method \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m--> 194\u001b[0m \u001b[43mmethod\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmsg\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/s78projects/chirho/chirho/observational/handlers/condition.py:56\u001b[0m, in \u001b[0;36mFactors._pyro_post_sample\u001b[0;34m(self, msg)\u001b[0m\n\u001b[1;32m 53\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m:\n\u001b[1;32m 54\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m\n\u001b[0;32m---> 56\u001b[0m pyro\u001b[38;5;241m.\u001b[39mfactor(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mprefix\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;132;01m{\u001b[39;00mmsg[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mname\u001b[39m\u001b[38;5;124m'\u001b[39m]\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m, \u001b[43mfactor\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmsg\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mvalue\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m)\u001b[49m)\n", - "File \u001b[0;32m~/s78projects/chirho/chirho/explainable/handlers/components.py:350\u001b[0m, in \u001b[0;36mconsequent_eq_neq.._consequent_eq_neq\u001b[0;34m(consequent)\u001b[0m\n\u001b[1;32m 318\u001b[0m nec_suff_log_probs_partitioned \u001b[38;5;241m=\u001b[39m {\n\u001b[1;32m 319\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m{\n\u001b[1;32m 320\u001b[0m \u001b[38;5;66;03m#factual_indices: FACTUAL_NEC_SUFF,\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 330\u001b[0m },\n\u001b[1;32m 331\u001b[0m }\n\u001b[1;32m 333\u001b[0m \u001b[38;5;66;03m# nec_suff_log_probs_partitioned = {\u001b[39;00m\n\u001b[1;32m 334\u001b[0m \u001b[38;5;66;03m# **{\u001b[39;00m\n\u001b[1;32m 335\u001b[0m \u001b[38;5;66;03m# factual_indices: FACTUAL_NEC_SUFF,\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 347\u001b[0m \u001b[38;5;66;03m# },\u001b[39;00m\n\u001b[1;32m 348\u001b[0m \u001b[38;5;66;03m# }\u001b[39;00m\n\u001b[0;32m--> 350\u001b[0m new_value \u001b[38;5;241m=\u001b[39m \u001b[43mscatter_n\u001b[49m(\n\u001b[1;32m 351\u001b[0m nec_suff_log_probs_partitioned,\n\u001b[1;32m 352\u001b[0m event_dim\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m0\u001b[39m,\n\u001b[1;32m 353\u001b[0m )\n\u001b[1;32m 355\u001b[0m \u001b[38;5;66;03m# for ind, log_prob in zip([necessity_world, sufficiency_world], [necessity_log_probs, sufficiency_log_probs]):\u001b[39;00m\n\u001b[1;32m 356\u001b[0m \u001b[38;5;66;03m# print(ind, log_prob)\u001b[39;00m\n\u001b[1;32m 357\u001b[0m \n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 376\u001b[0m \n\u001b[1;32m 377\u001b[0m \u001b[38;5;66;03m# print(necessity_log_probs, sufficiency_log_probs)\u001b[39;00m\n\u001b[1;32m 378\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m new_value\n", - "File \u001b[0;32m~/s78projects/chirho/chirho/explainable/handlers/components.py:350\u001b[0m, in \u001b[0;36mconsequent_eq_neq.._consequent_eq_neq\u001b[0;34m(consequent)\u001b[0m\n\u001b[1;32m 318\u001b[0m nec_suff_log_probs_partitioned \u001b[38;5;241m=\u001b[39m {\n\u001b[1;32m 319\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m{\n\u001b[1;32m 320\u001b[0m \u001b[38;5;66;03m#factual_indices: FACTUAL_NEC_SUFF,\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 330\u001b[0m },\n\u001b[1;32m 331\u001b[0m }\n\u001b[1;32m 333\u001b[0m \u001b[38;5;66;03m# nec_suff_log_probs_partitioned = {\u001b[39;00m\n\u001b[1;32m 334\u001b[0m \u001b[38;5;66;03m# **{\u001b[39;00m\n\u001b[1;32m 335\u001b[0m \u001b[38;5;66;03m# factual_indices: FACTUAL_NEC_SUFF,\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 347\u001b[0m \u001b[38;5;66;03m# },\u001b[39;00m\n\u001b[1;32m 348\u001b[0m \u001b[38;5;66;03m# }\u001b[39;00m\n\u001b[0;32m--> 350\u001b[0m new_value \u001b[38;5;241m=\u001b[39m \u001b[43mscatter_n\u001b[49m(\n\u001b[1;32m 351\u001b[0m nec_suff_log_probs_partitioned,\n\u001b[1;32m 352\u001b[0m event_dim\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m0\u001b[39m,\n\u001b[1;32m 353\u001b[0m )\n\u001b[1;32m 355\u001b[0m \u001b[38;5;66;03m# for ind, log_prob in zip([necessity_world, sufficiency_world], [necessity_log_probs, sufficiency_log_probs]):\u001b[39;00m\n\u001b[1;32m 356\u001b[0m \u001b[38;5;66;03m# print(ind, log_prob)\u001b[39;00m\n\u001b[1;32m 357\u001b[0m \n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 376\u001b[0m \n\u001b[1;32m 377\u001b[0m \u001b[38;5;66;03m# print(necessity_log_probs, sufficiency_log_probs)\u001b[39;00m\n\u001b[1;32m 378\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m new_value\n", - "File \u001b[0;32m_pydevd_bundle/pydevd_cython.pyx:1457\u001b[0m, in \u001b[0;36m_pydevd_bundle.pydevd_cython.SafeCallWrapper.__call__\u001b[0;34m()\u001b[0m\n", - "File \u001b[0;32m_pydevd_bundle/pydevd_cython.pyx:701\u001b[0m, in \u001b[0;36m_pydevd_bundle.pydevd_cython.PyDBFrame.trace_dispatch\u001b[0;34m()\u001b[0m\n", - "File \u001b[0;32m_pydevd_bundle/pydevd_cython.pyx:1152\u001b[0m, in \u001b[0;36m_pydevd_bundle.pydevd_cython.PyDBFrame.trace_dispatch\u001b[0;34m()\u001b[0m\n", - "File \u001b[0;32m_pydevd_bundle/pydevd_cython.pyx:1135\u001b[0m, in \u001b[0;36m_pydevd_bundle.pydevd_cython.PyDBFrame.trace_dispatch\u001b[0;34m()\u001b[0m\n", - "File \u001b[0;32m_pydevd_bundle/pydevd_cython.pyx:312\u001b[0m, in \u001b[0;36m_pydevd_bundle.pydevd_cython.PyDBFrame.do_wait_suspend\u001b[0;34m()\u001b[0m\n", - "File \u001b[0;32m~/.local/lib/python3.10/site-packages/debugpy/_vendored/pydevd/pydevd.py:2070\u001b[0m, in \u001b[0;36mPyDB.do_wait_suspend\u001b[0;34m(self, thread, frame, event, arg, exception_type)\u001b[0m\n\u001b[1;32m 2067\u001b[0m from_this_thread\u001b[38;5;241m.\u001b[39mappend(frame_custom_thread_id)\n\u001b[1;32m 2069\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_threads_suspended_single_notification\u001b[38;5;241m.\u001b[39mnotify_thread_suspended(thread_id, thread, stop_reason):\n\u001b[0;32m-> 2070\u001b[0m keep_suspended \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_do_wait_suspend\u001b[49m\u001b[43m(\u001b[49m\u001b[43mthread\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mframe\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mevent\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43marg\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43msuspend_type\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfrom_this_thread\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mframes_tracker\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 2072\u001b[0m frames_list \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 2074\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m keep_suspended:\n\u001b[1;32m 2075\u001b[0m \u001b[38;5;66;03m# This means that we should pause again after a set next statement.\u001b[39;00m\n", - "File \u001b[0;32m~/.local/lib/python3.10/site-packages/debugpy/_vendored/pydevd/pydevd.py:2106\u001b[0m, in \u001b[0;36mPyDB._do_wait_suspend\u001b[0;34m(self, thread, frame, event, arg, suspend_type, from_this_thread, frames_tracker)\u001b[0m\n\u001b[1;32m 2103\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_call_input_hook()\n\u001b[1;32m 2105\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mprocess_internal_commands()\n\u001b[0;32m-> 2106\u001b[0m \u001b[43mtime\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msleep\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m0.01\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 2108\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcancel_async_evaluation(get_current_thread_id(thread), \u001b[38;5;28mstr\u001b[39m(\u001b[38;5;28mid\u001b[39m(frame)))\n\u001b[1;32m 2110\u001b[0m \u001b[38;5;66;03m# process any stepping instructions\u001b[39;00m\n", - "\u001b[0;31mKeyboardInterrupt\u001b[0m: " - ] - } - ], - "source": [ - "print(consequents)\n", - "\n", - "sufficiency_actions = {\n", - " a: (\n", - " antecedents[a]\n", - " if antecedents[a] is not None\n", - " else sufficiency_intervention(supports[a], antecedents=antecedents.keys())\n", - " )\n", - " for a in antecedents.keys()\n", - "}\n", - "\n", - "antecedent_handler = SplitSubsets(\n", - " {a: supports[a] for a in antecedents.keys()},\n", - " {a: (alternatives[a], sufficiency_actions[a]) for a in antecedents.keys()}, # type: ignore\n", - " bias=antecedent_bias,\n", - " prefix=f\"{prefix}__antecedent_\",\n", - ")\n", - "\n", - "\n", - "witness_handler = Preemptions(\n", - " (\n", - " {w: preemptions[w] for w in witnesses}\n", - " if preemptions is not None\n", - " else {\n", - " w: undo_split(supports[w], antecedents=antecedents.keys())\n", - " for w in witnesses\n", - " }\n", - " ),\n", - " bias=witness_bias,\n", - " prefix=f\"{prefix}__witness_\",\n", - " )\n", - "\n", - "\n", - "consequent_handler: Factors[T] = Factors(\n", - " (\n", - " {c: factors[c] for c in consequents.keys()}\n", - " if factors is not None\n", - " else {\n", - " c: consequent_eq_neq(\n", - " support=supports[c],\n", - " proposed_consequent=consequents[c], # added this\n", - " antecedents=antecedents.keys(),\n", - " scale=consequent_scale,\n", - " )\n", - " for c in consequents.keys()\n", - " }\n", - " ),\n", - " prefix=f\"{prefix}__consequent_\",\n", - " )\n", - "\n", - "\n", - "with MultiWorldCounterfactual() as m_ind_do:\n", - " with antecedent_handler, witness_handler, consequent_handler:\n", - " with pyro.poutine.trace() as tr_do:\n", - " model_three_independent()\n", - " \n", - "nodes_do = tr_do.trace.nodes\n", - "\n", - "with m_ind_do:\n", - " print(\"factual\", get_factual_indices())\n", - " print(indices_of(nodes_do[\"X\"][\"value\"]))\n", - " print(indices_of(nodes_do[\"Y\"][\"value\"]))\n", - " print(indices_of(nodes_do[\"Z\"][\"value\"]))\n" - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "IndexSet({'X': {0}, 'Y': {0}})\n", - "IndexSet({'X': {0, 1, 2}})\n", - "IndexSet({})\n", - "IndexSet({'Y': {0, 1, 2}})\n", - "IndexSet({'Y': {0, 1, 2}})\n" - ] - }, - { - "data": { - "text/plain": [ - "torch.Size([3, 3, 1, 1, 1, 1])" - ] - }, - "execution_count": 46, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "antecedents={\"X\": torch.tensor(1.0), \"Y\": torch.tensor(1.0)}\n", - "alternatives={\"X\": torch.tensor(0.0), \"Y\": torch.tensor(0.0)}\n", - "supports=supports_independent.supports\n", - "antecedent_bias = 0.0 #-0.5\n", - "prefix = \"__cause__\"\n", - "consequents={\"Z\": torch.tensor(1.0)}\n", - "consequent_scale=0\n", - "factors = None\n", - "witnesses = {}\n", - "preemptions = None\n", - "witness_bias = 0.0\n", - "\n", - "\n", - "with MultiWorldCounterfactual() as mwc_independent:\n", - " with SearchForExplanation(\n", - " supports=supports_independent.supports,\n", - " antecedents={\"X\": torch.tensor(1.0), \"Y\": torch.tensor(1.0)},\n", - " consequents={\"Z\": torch.tensor(1.0)},\n", - " witnesses={},\n", - " alternatives={\"X\": torch.tensor(0.0), \"Y\": torch.tensor(0.0)},\n", - " antecedent_bias=-0.5,\n", - " consequent_scale=0,\n", - " ): \n", - " # with SearchForExplanation(\n", - " # supports=supports_independent.supports,\n", - " # antecedents={\"X\": torch.tensor(1.0), \"Z\": torch.tensor(1.0)},\n", - " # consequents={\"Y\": torch.tensor(1.0)},\n", - " # witnesses={},\n", - " # alternatives={\"X\": torch.tensor(0.0), \"Z\": torch.tensor(0.0)},\n", - " # antecedent_bias=-0.5,\n", - " # consequent_scale=0,\n", - " # ):\n", - " with pyro.plate(\"sample\", size=1):\n", - " with pyro.poutine.trace() as trace_independent:\n", - " model_three_independent()\n", - "\n", - "trace_independent.trace.compute_log_prob\n", - "\n", - "with mwc_independent:\n", - " print(get_factual_indices())\n", - " print(indices_of(trace_independent.trace.nodes[\"X\"][\"value\"]))\n", - " print(indices_of(trace_independent.trace.nodes[\"Z\"][\"value\"]))\n", - " print(indices_of(trace_independent.trace.nodes[\"Y\"][\"value\"]))\n", - " print(indices_of(trace_independent.trace.nodes[\"__cause____consequent_Z\"][\"value\"]))\n", - "\n", - "trace_independent.trace.nodes[\"__cause____consequent_Z\"][\"fn\"].log_factor.shape" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [ - { - "ename": "KeyboardInterrupt", - "evalue": "", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[33], line 22\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m pyro\u001b[38;5;241m.\u001b[39mplate(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124msample\u001b[39m\u001b[38;5;124m\"\u001b[39m, size\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m1\u001b[39m):\n\u001b[1;32m 21\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m pyro\u001b[38;5;241m.\u001b[39mpoutine\u001b[38;5;241m.\u001b[39mtrace() \u001b[38;5;28;01mas\u001b[39;00m trace_independent:\n\u001b[0;32m---> 22\u001b[0m \u001b[43mmodel_three_dependent\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 24\u001b[0m trace_independent\u001b[38;5;241m.\u001b[39mtrace\u001b[38;5;241m.\u001b[39mcompute_log_prob\n\u001b[1;32m 26\u001b[0m \u001b[38;5;66;03m# with mwc_independent:\u001b[39;00m\n\u001b[1;32m 27\u001b[0m \u001b[38;5;66;03m# print(indices_of(trace_independent.trace.nodes[\"X\"][\"value\"]))\u001b[39;00m\n\u001b[1;32m 28\u001b[0m \u001b[38;5;66;03m# print(indices_of(trace_independent.trace.nodes[\"Z\"][\"value\"]))\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 31\u001b[0m \n\u001b[1;32m 32\u001b[0m \u001b[38;5;66;03m# trace_independent.trace.nodes[\"__cause____consequent_Y\"][\"fn\"].log_factor.shape\u001b[39;00m\n", - "Cell \u001b[0;32mIn[33], line 4\u001b[0m, in \u001b[0;36mmodel_three_dependent\u001b[0;34m()\u001b[0m\n\u001b[1;32m 2\u001b[0m X \u001b[38;5;241m=\u001b[39m pyro\u001b[38;5;241m.\u001b[39msample(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mX\u001b[39m\u001b[38;5;124m\"\u001b[39m, dist\u001b[38;5;241m.\u001b[39mBernoulli(\u001b[38;5;241m0.5\u001b[39m))\n\u001b[1;32m 3\u001b[0m Y \u001b[38;5;241m=\u001b[39m pyro\u001b[38;5;241m.\u001b[39msample(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mY\u001b[39m\u001b[38;5;124m\"\u001b[39m, dist\u001b[38;5;241m.\u001b[39mBernoulli(\u001b[38;5;241m0.5\u001b[39m))\n\u001b[0;32m----> 4\u001b[0m Z \u001b[38;5;241m=\u001b[39m \u001b[43mpyro\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msample\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mZ\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdist\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mBernoulli\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtorch\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmin\u001b[49m\u001b[43m(\u001b[49m\u001b[43mX\u001b[49m\u001b[43m,\u001b[49m\u001b[43mY\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 5\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m {\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mX\u001b[39m\u001b[38;5;124m\"\u001b[39m: X, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mY\u001b[39m\u001b[38;5;124m\"\u001b[39m: Y, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mZ\u001b[39m\u001b[38;5;124m\"\u001b[39m: Z}\n", - "File \u001b[0;32m~/miniconda3/envs/chirho/lib/python3.10/site-packages/pyro/primitives.py:189\u001b[0m, in \u001b[0;36msample\u001b[0;34m(name, fn, obs, obs_mask, infer, *args, **kwargs)\u001b[0m\n\u001b[1;32m 172\u001b[0m msg \u001b[38;5;241m=\u001b[39m Message(\n\u001b[1;32m 173\u001b[0m \u001b[38;5;28mtype\u001b[39m\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124msample\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 174\u001b[0m name\u001b[38;5;241m=\u001b[39mname,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 186\u001b[0m continuation\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[1;32m 187\u001b[0m )\n\u001b[1;32m 188\u001b[0m \u001b[38;5;66;03m# apply the stack and return its return value\u001b[39;00m\n\u001b[0;32m--> 189\u001b[0m \u001b[43mapply_stack\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmsg\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 190\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m msg[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mvalue\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;66;03m# type narrowing guaranteed by apply_stack\u001b[39;00m\n\u001b[1;32m 191\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m msg[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mvalue\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n", - "File \u001b[0;32m~/miniconda3/envs/chirho/lib/python3.10/site-packages/pyro/poutine/runtime.py:386\u001b[0m, in \u001b[0;36mapply_stack\u001b[0;34m(initial_msg)\u001b[0m\n\u001b[1;32m 383\u001b[0m default_process_message(msg)\n\u001b[1;32m 385\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m frame \u001b[38;5;129;01min\u001b[39;00m stack[\u001b[38;5;241m-\u001b[39mpointer:]:\n\u001b[0;32m--> 386\u001b[0m \u001b[43mframe\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_postprocess_message\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmsg\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 388\u001b[0m cont \u001b[38;5;241m=\u001b[39m msg[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mcontinuation\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n\u001b[1;32m 389\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m cont \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n", - "File \u001b[0;32m~/miniconda3/envs/chirho/lib/python3.10/site-packages/pyro/poutine/messenger.py:194\u001b[0m, in \u001b[0;36mMessenger._postprocess_message\u001b[0;34m(self, msg)\u001b[0m\n\u001b[1;32m 192\u001b[0m method \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mgetattr\u001b[39m(\u001b[38;5;28mself\u001b[39m, \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m_pyro_post_\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mmsg[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mtype\u001b[39m\u001b[38;5;124m'\u001b[39m]\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28;01mNone\u001b[39;00m)\n\u001b[1;32m 193\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m method \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m--> 194\u001b[0m \u001b[43mmethod\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmsg\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/s78projects/chirho/chirho/observational/handlers/condition.py:56\u001b[0m, in \u001b[0;36mFactors._pyro_post_sample\u001b[0;34m(self, msg)\u001b[0m\n\u001b[1;32m 53\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m:\n\u001b[1;32m 54\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m\n\u001b[0;32m---> 56\u001b[0m pyro\u001b[38;5;241m.\u001b[39mfactor(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mprefix\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;132;01m{\u001b[39;00mmsg[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mname\u001b[39m\u001b[38;5;124m'\u001b[39m]\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m, \u001b[43mfactor\u001b[49m\u001b[43m(\u001b[49m\u001b[43mmsg\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mvalue\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m)\u001b[49m)\n", - "File \u001b[0;32m~/s78projects/chirho/chirho/explainable/handlers/components.py:350\u001b[0m, in \u001b[0;36mconsequent_eq_neq.._consequent_eq_neq\u001b[0;34m(consequent)\u001b[0m\n\u001b[1;32m 318\u001b[0m nec_suff_log_probs_partitioned \u001b[38;5;241m=\u001b[39m {\n\u001b[1;32m 319\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m{\n\u001b[1;32m 320\u001b[0m \u001b[38;5;66;03m#factual_indices: FACTUAL_NEC_SUFF,\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 330\u001b[0m },\n\u001b[1;32m 331\u001b[0m }\n\u001b[1;32m 333\u001b[0m \u001b[38;5;66;03m# nec_suff_log_probs_partitioned = {\u001b[39;00m\n\u001b[1;32m 334\u001b[0m \u001b[38;5;66;03m# **{\u001b[39;00m\n\u001b[1;32m 335\u001b[0m \u001b[38;5;66;03m# factual_indices: FACTUAL_NEC_SUFF,\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 347\u001b[0m \u001b[38;5;66;03m# },\u001b[39;00m\n\u001b[1;32m 348\u001b[0m \u001b[38;5;66;03m# }\u001b[39;00m\n\u001b[0;32m--> 350\u001b[0m new_value \u001b[38;5;241m=\u001b[39m \u001b[43mscatter_n\u001b[49m(\n\u001b[1;32m 351\u001b[0m nec_suff_log_probs_partitioned,\n\u001b[1;32m 352\u001b[0m event_dim\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m0\u001b[39m,\n\u001b[1;32m 353\u001b[0m )\n\u001b[1;32m 355\u001b[0m \u001b[38;5;66;03m# for ind, log_prob in zip([necessity_world, sufficiency_world], [necessity_log_probs, sufficiency_log_probs]):\u001b[39;00m\n\u001b[1;32m 356\u001b[0m \u001b[38;5;66;03m# print(ind, log_prob)\u001b[39;00m\n\u001b[1;32m 357\u001b[0m \n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 376\u001b[0m \n\u001b[1;32m 377\u001b[0m \u001b[38;5;66;03m# print(necessity_log_probs, sufficiency_log_probs)\u001b[39;00m\n\u001b[1;32m 378\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m new_value\n", - "File \u001b[0;32m~/s78projects/chirho/chirho/explainable/handlers/components.py:350\u001b[0m, in \u001b[0;36mconsequent_eq_neq.._consequent_eq_neq\u001b[0;34m(consequent)\u001b[0m\n\u001b[1;32m 318\u001b[0m nec_suff_log_probs_partitioned \u001b[38;5;241m=\u001b[39m {\n\u001b[1;32m 319\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39m{\n\u001b[1;32m 320\u001b[0m \u001b[38;5;66;03m#factual_indices: FACTUAL_NEC_SUFF,\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 330\u001b[0m },\n\u001b[1;32m 331\u001b[0m }\n\u001b[1;32m 333\u001b[0m \u001b[38;5;66;03m# nec_suff_log_probs_partitioned = {\u001b[39;00m\n\u001b[1;32m 334\u001b[0m \u001b[38;5;66;03m# **{\u001b[39;00m\n\u001b[1;32m 335\u001b[0m \u001b[38;5;66;03m# factual_indices: FACTUAL_NEC_SUFF,\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 347\u001b[0m \u001b[38;5;66;03m# },\u001b[39;00m\n\u001b[1;32m 348\u001b[0m \u001b[38;5;66;03m# }\u001b[39;00m\n\u001b[0;32m--> 350\u001b[0m new_value \u001b[38;5;241m=\u001b[39m \u001b[43mscatter_n\u001b[49m(\n\u001b[1;32m 351\u001b[0m nec_suff_log_probs_partitioned,\n\u001b[1;32m 352\u001b[0m event_dim\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m0\u001b[39m,\n\u001b[1;32m 353\u001b[0m )\n\u001b[1;32m 355\u001b[0m \u001b[38;5;66;03m# for ind, log_prob in zip([necessity_world, sufficiency_world], [necessity_log_probs, sufficiency_log_probs]):\u001b[39;00m\n\u001b[1;32m 356\u001b[0m \u001b[38;5;66;03m# print(ind, log_prob)\u001b[39;00m\n\u001b[1;32m 357\u001b[0m \n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 376\u001b[0m \n\u001b[1;32m 377\u001b[0m \u001b[38;5;66;03m# print(necessity_log_probs, sufficiency_log_probs)\u001b[39;00m\n\u001b[1;32m 378\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m new_value\n", - "File \u001b[0;32m_pydevd_bundle/pydevd_cython.pyx:1457\u001b[0m, in \u001b[0;36m_pydevd_bundle.pydevd_cython.SafeCallWrapper.__call__\u001b[0;34m()\u001b[0m\n", - "File \u001b[0;32m_pydevd_bundle/pydevd_cython.pyx:701\u001b[0m, in \u001b[0;36m_pydevd_bundle.pydevd_cython.PyDBFrame.trace_dispatch\u001b[0;34m()\u001b[0m\n", - "File \u001b[0;32m_pydevd_bundle/pydevd_cython.pyx:1152\u001b[0m, in \u001b[0;36m_pydevd_bundle.pydevd_cython.PyDBFrame.trace_dispatch\u001b[0;34m()\u001b[0m\n", - "File \u001b[0;32m_pydevd_bundle/pydevd_cython.pyx:1135\u001b[0m, in \u001b[0;36m_pydevd_bundle.pydevd_cython.PyDBFrame.trace_dispatch\u001b[0;34m()\u001b[0m\n", - "File \u001b[0;32m_pydevd_bundle/pydevd_cython.pyx:312\u001b[0m, in \u001b[0;36m_pydevd_bundle.pydevd_cython.PyDBFrame.do_wait_suspend\u001b[0;34m()\u001b[0m\n", - "File \u001b[0;32m~/.local/lib/python3.10/site-packages/debugpy/_vendored/pydevd/pydevd.py:2070\u001b[0m, in \u001b[0;36mPyDB.do_wait_suspend\u001b[0;34m(self, thread, frame, event, arg, exception_type)\u001b[0m\n\u001b[1;32m 2067\u001b[0m from_this_thread\u001b[38;5;241m.\u001b[39mappend(frame_custom_thread_id)\n\u001b[1;32m 2069\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_threads_suspended_single_notification\u001b[38;5;241m.\u001b[39mnotify_thread_suspended(thread_id, thread, stop_reason):\n\u001b[0;32m-> 2070\u001b[0m keep_suspended \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_do_wait_suspend\u001b[49m\u001b[43m(\u001b[49m\u001b[43mthread\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mframe\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mevent\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43marg\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43msuspend_type\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfrom_this_thread\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mframes_tracker\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 2072\u001b[0m frames_list \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 2074\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m keep_suspended:\n\u001b[1;32m 2075\u001b[0m \u001b[38;5;66;03m# This means that we should pause again after a set next statement.\u001b[39;00m\n", - "File \u001b[0;32m~/.local/lib/python3.10/site-packages/debugpy/_vendored/pydevd/pydevd.py:2106\u001b[0m, in \u001b[0;36mPyDB._do_wait_suspend\u001b[0;34m(self, thread, frame, event, arg, suspend_type, from_this_thread, frames_tracker)\u001b[0m\n\u001b[1;32m 2103\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_call_input_hook()\n\u001b[1;32m 2105\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mprocess_internal_commands()\n\u001b[0;32m-> 2106\u001b[0m \u001b[43mtime\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msleep\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m0.01\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 2108\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcancel_async_evaluation(get_current_thread_id(thread), \u001b[38;5;28mstr\u001b[39m(\u001b[38;5;28mid\u001b[39m(frame)))\n\u001b[1;32m 2110\u001b[0m \u001b[38;5;66;03m# process any stepping instructions\u001b[39;00m\n", - "\u001b[0;31mKeyboardInterrupt\u001b[0m: " - ] - } - ], - "source": [ - "def model_three_dependent():\n", - " X = pyro.sample(\"X\", dist.Bernoulli(0.5))\n", - " Y = pyro.sample(\"Y\", dist.Bernoulli(0.5))\n", - " Z = pyro.sample(\"Z\", dist.Bernoulli(torch.min(X,Y)))\n", - " return {\"X\": X, \"Y\": Y, \"Z\": Z}\n", - "\n", - "with ExtractSupports() as supports_independent:\n", - " model_three_dependent()\n", - "\n", - "with MultiWorldCounterfactual() as mwc_independent: \n", - " with SearchForExplanation(\n", - " supports=supports_independent.supports,\n", - " antecedents={\"X\": torch.tensor(1.0), \"Y\": torch.tensor(1.0)},\n", - " consequents={\"Z\": torch.tensor(1.0)},\n", - " witnesses={},\n", - " alternatives={\"X\": torch.tensor(0.0), \"Y\": torch.tensor(0.0)},\n", - " #antecedent_bias=-0.5,\n", - " consequent_scale=0,\n", - " ):\n", - " with pyro.plate(\"sample\", size=1):\n", - " with pyro.poutine.trace() as trace_independent:\n", - " model_three_dependent()\n", - "\n", - "trace_independent.trace.compute_log_prob\n", - "\n", - "# with mwc_independent:\n", - "# print(indices_of(trace_independent.trace.nodes[\"X\"][\"value\"]))\n", - "# print(indices_of(trace_independent.trace.nodes[\"Z\"][\"value\"]))\n", - "# print(indices_of(trace_independent.trace.nodes[\"Y\"][\"value\"]))\n", - "# print(indices_of(trace_independent.trace.nodes[\"__cause____consequent_Y\"][\"value\"]))\n", - "\n", - "# trace_independent.trace.nodes[\"__cause____consequent_Y\"][\"fn\"].log_factor.shape" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "def model_independent():\n", - " X = pyro.sample(\"X\", dist.Bernoulli(0.5))\n", - " Y = pyro.sample(\"Y\", dist.Bernoulli(0.5))\n", - "\n", - "with ExtractSupports() as supports_independent:\n", - " model_independent()\n", - "\n", - "with MultiWorldCounterfactual() as mwc_independent: \n", - " with SearchForExplanation(\n", - " supports=supports_independent.supports,\n", - " antecedents={\"X\": torch.tensor(1.0)},\n", - " consequents={\"Y\": torch.tensor(1.0)},\n", - " witnesses={},\n", - " alternatives={\"X\": torch.tensor(0.0)},\n", - " antecedent_bias=-0.5,\n", - " consequent_scale=0,\n", - " ):\n", - " with pyro.plate(\"sample\", size=3):\n", - " with pyro.poutine.trace() as trace_independent:\n", - " model_independent()" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "tensor([[[[[0., 0., 0.]]]],\n", - "\n", - "\n", - "\n", - " [[[[-inf, 0., -inf]]]],\n", - "\n", - "\n", - "\n", - " [[[[0., -inf, 0.]]]]])" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "def model_triple():\n", - " X = pyro.sample(\"X\", dist.Bernoulli(0.5))\n", - " Y = pyro.sample(\"Y\", dist.Bernoulli(X))\n", - " Z = pyro.sample(\"Z\", dist.Bernoulli(Y))\n", - "\n", - "with ExtractSupports() as supports_triple:\n", - " model_triple()\n", - "\n", - "with MultiWorldCounterfactual() as mwc_triple: \n", - " with SearchForExplanation(\n", - " supports=supports_triple.supports,\n", - " antecedents={\"Z\": torch.tensor(1.0)},\n", - " consequents={\"X\": torch.tensor(1.0)},\n", - " witnesses={},\n", - " alternatives={\"Z\": torch.tensor(0.0)},\n", - " antecedent_bias=-0.5,\n", - " consequent_scale=0,\n", - " ):\n", - " with pyro.plate(\"sample\", size=3):\n", - " with pyro.poutine.trace() as trace_triple:\n", - " model_triple()\n", - "\n", - "trace_triple.trace.compute_log_prob\n", - "\n", - "\n", - "trace_triple.trace.nodes[\"X\"][\"value\"]\n", - "trace_triple.trace.nodes[\"__cause____consequent_X\"][\"fn\"].log_factor" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "w torch.Size([3, 4, 1, 1, 1, 3]) c torch.Size([3, 4, 1, 1, 1, 3])\n", - "odict_keys(['w', 'consequent'])\n", - "IndexSet({'w': {0, 1, 2, 3}})\n", - "IndexSet({'w': {0, 1, 2, 3}})\n" - ] - } - ], - "source": [ - "event_shape = (3,) #(3,)\n", - "plate_size = 4\n", - "\n", - "\n", - "factors = {\n", - " \"consequent\": consequent_eq_neq(\n", - " support=constraints.independent(constraints.real, 0),\n", - " proposed_consequent=torch.Tensor([0.01]), \n", - " antecedents=[\"w\"],\n", - " )\n", - "}\n", - "\n", - "\n", - "# fake_w = dist.Normal(0, 0.1).expand(event_shape).to_event(len(event_shape)).sample()\n", - "\n", - "# @Factors(factors=factors)\n", - "@pyro.plate(\"data\", size=plate_size, dim=-4)\n", - "def model_ce():\n", - " w = pyro.sample(\"w\", dist.Normal(0, 0.1).expand(event_shape).to_event(len(event_shape)))\n", - " # w = pyro.sample(\"w\", dist.Normal(fake_w, 0.001))\n", - "\n", - " consequent = pyro.deterministic(\"consequent\", w * torch.tensor(0.1))\n", - "\n", - " print(\"w\", w.shape, \"c\", consequent.shape)\n", - " assert w.shape == consequent.shape\n", - "\n", - "\n", - "antecedents = {\n", - " \"w\": (\n", - " torch.tensor(0.1).expand(event_shape),\n", - " sufficiency_intervention(\n", - " constraints.independent(constraints.real, len(event_shape)),\n", - " [\"w\"]\n", - " )\n", - " )\n", - " }\n", - "\n", - "with MultiWorldCounterfactual() as mwc_ce:\n", - " with do(actions = antecedents):\n", - " with pyro.poutine.trace() as trace_ce: \n", - " model_ce()\n", - " \n", - "print(trace_ce.trace.nodes.keys())\n", - "with mwc_ce:\n", - " print(indices_of(trace_ce.trace.nodes[\"w\"][\"value\"]))\n", - " print(indices_of(trace_ce.trace.nodes[\"consequent\"][\"value\"]))\n", - " # print(indices_of(trace_ce.trace.nodes['__factor_consequent'][\"fn\"].log_factor))\n", - " # print(trace_ce.trace.nodes['__factor_consequent'][\"fn\"].log_factor)\n", - "\n", - "\n", - "# nd = trace_ce.trace.nodes\n", - "\n", - "# trace_ce.trace.compute_log_prob\n", - "\n", - "# with mwc_ce:\n", - "# eq_neq_log_probs_fact = gather(\n", - "# nd[\"__factor_consequent\"][\"fn\"].log_factor, IndexSet(**{\"w\": {0}}, event_dim = 0)\n", - "# )\n", - "\n", - "# eq_neq_log_probs_nec = gather(\n", - "# nd[\"__factor_consequent\"][\"fn\"].log_factor, IndexSet(**{\"w\": {1}}, event_dim = 0)\n", - "# )\n", - " \n", - "# consequent_suff = gather(\n", - "# nd[\"consequent\"][\"value\"], IndexSet(**{\"w\": {2}}, event_dim = 0 )\n", - "# )\n", - "\n", - "\n", - "# print(\"what's up\", indices_of(nd[\"consequent\"][\"value\"]))\n", - "\n", - "\n", - "# eq_neq_log_probs_suff = gather(\n", - "# nd[\"__factor_consequent\"][\"fn\"].log_factor, IndexSet(**{\"w\": {2}})\n", - "# )\n", - "\n", - "# assert eq_neq_log_probs_nec.shape == consequent_suff.shape\n", - "\n", - "# assert torch.equal(eq_neq_log_probs_suff, dist.Normal(0.0, .1).log_prob(consequent_suff - torch.tensor(.01)))\n", - "# assert eq_neq_log_probs_nec.sum().exp() == 0 \n", - "\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 57, - "metadata": {}, - "outputs": [], - "source": [ - "# event_shape = (3,) #(3,)\n", - "# plate_size = 4\n", - "\n", - "# def test_consequent_eq_neq():\n", - "# factors = {\n", - "# \"consequent\": consequent_eq_neq(\n", - "# support=constraints.independent(constraints.real, len(event_shape)),\n", - "# proposed_consequent=torch.Tensor([0.01]), \n", - "# antecedents=[\"w\"],\n", - "# event_dim=len(event_shape),\n", - "# )\n", - "# }\n", - "\n", - "# @Factors(factors=factors)\n", - "# @pyro.plate(\"data\", size=plate_size, dim=-1)\n", - "# def model_ce():\n", - "# w = pyro.sample(\n", - "# \"w\", dist.Normal(0, 0.1).expand(event_shape).to_event(len(event_shape))\n", - "# )\n", - "# #consequent = pyro.deterministic(\n", - "# # \"consequent\", w * 0.1, event_dim=len(event_shape)\n", - "# #)\n", - "# consequent = pyro.sample(\"consequent\", dist.Delta(w * 0.1).to_event(len(event_shape)))\n", - "\n", - "# return consequent\n", - "\n", - "# antecedents = {\n", - "# \"w\": (\n", - "# torch.tensor(0.1).expand(event_shape),\n", - "# sufficiency_intervention(\n", - "# constraints.independent(constraints.real, len(event_shape)), [\"w\"]\n", - "# ),\n", - "# )\n", - "# }\n", - "\n", - "# with MultiWorldCounterfactual() as mwc:\n", - "# with do(actions=antecedents):\n", - "# with pyro.poutine.trace() as tr:\n", - "# model_ce()\n", - "\n", - "# tr.trace.compute_log_prob()\n", - "# nd = tr.trace.nodes\n", - "\n", - "\n", - "# with mwc:\n", - "# eq_neq_log_probs_fact = gather(\n", - "# nd[\"__factor_consequent\"][\"log_prob\"], IndexSet(**{\"w\": {0}}, event_dim = 0)\n", - "# )\n", - "\n", - "# eq_neq_log_probs_nec = gather(\n", - "# nd[\"__factor_consequent\"][\"log_prob\"], IndexSet(**{\"w\": {1}}, event_dim = 0)\n", - "# )\n", - " \n", - "# consequent_suff = gather(\n", - "# nd[\"consequent\"][\"value\"], IndexSet(**{\"w\": {2}}, event_dim = 0 )\n", - "# )\n", - "\n", - "\n", - "# print(indices_of(nd[\"consequent\"][\"value\"]))\n", - "\n", - "\n", - "# eq_neq_log_probs_suff = gather(\n", - "# nd[\"__factor_consequent\"][\"log_prob\"], IndexSet(**{\"w\": {2}})\n", - "# )\n", - "\n", - "# assert eq_neq_log_probs_nec.shape == consequent_suff.shape\n", - "\n", - "# assert torch.equal(eq_neq_log_probs_suff, dist.Normal(0.0, .1).log_prob(consequent_suff - torch.tensor(.01)))\n", - "# assert eq_neq_log_probs_nec.sum().exp() == 0 \n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": ".venv", - "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.10.14" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/source/test_three_independent.ipynb b/docs/source/test_three_independent.ipynb deleted file mode 100644 index 34dbdad2..00000000 --- a/docs/source/test_three_independent.ipynb +++ /dev/null @@ -1,142 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [], - "source": [ - "import math\n", - "\n", - "import pyro\n", - "import pyro.distributions as dist\n", - "import pyro.distributions.constraints as constraints\n", - "import torch\n", - "\n", - "from typing import Callable, Mapping, Optional, TypeVar, Union\n", - "\n", - "\n", - "from chirho.explainable.handlers.components import (\n", - " consequent_eq_neq,\n", - " random_intervention,\n", - " sufficiency_intervention,\n", - " undo_split,\n", - ")\n", - "\n", - "from chirho.observational.handlers.condition import Factors\n", - "from chirho.counterfactual.handlers.counterfactual import MultiWorldCounterfactual\n", - "from chirho.counterfactual.handlers.selection import get_factual_indices\n", - "from chirho.explainable.handlers.components import undo_split, consequent_eq_neq, sufficiency_intervention\n", - "from chirho.explainable.handlers.explanation import SearchForExplanation, SplitSubsets\n", - "from chirho.explainable.handlers import ExtractSupports\n", - "from chirho.observational.handlers.condition import Factors\n", - "from chirho.interventional.handlers import do\n", - "from chirho.explainable.handlers.preemptions import Preemptions\n", - "from chirho.indexed.ops import IndexSet, gather\n", - "from chirho.observational.handlers.condition import condition\n", - "from chirho.indexed.ops import indices_of\n", - "\n", - "S = TypeVar(\"S\")\n", - "T = TypeVar(\"T\")" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [], - "source": [ - "def model_three_independent():\n", - " X = pyro.sample(\"X\", dist.Bernoulli(0.5))\n", - " Y = pyro.sample(\"Y\", dist.Bernoulli(0.5))\n", - " Z = pyro.sample(\"Z\", dist.Bernoulli(0.5))\n", - " return {\"X\": X, \"Y\": Y, \"Z\": Z}\n", - "\n", - "with ExtractSupports() as supports_independent:\n", - " model_three_independent()" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "X Y Z\n", - "X Z Y\n" - ] - } - ], - "source": [ - "antecedent_sets = [{\"X\": torch.tensor(1.0), \"Y\": torch.tensor(1.0)}, {\"X\": torch.tensor(1.0), \"Z\": torch.tensor(1.0)}]\n", - "consequent_sets = [{\"Z\": torch.tensor(1.0)}, {\"Y\": torch.tensor(1.0)}]\n", - "\n", - "tests = [(\"X\", \"Y\", \"Z\"), (\"X\", \"Z\", \"Y\")]\n", - "for antecedent1, antecedent2, consequent in tests:\n", - " print(antecedent1, antecedent2, consequent)\n", - " with MultiWorldCounterfactual() as mwc_independent: \n", - " with SearchForExplanation(\n", - " supports=supports_independent.supports,\n", - " antecedents={antecedent1: torch.tensor(0.0), antecedent2: torch.tensor(0.0)},\n", - " consequents={consequent: torch.tensor(1.0)},\n", - " witnesses={},\n", - " alternatives={antecedent1: torch.tensor(0.0), antecedent2: torch.tensor(0.0)},\n", - " antecedent_bias=-0.5,\n", - " consequent_scale=0,\n", - " ):\n", - " with pyro.plate(\"sample\", size=1):\n", - " with pyro.poutine.trace() as trace_independent:\n", - " model_three_independent()\n", - "\n", - " trace_independent.trace.compute_log_prob\n", - " nodes = trace_independent.trace.nodes\n", - "\n", - " log_probs = nodes[f\"__cause____consequent_{consequent}\"][\"fn\"].log_factor\n", - "\n", - " assert log_probs.shape == torch.Size([3, 3, 1, 1, 1, 1])\n", - "\n", - " nec_worlds = IndexSet(**{name : {1} for name in [antecedent1, antecedent2]})\n", - " suff_worlds = IndexSet(**{name : {2} for name in [antecedent1, antecedent2]})\n", - "\n", - " with mwc_independent:\n", - " nec_lp = gather(log_probs, nec_worlds)\n", - " if nodes[consequent][\"value\"].item() == 1:\n", - " assert nec_lp.exp().item() == 0.0 \n", - " else:\n", - " assert nec_lp.exp().item() == 1.0\n", - "\n", - " suff_lp = gather(log_probs, suff_worlds)\n", - " if nodes[consequent][\"value\"].item() == 1:\n", - " assert suff_lp.exp().item() == 1.0\n", - " else:\n", - " assert suff_lp.exp().item() == 0.0\n", - "\n", - " assert torch.allclose(log_probs.squeeze().fill_diagonal_(0.0), torch.tensor(0.0))" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": ".venv", - "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.10.14" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/source/test_three_variables.ipynb b/docs/source/test_three_variables.ipynb deleted file mode 100644 index 848a3c64..00000000 --- a/docs/source/test_three_variables.ipynb +++ /dev/null @@ -1,516 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [], - "source": [ - "import math\n", - "\n", - "import pyro\n", - "import pyro.distributions as dist\n", - "import pyro.distributions.constraints as constraints\n", - "import torch\n", - "\n", - "from typing import Callable, Mapping, Optional, TypeVar, Union\n", - "\n", - "\n", - "from chirho.explainable.handlers.components import (\n", - " consequent_eq_neq,\n", - " random_intervention,\n", - " sufficiency_intervention,\n", - " undo_split,\n", - ")\n", - "\n", - "from chirho.observational.handlers.condition import Factors\n", - "from chirho.counterfactual.handlers.counterfactual import MultiWorldCounterfactual\n", - "from chirho.counterfactual.handlers.selection import get_factual_indices\n", - "from chirho.explainable.handlers.components import undo_split, consequent_eq_neq, sufficiency_intervention\n", - "from chirho.explainable.handlers.explanation import SearchForExplanation, SplitSubsets\n", - "from chirho.explainable.handlers import ExtractSupports\n", - "from chirho.observational.handlers.condition import Factors\n", - "from chirho.interventional.handlers import do\n", - "from chirho.explainable.handlers.preemptions import Preemptions\n", - "from chirho.indexed.ops import IndexSet, gather\n", - "from chirho.observational.handlers.condition import condition\n", - "from chirho.indexed.ops import indices_of\n", - "\n", - "S = TypeVar(\"S\")\n", - "T = TypeVar(\"T\")" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "# X -> Z, Y -> Z\n", - "\n", - "def model_three_converge():\n", - " X = pyro.sample(\"X\", dist.Bernoulli(0.5))\n", - " Y = pyro.sample(\"Y\", dist.Bernoulli(0.5))\n", - " Z = pyro.sample(\"Z\", dist.Bernoulli(torch.min(X, Y)))\n", - " return {\"X\": X, \"Y\": Y, \"Z\": Z}\n", - "\n", - "with ExtractSupports() as supports_converge:\n", - " model_three_converge()" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "with MultiWorldCounterfactual() as mwc_converge: \n", - " with SearchForExplanation(\n", - " supports=supports_converge.supports,\n", - " antecedents={\"Y\": torch.tensor(1.0), \"X\": torch.tensor(1.0)},\n", - " consequents={\"Z\": torch.tensor(1.0)},\n", - " witnesses={},\n", - " alternatives={\"Y\": torch.tensor(1.0), \"X\": torch.tensor(1.0)},\n", - " antecedent_bias=-0.5,\n", - " consequent_scale=0,\n", - " ):\n", - " with pyro.plate(\"sample\", size=1):\n", - " with pyro.poutine.trace() as trace_converge:\n", - " model_three_converge()\n", - "\n", - "trace_converge.trace.compute_log_prob\n", - "nodes = trace_converge.trace.nodes\n", - "\n", - "values = nodes[\"Z\"][\"value\"]\n", - "log_probs = nodes[\"__cause____consequent_Z\"][\"fn\"].log_factor\n", - "assert values.shape == log_probs.shape\n", - "\n", - "nec_worlds = IndexSet(**{name : {1} for name in [\"X\", \"Y\"]})\n", - "suff_worlds = IndexSet(**{name : {2} for name in [\"X\", \"Y\"]})\n", - "\n", - "with mwc_converge:\n", - " nec_value = gather(values, nec_worlds)\n", - " nec_lp = gather(log_probs, nec_worlds)\n", - " assert nec_lp.exp().item() == 1 - nec_value.item()\n", - "\n", - " suff_value = gather(values, suff_worlds)\n", - " suff_lp = gather(log_probs, suff_worlds)\n", - " assert suff_lp.exp().item() == suff_value.item()\n", - "\n", - "assert torch.allclose(log_probs.squeeze().fill_diagonal_(0.0), torch.tensor(0.0))" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "# X -> Y, X -> Z\n", - "\n", - "def model_three_diverge():\n", - " X = pyro.sample(\"X\", dist.Bernoulli(0.5))\n", - " Y = pyro.sample(\"Y\", dist.Bernoulli(X))\n", - " Z = pyro.sample(\"Z\", dist.Bernoulli(X))\n", - " return {\"X\": X, \"Y\": Y, \"Z\": Z}\n", - "\n", - "with ExtractSupports() as supports_diverge:\n", - " model_three_diverge()" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [], - "source": [ - "with MultiWorldCounterfactual() as mwc_diverge: \n", - " with SearchForExplanation(\n", - " supports=supports_diverge.supports,\n", - " antecedents={\"Y\": torch.tensor(1.0), \"X\": torch.tensor(1.0)},\n", - " consequents={\"Z\": torch.tensor(1.0)},\n", - " witnesses={},\n", - " alternatives={\"Y\": torch.tensor(0.0), \"X\": torch.tensor(0.0)},\n", - " antecedent_bias=-0.5,\n", - " consequent_scale=0,\n", - " ):\n", - " with pyro.plate(\"sample\", size=1):\n", - " with pyro.poutine.trace() as trace_diverge:\n", - " model_three_diverge()\n", - "\n", - "trace_diverge.trace.compute_log_prob\n", - "nodes = trace_diverge.trace.nodes\n", - "\n", - "values = nodes[\"Z\"][\"value\"]\n", - "log_probs = nodes[\"__cause____consequent_Z\"][\"fn\"].log_factor\n", - "\n", - "assert log_probs.shape == torch.Size([3, 3, 1, 1, 1, 1])\n", - "\n", - "nec_worlds = IndexSet(**{name : {1} for name in [\"X\", \"Y\"]})\n", - "suff_worlds = IndexSet(**{name : {2} for name in [\"X\", \"Y\"]})\n", - "\n", - "with mwc_diverge:\n", - " nec_value = gather(values, nec_worlds)\n", - " nec_lp = gather(log_probs, nec_worlds)\n", - " assert nec_lp.exp().item() == 1 - nec_value.item()\n", - "\n", - " suff_value = gather(values, suff_worlds)\n", - " suff_lp = gather(log_probs, suff_worlds)\n", - " assert suff_lp.exp().item() == suff_value.item()\n", - "\n", - "assert torch.allclose(log_probs.squeeze().fill_diagonal_(0.0), torch.tensor(0.0))" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [], - "source": [ - "# X -> Y -> Z\n", - "\n", - "def model_three_chain():\n", - " X = pyro.sample(\"X\", dist.Bernoulli(0.5))\n", - " Y = pyro.sample(\"Y\", dist.Bernoulli(X))\n", - " Z = pyro.sample(\"Z\", dist.Bernoulli(Y))\n", - " return {\"X\": X, \"Y\": Y, \"Z\": Z}\n", - "\n", - "with ExtractSupports() as supports_chain:\n", - " model_three_chain()" - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "tensor([[0., 0., 1.],\n", - " [0., 0., 0.],\n", - " [1., 1., 1.]])\n", - "tensor([[0., 0., 0.],\n", - " [0., 0., 0.],\n", - " [0., 0., 0.]])\n" - ] - } - ], - "source": [ - "with MultiWorldCounterfactual() as mwc_chain: \n", - " with SearchForExplanation(\n", - " supports=supports_chain.supports,\n", - " antecedents={\"X\": torch.tensor(1.0), \"Y\": torch.tensor(1.0)},\n", - " consequents={\"Z\": torch.tensor(1.0)},\n", - " witnesses={},\n", - " alternatives={\"X\": torch.tensor(0.0), \"Y\": torch.tensor(0.0)},\n", - " antecedent_bias=-0.5,\n", - " consequent_scale=0,\n", - " ):\n", - " with pyro.plate(\"sample\", size=1):\n", - " with pyro.poutine.trace() as trace_chain:\n", - " model_three_chain()\n", - "\n", - "trace_chain.trace.compute_log_prob\n", - "nodes = trace_chain.trace.nodes\n", - "\n", - "values = nodes[\"Z\"][\"value\"]\n", - "log_probs = nodes[\"__cause____consequent_Z\"][\"fn\"].log_factor\n", - "\n", - "print(values.squeeze())\n", - "print(log_probs.squeeze())\n", - "\n", - "assert log_probs.shape == torch.Size([3, 3, 1, 1, 1, 1])\n", - "\n", - "nec_worlds = IndexSet(**{name : {1} for name in [\"X\", \"Y\"]})\n", - "suff_worlds = IndexSet(**{name : {2} for name in [\"X\", \"Y\"]})\n", - "\n", - "with mwc_chain:\n", - " nec_value = gather(values, nec_worlds)\n", - " nec_lp = gather(log_probs, nec_worlds)\n", - " assert nec_lp.exp().item() == 1 - nec_value.item()\n", - "\n", - " suff_value = gather(values, suff_worlds)\n", - " suff_lp = gather(log_probs, suff_worlds)\n", - " assert suff_lp.exp().item() == suff_value.item()\n", - "\n", - "assert torch.allclose(log_probs.squeeze().fill_diagonal_(0.0), torch.tensor(0.0))" - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "metadata": {}, - "outputs": [], - "source": [ - "# X -> Y -> Z X -> Z\n", - "\n", - "def model_three_complete():\n", - " X = pyro.sample(\"X\", dist.Bernoulli(0.5))\n", - " Y = pyro.sample(\"Y\", dist.Bernoulli(X))\n", - " Z = pyro.sample(\"Z\", dist.Bernoulli(torch.max(X, Y)))\n", - " return {\"X\": X, \"Y\": Y, \"Z\": Z}\n", - "\n", - "with ExtractSupports() as supports_complete:\n", - " model_three_complete()" - ] - }, - { - "cell_type": "code", - "execution_count": 37, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "tensor([[1., 0., 1.],\n", - " [1., 0., 1.],\n", - " [1., 1., 1.]])\n", - "tensor([[0., 0., 0.],\n", - " [0., 0., 0.],\n", - " [0., 0., 0.]])\n" - ] - } - ], - "source": [ - "with MultiWorldCounterfactual() as mwc_complete: \n", - " with SearchForExplanation(\n", - " supports=supports_complete.supports,\n", - " antecedents={\"X\": torch.tensor(1.0), \"Y\": torch.tensor(1.0)},\n", - " consequents={\"Z\": torch.tensor(1.0)},\n", - " witnesses={},\n", - " alternatives={\"X\": torch.tensor(0.0), \"Y\": torch.tensor(0.0)},\n", - " antecedent_bias=-0.5,\n", - " consequent_scale=0,\n", - " ):\n", - " with pyro.plate(\"sample\", size=1):\n", - " with pyro.poutine.trace() as trace_complete:\n", - " model_three_complete()\n", - "\n", - "trace_complete.trace.compute_log_prob\n", - "nodes = trace_complete.trace.nodes\n", - "\n", - "values = nodes[\"Z\"][\"value\"]\n", - "log_probs = nodes[\"__cause____consequent_Z\"][\"fn\"].log_factor\n", - "\n", - "print(values.squeeze())\n", - "print(log_probs.squeeze())\n", - "\n", - "assert log_probs.shape == torch.Size([3, 3, 1, 1, 1, 1])\n", - "\n", - "nec_worlds = IndexSet(**{name : {1} for name in [\"X\", \"Y\"]})\n", - "suff_worlds = IndexSet(**{name : {2} for name in [\"X\", \"Y\"]})\n", - "\n", - "with mwc_complete:\n", - " nec_value = gather(values, nec_worlds)\n", - " nec_lp = gather(log_probs, nec_worlds)\n", - " assert nec_lp.exp().item() == 1 - nec_value.item()\n", - "\n", - " suff_value = gather(values, suff_worlds)\n", - " suff_lp = gather(log_probs, suff_worlds)\n", - " assert suff_lp.exp().item() == suff_value.item()\n", - "\n", - "assert torch.allclose(log_probs.squeeze().fill_diagonal_(0.0), torch.tensor(0.0))" - ] - }, - { - "cell_type": "code", - "execution_count": 39, - "metadata": {}, - "outputs": [], - "source": [ - "# X -> Y Z\n", - "\n", - "def model_three_isolate():\n", - " X = pyro.sample(\"X\", dist.Bernoulli(0.5))\n", - " Y = pyro.sample(\"Y\", dist.Bernoulli(X))\n", - " Z = pyro.sample(\"Z\", dist.Bernoulli(0.5))\n", - " return {\"X\": X, \"Y\": Y, \"Z\": Z}\n", - "\n", - "with ExtractSupports() as supports_isolate:\n", - " model_three_isolate()" - ] - }, - { - "cell_type": "code", - "execution_count": 46, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "tensor([1., 0., 1.])\n", - "tensor([[0., 0., 0.],\n", - " [0., 0., 0.],\n", - " [0., 0., 0.]])\n" - ] - } - ], - "source": [ - "with MultiWorldCounterfactual() as mwc_isolate: \n", - " with SearchForExplanation(\n", - " supports=supports_isolate.supports,\n", - " antecedents={\"X\": torch.tensor(1.0), \"Z\": torch.tensor(1.0)},\n", - " consequents={\"Y\": torch.tensor(1.0)},\n", - " witnesses={},\n", - " alternatives={\"X\": torch.tensor(0.0), \"Z\": torch.tensor(0.0)},\n", - " antecedent_bias=-0.5,\n", - " consequent_scale=0,\n", - " ):\n", - " with pyro.plate(\"sample\", size=1):\n", - " with pyro.poutine.trace() as trace_isolate:\n", - " model_three_complete()\n", - "\n", - "trace_isolate.trace.compute_log_prob\n", - "nodes = trace_isolate.trace.nodes\n", - "\n", - "values = nodes[\"Y\"][\"value\"]\n", - "log_probs = nodes[\"__cause____consequent_Y\"][\"fn\"].log_factor\n", - "\n", - "print(values.squeeze())\n", - "print(log_probs.squeeze())\n", - "\n", - "assert log_probs.shape == torch.Size([3, 3, 1, 1, 1, 1])\n", - "\n", - "nec_worlds = IndexSet(**{name : {1} for name in [\"X\", \"Z\"]})\n", - "suff_worlds = IndexSet(**{name : {2} for name in [\"X\", \"Z\"]})\n", - "\n", - "with mwc_isolate:\n", - " nec_value = gather(values, nec_worlds)\n", - " nec_lp = gather(log_probs, nec_worlds)\n", - " assert nec_lp.exp().item() == 1 - nec_value.item()\n", - "\n", - " suff_value = gather(values, suff_worlds)\n", - " suff_lp = gather(log_probs, suff_worlds)\n", - " assert suff_lp.exp().item() == suff_value.item()\n", - "\n", - "assert torch.allclose(log_probs.squeeze().fill_diagonal_(0.0), torch.tensor(0.0))" - ] - }, - { - "cell_type": "code", - "execution_count": 47, - "metadata": {}, - "outputs": [], - "source": [ - "import pytest\n", - "\n", - "def model_three_converge():\n", - " X = pyro.sample(\"X\", dist.Bernoulli(0.5))\n", - " Y = pyro.sample(\"Y\", dist.Bernoulli(0.5))\n", - " Z = pyro.sample(\"Z\", dist.Bernoulli(torch.min(X, Y)))\n", - " return {\"X\": X, \"Y\": Y, \"Z\": Z}\n", - "\n", - "def model_three_diverge():\n", - " X = pyro.sample(\"X\", dist.Bernoulli(0.5))\n", - " Y = pyro.sample(\"Y\", dist.Bernoulli(X))\n", - " Z = pyro.sample(\"Z\", dist.Bernoulli(X))\n", - " return {\"X\": X, \"Y\": Y, \"Z\": Z}\n" - ] - }, - { - "cell_type": "code", - "execution_count": 48, - "metadata": {}, - "outputs": [], - "source": [ - "@pytest.mark.parametrize(\"model\", [model_three_converge, model_three_diverge])\n", - "def test_three_variables(model):\n", - " with ExtractSupports() as supports:\n", - " model()\n", - "\n", - " with MultiWorldCounterfactual() as mwc: \n", - " with SearchForExplanation(\n", - " supports=supports.supports,\n", - " antecedents={\"X\": torch.tensor(1.0), \"Z\": torch.tensor(1.0)},\n", - " consequents={\"Y\": torch.tensor(1.0)},\n", - " witnesses={},\n", - " alternatives={\"X\": torch.tensor(0.0), \"Z\": torch.tensor(0.0)},\n", - " antecedent_bias=-0.5,\n", - " consequent_scale=0,\n", - " ):\n", - " with pyro.plate(\"sample\", size=1):\n", - " with pyro.poutine.trace() as trace:\n", - " model()\n", - "\n", - " trace.trace.compute_log_prob\n", - " nodes = trace.trace.nodes\n", - "\n", - " values = nodes[\"Y\"][\"value\"]\n", - " log_probs = nodes[\"__cause____consequent_Y\"][\"fn\"].log_factor\n", - "\n", - " print(values.squeeze())\n", - " print(log_probs.squeeze())\n", - "\n", - " assert log_probs.shape == torch.Size([3, 3, 1, 1, 1, 1])\n", - "\n", - " nec_worlds = IndexSet(**{name : {1} for name in [\"X\", \"Z\"]})\n", - " suff_worlds = IndexSet(**{name : {2} for name in [\"X\", \"Z\"]})\n", - "\n", - " with mwc:\n", - " nec_value = gather(values, nec_worlds)\n", - " nec_lp = gather(log_probs, nec_worlds)\n", - " assert nec_lp.exp().item() == 1 - nec_value.item()\n", - "\n", - " suff_value = gather(values, suff_worlds)\n", - " suff_lp = gather(log_probs, suff_worlds)\n", - " assert suff_lp.exp().item() == suff_value.item()\n", - "\n", - " assert torch.allclose(log_probs.squeeze().fill_diagonal_(0.0), torch.tensor(0.0))\n", - "\n", - " \n" - ] - }, - { - "cell_type": "code", - "execution_count": 49, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "tensor([0., 0., 1.])\n", - "tensor([[0., 0., 0.],\n", - " [0., 0., 0.],\n", - " [0., 0., 0.]])\n" - ] - } - ], - "source": [ - "test_three_variables(model_three_diverge)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": ".venv", - "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.10.14" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/tests/explainable/test_handlers_explanation.py b/tests/explainable/test_handlers_explanation.py index 7e2b0b7d..ffb61e2c 100644 --- a/tests/explainable/test_handlers_explanation.py +++ b/tests/explainable/test_handlers_explanation.py @@ -411,37 +411,42 @@ def model_connected(): assert torch.all(trace_reverse.trace.nodes["__cause____consequent_X"]["fn"].log_factor.sum().exp() == 0) - +# X -> Z, Y -> Z def model_three_converge(): X = pyro.sample("X", dist.Bernoulli(0.5)) Y = pyro.sample("Y", dist.Bernoulli(0.5)) Z = pyro.sample("Z", dist.Bernoulli(torch.min(X, Y))) return {"X": X, "Y": Y, "Z": Z} +# X -> Y, X -> Z def model_three_diverge(): X = pyro.sample("X", dist.Bernoulli(0.5)) Y = pyro.sample("Y", dist.Bernoulli(X)) Z = pyro.sample("Z", dist.Bernoulli(X)) return {"X": X, "Y": Y, "Z": Z} +# X -> Y -> Z def model_three_chain(): X = pyro.sample("X", dist.Bernoulli(0.5)) Y = pyro.sample("Y", dist.Bernoulli(X)) Z = pyro.sample("Z", dist.Bernoulli(Y)) return {"X": X, "Y": Y, "Z": Z} +# X -> Y, X -> Z, Y -> Z def model_three_complete(): X = pyro.sample("X", dist.Bernoulli(0.5)) Y = pyro.sample("Y", dist.Bernoulli(X)) Z = pyro.sample("Z", dist.Bernoulli(torch.max(X, Y))) return {"X": X, "Y": Y, "Z": Z} +# X -> Y Z def model_three_isolate(): X = pyro.sample("X", dist.Bernoulli(0.5)) Y = pyro.sample("Y", dist.Bernoulli(X)) Z = pyro.sample("Z", dist.Bernoulli(0.5)) return {"X": X, "Y": Y, "Z": Z} +# X Y Z def model_three_independent(): X = pyro.sample("X", dist.Bernoulli(0.5)) Y = pyro.sample("Y", dist.Bernoulli(0.5)) From 34d0fafef329008562276a7fdbeb18240556636b Mon Sep 17 00:00:00 2001 From: PoorvaGarg Date: Tue, 6 Aug 2024 15:33:21 -0400 Subject: [PATCH 19/53] test for factual log probs --- tests/explainable/test_handlers_components.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/explainable/test_handlers_components.py b/tests/explainable/test_handlers_components.py index 17421186..2bdb1e78 100644 --- a/tests/explainable/test_handlers_components.py +++ b/tests/explainable/test_handlers_components.py @@ -424,6 +424,7 @@ def model_ce(): nd["__factor_consequent"]["fn"].log_factor, IndexSet(**{"w": {2}}) ) + assert torch.equal(eq_neq_log_probs_fact, torch.zeros(eq_neq_log_probs_fact.shape)) assert eq_neq_log_probs_nec.shape == consequent_suff.shape assert torch.equal(eq_neq_log_probs_suff, dist.Normal(0.0, .1).log_prob(consequent_suff - torch.tensor(.01))) assert eq_neq_log_probs_nec.sum().exp() == 0 From 9326a5214876efaf68e5c4dd7ed0eb23b9abca9e Mon Sep 17 00:00:00 2001 From: PoorvaGarg Date: Tue, 6 Aug 2024 15:35:14 -0400 Subject: [PATCH 20/53] more clean up --- tests/explainable/test_handlers_explanation.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/explainable/test_handlers_explanation.py b/tests/explainable/test_handlers_explanation.py index ffb61e2c..73f1208b 100644 --- a/tests/explainable/test_handlers_explanation.py +++ b/tests/explainable/test_handlers_explanation.py @@ -382,7 +382,6 @@ def model_connected(): Y_values_ind = trace_independent.trace.nodes["Y"]["value"] if torch.any(Y_values_ind == 1.): - print("testing with ", Y_values_ind) assert trace_independent.trace.nodes["__cause____consequent_Y"]["fn"].log_factor[1,0,0,0,:].sum().exp() == 0. else: assert trace_independent.trace.nodes["__cause____consequent_Y"]["fn"].log_factor[1,0,0,0,:].sum().exp() == 1. @@ -399,7 +398,6 @@ def model_connected(): X_values_rev = trace_reverse.trace.nodes["X"]["value"] if torch.any(X_values_rev == 1.): - print("testing with ", Y_values_ind) assert trace_reverse.trace.nodes["__cause____consequent_X"]["fn"].log_factor[1,0,0,0,:].sum().exp() == 0. else: assert trace_reverse.trace.nodes["__cause____consequent_X"]["fn"].log_factor[1,0,0,0,:].sum().exp() == 1. From 45e75d64f93967e9a8f2317705b62328ddd03bc0 Mon Sep 17 00:00:00 2001 From: PoorvaGarg Date: Tue, 6 Aug 2024 15:55:42 -0400 Subject: [PATCH 21/53] fixed a lint error --- tests/explainable/test_handlers_explanation.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/explainable/test_handlers_explanation.py b/tests/explainable/test_handlers_explanation.py index 73f1208b..49f17c19 100644 --- a/tests/explainable/test_handlers_explanation.py +++ b/tests/explainable/test_handlers_explanation.py @@ -3,13 +3,13 @@ import pyro import pyro.distributions as dist import pyro.distributions.constraints as constraints -import torch import pytest +import torch from chirho.counterfactual.handlers.counterfactual import MultiWorldCounterfactual +from chirho.explainable.handlers import ExtractSupports from chirho.explainable.handlers.components import undo_split from chirho.explainable.handlers.explanation import SearchForExplanation, SplitSubsets -from chirho.explainable.handlers import ExtractSupports from chirho.explainable.handlers.preemptions import Preemptions from chirho.indexed.ops import IndexSet, gather from chirho.observational.handlers.condition import condition From 075c33a21955144c2dc85e799be2096b24aef8d2 Mon Sep 17 00:00:00 2001 From: PoorvaGarg Date: Tue, 6 Aug 2024 16:34:29 -0400 Subject: [PATCH 22/53] lint clean --- chirho/explainable/handlers/components.py | 16 +- tests/explainable/test_handlers_components.py | 50 ++--- .../explainable/test_handlers_explanation.py | 181 +++++++++++------- 3 files changed, 147 insertions(+), 100 deletions(-) diff --git a/chirho/explainable/handlers/components.py b/chirho/explainable/handlers/components.py index c4b04e92..4db8fb42 100644 --- a/chirho/explainable/handlers/components.py +++ b/chirho/explainable/handlers/components.py @@ -193,8 +193,6 @@ def consequent_neq( """ def _consequent_neq(consequent: T) -> torch.Tensor: - - indices = IndexSet( **{ name: ind @@ -232,7 +230,6 @@ def consequent_eq_neq( """ def _consequent_eq_neq(consequent: T) -> torch.Tensor: - necessity_world = kwargs.get("necessity_world", 1) sufficiency_world = kwargs.get("sufficiency_world", 2) @@ -243,7 +240,6 @@ def _consequent_eq_neq(consequent: T) -> torch.Tensor: if name in antecedents } ) - sufficiency_indices = IndexSet( **{ name: {sufficiency_world} @@ -274,7 +270,6 @@ def _consequent_eq_neq(consequent: T) -> torch.Tensor: **kwargs, ) ) - sufficiency_log_probs = ( soft_eq(support, sufficiency_value, proposed_consequent, **kwargs) if proposed_consequent is not None @@ -284,17 +279,10 @@ def _consequent_eq_neq(consequent: T) -> torch.Tensor: FACTUAL_NEC_SUFF = torch.zeros_like(sufficiency_log_probs) index_keys = set(antecedents) - null_index = IndexSet( - **{ - name: {0} - for name in index_keys - } - ) + null_index = IndexSet(**{name: {0} for name in index_keys}) nec_suff_log_probs_partitioned = { - **{ - null_index: FACTUAL_NEC_SUFF - }, + **{null_index: FACTUAL_NEC_SUFF}, **{ IndexSet(**{antecedent: {ind} for antecedent in index_keys}): log_prob for ind, log_prob in zip( diff --git a/tests/explainable/test_handlers_components.py b/tests/explainable/test_handlers_components.py index 2bdb1e78..4b0916cf 100644 --- a/tests/explainable/test_handlers_components.py +++ b/tests/explainable/test_handlers_components.py @@ -371,63 +371,69 @@ def model_ce(): assert nd["__factor_consequent"]["log_prob"].sum() < -10 - @pytest.mark.parametrize("plate_size", [4, 50, 200]) @pytest.mark.parametrize("event_shape", [(), (3,), (3, 2)], ids=str) def test_consequent_eq_neq(plate_size, event_shape): factors = { "consequent": consequent_eq_neq( support=constraints.independent(constraints.real, 0), - proposed_consequent=torch.Tensor([0.01]), + proposed_consequent=torch.Tensor([0.01]), antecedents=["w"], ) } - w_initial = dist.Normal(0, 0.1).expand(event_shape).to_event(len(event_shape)).sample() + w_initial = ( + dist.Normal(0, 0.1).expand(event_shape).to_event(len(event_shape)).sample() + ) @Factors(factors=factors) @pyro.plate("data", size=plate_size, dim=-4) def model_ce(): - w = pyro.sample("w", dist.Normal(w_initial, .001)) + w = pyro.sample("w", dist.Normal(w_initial, 0.001)) consequent = pyro.deterministic("consequent", w * torch.tensor(0.1)) assert w.shape == consequent.shape - antecedents = { - "w": ( - torch.tensor(0.1).expand(event_shape), - sufficiency_intervention( - constraints.independent(constraints.real, len(event_shape)), - ["w"] - ), - ) - } + "w": ( + torch.tensor(0.1).expand(event_shape), + sufficiency_intervention( + constraints.independent(constraints.real, len(event_shape)), ["w"] + ), + ) + } with MultiWorldCounterfactual() as mwc_ce: - with do(actions = antecedents): - with pyro.poutine.trace() as trace_ce: + with do(actions=antecedents): + with pyro.poutine.trace() as trace_ce: model_ce() nd = trace_ce.trace.nodes trace_ce.trace.compute_log_prob with mwc_ce: eq_neq_log_probs_fact = gather( - nd["__factor_consequent"]["fn"].log_factor, IndexSet(**{"w": {0}}, event_dim = 0) + nd["__factor_consequent"]["fn"].log_factor, + IndexSet(**{"w": {0}}, event_dim=0), ) eq_neq_log_probs_nec = gather( - nd["__factor_consequent"]["fn"].log_factor, IndexSet(**{"w": {1}}, event_dim = 0) + nd["__factor_consequent"]["fn"].log_factor, + IndexSet(**{"w": {1}}, event_dim=0), ) consequent_suff = gather( - nd["consequent"]["value"], IndexSet(**{"w": {2}}, event_dim = 0 ) + nd["consequent"]["value"], IndexSet(**{"w": {2}}, event_dim=0) ) eq_neq_log_probs_suff = gather( - nd["__factor_consequent"]["fn"].log_factor, IndexSet(**{"w": {2}}) + nd["__factor_consequent"]["fn"].log_factor, IndexSet(**{"w": {2}}) ) - assert torch.equal(eq_neq_log_probs_fact, torch.zeros(eq_neq_log_probs_fact.shape)) + assert torch.equal( + eq_neq_log_probs_fact, torch.zeros(eq_neq_log_probs_fact.shape) + ) assert eq_neq_log_probs_nec.shape == consequent_suff.shape - assert torch.equal(eq_neq_log_probs_suff, dist.Normal(0.0, .1).log_prob(consequent_suff - torch.tensor(.01))) - assert eq_neq_log_probs_nec.sum().exp() == 0 + assert torch.equal( + eq_neq_log_probs_suff, + dist.Normal(0.0, 0.1).log_prob(consequent_suff - torch.tensor(0.01)), + ) + assert eq_neq_log_probs_nec.sum().exp() == 0 options = [ diff --git a/tests/explainable/test_handlers_explanation.py b/tests/explainable/test_handlers_explanation.py index 49f17c19..259d2e36 100644 --- a/tests/explainable/test_handlers_explanation.py +++ b/tests/explainable/test_handlers_explanation.py @@ -317,14 +317,17 @@ def test_SplitSubsets_two_layers(): assert obs_bill_hits == 0.0 and int_bill_hits == 0.0 and int_bottle_shatters == 0.0 + def test_edge_eq_neq(): def model_independent(): X = pyro.sample("X", dist.Bernoulli(0.5)) Y = pyro.sample("Y", dist.Bernoulli(0.5)) + return {"X": X, "Y": Y} def model_connected(): X = pyro.sample("X", dist.Bernoulli(0.5)) Y = pyro.sample("Y", dist.Bernoulli(X)) + return {"X": X, "Y": Y} with ExtractSupports() as supports_independent: model_independent() @@ -332,48 +335,47 @@ def model_connected(): with ExtractSupports() as supports_connected: model_connected() - with MultiWorldCounterfactual() as mwc_independent: - with SearchForExplanation( - supports=supports_independent.supports, - antecedents={"X": torch.tensor(1.0)}, - consequents={"Y": torch.tensor(1.0)}, - witnesses={}, - alternatives={"X": torch.tensor(0.0)}, - antecedent_bias=-0.5, - consequent_scale=0, - ): - with pyro.plate("sample", size=3): - with pyro.poutine.trace() as trace_independent: - model_independent() - - with MultiWorldCounterfactual() as mwc_connected: - with SearchForExplanation( - supports=supports_connected.supports, - antecedents={"X": torch.tensor(1.0)}, - consequents={"Y": torch.tensor(1.0)}, - witnesses={}, - alternatives={"X": torch.tensor(0.0)}, - antecedent_bias=-0.5, - consequent_scale=0, - ): - with pyro.plate("sample", size=3): - with pyro.poutine.trace() as trace_connected: - model_connected() - - with MultiWorldCounterfactual() as mwc_reverse: - with SearchForExplanation( - supports=supports_connected.supports, - antecedents={"Y": torch.tensor(1.0)}, - consequents={"X": torch.tensor(1.0)}, - witnesses={}, - alternatives={"Y": torch.tensor(0.0)}, - antecedent_bias=-0.5, - consequent_scale=0, - ): - with pyro.plate("sample", size=3): - with pyro.poutine.trace() as trace_reverse: - model_connected() + with MultiWorldCounterfactual(): + with SearchForExplanation( + supports=supports_independent.supports, + antecedents={"X": torch.tensor(1.0)}, + consequents={"Y": torch.tensor(1.0)}, + witnesses={}, + alternatives={"X": torch.tensor(0.0)}, + antecedent_bias=-0.5, + consequent_scale=0, + ): + with pyro.plate("sample", size=3): + with pyro.poutine.trace() as trace_independent: + model_independent() + + with MultiWorldCounterfactual(): + with SearchForExplanation( + supports=supports_connected.supports, + antecedents={"X": torch.tensor(1.0)}, + consequents={"Y": torch.tensor(1.0)}, + witnesses={}, + alternatives={"X": torch.tensor(0.0)}, + antecedent_bias=-0.5, + consequent_scale=0, + ): + with pyro.plate("sample", size=3): + with pyro.poutine.trace() as trace_connected: + model_connected() + with MultiWorldCounterfactual(): + with SearchForExplanation( + supports=supports_connected.supports, + antecedents={"Y": torch.tensor(1.0)}, + consequents={"X": torch.tensor(1.0)}, + witnesses={}, + alternatives={"Y": torch.tensor(0.0)}, + antecedent_bias=-0.5, + consequent_scale=0, + ): + with pyro.plate("sample", size=3): + with pyro.poutine.trace() as trace_reverse: + model_connected() trace_connected.trace.compute_log_prob trace_independent.trace.compute_log_prob @@ -381,33 +383,68 @@ def model_connected(): Y_values_ind = trace_independent.trace.nodes["Y"]["value"] - if torch.any(Y_values_ind == 1.): - assert trace_independent.trace.nodes["__cause____consequent_Y"]["fn"].log_factor[1,0,0,0,:].sum().exp() == 0. + log_probs_ind = trace_independent.trace.nodes["__cause____consequent_Y"][ + "fn" + ].log_factor + if torch.any(Y_values_ind == 1.0): + assert log_probs_ind[1, 0, 0, 0, :].sum().exp() == 0.0 else: - assert trace_independent.trace.nodes["__cause____consequent_Y"]["fn"].log_factor[1,0,0,0,:].sum().exp() == 1. + assert log_probs_ind[1, 0, 0, 0, :].sum().exp() == 1.0 - assert torch.all(trace_independent.trace.nodes["__cause____consequent_Y"]["fn"].log_factor.sum().exp() == 0) + assert torch.all(log_probs_ind.sum().exp() == 0) - if torch.any(Y_values_ind == 0.): - assert trace_independent.trace.nodes["__cause____consequent_Y"]["fn"].log_factor[2,0,0,0,:].sum().exp() == 0. + if torch.any(Y_values_ind == 0.0): + assert log_probs_ind[2, 0, 0, 0, :].sum().exp() == 0.0 else: - assert trace_independent.trace.nodes["__cause____consequent_Y"]["fn"].log_factor[2,0,0,0,:].sum().exp() == 1. + assert log_probs_ind[2, 0, 0, 0, :].sum().exp() == 1.0 + + assert torch.all( + trace_connected.trace.nodes["__cause____consequent_Y"]["fn"].log_factor.sum() + == 0 + ) - Y_values_con = trace_connected.trace.nodes["Y"]["value"] - assert torch.all(trace_connected.trace.nodes["__cause____consequent_Y"]["fn"].log_factor.sum() == 0) - X_values_rev = trace_reverse.trace.nodes["X"]["value"] - if torch.any(X_values_rev == 1.): - assert trace_reverse.trace.nodes["__cause____consequent_X"]["fn"].log_factor[1,0,0,0,:].sum().exp() == 0. + if torch.any(X_values_rev == 1.0): + assert ( + trace_reverse.trace.nodes["__cause____consequent_X"]["fn"] + .log_factor[1, 0, 0, 0, :] + .sum() + .exp() + == 0.0 + ) else: - assert trace_reverse.trace.nodes["__cause____consequent_X"]["fn"].log_factor[1,0,0,0,:].sum().exp() == 1. + assert ( + trace_reverse.trace.nodes["__cause____consequent_X"]["fn"] + .log_factor[1, 0, 0, 0, :] + .sum() + .exp() + == 1.0 + ) - if torch.any(X_values_rev == 0.): - assert trace_reverse.trace.nodes["__cause____consequent_X"]["fn"].log_factor[2,0,0,0,:].sum().exp() == 0. + if torch.any(X_values_rev == 0.0): + assert ( + trace_reverse.trace.nodes["__cause____consequent_X"]["fn"] + .log_factor[2, 0, 0, 0, :] + .sum() + .exp() + == 0.0 + ) else: - assert trace_reverse.trace.nodes["__cause____consequent_X"]["fn"].log_factor[2,0,0,0,:].sum().exp() == 1. + assert ( + trace_reverse.trace.nodes["__cause____consequent_X"]["fn"] + .log_factor[2, 0, 0, 0, :] + .sum() + .exp() + == 1.0 + ) + + assert torch.all( + trace_reverse.trace.nodes["__cause____consequent_X"]["fn"] + .log_factor.sum() + .exp() + == 0 + ) - assert torch.all(trace_reverse.trace.nodes["__cause____consequent_X"]["fn"].log_factor.sum().exp() == 0) # X -> Z, Y -> Z def model_three_converge(): @@ -416,6 +453,7 @@ def model_three_converge(): Z = pyro.sample("Z", dist.Bernoulli(torch.min(X, Y))) return {"X": X, "Y": Y, "Z": Z} + # X -> Y, X -> Z def model_three_diverge(): X = pyro.sample("X", dist.Bernoulli(0.5)) @@ -423,6 +461,7 @@ def model_three_diverge(): Z = pyro.sample("Z", dist.Bernoulli(X)) return {"X": X, "Y": Y, "Z": Z} + # X -> Y -> Z def model_three_chain(): X = pyro.sample("X", dist.Bernoulli(0.5)) @@ -430,6 +469,7 @@ def model_three_chain(): Z = pyro.sample("Z", dist.Bernoulli(Y)) return {"X": X, "Y": Y, "Z": Z} + # X -> Y, X -> Z, Y -> Z def model_three_complete(): X = pyro.sample("X", dist.Bernoulli(0.5)) @@ -437,6 +477,7 @@ def model_three_complete(): Z = pyro.sample("Z", dist.Bernoulli(torch.max(X, Y))) return {"X": X, "Y": Y, "Z": Z} + # X -> Y Z def model_three_isolate(): X = pyro.sample("X", dist.Bernoulli(0.5)) @@ -444,6 +485,7 @@ def model_three_isolate(): Z = pyro.sample("Z", dist.Bernoulli(0.5)) return {"X": X, "Y": Y, "Z": Z} + # X Y Z def model_three_independent(): X = pyro.sample("X", dist.Bernoulli(0.5)) @@ -451,14 +493,25 @@ def model_three_independent(): Z = pyro.sample("Z", dist.Bernoulli(0.5)) return {"X": X, "Y": Y, "Z": Z} + @pytest.mark.parametrize("ante_cons", [("X", "Y", "Z"), ("X", "Z", "Y")]) -@pytest.mark.parametrize("model", [model_three_converge, model_three_diverge, model_three_chain, model_three_complete, model_three_isolate, model_three_independent]) +@pytest.mark.parametrize( + "model", + [ + model_three_converge, + model_three_diverge, + model_three_chain, + model_three_complete, + model_three_isolate, + model_three_independent, + ], +) def test_eq_neq_three_variables(model, ante_cons): - ante1, ante2, cons = ante_cons + ante1, ante2, cons = ante_cons with ExtractSupports() as supports: model() - with MultiWorldCounterfactual() as mwc: + with MultiWorldCounterfactual() as mwc: with SearchForExplanation( supports=supports.supports, antecedents={ante1: torch.tensor(1.0), ante2: torch.tensor(1.0)}, @@ -480,9 +533,9 @@ def test_eq_neq_three_variables(model, ante_cons): assert log_probs.shape == torch.Size([3, 3, 1, 1, 1, 1]) - fact_worlds = IndexSet(**{name : {0} for name in [ante1, ante2]}) - nec_worlds = IndexSet(**{name : {1} for name in [ante1, ante2]}) - suff_worlds = IndexSet(**{name : {2} for name in [ante1, ante2]}) + fact_worlds = IndexSet(**{name: {0} for name in [ante1, ante2]}) + nec_worlds = IndexSet(**{name: {1} for name in [ante1, ante2]}) + suff_worlds = IndexSet(**{name: {2} for name in [ante1, ante2]}) with mwc: fact_lp = gather(log_probs, fact_worlds) assert fact_lp.exp().item() == 1 From dde4d36324055d76ad08d4d5e715b714cae9caa7 Mon Sep 17 00:00:00 2001 From: PoorvaGarg Date: Wed, 7 Aug 2024 10:06:50 -0400 Subject: [PATCH 23/53] reverted metadata --- docs/source/dynamical_intro.ipynb | 2 +- docs/source/explainable_categorical.ipynb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/source/dynamical_intro.ipynb b/docs/source/dynamical_intro.ipynb index 27577bde..2624e858 100644 --- a/docs/source/dynamical_intro.ipynb +++ b/docs/source/dynamical_intro.ipynb @@ -1330,7 +1330,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.14" + "version": "3.8.16" } }, "nbformat": 4, diff --git a/docs/source/explainable_categorical.ipynb b/docs/source/explainable_categorical.ipynb index b9c14154..93d73df4 100644 --- a/docs/source/explainable_categorical.ipynb +++ b/docs/source/explainable_categorical.ipynb @@ -878,7 +878,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.14" + "version": "3.10.9" } }, "nbformat": 4, From 75e9f05a705e23bc3901ab345589daf5ad75ea5f Mon Sep 17 00:00:00 2001 From: PoorvaGarg Date: Thu, 8 Aug 2024 16:17:21 -0400 Subject: [PATCH 24/53] ground truth for conditioning on deterministic node --- docs/source/explainable_categorical.ipynb | 94 +- .../explainable_categorical_alternate.ipynb | 899 ++++++++++++++++++ 2 files changed, 931 insertions(+), 62 deletions(-) create mode 100644 docs/source/explainable_categorical_alternate.ipynb diff --git a/docs/source/explainable_categorical.ipynb b/docs/source/explainable_categorical.ipynb index 93d73df4..2bae0454 100644 --- a/docs/source/explainable_categorical.ipynb +++ b/docs/source/explainable_categorical.ipynb @@ -77,7 +77,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 111, "metadata": {}, "outputs": [ { @@ -108,7 +108,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 112, "metadata": {}, "outputs": [], "source": [ @@ -160,7 +160,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 113, "metadata": {}, "outputs": [ { @@ -169,88 +169,57 @@ "\n", "\n", - "\n", - "\n", - "\n", - "\n", - "%3\n", - "\n", + "\n", + "\n", + "\n", + "\n", "\n", "\n", "u_match_dropped\n", - "\n", - "u_match_dropped\n", + "\n", + "u_match_dropped\n", "\n", "\n", "\n", "match_dropped\n", - "\n", - "match_dropped\n", - "\n", - "\n", - "\n", - "u_match_dropped->match_dropped\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "forest_fire\n", - "\n", - "forest_fire\n", - "\n", - "\n", - "\n", - "u_match_dropped->forest_fire\n", - "\n", - "\n", + "\n", + "match_dropped\n", "\n", "\n", "\n", "u_lightning\n", - "\n", - "u_lightning\n", + "\n", + "u_lightning\n", "\n", "\n", "\n", "lightning\n", - "\n", - "lightning\n", - "\n", - "\n", - "\n", - "u_lightning->lightning\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "u_lightning->forest_fire\n", - "\n", - "\n", + "\n", + "lightning\n", "\n", "\n", "\n", "smile\n", - "\n", - "smile\n", + "\n", + "smile\n", "\n", - "\n", - "\n", - "smile->forest_fire\n", - "\n", - "\n", + "\n", + "\n", + "forest_fire\n", + "\n", + "forest_fire\n", "\n", "\n", "\n" ], "text/plain": [ - "" + "" ] }, - "execution_count": 3, + "execution_count": 113, "metadata": {}, "output_type": "execute_result" } @@ -306,14 +275,14 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 114, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.3002)\n" + "tensor(0.3102)\n" ] } ], @@ -340,14 +309,14 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 129, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(1.0013e-05)\n" + "tensor(0.4234)\n" ] } ], @@ -358,9 +327,10 @@ " consequents={\"forest_fire\": torch.tensor(1.0)},\n", " witnesses={}, # potential context elements, we leave them empty for now\n", " alternatives={\"match_dropped\": torch.tensor(0.0)},\n", + " antecedent_bias=-0.5,\n", " consequent_scale=1e-5,\n", ")(condition(\n", - " data={\"match_dropped\": torch.tensor(1.0), \"lightning\": torch.tensor(1.0)}\n", + " data={\"u_match_dropped\": torch.tensor(1.0)}\n", ")(forest_fire_model))\n", "\n", "logp, trace, mwc = importance_infer(num_samples=10000)(query)()\n", diff --git a/docs/source/explainable_categorical_alternate.ipynb b/docs/source/explainable_categorical_alternate.ipynb new file mode 100644 index 00000000..d3b81248 --- /dev/null +++ b/docs/source/explainable_categorical_alternate.ipynb @@ -0,0 +1,899 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Explainable reasoning with ChiRho (categorical variables)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The **Explainable Reasoning with ChiRho** package aims to provide a systematic, unified approach to causal explanation computations in terms of different probabilistic queries over expanded causal models that are constructed from a single generic program transformation applied to an arbitrary causal model represented as a ChiRho program. The approach of reducing causal queries to probabilistic computations on transformed causal models is the foundational idea behind all of ChiRho. The key strategy underlying \"causal explanation\" queries is their use of auxiliary variables representing uncertainty about what the proposed interventions are and which interventions or preemptions to apply, implicitly inducing a search space over counterfactuals.\n", + "\n", + "The goal of this notebook is to illustrate how the package can be used to provide an approximate method of answering a range of causal explanation queries with respect to models in which categorical variables play the key role. As the key tool will involve sampling-based posterior probability estimation, a lot of what will be said *mutatis mutandis* applies to more general settings where variables are continuous (to which we will devote another tutorial).\n", + "\n", + "In yet [another notebook](https://basisresearch.github.io/chirho/actual_causality.html) we illustrate how the module allows for a faithful reconstruction of a particular notion of local explanation (the so-called Halpern-Pearl modified definition of actual causality [(J. Halpern, MIT Press, 2016)](https://mitpress.mit.edu/9780262537131/actual-causality/)), which inspired some of the conceptual steps underlying the current implementation." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Outline**\n", + "\n", + "[Causal explanation and counterfactual thinking](#causal-explanation-and-counterfactual-thinking) \n", + "\n", + "\n", + "[Witness nodes and context sensitivity](#witness-nodes-and-context-sensitivity)\n", + "\n", + "[Probability of causation and responsibility](#probability-of-causation-and-responsibility)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Causal explanation and counterfactual thinking" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Consider the following causality-related queries:\n", + "\n", + "- **Friendly Fire:** On March 24, 2002, A B-52 bomber fired a Joint Direct Attack Munition at a US battalion command post, killing three and injuring twenty special forces soldiers. Out of multiple potential contributing factors, which were actually responsible for the incident?\n", + "\n", + "- **Overshoot:** In dealing with an epidemic, multiple different policies were imposed, leading to the overshoot (the number of those who became infected after the peak of the epidemic) rising from around 15% in the unintervened model to around 25%. Which of the policies caused the overshoot and to what extent?\n", + "\n", + "- **Explainable AI:** Your pre-trial release has been refused based on your [COMPAS score](https://en.wikipedia.org/wiki/COMPAS_(software)). The decision was made using a proprietary predictive model. All you have access to is the questionnaire that was used, and perhaps some demographic information about a class of human beings subjected to this evaluation. But which of these factors resulted in your score being what it is, and what were their contributions?\n", + "\n", + "\n", + "Questions of this sort are more local than those pertaining to average treatment effects, as they pertain to actual cases that come with their own contexts. Being able to answer them is useful for understanding how we can prevent undesirable outcomes similar to ones that we have observed, or promote the occurrence of desirable outcomes in contexts similar to the ones in which they had been observed. These context-sensitive causality questions are also an essential element of blame and responsibility assignments. If the phenomenon we're trying to explain is the behavior of a predictive model, we are dealing with a problem in explainable AI; but the underlying intuition behind the workings of **Explainable Reasoning with ChiRho** is that causally explaining the behavior of an opaque model is not that much different from providing a causal explanation of other real-world phenomena: we need to address such queries in a principled manner employing some approximate but hopefully reliable causal model of how things work (be that events outside of computers, or a predicitive model's behavior). **Explainable Reasoning with ChiRho** package aims to provide a unified general approach to the relevant causal explanation computations.\n", + "\n", + "At some level of generality, a useful point of departure is a general counterfactual one. On one hand, we can ask whether the event would have occurred had a given candidate cause not taken place. This is sometimes called the *but-for test*, has a tradition of being used as a tool for answering causality and attribution queries. \n", + "\n", + "- It is often used in [the law of torts](https://plato.stanford.edu/entries/causation-law/) to determine if a defendant's conduct was the cause of a particular harm. The test is often formulated as follows: \"But for the defendant's conduct, would the harm have occurred?\" \n", + "- A major philosophical position in the analysis of causality is that the definition of causal dependence should be formulated in terms of counterfactual conditionals (Lewis, 1973. “Causation”, Journal of Philosophy, 70: 556–67). On this approach, $e$ causally depends on $c$ if and only if, if $c$ were not to occur $e$ would not occur. (The view does not remain uncontested, see the [SEP entry on counterfactual theories of causation](https://plato.stanford.edu/entries/causation-counterfactual/)).\n", + "- At least a few major approaches to explainable AI (such as [LIME](https://arxiv.org/abs/1602.04938), or [Shapley values](https://papers.nips.cc/paper_files/paper/2017/hash/8a20a8621978632d76c43dfd28b67767-Abstract.html)) are based on the idea that explanations can be obtained by perturbing or shifting the input values and observing the changes in the output. This to a large extent can be thought of as a way of evaluating the but-for condition: if the input value was different, would the output value change? \n", + " \n", + "More generally, we can ask about the probability with which an alterantive intervention would lead to a cahnge in the outcome (perhaps while conditioning on other items of information), in line with the ideas present in Pearl's *Probabilities of causation...* and Chapter 9 of Pearl's *Causality*. While immensely useful, the but-for condition is not fine-grained enough to answer all the questions we are interested in or to give us the intended answers in cases in which the underlying causal model is non-trivial. We will illustrate this observation in this tutorial. \n", + "\n", + "\n", + "On the other hand, we can ask whether given our model (and perhaps conditioning on other pieces of information we posses), intervening on a given candidate cause to have a given value results in the outcome being as observed (or, more generally, the probability of that outcome being as observed) - this is conceptually similar to Pearl's probability of sufficiency. \n", + "\n", + "We will start with these two approaches, but soon we will notice that often our explanatory questions are more local and a more fine-grained tool is needed. The general intuition (inspired by Halpern's *Actual Causality*) that we implemented is that when we ask local explanatory questions, we need to keep some part of the actual context fixed and consider alternative scenarios insofar as potential causes are involved. That is, we (i) search through possible alternative interventions that could be performed on the candidate cause nodes, (ii) search through possible context nodes that are to be intervened to be at their factual values even in the counterfactual worlds, (iii) see how these options play out in intervened worlds, and (iv) investigate and meaningfully summarize what happens with the outcome nodes of interest in all those counterfactual worlds. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's start with a very simple model, in which a forest fire can be caused by exactly one of two things: a match being dropped (`match_dropped`), or a lightning strike (`lightning`), and either of these factors alone is already deterministically sufficient for the `forest_fire` to occur. A match being dropped is more likely than a lightning strike (we use fairly large probabilities for the sake of example transparency). For the sake of illustration, we also include a causally irrelevant site representing whether a ChiRho developer smiles, `smile`." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "env: CUDA_VISIBLE_DEVICES=-1\n" + ] + } + ], + "source": [ + "%env CUDA_VISIBLE_DEVICES=-1\n", + "from typing import Callable, Dict, List, Optional\n", + "\n", + "import math\n", + "import pyro\n", + "import pyro.distributions as dist\n", + "import pyro.distributions.constraints as constraints\n", + "import torch\n", + "from chirho.counterfactual.handlers.counterfactual import \\\n", + " MultiWorldCounterfactual\n", + "from chirho.explainable.handlers import ExtractSupports, SearchForExplanation\n", + "from chirho.indexed.ops import IndexSet, gather\n", + "from chirho.observational.handlers import condition\n", + "\n", + "pyro.settings.set(module_local_params=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "def importance_infer(\n", + " model: Optional[Callable] = None, *, num_samples: int\n", + "):\n", + " \n", + " if model is None:\n", + " return lambda m: importance_infer(m, num_samples=num_samples)\n", + "\n", + " def _wrapped_model(\n", + " *args,\n", + " **kwargs\n", + " ):\n", + "\n", + " guide = pyro.poutine.block(hide_fn=lambda msg: msg[\"is_observed\"])(model)\n", + "\n", + " max_plate_nesting = 9 # TODO guess\n", + "\n", + " with pyro.poutine.block(), MultiWorldCounterfactual() as mwc:\n", + " log_weights, importance_tr, _ = pyro.infer.importance.vectorized_importance_weights(\n", + " model,\n", + " guide,\n", + " *args,\n", + " num_samples=num_samples,\n", + " max_plate_nesting=max_plate_nesting,\n", + " normalized=False,\n", + " **kwargs\n", + " )\n", + "\n", + " return torch.logsumexp(log_weights, dim=0) - math.log(num_samples), importance_tr, mwc\n", + "\n", + " return _wrapped_model" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "u_match_dropped\n", + "\n", + "u_match_dropped\n", + "\n", + "\n", + "\n", + "match_dropped\n", + "\n", + "match_dropped\n", + "\n", + "\n", + "\n", + "u_lightning\n", + "\n", + "u_lightning\n", + "\n", + "\n", + "\n", + "lightning\n", + "\n", + "lightning\n", + "\n", + "\n", + "\n", + "smile\n", + "\n", + "smile\n", + "\n", + "\n", + "\n", + "forest_fire\n", + "\n", + "forest_fire\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def forest_fire_model():\n", + " u_match_dropped = pyro.sample(\"u_match_dropped\", dist.Bernoulli(0.7))\n", + " match_dropped = pyro.deterministic(\n", + " \"match_dropped\", u_match_dropped, event_dim=0\n", + " ) # notice uneven probs here\n", + "\n", + " u_lightning = pyro.sample(\"u_lightning\", dist.Bernoulli(0.4))\n", + " lightning = pyro.deterministic(\"lightning\", u_lightning, event_dim=0)\n", + "\n", + " # this is a causally irrelevant site\n", + " smile = pyro.sample(\"smile\", dist.Bernoulli(0.5))\n", + "\n", + " forest_fire = pyro.deterministic(\n", + " \"forest_fire\", torch.max(match_dropped, lightning) + (0 * smile), event_dim=0\n", + " )\n", + "\n", + " return {\n", + " \"match_dropped\": match_dropped,\n", + " \"lightning\": lightning,\n", + " \"forest_fire\": forest_fire,\n", + " }\n", + "\n", + "with ExtractSupports() as extract_supports:\n", + " forest_fire_model()\n", + " forest_fire_supports = {k: constraints.boolean for k in extract_supports.supports}\n", + "\n", + "pyro.render_model(forest_fire_model)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Throughout this tutorial, we assume all nodes are binary and use $'$ as negation. Once we specify (i) the distributions for the nodes we use (`supports`), (ii) candidate causes $X_i = x_i$ (`antecedents`) (iii) their alternative values ($X_i = x_i'$), (iv) elements of the current context (`witnesses`), and (v) the `consequents` of interest $Y=y$. The `SearchForExplanation` handler transforms the original model into one in which interventions and alternative interventions on the antecedents are applied in parallel counterfactual worlds stochastically preempted and context elements are stochastically selected and preempted to be kept at the factual values in all counterfactual worlds.\n", + "\n", + "First, let's go back to our original query. Let $F$ be the `forest_fire`, $f$ stand for $F=1$, $f'$ for $F=0$, $M$ stand for `match_dropped`, with analogous conventions. We also place interventions conditioned on in subscripts, so that, for example\n", + "$P(f_{m'})$ stands for $P(F=1\\vert do(M=0))$.\n", + "\n", + "We are currently interested in $P(f'_{m'}, f_m)$, that is the probability of both forest fire not occurring if we intervene on the match to not be dropped, and forest fire occurring if we intervene on the match to be dropped." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First, suppose we are interested in asking the question of whether dropping a match has causal power over whether the forest fire occurs. We assume all relevant nodes are binary. The potential cause (`antecedent`) we're considering is `match_dropped=1`, we contrast it with what would happen if we intervened on it to not happen (`alternatives`). We are interested in whether an outcome variable (`consequent`) has value 1 under these two interventions. The counterfactual world in which we intervene with `alternatives` is world 1, and the counterfactual world in which we intervene with `antecedents` is world 2. We will be interested in cases in which none of these interventions have been preempted (more about this later), so we will sample with appropriate masks as well." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tensor(0.2998)\n" + ] + } + ], + "source": [ + "query = SearchForExplanation(\n", + " supports=forest_fire_supports,\n", + " antecedents={\"match_dropped\": torch.tensor(1.0)},\n", + " consequents={\"forest_fire\": torch.tensor(1.0)},\n", + " witnesses={}, # potential context elements, we leave them empty for now\n", + " alternatives={\"match_dropped\": torch.tensor(0.0)},\n", + " consequent_scale=1e-5,\n", + ")(forest_fire_model)\n", + "\n", + "logp, trace, mwc = importance_infer(num_samples=10000)(query)()\n", + "print(torch.exp(logp))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "More interestingly, in cases of overdetermination, a similar estimation would lead us to assign no causal role to any of to co-contributing factors. This can be seen in the context in which both causes occurred. Trivially, if lightning occurred, then had no match been dropped, the forest fire, caused by lighning, would still occur (a symmetric reasoning goes through for the lightning as well), $P(f'_{m'}\\vert m, l) = P(f'_{l'}\\vert m, l)=0$. Intuitively, these quantities are not good guides to the causal role of `match_dropped` and `lightning`, as we think they did played a causal role. This is the first illustration of why the but-for analysis is not fine-grained enough." + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tensor(0.2059)\n" + ] + } + ], + "source": [ + "query = SearchForExplanation(\n", + " supports=forest_fire_supports,\n", + " antecedents={\"match_dropped\": torch.tensor(1.0)},\n", + " consequents={\"forest_fire\": torch.tensor(1.0)},\n", + " witnesses={}, # potential context elements, we leave them empty for now\n", + " alternatives={\"match_dropped\": torch.tensor(0.0)},\n", + " consequent_scale=1e-5,\n", + ")(condition(\n", + " data={\"match_dropped\": torch.tensor(1.0), \"lightning\": torch.tensor(1.0)}\n", + ")(forest_fire_model))\n", + "\n", + "logp, trace, mwc = importance_infer(num_samples=10000)(query)()\n", + "print(torch.exp(logp))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Comment: The ground truth example for correct intervention. This gives 0.42 as the answer which is the expected answer." + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tensor(0.4262)\n" + ] + } + ], + "source": [ + "query = SearchForExplanation(\n", + " supports=forest_fire_supports,\n", + " antecedents={\"match_dropped\": torch.tensor(1.0)},\n", + " consequents={\"forest_fire\": torch.tensor(1.0)},\n", + " witnesses={}, # potential context elements, we leave them empty for now\n", + " alternatives={\"match_dropped\": torch.tensor(0.0)},\n", + " antecedent_bias=-0.5,\n", + " consequent_scale=1e-5,\n", + ")(condition(\n", + " data={\"u_match_dropped\": torch.tensor(1.0)}\n", + ")(forest_fire_model))\n", + "\n", + "logp, trace, mwc = importance_infer(num_samples=10000)(query)()\n", + "print(torch.exp(logp))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Witness nodes and context sensitivity" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Some of these intuitions in the forest fire example may be salvaged by considering a two-membered antecedent set, estimating $P(f'_{m',l'}, f_{m,l})$. " + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tensor(0.4375)\n" + ] + } + ], + "source": [ + "query = SearchForExplanation(\n", + " supports=forest_fire_supports,\n", + " antecedents={\"match_dropped\": 1.0, \"lightning\": 1.0},\n", + " consequents={\"forest_fire\": torch.tensor(1.0)},\n", + " witnesses={},\n", + " alternatives={\"match_dropped\": 0.0, \"lightning\": 0.0},\n", + ")(forest_fire_model)\n", + "\n", + "logp, trace, mwc = importance_infer(num_samples=10000)(query)()\n", + "print(torch.exp(logp))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This already suggests a more complicated picture, as it turns out that we need to pay attention to membership in larger antecedent sets that would make a difference (that is one reason why we need stochasticity in antecedent candidate preemption: to search for such sets).\n", + "\n", + "But even then, the but-for analysis does not pay sufficient attention to the granularity of a given problem and its causal structure. There are asymmetric cases where the efficiency of one cause prevents the efficiency of another, in which our causal attributions should also be asymmetric, but \"being a member of the same larger antecedent set\" isn't.\n", + "\n", + "A simple example is breaking a bottle. Suppose Sally and Bob throw a rock at a bottle, and Sally does so a little earlier than Bob. Suppose both are perfectly accurate, and the bottle shatters when hit. Sally hits, and the bottle shatters, but Bob doesn't hit it because the bottle is no longer there. " + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "%3\n", + "\n", + "\n", + "\n", + "prob_sally_throws\n", + "\n", + "prob_sally_throws\n", + "\n", + "\n", + "\n", + "sally_throws\n", + "\n", + "sally_throws\n", + "\n", + "\n", + "\n", + "prob_sally_throws->sally_throws\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "prob_bill_throws\n", + "\n", + "prob_bill_throws\n", + "\n", + "\n", + "\n", + "bill_throws\n", + "\n", + "bill_throws\n", + "\n", + "\n", + "\n", + "prob_bill_throws->bill_throws\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "prob_sally_hits\n", + "\n", + "prob_sally_hits\n", + "\n", + "\n", + "\n", + "sally_hits\n", + "\n", + "sally_hits\n", + "\n", + "\n", + "\n", + "prob_sally_hits->sally_hits\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "prob_bill_hits\n", + "\n", + "prob_bill_hits\n", + "\n", + "\n", + "\n", + "bill_hits\n", + "\n", + "bill_hits\n", + "\n", + "\n", + "\n", + "prob_bill_hits->bill_hits\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "prob_bottle_shatters_if_sally\n", + "\n", + "prob_bottle_shatters_if_sally\n", + "\n", + "\n", + "\n", + "bottle_shatters\n", + "\n", + "bottle_shatters\n", + "\n", + "\n", + "\n", + "prob_bottle_shatters_if_sally->bottle_shatters\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "prob_bottle_shatters_if_bill\n", + "\n", + "prob_bottle_shatters_if_bill\n", + "\n", + "\n", + "\n", + "prob_bottle_shatters_if_bill->bottle_shatters\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "sally_throws->sally_hits\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "bill_throws->bill_hits\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "sally_hits->bill_hits\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "sally_hits->bottle_shatters\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "bill_hits->bottle_shatters\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def stones_model():\n", + " prob_sally_throws = pyro.sample(\"prob_sally_throws\", dist.Beta(1, 1))\n", + " prob_bill_throws = pyro.sample(\"prob_bill_throws\", dist.Beta(1, 1))\n", + " prob_sally_hits = pyro.sample(\"prob_sally_hits\", dist.Beta(1, 1))\n", + " prob_bill_hits = pyro.sample(\"prob_bill_hits\", dist.Beta(1, 1))\n", + " prob_bottle_shatters_if_sally = pyro.sample(\n", + " \"prob_bottle_shatters_if_sally\", dist.Beta(1, 1)\n", + " )\n", + " prob_bottle_shatters_if_bill = pyro.sample(\n", + " \"prob_bottle_shatters_if_bill\", dist.Beta(1, 1)\n", + " )\n", + "\n", + " sally_throws = pyro.sample(\"sally_throws\", dist.Bernoulli(prob_sally_throws))\n", + " bill_throws = pyro.sample(\"bill_throws\", dist.Bernoulli(prob_bill_throws))\n", + "\n", + " # if Sally throws, she hits with probability prob_sally_hits\n", + " # hits with pr=0 otherwise\n", + " new_shp = torch.where(sally_throws == 1, prob_sally_hits, 0.0)\n", + "\n", + " sally_hits = pyro.sample(\"sally_hits\", dist.Bernoulli(new_shp))\n", + "\n", + " # if Bill throws, he hits with probability prob_bill_hits\n", + " # if sally doesn't hit sooner,\n", + " # misses otherwise\n", + " new_bhp = torch.where(\n", + " bill_throws.bool() & (~sally_hits.bool()),\n", + " prob_bill_hits,\n", + " torch.tensor(0.0),\n", + " )\n", + "\n", + " bill_hits = pyro.sample(\"bill_hits\", dist.Bernoulli(new_bhp))\n", + "\n", + " # you can use a analogous move to model the bottle shattering\n", + " # if being hit by a stone doesn't deterministically\n", + " # shatter the bottle\n", + " new_bsp = torch.where(\n", + " bill_hits.bool(),\n", + " prob_bottle_shatters_if_bill,\n", + " torch.where(\n", + " sally_hits.bool(),\n", + " prob_bottle_shatters_if_sally,\n", + " torch.tensor(0.0),\n", + " ),\n", + " )\n", + "\n", + " bottle_shatters = pyro.sample(\"bottle_shatters\", dist.Bernoulli(new_bsp))\n", + "\n", + " return {\n", + " \"sally_throws\": sally_throws,\n", + " \"bill_throws\": bill_throws,\n", + " \"sally_hits\": sally_hits,\n", + " \"bill_hits\": bill_hits,\n", + " \"bottle_shatters\": bottle_shatters,\n", + " }\n", + "\n", + "\n", + "with ExtractSupports() as extract_supports:\n", + " stones_model()\n", + " stones_supports = {k: constraints.boolean if not k.startswith(\"prob_\") else v for k, v in extract_supports.supports.items()}\n", + "\n", + "pyro.render_model(stones_model)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For now let us assume that the relevant probabilities are 1 (this forces both Sally and Bill to throw stones, makes them perfectly accurate and makes the bottle always shatter if hit). Let us start with the type of analysis we performed for the forest fire case. " + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tensor(1.0013e-05)\n" + ] + } + ], + "source": [ + "query = SearchForExplanation(\n", + " supports=stones_supports,\n", + " antecedents={\"sally_throws\": torch.tensor(1.0)},\n", + " consequents={\"bottle_shatters\": torch.tensor(1.0)},\n", + " witnesses={},\n", + " alternatives={\"sally_throws\": torch.tensor(0.0)},\n", + " consequent_scale=1e-5,\n", + ")(condition(\n", + " data={\n", + " \"prob_sally_throws\": torch.tensor(1.0),\n", + " \"prob_bill_throws\": torch.tensor(1.0),\n", + " \"prob_sally_hits\": torch.tensor(1.0),\n", + " \"prob_bill_hits\": torch.tensor(1.0),\n", + " \"prob_bottle_shatters_if_sally\": torch.tensor(1.0),\n", + " \"prob_bottle_shatters_if_bill\": torch.tensor(1.0),\n", + " }\n", + ")(stones_model))\n", + "\n", + "logp, trace, mwc = importance_infer(num_samples=10000)(query)()\n", + "print(torch.exp(logp))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Sally's throw does not satisfy the but-for condition: if she hadn't thrown the rock, the bottle would still have shattered. Of course, the combined event of Sally throwing a rock and Bob throwing a rock is a but-for cause of the bottle shattering. But that doesn't capture the clear asymmetry at work here. Intuitively, Sally's throw is the (actual) cause of the bottle breaking in a way that Bob's throw isn't. Sally's throw actually caused the bottle to shatter and Bob's throw didn't, in part because Bob's stone didn't actually hit the bottle." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "An intuitive solution to the problem, inspired by the Pearl-Halpern definition of actual causality (which we discuss in [another notebook](https://basisresearch.github.io/chirho/actual_causality.html)) is to say that **in answering actual causality queries, we need to consider what happens when part of the actual context is kept fixed.** For instance, in the bottle shattering example, given the observed fact that Bob’s stone didn’t hit, in the counterfactual world in which we keep this observed fact fixed, if Sally nad not thrown the stone, the bottle in fact would not have shattered. \n", + "\n", + "\n", + "For this reason, our handler allows not only stochastic preemption of interventions (to approximate the search through possible antecedent sets) but also stochastic witness preemption of those nodes that are considered part of the context (these needn't exclude each other). In a witness preemption, we ensure that the counterfactual value is identical to the factual one (and by applying it randomly to candidate witness nodes, we approximate a search through all possible context sets)." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tensor(0.2521)\n" + ] + } + ], + "source": [ + "query = SearchForExplanation(\n", + " supports=stones_supports,\n", + " antecedents={\"sally_throws\": torch.tensor(1.0)},\n", + " consequents={\"bottle_shatters\": torch.tensor(1.0)},\n", + " witnesses={\"bill_hits\": None},\n", + " alternatives={\"sally_throws\": torch.tensor(0.0)},\n", + ")(condition(\n", + " data={\n", + " \"prob_sally_throws\": torch.tensor(1.0),\n", + " \"prob_bill_throws\": torch.tensor(1.0),\n", + " \"prob_sally_hits\": torch.tensor(1.0),\n", + " \"prob_bill_hits\": torch.tensor(1.0),\n", + " \"prob_bottle_shatters_if_sally\": torch.tensor(1.0),\n", + " \"prob_bottle_shatters_if_bill\": torch.tensor(1.0),\n", + " }\n", + ")(stones_model))\n", + "\n", + "logp, trace, mwc = importance_infer(num_samples=10000)(query)()\n", + "print(torch.exp(logp))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Admittedly, our search through contexts is very simple and degenerate, as the only part of the actual context which stochastically is kept fixed at the factual value is `bill_hits`. But already with this search, sally throwing is diagnosed as having non-null probability. In fact, the definition of actual causality in Halpern's book (*Actual causality*) contains an existential quantifier: a variable is an actual cause if there is at least one context in which a change in the outcome variable would result from changing the antecedent to have an alternative value, so our search provides a correct diagnosis here.\n", + "\n", + "Crucally, as intended, an analogous inference for whether `bill_throws` is a cause of the bottle shattering, yields a different\n", + "result and assigns null causal role to bill." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tensor(1.0013e-05)\n" + ] + } + ], + "source": [ + "query = SearchForExplanation(\n", + " supports=stones_supports,\n", + " antecedents={\"bill_throws\": torch.tensor(1.0)},\n", + " consequents={\"bottle_shatters\": torch.tensor(1.0)},\n", + " witnesses={\"sally_hits\": None},\n", + " alternatives={\"bill_throws\": torch.tensor(0.0)},\n", + " consequent_scale=1e-5,\n", + ")(condition(\n", + " data={\n", + " \"prob_sally_throws\": torch.tensor(1.0),\n", + " \"prob_bill_throws\": torch.tensor(1.0),\n", + " \"prob_sally_hits\": torch.tensor(1.0),\n", + " \"prob_bill_hits\": torch.tensor(1.0),\n", + " \"prob_bottle_shatters_if_sally\": torch.tensor(1.0),\n", + " \"prob_bottle_shatters_if_bill\": torch.tensor(1.0),\n", + " }\n", + ")(stones_model))\n", + "\n", + "logp, trace, mwc = importance_infer(num_samples=10000)(query)()\n", + "print(torch.exp(logp))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Probability of causation and responsibility" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We might use non-trivial probabilities and be interested in more involved queries. Suppose we aren't sure what part of the context we want to hold fixed, allowing both `sally_hits` and `bill_hits` to be witness candidates, so we attach equal weights to all four possible context sets. \n", + "\n", + "Suppose also that beyond knowing the non-degenerate probabilities involved, we don't know who threw the stone, and we only observed the bottle has been shattered. We can use the handler to estimate the answer to a somewhat different question involving the probabilities that changing the value of `sally_throws` or changing the value of `billy_throws` (whatever these are in the factual world) would lead to a change in the outcome variables, and that fixing them to be at the factual values would result in the outcome variable having the same value. We also allow both `sally_hits` and `bill_hits` as potential witnesses.\n", + "\n", + "For example, we can sample to estimate quantities such as the fraction of possible causes of the bottle shattering in which Sally and Billy are each responsibile:" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Degree of responsibility of Sally: tensor(0.7581)\n", + "Degree of responsibility of Billy: tensor(0.6069)\n" + ] + } + ], + "source": [ + "query = SearchForExplanation(\n", + " supports=stones_supports,\n", + " antecedents={\"sally_throws\": None, \"bill_throws\": None},\n", + " consequents={\"bottle_shatters\": torch.tensor(1.0)},\n", + " witnesses={\"sally_hits\": None, \"bill_hits\": None},\n", + ")(condition(\n", + " data={\n", + " \"prob_sally_throws\": torch.tensor(0.8),\n", + " \"prob_bill_throws\": torch.tensor(0.7),\n", + " \"prob_sally_hits\": torch.tensor(0.9),\n", + " \"prob_bill_hits\": torch.tensor(0.8),\n", + " \"prob_bottle_shatters_if_sally\": torch.tensor(0.9),\n", + " \"prob_bottle_shatters_if_bill\": torch.tensor(0.8),\n", + " \"bottle_shatters\": torch.tensor(1.0),\n", + " }\n", + ")(stones_model))\n", + "\n", + "logp, trace, mwc = importance_infer(num_samples=20000)(query)()\n", + "\n", + "nodes = trace.nodes[\"_RETURN\"][\"value\"]\n", + "with mwc:\n", + " st_responsible = gather(nodes[\"sally_throws\"], IndexSet(sally_throws={1})) != \\\n", + " gather(nodes[\"sally_throws\"], IndexSet(sally_throws={2}))\n", + " bt_responsible = gather(nodes[\"bill_throws\"], IndexSet(bill_throws={1})) != \\\n", + " gather(nodes[\"bill_throws\"], IndexSet(bill_throws={2}))\n", + "\n", + "print(\"Degree of responsibility of Sally:\", st_responsible.sum() / st_responsible.numel())\n", + "print(\"Degree of responsibility of Billy:\", bt_responsible.sum() / bt_responsible.numel())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note that we assumed Sally to be more likely to throw, more likely to hit, and more likely to shatter the bottle if she hits. For this reason, we expect her to be more likely to be causally responsible for the outcome. Conceptually, these estimates are impacted by some hyperparameters, such as witness preemption probabilities, so perhaps a bit more clarity on can be gained if we think we have a complete list of potential causes and normalize. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "pyro1.9", + "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.10.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 7e2501a8eb6ebb1b9751f79e0d48d72e1f44543b Mon Sep 17 00:00:00 2001 From: PoorvaGarg Date: Thu, 8 Aug 2024 18:48:15 -0400 Subject: [PATCH 25/53] responsibility debug --- .../explainable_categorical_alternate.ipynb | 451 ++++++++++++++---- 1 file changed, 354 insertions(+), 97 deletions(-) diff --git a/docs/source/explainable_categorical_alternate.ipynb b/docs/source/explainable_categorical_alternate.ipynb index d3b81248..2c6f8bab 100644 --- a/docs/source/explainable_categorical_alternate.ipynb +++ b/docs/source/explainable_categorical_alternate.ipynb @@ -77,7 +77,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 154, "metadata": {}, "outputs": [ { @@ -102,13 +102,14 @@ "from chirho.explainable.handlers import ExtractSupports, SearchForExplanation\n", "from chirho.indexed.ops import IndexSet, gather\n", "from chirho.observational.handlers import condition\n", + "from chirho.observational.handlers.soft_conditioning import soft_eq, KernelSoftConditionReparam\n", "\n", "pyro.settings.set(module_local_params=True)" ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 250, "metadata": {}, "outputs": [], "source": [ @@ -139,14 +140,30 @@ " **kwargs\n", " )\n", "\n", - " return torch.logsumexp(log_weights, dim=0) - math.log(num_samples), importance_tr, mwc\n", + " # # resample using importance weights to get posterior samples\n", + " # idx = dist.Categorical(logits=log_weights).sample((num_samples,))\n", + " # for name, node in importance_tr.nodes.items():\n", + " # if node[\"type\"] != \"sample\" or pyro.poutine.util.site_is_subsample(node) or node[\"is_observed\"]:\n", + " # continue\n", + " # importance_tr.nodes[name][\"value\"] = torch.index_select(\n", + " # importance_tr.nodes[name][\"value\"],\n", + " # -max_plate_nesting - 1 - len(importance_tr.nodes[name][\"fn\"].event_shape),\n", + " # idx,\n", + " # )\n", + "\n", + " print(log_weights)\n", + "\n", + " # with pyro.poutine.replay(trace=importance_tr), mwc:\n", + " # trace = pyro.poutine.trace(model).get_trace(*args, **kwargs)\n", + "\n", + " return torch.logsumexp(log_weights, dim=0) - math.log(num_samples), importance_tr, mwc, log_weights\n", "\n", " return _wrapped_model" ] }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 156, "metadata": {}, "outputs": [ { @@ -202,10 +219,10 @@ "\n" ], "text/plain": [ - "" + "" ] }, - "execution_count": 13, + "execution_count": 156, "metadata": {}, "output_type": "execute_result" } @@ -261,14 +278,14 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 157, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.2998)\n" + "tensor(0.3000)\n" ] } ], @@ -282,10 +299,29 @@ " consequent_scale=1e-5,\n", ")(forest_fire_model)\n", "\n", - "logp, trace, mwc = importance_infer(num_samples=10000)(query)()\n", + "logp, trace, mwc = importance_infer(num_samples=10)(query)()\n", "print(torch.exp(logp))" ] }, + { + "cell_type": "code", + "execution_count": 158, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "torch.Size([10, 1, 1, 1, 1, 1, 1, 1, 1, 1])\n", + "torch.Size([10, 1, 1, 1, 1, 1, 1, 1, 1, 1])\n" + ] + } + ], + "source": [ + "print(trace.nodes[\"match_dropped\"][\"value\"].shape)\n", + "print(trace.nodes[\"__cause____antecedent_match_dropped\"][\"value\"].shape)" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -295,14 +331,14 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 159, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.2059)\n" + "tensor(1.0013e-05)\n" ] } ], @@ -331,18 +367,48 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 160, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.4262)\n" + "{'u_match_dropped': Boolean(), 'match_dropped': Boolean(), 'u_lightning': Boolean(), 'lightning': Boolean(), 'smile': Boolean(), 'forest_fire': Boolean()}\n" ] } ], "source": [ + "print(forest_fire_supports)" + ] + }, + { + "cell_type": "code", + "execution_count": 175, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tensor(0.4186)\n" + ] + } + ], + "source": [ + "\n", + "import math\n", + "# reparam_config = AutoSoftConditioning(scale=math.sqrt(1/(2*math.pi)))\n", + "# def _soft_eq(v1: torch.Tensor, v2: torch.Tensor) -> torch.Tensor:\n", + "# return soft_eq(constraints.boolean, v1, v2, scale=scale)\n", + "# reparam_config = {\"match_dropped\": KernelSoftConditionReparam(_soft_eq)}\n", + "\n", + "def _soft_eq(v1: torch.Tensor, v2: torch.Tensor) -> torch.Tensor:\n", + " return soft_eq(constraints.boolean, v1, v2, scale=0.001)\n", + "\n", + "reparam_config = {\"match_dropped\": KernelSoftConditionReparam(_soft_eq)}\n", + "\n", + "\n", "query = SearchForExplanation(\n", " supports=forest_fire_supports,\n", " antecedents={\"match_dropped\": torch.tensor(1.0)},\n", @@ -351,11 +417,13 @@ " alternatives={\"match_dropped\": torch.tensor(0.0)},\n", " antecedent_bias=-0.5,\n", " consequent_scale=1e-5,\n", - ")(condition(\n", - " data={\"u_match_dropped\": torch.tensor(1.0)}\n", - ")(forest_fire_model))\n", + ")(\n", + " pyro.poutine.reparam(config=reparam_config)(\n", + " condition(data={\"match_dropped\": torch.tensor(1.0)})\n", + " (forest_fire_model)\n", + "))\n", "\n", - "logp, trace, mwc = importance_infer(num_samples=10000)(query)()\n", + "logp, trace, mwc = importance_infer(num_samples=100000)(query)()\n", "print(torch.exp(logp))" ] }, @@ -375,14 +443,14 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 97, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.4375)\n" + "tensor(0.4616)\n" ] } ], @@ -412,7 +480,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 98, "metadata": {}, "outputs": [ { @@ -421,154 +489,153 @@ "\n", "\n", - "\n", - "\n", - "\n", + "\n", + "\n", "\n", - "%3\n", - "\n", + "\n", "\n", "\n", "prob_sally_throws\n", - "\n", - "prob_sally_throws\n", + "\n", + "prob_sally_throws\n", "\n", "\n", "\n", "sally_throws\n", - "\n", - "sally_throws\n", + "\n", + "sally_throws\n", "\n", "\n", "\n", "prob_sally_throws->sally_throws\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "prob_bill_throws\n", - "\n", - "prob_bill_throws\n", + "\n", + "prob_bill_throws\n", "\n", "\n", "\n", "bill_throws\n", - "\n", - "bill_throws\n", + "\n", + "bill_throws\n", "\n", "\n", "\n", "prob_bill_throws->bill_throws\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "prob_sally_hits\n", - "\n", - "prob_sally_hits\n", + "\n", + "prob_sally_hits\n", "\n", "\n", "\n", "sally_hits\n", - "\n", - "sally_hits\n", + "\n", + "sally_hits\n", "\n", "\n", "\n", "prob_sally_hits->sally_hits\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "prob_bill_hits\n", - "\n", - "prob_bill_hits\n", + "\n", + "prob_bill_hits\n", "\n", "\n", "\n", "bill_hits\n", - "\n", - "bill_hits\n", + "\n", + "bill_hits\n", "\n", "\n", "\n", "prob_bill_hits->bill_hits\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "prob_bottle_shatters_if_sally\n", - "\n", - "prob_bottle_shatters_if_sally\n", + "\n", + "prob_bottle_shatters_if_sally\n", "\n", "\n", "\n", "bottle_shatters\n", - "\n", - "bottle_shatters\n", + "\n", + "bottle_shatters\n", "\n", "\n", "\n", "prob_bottle_shatters_if_sally->bottle_shatters\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "prob_bottle_shatters_if_bill\n", - "\n", - "prob_bottle_shatters_if_bill\n", + "\n", + "prob_bottle_shatters_if_bill\n", "\n", "\n", - "\n", + "\n", "prob_bottle_shatters_if_bill->bottle_shatters\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "sally_throws->sally_hits\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", - "\n", + "\n", "bill_throws->bill_hits\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", - "\n", + "\n", "sally_hits->bill_hits\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "sally_hits->bottle_shatters\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", - "\n", + "\n", "bill_hits->bottle_shatters\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n" ], "text/plain": [ - "" + "" ] }, - "execution_count": 7, + "execution_count": 98, "metadata": {}, "output_type": "execute_result" } @@ -646,7 +713,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 186, "metadata": {}, "outputs": [ { @@ -699,14 +766,16 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 292, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.2521)\n" + "tensor([-1.1512e+01, -1.1512e+01, -1.1512e+01, ..., -2.3024e+01,\n", + " -1.1512e+01, -2.0027e-05])\n", + "tensor(0.2495)\n" ] } ], @@ -717,6 +786,7 @@ " consequents={\"bottle_shatters\": torch.tensor(1.0)},\n", " witnesses={\"bill_hits\": None},\n", " alternatives={\"sally_throws\": torch.tensor(0.0)},\n", + " consequent_scale=1e-5\n", ")(condition(\n", " data={\n", " \"prob_sally_throws\": torch.tensor(1.0),\n", @@ -728,10 +798,38 @@ " }\n", ")(stones_model))\n", "\n", - "logp, trace, mwc = importance_infer(num_samples=10000)(query)()\n", + "logp, trace, mwc, logw = importance_infer(num_samples=100000)(query)()\n", "print(torch.exp(logp))" ] }, + { + "cell_type": "code", + "execution_count": 151, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tensor(1.)\n", + "torch.Size([1, 1, 1, 1, 1, 1, 1, 1, 1, 1])\n", + "torch.Size([1, 1, 1, 1, 1, 3, 1, 1, 1, 1])\n", + "torch.Size([1, 1, 1, 1, 1, 1, 1, 1, 1, 1])\n", + "tensor([1., 0., 1.])\n", + "tensor([ 0.0000, -0.0101, -0.0101])\n" + ] + } + ], + "source": [ + "trace.nodes.keys()\n", + "print(trace.nodes['sally_throws'][\"value\"].squeeze())\n", + "print(trace.nodes['__cause____antecedent_sally_throws'][\"value\"].shape)\n", + "print(trace.nodes['bill_hits'][\"value\"].shape)\n", + "print(trace.nodes['__cause____witness_bill_hits'][\"value\"].shape)\n", + "print(trace.nodes['bottle_shatters'][\"value\"].squeeze())\n", + "print(trace.nodes['__cause____consequent_bottle_shatters'][\"log_prob\"].squeeze())" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -744,7 +842,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 203, "metadata": {}, "outputs": [ { @@ -798,15 +896,27 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 300, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Degree of responsibility of Sally: tensor(0.7581)\n", - "Degree of responsibility of Billy: tensor(0.6069)\n" + "tensor([-11.5116, -23.0245, -23.0245, -11.5116, -23.0245, -23.0245, -11.5116,\n", + " -23.0245, -11.5116, -23.0245])\n", + "tensor(-12.4279)\n", + "tensor(4.0055e-06)\n", + "torch.Size([10, 1, 1, 1, 1, 1, 1, 1, 1, 1])\n", + "torch.Size([10, 1, 1, 1, 1, 3, 1, 1, 1, 1])\n", + "tensor([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])\n", + "tensor([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])\n", + "tensor([1., 0., 0., 0., 0., 0., 1., 0., 0., 0.])\n", + "tensor([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])\n", + "tensor([1., 0., 1., 0., 1., 1., 1., 1., 1., 0.])\n", + "tensor([0., 1., 0., 1., 0., 1., 0., 0., 1., 1.])\n", + "Degree of responsibility of Sally: tensor(0.8000)\n", + "Degree of responsibility of Billy: tensor(0.8000)\n" ] } ], @@ -816,24 +926,41 @@ " antecedents={\"sally_throws\": None, \"bill_throws\": None},\n", " consequents={\"bottle_shatters\": torch.tensor(1.0)},\n", " witnesses={\"sally_hits\": None, \"bill_hits\": None},\n", + " consequent_scale=1e-5\n", ")(condition(\n", " data={\n", - " \"prob_sally_throws\": torch.tensor(0.8),\n", - " \"prob_bill_throws\": torch.tensor(0.7),\n", - " \"prob_sally_hits\": torch.tensor(0.9),\n", - " \"prob_bill_hits\": torch.tensor(0.8),\n", - " \"prob_bottle_shatters_if_sally\": torch.tensor(0.9),\n", - " \"prob_bottle_shatters_if_bill\": torch.tensor(0.8),\n", + " \"prob_sally_throws\": torch.tensor(1.0),\n", + " \"prob_bill_throws\": torch.tensor(1.0),\n", + " \"prob_sally_hits\": torch.tensor(1.0),\n", + " \"prob_bill_hits\": torch.tensor(1.0),\n", + " \"prob_bottle_shatters_if_sally\": torch.tensor(1.0),\n", + " \"prob_bottle_shatters_if_bill\": torch.tensor(1.0),\n", " \"bottle_shatters\": torch.tensor(1.0),\n", " }\n", ")(stones_model))\n", "\n", - "logp, trace, mwc = importance_infer(num_samples=20000)(query)()\n", + "logp, trace, mwc, logw = importance_infer(num_samples=10)(query)()\n", + "\n", + "print(logp)\n", + "\n", + "print(torch.exp(logp))\n", "\n", "nodes = trace.nodes[\"_RETURN\"][\"value\"]\n", + "\n", + "print(trace.nodes[\"sally_throws\"][\"value\"].shape)\n", + "print(nodes[\"sally_throws\"].shape)\n", "with mwc:\n", + " print(gather(nodes[\"sally_throws\"], IndexSet(sally_throws={0})).squeeze())\n", + " print(gather(nodes[\"sally_throws\"], IndexSet(sally_throws={1})).squeeze())\n", + " print(gather(nodes[\"sally_throws\"], IndexSet(sally_throws={2})).squeeze())\n", + "\n", + " print(gather(nodes[\"bill_throws\"], IndexSet(bill_throws={0})).squeeze())\n", + " print(gather(nodes[\"bill_throws\"], IndexSet(bill_throws={1})).squeeze())\n", + " print(gather(nodes[\"bill_throws\"], IndexSet(bill_throws={2})).squeeze())\n", + "\n", " st_responsible = gather(nodes[\"sally_throws\"], IndexSet(sally_throws={1})) != \\\n", " gather(nodes[\"sally_throws\"], IndexSet(sally_throws={2}))\n", + "\n", " bt_responsible = gather(nodes[\"bill_throws\"], IndexSet(bill_throws={1})) != \\\n", " gather(nodes[\"bill_throws\"], IndexSet(bill_throws={2}))\n", "\n", @@ -850,17 +977,147 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 298, "metadata": {}, - "outputs": [], - "source": [] + "outputs": [ + { + "data": { + "text/plain": [ + "tensor(0.8100)" + ] + }, + "execution_count": 298, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "st_responsible2 = st_responsible.float()\n", + "st_responsible2[st_responsible2 == 0.0] = 9.2\n", + "st_responsible2[st_responsible2 == 1.0] = 1.0\n", + "# st_responsible2\n", + "logp = torch.logsumexp(st_responsible2.squeeze().float() * logw, dim=0) - torch.log(torch.tensor(1000))\n", + "torch.exp(logp)" + ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 261, "metadata": {}, - "outputs": [], - "source": [] + "outputs": [ + { + "data": { + "text/plain": [ + "tensor([False, False, True, True, True, True, True, False, True, False,\n", + " True, True, False, True, True, False, True, True, True, True,\n", + " True, True, False, True, True, True, True, True, True, True,\n", + " False, True, True, False, False, True, True, True, True, True,\n", + " True, True, True, True, True, True, True, True, True, False,\n", + " True, False, True, True, True, True, False, True, True, False,\n", + " False, False, True, True, True, True, True, False, True, True,\n", + " False, True, True, True, True, False, True, True, True, True,\n", + " True, True, True, False, True, True, False, True, False, True,\n", + " True, True, False, True, False, True, True, True, True, True,\n", + " True, False, True, False, True, False, False, True, True, True,\n", + " True, False, True, True, True, True, True, False, False, True,\n", + " False, True, True, True, True, True, True, True, True, True,\n", + " True, True, True, True, True, True, True, False, True, True,\n", + " False, True, True, True, False, True, True, False, True, False,\n", + " True, True, True, True, True, True, True, True, True, True,\n", + " True, True, False, False, True, True, True, True, True, True,\n", + " False, True, False, True, True, True, True, True, True, True,\n", + " True, True, True, True, True, True, False, True, True, True,\n", + " True, False, True, True, True, True, False, False, False, True,\n", + " True, True, True, True, True, False, True, False, True, False,\n", + " False, True, True, True, True, True, True, True, False, True,\n", + " True, True, True, False, True, True, False, False, True, True,\n", + " True, True, False, True, True, True, True, True, True, True,\n", + " False, True, True, False, False, True, True, True, True, False,\n", + " True, True, True, True, True, True, True, True, True, False,\n", + " True, False, False, True, True, True, True, True, True, False,\n", + " True, False, True, True, False, False, True, False, False, True,\n", + " True, True, True, True, True, False, True, True, False, True,\n", + " True, False, True, False, True, False, False, True, True, True,\n", + " False, True, False, True, True, True, True, False, True, True,\n", + " True, True, True, True, True, False, True, True, False, True,\n", + " False, True, True, True, True, True, True, True, True, True,\n", + " True, True, False, True, True, True, True, False, True, True,\n", + " True, False, True, True, True, True, False, True, True, True,\n", + " False, True, True, True, True, True, False, True, True, True,\n", + " False, False, True, True, False, True, False, True, False, True,\n", + " True, False, False, True, False, True, True, True, True, True,\n", + " True, False, True, False, False, True, False, True, True, True,\n", + " True, True, True, False, True, False, True, True, True, True,\n", + " True, True, True, True, True, True, True, True, False, True,\n", + " True, True, True, True, True, True, True, True, True, True,\n", + " True, True, False, True, False, False, False, True, False, False,\n", + " True, True, True, True, True, True, False, False, True, True,\n", + " True, True, False, True, True, True, False, True, False, True,\n", + " True, True, True, True, True, True, False, False, True, True,\n", + " False, True, False, True, True, True, False, True, True, True,\n", + " True, True, True, True, True, False, True, True, True, False,\n", + " True, False, True, True, True, False, True, True, True, False,\n", + " False, False, True, True, True, True, True, True, True, True,\n", + " True, True, True, True, True, False, True, False, True, True,\n", + " True, True, True, False, False, True, True, True, False, False,\n", + " True, True, True, False, True, True, False, True, True, True,\n", + " True, True, True, True, False, True, True, True, True, True,\n", + " True, False, True, True, False, True, True, True, True, True,\n", + " False, True, True, True, True, False, False, True, True, True,\n", + " True, True, True, True, True, False, True, True, False, False,\n", + " True, True, False, True, True, True, True, False, True, True,\n", + " True, False, True, True, False, False, True, True, True, True,\n", + " True, True, True, True, True, True, False, True, False, False,\n", + " True, True, True, False, True, True, False, True, True, True,\n", + " True, True, True, True, True, True, True, False, True, True,\n", + " True, True, False, True, True, False, True, True, False, False,\n", + " True, False, False, True, True, True, True, True, False, True,\n", + " True, True, True, False, False, True, False, False, True, True,\n", + " True, False, False, True, True, True, False, False, True, True,\n", + " True, True, False, True, True, True, True, False, False, True,\n", + " False, True, True, True, True, True, True, True, True, False,\n", + " True, True, True, False, True, True, True, True, True, False,\n", + " False, False, True, True, False, True, True, False, False, False,\n", + " False, True, True, True, True, True, True, False, True, True,\n", + " True, True, True, False, False, False, False, True, True, True,\n", + " True, True, True, True, True, False, True, True, True, False,\n", + " True, False, True, True, True, True, True, True, True, True,\n", + " True, True, False, False, False, True, True, True, False, False,\n", + " True, True, True, True, False, True, True, True, True, True,\n", + " True, True, False, True, True, False, True, False, False, True,\n", + " False, True, True, True, True, True, True, False, False, True,\n", + " True, True, False, True, False, False, True, True, True, True,\n", + " False, True, True, True, True, False, True, True, True, True,\n", + " True, True, True, True, True, True, False, True, True, True,\n", + " False, True, True, True, True, True, False, True, True, True,\n", + " True, True, True, True, True, True, False, True, True, True,\n", + " False, False, True, True, True, True, True, True, True, True,\n", + " False, True, True, True, True, False, True, False, True, False,\n", + " True, True, True, False, True, True, True, True, True, True,\n", + " True, True, True, True, True, True, True, True, False, True,\n", + " False, True, True, False, True, True, False, False, False, True,\n", + " True, True, True, False, True, True, True, True, True, True,\n", + " True, True, False, False, True, True, True, True, True, True,\n", + " True, True, True, True, False, True, True, True, True, False,\n", + " True, True, True, True, True, True, True, True, True, False,\n", + " True, True, True, True, False, False, True, True, True, False,\n", + " True, True, True, False, False, True, False, True, False, True,\n", + " True, True, True, True, True, True, True, False, True, False,\n", + " True, True, True, True, True, True, True, True, True, False,\n", + " False, True, True, False, True, True, True, True, True, True,\n", + " True, True, True, True, True, False, True, True, False, True,\n", + " False, False, True, True, True, True, False, True, True, False,\n", + " False, True, True, True, True, False, True, False, True, False])" + ] + }, + "execution_count": 261, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "st_responsible.squeeze()" + ] }, { "cell_type": "code", From 2a387986e3172e5e4659bc2874ab9137cf724150 Mon Sep 17 00:00:00 2001 From: PoorvaGarg Date: Fri, 9 Aug 2024 17:24:40 -0400 Subject: [PATCH 26/53] documentation commit --- .../explainable_categorical_alternate.ipynb | 10030 +++++++++++++++- docs/source/responsibility.ipynb | 499 + 2 files changed, 10402 insertions(+), 127 deletions(-) create mode 100644 docs/source/responsibility.ipynb diff --git a/docs/source/explainable_categorical_alternate.ipynb b/docs/source/explainable_categorical_alternate.ipynb index 2c6f8bab..339e19df 100644 --- a/docs/source/explainable_categorical_alternate.ipynb +++ b/docs/source/explainable_categorical_alternate.ipynb @@ -11,17 +11,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The **Explainable Reasoning with ChiRho** package aims to provide a systematic, unified approach to causal explanation computations in terms of different probabilistic queries over expanded causal models that are constructed from a single generic program transformation applied to an arbitrary causal model represented as a ChiRho program. The approach of reducing causal queries to probabilistic computations on transformed causal models is the foundational idea behind all of ChiRho. The key strategy underlying \"causal explanation\" queries is their use of auxiliary variables representing uncertainty about what the proposed interventions are and which interventions or preemptions to apply, implicitly inducing a search space over counterfactuals.\n", + "The **Explainable Reasoning with ChiRho** package aims to provide a systematic, unified approach to causal explanation computations. The package provides a single generic program transformation that can be applied to any arbitrary causal model representable as a Chirho program. This program transformation allows several causal explanation queries to be modeled in terms of probabilistic queries. This approach of reducing causal queries to probabilistic computations on transformed causal models is the foundational idea behind all of ChiRho and has been leveraged for causal explanations in this module as well.\n", "\n", - "The goal of this notebook is to illustrate how the package can be used to provide an approximate method of answering a range of causal explanation queries with respect to models in which categorical variables play the key role. As the key tool will involve sampling-based posterior probability estimation, a lot of what will be said *mutatis mutandis* applies to more general settings where variables are continuous (to which we will devote another tutorial).\n", + "The goal of this notebook is to illustrate how the package can be used to provide an approximate method of answering a range of causal explanation queries in causal models with only categorical variables. As the key tool will involve sampling-based posterior probability estimation, a lot of what will be said *mutatis mutandis* applies to more general settings where variables are continuous (to which we will devote another tutorial).\n", "\n", - "In yet [another notebook](https://basisresearch.github.io/chirho/actual_causality.html) we illustrate how the module allows for a faithful reconstruction of a particular notion of local explanation (the so-called Halpern-Pearl modified definition of actual causality [(J. Halpern, MIT Press, 2016)](https://mitpress.mit.edu/9780262537131/actual-causality/)), which inspired some of the conceptual steps underlying the current implementation." + "In yet [another notebook](https://basisresearch.github.io/chirho/actual_causality.html) we illustrate how the module allows for a faithful reconstruction of a particular notion of local explanation (the so-called Halpern-Pearl modified definition of actual causality [(J. Halpern, MIT Press, 2016)](https://mitpress.mit.edu/9780262537131/actual-causality/)), which inspired some of the conceptual steps underlying the current implementation.\n", + "\n", + "Before proceeding, the readers should go through the introductory tutorials on [causal reasoning in Chirho](https://github.com/BasisResearch/chirho/blob/master/docs/source/tutorial_i.ipynb) and [actual causality](https://github.com/BasisResearch/chirho/blob/master/docs/source/tutorial_i.ipynb)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ + "[Poorva: come back to this outline for better headlines]\n", + "\n", "**Outline**\n", "\n", "[Causal explanation and counterfactual thinking](#causal-explanation-and-counterfactual-thinking) \n", @@ -72,12 +76,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Let's start with a very simple model, in which a forest fire can be caused by exactly one of two things: a match being dropped (`match_dropped`), or a lightning strike (`lightning`), and either of these factors alone is already deterministically sufficient for the `forest_fire` to occur. A match being dropped is more likely than a lightning strike (we use fairly large probabilities for the sake of example transparency). For the sake of illustration, we also include a causally irrelevant site representing whether a ChiRho developer smiles, `smile`." + "# Setup" ] }, { "cell_type": "code", - "execution_count": 154, + "execution_count": 18, "metadata": {}, "outputs": [ { @@ -107,9 +111,16 @@ "pyro.settings.set(module_local_params=True)" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We first setup the essentials for performing probabilistic inference on the transformed causal models. We have a function for performing importance sampling on a model and few other utility functions." + ] + }, { "cell_type": "code", - "execution_count": 250, + "execution_count": 65, "metadata": {}, "outputs": [], "source": [ @@ -140,30 +151,27 @@ " **kwargs\n", " )\n", "\n", - " # # resample using importance weights to get posterior samples\n", - " # idx = dist.Categorical(logits=log_weights).sample((num_samples,))\n", - " # for name, node in importance_tr.nodes.items():\n", - " # if node[\"type\"] != \"sample\" or pyro.poutine.util.site_is_subsample(node) or node[\"is_observed\"]:\n", - " # continue\n", - " # importance_tr.nodes[name][\"value\"] = torch.index_select(\n", - " # importance_tr.nodes[name][\"value\"],\n", - " # -max_plate_nesting - 1 - len(importance_tr.nodes[name][\"fn\"].event_shape),\n", - " # idx,\n", - " # )\n", - "\n", - " print(log_weights)\n", + " return torch.logsumexp(log_weights, dim=0) - math.log(num_samples), importance_tr, mwc, log_weights\n", "\n", - " # with pyro.poutine.replay(trace=importance_tr), mwc:\n", - " # trace = pyro.poutine.trace(model).get_trace(*args, **kwargs)\n", + " return _wrapped_model\n", "\n", - " return torch.logsumexp(log_weights, dim=0) - math.log(num_samples), importance_tr, mwc, log_weights\n", + "def _soft_eq(v1: torch.Tensor, v2: torch.Tensor) -> torch.Tensor:\n", + " return soft_eq(constraints.boolean, v1, v2, scale=0.001)\n", "\n", - " return _wrapped_model" + "def reparam_config(data):\n", + " return {i: KernelSoftConditionReparam(_soft_eq) for i in data}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's start with a very simple model, in which a forest fire can be caused by any of the two things: a match being dropped (`match_dropped`), or a lightning strike (`lightning`), and either of these factors alone is already deterministically sufficient for the `forest_fire` to occur. A match being dropped is more likely than a lightning strike (we use fairly large probabilities for the sake of example transparency). For the sake of illustration, we also include a causally irrelevant site representing whether a ChiRho developer smiles, `smile`." ] }, { "cell_type": "code", - "execution_count": 156, + "execution_count": 64, "metadata": {}, "outputs": [ { @@ -219,10 +227,10 @@ "\n" ], "text/plain": [ - "" + "" ] }, - "execution_count": 156, + "execution_count": 64, "metadata": {}, "output_type": "execute_result" } @@ -261,31 +269,44 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Throughout this tutorial, we assume all nodes are binary and use $'$ as negation. Once we specify (i) the distributions for the nodes we use (`supports`), (ii) candidate causes $X_i = x_i$ (`antecedents`) (iii) their alternative values ($X_i = x_i'$), (iv) elements of the current context (`witnesses`), and (v) the `consequents` of interest $Y=y$. The `SearchForExplanation` handler transforms the original model into one in which interventions and alternative interventions on the antecedents are applied in parallel counterfactual worlds stochastically preempted and context elements are stochastically selected and preempted to be kept at the factual values in all counterfactual worlds.\n", - "\n", - "First, let's go back to our original query. Let $F$ be the `forest_fire`, $f$ stand for $F=1$, $f'$ for $F=0$, $M$ stand for `match_dropped`, with analogous conventions. We also place interventions conditioned on in subscripts, so that, for example\n", - "$P(f_{m'})$ stands for $P(F=1\\vert do(M=0))$.\n", + "Before we further go into causal queries, let us describe some notation. Let $F$ refer to the `forest_fire`, $f$ stand for $F=1$, $f'$ for $F=0$. The notation $M$ stands for `match_dropped`, with analogous conventions. We also place interventions conditioned on in subscripts. As an example, $f_{m'}$ stands for $F=1$ when $do(M=0)$." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Throughout this tutorial, we consider different kinds of causal queries and compute them using a unified program transforamtion. This program transformation takes place using the handler `SearchForExplanation`. It takes the following inputs:\n", + "1. the distributions for the variables we use (`supports`),\n", + "2. the candidate causes $X_i = x_i$ (`antecedents`),\n", + "3. their alternative values ($X_i = x_i'$) (`alternatives`),\n", + "4. the elements of the current context (`witnesses`), and \n", + "5. the `consequents` of interest $Y=y$. \n", "\n", - "We are currently interested in $P(f'_{m'}, f_m)$, that is the probability of both forest fire not occurring if we intervene on the match to not be dropped, and forest fire occurring if we intervene on the match to be dropped." + "The `SearchForExplanation` handler then takes these arguments and transforms the original model into another model in which interventions on antecedents and witnesses are applied stochastically. Once the antecedents `A` and witnesses `W` are chosen, parallel counterfactual worlds are created to condition on `A` being sufficient and necessary causes for the consequent with the context `W`." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "First, suppose we are interested in asking the question of whether dropping a match has causal power over whether the forest fire occurs. We assume all relevant nodes are binary. The potential cause (`antecedent`) we're considering is `match_dropped=1`, we contrast it with what would happen if we intervened on it to not happen (`alternatives`). We are interested in whether an outcome variable (`consequent`) has value 1 under these two interventions. The counterfactual world in which we intervene with `alternatives` is world 1, and the counterfactual world in which we intervene with `antecedents` is world 2. We will be interested in cases in which none of these interventions have been preempted (more about this later), so we will sample with appropriate masks as well." + "**Causal Query 1** Is dropping a match a cause of forest fire?\n", + "\n", + "To answer the above question, we compute the probability of both forest fire not occurring if we intervene on the match to not be dropped, and forest fire occurring if we intervene on the match to be dropped. i.e. $P(f'_{m'}, f_m)$. this computation can be carried out using `SearchForExplanation`.\n", + "\n", + "The potential cause (`antecedent`) we're considering is `match_dropped=1`, we contrast it with what would happen if we intervened on it to not happen (`alternatives`). We are interested in whether an outcome variable `forest_fire` (`consequent`) has value 1 under these two interventions. " ] }, { "cell_type": "code", - "execution_count": 157, + "execution_count": 72, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.3000)\n" + "tensor(0.2951)\n" ] } ], @@ -299,46 +320,52 @@ " consequent_scale=1e-5,\n", ")(forest_fire_model)\n", "\n", - "logp, trace, mwc = importance_infer(num_samples=10)(query)()\n", + "logp, trace, mwc, log_weights = importance_infer(num_samples=10000)(query)()\n", "print(torch.exp(logp))" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To answer our causal query, it is enough that the probability above is greater than 0 --- dropping match does have a causal effect on forest fire. But this is not exactly $P(f'_{m'}, f_m)$. Remember that interventions on antecedents are chosen stochastically which induces need for post-processing the samples." + ] + }, { "cell_type": "code", - "execution_count": 158, + "execution_count": 73, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "torch.Size([10, 1, 1, 1, 1, 1, 1, 1, 1, 1])\n", - "torch.Size([10, 1, 1, 1, 1, 1, 1, 1, 1, 1])\n" + "tensor(0.5970)\n" ] } ], "source": [ - "print(trace.nodes[\"match_dropped\"][\"value\"].shape)\n", - "print(trace.nodes[\"__cause____antecedent_match_dropped\"][\"value\"].shape)" + "mask_intervened = trace.nodes[\"__cause____antecedent_match_dropped\"][\"value\"] == 0\n", + "print(torch.sum(torch.exp(log_weights) * mask_intervened.squeeze())/torch.sum(mask_intervened.float()))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "More interestingly, in cases of overdetermination, a similar estimation would lead us to assign no causal role to any of to co-contributing factors. This can be seen in the context in which both causes occurred. Trivially, if lightning occurred, then had no match been dropped, the forest fire, caused by lighning, would still occur (a symmetric reasoning goes through for the lightning as well), $P(f'_{m'}\\vert m, l) = P(f'_{l'}\\vert m, l)=0$. Intuitively, these quantities are not good guides to the causal role of `match_dropped` and `lightning`, as we think they did played a causal role. This is the first illustration of why the but-for analysis is not fine-grained enough." + "A similar estimation as above would not work in case of overdetermination where one of the two factors are enough to cause the outcome. Consider the case where both `match_dropped` and `lightning` did occur. In this case, if we try to determine the causal role of `match_dropped`, it would come out to be zero. And a symmetric reasoning works for lightning as well. This results in $P(f'_{m'}, f_m, m, l) = P(f'_{l'}, f_l, m, l)=0$" ] }, { "cell_type": "code", - "execution_count": 159, + "execution_count": 76, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(1.0013e-05)\n" + "tensor(2.8615e-06)\n" ] } ], @@ -350,83 +377,97 @@ " witnesses={}, # potential context elements, we leave them empty for now\n", " alternatives={\"match_dropped\": torch.tensor(0.0)},\n", " consequent_scale=1e-5,\n", - ")(condition(\n", - " data={\"match_dropped\": torch.tensor(1.0), \"lightning\": torch.tensor(1.0)}\n", - ")(forest_fire_model))\n", + ")(\n", + " pyro.poutine.reparam(config=reparam_config([\"match_dropped\", \"lightning\"]))(\n", + " condition(data={\"match_dropped\": torch.tensor(1.0), \"lightning\": torch.tensor(1.0)})\n", + " (forest_fire_model)\n", + " ))\n", "\n", - "logp, trace, mwc = importance_infer(num_samples=10000)(query)()\n", + "logp, trace, mwc, log_weights = importance_infer(num_samples=10000)(query)()\n", "print(torch.exp(logp))" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Comment: The ground truth example for correct intervention. This gives 0.42 as the answer which is the expected answer." - ] - }, { "cell_type": "code", - "execution_count": 160, + "execution_count": 77, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "{'u_match_dropped': Boolean(), 'match_dropped': Boolean(), 'u_lightning': Boolean(), 'lightning': Boolean(), 'smile': Boolean(), 'forest_fire': Boolean()}\n" + "tensor(2.8286e-06)\n" ] } ], "source": [ - "print(forest_fire_supports)" + "mask_intervened = trace.nodes[\"__cause____antecedent_match_dropped\"][\"value\"] == 0\n", + "print(torch.sum(torch.exp(log_weights) * mask_intervened.squeeze())/torch.sum(mask_intervened.float()))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "But if we consider both `match_dropped` and `lightning` to be possible causes, we can estimate $P(f'_{m',l'}, f_{m,l}, m, l)$ to determine their causal role." ] }, { "cell_type": "code", - "execution_count": 175, + "execution_count": 79, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.4186)\n" + "tensor(0.0692)\n" ] } ], "source": [ - "\n", - "import math\n", - "# reparam_config = AutoSoftConditioning(scale=math.sqrt(1/(2*math.pi)))\n", - "# def _soft_eq(v1: torch.Tensor, v2: torch.Tensor) -> torch.Tensor:\n", - "# return soft_eq(constraints.boolean, v1, v2, scale=scale)\n", - "# reparam_config = {\"match_dropped\": KernelSoftConditionReparam(_soft_eq)}\n", - "\n", - "def _soft_eq(v1: torch.Tensor, v2: torch.Tensor) -> torch.Tensor:\n", - " return soft_eq(constraints.boolean, v1, v2, scale=0.001)\n", - "\n", - "reparam_config = {\"match_dropped\": KernelSoftConditionReparam(_soft_eq)}\n", - "\n", - "\n", "query = SearchForExplanation(\n", " supports=forest_fire_supports,\n", - " antecedents={\"match_dropped\": torch.tensor(1.0)},\n", + " antecedents={\"match_dropped\": torch.tensor(1.0), \"lightning\": torch.tensor(1.0)},\n", " consequents={\"forest_fire\": torch.tensor(1.0)},\n", " witnesses={}, # potential context elements, we leave them empty for now\n", - " alternatives={\"match_dropped\": torch.tensor(0.0)},\n", - " antecedent_bias=-0.5,\n", + " alternatives={\"match_dropped\": torch.tensor(0.0), \"lightning\": torch.tensor(0.0)},\n", " consequent_scale=1e-5,\n", ")(\n", - " pyro.poutine.reparam(config=reparam_config)(\n", - " condition(data={\"match_dropped\": torch.tensor(1.0)})\n", + " pyro.poutine.reparam(config=reparam_config([\"match_dropped\", \"lightning\"]))(\n", + " condition(data={\"match_dropped\": torch.tensor(1.0), \"lightning\": torch.tensor(1.0)})\n", " (forest_fire_model)\n", - "))\n", + " ))\n", "\n", - "logp, trace, mwc = importance_infer(num_samples=100000)(query)()\n", + "logp, trace, mwc, log_weights = importance_infer(num_samples=10000)(query)()\n", "print(torch.exp(logp))" ] }, + { + "cell_type": "code", + "execution_count": 80, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tensor(0.2796)\n" + ] + } + ], + "source": [ + "mask_intervened = (trace.nodes[\"__cause____antecedent_match_dropped\"][\"value\"] == 0) & (trace.nodes[\"__cause____antecedent_lightning\"][\"value\"] == 0)\n", + "print(torch.sum(torch.exp(log_weights) * mask_intervened.squeeze())/torch.sum(mask_intervened.float()))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "DONE TILL HERE" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -480,7 +521,7 @@ }, { "cell_type": "code", - "execution_count": 98, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -563,7 +604,7 @@ "bill_hits\n", "\n", "\n", - "\n", + "\n", "prob_bill_hits->bill_hits\n", "\n", "\n", @@ -581,7 +622,7 @@ "bottle_shatters\n", "\n", "\n", - "\n", + "\n", "prob_bottle_shatters_if_sally->bottle_shatters\n", "\n", "\n", @@ -593,7 +634,7 @@ "prob_bottle_shatters_if_bill\n", "\n", "\n", - "\n", + "\n", "prob_bottle_shatters_if_bill->bottle_shatters\n", "\n", "\n", @@ -605,25 +646,25 @@ "\n", "\n", "\n", - "\n", + "\n", "bill_throws->bill_hits\n", "\n", "\n", "\n", "\n", - "\n", + "\n", "sally_hits->bill_hits\n", "\n", "\n", "\n", "\n", - "\n", + "\n", "sally_hits->bottle_shatters\n", "\n", "\n", "\n", "\n", - "\n", + "\n", "bill_hits->bottle_shatters\n", "\n", "\n", @@ -632,10 +673,10 @@ "\n" ], "text/plain": [ - "" + "" ] }, - "execution_count": 98, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -896,76 +937,263 @@ }, { "cell_type": "code", - "execution_count": 300, + "execution_count": 47, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor([-11.5116, -23.0245, -23.0245, -11.5116, -23.0245, -23.0245, -11.5116,\n", - " -23.0245, -11.5116, -23.0245])\n", - "tensor(-12.4279)\n", - "tensor(4.0055e-06)\n", - "torch.Size([10, 1, 1, 1, 1, 1, 1, 1, 1, 1])\n", - "torch.Size([10, 1, 1, 1, 1, 3, 1, 1, 1, 1])\n", - "tensor([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])\n", - "tensor([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])\n", - "tensor([1., 0., 0., 0., 0., 0., 1., 0., 0., 0.])\n", - "tensor([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])\n", - "tensor([1., 0., 1., 0., 1., 1., 1., 1., 1., 0.])\n", - "tensor([0., 1., 0., 1., 0., 1., 0., 0., 1., 1.])\n", - "Degree of responsibility of Sally: tensor(0.8000)\n", - "Degree of responsibility of Billy: tensor(0.8000)\n" + "tensor([-2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", + " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", + " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05,\n", + " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", + " -2.0385e-05, -2.0385e-05, -2.0385e-05, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01,\n", + " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.0385e-05, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", + " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.0385e-05, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05,\n", + " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", + " -2.0385e-05, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.0385e-05, -2.0385e-05,\n", + " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", + " -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.0385e-05, -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.0385e-05,\n", + " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01,\n", + " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", + " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.0385e-05, -2.3024e+01,\n", + " -2.0385e-05, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05,\n", + " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", + " -2.0385e-05, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", + " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01,\n", + " -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", + " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", + " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.0385e-05, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01])\n" ] } ], "source": [ "query = SearchForExplanation(\n", " supports=stones_supports,\n", - " antecedents={\"sally_throws\": None, \"bill_throws\": None},\n", + " antecedents={\"sally_throws\": torch.tensor(1.0), \"bill_throws\": torch.tensor(1.0)},\n", " consequents={\"bottle_shatters\": torch.tensor(1.0)},\n", - " witnesses={\"sally_hits\": None, \"bill_hits\": None},\n", + " witnesses={\"bill_hits\": None, \"sally_hits\": None},\n", + " alternatives={\"sally_throws\": torch.tensor(0.0), \"bill_throws\": torch.tensor(0.0)},\n", " consequent_scale=1e-5\n", ")(condition(\n", " data={\n", " \"prob_sally_throws\": torch.tensor(1.0),\n", - " \"prob_bill_throws\": torch.tensor(1.0),\n", + " \"prob_bill_throws\": torch.tensor(0.0),\n", " \"prob_sally_hits\": torch.tensor(1.0),\n", - " \"prob_bill_hits\": torch.tensor(1.0),\n", + " \"prob_bill_hits\": torch.tensor(0.0),\n", " \"prob_bottle_shatters_if_sally\": torch.tensor(1.0),\n", - " \"prob_bottle_shatters_if_bill\": torch.tensor(1.0),\n", + " \"prob_bottle_shatters_if_bill\": torch.tensor(0.0),\n", " \"bottle_shatters\": torch.tensor(1.0),\n", " }\n", ")(stones_model))\n", "\n", - "logp, trace, mwc, logw = importance_infer(num_samples=10)(query)()\n", + "logp, trace, mwc, logw = importance_infer(num_samples=1000)(query)()\n", "\n", - "print(logp)\n", + "# print(logp)\n", "\n", - "print(torch.exp(logp))\n", + "# print(torch.exp(logp))\n", "\n", - "nodes = trace.nodes[\"_RETURN\"][\"value\"]\n", + "# nodes = trace.nodes[\"_RETURN\"][\"value\"]\n", "\n", - "print(trace.nodes[\"sally_throws\"][\"value\"].shape)\n", - "print(nodes[\"sally_throws\"].shape)\n", - "with mwc:\n", - " print(gather(nodes[\"sally_throws\"], IndexSet(sally_throws={0})).squeeze())\n", - " print(gather(nodes[\"sally_throws\"], IndexSet(sally_throws={1})).squeeze())\n", - " print(gather(nodes[\"sally_throws\"], IndexSet(sally_throws={2})).squeeze())\n", + "# print(trace.nodes[\"sally_throws\"][\"value\"].shape)\n", + "# print(nodes[\"sally_throws\"].shape)\n", + "# with mwc:\n", + "# print(gather(nodes[\"sally_throws\"], IndexSet(sally_throws={0})).squeeze())\n", + "# print(gather(nodes[\"sally_throws\"], IndexSet(sally_throws={1})).squeeze())\n", + "# print(gather(nodes[\"sally_throws\"], IndexSet(sally_throws={2})).squeeze())\n", "\n", - " print(gather(nodes[\"bill_throws\"], IndexSet(bill_throws={0})).squeeze())\n", - " print(gather(nodes[\"bill_throws\"], IndexSet(bill_throws={1})).squeeze())\n", - " print(gather(nodes[\"bill_throws\"], IndexSet(bill_throws={2})).squeeze())\n", + "# print(gather(nodes[\"bill_throws\"], IndexSet(bill_throws={0})).squeeze())\n", + "# print(gather(nodes[\"bill_throws\"], IndexSet(bill_throws={1})).squeeze())\n", + "# print(gather(nodes[\"bill_throws\"], IndexSet(bill_throws={2})).squeeze())\n", "\n", - " st_responsible = gather(nodes[\"sally_throws\"], IndexSet(sally_throws={1})) != \\\n", - " gather(nodes[\"sally_throws\"], IndexSet(sally_throws={2}))\n", + "# st_responsible = gather(nodes[\"sally_throws\"], IndexSet(sally_throws={1})) != \\\n", + "# gather(nodes[\"sally_throws\"], IndexSet(sally_throws={2}))\n", "\n", - " bt_responsible = gather(nodes[\"bill_throws\"], IndexSet(bill_throws={1})) != \\\n", - " gather(nodes[\"bill_throws\"], IndexSet(bill_throws={2}))\n", + "# bt_responsible = gather(nodes[\"bill_throws\"], IndexSet(bill_throws={1})) != \\\n", + "# gather(nodes[\"bill_throws\"], IndexSet(bill_throws={2}))\n", "\n", - "print(\"Degree of responsibility of Sally:\", st_responsible.sum() / st_responsible.numel())\n", - "print(\"Degree of responsibility of Billy:\", bt_responsible.sum() / bt_responsible.numel())" + "# print(\"Degree of responsibility of Sally:\", st_responsible.sum() / st_responsible.numel())\n", + "# print(\"Degree of responsibility of Billy:\", bt_responsible.sum() / bt_responsible.numel())" ] }, { @@ -1119,6 +1347,9545 @@ "st_responsible.squeeze()" ] }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": {}, + "outputs": [], + "source": [ + "query = SearchForExplanation(\n", + " supports=stones_supports,\n", + " antecedents={\"sally_throws\": torch.tensor(1.0), \"bill_throws\": torch.tensor(1.0)},\n", + " consequents={\"bottle_shatters\": torch.tensor(1.0)},\n", + " witnesses={\"sally_hits\": torch.tensor(0.0)},\n", + " alternatives={\"sally_throws\": torch.tensor(0.0), \"bill_throws\": torch.tensor(0.0)},\n", + " antecedent_bias=-0.5,\n", + " witness_bias=0.5,\n", + " consequent_scale=1e-5\n", + ")(condition(\n", + " data={\n", + " \"prob_sally_throws\": torch.tensor(1.0),\n", + " \"prob_bill_throws\": torch.tensor(0.0),\n", + " \"prob_sally_hits\": torch.tensor(1.0),\n", + " \"prob_bill_hits\": torch.tensor(0.0),\n", + " \"prob_bottle_shatters_if_sally\": torch.tensor(1.0),\n", + " \"prob_bottle_shatters_if_bill\": torch.tensor(1.0),\n", + " \"bottle_shatters\": torch.tensor(1.0),\n", + " }\n", + ")(stones_model))" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tensor([[[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]]])\n", + "tensor([-2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", + " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", + " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05,\n", + " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", + " -2.0385e-05, -2.0385e-05, -2.0385e-05, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01,\n", + " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.0385e-05, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", + " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.0385e-05, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05,\n", + " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", + " -2.0385e-05, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.0385e-05, -2.0385e-05,\n", + " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", + " -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.0385e-05, -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.0385e-05,\n", + " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01,\n", + " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", + " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.0385e-05, -2.3024e+01,\n", + " -2.0385e-05, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05,\n", + " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", + " -2.0385e-05, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", + " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01,\n", + " -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", + " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", + " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.0385e-05, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", + " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", + " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01])\n", + "tensor([False, True, True, False, True, True, False, True, False, True,\n", + " False, False, True, False, True, True, False, False, True, True,\n", + " True, True, True, False, True, True, True, True, True, False,\n", + " True, True, False, False, False, False, True, True, False, False,\n", + " False, False, False, False, True, True, False, True, True, True,\n", + " True, True, False, True, True, True, True, True, True, True,\n", + " False, False, False, False, True, True, False, False, False, True,\n", + " False, False, False, False, True, True, True, True, False, True,\n", + " False, False, True, False, False, False, False, False, False, False,\n", + " True, False, False, True, True, False, True, True, False, True,\n", + " False, True, True, True, False, False, False, False, True, True,\n", + " False, False, True, True, False, True, False, False, True, False,\n", + " False, False, False, True, True, True, False, False, False, True,\n", + " True, True, False, False, True, True, True, True, False, False,\n", + " True, True, False, False, False, False, True, True, False, True,\n", + " False, False, False, True, False, False, False, False, False, False,\n", + " True, True, False, False, False, True, True, False, True, True,\n", + " True, False, False, False, True, True, False, True, False, True,\n", + " False, True, True, False, True, True, True, False, True, True,\n", + " True, False, False, False, True, True, False, False, True, False,\n", + " False, False, False, True, False, True, False, False, False, False,\n", + " True, False, True, False, True, True, False, True, False, False,\n", + " True, True, True, False, True, True, False, True, True, True,\n", + " False, False, True, True, True, False, False, False, False, True,\n", + " False, True, True, False, True, False, True, False, False, True,\n", + " False, True, False, False, False, False, True, False, True, True,\n", + " True, True, True, False, True, False, True, False, False, False,\n", + " True, False, True, False, False, False, False, True, True, True,\n", + " False, True, False, False, True, False, True, True, True, True,\n", + " False, False, True, False, True, True, True, False, True, True,\n", + " True, False, False, False, True, False, False, True, False, True,\n", + " True, True, True, True, True, True, True, True, True, True,\n", + " False, True, False, True, True, False, True, True, False, False,\n", + " False, True, True, True, True, False, True, True, False, True,\n", + " False, False, True, False, True, False, True, True, False, False,\n", + " False, False, False, True, False, True, True, False, False, True,\n", + " True, True, False, True, True, True, True, False, True, False,\n", + " True, False, True, True, False, False, True, False, True, False,\n", + " True, True, True, False, False, False, False, False, True, True,\n", + " True, False, False, True, True, True, False, True, True, True,\n", + " True, True, True, True, True, True, True, False, True, False,\n", + " False, True, True, True, False, False, False, False, True, True,\n", + " True, True, False, True, True, True, True, True, False, True,\n", + " True, True, False, False, True, False, False, False, True, True,\n", + " False, False, True, False, False, False, True, False, True, False,\n", + " True, False, False, False, False, False, True, True, True, False,\n", + " True, True, False, False, True, False, False, True, False, False,\n", + " False, False, True, True, True, False, False, True, True, True,\n", + " False, False, True, False, True, False, False, False, True, True,\n", + " False, True, True, True, False, True, False, False, False, False,\n", + " True, False, True, False, True, True, True, False, True, True,\n", + " False, True, False, True, False, True, False, True, True, False,\n", + " False, True, False, True, True, True, True, False, False, True,\n", + " False, True, True, False, False, False, False, True, False, False,\n", + " False, False, True, True, True, True, True, False, False, True,\n", + " False, True, False, True, True, False, False, False, True, False,\n", + " False, False, False, False, True, True, True, False, False, False,\n", + " True, False, False, False, True, True, False, True, False, True,\n", + " False, True, True, False, True, False, False, False, True, True,\n", + " False, True, True, True, True, False, False, True, False, False,\n", + " True, False, True, True, True, False, False, True, True, True,\n", + " False, False, True, True, False, True, False, True, False, False,\n", + " True, True, True, False, False, False, True, False, True, True,\n", + " False, True, True, True, True, False, True, False, True, True,\n", + " True, True, False, False, True, False, False, False, False, False,\n", + " False, False, True, False, False, True, False, True, False, True,\n", + " True, False, False, False, True, True, False, True, False, False,\n", + " True, True, False, False, False, False, False, True, True, False,\n", + " False, True, True, True, False, False, False, False, True, False,\n", + " False, True, False, False, True, True, True, True, True, True,\n", + " False, False, True, True, True, False, True, False, True, False,\n", + " True, True, True, True, True, False, False, True, False, True,\n", + " False, True, True, True, False, False, True, False, True, False,\n", + " True, False, False, False, True, False, True, True, False, False,\n", + " True, False, True, False, True, True, True, True, True, True,\n", + " True, False, True, False, True, True, False, False, True, False,\n", + " True, True, False, True, False, True, True, False, True, True,\n", + " True, False, False, False, True, False, False, False, True, False,\n", + " True, False, False, False, True, False, True, True, True, False,\n", + " False, False, False, True, True, True, False, False, False, False,\n", + " True, False, True, True, False, False, False, True, True, True,\n", + " False, False, True, True, True, False, True, False, True, False,\n", + " True, True, True, True, True, True, False, False, False, False,\n", + " True, True, False, False, True, False, True, True, True, False,\n", + " False, False, True, True, True, False, True, True, True, False,\n", + " False, True, False, True, True, True, False, True, False, False,\n", + " False, True, False, False, True, False, False, True, False, False,\n", + " False, True, True, True, True, True, True, False, False, False,\n", + " True, True, True, True, False, False, False, True, False, False,\n", + " False, False, True, True, False, False, False, False, True, False,\n", + " False, True, True, True, False, True, False, True, False, False,\n", + " True, True, True, False, True, True, True, False, False, True,\n", + " False, False, True, False, False, True, False, False, True, True,\n", + " True, True, True, True, True, False, True, False, True, True,\n", + " True, False, True, True, False, True, False, True, True, True,\n", + " False, True, True, True, True, False, True, True, True, False,\n", + " False, True, False, True, True, True, False, False, True, False,\n", + " False, True, True, False, True, False, False, True, True, True,\n", + " True, False, False, False, False, False, False, True, True, False,\n", + " True, False, False, True, False, True, True, False, False, True])\n", + "tensor([0.0000e+00, 1.0014e-10, 9.9998e-01, 0.0000e+00, 1.0014e-10, 1.0014e-10,\n", + " 0.0000e+00, 1.0014e-10, 0.0000e+00, 1.0014e-10, 0.0000e+00, 0.0000e+00,\n", + " 1.0014e-10, 0.0000e+00, 1.0014e-10, 1.0014e-10, 0.0000e+00, 0.0000e+00,\n", + " 1.0014e-10, 1.0014e-10, 1.0014e-10, 1.0014e-10, 9.9998e-01, 0.0000e+00,\n", + " 1.0014e-10, 1.0014e-10, 9.9998e-01, 9.9998e-01, 1.0014e-10, 0.0000e+00,\n", + " 1.0014e-10, 1.0014e-10, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,\n", + " 1.0014e-10, 1.0014e-10, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,\n", + " 0.0000e+00, 0.0000e+00, 1.0014e-10, 1.0014e-10, 0.0000e+00, 1.0014e-10,\n", + " 1.0014e-10, 1.0014e-10, 1.0014e-10, 1.0014e-10, 0.0000e+00, 1.0014e-10,\n", + " 1.0014e-10, 1.0014e-10, 1.0014e-10, 1.0014e-10, 9.9998e-01, 1.0014e-10,\n", + " 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 1.0014e-10, 1.0014e-10,\n", + " 0.0000e+00, 0.0000e+00, 0.0000e+00, 9.9998e-01, 0.0000e+00, 0.0000e+00,\n", + " 0.0000e+00, 0.0000e+00, 1.0014e-10, 1.0014e-10, 1.0014e-10, 1.0014e-10,\n", + " 0.0000e+00, 1.0014e-10, 0.0000e+00, 0.0000e+00, 1.0014e-10, 0.0000e+00,\n", + " 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,\n", + " 1.0014e-10, 0.0000e+00, 0.0000e+00, 1.0014e-10, 1.0014e-10, 0.0000e+00,\n", + " 1.0014e-10, 1.0014e-10, 0.0000e+00, 1.0014e-10, 0.0000e+00, 1.0014e-10,\n", + " 1.0014e-10, 1.0014e-10, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,\n", + " 1.0014e-10, 1.0014e-10, 0.0000e+00, 0.0000e+00, 1.0014e-10, 9.9998e-01,\n", + " 0.0000e+00, 1.0014e-10, 0.0000e+00, 0.0000e+00, 1.0014e-10, 0.0000e+00,\n", + " 0.0000e+00, 0.0000e+00, 0.0000e+00, 1.0014e-10, 1.0014e-10, 1.0014e-10,\n", + " 0.0000e+00, 0.0000e+00, 0.0000e+00, 1.0014e-10, 1.0014e-10, 9.9998e-01,\n", + " 0.0000e+00, 0.0000e+00, 1.0014e-10, 1.0014e-10, 1.0014e-10, 1.0014e-10,\n", + " 0.0000e+00, 0.0000e+00, 1.0014e-10, 1.0014e-10, 0.0000e+00, 0.0000e+00,\n", + " 0.0000e+00, 0.0000e+00, 1.0014e-10, 9.9998e-01, 0.0000e+00, 1.0014e-10,\n", + " 0.0000e+00, 0.0000e+00, 0.0000e+00, 9.9998e-01, 0.0000e+00, 0.0000e+00,\n", + " 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 1.0014e-10, 1.0014e-10,\n", + " 0.0000e+00, 0.0000e+00, 0.0000e+00, 1.0014e-10, 1.0014e-10, 0.0000e+00,\n", + " 9.9998e-01, 9.9998e-01, 9.9998e-01, 0.0000e+00, 0.0000e+00, 0.0000e+00,\n", + " 9.9998e-01, 9.9998e-01, 0.0000e+00, 9.9998e-01, 0.0000e+00, 1.0014e-10,\n", + " 0.0000e+00, 1.0014e-10, 9.9998e-01, 0.0000e+00, 1.0014e-10, 9.9998e-01,\n", + " 1.0014e-10, 0.0000e+00, 1.0014e-10, 1.0014e-10, 1.0014e-10, 0.0000e+00,\n", + " 0.0000e+00, 0.0000e+00, 9.9998e-01, 1.0014e-10, 0.0000e+00, 0.0000e+00,\n", + " 9.9998e-01, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 1.0014e-10,\n", + " 0.0000e+00, 9.9998e-01, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,\n", + " 1.0014e-10, 0.0000e+00, 1.0014e-10, 0.0000e+00, 1.0014e-10, 1.0014e-10,\n", + " 0.0000e+00, 1.0014e-10, 0.0000e+00, 0.0000e+00, 1.0014e-10, 1.0014e-10,\n", + " 9.9998e-01, 0.0000e+00, 9.9998e-01, 1.0014e-10, 0.0000e+00, 1.0014e-10,\n", + " 1.0014e-10, 1.0014e-10, 0.0000e+00, 0.0000e+00, 9.9998e-01, 1.0014e-10,\n", + " 1.0014e-10, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 1.0014e-10,\n", + " 0.0000e+00, 1.0014e-10, 1.0014e-10, 0.0000e+00, 1.0014e-10, 0.0000e+00,\n", + " 1.0014e-10, 0.0000e+00, 0.0000e+00, 1.0014e-10, 0.0000e+00, 1.0014e-10,\n", + " 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 1.0014e-10, 0.0000e+00,\n", + " 9.9998e-01, 1.0014e-10, 1.0014e-10, 1.0014e-10, 1.0014e-10, 0.0000e+00,\n", + " 9.9998e-01, 0.0000e+00, 1.0014e-10, 0.0000e+00, 0.0000e+00, 0.0000e+00,\n", + " 1.0014e-10, 0.0000e+00, 1.0014e-10, 0.0000e+00, 0.0000e+00, 0.0000e+00,\n", + " 0.0000e+00, 1.0014e-10, 9.9998e-01, 9.9998e-01, 0.0000e+00, 1.0014e-10,\n", + " 0.0000e+00, 0.0000e+00, 1.0014e-10, 0.0000e+00, 1.0014e-10, 1.0014e-10,\n", + " 9.9998e-01, 1.0014e-10, 0.0000e+00, 0.0000e+00, 1.0014e-10, 0.0000e+00,\n", + " 1.0014e-10, 1.0014e-10, 1.0014e-10, 0.0000e+00, 9.9998e-01, 1.0014e-10,\n", + " 1.0014e-10, 0.0000e+00, 0.0000e+00, 0.0000e+00, 9.9998e-01, 0.0000e+00,\n", + " 0.0000e+00, 9.9998e-01, 0.0000e+00, 1.0014e-10, 1.0014e-10, 1.0014e-10,\n", + " 9.9998e-01, 1.0014e-10, 1.0014e-10, 1.0014e-10, 1.0014e-10, 1.0014e-10,\n", + " 1.0014e-10, 9.9998e-01, 0.0000e+00, 1.0014e-10, 0.0000e+00, 9.9998e-01,\n", + " 1.0014e-10, 0.0000e+00, 1.0014e-10, 1.0014e-10, 0.0000e+00, 0.0000e+00,\n", + " 0.0000e+00, 1.0014e-10, 1.0014e-10, 9.9998e-01, 1.0014e-10, 0.0000e+00,\n", + " 1.0014e-10, 1.0014e-10, 0.0000e+00, 9.9998e-01, 0.0000e+00, 0.0000e+00,\n", + " 1.0014e-10, 0.0000e+00, 9.9998e-01, 0.0000e+00, 1.0014e-10, 1.0014e-10,\n", + " 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 9.9998e-01,\n", + " 0.0000e+00, 1.0014e-10, 1.0014e-10, 0.0000e+00, 0.0000e+00, 1.0014e-10,\n", + " 1.0014e-10, 9.9998e-01, 0.0000e+00, 1.0014e-10, 1.0014e-10, 1.0014e-10,\n", + " 1.0014e-10, 0.0000e+00, 1.0014e-10, 0.0000e+00, 1.0014e-10, 0.0000e+00,\n", + " 9.9998e-01, 1.0014e-10, 0.0000e+00, 0.0000e+00, 1.0014e-10, 0.0000e+00,\n", + " 1.0014e-10, 0.0000e+00, 1.0014e-10, 1.0014e-10, 1.0014e-10, 0.0000e+00,\n", + " 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 1.0014e-10, 1.0014e-10,\n", + " 1.0014e-10, 0.0000e+00, 0.0000e+00, 9.9998e-01, 9.9998e-01, 1.0014e-10,\n", + " 0.0000e+00, 1.0014e-10, 9.9998e-01, 9.9998e-01, 1.0014e-10, 1.0014e-10,\n", + " 1.0014e-10, 1.0014e-10, 1.0014e-10, 9.9998e-01, 1.0014e-10, 0.0000e+00,\n", + " 9.9998e-01, 0.0000e+00, 0.0000e+00, 1.0014e-10, 1.0014e-10, 1.0014e-10,\n", + " 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 1.0014e-10, 1.0014e-10,\n", + " 1.0014e-10, 1.0014e-10, 0.0000e+00, 1.0014e-10, 1.0014e-10, 1.0014e-10,\n", + " 1.0014e-10, 9.9998e-01, 0.0000e+00, 1.0014e-10, 9.9998e-01, 1.0014e-10,\n", + " 0.0000e+00, 0.0000e+00, 1.0014e-10, 0.0000e+00, 0.0000e+00, 0.0000e+00,\n", + " 1.0014e-10, 9.9998e-01, 0.0000e+00, 0.0000e+00, 1.0014e-10, 0.0000e+00,\n", + " 0.0000e+00, 0.0000e+00, 9.9998e-01, 0.0000e+00, 9.9998e-01, 0.0000e+00,\n", + " 1.0014e-10, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,\n", + " 1.0014e-10, 1.0014e-10, 1.0014e-10, 0.0000e+00, 9.9998e-01, 9.9998e-01,\n", + " 0.0000e+00, 0.0000e+00, 1.0014e-10, 0.0000e+00, 0.0000e+00, 1.0014e-10,\n", + " 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 9.9998e-01, 9.9998e-01,\n", + " 1.0014e-10, 0.0000e+00, 0.0000e+00, 1.0014e-10, 1.0014e-10, 1.0014e-10,\n", + " 0.0000e+00, 0.0000e+00, 1.0014e-10, 0.0000e+00, 1.0014e-10, 0.0000e+00,\n", + " 0.0000e+00, 0.0000e+00, 9.9998e-01, 1.0014e-10, 0.0000e+00, 1.0014e-10,\n", + " 9.9998e-01, 1.0014e-10, 0.0000e+00, 1.0014e-10, 0.0000e+00, 0.0000e+00,\n", + " 0.0000e+00, 0.0000e+00, 9.9998e-01, 0.0000e+00, 1.0014e-10, 0.0000e+00,\n", + " 1.0014e-10, 1.0014e-10, 1.0014e-10, 0.0000e+00, 1.0014e-10, 1.0014e-10,\n", + " 0.0000e+00, 1.0014e-10, 0.0000e+00, 9.9998e-01, 0.0000e+00, 1.0014e-10,\n", + " 0.0000e+00, 1.0014e-10, 1.0014e-10, 0.0000e+00, 0.0000e+00, 1.0014e-10,\n", + " 0.0000e+00, 1.0014e-10, 1.0014e-10, 1.0014e-10, 1.0014e-10, 0.0000e+00,\n", + " 0.0000e+00, 1.0014e-10, 0.0000e+00, 1.0014e-10, 1.0014e-10, 0.0000e+00,\n", + " 0.0000e+00, 0.0000e+00, 0.0000e+00, 1.0014e-10, 0.0000e+00, 0.0000e+00,\n", + " 0.0000e+00, 0.0000e+00, 1.0014e-10, 1.0014e-10, 9.9998e-01, 9.9998e-01,\n", + " 1.0014e-10, 0.0000e+00, 0.0000e+00, 1.0014e-10, 0.0000e+00, 1.0014e-10,\n", + " 0.0000e+00, 1.0014e-10, 1.0014e-10, 0.0000e+00, 0.0000e+00, 0.0000e+00,\n", + " 1.0014e-10, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,\n", + " 1.0014e-10, 1.0014e-10, 1.0014e-10, 0.0000e+00, 0.0000e+00, 0.0000e+00,\n", + " 1.0014e-10, 0.0000e+00, 0.0000e+00, 0.0000e+00, 1.0014e-10, 1.0014e-10,\n", + " 0.0000e+00, 9.9998e-01, 0.0000e+00, 9.9998e-01, 0.0000e+00, 1.0014e-10,\n", + " 1.0014e-10, 0.0000e+00, 9.9998e-01, 0.0000e+00, 0.0000e+00, 0.0000e+00,\n", + " 9.9998e-01, 1.0014e-10, 0.0000e+00, 1.0014e-10, 9.9998e-01, 9.9998e-01,\n", + " 1.0014e-10, 0.0000e+00, 0.0000e+00, 1.0014e-10, 0.0000e+00, 0.0000e+00,\n", + " 1.0014e-10, 0.0000e+00, 9.9998e-01, 9.9998e-01, 1.0014e-10, 0.0000e+00,\n", + " 0.0000e+00, 9.9998e-01, 1.0014e-10, 1.0014e-10, 0.0000e+00, 0.0000e+00,\n", + " 1.0014e-10, 1.0014e-10, 0.0000e+00, 1.0014e-10, 0.0000e+00, 1.0014e-10,\n", + " 0.0000e+00, 0.0000e+00, 9.9998e-01, 9.9998e-01, 1.0014e-10, 0.0000e+00,\n", + " 0.0000e+00, 0.0000e+00, 9.9998e-01, 0.0000e+00, 1.0014e-10, 1.0014e-10,\n", + " 0.0000e+00, 1.0014e-10, 1.0014e-10, 1.0014e-10, 1.0014e-10, 0.0000e+00,\n", + " 1.0014e-10, 0.0000e+00, 1.0014e-10, 1.0014e-10, 9.9998e-01, 1.0014e-10,\n", + " 0.0000e+00, 0.0000e+00, 1.0014e-10, 0.0000e+00, 0.0000e+00, 0.0000e+00,\n", + " 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 9.9998e-01, 0.0000e+00,\n", + " 0.0000e+00, 1.0014e-10, 0.0000e+00, 1.0014e-10, 0.0000e+00, 1.0014e-10,\n", + " 1.0014e-10, 0.0000e+00, 0.0000e+00, 0.0000e+00, 9.9998e-01, 1.0014e-10,\n", + " 0.0000e+00, 1.0014e-10, 0.0000e+00, 0.0000e+00, 1.0014e-10, 9.9998e-01,\n", + " 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 9.9998e-01,\n", + " 1.0014e-10, 0.0000e+00, 0.0000e+00, 1.0014e-10, 1.0014e-10, 1.0014e-10,\n", + " 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 1.0014e-10, 0.0000e+00,\n", + " 0.0000e+00, 1.0014e-10, 0.0000e+00, 0.0000e+00, 1.0014e-10, 1.0014e-10,\n", + " 9.9998e-01, 1.0014e-10, 1.0014e-10, 9.9998e-01, 0.0000e+00, 0.0000e+00,\n", + " 9.9998e-01, 1.0014e-10, 9.9998e-01, 0.0000e+00, 1.0014e-10, 0.0000e+00,\n", + " 9.9998e-01, 0.0000e+00, 9.9998e-01, 1.0014e-10, 1.0014e-10, 1.0014e-10,\n", + " 1.0014e-10, 0.0000e+00, 0.0000e+00, 1.0014e-10, 0.0000e+00, 1.0014e-10,\n", + " 0.0000e+00, 1.0014e-10, 9.9998e-01, 1.0014e-10, 0.0000e+00, 0.0000e+00,\n", + " 1.0014e-10, 0.0000e+00, 1.0014e-10, 0.0000e+00, 1.0014e-10, 0.0000e+00,\n", + " 0.0000e+00, 0.0000e+00, 1.0014e-10, 0.0000e+00, 1.0014e-10, 9.9998e-01,\n", + " 0.0000e+00, 0.0000e+00, 1.0014e-10, 0.0000e+00, 9.9998e-01, 0.0000e+00,\n", + " 1.0014e-10, 9.9998e-01, 9.9998e-01, 1.0014e-10, 1.0014e-10, 9.9998e-01,\n", + " 9.9998e-01, 0.0000e+00, 1.0014e-10, 0.0000e+00, 1.0014e-10, 1.0014e-10,\n", + " 0.0000e+00, 0.0000e+00, 9.9998e-01, 0.0000e+00, 1.0014e-10, 1.0014e-10,\n", + " 0.0000e+00, 1.0014e-10, 0.0000e+00, 1.0014e-10, 9.9998e-01, 0.0000e+00,\n", + " 1.0014e-10, 1.0014e-10, 1.0014e-10, 0.0000e+00, 0.0000e+00, 0.0000e+00,\n", + " 1.0014e-10, 0.0000e+00, 0.0000e+00, 0.0000e+00, 1.0014e-10, 0.0000e+00,\n", + " 1.0014e-10, 0.0000e+00, 0.0000e+00, 0.0000e+00, 1.0014e-10, 0.0000e+00,\n", + " 1.0014e-10, 1.0014e-10, 1.0014e-10, 0.0000e+00, 0.0000e+00, 0.0000e+00,\n", + " 0.0000e+00, 9.9998e-01, 1.0014e-10, 1.0014e-10, 0.0000e+00, 0.0000e+00,\n", + " 0.0000e+00, 0.0000e+00, 1.0014e-10, 0.0000e+00, 1.0014e-10, 1.0014e-10,\n", + " 0.0000e+00, 0.0000e+00, 0.0000e+00, 1.0014e-10, 9.9998e-01, 9.9998e-01,\n", + " 0.0000e+00, 0.0000e+00, 1.0014e-10, 1.0014e-10, 1.0014e-10, 0.0000e+00,\n", + " 1.0014e-10, 0.0000e+00, 1.0014e-10, 0.0000e+00, 9.9998e-01, 1.0014e-10,\n", + " 1.0014e-10, 9.9998e-01, 1.0014e-10, 1.0014e-10, 0.0000e+00, 0.0000e+00,\n", + " 0.0000e+00, 0.0000e+00, 1.0014e-10, 9.9998e-01, 0.0000e+00, 0.0000e+00,\n", + " 1.0014e-10, 0.0000e+00, 1.0014e-10, 1.0014e-10, 1.0014e-10, 0.0000e+00,\n", + " 0.0000e+00, 0.0000e+00, 1.0014e-10, 9.9998e-01, 1.0014e-10, 0.0000e+00,\n", + " 1.0014e-10, 1.0014e-10, 1.0014e-10, 0.0000e+00, 0.0000e+00, 1.0014e-10,\n", + " 0.0000e+00, 1.0014e-10, 1.0014e-10, 1.0014e-10, 0.0000e+00, 1.0014e-10,\n", + " 0.0000e+00, 0.0000e+00, 0.0000e+00, 1.0014e-10, 0.0000e+00, 0.0000e+00,\n", + " 1.0014e-10, 0.0000e+00, 0.0000e+00, 1.0014e-10, 0.0000e+00, 0.0000e+00,\n", + " 0.0000e+00, 1.0014e-10, 1.0014e-10, 1.0014e-10, 1.0014e-10, 1.0014e-10,\n", + " 1.0014e-10, 0.0000e+00, 0.0000e+00, 0.0000e+00, 1.0014e-10, 9.9998e-01,\n", + " 1.0014e-10, 9.9998e-01, 0.0000e+00, 0.0000e+00, 0.0000e+00, 1.0014e-10,\n", + " 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 1.0014e-10, 1.0014e-10,\n", + " 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 1.0014e-10, 0.0000e+00,\n", + " 0.0000e+00, 1.0014e-10, 1.0014e-10, 1.0014e-10, 0.0000e+00, 1.0014e-10,\n", + " 0.0000e+00, 1.0014e-10, 0.0000e+00, 0.0000e+00, 9.9998e-01, 1.0014e-10,\n", + " 1.0014e-10, 0.0000e+00, 1.0014e-10, 1.0014e-10, 9.9998e-01, 0.0000e+00,\n", + " 0.0000e+00, 1.0014e-10, 0.0000e+00, 0.0000e+00, 9.9998e-01, 0.0000e+00,\n", + " 0.0000e+00, 1.0014e-10, 0.0000e+00, 0.0000e+00, 9.9998e-01, 1.0014e-10,\n", + " 1.0014e-10, 1.0014e-10, 9.9998e-01, 1.0014e-10, 1.0014e-10, 0.0000e+00,\n", + " 1.0014e-10, 0.0000e+00, 1.0014e-10, 9.9998e-01, 1.0014e-10, 0.0000e+00,\n", + " 9.9998e-01, 1.0014e-10, 0.0000e+00, 1.0014e-10, 0.0000e+00, 1.0014e-10,\n", + " 9.9998e-01, 1.0014e-10, 0.0000e+00, 9.9998e-01, 9.9998e-01, 1.0014e-10,\n", + " 1.0014e-10, 0.0000e+00, 1.0014e-10, 9.9998e-01, 1.0014e-10, 0.0000e+00,\n", + " 0.0000e+00, 9.9998e-01, 0.0000e+00, 1.0014e-10, 9.9998e-01, 1.0014e-10,\n", + " 0.0000e+00, 0.0000e+00, 1.0014e-10, 0.0000e+00, 0.0000e+00, 1.0014e-10,\n", + " 1.0014e-10, 0.0000e+00, 9.9998e-01, 0.0000e+00, 0.0000e+00, 1.0014e-10,\n", + " 1.0014e-10, 1.0014e-10, 1.0014e-10, 0.0000e+00, 0.0000e+00, 0.0000e+00,\n", + " 0.0000e+00, 0.0000e+00, 0.0000e+00, 9.9998e-01, 1.0014e-10, 0.0000e+00,\n", + " 1.0014e-10, 0.0000e+00, 0.0000e+00, 1.0014e-10, 0.0000e+00, 1.0014e-10,\n", + " 1.0014e-10, 0.0000e+00, 0.0000e+00, 1.0014e-10])\n", + "tensor(117.9976)\n" + ] + } + ], + "source": [ + "mask_intervened = (trace.nodes[\"__cause____antecedent_bill_throws\"][\"value\"] == 0)\n", + "log_weight_vector=logw\n", + "a = mask_intervened.float().sum()\n", + "print(mask_intervened)\n", + "# mask_intervened = mask_intervened.float()\n", + "# mask_intervened[mask_intervened == 0.0] = 9.2\n", + "# mask_intervened[mask_intervened == 1.0] = 1.0\n", + "print(log_weight_vector)\n", + "print(mask_intervened.squeeze())\n", + "print(torch.exp(log_weight_vector) * mask_intervened.squeeze())\n", + "\n", + "print(torch.sum(torch.exp(log_weight_vector) * mask_intervened.squeeze()))" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "metadata": {}, + "outputs": [ + { + "ename": "AttributeError", + "evalue": "'Trace' object has no attribute 'n'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[62], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[43mtrace\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mn\u001b[49m)\n\u001b[1;32m 2\u001b[0m \u001b[38;5;28mprint\u001b[39m(trace\u001b[38;5;241m.\u001b[39mnodes[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124msally_throws\u001b[39m\u001b[38;5;124m\"\u001b[39m][\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mvalue\u001b[39m\u001b[38;5;124m\"\u001b[39m][\u001b[38;5;241m2\u001b[39m]\u001b[38;5;241m.\u001b[39msqueeze())\n\u001b[1;32m 3\u001b[0m \u001b[38;5;28mprint\u001b[39m(trace\u001b[38;5;241m.\u001b[39mnodes[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mbottle_shatters\u001b[39m\u001b[38;5;124m\"\u001b[39m][\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mvalue\u001b[39m\u001b[38;5;124m\"\u001b[39m][\u001b[38;5;241m2\u001b[39m]\u001b[38;5;241m.\u001b[39msqueeze())\n", + "\u001b[0;31mAttributeError\u001b[0m: 'Trace' object has no attribute 'n'" + ] + } + ], + "source": [ + "print(trace.n)\n", + "print(trace.nodes[\"sally_throws\"][\"value\"][2].squeeze())\n", + "print(trace.nodes[\"bottle_shatters\"][\"value\"][2].squeeze())\n", + "trace.nodes[\"__cause____consequent_bottle_shatters\"][\"log_prob\"][2]" + ] + }, { "cell_type": "code", "execution_count": null, @@ -1126,6 +10893,15 @@ "outputs": [], "source": [] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# References\n", + "\n", + "1. " + ] + }, { "cell_type": "markdown", "metadata": {}, diff --git a/docs/source/responsibility.ipynb b/docs/source/responsibility.ipynb new file mode 100644 index 00000000..a562f3de --- /dev/null +++ b/docs/source/responsibility.ipynb @@ -0,0 +1,499 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "env: CUDA_VISIBLE_DEVICES=-1\n" + ] + } + ], + "source": [ + "%env CUDA_VISIBLE_DEVICES=-1\n", + "from typing import Callable, Dict, List, Optional\n", + "\n", + "import math\n", + "import pyro\n", + "import pyro.distributions as dist\n", + "import pyro.distributions.constraints as constraints\n", + "import torch\n", + "from chirho.counterfactual.handlers.counterfactual import \\\n", + " MultiWorldCounterfactual\n", + "from chirho.explainable.handlers import ExtractSupports, SearchForExplanation\n", + "from chirho.indexed.ops import IndexSet, gather\n", + "from chirho.observational.handlers import condition\n", + "from chirho.observational.handlers.soft_conditioning import soft_eq, KernelSoftConditionReparam\n", + "\n", + "pyro.settings.set(module_local_params=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [], + "source": [ + "def importance_infer(\n", + " model: Optional[Callable] = None, *, num_samples: int\n", + "):\n", + " \n", + " if model is None:\n", + " return lambda m: importance_infer(m, num_samples=num_samples)\n", + "\n", + " def _wrapped_model(\n", + " *args,\n", + " **kwargs\n", + " ):\n", + "\n", + " guide = pyro.poutine.block(hide_fn=lambda msg: msg[\"is_observed\"])(model)\n", + "\n", + " max_plate_nesting = 9 # TODO guess\n", + "\n", + " with pyro.poutine.block(), MultiWorldCounterfactual() as mwc:\n", + " log_weights, importance_tr, _ = pyro.infer.importance.vectorized_importance_weights(\n", + " model,\n", + " guide,\n", + " *args,\n", + " num_samples=num_samples,\n", + " max_plate_nesting=max_plate_nesting,\n", + " normalized=False,\n", + " **kwargs\n", + " )\n", + "\n", + " # # resample using importance weights to get posterior samples\n", + " # idx = dist.Categorical(logits=log_weights).sample((num_samples,))\n", + " # for name, node in importance_tr.nodes.items():\n", + " # if node[\"type\"] != \"sample\" or pyro.poutine.util.site_is_subsample(node) or node[\"is_observed\"]:\n", + " # continue\n", + " # importance_tr.nodes[name][\"value\"] = torch.index_select(\n", + " # importance_tr.nodes[name][\"value\"],\n", + " # -max_plate_nesting - 1 - len(importance_tr.nodes[name][\"fn\"].event_shape),\n", + " # idx,\n", + " # )\n", + "\n", + " print(log_weights)\n", + "\n", + " # with pyro.poutine.replay(trace=importance_tr), mwc:\n", + " # trace = pyro.poutine.trace(model).get_trace(*args, **kwargs)\n", + "\n", + " return torch.logsumexp(log_weights, dim=0) - math.log(num_samples), importance_tr, mwc, log_weights\n", + "\n", + " return _wrapped_model" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "u_match_dropped\n", + "\n", + "u_match_dropped\n", + "\n", + "\n", + "\n", + "match_dropped\n", + "\n", + "match_dropped\n", + "\n", + "\n", + "\n", + "u_lightning\n", + "\n", + "u_lightning\n", + "\n", + "\n", + "\n", + "lightning\n", + "\n", + "lightning\n", + "\n", + "\n", + "\n", + "smile\n", + "\n", + "smile\n", + "\n", + "\n", + "\n", + "forest_fire\n", + "\n", + "forest_fire\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def forest_fire_model():\n", + " u_match_dropped = pyro.sample(\"u_match_dropped\", dist.Bernoulli(0.7))\n", + " match_dropped = pyro.deterministic(\n", + " \"match_dropped\", u_match_dropped, event_dim=0\n", + " ) # notice uneven probs here\n", + "\n", + " u_lightning = pyro.sample(\"u_lightning\", dist.Bernoulli(0.4))\n", + " lightning = pyro.deterministic(\"lightning\", u_lightning, event_dim=0)\n", + "\n", + " # this is a causally irrelevant site\n", + " smile = pyro.sample(\"smile\", dist.Bernoulli(0.5))\n", + "\n", + " forest_fire = pyro.deterministic(\n", + " \"forest_fire\", torch.max(match_dropped, lightning) + (0 * smile), event_dim=0\n", + " )\n", + "\n", + " return {\n", + " \"match_dropped\": match_dropped,\n", + " \"lightning\": lightning,\n", + " \"forest_fire\": forest_fire,\n", + " }\n", + "\n", + "with ExtractSupports() as extract_supports:\n", + " forest_fire_model()\n", + " forest_fire_supports = {k: constraints.boolean for k in extract_supports.supports}\n", + "\n", + "pyro.render_model(forest_fire_model)" + ] + }, + { + "cell_type": "code", + "execution_count": 101, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tensor([-2.0027e-05, -1.1512e+01, -2.3024e+01, ..., -2.0027e-05,\n", + " -2.0027e-05, -2.0027e-05])\n", + "tensor(0.4743)\n" + ] + } + ], + "source": [ + "query = SearchForExplanation(\n", + " supports=forest_fire_supports,\n", + " antecedents={\"match_dropped\": 1.0, \"lightning\": 1.0},\n", + " consequents={\"forest_fire\": torch.tensor(1.0)},\n", + " witnesses={},\n", + " alternatives={\"match_dropped\": 0.0, \"lightning\": 0.0},\n", + " consequent_scale=1e-5\n", + ")(forest_fire_model)\n", + "\n", + "logp, trace, mwc, log_weight_vector = importance_infer(num_samples=10000)(query)()\n", + "print(torch.exp(logp))" + ] + }, + { + "cell_type": "code", + "execution_count": 102, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tensor(4937.)\n", + "tensor([[[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " ...,\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]]])\n", + "tensor([-2.0027e-05, -1.1512e+01, -2.3024e+01, ..., -2.0027e-05,\n", + " -2.0027e-05, -2.0027e-05])\n", + "tensor([1.0000, 0.0000, 0.0000, ..., 1.0000, 1.0000, 1.0000])\n", + "tensor(0.7991)\n" + ] + } + ], + "source": [ + "mask_intervened = trace.nodes[\"__cause____antecedent_match_dropped\"][\"value\"] == 0\n", + "print(mask_intervened.float().sum())\n", + "print(mask_intervened)\n", + "print(log_weight_vector)\n", + "print(torch.exp(log_weight_vector) * mask_intervened.squeeze())\n", + "\n", + "print(torch.sum(torch.exp(log_weight_vector) * mask_intervened.squeeze())/mask_intervened.float().sum())\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 103, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tensor(5130.)\n", + "tensor([[[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " ...,\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]]])\n", + "tensor([-2.0027e-05, -1.1512e+01, -2.3024e+01, ..., -2.0027e-05,\n", + " -2.0027e-05, -2.0027e-05])\n", + "tensor([9.9998e-01, 1.0013e-05, 0.0000e+00, ..., 9.9998e-01, 0.0000e+00,\n", + " 9.9998e-01])\n", + "tensor(0.7025)\n" + ] + } + ], + "source": [ + "mask_intervened = trace.nodes[\"__cause____antecedent_lightning\"][\"value\"] == 0\n", + "print(mask_intervened.float().sum())\n", + "print(mask_intervened)\n", + "print(log_weight_vector)\n", + "print(torch.exp(log_weight_vector) * mask_intervened.squeeze())\n", + "\n", + "print(torch.sum(torch.exp(log_weight_vector) * mask_intervened.squeeze())/torch.sum(torch.exp(log_weight_vector)))" + ] + }, + { + "cell_type": "code", + "execution_count": 106, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tensor(2467.)\n", + "tensor([[[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[ True]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " ...,\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[[[[False]]]]]]]]]])\n", + "tensor([-2.0027e-05, -1.1512e+01, -2.3024e+01, ..., -2.0027e-05,\n", + " -2.0027e-05, -2.0027e-05])\n", + "tensor([0.0000e+00, 0.0000e+00, 1.0014e-10, ..., 0.0000e+00, 0.0000e+00,\n", + " 0.0000e+00])\n", + "tensor(1.7309e-06)\n" + ] + } + ], + "source": [ + "mask_intervened = (trace.nodes[\"__cause____antecedent_match_dropped\"][\"value\"] == 1) & (trace.nodes[\"__cause____antecedent_lightning\"][\"value\"] == 1)\n", + "print(mask_intervened.float().sum())\n", + "print(mask_intervened)\n", + "print(log_weight_vector)\n", + "print(torch.exp(log_weight_vector) * mask_intervened.squeeze())\n", + "\n", + "print(torch.sum(torch.exp(log_weight_vector) * mask_intervened.squeeze())/mask_intervened.float().sum())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "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.10.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 92545291559fb19a292c2dc8d39f2ed1c16435a3 Mon Sep 17 00:00:00 2001 From: PoorvaGarg Date: Mon, 12 Aug 2024 13:40:56 -0400 Subject: [PATCH 27/53] responsibility example --- .../explainable_categorical_alternate.ipynb | 9 +- docs/source/responsibility.ipynb | 381 ++---------------- 2 files changed, 30 insertions(+), 360 deletions(-) diff --git a/docs/source/explainable_categorical_alternate.ipynb b/docs/source/explainable_categorical_alternate.ipynb index 339e19df..6896e229 100644 --- a/docs/source/explainable_categorical_alternate.ipynb +++ b/docs/source/explainable_categorical_alternate.ipynb @@ -147,7 +147,7 @@ " *args,\n", " num_samples=num_samples,\n", " max_plate_nesting=max_plate_nesting,\n", - " normalized=False,\n", + " normalized=True,\n", " **kwargs\n", " )\n", "\n", @@ -475,13 +475,6 @@ "## Witness nodes and context sensitivity" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Some of these intuitions in the forest fire example may be salvaged by considering a two-membered antecedent set, estimating $P(f'_{m',l'}, f_{m,l})$. " - ] - }, { "cell_type": "code", "execution_count": 97, diff --git a/docs/source/responsibility.ipynb b/docs/source/responsibility.ipynb index a562f3de..a203dbc4 100644 --- a/docs/source/responsibility.ipynb +++ b/docs/source/responsibility.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 30, + "execution_count": 24, "metadata": {}, "outputs": [ { @@ -34,7 +34,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 25, "metadata": {}, "outputs": [], "source": [ @@ -65,22 +65,6 @@ " **kwargs\n", " )\n", "\n", - " # # resample using importance weights to get posterior samples\n", - " # idx = dist.Categorical(logits=log_weights).sample((num_samples,))\n", - " # for name, node in importance_tr.nodes.items():\n", - " # if node[\"type\"] != \"sample\" or pyro.poutine.util.site_is_subsample(node) or node[\"is_observed\"]:\n", - " # continue\n", - " # importance_tr.nodes[name][\"value\"] = torch.index_select(\n", - " # importance_tr.nodes[name][\"value\"],\n", - " # -max_plate_nesting - 1 - len(importance_tr.nodes[name][\"fn\"].event_shape),\n", - " # idx,\n", - " # )\n", - "\n", - " print(log_weights)\n", - "\n", - " # with pyro.poutine.replay(trace=importance_tr), mwc:\n", - " # trace = pyro.poutine.trace(model).get_trace(*args, **kwargs)\n", - "\n", " return torch.logsumexp(log_weights, dim=0) - math.log(num_samples), importance_tr, mwc, log_weights\n", "\n", " return _wrapped_model" @@ -88,391 +72,84 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 26, "metadata": {}, - "outputs": [ - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "u_match_dropped\n", - "\n", - "u_match_dropped\n", - "\n", - "\n", - "\n", - "match_dropped\n", - "\n", - "match_dropped\n", - "\n", - "\n", - "\n", - "u_lightning\n", - "\n", - "u_lightning\n", - "\n", - "\n", - "\n", - "lightning\n", - "\n", - "lightning\n", - "\n", - "\n", - "\n", - "smile\n", - "\n", - "smile\n", - "\n", - "\n", - "\n", - "forest_fire\n", - "\n", - "forest_fire\n", - "\n", - "\n", - "\n" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 32, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "def forest_fire_model():\n", - " u_match_dropped = pyro.sample(\"u_match_dropped\", dist.Bernoulli(0.7))\n", - " match_dropped = pyro.deterministic(\n", - " \"match_dropped\", u_match_dropped, event_dim=0\n", - " ) # notice uneven probs here\n", - "\n", - " u_lightning = pyro.sample(\"u_lightning\", dist.Bernoulli(0.4))\n", - " lightning = pyro.deterministic(\"lightning\", u_lightning, event_dim=0)\n", - "\n", - " # this is a causally irrelevant site\n", - " smile = pyro.sample(\"smile\", dist.Bernoulli(0.5))\n", - "\n", - " forest_fire = pyro.deterministic(\n", - " \"forest_fire\", torch.max(match_dropped, lightning) + (0 * smile), event_dim=0\n", - " )\n", - "\n", - " return {\n", - " \"match_dropped\": match_dropped,\n", - " \"lightning\": lightning,\n", - " \"forest_fire\": forest_fire,\n", - " }\n", + "def example():\n", + " A = pyro.sample(\"A\", dist.Bernoulli(0.5))\n", + " B = pyro.sample(\"B\", dist.Bernoulli(0.5))\n", + " C = pyro.sample(\"C\", dist.Bernoulli(A))\n", + " return {\"A\": A, \"B\": B, \"C\": C}\n", "\n", "with ExtractSupports() as extract_supports:\n", - " forest_fire_model()\n", - " forest_fire_supports = {k: constraints.boolean for k in extract_supports.supports}\n", - "\n", - "pyro.render_model(forest_fire_model)" + " example()" ] }, { "cell_type": "code", - "execution_count": 101, + "execution_count": 27, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor([-2.0027e-05, -1.1512e+01, -2.3024e+01, ..., -2.0027e-05,\n", - " -2.0027e-05, -2.0027e-05])\n", - "tensor(0.4743)\n" + "tensor(0.4971)\n" ] } ], "source": [ "query = SearchForExplanation(\n", - " supports=forest_fire_supports,\n", - " antecedents={\"match_dropped\": 1.0, \"lightning\": 1.0},\n", - " consequents={\"forest_fire\": torch.tensor(1.0)},\n", + " supports=extract_supports.supports,\n", + " antecedents={\"A\": 1.0, \"B\": 1.0},\n", + " consequents={\"C\": torch.tensor(1.0)},\n", " witnesses={},\n", - " alternatives={\"match_dropped\": 0.0, \"lightning\": 0.0},\n", - " consequent_scale=1e-5\n", - ")(forest_fire_model)\n", + " alternatives={\"A\": 0.0, \"B\": 0.0},\n", + " consequent_scale=1e-5,\n", + ")(example)\n", "\n", - "logp, trace, mwc, log_weight_vector = importance_infer(num_samples=10000)(query)()\n", + "logp, trace, mwc, log_weights = importance_infer(num_samples=10000)(query)()\n", "print(torch.exp(logp))" ] }, { "cell_type": "code", - "execution_count": 102, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "tensor(4937.)\n", - "tensor([[[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " ...,\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]]])\n", - "tensor([-2.0027e-05, -1.1512e+01, -2.3024e+01, ..., -2.0027e-05,\n", - " -2.0027e-05, -2.0027e-05])\n", - "tensor([1.0000, 0.0000, 0.0000, ..., 1.0000, 1.0000, 1.0000])\n", - "tensor(0.7991)\n" - ] - } - ], - "source": [ - "mask_intervened = trace.nodes[\"__cause____antecedent_match_dropped\"][\"value\"] == 0\n", - "print(mask_intervened.float().sum())\n", - "print(mask_intervened)\n", - "print(log_weight_vector)\n", - "print(torch.exp(log_weight_vector) * mask_intervened.squeeze())\n", - "\n", - "print(torch.sum(torch.exp(log_weight_vector) * mask_intervened.squeeze())/mask_intervened.float().sum())\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 103, + "execution_count": 28, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(5130.)\n", - "tensor([[[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " ...,\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]]])\n", - "tensor([-2.0027e-05, -1.1512e+01, -2.3024e+01, ..., -2.0027e-05,\n", - " -2.0027e-05, -2.0027e-05])\n", - "tensor([9.9998e-01, 1.0013e-05, 0.0000e+00, ..., 9.9998e-01, 0.0000e+00,\n", - " 9.9998e-01])\n", - "tensor(0.7025)\n" + "tensor(0.5016)\n" ] } ], "source": [ - "mask_intervened = trace.nodes[\"__cause____antecedent_lightning\"][\"value\"] == 0\n", - "print(mask_intervened.float().sum())\n", - "print(mask_intervened)\n", - "print(log_weight_vector)\n", - "print(torch.exp(log_weight_vector) * mask_intervened.squeeze())\n", - "\n", - "print(torch.sum(torch.exp(log_weight_vector) * mask_intervened.squeeze())/torch.sum(torch.exp(log_weight_vector)))" + "mask_intervened = (trace.nodes[\"__cause____antecedent_B\"][\"value\"] == 0)\n", + "print(torch.sum(torch.exp(log_weights) * mask_intervened.float().squeeze())/mask_intervened.float().sum())\n", + "# Marginalizing over the fact that B was intervened on gives the following answer which accounts for the causal role of the set {A = 1, B = 1}" ] }, { "cell_type": "code", - "execution_count": 106, + "execution_count": 29, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(2467.)\n", - "tensor([[[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " ...,\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]]])\n", - "tensor([-2.0027e-05, -1.1512e+01, -2.3024e+01, ..., -2.0027e-05,\n", - " -2.0027e-05, -2.0027e-05])\n", - "tensor([0.0000e+00, 0.0000e+00, 1.0014e-10, ..., 0.0000e+00, 0.0000e+00,\n", - " 0.0000e+00])\n", - "tensor(1.7309e-06)\n" + "tensor(5.1220e-06)\n" ] } ], "source": [ - "mask_intervened = (trace.nodes[\"__cause____antecedent_match_dropped\"][\"value\"] == 1) & (trace.nodes[\"__cause____antecedent_lightning\"][\"value\"] == 1)\n", - "print(mask_intervened.float().sum())\n", - "print(mask_intervened)\n", - "print(log_weight_vector)\n", - "print(torch.exp(log_weight_vector) * mask_intervened.squeeze())\n", - "\n", - "print(torch.sum(torch.exp(log_weight_vector) * mask_intervened.squeeze())/mask_intervened.float().sum())" + "mask_intervened = (trace.nodes[\"__cause____antecedent_B\"][\"value\"] == 0) & (trace.nodes[\"__cause____antecedent_A\"][\"value\"] == 1)\n", + "print(torch.sum(torch.exp(log_weights) * mask_intervened.float().squeeze())/mask_intervened.float().sum())\n", + "# Marginalizing over the fact that B was intervened on and A was not gives the following answer which agrees with the fact that B has no causal role\n" ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { From 61aa26b59a8a574526ec5967071da3a06e6ddbcc Mon Sep 17 00:00:00 2001 From: PoorvaGarg Date: Mon, 12 Aug 2024 15:29:40 -0400 Subject: [PATCH 28/53] documentation completed --- .../explainable_categorical_alternate.ipynb | 10151 +--------------- docs/source/responsibility.ipynb | 9 +- 2 files changed, 170 insertions(+), 9990 deletions(-) diff --git a/docs/source/explainable_categorical_alternate.ipynb b/docs/source/explainable_categorical_alternate.ipynb index 6896e229..52f944e3 100644 --- a/docs/source/explainable_categorical_alternate.ipynb +++ b/docs/source/explainable_categorical_alternate.ipynb @@ -11,7 +11,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The **Explainable Reasoning with ChiRho** package aims to provide a systematic, unified approach to causal explanation computations. The package provides a single generic program transformation that can be applied to any arbitrary causal model representable as a Chirho program. This program transformation allows several causal explanation queries to be modeled in terms of probabilistic queries. This approach of reducing causal queries to probabilistic computations on transformed causal models is the foundational idea behind all of ChiRho and has been leveraged for causal explanations in this module as well.\n", + "The **Explainable Reasoning with ChiRho** package aims to provide a systematic, unified approach to causal explanation computations. The package provides a single generic program transformation that can be applied to any arbitrary causal model representable as a Chirho program. This program transformation allows several causal explanation queries to be modeled in terms of probabilistic queries. This approach of reducing causal queries to probabilistic computations on transformed causal models is the foundational idea behind all of ChiRho and in this module, has been leveraged for causal explanations as well.\n", "\n", "The goal of this notebook is to illustrate how the package can be used to provide an approximate method of answering a range of causal explanation queries in causal models with only categorical variables. As the key tool will involve sampling-based posterior probability estimation, a lot of what will be said *mutatis mutandis* applies to more general settings where variables are continuous (to which we will devote another tutorial).\n", "\n", @@ -24,14 +24,15 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "[Poorva: come back to this outline for better headlines]\n", - "\n", "**Outline**\n", "\n", - "[Causal explanation and counterfactual thinking](#causal-explanation-and-counterfactual-thinking) \n", + "[Overview](#overview)\n", + "\n", + "[Setup](#setup)\n", "\n", + "[But-for Causal Explanations](#but-for-causal-explanations) \n", "\n", - "[Witness nodes and context sensitivity](#witness-nodes-and-context-sensitivity)\n", + "[Context-sensitive Causal Explanations](#witness-nodes-and-context-sensitivity)\n", "\n", "[Probability of causation and responsibility](#probability-of-causation-and-responsibility)" ] @@ -40,7 +41,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Causal explanation and counterfactual thinking" + "## Overview" ] }, { @@ -76,12 +77,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Setup" + "## Setup" ] }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -120,7 +121,7 @@ }, { "cell_type": "code", - "execution_count": 65, + "execution_count": 6, "metadata": {}, "outputs": [], "source": [ @@ -147,7 +148,7 @@ " *args,\n", " num_samples=num_samples,\n", " max_plate_nesting=max_plate_nesting,\n", - " normalized=True,\n", + " normalized=False,\n", " **kwargs\n", " )\n", "\n", @@ -162,6 +163,13 @@ " return {i: KernelSoftConditionReparam(_soft_eq) for i in data}" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## But-for Causal Explanations" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -171,9 +179,16 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 20, "metadata": {}, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'u_match_dropped': Boolean(), 'match_dropped': IndependentConstraint(Real(), 0), 'u_lightning': Boolean(), 'lightning': IndependentConstraint(Real(), 0), 'smile': Boolean(), 'forest_fire': IndependentConstraint(Real(), 0)}\n" + ] + }, { "data": { "image/svg+xml": [ @@ -227,10 +242,10 @@ "\n" ], "text/plain": [ - "" + "" ] }, - "execution_count": 64, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" } @@ -283,7 +298,9 @@ "4. the elements of the current context (`witnesses`), and \n", "5. the `consequents` of interest $Y=y$. \n", "\n", - "The `SearchForExplanation` handler then takes these arguments and transforms the original model into another model in which interventions on antecedents and witnesses are applied stochastically. Once the antecedents `A` and witnesses `W` are chosen, parallel counterfactual worlds are created to condition on `A` being sufficient and necessary causes for the consequent with the context `W`." + "The `SearchForExplanation` handler then takes these arguments and transforms the original model into another model in which interventions on antecedents and witnesses are applied stochastically. Once the antecedents `A` and witnesses `W` are chosen, parallel counterfactual worlds are created to condition on `A` being sufficient and necessary causes for the consequent with the context `W`.\n", + "\n", + "And now, we are ready to use `SearchForExplanation` for answering but-for causal questions." ] }, { @@ -299,14 +316,14 @@ }, { "cell_type": "code", - "execution_count": 72, + "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.2951)\n" + "tensor(0.2947)\n" ] } ], @@ -333,14 +350,14 @@ }, { "cell_type": "code", - "execution_count": 73, + "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.5970)\n" + "tensor(0.5993)\n" ] } ], @@ -353,35 +370,33 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "A similar estimation as above would not work in case of overdetermination where one of the two factors are enough to cause the outcome. Consider the case where both `match_dropped` and `lightning` did occur. In this case, if we try to determine the causal role of `match_dropped`, it would come out to be zero. And a symmetric reasoning works for lightning as well. This results in $P(f'_{m'}, f_m, m, l) = P(f'_{l'}, f_l, m, l)=0$" + "**Causal Query 2** Is a Chirho developer smiling a cause of forest fire?\n", + "\n", + "The intuitive answer is obviously no and we show that the same conclusion can be drawn using `SearchForExplanation` handler." ] }, { "cell_type": "code", - "execution_count": 76, + "execution_count": 25, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(2.8615e-06)\n" + "tensor(1.0011e-05)\n" ] } ], "source": [ "query = SearchForExplanation(\n", " supports=forest_fire_supports,\n", - " antecedents={\"match_dropped\": torch.tensor(1.0)},\n", + " antecedents={\"smile\": torch.tensor(1.0)},\n", " consequents={\"forest_fire\": torch.tensor(1.0)},\n", " witnesses={}, # potential context elements, we leave them empty for now\n", - " alternatives={\"match_dropped\": torch.tensor(0.0)},\n", + " alternatives={\"smile\": torch.tensor(0.0)},\n", " consequent_scale=1e-5,\n", - ")(\n", - " pyro.poutine.reparam(config=reparam_config([\"match_dropped\", \"lightning\"]))(\n", - " condition(data={\"match_dropped\": torch.tensor(1.0), \"lightning\": torch.tensor(1.0)})\n", - " (forest_fire_model)\n", - " ))\n", + ")(forest_fire_model)\n", "\n", "logp, trace, mwc, log_weights = importance_infer(num_samples=10000)(query)()\n", "print(torch.exp(logp))" @@ -389,19 +404,19 @@ }, { "cell_type": "code", - "execution_count": 77, + "execution_count": 26, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(2.8286e-06)\n" + "tensor(1.0011e-05)\n" ] } ], "source": [ - "mask_intervened = trace.nodes[\"__cause____antecedent_match_dropped\"][\"value\"] == 0\n", + "mask_intervened = trace.nodes[\"__cause____antecedent_smile\"][\"value\"] == 0\n", "print(torch.sum(torch.exp(log_weights) * mask_intervened.squeeze())/torch.sum(mask_intervened.float()))" ] }, @@ -409,29 +424,29 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "But if we consider both `match_dropped` and `lightning` to be possible causes, we can estimate $P(f'_{m',l'}, f_{m,l}, m, l)$ to determine their causal role." + "A similar estimation as above would not work in case of overdetermination where one of the two factors are enough to cause the outcome. Consider the case where both `match_dropped` and `lightning` did occur. In this case, if we try to determine the causal role of `match_dropped`, it would come out to be zero. And a symmetric reasoning works for lightning as well. This results in $P(f'_{m'}, f_m, m, l) = P(f'_{l'}, f_l, m, l)=0$. This is a canonical example that shows the limitations of but-for analysis." ] }, { "cell_type": "code", - "execution_count": 79, + "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.0692)\n" + "tensor(2.8025e-06)\n" ] } ], "source": [ "query = SearchForExplanation(\n", " supports=forest_fire_supports,\n", - " antecedents={\"match_dropped\": torch.tensor(1.0), \"lightning\": torch.tensor(1.0)},\n", + " antecedents={\"match_dropped\": torch.tensor(1.0)},\n", " consequents={\"forest_fire\": torch.tensor(1.0)},\n", " witnesses={}, # potential context elements, we leave them empty for now\n", - " alternatives={\"match_dropped\": torch.tensor(0.0), \"lightning\": torch.tensor(0.0)},\n", + " alternatives={\"match_dropped\": torch.tensor(0.0)},\n", " consequent_scale=1e-5,\n", ")(\n", " pyro.poutine.reparam(config=reparam_config([\"match_dropped\", \"lightning\"]))(\n", @@ -445,19 +460,19 @@ }, { "cell_type": "code", - "execution_count": 80, + "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.2796)\n" + "tensor(2.7553e-06)\n" ] } ], "source": [ - "mask_intervened = (trace.nodes[\"__cause____antecedent_match_dropped\"][\"value\"] == 0) & (trace.nodes[\"__cause____antecedent_lightning\"][\"value\"] == 0)\n", + "mask_intervened = trace.nodes[\"__cause____antecedent_match_dropped\"][\"value\"] == 0\n", "print(torch.sum(torch.exp(log_weights) * mask_intervened.squeeze())/torch.sum(mask_intervened.float()))" ] }, @@ -465,47 +480,70 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "DONE TILL HERE" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Witness nodes and context sensitivity" + "But if we consider both `match_dropped` and `lightning` to be possible causes, we can estimate $P(f'_{m',l'}, f_{m,l}, m, l)$ to determine their causal role that comes out to be greater than 0." ] }, { "cell_type": "code", - "execution_count": 97, + "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.4616)\n" + "tensor(0.0682)\n" ] } ], "source": [ "query = SearchForExplanation(\n", " supports=forest_fire_supports,\n", - " antecedents={\"match_dropped\": 1.0, \"lightning\": 1.0},\n", + " antecedents={\"match_dropped\": torch.tensor(1.0), \"lightning\": torch.tensor(1.0)},\n", " consequents={\"forest_fire\": torch.tensor(1.0)},\n", - " witnesses={},\n", - " alternatives={\"match_dropped\": 0.0, \"lightning\": 0.0},\n", - ")(forest_fire_model)\n", + " witnesses={}, # potential context elements, we leave them empty for now\n", + " alternatives={\"match_dropped\": torch.tensor(0.0), \"lightning\": torch.tensor(0.0)},\n", + " consequent_scale=1e-5,\n", + ")(\n", + " pyro.poutine.reparam(config=reparam_config([\"match_dropped\", \"lightning\"]))(\n", + " condition(data={\"match_dropped\": torch.tensor(1.0), \"lightning\": torch.tensor(1.0)})\n", + " (forest_fire_model)\n", + " ))\n", "\n", - "logp, trace, mwc = importance_infer(num_samples=10000)(query)()\n", + "logp, trace, mwc, log_weights = importance_infer(num_samples=10000)(query)()\n", "print(torch.exp(logp))" ] }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tensor(0.2793)\n" + ] + } + ], + "source": [ + "mask_intervened = (trace.nodes[\"__cause____antecedent_match_dropped\"][\"value\"] == 0) & (trace.nodes[\"__cause____antecedent_lightning\"][\"value\"] == 0)\n", + "print(torch.sum(torch.exp(log_weights) * mask_intervened.squeeze())/torch.sum(mask_intervened.float()))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Context-sensitive Causal Explanations" + ] + }, { "cell_type": "markdown", "metadata": {}, "source": [ - "This already suggests a more complicated picture, as it turns out that we need to pay attention to membership in larger antecedent sets that would make a difference (that is one reason why we need stochasticity in antecedent candidate preemption: to search for such sets).\n", + "As the previous example showed, but-for analysis is not sufficient for our analysis. It induces the need to pay attention to membership of variables in larger antecedent sets that would make a difference (that is one reason why we need stochasticity in antecedent candidate preemption: to search for such sets).\n", "\n", "But even then, the but-for analysis does not pay sufficient attention to the granularity of a given problem and its causal structure. There are asymmetric cases where the efficiency of one cause prevents the efficiency of another, in which our causal attributions should also be asymmetric, but \"being a member of the same larger antecedent set\" isn't.\n", "\n", @@ -514,7 +552,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 14, "metadata": {}, "outputs": [ { @@ -597,7 +635,7 @@ "bill_hits\n", "\n", "\n", - "\n", + "\n", "prob_bill_hits->bill_hits\n", "\n", "\n", @@ -615,7 +653,7 @@ "bottle_shatters\n", "\n", "\n", - "\n", + "\n", "prob_bottle_shatters_if_sally->bottle_shatters\n", "\n", "\n", @@ -627,7 +665,7 @@ "prob_bottle_shatters_if_bill\n", "\n", "\n", - "\n", + "\n", "prob_bottle_shatters_if_bill->bottle_shatters\n", "\n", "\n", @@ -645,13 +683,13 @@ "\n", "\n", "\n", - "\n", + "\n", "sally_hits->bill_hits\n", "\n", "\n", "\n", "\n", - "\n", + "\n", "sally_hits->bottle_shatters\n", "\n", "\n", @@ -666,10 +704,10 @@ "\n" ], "text/plain": [ - "" + "" ] }, - "execution_count": 3, + "execution_count": 14, "metadata": {}, "output_type": "execute_result" } @@ -747,7 +785,7 @@ }, { "cell_type": "code", - "execution_count": 186, + "execution_count": 46, "metadata": {}, "outputs": [ { @@ -777,7 +815,7 @@ " }\n", ")(stones_model))\n", "\n", - "logp, trace, mwc = importance_infer(num_samples=10000)(query)()\n", + "logp, trace, mwc, log_weights = importance_infer(num_samples=10000)(query)()\n", "print(torch.exp(logp))" ] }, @@ -792,7 +830,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "An intuitive solution to the problem, inspired by the Pearl-Halpern definition of actual causality (which we discuss in [another notebook](https://basisresearch.github.io/chirho/actual_causality.html)) is to say that **in answering actual causality queries, we need to consider what happens when part of the actual context is kept fixed.** For instance, in the bottle shattering example, given the observed fact that Bob’s stone didn’t hit, in the counterfactual world in which we keep this observed fact fixed, if Sally nad not thrown the stone, the bottle in fact would not have shattered. \n", + "An intuitive solution to the problem, inspired by the Pearl-Halpern definition of actual causality (which we discuss in [another notebook](https://basisresearch.github.io/chirho/actual_causality.html)) is to say that **in answering actual causality queries, we need to consider what happens when part of the actual context is kept fixed.** For instance, in the bottle shattering example, given the observed fact that Bob’s stone didn’t hit, in the counterfactual world in which we keep this observed fact fixed, if Sally had not thrown the stone, the bottle in fact would not have shattered. \n", "\n", "\n", "For this reason, our handler allows not only stochastic preemption of interventions (to approximate the search through possible antecedent sets) but also stochastic witness preemption of those nodes that are considered part of the context (these needn't exclude each other). In a witness preemption, we ensure that the counterfactual value is identical to the factual one (and by applying it randomly to candidate witness nodes, we approximate a search through all possible context sets)." @@ -800,16 +838,14 @@ }, { "cell_type": "code", - "execution_count": 292, + "execution_count": 47, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor([-1.1512e+01, -1.1512e+01, -1.1512e+01, ..., -2.3024e+01,\n", - " -1.1512e+01, -2.0027e-05])\n", - "tensor(0.2495)\n" + "tensor(0.2513)\n" ] } ], @@ -832,46 +868,17 @@ " }\n", ")(stones_model))\n", "\n", - "logp, trace, mwc, logw = importance_infer(num_samples=100000)(query)()\n", + "logp, trace, mwc, log_weights = importance_infer(num_samples=100000)(query)()\n", "print(torch.exp(logp))" ] }, - { - "cell_type": "code", - "execution_count": 151, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "tensor(1.)\n", - "torch.Size([1, 1, 1, 1, 1, 1, 1, 1, 1, 1])\n", - "torch.Size([1, 1, 1, 1, 1, 3, 1, 1, 1, 1])\n", - "torch.Size([1, 1, 1, 1, 1, 1, 1, 1, 1, 1])\n", - "tensor([1., 0., 1.])\n", - "tensor([ 0.0000, -0.0101, -0.0101])\n" - ] - } - ], - "source": [ - "trace.nodes.keys()\n", - "print(trace.nodes['sally_throws'][\"value\"].squeeze())\n", - "print(trace.nodes['__cause____antecedent_sally_throws'][\"value\"].shape)\n", - "print(trace.nodes['bill_hits'][\"value\"].shape)\n", - "print(trace.nodes['__cause____witness_bill_hits'][\"value\"].shape)\n", - "print(trace.nodes['bottle_shatters'][\"value\"].squeeze())\n", - "print(trace.nodes['__cause____consequent_bottle_shatters'][\"log_prob\"].squeeze())" - ] - }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Admittedly, our search through contexts is very simple and degenerate, as the only part of the actual context which stochastically is kept fixed at the factual value is `bill_hits`. But already with this search, sally throwing is diagnosed as having non-null probability. In fact, the definition of actual causality in Halpern's book (*Actual causality*) contains an existential quantifier: a variable is an actual cause if there is at least one context in which a change in the outcome variable would result from changing the antecedent to have an alternative value, so our search provides a correct diagnosis here.\n", + "Admittedly, our search through contexts is simple as the only part of the actual context which stochastically is kept fixed at the factual value is `bill_hits`. But already with this search, sally throwing is diagnosed as having non-null probability. In fact, the definition of actual causality in Halpern's book (*Actual causality*) contains an existential quantifier: a variable is an actual cause if there is at least one context in which a change in the outcome variable would result from changing the antecedent to have an alternative value, so our search provides a correct diagnosis here.\n", "\n", - "Crucally, as intended, an analogous inference for whether `bill_throws` is a cause of the bottle shattering, yields a different\n", - "result and assigns null causal role to bill." + "Crucially, as intended, an analogous inference for whether `bill_throws` is a cause of the bottle shattering, yields a different result and assigns null causal role to bill." ] }, { @@ -914,7 +921,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Probability of causation and responsibility" + "## Probability of Causation and Responsibility" ] }, { @@ -930,213 +937,14 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 49, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor([-2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", - " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", - " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05,\n", - " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", - " -2.0385e-05, -2.0385e-05, -2.0385e-05, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01,\n", - " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.0385e-05, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", - " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.0385e-05, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05,\n", - " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", - " -2.0385e-05, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.0385e-05, -2.0385e-05,\n", - " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", - " -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.0385e-05, -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.0385e-05,\n", - " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01,\n", - " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", - " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.0385e-05, -2.3024e+01,\n", - " -2.0385e-05, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05,\n", - " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", - " -2.0385e-05, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", - " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01,\n", - " -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", - " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", - " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.0385e-05, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01])\n" + "tensor(0.1439)\n" ] } ], @@ -1150,9755 +958,126 @@ " consequent_scale=1e-5\n", ")(condition(\n", " data={\n", - " \"prob_sally_throws\": torch.tensor(1.0),\n", - " \"prob_bill_throws\": torch.tensor(0.0),\n", - " \"prob_sally_hits\": torch.tensor(1.0),\n", - " \"prob_bill_hits\": torch.tensor(0.0),\n", - " \"prob_bottle_shatters_if_sally\": torch.tensor(1.0),\n", - " \"prob_bottle_shatters_if_bill\": torch.tensor(0.0),\n", + " \"prob_sally_throws\": torch.tensor(0.8),\n", + " \"prob_bill_throws\": torch.tensor(0.7),\n", + " \"prob_sally_hits\": torch.tensor(0.9),\n", + " \"prob_bill_hits\": torch.tensor(0.8),\n", + " \"prob_bottle_shatters_if_sally\": torch.tensor(0.9),\n", + " \"prob_bottle_shatters_if_bill\": torch.tensor(0.8),\n", " \"bottle_shatters\": torch.tensor(1.0),\n", " }\n", ")(stones_model))\n", "\n", - "logp, trace, mwc, logw = importance_infer(num_samples=1000)(query)()\n", - "\n", - "# print(logp)\n", - "\n", - "# print(torch.exp(logp))\n", - "\n", - "# nodes = trace.nodes[\"_RETURN\"][\"value\"]\n", - "\n", - "# print(trace.nodes[\"sally_throws\"][\"value\"].shape)\n", - "# print(nodes[\"sally_throws\"].shape)\n", - "# with mwc:\n", - "# print(gather(nodes[\"sally_throws\"], IndexSet(sally_throws={0})).squeeze())\n", - "# print(gather(nodes[\"sally_throws\"], IndexSet(sally_throws={1})).squeeze())\n", - "# print(gather(nodes[\"sally_throws\"], IndexSet(sally_throws={2})).squeeze())\n", - "\n", - "# print(gather(nodes[\"bill_throws\"], IndexSet(bill_throws={0})).squeeze())\n", - "# print(gather(nodes[\"bill_throws\"], IndexSet(bill_throws={1})).squeeze())\n", - "# print(gather(nodes[\"bill_throws\"], IndexSet(bill_throws={2})).squeeze())\n", - "\n", - "# st_responsible = gather(nodes[\"sally_throws\"], IndexSet(sally_throws={1})) != \\\n", - "# gather(nodes[\"sally_throws\"], IndexSet(sally_throws={2}))\n", - "\n", - "# bt_responsible = gather(nodes[\"bill_throws\"], IndexSet(bill_throws={1})) != \\\n", - "# gather(nodes[\"bill_throws\"], IndexSet(bill_throws={2}))\n", - "\n", - "# print(\"Degree of responsibility of Sally:\", st_responsible.sum() / st_responsible.numel())\n", - "# print(\"Degree of responsibility of Billy:\", bt_responsible.sum() / bt_responsible.numel())" + "logp, trace, mwc, log_weights = importance_infer(num_samples=1000)(query)()\n", + "print(torch.exp(logp))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Note that we assumed Sally to be more likely to throw, more likely to hit, and more likely to shatter the bottle if she hits. For this reason, we expect her to be more likely to be causally responsible for the outcome. Conceptually, these estimates are impacted by some hyperparameters, such as witness preemption probabilities, so perhaps a bit more clarity on can be gained if we think we have a complete list of potential causes and normalize. " + "Now we show how our earlier analysis on the `stones_model` can be carried out through some analysis on the samples we get through this model where we have both `sally_throw` and `bill_throws` as candidate causes and both `bill_hits` and `sally_hits` as context nodes." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We first compute the probability of causation for `sally_throws`. We compute the probability that the set {sally_throws=1} is the cause of bottle shattering." ] }, { "cell_type": "code", - "execution_count": 298, + "execution_count": 50, "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "tensor(0.8100)" - ] - }, - "execution_count": 298, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "tensor(0.1956)\n" + ] } ], "source": [ - "st_responsible2 = st_responsible.float()\n", - "st_responsible2[st_responsible2 == 0.0] = 9.2\n", - "st_responsible2[st_responsible2 == 1.0] = 1.0\n", - "# st_responsible2\n", - "logp = torch.logsumexp(st_responsible2.squeeze().float() * logw, dim=0) - torch.log(torch.tensor(1000))\n", - "torch.exp(logp)" + "mask_intervened = (trace.nodes[\"__cause____antecedent_sally_throws\"][\"value\"] == 0) & (trace.nodes[\"__cause____antecedent_bill_throws\"][\"value\"] == 1)\n", + "print(torch.sum(torch.exp(log_weights) * mask_intervened.float().squeeze())/mask_intervened.float().sum())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We similarly compute this probability for `bill_throws`." ] }, { "cell_type": "code", - "execution_count": 261, + "execution_count": 51, "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "tensor([False, False, True, True, True, True, True, False, True, False,\n", - " True, True, False, True, True, False, True, True, True, True,\n", - " True, True, False, True, True, True, True, True, True, True,\n", - " False, True, True, False, False, True, True, True, True, True,\n", - " True, True, True, True, True, True, True, True, True, False,\n", - " True, False, True, True, True, True, False, True, True, False,\n", - " False, False, True, True, True, True, True, False, True, True,\n", - " False, True, True, True, True, False, True, True, True, True,\n", - " True, True, True, False, True, True, False, True, False, True,\n", - " True, True, False, True, False, True, True, True, True, True,\n", - " True, False, True, False, True, False, False, True, True, True,\n", - " True, False, True, True, True, True, True, False, False, True,\n", - " False, True, True, True, True, True, True, True, True, True,\n", - " True, True, True, True, True, True, True, False, True, True,\n", - " False, True, True, True, False, True, True, False, True, False,\n", - " True, True, True, True, True, True, True, True, True, True,\n", - " True, True, False, False, True, True, True, True, True, True,\n", - " False, True, False, True, True, True, True, True, True, True,\n", - " True, True, True, True, True, True, False, True, True, True,\n", - " True, False, True, True, True, True, False, False, False, True,\n", - " True, True, True, True, True, False, True, False, True, False,\n", - " False, True, True, True, True, True, True, True, False, True,\n", - " True, True, True, False, True, True, False, False, True, True,\n", - " True, True, False, True, True, True, True, True, True, True,\n", - " False, True, True, False, False, True, True, True, True, False,\n", - " True, True, True, True, True, True, True, True, True, False,\n", - " True, False, False, True, True, True, True, True, True, False,\n", - " True, False, True, True, False, False, True, False, False, True,\n", - " True, True, True, True, True, False, True, True, False, True,\n", - " True, False, True, False, True, False, False, True, True, True,\n", - " False, True, False, True, True, True, True, False, True, True,\n", - " True, True, True, True, True, False, True, True, False, True,\n", - " False, True, True, True, True, True, True, True, True, True,\n", - " True, True, False, True, True, True, True, False, True, True,\n", - " True, False, True, True, True, True, False, True, True, True,\n", - " False, True, True, True, True, True, False, True, True, True,\n", - " False, False, True, True, False, True, False, True, False, True,\n", - " True, False, False, True, False, True, True, True, True, True,\n", - " True, False, True, False, False, True, False, True, True, True,\n", - " True, True, True, False, True, False, True, True, True, True,\n", - " True, True, True, True, True, True, True, True, False, True,\n", - " True, True, True, True, True, True, True, True, True, True,\n", - " True, True, False, True, False, False, False, True, False, False,\n", - " True, True, True, True, True, True, False, False, True, True,\n", - " True, True, False, True, True, True, False, True, False, True,\n", - " True, True, True, True, True, True, False, False, True, True,\n", - " False, True, False, True, True, True, False, True, True, True,\n", - " True, True, True, True, True, False, True, True, True, False,\n", - " True, False, True, True, True, False, True, True, True, False,\n", - " False, False, True, True, True, True, True, True, True, True,\n", - " True, True, True, True, True, False, True, False, True, True,\n", - " True, True, True, False, False, True, True, True, False, False,\n", - " True, True, True, False, True, True, False, True, True, True,\n", - " True, True, True, True, False, True, True, True, True, True,\n", - " True, False, True, True, False, True, True, True, True, True,\n", - " False, True, True, True, True, False, False, True, True, True,\n", - " True, True, True, True, True, False, True, True, False, False,\n", - " True, True, False, True, True, True, True, False, True, True,\n", - " True, False, True, True, False, False, True, True, True, True,\n", - " True, True, True, True, True, True, False, True, False, False,\n", - " True, True, True, False, True, True, False, True, True, True,\n", - " True, True, True, True, True, True, True, False, True, True,\n", - " True, True, False, True, True, False, True, True, False, False,\n", - " True, False, False, True, True, True, True, True, False, True,\n", - " True, True, True, False, False, True, False, False, True, True,\n", - " True, False, False, True, True, True, False, False, True, True,\n", - " True, True, False, True, True, True, True, False, False, True,\n", - " False, True, True, True, True, True, True, True, True, False,\n", - " True, True, True, False, True, True, True, True, True, False,\n", - " False, False, True, True, False, True, True, False, False, False,\n", - " False, True, True, True, True, True, True, False, True, True,\n", - " True, True, True, False, False, False, False, True, True, True,\n", - " True, True, True, True, True, False, True, True, True, False,\n", - " True, False, True, True, True, True, True, True, True, True,\n", - " True, True, False, False, False, True, True, True, False, False,\n", - " True, True, True, True, False, True, True, True, True, True,\n", - " True, True, False, True, True, False, True, False, False, True,\n", - " False, True, True, True, True, True, True, False, False, True,\n", - " True, True, False, True, False, False, True, True, True, True,\n", - " False, True, True, True, True, False, True, True, True, True,\n", - " True, True, True, True, True, True, False, True, True, True,\n", - " False, True, True, True, True, True, False, True, True, True,\n", - " True, True, True, True, True, True, False, True, True, True,\n", - " False, False, True, True, True, True, True, True, True, True,\n", - " False, True, True, True, True, False, True, False, True, False,\n", - " True, True, True, False, True, True, True, True, True, True,\n", - " True, True, True, True, True, True, True, True, False, True,\n", - " False, True, True, False, True, True, False, False, False, True,\n", - " True, True, True, False, True, True, True, True, True, True,\n", - " True, True, False, False, True, True, True, True, True, True,\n", - " True, True, True, True, False, True, True, True, True, False,\n", - " True, True, True, True, True, True, True, True, True, False,\n", - " True, True, True, True, False, False, True, True, True, False,\n", - " True, True, True, False, False, True, False, True, False, True,\n", - " True, True, True, True, True, True, True, False, True, False,\n", - " True, True, True, True, True, True, True, True, True, False,\n", - " False, True, True, False, True, True, True, True, True, True,\n", - " True, True, True, True, True, False, True, True, False, True,\n", - " False, False, True, True, True, True, False, True, True, False,\n", - " False, True, True, True, True, False, True, False, True, False])" - ] - }, - "execution_count": 261, - "metadata": {}, - "output_type": "execute_result" + "name": "stdout", + "output_type": "stream", + "text": [ + "tensor(0.0567)\n" + ] } ], "source": [ - "st_responsible.squeeze()" + "mask_intervened = (trace.nodes[\"__cause____antecedent_sally_throws\"][\"value\"] == 1) & (trace.nodes[\"__cause____antecedent_bill_throws\"][\"value\"] == 0)\n", + "print(torch.sum(torch.exp(log_weights) * mask_intervened.float().squeeze())/mask_intervened.float().sum())" ] }, { - "cell_type": "code", - "execution_count": 60, + "cell_type": "markdown", "metadata": {}, - "outputs": [], "source": [ - "query = SearchForExplanation(\n", - " supports=stones_supports,\n", - " antecedents={\"sally_throws\": torch.tensor(1.0), \"bill_throws\": torch.tensor(1.0)},\n", - " consequents={\"bottle_shatters\": torch.tensor(1.0)},\n", - " witnesses={\"sally_hits\": torch.tensor(0.0)},\n", - " alternatives={\"sally_throws\": torch.tensor(0.0), \"bill_throws\": torch.tensor(0.0)},\n", - " antecedent_bias=-0.5,\n", - " witness_bias=0.5,\n", - " consequent_scale=1e-5\n", - ")(condition(\n", - " data={\n", - " \"prob_sally_throws\": torch.tensor(1.0),\n", - " \"prob_bill_throws\": torch.tensor(0.0),\n", - " \"prob_sally_hits\": torch.tensor(1.0),\n", - " \"prob_bill_hits\": torch.tensor(0.0),\n", - " \"prob_bottle_shatters_if_sally\": torch.tensor(1.0),\n", - " \"prob_bottle_shatters_if_bill\": torch.tensor(1.0),\n", - " \"bottle_shatters\": torch.tensor(1.0),\n", - " }\n", - ")(stones_model))" + "We can also use the same model as above to compute the degree of responsibility for bill and sally as follows. We interpret the degree of responsbility asisgned to sally for bottle shattering as the probability that `sally_throws=1` is part of the cause." ] }, { "cell_type": "code", - "execution_count": 61, + "execution_count": 52, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor([[[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[False]]]]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[[[[ True]]]]]]]]]])\n", - "tensor([-2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", - " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", - " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05,\n", - " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", - " -2.0385e-05, -2.0385e-05, -2.0385e-05, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01,\n", - " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.0385e-05, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", - " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.0385e-05, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05,\n", - " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", - " -2.0385e-05, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.0385e-05, -2.0385e-05,\n", - " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", - " -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.0385e-05, -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.0385e-05,\n", - " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01,\n", - " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", - " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.0385e-05, -2.3024e+01,\n", - " -2.0385e-05, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05,\n", - " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", - " -2.0385e-05, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", - " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01,\n", - " -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", - " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", - " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.0385e-05, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01,\n", - " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.0385e-05, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.0385e-05,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.0385e-05, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.0385e-05, -2.3024e+01, -2.3024e+01,\n", - " -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01, -2.3024e+01])\n", - "tensor([False, True, True, False, True, True, False, True, False, True,\n", - " False, False, True, False, True, True, False, False, True, True,\n", - " True, True, True, False, True, True, True, True, True, False,\n", - " True, True, False, False, False, False, True, True, False, False,\n", - " False, False, False, False, True, True, False, True, True, True,\n", - " True, True, False, True, True, True, True, True, True, True,\n", - " False, False, False, False, True, True, False, False, False, True,\n", - " False, False, False, False, True, True, True, True, False, True,\n", - " False, False, True, False, False, False, False, False, False, False,\n", - " True, False, False, True, True, False, True, True, False, True,\n", - " False, True, True, True, False, False, False, False, True, True,\n", - " False, False, True, True, False, True, False, False, True, False,\n", - " False, False, False, True, True, True, False, False, False, True,\n", - " True, True, False, False, True, True, True, True, False, False,\n", - " True, True, False, False, False, False, True, True, False, True,\n", - " False, False, False, True, False, False, False, False, False, False,\n", - " True, True, False, False, False, True, True, False, True, True,\n", - " True, False, False, False, True, True, False, True, False, True,\n", - " False, True, True, False, True, True, True, False, True, True,\n", - " True, False, False, False, True, True, False, False, True, False,\n", - " False, False, False, True, False, True, False, False, False, False,\n", - " True, False, True, False, True, True, False, True, False, False,\n", - " True, True, True, False, True, True, False, True, True, True,\n", - " False, False, True, True, True, False, False, False, False, True,\n", - " False, True, True, False, True, False, True, False, False, True,\n", - " False, True, False, False, False, False, True, False, True, True,\n", - " True, True, True, False, True, False, True, False, False, False,\n", - " True, False, True, False, False, False, False, True, True, True,\n", - " False, True, False, False, True, False, True, True, True, True,\n", - " False, False, True, False, True, True, True, False, True, True,\n", - " True, False, False, False, True, False, False, True, False, True,\n", - " True, True, True, True, True, True, True, True, True, True,\n", - " False, True, False, True, True, False, True, True, False, False,\n", - " False, True, True, True, True, False, True, True, False, True,\n", - " False, False, True, False, True, False, True, True, False, False,\n", - " False, False, False, True, False, True, True, False, False, True,\n", - " True, True, False, True, True, True, True, False, True, False,\n", - " True, False, True, True, False, False, True, False, True, False,\n", - " True, True, True, False, False, False, False, False, True, True,\n", - " True, False, False, True, True, True, False, True, True, True,\n", - " True, True, True, True, True, True, True, False, True, False,\n", - " False, True, True, True, False, False, False, False, True, True,\n", - " True, True, False, True, True, True, True, True, False, True,\n", - " True, True, False, False, True, False, False, False, True, True,\n", - " False, False, True, False, False, False, True, False, True, False,\n", - " True, False, False, False, False, False, True, True, True, False,\n", - " True, True, False, False, True, False, False, True, False, False,\n", - " False, False, True, True, True, False, False, True, True, True,\n", - " False, False, True, False, True, False, False, False, True, True,\n", - " False, True, True, True, False, True, False, False, False, False,\n", - " True, False, True, False, True, True, True, False, True, True,\n", - " False, True, False, True, False, True, False, True, True, False,\n", - " False, True, False, True, True, True, True, False, False, True,\n", - " False, True, True, False, False, False, False, True, False, False,\n", - " False, False, True, True, True, True, True, False, False, True,\n", - " False, True, False, True, True, False, False, False, True, False,\n", - " False, False, False, False, True, True, True, False, False, False,\n", - " True, False, False, False, True, True, False, True, False, True,\n", - " False, True, True, False, True, False, False, False, True, True,\n", - " False, True, True, True, True, False, False, True, False, False,\n", - " True, False, True, True, True, False, False, True, True, True,\n", - " False, False, True, True, False, True, False, True, False, False,\n", - " True, True, True, False, False, False, True, False, True, True,\n", - " False, True, True, True, True, False, True, False, True, True,\n", - " True, True, False, False, True, False, False, False, False, False,\n", - " False, False, True, False, False, True, False, True, False, True,\n", - " True, False, False, False, True, True, False, True, False, False,\n", - " True, True, False, False, False, False, False, True, True, False,\n", - " False, True, True, True, False, False, False, False, True, False,\n", - " False, True, False, False, True, True, True, True, True, True,\n", - " False, False, True, True, True, False, True, False, True, False,\n", - " True, True, True, True, True, False, False, True, False, True,\n", - " False, True, True, True, False, False, True, False, True, False,\n", - " True, False, False, False, True, False, True, True, False, False,\n", - " True, False, True, False, True, True, True, True, True, True,\n", - " True, False, True, False, True, True, False, False, True, False,\n", - " True, True, False, True, False, True, True, False, True, True,\n", - " True, False, False, False, True, False, False, False, True, False,\n", - " True, False, False, False, True, False, True, True, True, False,\n", - " False, False, False, True, True, True, False, False, False, False,\n", - " True, False, True, True, False, False, False, True, True, True,\n", - " False, False, True, True, True, False, True, False, True, False,\n", - " True, True, True, True, True, True, False, False, False, False,\n", - " True, True, False, False, True, False, True, True, True, False,\n", - " False, False, True, True, True, False, True, True, True, False,\n", - " False, True, False, True, True, True, False, True, False, False,\n", - " False, True, False, False, True, False, False, True, False, False,\n", - " False, True, True, True, True, True, True, False, False, False,\n", - " True, True, True, True, False, False, False, True, False, False,\n", - " False, False, True, True, False, False, False, False, True, False,\n", - " False, True, True, True, False, True, False, True, False, False,\n", - " True, True, True, False, True, True, True, False, False, True,\n", - " False, False, True, False, False, True, False, False, True, True,\n", - " True, True, True, True, True, False, True, False, True, True,\n", - " True, False, True, True, False, True, False, True, True, True,\n", - " False, True, True, True, True, False, True, True, True, False,\n", - " False, True, False, True, True, True, False, False, True, False,\n", - " False, True, True, False, True, False, False, True, True, True,\n", - " True, False, False, False, False, False, False, True, True, False,\n", - " True, False, False, True, False, True, True, False, False, True])\n", - "tensor([0.0000e+00, 1.0014e-10, 9.9998e-01, 0.0000e+00, 1.0014e-10, 1.0014e-10,\n", - " 0.0000e+00, 1.0014e-10, 0.0000e+00, 1.0014e-10, 0.0000e+00, 0.0000e+00,\n", - " 1.0014e-10, 0.0000e+00, 1.0014e-10, 1.0014e-10, 0.0000e+00, 0.0000e+00,\n", - " 1.0014e-10, 1.0014e-10, 1.0014e-10, 1.0014e-10, 9.9998e-01, 0.0000e+00,\n", - " 1.0014e-10, 1.0014e-10, 9.9998e-01, 9.9998e-01, 1.0014e-10, 0.0000e+00,\n", - " 1.0014e-10, 1.0014e-10, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,\n", - " 1.0014e-10, 1.0014e-10, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,\n", - " 0.0000e+00, 0.0000e+00, 1.0014e-10, 1.0014e-10, 0.0000e+00, 1.0014e-10,\n", - " 1.0014e-10, 1.0014e-10, 1.0014e-10, 1.0014e-10, 0.0000e+00, 1.0014e-10,\n", - " 1.0014e-10, 1.0014e-10, 1.0014e-10, 1.0014e-10, 9.9998e-01, 1.0014e-10,\n", - " 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 1.0014e-10, 1.0014e-10,\n", - " 0.0000e+00, 0.0000e+00, 0.0000e+00, 9.9998e-01, 0.0000e+00, 0.0000e+00,\n", - " 0.0000e+00, 0.0000e+00, 1.0014e-10, 1.0014e-10, 1.0014e-10, 1.0014e-10,\n", - " 0.0000e+00, 1.0014e-10, 0.0000e+00, 0.0000e+00, 1.0014e-10, 0.0000e+00,\n", - " 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,\n", - " 1.0014e-10, 0.0000e+00, 0.0000e+00, 1.0014e-10, 1.0014e-10, 0.0000e+00,\n", - " 1.0014e-10, 1.0014e-10, 0.0000e+00, 1.0014e-10, 0.0000e+00, 1.0014e-10,\n", - " 1.0014e-10, 1.0014e-10, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,\n", - " 1.0014e-10, 1.0014e-10, 0.0000e+00, 0.0000e+00, 1.0014e-10, 9.9998e-01,\n", - " 0.0000e+00, 1.0014e-10, 0.0000e+00, 0.0000e+00, 1.0014e-10, 0.0000e+00,\n", - " 0.0000e+00, 0.0000e+00, 0.0000e+00, 1.0014e-10, 1.0014e-10, 1.0014e-10,\n", - " 0.0000e+00, 0.0000e+00, 0.0000e+00, 1.0014e-10, 1.0014e-10, 9.9998e-01,\n", - " 0.0000e+00, 0.0000e+00, 1.0014e-10, 1.0014e-10, 1.0014e-10, 1.0014e-10,\n", - " 0.0000e+00, 0.0000e+00, 1.0014e-10, 1.0014e-10, 0.0000e+00, 0.0000e+00,\n", - " 0.0000e+00, 0.0000e+00, 1.0014e-10, 9.9998e-01, 0.0000e+00, 1.0014e-10,\n", - " 0.0000e+00, 0.0000e+00, 0.0000e+00, 9.9998e-01, 0.0000e+00, 0.0000e+00,\n", - " 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 1.0014e-10, 1.0014e-10,\n", - " 0.0000e+00, 0.0000e+00, 0.0000e+00, 1.0014e-10, 1.0014e-10, 0.0000e+00,\n", - " 9.9998e-01, 9.9998e-01, 9.9998e-01, 0.0000e+00, 0.0000e+00, 0.0000e+00,\n", - " 9.9998e-01, 9.9998e-01, 0.0000e+00, 9.9998e-01, 0.0000e+00, 1.0014e-10,\n", - " 0.0000e+00, 1.0014e-10, 9.9998e-01, 0.0000e+00, 1.0014e-10, 9.9998e-01,\n", - " 1.0014e-10, 0.0000e+00, 1.0014e-10, 1.0014e-10, 1.0014e-10, 0.0000e+00,\n", - " 0.0000e+00, 0.0000e+00, 9.9998e-01, 1.0014e-10, 0.0000e+00, 0.0000e+00,\n", - " 9.9998e-01, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 1.0014e-10,\n", - " 0.0000e+00, 9.9998e-01, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,\n", - " 1.0014e-10, 0.0000e+00, 1.0014e-10, 0.0000e+00, 1.0014e-10, 1.0014e-10,\n", - " 0.0000e+00, 1.0014e-10, 0.0000e+00, 0.0000e+00, 1.0014e-10, 1.0014e-10,\n", - " 9.9998e-01, 0.0000e+00, 9.9998e-01, 1.0014e-10, 0.0000e+00, 1.0014e-10,\n", - " 1.0014e-10, 1.0014e-10, 0.0000e+00, 0.0000e+00, 9.9998e-01, 1.0014e-10,\n", - " 1.0014e-10, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 1.0014e-10,\n", - " 0.0000e+00, 1.0014e-10, 1.0014e-10, 0.0000e+00, 1.0014e-10, 0.0000e+00,\n", - " 1.0014e-10, 0.0000e+00, 0.0000e+00, 1.0014e-10, 0.0000e+00, 1.0014e-10,\n", - " 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 1.0014e-10, 0.0000e+00,\n", - " 9.9998e-01, 1.0014e-10, 1.0014e-10, 1.0014e-10, 1.0014e-10, 0.0000e+00,\n", - " 9.9998e-01, 0.0000e+00, 1.0014e-10, 0.0000e+00, 0.0000e+00, 0.0000e+00,\n", - " 1.0014e-10, 0.0000e+00, 1.0014e-10, 0.0000e+00, 0.0000e+00, 0.0000e+00,\n", - " 0.0000e+00, 1.0014e-10, 9.9998e-01, 9.9998e-01, 0.0000e+00, 1.0014e-10,\n", - " 0.0000e+00, 0.0000e+00, 1.0014e-10, 0.0000e+00, 1.0014e-10, 1.0014e-10,\n", - " 9.9998e-01, 1.0014e-10, 0.0000e+00, 0.0000e+00, 1.0014e-10, 0.0000e+00,\n", - " 1.0014e-10, 1.0014e-10, 1.0014e-10, 0.0000e+00, 9.9998e-01, 1.0014e-10,\n", - " 1.0014e-10, 0.0000e+00, 0.0000e+00, 0.0000e+00, 9.9998e-01, 0.0000e+00,\n", - " 0.0000e+00, 9.9998e-01, 0.0000e+00, 1.0014e-10, 1.0014e-10, 1.0014e-10,\n", - " 9.9998e-01, 1.0014e-10, 1.0014e-10, 1.0014e-10, 1.0014e-10, 1.0014e-10,\n", - " 1.0014e-10, 9.9998e-01, 0.0000e+00, 1.0014e-10, 0.0000e+00, 9.9998e-01,\n", - " 1.0014e-10, 0.0000e+00, 1.0014e-10, 1.0014e-10, 0.0000e+00, 0.0000e+00,\n", - " 0.0000e+00, 1.0014e-10, 1.0014e-10, 9.9998e-01, 1.0014e-10, 0.0000e+00,\n", - " 1.0014e-10, 1.0014e-10, 0.0000e+00, 9.9998e-01, 0.0000e+00, 0.0000e+00,\n", - " 1.0014e-10, 0.0000e+00, 9.9998e-01, 0.0000e+00, 1.0014e-10, 1.0014e-10,\n", - " 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 9.9998e-01,\n", - " 0.0000e+00, 1.0014e-10, 1.0014e-10, 0.0000e+00, 0.0000e+00, 1.0014e-10,\n", - " 1.0014e-10, 9.9998e-01, 0.0000e+00, 1.0014e-10, 1.0014e-10, 1.0014e-10,\n", - " 1.0014e-10, 0.0000e+00, 1.0014e-10, 0.0000e+00, 1.0014e-10, 0.0000e+00,\n", - " 9.9998e-01, 1.0014e-10, 0.0000e+00, 0.0000e+00, 1.0014e-10, 0.0000e+00,\n", - " 1.0014e-10, 0.0000e+00, 1.0014e-10, 1.0014e-10, 1.0014e-10, 0.0000e+00,\n", - " 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 1.0014e-10, 1.0014e-10,\n", - " 1.0014e-10, 0.0000e+00, 0.0000e+00, 9.9998e-01, 9.9998e-01, 1.0014e-10,\n", - " 0.0000e+00, 1.0014e-10, 9.9998e-01, 9.9998e-01, 1.0014e-10, 1.0014e-10,\n", - " 1.0014e-10, 1.0014e-10, 1.0014e-10, 9.9998e-01, 1.0014e-10, 0.0000e+00,\n", - " 9.9998e-01, 0.0000e+00, 0.0000e+00, 1.0014e-10, 1.0014e-10, 1.0014e-10,\n", - " 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 1.0014e-10, 1.0014e-10,\n", - " 1.0014e-10, 1.0014e-10, 0.0000e+00, 1.0014e-10, 1.0014e-10, 1.0014e-10,\n", - " 1.0014e-10, 9.9998e-01, 0.0000e+00, 1.0014e-10, 9.9998e-01, 1.0014e-10,\n", - " 0.0000e+00, 0.0000e+00, 1.0014e-10, 0.0000e+00, 0.0000e+00, 0.0000e+00,\n", - " 1.0014e-10, 9.9998e-01, 0.0000e+00, 0.0000e+00, 1.0014e-10, 0.0000e+00,\n", - " 0.0000e+00, 0.0000e+00, 9.9998e-01, 0.0000e+00, 9.9998e-01, 0.0000e+00,\n", - " 1.0014e-10, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,\n", - " 1.0014e-10, 1.0014e-10, 1.0014e-10, 0.0000e+00, 9.9998e-01, 9.9998e-01,\n", - " 0.0000e+00, 0.0000e+00, 1.0014e-10, 0.0000e+00, 0.0000e+00, 1.0014e-10,\n", - " 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 9.9998e-01, 9.9998e-01,\n", - " 1.0014e-10, 0.0000e+00, 0.0000e+00, 1.0014e-10, 1.0014e-10, 1.0014e-10,\n", - " 0.0000e+00, 0.0000e+00, 1.0014e-10, 0.0000e+00, 1.0014e-10, 0.0000e+00,\n", - " 0.0000e+00, 0.0000e+00, 9.9998e-01, 1.0014e-10, 0.0000e+00, 1.0014e-10,\n", - " 9.9998e-01, 1.0014e-10, 0.0000e+00, 1.0014e-10, 0.0000e+00, 0.0000e+00,\n", - " 0.0000e+00, 0.0000e+00, 9.9998e-01, 0.0000e+00, 1.0014e-10, 0.0000e+00,\n", - " 1.0014e-10, 1.0014e-10, 1.0014e-10, 0.0000e+00, 1.0014e-10, 1.0014e-10,\n", - " 0.0000e+00, 1.0014e-10, 0.0000e+00, 9.9998e-01, 0.0000e+00, 1.0014e-10,\n", - " 0.0000e+00, 1.0014e-10, 1.0014e-10, 0.0000e+00, 0.0000e+00, 1.0014e-10,\n", - " 0.0000e+00, 1.0014e-10, 1.0014e-10, 1.0014e-10, 1.0014e-10, 0.0000e+00,\n", - " 0.0000e+00, 1.0014e-10, 0.0000e+00, 1.0014e-10, 1.0014e-10, 0.0000e+00,\n", - " 0.0000e+00, 0.0000e+00, 0.0000e+00, 1.0014e-10, 0.0000e+00, 0.0000e+00,\n", - " 0.0000e+00, 0.0000e+00, 1.0014e-10, 1.0014e-10, 9.9998e-01, 9.9998e-01,\n", - " 1.0014e-10, 0.0000e+00, 0.0000e+00, 1.0014e-10, 0.0000e+00, 1.0014e-10,\n", - " 0.0000e+00, 1.0014e-10, 1.0014e-10, 0.0000e+00, 0.0000e+00, 0.0000e+00,\n", - " 1.0014e-10, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,\n", - " 1.0014e-10, 1.0014e-10, 1.0014e-10, 0.0000e+00, 0.0000e+00, 0.0000e+00,\n", - " 1.0014e-10, 0.0000e+00, 0.0000e+00, 0.0000e+00, 1.0014e-10, 1.0014e-10,\n", - " 0.0000e+00, 9.9998e-01, 0.0000e+00, 9.9998e-01, 0.0000e+00, 1.0014e-10,\n", - " 1.0014e-10, 0.0000e+00, 9.9998e-01, 0.0000e+00, 0.0000e+00, 0.0000e+00,\n", - " 9.9998e-01, 1.0014e-10, 0.0000e+00, 1.0014e-10, 9.9998e-01, 9.9998e-01,\n", - " 1.0014e-10, 0.0000e+00, 0.0000e+00, 1.0014e-10, 0.0000e+00, 0.0000e+00,\n", - " 1.0014e-10, 0.0000e+00, 9.9998e-01, 9.9998e-01, 1.0014e-10, 0.0000e+00,\n", - " 0.0000e+00, 9.9998e-01, 1.0014e-10, 1.0014e-10, 0.0000e+00, 0.0000e+00,\n", - " 1.0014e-10, 1.0014e-10, 0.0000e+00, 1.0014e-10, 0.0000e+00, 1.0014e-10,\n", - " 0.0000e+00, 0.0000e+00, 9.9998e-01, 9.9998e-01, 1.0014e-10, 0.0000e+00,\n", - " 0.0000e+00, 0.0000e+00, 9.9998e-01, 0.0000e+00, 1.0014e-10, 1.0014e-10,\n", - " 0.0000e+00, 1.0014e-10, 1.0014e-10, 1.0014e-10, 1.0014e-10, 0.0000e+00,\n", - " 1.0014e-10, 0.0000e+00, 1.0014e-10, 1.0014e-10, 9.9998e-01, 1.0014e-10,\n", - " 0.0000e+00, 0.0000e+00, 1.0014e-10, 0.0000e+00, 0.0000e+00, 0.0000e+00,\n", - " 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 9.9998e-01, 0.0000e+00,\n", - " 0.0000e+00, 1.0014e-10, 0.0000e+00, 1.0014e-10, 0.0000e+00, 1.0014e-10,\n", - " 1.0014e-10, 0.0000e+00, 0.0000e+00, 0.0000e+00, 9.9998e-01, 1.0014e-10,\n", - " 0.0000e+00, 1.0014e-10, 0.0000e+00, 0.0000e+00, 1.0014e-10, 9.9998e-01,\n", - " 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 9.9998e-01,\n", - " 1.0014e-10, 0.0000e+00, 0.0000e+00, 1.0014e-10, 1.0014e-10, 1.0014e-10,\n", - " 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 1.0014e-10, 0.0000e+00,\n", - " 0.0000e+00, 1.0014e-10, 0.0000e+00, 0.0000e+00, 1.0014e-10, 1.0014e-10,\n", - " 9.9998e-01, 1.0014e-10, 1.0014e-10, 9.9998e-01, 0.0000e+00, 0.0000e+00,\n", - " 9.9998e-01, 1.0014e-10, 9.9998e-01, 0.0000e+00, 1.0014e-10, 0.0000e+00,\n", - " 9.9998e-01, 0.0000e+00, 9.9998e-01, 1.0014e-10, 1.0014e-10, 1.0014e-10,\n", - " 1.0014e-10, 0.0000e+00, 0.0000e+00, 1.0014e-10, 0.0000e+00, 1.0014e-10,\n", - " 0.0000e+00, 1.0014e-10, 9.9998e-01, 1.0014e-10, 0.0000e+00, 0.0000e+00,\n", - " 1.0014e-10, 0.0000e+00, 1.0014e-10, 0.0000e+00, 1.0014e-10, 0.0000e+00,\n", - " 0.0000e+00, 0.0000e+00, 1.0014e-10, 0.0000e+00, 1.0014e-10, 9.9998e-01,\n", - " 0.0000e+00, 0.0000e+00, 1.0014e-10, 0.0000e+00, 9.9998e-01, 0.0000e+00,\n", - " 1.0014e-10, 9.9998e-01, 9.9998e-01, 1.0014e-10, 1.0014e-10, 9.9998e-01,\n", - " 9.9998e-01, 0.0000e+00, 1.0014e-10, 0.0000e+00, 1.0014e-10, 1.0014e-10,\n", - " 0.0000e+00, 0.0000e+00, 9.9998e-01, 0.0000e+00, 1.0014e-10, 1.0014e-10,\n", - " 0.0000e+00, 1.0014e-10, 0.0000e+00, 1.0014e-10, 9.9998e-01, 0.0000e+00,\n", - " 1.0014e-10, 1.0014e-10, 1.0014e-10, 0.0000e+00, 0.0000e+00, 0.0000e+00,\n", - " 1.0014e-10, 0.0000e+00, 0.0000e+00, 0.0000e+00, 1.0014e-10, 0.0000e+00,\n", - " 1.0014e-10, 0.0000e+00, 0.0000e+00, 0.0000e+00, 1.0014e-10, 0.0000e+00,\n", - " 1.0014e-10, 1.0014e-10, 1.0014e-10, 0.0000e+00, 0.0000e+00, 0.0000e+00,\n", - " 0.0000e+00, 9.9998e-01, 1.0014e-10, 1.0014e-10, 0.0000e+00, 0.0000e+00,\n", - " 0.0000e+00, 0.0000e+00, 1.0014e-10, 0.0000e+00, 1.0014e-10, 1.0014e-10,\n", - " 0.0000e+00, 0.0000e+00, 0.0000e+00, 1.0014e-10, 9.9998e-01, 9.9998e-01,\n", - " 0.0000e+00, 0.0000e+00, 1.0014e-10, 1.0014e-10, 1.0014e-10, 0.0000e+00,\n", - " 1.0014e-10, 0.0000e+00, 1.0014e-10, 0.0000e+00, 9.9998e-01, 1.0014e-10,\n", - " 1.0014e-10, 9.9998e-01, 1.0014e-10, 1.0014e-10, 0.0000e+00, 0.0000e+00,\n", - " 0.0000e+00, 0.0000e+00, 1.0014e-10, 9.9998e-01, 0.0000e+00, 0.0000e+00,\n", - " 1.0014e-10, 0.0000e+00, 1.0014e-10, 1.0014e-10, 1.0014e-10, 0.0000e+00,\n", - " 0.0000e+00, 0.0000e+00, 1.0014e-10, 9.9998e-01, 1.0014e-10, 0.0000e+00,\n", - " 1.0014e-10, 1.0014e-10, 1.0014e-10, 0.0000e+00, 0.0000e+00, 1.0014e-10,\n", - " 0.0000e+00, 1.0014e-10, 1.0014e-10, 1.0014e-10, 0.0000e+00, 1.0014e-10,\n", - " 0.0000e+00, 0.0000e+00, 0.0000e+00, 1.0014e-10, 0.0000e+00, 0.0000e+00,\n", - " 1.0014e-10, 0.0000e+00, 0.0000e+00, 1.0014e-10, 0.0000e+00, 0.0000e+00,\n", - " 0.0000e+00, 1.0014e-10, 1.0014e-10, 1.0014e-10, 1.0014e-10, 1.0014e-10,\n", - " 1.0014e-10, 0.0000e+00, 0.0000e+00, 0.0000e+00, 1.0014e-10, 9.9998e-01,\n", - " 1.0014e-10, 9.9998e-01, 0.0000e+00, 0.0000e+00, 0.0000e+00, 1.0014e-10,\n", - " 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 1.0014e-10, 1.0014e-10,\n", - " 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 1.0014e-10, 0.0000e+00,\n", - " 0.0000e+00, 1.0014e-10, 1.0014e-10, 1.0014e-10, 0.0000e+00, 1.0014e-10,\n", - " 0.0000e+00, 1.0014e-10, 0.0000e+00, 0.0000e+00, 9.9998e-01, 1.0014e-10,\n", - " 1.0014e-10, 0.0000e+00, 1.0014e-10, 1.0014e-10, 9.9998e-01, 0.0000e+00,\n", - " 0.0000e+00, 1.0014e-10, 0.0000e+00, 0.0000e+00, 9.9998e-01, 0.0000e+00,\n", - " 0.0000e+00, 1.0014e-10, 0.0000e+00, 0.0000e+00, 9.9998e-01, 1.0014e-10,\n", - " 1.0014e-10, 1.0014e-10, 9.9998e-01, 1.0014e-10, 1.0014e-10, 0.0000e+00,\n", - " 1.0014e-10, 0.0000e+00, 1.0014e-10, 9.9998e-01, 1.0014e-10, 0.0000e+00,\n", - " 9.9998e-01, 1.0014e-10, 0.0000e+00, 1.0014e-10, 0.0000e+00, 1.0014e-10,\n", - " 9.9998e-01, 1.0014e-10, 0.0000e+00, 9.9998e-01, 9.9998e-01, 1.0014e-10,\n", - " 1.0014e-10, 0.0000e+00, 1.0014e-10, 9.9998e-01, 1.0014e-10, 0.0000e+00,\n", - " 0.0000e+00, 9.9998e-01, 0.0000e+00, 1.0014e-10, 9.9998e-01, 1.0014e-10,\n", - " 0.0000e+00, 0.0000e+00, 1.0014e-10, 0.0000e+00, 0.0000e+00, 1.0014e-10,\n", - " 1.0014e-10, 0.0000e+00, 9.9998e-01, 0.0000e+00, 0.0000e+00, 1.0014e-10,\n", - " 1.0014e-10, 1.0014e-10, 1.0014e-10, 0.0000e+00, 0.0000e+00, 0.0000e+00,\n", - " 0.0000e+00, 0.0000e+00, 0.0000e+00, 9.9998e-01, 1.0014e-10, 0.0000e+00,\n", - " 1.0014e-10, 0.0000e+00, 0.0000e+00, 1.0014e-10, 0.0000e+00, 1.0014e-10,\n", - " 1.0014e-10, 0.0000e+00, 0.0000e+00, 1.0014e-10])\n", - "tensor(117.9976)\n" + "tensor(0.2683)\n" ] } ], "source": [ - "mask_intervened = (trace.nodes[\"__cause____antecedent_bill_throws\"][\"value\"] == 0)\n", - "log_weight_vector=logw\n", - "a = mask_intervened.float().sum()\n", - "print(mask_intervened)\n", - "# mask_intervened = mask_intervened.float()\n", - "# mask_intervened[mask_intervened == 0.0] = 9.2\n", - "# mask_intervened[mask_intervened == 1.0] = 1.0\n", - "print(log_weight_vector)\n", - "print(mask_intervened.squeeze())\n", - "print(torch.exp(log_weight_vector) * mask_intervened.squeeze())\n", - "\n", - "print(torch.sum(torch.exp(log_weight_vector) * mask_intervened.squeeze()))" + "mask_intervened = (trace.nodes[\"__cause____antecedent_sally_throws\"][\"value\"] == 0)\n", + "print(torch.sum(torch.exp(log_weights) * mask_intervened.float().squeeze())/mask_intervened.float().sum())" ] }, { "cell_type": "code", - "execution_count": 62, + "execution_count": 53, "metadata": {}, "outputs": [ { - "ename": "AttributeError", - "evalue": "'Trace' object has no attribute 'n'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[62], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[43mtrace\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mn\u001b[49m)\n\u001b[1;32m 2\u001b[0m \u001b[38;5;28mprint\u001b[39m(trace\u001b[38;5;241m.\u001b[39mnodes[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124msally_throws\u001b[39m\u001b[38;5;124m\"\u001b[39m][\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mvalue\u001b[39m\u001b[38;5;124m\"\u001b[39m][\u001b[38;5;241m2\u001b[39m]\u001b[38;5;241m.\u001b[39msqueeze())\n\u001b[1;32m 3\u001b[0m \u001b[38;5;28mprint\u001b[39m(trace\u001b[38;5;241m.\u001b[39mnodes[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mbottle_shatters\u001b[39m\u001b[38;5;124m\"\u001b[39m][\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mvalue\u001b[39m\u001b[38;5;124m\"\u001b[39m][\u001b[38;5;241m2\u001b[39m]\u001b[38;5;241m.\u001b[39msqueeze())\n", - "\u001b[0;31mAttributeError\u001b[0m: 'Trace' object has no attribute 'n'" + "name": "stdout", + "output_type": "stream", + "text": [ + "tensor(0.2004)\n" ] } ], "source": [ - "print(trace.n)\n", - "print(trace.nodes[\"sally_throws\"][\"value\"][2].squeeze())\n", - "print(trace.nodes[\"bottle_shatters\"][\"value\"][2].squeeze())\n", - "trace.nodes[\"__cause____consequent_bottle_shatters\"][\"log_prob\"][2]" + "mask_intervened = (trace.nodes[\"__cause____antecedent_bill_throws\"][\"value\"] == 0)\n", + "print(torch.sum(torch.exp(log_weights) * mask_intervened.float().squeeze())/mask_intervened.float().sum())" ] }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, { "cell_type": "markdown", "metadata": {}, "source": [ - "# References\n", - "\n", - "1. " + "Note that we assumed Sally to be more likely to throw, more likely to hit, and more likely to shatter the bottle if she hits. For this reason, we expect her to be more likely to be causally responsible for the outcome and that is the result we got. Conceptually, these estimates are impacted by some hyperparameters, such as witness preemption probabilities, so perhaps a bit more clarity on can be gained if we think we have a complete list of potential causes and normalize. " ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [] } ], "metadata": { diff --git a/docs/source/responsibility.ipynb b/docs/source/responsibility.ipynb index a203dbc4..5607419f 100644 --- a/docs/source/responsibility.ipynb +++ b/docs/source/responsibility.ipynb @@ -88,14 +88,14 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 30, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.4971)\n" + "tensor(0.1057)\n" ] } ], @@ -106,6 +106,7 @@ " consequents={\"C\": torch.tensor(1.0)},\n", " witnesses={},\n", " alternatives={\"A\": 0.0, \"B\": 0.0},\n", + " antecedent_bias=0.4,\n", " consequent_scale=1e-5,\n", ")(example)\n", "\n", @@ -115,14 +116,14 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 31, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.5016)\n" + "tensor(0.1077)\n" ] } ], From 58842f6cad7075a2ea85d8fb2ff3e3066008d309 Mon Sep 17 00:00:00 2001 From: rfl-urbaniak Date: Mon, 12 Aug 2024 19:02:29 -0400 Subject: [PATCH 29/53] small typos --- .../explainable_categorical_alternate.ipynb | 118 +++++++++++------- 1 file changed, 71 insertions(+), 47 deletions(-) diff --git a/docs/source/explainable_categorical_alternate.ipynb b/docs/source/explainable_categorical_alternate.ipynb index 52f944e3..e7469571 100644 --- a/docs/source/explainable_categorical_alternate.ipynb +++ b/docs/source/explainable_categorical_alternate.ipynb @@ -65,7 +65,7 @@ "- A major philosophical position in the analysis of causality is that the definition of causal dependence should be formulated in terms of counterfactual conditionals (Lewis, 1973. “Causation”, Journal of Philosophy, 70: 556–67). On this approach, $e$ causally depends on $c$ if and only if, if $c$ were not to occur $e$ would not occur. (The view does not remain uncontested, see the [SEP entry on counterfactual theories of causation](https://plato.stanford.edu/entries/causation-counterfactual/)).\n", "- At least a few major approaches to explainable AI (such as [LIME](https://arxiv.org/abs/1602.04938), or [Shapley values](https://papers.nips.cc/paper_files/paper/2017/hash/8a20a8621978632d76c43dfd28b67767-Abstract.html)) are based on the idea that explanations can be obtained by perturbing or shifting the input values and observing the changes in the output. This to a large extent can be thought of as a way of evaluating the but-for condition: if the input value was different, would the output value change? \n", " \n", - "More generally, we can ask about the probability with which an alterantive intervention would lead to a cahnge in the outcome (perhaps while conditioning on other items of information), in line with the ideas present in Pearl's *Probabilities of causation...* and Chapter 9 of Pearl's *Causality*. While immensely useful, the but-for condition is not fine-grained enough to answer all the questions we are interested in or to give us the intended answers in cases in which the underlying causal model is non-trivial. We will illustrate this observation in this tutorial. \n", + "More generally, we can ask about the probability with which an alterantive intervention would lead to a change in the outcome (perhaps while conditioning on other items of information), in line with the ideas present in Pearl's *Probabilities of causation...* and Chapter 9 of Pearl's *Causality*. While immensely useful, the but-for condition is not fine-grained enough to answer all the questions we are interested in or to give us the intended answers in cases in which the underlying causal model is non-trivial. We will illustrate this observation in this tutorial. \n", "\n", "\n", "On the other hand, we can ask whether given our model (and perhaps conditioning on other pieces of information we posses), intervening on a given candidate cause to have a given value results in the outcome being as observed (or, more generally, the probability of that outcome being as observed) - this is conceptually similar to Pearl's probability of sufficiency. \n", @@ -82,7 +82,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 1, "metadata": {}, "outputs": [ { @@ -116,12 +116,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We first setup the essentials for performing probabilistic inference on the transformed causal models. We have a function for performing importance sampling on a model and few other utility functions." + "We first setup the essentials for performing probabilistic inference on the transformed causal models. We have a function for performing importance sampling on a model and a few other utility functions." ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -179,73 +179,97 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 4, "metadata": {}, "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'u_match_dropped': Boolean(), 'match_dropped': IndependentConstraint(Real(), 0), 'u_lightning': Boolean(), 'lightning': IndependentConstraint(Real(), 0), 'smile': Boolean(), 'forest_fire': IndependentConstraint(Real(), 0)}\n" - ] - }, { "data": { "image/svg+xml": [ "\n", "\n", - "\n", - "\n", - "\n", - "\n", - "\n", + "\n", + "\n", + "\n", + "%3\n", + "\n", "\n", "\n", "u_match_dropped\n", - "\n", - "u_match_dropped\n", + "\n", + "u_match_dropped\n", "\n", "\n", "\n", "match_dropped\n", - "\n", - "match_dropped\n", + "\n", + "match_dropped\n", + "\n", + "\n", + "\n", + "u_match_dropped->match_dropped\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "forest_fire\n", + "\n", + "forest_fire\n", + "\n", + "\n", + "\n", + "u_match_dropped->forest_fire\n", + "\n", + "\n", "\n", "\n", "\n", "u_lightning\n", - "\n", - "u_lightning\n", + "\n", + "u_lightning\n", "\n", "\n", "\n", "lightning\n", - "\n", - "lightning\n", + "\n", + "lightning\n", + "\n", + "\n", + "\n", + "u_lightning->lightning\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "u_lightning->forest_fire\n", + "\n", + "\n", "\n", "\n", "\n", "smile\n", - "\n", - "smile\n", + "\n", + "smile\n", "\n", - "\n", - "\n", - "forest_fire\n", - "\n", - "forest_fire\n", + "\n", + "\n", + "smile->forest_fire\n", + "\n", + "\n", "\n", "\n", "\n" ], "text/plain": [ - "" + "" ] }, - "execution_count": 20, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -300,7 +324,7 @@ "\n", "The `SearchForExplanation` handler then takes these arguments and transforms the original model into another model in which interventions on antecedents and witnesses are applied stochastically. Once the antecedents `A` and witnesses `W` are chosen, parallel counterfactual worlds are created to condition on `A` being sufficient and necessary causes for the consequent with the context `W`.\n", "\n", - "And now, we are ready to use `SearchForExplanation` for answering but-for causal questions." + "Now we are ready to use `SearchForExplanation` for answering but-for causal questions." ] }, { @@ -316,14 +340,14 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.2947)\n" + "tensor(0.2959)\n" ] } ], @@ -372,12 +396,12 @@ "source": [ "**Causal Query 2** Is a Chirho developer smiling a cause of forest fire?\n", "\n", - "The intuitive answer is obviously no and we show that the same conclusion can be drawn using `SearchForExplanation` handler." + "The intuitive answer is obviously no, and we show that the same conclusion can be drawn using `SearchForExplanation`." ] }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -393,7 +417,7 @@ " supports=forest_fire_supports,\n", " antecedents={\"smile\": torch.tensor(1.0)},\n", " consequents={\"forest_fire\": torch.tensor(1.0)},\n", - " witnesses={}, # potential context elements, we leave them empty for now\n", + " witnesses={}, \n", " alternatives={\"smile\": torch.tensor(0.0)},\n", " consequent_scale=1e-5,\n", ")(forest_fire_model)\n", @@ -424,19 +448,19 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "A similar estimation as above would not work in case of overdetermination where one of the two factors are enough to cause the outcome. Consider the case where both `match_dropped` and `lightning` did occur. In this case, if we try to determine the causal role of `match_dropped`, it would come out to be zero. And a symmetric reasoning works for lightning as well. This results in $P(f'_{m'}, f_m, m, l) = P(f'_{l'}, f_l, m, l)=0$. This is a canonical example that shows the limitations of but-for analysis." + "A similar estimation as above would not work in a case of overdetermination, in which each of the two factors can alone cause the outcome. Consider the case where both `match_dropped` and `lightning` did occur. In this case, if we try to determine the causal role of `match_dropped`, it would come out to be zero. And a symmetric reasoning works for lightning as well. This results in $P(f'_{m'}, f_m, m, l) = P(f'_{l'}, f_l, m, l)=0$. This is a canonical example that shows the limitations of the but-for analysis." ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(2.8025e-06)\n" + "tensor(2.7596e-06)\n" ] } ], @@ -445,7 +469,7 @@ " supports=forest_fire_supports,\n", " antecedents={\"match_dropped\": torch.tensor(1.0)},\n", " consequents={\"forest_fire\": torch.tensor(1.0)},\n", - " witnesses={}, # potential context elements, we leave them empty for now\n", + " witnesses={}, \n", " alternatives={\"match_dropped\": torch.tensor(0.0)},\n", " consequent_scale=1e-5,\n", ")(\n", @@ -543,9 +567,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "As the previous example showed, but-for analysis is not sufficient for our analysis. It induces the need to pay attention to membership of variables in larger antecedent sets that would make a difference (that is one reason why we need stochasticity in antecedent candidate preemption: to search for such sets).\n", + "As the previous example showed, the but-for analysis is not sufficient for identifying causal roles. This induces the need to pay attention to the membership of variables in larger antecedent sets that would make a difference (that is one reason why we need stochasticity in the antecedent candidate preemption: to search for such sets).\n", "\n", - "But even then, the but-for analysis does not pay sufficient attention to the granularity of a given problem and its causal structure. There are asymmetric cases where the efficiency of one cause prevents the efficiency of another, in which our causal attributions should also be asymmetric, but \"being a member of the same larger antecedent set\" isn't.\n", + "But even then, the but-for analysis does not pay sufficient attention to the granularity of a given problem and its causal structure. There are asymmetric cases where the efficiency of one cause prevents the efficiency of another, in which our causal attributions should a be asymmetric, but \"being a member of the same larger antecedent set\" isn't.\n", "\n", "A simple example is breaking a bottle. Suppose Sally and Bob throw a rock at a bottle, and Sally does so a little earlier than Bob. Suppose both are perfectly accurate, and the bottle shatters when hit. Sally hits, and the bottle shatters, but Bob doesn't hit it because the bottle is no longer there. " ] From 9ee306892ec5a49fb7bec556bbfb603f80142cbb Mon Sep 17 00:00:00 2001 From: PoorvaGarg Date: Tue, 13 Aug 2024 13:51:33 -0400 Subject: [PATCH 30/53] small changes --- .../explainable_categorical_alternate.ipynb | 56 ++++++++++--------- 1 file changed, 30 insertions(+), 26 deletions(-) diff --git a/docs/source/explainable_categorical_alternate.ipynb b/docs/source/explainable_categorical_alternate.ipynb index 52f944e3..bb553c23 100644 --- a/docs/source/explainable_categorical_alternate.ipynb +++ b/docs/source/explainable_categorical_alternate.ipynb @@ -41,13 +41,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Overview" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ + "# Motivation\n", + "\n", "Consider the following causality-related queries:\n", "\n", "- **Friendly Fire:** On March 24, 2002, A B-52 bomber fired a Joint Direct Attack Munition at a US battalion command post, killing three and injuring twenty special forces soldiers. Out of multiple potential contributing factors, which were actually responsible for the incident?\n", @@ -56,21 +51,7 @@ "\n", "- **Explainable AI:** Your pre-trial release has been refused based on your [COMPAS score](https://en.wikipedia.org/wiki/COMPAS_(software)). The decision was made using a proprietary predictive model. All you have access to is the questionnaire that was used, and perhaps some demographic information about a class of human beings subjected to this evaluation. But which of these factors resulted in your score being what it is, and what were their contributions?\n", "\n", - "\n", - "Questions of this sort are more local than those pertaining to average treatment effects, as they pertain to actual cases that come with their own contexts. Being able to answer them is useful for understanding how we can prevent undesirable outcomes similar to ones that we have observed, or promote the occurrence of desirable outcomes in contexts similar to the ones in which they had been observed. These context-sensitive causality questions are also an essential element of blame and responsibility assignments. If the phenomenon we're trying to explain is the behavior of a predictive model, we are dealing with a problem in explainable AI; but the underlying intuition behind the workings of **Explainable Reasoning with ChiRho** is that causally explaining the behavior of an opaque model is not that much different from providing a causal explanation of other real-world phenomena: we need to address such queries in a principled manner employing some approximate but hopefully reliable causal model of how things work (be that events outside of computers, or a predicitive model's behavior). **Explainable Reasoning with ChiRho** package aims to provide a unified general approach to the relevant causal explanation computations.\n", - "\n", - "At some level of generality, a useful point of departure is a general counterfactual one. On one hand, we can ask whether the event would have occurred had a given candidate cause not taken place. This is sometimes called the *but-for test*, has a tradition of being used as a tool for answering causality and attribution queries. \n", - "\n", - "- It is often used in [the law of torts](https://plato.stanford.edu/entries/causation-law/) to determine if a defendant's conduct was the cause of a particular harm. The test is often formulated as follows: \"But for the defendant's conduct, would the harm have occurred?\" \n", - "- A major philosophical position in the analysis of causality is that the definition of causal dependence should be formulated in terms of counterfactual conditionals (Lewis, 1973. “Causation”, Journal of Philosophy, 70: 556–67). On this approach, $e$ causally depends on $c$ if and only if, if $c$ were not to occur $e$ would not occur. (The view does not remain uncontested, see the [SEP entry on counterfactual theories of causation](https://plato.stanford.edu/entries/causation-counterfactual/)).\n", - "- At least a few major approaches to explainable AI (such as [LIME](https://arxiv.org/abs/1602.04938), or [Shapley values](https://papers.nips.cc/paper_files/paper/2017/hash/8a20a8621978632d76c43dfd28b67767-Abstract.html)) are based on the idea that explanations can be obtained by perturbing or shifting the input values and observing the changes in the output. This to a large extent can be thought of as a way of evaluating the but-for condition: if the input value was different, would the output value change? \n", - " \n", - "More generally, we can ask about the probability with which an alterantive intervention would lead to a cahnge in the outcome (perhaps while conditioning on other items of information), in line with the ideas present in Pearl's *Probabilities of causation...* and Chapter 9 of Pearl's *Causality*. While immensely useful, the but-for condition is not fine-grained enough to answer all the questions we are interested in or to give us the intended answers in cases in which the underlying causal model is non-trivial. We will illustrate this observation in this tutorial. \n", - "\n", - "\n", - "On the other hand, we can ask whether given our model (and perhaps conditioning on other pieces of information we posses), intervening on a given candidate cause to have a given value results in the outcome being as observed (or, more generally, the probability of that outcome being as observed) - this is conceptually similar to Pearl's probability of sufficiency. \n", - "\n", - "We will start with these two approaches, but soon we will notice that often our explanatory questions are more local and a more fine-grained tool is needed. The general intuition (inspired by Halpern's *Actual Causality*) that we implemented is that when we ask local explanatory questions, we need to keep some part of the actual context fixed and consider alternative scenarios insofar as potential causes are involved. That is, we (i) search through possible alternative interventions that could be performed on the candidate cause nodes, (ii) search through possible context nodes that are to be intervened to be at their factual values even in the counterfactual worlds, (iii) see how these options play out in intervened worlds, and (iv) investigate and meaningfully summarize what happens with the outcome nodes of interest in all those counterfactual worlds. " + "Questions of this sort are more specific and local as they pertain to actual cases that come with their own contexts, unlike average treatment effects discussed in an earlier [tutorial](https://github.com/BasisResearch/chirho/blob/master/docs/source/tutorial_i.ipynb). Being able to answer such context-sensitive questions is useful for understanding how we can prevent undesirable outcomes similar to ones that we have observed, or promote the occurrence of desirable outcomes in contexts similar to the ones in which they had been observed. Moreover, these context-sensitive causality questions are also an essential element of blame and responsibility assignments. " ] }, { @@ -156,6 +137,7 @@ "\n", " return _wrapped_model\n", "\n", + "# The following functions are needed for conditioning on random variables defined using pyro.deterministic\n", "def _soft_eq(v1: torch.Tensor, v2: torch.Tensor) -> torch.Tensor:\n", " return soft_eq(constraints.boolean, v1, v2, scale=0.001)\n", "\n", @@ -298,7 +280,7 @@ "4. the elements of the current context (`witnesses`), and \n", "5. the `consequents` of interest $Y=y$. \n", "\n", - "The `SearchForExplanation` handler then takes these arguments and transforms the original model into another model in which interventions on antecedents and witnesses are applied stochastically. Once the antecedents `A` and witnesses `W` are chosen, parallel counterfactual worlds are created to condition on `A` being sufficient and necessary causes for the consequent with the context `W`.\n", + "The `SearchForExplanation` handler then takes these arguments and transforms the original model into another model in which interventions on antecedents and witnesses are applied stochastically. Once the antecedents $A \\subseteq$ `antecedents` and witnesses $W \\subseteq$ `witnesses` are chosen via sampling, parallel counterfactual worlds are created to condition on `A` being sufficient and necessary causes for the consequent with the context `W`. For more details on `SearchForExplanation`, please refer to the [documentation](https://basisresearch.github.io/chirho/explainable.html#chirho.explainable.handlers.explanation.SearchForExplanation).\n", "\n", "And now, we are ready to use `SearchForExplanation` for answering but-for causal questions." ] @@ -307,11 +289,11 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "**Causal Query 1** Is dropping a match a cause of forest fire?\n", + "**Causal Query 1** What is the probability that dropping a match has a causal role over forest fire?\n", "\n", "To answer the above question, we compute the probability of both forest fire not occurring if we intervene on the match to not be dropped, and forest fire occurring if we intervene on the match to be dropped. i.e. $P(f'_{m'}, f_m)$. this computation can be carried out using `SearchForExplanation`.\n", "\n", - "The potential cause (`antecedent`) we're considering is `match_dropped=1`, we contrast it with what would happen if we intervened on it to not happen (`alternatives`). We are interested in whether an outcome variable `forest_fire` (`consequent`) has value 1 under these two interventions. " + "The potential cause (`antecedent`) we're considering is `match_dropped=1`, we contrast it with what would happen if we intervened on it to not happen (`alternatives`). We are interested in whether an outcome variable `forest_fire` (`consequent`) has value 1 under these two interventions. Note that these two inteventions correspond to `match_dropped=1` being a sufficient and necessary cause for `forest_fire=1`. These notions have a correspondence to Pearl's notion of probability of necessity and sufficiency in this simple model. But we later extend these notions to be context-sensitive." ] }, { @@ -370,7 +352,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "**Causal Query 2** Is a Chirho developer smiling a cause of forest fire?\n", + "**Causal Query 2** What is the probability that a Chirho developer has a causal role over forest fire?\n", "\n", "The intuitive answer is obviously no and we show that the same conclusion can be drawn using `SearchForExplanation` handler." ] @@ -1078,6 +1060,28 @@ "source": [ "Note that we assumed Sally to be more likely to throw, more likely to hit, and more likely to shatter the bottle if she hits. For this reason, we expect her to be more likely to be causally responsible for the outcome and that is the result we got. Conceptually, these estimates are impacted by some hyperparameters, such as witness preemption probabilities, so perhaps a bit more clarity on can be gained if we think we have a complete list of potential causes and normalize. " ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Discussion\n", + "\n", + "If the phenomenon we're trying to explain is the behavior of a predictive model, we are dealing with a problem in explainable AI; but the underlying intuition behind the workings of **Explainable Reasoning with ChiRho** is that causally explaining the behavior of an opaque model is not that much different from providing a causal explanation of other real-world phenomena: we need to address such queries in a principled manner employing some approximate but hopefully reliable causal model of how things work (be that events outside of computers, or a predicitive model's behavior). **Explainable Reasoning with ChiRho** package aims to provide a unified general approach to the relevant causal explanation computations.\n", + "\n", + "At some level of generality, a useful point of departure is a general counterfactual one. On one hand, we can ask whether the event would have occurred had a given candidate cause not taken place. This is sometimes called the *but-for test*, has a tradition of being used as a tool for answering causality and attribution queries. \n", + "\n", + "- It is often used in [the law of torts](https://plato.stanford.edu/entries/causation-law/) to determine if a defendant's conduct was the cause of a particular harm. The test is often formulated as follows: \"But for the defendant's conduct, would the harm have occurred?\" \n", + "- A major philosophical position in the analysis of causality is that the definition of causal dependence should be formulated in terms of counterfactual conditionals (Lewis, 1973. “Causation”, Journal of Philosophy, 70: 556–67). On this approach, $e$ causally depends on $c$ if and only if, if $c$ were not to occur $e$ would not occur. (The view does not remain uncontested, see the [SEP entry on counterfactual theories of causation](https://plato.stanford.edu/entries/causation-counterfactual/)).\n", + "- At least a few major approaches to explainable AI (such as [LIME](https://arxiv.org/abs/1602.04938), or [Shapley values](https://papers.nips.cc/paper_files/paper/2017/hash/8a20a8621978632d76c43dfd28b67767-Abstract.html)) are based on the idea that explanations can be obtained by perturbing or shifting the input values and observing the changes in the output. This to a large extent can be thought of as a way of evaluating the but-for condition: if the input value was different, would the output value change? \n", + " \n", + "More generally, we can ask about the probability with which an alterantive intervention would lead to a change in the outcome (perhaps while conditioning on other items of information), in line with the ideas present in Pearl's *Probabilities of causation...* and Chapter 9 of Pearl's *Causality*. While immensely useful, the but-for condition is not fine-grained enough to answer all the questions we are interested in or to give us the intended answers in cases in which the underlying causal model is non-trivial. We will illustrate this observation in this tutorial. \n", + "\n", + "\n", + "On the other hand, we can ask whether given our model (and perhaps conditioning on other pieces of information we posses), intervening on a given candidate cause to have a given value results in the outcome being as observed (or, more generally, the probability of that outcome being as observed) - this is conceptually similar to Pearl's probability of sufficiency. \n", + "\n", + "We will start with these two approaches, but soon we will notice that often our explanatory questions are more local and a more fine-grained tool is needed. The general intuition (inspired by Halpern's *Actual Causality*) that we implemented is that when we ask local explanatory questions, we need to keep some part of the actual context fixed and consider alternative scenarios insofar as potential causes are involved. That is, we (i) search through possible alternative interventions that could be performed on the candidate cause nodes, (ii) search through possible context nodes that are to be intervened to be at their factual values even in the counterfactual worlds, (iii) see how these options play out in intervened worlds, and (iv) investigate and meaningfully summarize what happens with the outcome nodes of interest in all those counterfactual worlds. " + ] } ], "metadata": { From 55f1782773b296e37fde2943d68f2c378c592511 Mon Sep 17 00:00:00 2001 From: PoorvaGarg Date: Tue, 13 Aug 2024 16:02:31 -0400 Subject: [PATCH 31/53] improved readability --- .../explainable_categorical_alternate.ipynb | 165 ++++++++++++------ 1 file changed, 113 insertions(+), 52 deletions(-) diff --git a/docs/source/explainable_categorical_alternate.ipynb b/docs/source/explainable_categorical_alternate.ipynb index 7c4aa9c2..a0c22e40 100644 --- a/docs/source/explainable_categorical_alternate.ipynb +++ b/docs/source/explainable_categorical_alternate.ipynb @@ -26,7 +26,7 @@ "source": [ "**Outline**\n", "\n", - "[Overview](#overview)\n", + "[Motivation](#motivation)\n", "\n", "[Setup](#setup)\n", "\n", @@ -34,7 +34,9 @@ "\n", "[Context-sensitive Causal Explanations](#witness-nodes-and-context-sensitivity)\n", "\n", - "[Probability of causation and responsibility](#probability-of-causation-and-responsibility)" + "[Probability of causation and responsibility](#probability-of-causation-and-responsibility)\n", + "\n", + "[Further Discussion](#further-discussion)" ] }, { @@ -51,7 +53,9 @@ "\n", "- **Explainable AI:** Your pre-trial release has been refused based on your [COMPAS score](https://en.wikipedia.org/wiki/COMPAS_(software)). The decision was made using a proprietary predictive model. All you have access to is the questionnaire that was used, and perhaps some demographic information about a class of human beings subjected to this evaluation. But which of these factors resulted in your score being what it is, and what were their contributions?\n", "\n", - "Questions of this sort are more specific and local as they pertain to actual cases that come with their own contexts, unlike average treatment effects discussed in an earlier [tutorial](https://github.com/BasisResearch/chirho/blob/master/docs/source/tutorial_i.ipynb). Being able to answer such context-sensitive questions is useful for understanding how we can prevent undesirable outcomes similar to ones that we have observed, or promote the occurrence of desirable outcomes in contexts similar to the ones in which they had been observed. Moreover, these context-sensitive causality questions are also an essential element of blame and responsibility assignments. " + "Questions of this sort are more specific and local as they pertain to actual cases that come with their own contexts, unlike average treatment effects discussed in an earlier [tutorial](https://github.com/BasisResearch/chirho/blob/master/docs/source/tutorial_i.ipynb). Being able to answer such context-sensitive questions is useful for understanding how we can prevent undesirable outcomes similar to ones that we have observed, or promote the occurrence of desirable outcomes in contexts similar to the ones in which they had been observed. Moreover, these context-sensitive causality questions are also an essential element of blame and responsibility assignments. \n", + "\n", + "In this notebook, we demonstrate the use of `SearchForExplanation` that provides a unified approach to answer such questions on all levels of granularity." ] }, { @@ -317,7 +321,7 @@ "\n", "To answer the above question, we compute the probability of both forest fire not occurring if we intervene on the match to not be dropped, and forest fire occurring if we intervene on the match to be dropped. i.e. $P(f'_{m'}, f_m)$. this computation can be carried out using `SearchForExplanation`.\n", "\n", - "The potential cause (`antecedent`) we're considering is `match_dropped=1`, we contrast it with what would happen if we intervened on it to not happen (`alternatives`). We are interested in whether an outcome variable `forest_fire` (`consequent`) has value 1 under these two interventions. Note that these two inteventions correspond to `match_dropped=1` being a sufficient and necessary cause for `forest_fire=1`. These notions have a correspondence to Pearl's notion of probability of necessity and sufficiency in this simple model. But we later extend these notions to be context-sensitive." + "The potential cause (`antecedent`) we're considering is `match_dropped=1`, we contrast it with what would happen if we intervened on it to not happen (`alternatives`). We are interested in whether an outcome variable `forest_fire` (`consequent`) has value 1 under these two interventions. Note that these two inteventions correspond to `match_dropped=1` being a sufficient and necessary cause for `forest_fire=1`. These notions have a correspondence to Pearl's notion of probability of necessity and sufficiency in this simple model. But we later extend these notions to be context-sensitive as well." ] }, { @@ -351,7 +355,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "To answer our causal query, it is enough that the probability above is greater than 0 --- dropping match does have a causal effect on forest fire. But this is not exactly $P(f'_{m'}, f_m)$. Remember that interventions on antecedents are chosen stochastically which induces need for post-processing the samples." + "It might seem that we have our answer but that is not the case. Remember that interventions on antecedents are chosen stochastically. This induces a need to post-process the samples to only allow those samples where `match_dropped` was intervened on. Thus, to compute $P(f'_{m'}, f_m)$, we run the following code." ] }, { @@ -372,13 +376,20 @@ "print(torch.sum(torch.exp(log_weights) * mask_intervened.squeeze())/torch.sum(mask_intervened.float()))" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note that the result above matches our intuition. `match_dropped` has a causal effect on `forest_fire` only when `lightning` is not there and the corresponding probability is $0.6$" + ] + }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Causal Query 2** What is the probability that a Chirho developer has a causal role over forest fire?\n", "\n", - "The intuitive answer is obviously no, and we show that the same conclusion can be drawn using `SearchForExplanation`." + "The intuitive answer is obviously zero, and we show that the same conclusion can be drawn using `SearchForExplanation`." ] }, { @@ -408,6 +419,13 @@ "print(torch.exp(logp))" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The above probability is already 0, and the following post-processing does not affect the result. We still provide the following code snippet for the sake of completeness." + ] + }, { "cell_type": "code", "execution_count": 26, @@ -430,7 +448,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "A similar estimation as above would not work in a case of overdetermination, in which each of the two factors can alone cause the outcome. Consider the case where both `match_dropped` and `lightning` did occur. In this case, if we try to determine the causal role of `match_dropped`, it would come out to be zero. And a symmetric reasoning works for lightning as well. This results in $P(f'_{m'}, f_m, m, l) = P(f'_{l'}, f_l, m, l)=0$. This is a canonical example that shows the limitations of the but-for analysis." + "The examples above show how `SearchForExplanation` can be used for but-for analysis but such analysis would not work in a case of overdetermination, where each of the two factors can alone cause the outcome. Consider the case where both `match_dropped` and `lightning` did occur. In this case, if we try to determine the causal role of `match_dropped`, it would come out to be zero. And a symmetric reasoning works for lightning as well. This results in $P(f'_{m'}, f_m, m, l) = P(f'_{l'}, f_l, m, l)=0$. This is a canonical example that shows the limitations of the but-for analysis." ] }, { @@ -454,7 +472,7 @@ " witnesses={}, \n", " alternatives={\"match_dropped\": torch.tensor(0.0)},\n", " consequent_scale=1e-5,\n", - ")(\n", + ")( # We need to reparametrize as we are conditioning on deterministic nodes\n", " pyro.poutine.reparam(config=reparam_config([\"match_dropped\", \"lightning\"]))(\n", " condition(data={\"match_dropped\": torch.tensor(1.0), \"lightning\": torch.tensor(1.0)})\n", " (forest_fire_model)\n", @@ -486,19 +504,19 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "But if we consider both `match_dropped` and `lightning` to be possible causes, we can estimate $P(f'_{m',l'}, f_{m,l}, m, l)$ to determine their causal role that comes out to be greater than 0." + "But if we consider both `match_dropped` and `lightning` to be possible causes, we can estimate $P(f'_{m',l'}, f_{m,l}, m, l)$ to determine their causal role that comes out to be greater than 0 as follows." ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 129, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.0682)\n" + "tensor(0.0719)\n" ] } ], @@ -538,6 +556,13 @@ "print(torch.sum(torch.exp(log_weights) * mask_intervened.squeeze())/torch.sum(mask_intervened.float()))" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The probability above again matches our intuition since the probability of `match_dropped=1` and `lightning=1` is $0.28$ where the set $\\{m, l\\}$ is a cause. Now, we move to context-sensitive causal explanations." + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -549,16 +574,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "As the previous example showed, the but-for analysis is not sufficient for identifying causal roles. This induces the need to pay attention to the membership of variables in larger antecedent sets that would make a difference (that is one reason why we need stochasticity in the antecedent candidate preemption: to search for such sets).\n", + "As the previous example showed, the but-for analysis is not sufficient for identifying causal roles. This induces the need to pay attention to the membership of variables in larger antecedent sets that would make a difference (that is one reason why we need stochasticity in the antecedent candidate preemption: to search for such sets). But even then, the but-for analysis does not pay sufficient attention to the granularity of a given problem and its causal structure. There are asymmetric cases where the efficiency of one cause prevents the efficiency of another, in which our causal attributions should a be asymmetric, but \"being a member of the same larger antecedent set\" isn't. We illustrate using a simple example.\n", "\n", - "But even then, the but-for analysis does not pay sufficient attention to the granularity of a given problem and its causal structure. There are asymmetric cases where the efficiency of one cause prevents the efficiency of another, in which our causal attributions should a be asymmetric, but \"being a member of the same larger antecedent set\" isn't.\n", - "\n", - "A simple example is breaking a bottle. Suppose Sally and Bob throw a rock at a bottle, and Sally does so a little earlier than Bob. Suppose both are perfectly accurate, and the bottle shatters when hit. Sally hits, and the bottle shatters, but Bob doesn't hit it because the bottle is no longer there. " + "Consider the example of breaking a bottle. Suppose Sally and Bob throw a rock at a bottle, and Sally does so a little earlier than Bob. Suppose both are perfectly accurate, and the bottle shatters when hit. Sally hits, and the bottle shatters, but Bob doesn't hit it because the bottle is no longer there." ] }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 130, "metadata": {}, "outputs": [ { @@ -710,10 +733,10 @@ "\n" ], "text/plain": [ - "" + "" ] }, - "execution_count": 14, + "execution_count": 130, "metadata": {}, "output_type": "execute_result" } @@ -791,7 +814,7 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": 131, "metadata": {}, "outputs": [ { @@ -825,6 +848,24 @@ "print(torch.exp(logp))" ] }, + { + "cell_type": "code", + "execution_count": 132, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tensor(1.0013e-05)\n" + ] + } + ], + "source": [ + "mask_intervened = trace.nodes[\"__cause____antecedent_sally_throws\"][\"value\"] == 0\n", + "print(torch.sum(torch.exp(log_weights) * mask_intervened.squeeze())/torch.sum(mask_intervened.float()))" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -844,14 +885,14 @@ }, { "cell_type": "code", - "execution_count": 47, + "execution_count": 133, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.2513)\n" + "tensor(0.2494)\n" ] } ], @@ -878,6 +919,24 @@ "print(torch.exp(logp))" ] }, + { + "cell_type": "code", + "execution_count": 134, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tensor(0.4987)\n" + ] + } + ], + "source": [ + "mask_intervened = trace.nodes[\"__cause____antecedent_sally_throws\"][\"value\"] == 0\n", + "print(torch.sum(torch.exp(log_weights) * mask_intervened.squeeze())/torch.sum(mask_intervened.float()))" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -889,7 +948,7 @@ }, { "cell_type": "code", - "execution_count": 203, + "execution_count": 136, "metadata": {}, "outputs": [ { @@ -919,38 +978,49 @@ " }\n", ")(stones_model))\n", "\n", - "logp, trace, mwc = importance_infer(num_samples=10000)(query)()\n", + "logp, trace, mwc, log_weights = importance_infer(num_samples=10000)(query)()\n", "print(torch.exp(logp))" ] }, { - "cell_type": "markdown", + "cell_type": "code", + "execution_count": 137, "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tensor(1.0013e-05)\n" + ] + } + ], "source": [ - "## Probability of Causation and Responsibility" + "mask_intervened = trace.nodes[\"__cause____antecedent_bill_throws\"][\"value\"] == 0\n", + "print(torch.sum(torch.exp(log_weights) * mask_intervened.squeeze())/torch.sum(mask_intervened.float()))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "We might use non-trivial probabilities and be interested in more involved queries. Suppose we aren't sure what part of the context we want to hold fixed, allowing both `sally_hits` and `bill_hits` to be witness candidates, so we attach equal weights to all four possible context sets. \n", + "## Probability of Causation and Responsibility\n", "\n", - "Suppose also that beyond knowing the non-degenerate probabilities involved, we don't know who threw the stone, and we only observed the bottle has been shattered. We can use the handler to estimate the answer to a somewhat different question involving the probabilities that changing the value of `sally_throws` or changing the value of `billy_throws` (whatever these are in the factual world) would lead to a change in the outcome variables, and that fixing them to be at the factual values would result in the outcome variable having the same value. We also allow both `sally_hits` and `bill_hits` as potential witnesses.\n", + "In the examples above, we have shown how `SearchForExplanation` can be used to perform but-for analysis and context-sensitive analysis. In this section, we extend how we can combine these queries ina single model and perform more involved queries about probabilities of causation and responsibility.\n", "\n", - "For example, we can sample to estimate quantities such as the fraction of possible causes of the bottle shattering in which Sally and Billy are each responsibile:" + "We take the earlier defined `stones_model` with non-trivial probabilities and the only observation that the bottle was shattered. We do not know who threw the stone and thus it is not obvious what context to hold fixed. We can capture all these different possibilities using the single program transformation performed by `SearchForExplanation` and post-process the samples to answer different queries." ] }, { "cell_type": "code", - "execution_count": 49, + "execution_count": 138, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.1439)\n" + "tensor(0.1558)\n" ] } ], @@ -994,14 +1064,14 @@ }, { "cell_type": "code", - "execution_count": 50, + "execution_count": 139, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.1956)\n" + "tensor(0.2173)\n" ] } ], @@ -1019,14 +1089,14 @@ }, { "cell_type": "code", - "execution_count": 51, + "execution_count": 140, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.0567)\n" + "tensor(0.0769)\n" ] } ], @@ -1039,19 +1109,19 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We can also use the same model as above to compute the degree of responsibility for bill and sally as follows. We interpret the degree of responsbility asisgned to sally for bottle shattering as the probability that `sally_throws=1` is part of the cause." + "We can also use the same model as above to compute the degree of responsibility for bill and sally as follows. We interpret the degree of responsibility assigned to sally for bottle shattering as the probability that `sally_throws=1` is part of the cause. Similarly, the degree of responsibility assigned to billy for shattering the bottle is the probability that `billy_throws=1` is a part of the cause." ] }, { "cell_type": "code", - "execution_count": 52, + "execution_count": 141, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.2683)\n" + "tensor(0.2650)\n" ] } ], @@ -1062,14 +1132,14 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 142, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.2004)\n" + "tensor(0.1965)\n" ] } ], @@ -1089,22 +1159,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Discussion\n", - "\n", - "If the phenomenon we're trying to explain is the behavior of a predictive model, we are dealing with a problem in explainable AI; but the underlying intuition behind the workings of **Explainable Reasoning with ChiRho** is that causally explaining the behavior of an opaque model is not that much different from providing a causal explanation of other real-world phenomena: we need to address such queries in a principled manner employing some approximate but hopefully reliable causal model of how things work (be that events outside of computers, or a predicitive model's behavior). **Explainable Reasoning with ChiRho** package aims to provide a unified general approach to the relevant causal explanation computations.\n", - "\n", - "At some level of generality, a useful point of departure is a general counterfactual one. On one hand, we can ask whether the event would have occurred had a given candidate cause not taken place. This is sometimes called the *but-for test*, has a tradition of being used as a tool for answering causality and attribution queries. \n", - "\n", - "- It is often used in [the law of torts](https://plato.stanford.edu/entries/causation-law/) to determine if a defendant's conduct was the cause of a particular harm. The test is often formulated as follows: \"But for the defendant's conduct, would the harm have occurred?\" \n", - "- A major philosophical position in the analysis of causality is that the definition of causal dependence should be formulated in terms of counterfactual conditionals (Lewis, 1973. “Causation”, Journal of Philosophy, 70: 556–67). On this approach, $e$ causally depends on $c$ if and only if, if $c$ were not to occur $e$ would not occur. (The view does not remain uncontested, see the [SEP entry on counterfactual theories of causation](https://plato.stanford.edu/entries/causation-counterfactual/)).\n", - "- At least a few major approaches to explainable AI (such as [LIME](https://arxiv.org/abs/1602.04938), or [Shapley values](https://papers.nips.cc/paper_files/paper/2017/hash/8a20a8621978632d76c43dfd28b67767-Abstract.html)) are based on the idea that explanations can be obtained by perturbing or shifting the input values and observing the changes in the output. This to a large extent can be thought of as a way of evaluating the but-for condition: if the input value was different, would the output value change? \n", - " \n", - "More generally, we can ask about the probability with which an alterantive intervention would lead to a change in the outcome (perhaps while conditioning on other items of information), in line with the ideas present in Pearl's *Probabilities of causation...* and Chapter 9 of Pearl's *Causality*. While immensely useful, the but-for condition is not fine-grained enough to answer all the questions we are interested in or to give us the intended answers in cases in which the underlying causal model is non-trivial. We will illustrate this observation in this tutorial. \n", + "# Further Discussion\n", "\n", + "In this notebook, we have shown how `SearchForExplanation` can be used for fine-grained causal queries for discrete causal models. We further elaborate on its application in for different queries. \n", "\n", - "On the other hand, we can ask whether given our model (and perhaps conditioning on other pieces of information we posses), intervening on a given candidate cause to have a given value results in the outcome being as observed (or, more generally, the probability of that outcome being as observed) - this is conceptually similar to Pearl's probability of sufficiency. \n", + "**Explainable AI**: If the phenomenon we're trying to explain is the behavior of a predictive model, we are dealing with a problem in explainable AI; but the underlying intuition behind the workings of **Explainable Reasoning with ChiRho** is that causally explaining the behavior of an opaque model is not that much different from providing a causal explanation of other real-world phenomena: we need to address such queries in a principled manner employing some approximate but hopefully reliable causal model of how things work (be that events outside of computers, or a predicitive model's behavior). **Explainable Reasoning with ChiRho** package aims to provide a unified general approach to the relevant causal explanation computations. At least a few major approaches to explainable AI (such as [LIME](https://arxiv.org/abs/1602.04938), or [Shapley values](https://papers.nips.cc/paper_files/paper/2017/hash/8a20a8621978632d76c43dfd28b67767-Abstract.html)) are based on the idea that explanations can be obtained by perturbing or shifting the input values and observing the changes in the output. This to a large extent can be thought of as a way of evaluating the but-for condition: if the input value was different, would the output value change? \n", "\n", - "We will start with these two approaches, but soon we will notice that often our explanatory questions are more local and a more fine-grained tool is needed. The general intuition (inspired by Halpern's *Actual Causality*) that we implemented is that when we ask local explanatory questions, we need to keep some part of the actual context fixed and consider alternative scenarios insofar as potential causes are involved. That is, we (i) search through possible alternative interventions that could be performed on the candidate cause nodes, (ii) search through possible context nodes that are to be intervened to be at their factual values even in the counterfactual worlds, (iii) see how these options play out in intervened worlds, and (iv) investigate and meaningfully summarize what happens with the outcome nodes of interest in all those counterfactual worlds. " + "**Other Applications**: Causal queries, specifically but-for tests are often used in [the law of torts](https://plato.stanford.edu/entries/causation-law/) to determine if a defendant's conduct was the cause of a particular harm. The test is often formulated as follows: \"But for the defendant's conduct, would the harm have occurred?\". A major philosophical position in the analysis of causality is that the definition of causal dependence should be formulated in terms of counterfactual conditionals (Lewis, 1973. “Causation”, Journal of Philosophy, 70: 556–67). On this approach, $e$ causally depends on $c$ if and only if, if $c$ were not to occur $e$ would not occur. (The view does not remain uncontested, see the [SEP entry on counterfactual theories of causation](https://plato.stanford.edu/entries/causation-counterfactual/))." ] } ], From 8676cd778ef4204b05b36847b87a13ff21b857ba Mon Sep 17 00:00:00 2001 From: rfl-urbaniak Date: Tue, 13 Aug 2024 20:55:53 -0400 Subject: [PATCH 32/53] fixed links in intro, made ac optional in description --- docs/source/explainable_categorical_alternate.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/explainable_categorical_alternate.ipynb b/docs/source/explainable_categorical_alternate.ipynb index a0c22e40..54227d86 100644 --- a/docs/source/explainable_categorical_alternate.ipynb +++ b/docs/source/explainable_categorical_alternate.ipynb @@ -17,7 +17,7 @@ "\n", "In yet [another notebook](https://basisresearch.github.io/chirho/actual_causality.html) we illustrate how the module allows for a faithful reconstruction of a particular notion of local explanation (the so-called Halpern-Pearl modified definition of actual causality [(J. Halpern, MIT Press, 2016)](https://mitpress.mit.edu/9780262537131/actual-causality/)), which inspired some of the conceptual steps underlying the current implementation.\n", "\n", - "Before proceeding, the readers should go through the introductory tutorials on [causal reasoning in Chirho](https://github.com/BasisResearch/chirho/blob/master/docs/source/tutorial_i.ipynb) and [actual causality](https://github.com/BasisResearch/chirho/blob/master/docs/source/tutorial_i.ipynb)" + "Before proceeding, the readers should go through the introductory tutorials on [causal reasoning in Chirho](https://basisresearch.github.io/chirho/tutorial_i.html). They might also find a notebook on [actual causality](https://basisresearch.github.io/chirho/actual_causality.html) helpful." ] }, { From 773d085b9a07ef5ffd182c40ee58a4dfdca0d6f3 Mon Sep 17 00:00:00 2001 From: rfl-urbaniak Date: Tue, 13 Aug 2024 20:57:11 -0400 Subject: [PATCH 33/53] fixed link failure in TOC --- docs/source/explainable_categorical_alternate.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/explainable_categorical_alternate.ipynb b/docs/source/explainable_categorical_alternate.ipynb index 54227d86..1d831e02 100644 --- a/docs/source/explainable_categorical_alternate.ipynb +++ b/docs/source/explainable_categorical_alternate.ipynb @@ -32,7 +32,7 @@ "\n", "[But-for Causal Explanations](#but-for-causal-explanations) \n", "\n", - "[Context-sensitive Causal Explanations](#witness-nodes-and-context-sensitivity)\n", + "[Context-sensitive Causal Explanations](#context-sensitive-causal-explanations)\n", "\n", "[Probability of causation and responsibility](#probability-of-causation-and-responsibility)\n", "\n", From a0158f4dc6b974179b5dec3d71d13276ea8a6fcd Mon Sep 17 00:00:00 2001 From: rfl-urbaniak Date: Tue, 13 Aug 2024 20:58:50 -0400 Subject: [PATCH 34/53] style changes in Moivation --- docs/source/explainable_categorical_alternate.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/explainable_categorical_alternate.ipynb b/docs/source/explainable_categorical_alternate.ipynb index 1d831e02..736d44f4 100644 --- a/docs/source/explainable_categorical_alternate.ipynb +++ b/docs/source/explainable_categorical_alternate.ipynb @@ -55,7 +55,7 @@ "\n", "Questions of this sort are more specific and local as they pertain to actual cases that come with their own contexts, unlike average treatment effects discussed in an earlier [tutorial](https://github.com/BasisResearch/chirho/blob/master/docs/source/tutorial_i.ipynb). Being able to answer such context-sensitive questions is useful for understanding how we can prevent undesirable outcomes similar to ones that we have observed, or promote the occurrence of desirable outcomes in contexts similar to the ones in which they had been observed. Moreover, these context-sensitive causality questions are also an essential element of blame and responsibility assignments. \n", "\n", - "In this notebook, we demonstrate the use of `SearchForExplanation` that provides a unified approach to answer such questions on all levels of granularity." + "In this notebook, we demonstrate the use of `SearchForExplanation`, a handler that provides a unified approach to answering such questions on a wide range of levels of granularity." ] }, { From c4d8ed406f3836823950efa34d63dff572f956ed Mon Sep 17 00:00:00 2001 From: rfl-urbaniak Date: Tue, 13 Aug 2024 20:59:46 -0400 Subject: [PATCH 35/53] style changes in Setup --- docs/source/explainable_categorical_alternate.ipynb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/source/explainable_categorical_alternate.ipynb b/docs/source/explainable_categorical_alternate.ipynb index 736d44f4..4b6bc7c9 100644 --- a/docs/source/explainable_categorical_alternate.ipynb +++ b/docs/source/explainable_categorical_alternate.ipynb @@ -101,7 +101,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We first setup the essentials for performing probabilistic inference on the transformed causal models. We have a function for performing importance sampling on a model and a few other utility functions." + "We first setup the essentials for performing probabilistic inference on the transformed causal models. We start a function for performing importance sampling on a model and a few other utility functions." ] }, { @@ -141,7 +141,7 @@ "\n", " return _wrapped_model\n", "\n", - "# The following functions are needed for conditioning on random variables defined using pyro.deterministic\n", + "# The following functions are needed for conditioning on random variables defined using `pyro.deterministic`\n", "def _soft_eq(v1: torch.Tensor, v2: torch.Tensor) -> torch.Tensor:\n", " return soft_eq(constraints.boolean, v1, v2, scale=0.001)\n", "\n", From ff3727877b4ce1079bcc232ace8531dc68fcfb7d Mon Sep 17 00:00:00 2001 From: rfl-urbaniak Date: Tue, 13 Aug 2024 21:12:10 -0400 Subject: [PATCH 36/53] small fixes in Causal query 1 description --- .../explainable_categorical_alternate.ipynb | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/source/explainable_categorical_alternate.ipynb b/docs/source/explainable_categorical_alternate.ipynb index 4b6bc7c9..1d00a389 100644 --- a/docs/source/explainable_categorical_alternate.ipynb +++ b/docs/source/explainable_categorical_alternate.ipynb @@ -160,12 +160,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Let's start with a very simple model, in which a forest fire can be caused by any of the two things: a match being dropped (`match_dropped`), or a lightning strike (`lightning`), and either of these factors alone is already deterministically sufficient for the `forest_fire` to occur. A match being dropped is more likely than a lightning strike (we use fairly large probabilities for the sake of example transparency). For the sake of illustration, we also include a causally irrelevant site representing whether a ChiRho developer smiles, `smile`." + "Let's start with a very simple model, in which a forest fire can be caused by any of the two things: a match being dropped (`match_dropped`), or a lightning strike (`lightning`), and either of these factors alone is already deterministically sufficient for the `forest_fire` to occur. A match being dropped is more likely than a lightning strike (we use fairly large probabilities for the sake of example transparency). For illustration, we also include a causally irrelevant site representing whether a ChiRho developer smiles, `smile`." ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 2, "metadata": {}, "outputs": [ { @@ -252,10 +252,10 @@ "\n" ], "text/plain": [ - "" + "" ] }, - "execution_count": 4, + "execution_count": 2, "metadata": {}, "output_type": "execute_result" } @@ -301,14 +301,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Throughout this tutorial, we consider different kinds of causal queries and compute them using a unified program transforamtion. This program transformation takes place using the handler `SearchForExplanation`. It takes the following inputs:\n", + "Throughout this tutorial, we consider different kinds of causal queries and compute them using a unified program transformation, which takes place using the handler `SearchForExplanation`. It takes the following inputs:\n", "1. the distributions for the variables we use (`supports`),\n", "2. the candidate causes $X_i = x_i$ (`antecedents`),\n", "3. their alternative values ($X_i = x_i'$) (`alternatives`),\n", - "4. the elements of the current context (`witnesses`), and \n", + "4. the candidate elements of the current context (`witnesses`), and \n", "5. the `consequents` of interest $Y=y$. \n", "\n", - "The `SearchForExplanation` handler then takes these arguments and transforms the original model into another model in which interventions on antecedents and witnesses are applied stochastically. Once the antecedents $A \\subseteq$ `antecedents` and witnesses $W \\subseteq$ `witnesses` are chosen via sampling, parallel counterfactual worlds are created to condition on `A` being sufficient and necessary causes for the consequent with the context `W`. For more details on `SearchForExplanation`, please refer to the [documentation](https://basisresearch.github.io/chirho/explainable.html#chirho.explainable.handlers.explanation.SearchForExplanation).\n", + "The `SearchForExplanation` handler then takes these arguments and transforms the original model into another model in which interventions on antecedents and witnesses are applied stochastically. Once the antecedents $A \\subseteq$ `antecedents` and witnesses $W \\subseteq$ `witnesses` are chosen from the candidates via sampling, parallel counterfactual worlds are created to condition on `A` being sufficient and necessary causes for the consequent with the context `W`. For more details on `SearchForExplanation`, please refer to the [documentation](https://basisresearch.github.io/chirho/explainable.html#chirho.explainable.handlers.explanation.SearchForExplanation).\n", "\n", "Now we are ready to use `SearchForExplanation` for answering but-for causal questions." ] @@ -321,7 +321,7 @@ "\n", "To answer the above question, we compute the probability of both forest fire not occurring if we intervene on the match to not be dropped, and forest fire occurring if we intervene on the match to be dropped. i.e. $P(f'_{m'}, f_m)$. this computation can be carried out using `SearchForExplanation`.\n", "\n", - "The potential cause (`antecedent`) we're considering is `match_dropped=1`, we contrast it with what would happen if we intervened on it to not happen (`alternatives`). We are interested in whether an outcome variable `forest_fire` (`consequent`) has value 1 under these two interventions. Note that these two inteventions correspond to `match_dropped=1` being a sufficient and necessary cause for `forest_fire=1`. These notions have a correspondence to Pearl's notion of probability of necessity and sufficiency in this simple model. But we later extend these notions to be context-sensitive as well." + "The potential cause (`antecedent`) we're considering is `match_dropped=1`, we contrast it with what would happen if we intervened on it to not happen (`alternatives`). We are interested in whether an outcome variable `forest_fire` (`consequent`) has value 1 under these two interventions. Note that these two inteventions correspond to `match_dropped=1` being a sufficient and necessary cause for `forest_fire=1`. In this simple case, the notion corresponds to Pearl's notion of probability of necessity and sufficiency - although what `SearchForExplanation` can do goes beyond it, for instance, by allowing for the estimands to be context-sensitive, as we will illustrate later in this notebook." ] }, { @@ -355,7 +355,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "It might seem that we have our answer but that is not the case. Remember that interventions on antecedents are chosen stochastically. This induces a need to post-process the samples to only allow those samples where `match_dropped` was intervened on. Thus, to compute $P(f'_{m'}, f_m)$, we run the following code." + "The above, strictly speaking, is not our answer yet. Remember that interventions on antecedents are chosen stochastically (with default probability $0.5$ for each candidate node). Thus the above is rather $P(f'_{m'}, f_m)P(m\\,\\, intervened)$. To obtain $P(f'_{m'}, f_m)$ we therefore need to multiply the result by 2, obtaining $0.6$. In general, we don't need to keep track of the analytic solutions, and we can reach the similar conclusion by post-processing the samples to reject those where `match_dropped` was not intervened on. So, without knowing or using an analytic form (which in general will not be manageable), to compute $P(f'_{m'}, f_m)$, we can subselect the samples as follows:" ] }, { @@ -380,7 +380,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Note that the result above matches our intuition. `match_dropped` has a causal effect on `forest_fire` only when `lightning` is not there and the corresponding probability is $0.6$" + "Note that the result above matches our intuition. `match_dropped` has a causal effect on `forest_fire` only when `lightning` is not there and the corresponding probability is $0.6$." ] }, { From 1269aa16ed887842f8786dd4438d5791eefc8085 Mon Sep 17 00:00:00 2001 From: rfl-urbaniak Date: Tue, 13 Aug 2024 21:24:36 -0400 Subject: [PATCH 37/53] causal query 2 small fixes, one oustanding comment --- .../explainable_categorical_alternate.ipynb | 53 +++++++++++-------- 1 file changed, 31 insertions(+), 22 deletions(-) diff --git a/docs/source/explainable_categorical_alternate.ipynb b/docs/source/explainable_categorical_alternate.ipynb index 1d00a389..40ee27c3 100644 --- a/docs/source/explainable_categorical_alternate.ipynb +++ b/docs/source/explainable_categorical_alternate.ipynb @@ -165,7 +165,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -252,10 +252,10 @@ "\n" ], "text/plain": [ - "" + "" ] }, - "execution_count": 2, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -317,7 +317,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "**Causal Query 1** What is the probability that dropping a match has a causal role over forest fire?\n", + "**Causal Query 1** What is the probability that dropping a match has a causal impact on the forest fire?\n", "\n", "To answer the above question, we compute the probability of both forest fire not occurring if we intervene on the match to not be dropped, and forest fire occurring if we intervene on the match to be dropped. i.e. $P(f'_{m'}, f_m)$. this computation can be carried out using `SearchForExplanation`.\n", "\n", @@ -326,14 +326,14 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.2959)\n" + "tensor(0.3035)\n" ] } ], @@ -360,14 +360,14 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.5993)\n" + "tensor(0.6100)\n" ] } ], @@ -387,7 +387,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "**Causal Query 2** What is the probability that a Chirho developer has a causal role over forest fire?\n", + "**Causal Query 2** What is the probability that a Chirho developer has a causal impact on the forest fire?\n", "\n", "The intuitive answer is obviously zero, and we show that the same conclusion can be drawn using `SearchForExplanation`." ] @@ -428,7 +428,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -448,19 +448,19 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The examples above show how `SearchForExplanation` can be used for but-for analysis but such analysis would not work in a case of overdetermination, where each of the two factors can alone cause the outcome. Consider the case where both `match_dropped` and `lightning` did occur. In this case, if we try to determine the causal role of `match_dropped`, it would come out to be zero. And a symmetric reasoning works for lightning as well. This results in $P(f'_{m'}, f_m, m, l) = P(f'_{l'}, f_l, m, l)=0$. This is a canonical example that shows the limitations of the but-for analysis." + "The examples above show how `SearchForExplanation` can be used for but-for analysis. Note, however, that such analysis would not work in a case of overdetermination, where each of the two factors can alone cause the outcome. Consider the case where both `match_dropped` and `lightning` did occur. In this case, if we try to determine the causal role of `match_dropped`, it would come out to be zero (a symmetric reasoning works for lightning as well). This results in $P(f'_{m'}, f_m, m, l) = P(f'_{l'}, f_l, m, l)=0$. This is a canonical example of the limitations of the but-for analysis." ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(2.7596e-06)\n" + "tensor(2.8355e-06)\n" ] } ], @@ -484,14 +484,14 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(2.7553e-06)\n" + "tensor(2.8904e-06)\n" ] } ], @@ -504,19 +504,19 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "But if we consider both `match_dropped` and `lightning` to be possible causes, we can estimate $P(f'_{m',l'}, f_{m,l}, m, l)$ to determine their causal role that comes out to be greater than 0 as follows." + "One thing we can do, is to consider the set containing both `match_dropped` and `lightning`. Then we can estimate $P(f'_{m',l'}, f_{m,l}, m, l)$ to determine their joint causal role, which comes out to be greater than 0, as follows." ] }, { "cell_type": "code", - "execution_count": 129, + "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.0719)\n" + "tensor(0.0730)\n" ] } ], @@ -525,7 +525,7 @@ " supports=forest_fire_supports,\n", " antecedents={\"match_dropped\": torch.tensor(1.0), \"lightning\": torch.tensor(1.0)},\n", " consequents={\"forest_fire\": torch.tensor(1.0)},\n", - " witnesses={}, # potential context elements, we leave them empty for now\n", + " witnesses={},\n", " alternatives={\"match_dropped\": torch.tensor(0.0), \"lightning\": torch.tensor(0.0)},\n", " consequent_scale=1e-5,\n", ")(\n", @@ -538,16 +538,23 @@ "print(torch.exp(logp))" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now to get our estimand, we would need to multiply our result by four, as we now have made two stochastic decisions about interventions, each with probability $0.5$. Or, we can post-process the sample:" + ] + }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.2793)\n" + "tensor(0.2845)\n" ] } ], @@ -560,7 +567,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The probability above again matches our intuition since the probability of `match_dropped=1` and `lightning=1` is $0.28$ where the set $\\{m, l\\}$ is a cause. Now, we move to context-sensitive causal explanations." + "This again matches our intuition, since the probability of `match_dropped=1` and `lightning=1` is $0.28$ where the set $\\{m, l\\}$ is a cause. Now, we move to context-sensitive causal explanations.\n", + "\n", + "TODO_R: this needs to be better explained, something's off with this argument." ] }, { From 411a5018635c083f4314d26609e21c0bb93f2ae1 Mon Sep 17 00:00:00 2001 From: rfl-urbaniak Date: Tue, 13 Aug 2024 21:26:55 -0400 Subject: [PATCH 38/53] style changes in contex-sensitive... --- .../explainable_categorical_alternate.ipynb | 147 +++++++++--------- 1 file changed, 74 insertions(+), 73 deletions(-) diff --git a/docs/source/explainable_categorical_alternate.ipynb b/docs/source/explainable_categorical_alternate.ipynb index 40ee27c3..99f5031b 100644 --- a/docs/source/explainable_categorical_alternate.ipynb +++ b/docs/source/explainable_categorical_alternate.ipynb @@ -252,7 +252,7 @@ "\n" ], "text/plain": [ - "" + "" ] }, "execution_count": 3, @@ -333,7 +333,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.3035)\n" + "tensor(0.3006)\n" ] } ], @@ -367,7 +367,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.6100)\n" + "tensor(0.6001)\n" ] } ], @@ -460,7 +460,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "tensor(2.8355e-06)\n" + "tensor(2.8425e-06)\n" ] } ], @@ -491,7 +491,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "tensor(2.8904e-06)\n" + "tensor(2.7806e-06)\n" ] } ], @@ -516,7 +516,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.0730)\n" + "tensor(0.0694)\n" ] } ], @@ -547,14 +547,14 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.2845)\n" + "tensor(0.2744)\n" ] } ], @@ -590,7 +590,7 @@ }, { "cell_type": "code", - "execution_count": 130, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -599,153 +599,154 @@ "\n", "\n", - "\n", - "\n", - "\n", + "\n", + "\n", "\n", - "\n", + "%3\n", + "\n", "\n", "\n", "prob_sally_throws\n", - "\n", - "prob_sally_throws\n", + "\n", + "prob_sally_throws\n", "\n", "\n", "\n", "sally_throws\n", - "\n", - "sally_throws\n", + "\n", + "sally_throws\n", "\n", "\n", "\n", "prob_sally_throws->sally_throws\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "prob_bill_throws\n", - "\n", - "prob_bill_throws\n", + "\n", + "prob_bill_throws\n", "\n", "\n", "\n", "bill_throws\n", - "\n", - "bill_throws\n", + "\n", + "bill_throws\n", "\n", "\n", "\n", "prob_bill_throws->bill_throws\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "prob_sally_hits\n", - "\n", - "prob_sally_hits\n", + "\n", + "prob_sally_hits\n", "\n", "\n", "\n", "sally_hits\n", - "\n", - "sally_hits\n", + "\n", + "sally_hits\n", "\n", "\n", "\n", "prob_sally_hits->sally_hits\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "prob_bill_hits\n", - "\n", - "prob_bill_hits\n", + "\n", + "prob_bill_hits\n", "\n", "\n", "\n", "bill_hits\n", - "\n", - "bill_hits\n", + "\n", + "bill_hits\n", "\n", "\n", "\n", "prob_bill_hits->bill_hits\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "prob_bottle_shatters_if_sally\n", - "\n", - "prob_bottle_shatters_if_sally\n", + "\n", + "prob_bottle_shatters_if_sally\n", "\n", "\n", "\n", "bottle_shatters\n", - "\n", - "bottle_shatters\n", + "\n", + "bottle_shatters\n", "\n", "\n", - "\n", + "\n", "prob_bottle_shatters_if_sally->bottle_shatters\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "prob_bottle_shatters_if_bill\n", - "\n", - "prob_bottle_shatters_if_bill\n", + "\n", + "prob_bottle_shatters_if_bill\n", "\n", "\n", - "\n", + "\n", "prob_bottle_shatters_if_bill->bottle_shatters\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "sally_throws->sally_hits\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "bill_throws->bill_hits\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "sally_hits->bill_hits\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", - "\n", + "\n", "sally_hits->bottle_shatters\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", - "\n", + "\n", "bill_hits->bottle_shatters\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n" ], "text/plain": [ - "" + "" ] }, - "execution_count": 130, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } @@ -823,7 +824,7 @@ }, { "cell_type": "code", - "execution_count": 131, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -859,7 +860,7 @@ }, { "cell_type": "code", - "execution_count": 132, + "execution_count": 14, "metadata": {}, "outputs": [ { @@ -894,14 +895,14 @@ }, { "cell_type": "code", - "execution_count": 133, + "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.2494)\n" + "tensor(0.2508)\n" ] } ], @@ -930,14 +931,14 @@ }, { "cell_type": "code", - "execution_count": 134, + "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.4987)\n" + "tensor(0.5009)\n" ] } ], @@ -950,14 +951,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Admittedly, our search through contexts is simple as the only part of the actual context which stochastically is kept fixed at the factual value is `bill_hits`. But already with this search, sally throwing is diagnosed as having non-null probability. In fact, the definition of actual causality in Halpern's book (*Actual causality*) contains an existential quantifier: a variable is an actual cause if there is at least one context in which a change in the outcome variable would result from changing the antecedent to have an alternative value, so our search provides a correct diagnosis here.\n", + "Admittedly, our search through contexts is simple as the only part of the actual context which stochastically is kept fixed at the factual value is `bill_hits`. But already with this search, Sally's throw is diagnosed as having impact on the bottle shattering with non-null probability. In fact, the definition of actual causality in Halpern's book (*Actual causality*) contains an existential quantifier: a variable is an actual cause if there is at least one context in which a change in the outcome variable would result from changing the antecedent to have an alternative value, so our search provides a correct diagnosis here.\n", "\n", - "Crucially, as intended, an analogous inference for whether `bill_throws` is a cause of the bottle shattering, yields a different result and assigns null causal role to bill." + "Crucially, as intended, an analogous inference for whether `bill_throws` is a cause of the bottle shattering, yields a different result and assigns null causal role to Bill's throw." ] }, { "cell_type": "code", - "execution_count": 136, + "execution_count": 17, "metadata": {}, "outputs": [ { From 61bb476435228843fda406a83989e42cee2d9708 Mon Sep 17 00:00:00 2001 From: PoorvaGarg Date: Wed, 14 Aug 2024 13:58:51 -0400 Subject: [PATCH 39/53] computation of P(f_{m, l}, f'_{m', l'} | m, l) --- .../explainable_categorical_alternate.ipynb | 151 +++++++++--------- 1 file changed, 78 insertions(+), 73 deletions(-) diff --git a/docs/source/explainable_categorical_alternate.ipynb b/docs/source/explainable_categorical_alternate.ipynb index 99f5031b..17e5a5c7 100644 --- a/docs/source/explainable_categorical_alternate.ipynb +++ b/docs/source/explainable_categorical_alternate.ipynb @@ -67,7 +67,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 144, "metadata": {}, "outputs": [ { @@ -106,7 +106,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 145, "metadata": {}, "outputs": [], "source": [ @@ -165,7 +165,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 146, "metadata": {}, "outputs": [ { @@ -174,88 +174,57 @@ "\n", "\n", - "\n", - "\n", - "\n", - "\n", - "%3\n", - "\n", + "\n", + "\n", + "\n", + "\n", "\n", "\n", "u_match_dropped\n", - "\n", - "u_match_dropped\n", + "\n", + "u_match_dropped\n", "\n", "\n", "\n", "match_dropped\n", - "\n", - "match_dropped\n", - "\n", - "\n", - "\n", - "u_match_dropped->match_dropped\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "forest_fire\n", - "\n", - "forest_fire\n", - "\n", - "\n", - "\n", - "u_match_dropped->forest_fire\n", - "\n", - "\n", + "\n", + "match_dropped\n", "\n", "\n", "\n", "u_lightning\n", - "\n", - "u_lightning\n", + "\n", + "u_lightning\n", "\n", "\n", "\n", "lightning\n", - "\n", - "lightning\n", - "\n", - "\n", - "\n", - "u_lightning->lightning\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "u_lightning->forest_fire\n", - "\n", - "\n", + "\n", + "lightning\n", "\n", "\n", "\n", "smile\n", - "\n", - "smile\n", + "\n", + "smile\n", "\n", - "\n", - "\n", - "smile->forest_fire\n", - "\n", - "\n", + "\n", + "\n", + "forest_fire\n", + "\n", + "forest_fire\n", "\n", "\n", "\n" ], "text/plain": [ - "" + "" ] }, - "execution_count": 3, + "execution_count": 146, "metadata": {}, "output_type": "execute_result" } @@ -326,14 +295,14 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 147, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.3006)\n" + "tensor(0.3016)\n" ] } ], @@ -355,19 +324,19 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The above, strictly speaking, is not our answer yet. Remember that interventions on antecedents are chosen stochastically (with default probability $0.5$ for each candidate node). Thus the above is rather $P(f'_{m'}, f_m)P(m\\,\\, intervened)$. To obtain $P(f'_{m'}, f_m)$ we therefore need to multiply the result by 2, obtaining $0.6$. In general, we don't need to keep track of the analytic solutions, and we can reach the similar conclusion by post-processing the samples to reject those where `match_dropped` was not intervened on. So, without knowing or using an analytic form (which in general will not be manageable), to compute $P(f'_{m'}, f_m)$, we can subselect the samples as follows:" + "The above, strictly speaking, is not our answer yet. Remember that interventions on antecedents are chosen stochastically (with default probability $0.5$ for each candidate node). Thus the above is rather $P(f'_{m'}, f_m)P(m \\text{ was intervened on})$. To obtain $P(f'_{m'}, f_m)$ we therefore need to multiply the result by 2, obtaining $0.6$. In general, we don't need to keep track of the analytic solutions, and we can reach the similar conclusion by post-processing the samples to reject those where `match_dropped` was not intervened on. So, without knowing or using an analytic form (which in general will not be manageable), to compute $P(f'_{m'}, f_m)$, we can subselect the samples as follows:" ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 148, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.6001)\n" + "tensor(0.6030)\n" ] } ], @@ -394,7 +363,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 149, "metadata": {}, "outputs": [ { @@ -428,7 +397,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 150, "metadata": {}, "outputs": [ { @@ -453,14 +422,14 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 151, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(2.8425e-06)\n" + "tensor(2.8435e-06)\n" ] } ], @@ -484,14 +453,14 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 152, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(2.7806e-06)\n" + "tensor(2.8377e-06)\n" ] } ], @@ -509,14 +478,14 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 153, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.0694)\n" + "tensor(0.0754)\n" ] } ], @@ -542,19 +511,19 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Now to get our estimand, we would need to multiply our result by four, as we now have made two stochastic decisions about interventions, each with probability $0.5$. Or, we can post-process the sample:" + "Now to get our estimand of $P(f_{m, l}, f_{m', l'}, m, l)$, we would need to multiply our result by four, as we now have made two stochastic decisions about interventions, each with probability $0.5$. Or, we can post-process the sample:" ] }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 154, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.2744)\n" + "tensor(0.2900)\n" ] } ], @@ -572,6 +541,42 @@ "TODO_R: this needs to be better explained, something's off with this argument." ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "One can also compute $P(f_{m, l}, f'_{m', l'} | m, l)$ as follows by subselecting the samples with `match_dropped=1` and `lightning=1`. Since {`match_dropped=1`, `lightning=1`} always leads to `forest_fire=1` and {`match_dropped=0`, `lightning=0`} always leads to `forest_fire=0`, we have $P(f_{m, l}, f'_{m', l'} | m, l) = 1$ that we get as a result of the following code snippet." + ] + }, + { + "cell_type": "code", + "execution_count": 159, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tensor(1.0000)\n" + ] + } + ], + "source": [ + "query = SearchForExplanation(\n", + " supports=forest_fire_supports,\n", + " antecedents={\"match_dropped\": torch.tensor(1.0), \"lightning\": torch.tensor(1.0)},\n", + " consequents={\"forest_fire\": torch.tensor(1.0)},\n", + " witnesses={},\n", + " alternatives={\"match_dropped\": torch.tensor(0.0), \"lightning\": torch.tensor(0.0)},\n", + " consequent_scale=1e-5,\n", + ")(forest_fire_model)\n", + "\n", + "logp, trace, mwc, log_weights = importance_infer(num_samples=10000)(query)()\n", + "\n", + "mask_intervened = (trace.nodes[\"match_dropped\"][\"value\"] == 1) & (trace.nodes[\"lightning\"][\"value\"] == 1) & (trace.nodes[\"__cause____antecedent_match_dropped\"][\"value\"] == 0) & (trace.nodes[\"__cause____antecedent_lightning\"][\"value\"] == 0)\n", + "print(torch.sum(torch.exp(log_weights) * mask_intervened.squeeze())/torch.sum(mask_intervened.float()))" + ] + }, { "cell_type": "markdown", "metadata": {}, From 228eebc7253477145b11bd4b3d9d5fc7cbfcf1b2 Mon Sep 17 00:00:00 2001 From: PoorvaGarg Date: Wed, 14 Aug 2024 14:50:42 -0400 Subject: [PATCH 40/53] double checked things --- .../explainable_categorical_alternate.ipynb | 149 +++++++++--------- 1 file changed, 74 insertions(+), 75 deletions(-) diff --git a/docs/source/explainable_categorical_alternate.ipynb b/docs/source/explainable_categorical_alternate.ipynb index 17e5a5c7..e35a16d0 100644 --- a/docs/source/explainable_categorical_alternate.ipynb +++ b/docs/source/explainable_categorical_alternate.ipynb @@ -53,7 +53,7 @@ "\n", "- **Explainable AI:** Your pre-trial release has been refused based on your [COMPAS score](https://en.wikipedia.org/wiki/COMPAS_(software)). The decision was made using a proprietary predictive model. All you have access to is the questionnaire that was used, and perhaps some demographic information about a class of human beings subjected to this evaluation. But which of these factors resulted in your score being what it is, and what were their contributions?\n", "\n", - "Questions of this sort are more specific and local as they pertain to actual cases that come with their own contexts, unlike average treatment effects discussed in an earlier [tutorial](https://github.com/BasisResearch/chirho/blob/master/docs/source/tutorial_i.ipynb). Being able to answer such context-sensitive questions is useful for understanding how we can prevent undesirable outcomes similar to ones that we have observed, or promote the occurrence of desirable outcomes in contexts similar to the ones in which they had been observed. Moreover, these context-sensitive causality questions are also an essential element of blame and responsibility assignments. \n", + "Questions of this sort are more specific and local as they pertain to actual cases that come with their own contexts, unlike average treatment effects discussed in an earlier [tutorial](https://github.com/BasisResearch/chirho/blob/master/docs/source/tutorial_i.ipynb). Being able to answer such context-sensitive questions is useful for understanding how we can prevent undesirable outcomes and promote desirable ones in contexts similar to the ones in which they had been observed. Moreover, these context-sensitive causality questions are also an essential element of blame and responsibility assignments. \n", "\n", "In this notebook, we demonstrate the use of `SearchForExplanation`, a handler that provides a unified approach to answering such questions on a wide range of levels of granularity." ] @@ -101,7 +101,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We first setup the essentials for performing probabilistic inference on the transformed causal models. We start a function for performing importance sampling on a model and a few other utility functions." + "We first setup the essentials for performing probabilistic inference on the transformed causal models. We define a function for performing importance sampling on a model and a few other utility functions." ] }, { @@ -143,10 +143,10 @@ "\n", "# The following functions are needed for conditioning on random variables defined using `pyro.deterministic`\n", "def _soft_eq(v1: torch.Tensor, v2: torch.Tensor) -> torch.Tensor:\n", - " return soft_eq(constraints.boolean, v1, v2, scale=0.001)\n", + " return soft_eq(constraints.boolean, v1, v2, scale=0.001)\n", "\n", "def reparam_config(data):\n", - " return {i: KernelSoftConditionReparam(_soft_eq) for i in data}" + " return {i: KernelSoftConditionReparam(_soft_eq) for i in data}" ] }, { @@ -595,7 +595,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 160, "metadata": {}, "outputs": [ { @@ -604,154 +604,153 @@ "\n", "\n", - "\n", - "\n", - "\n", + "\n", + "\n", "\n", - "%3\n", - "\n", + "\n", "\n", "\n", "prob_sally_throws\n", - "\n", - "prob_sally_throws\n", + "\n", + "prob_sally_throws\n", "\n", "\n", "\n", "sally_throws\n", - "\n", - "sally_throws\n", + "\n", + "sally_throws\n", "\n", "\n", "\n", "prob_sally_throws->sally_throws\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "prob_bill_throws\n", - "\n", - "prob_bill_throws\n", + "\n", + "prob_bill_throws\n", "\n", "\n", "\n", "bill_throws\n", - "\n", - "bill_throws\n", + "\n", + "bill_throws\n", "\n", "\n", "\n", "prob_bill_throws->bill_throws\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "prob_sally_hits\n", - "\n", - "prob_sally_hits\n", + "\n", + "prob_sally_hits\n", "\n", "\n", "\n", "sally_hits\n", - "\n", - "sally_hits\n", + "\n", + "sally_hits\n", "\n", "\n", "\n", "prob_sally_hits->sally_hits\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "prob_bill_hits\n", - "\n", - "prob_bill_hits\n", + "\n", + "prob_bill_hits\n", "\n", "\n", "\n", "bill_hits\n", - "\n", - "bill_hits\n", + "\n", + "bill_hits\n", "\n", "\n", "\n", "prob_bill_hits->bill_hits\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "prob_bottle_shatters_if_sally\n", - "\n", - "prob_bottle_shatters_if_sally\n", + "\n", + "prob_bottle_shatters_if_sally\n", "\n", "\n", "\n", "bottle_shatters\n", - "\n", - "bottle_shatters\n", + "\n", + "bottle_shatters\n", "\n", "\n", - "\n", + "\n", "prob_bottle_shatters_if_sally->bottle_shatters\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "prob_bottle_shatters_if_bill\n", - "\n", - "prob_bottle_shatters_if_bill\n", + "\n", + "prob_bottle_shatters_if_bill\n", "\n", "\n", - "\n", + "\n", "prob_bottle_shatters_if_bill->bottle_shatters\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "sally_throws->sally_hits\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "bill_throws->bill_hits\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "sally_hits->bill_hits\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", - "\n", + "\n", "sally_hits->bottle_shatters\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", - "\n", + "\n", "bill_hits->bottle_shatters\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n" ], "text/plain": [ - "" + "" ] }, - "execution_count": 12, + "execution_count": 160, "metadata": {}, "output_type": "execute_result" } @@ -829,7 +828,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 161, "metadata": {}, "outputs": [ { @@ -1023,19 +1022,19 @@ "\n", "In the examples above, we have shown how `SearchForExplanation` can be used to perform but-for analysis and context-sensitive analysis. In this section, we extend how we can combine these queries ina single model and perform more involved queries about probabilities of causation and responsibility.\n", "\n", - "We take the earlier defined `stones_model` with non-trivial probabilities and the only observation that the bottle was shattered. We do not know who threw the stone and thus it is not obvious what context to hold fixed. We can capture all these different possibilities using the single program transformation performed by `SearchForExplanation` and post-process the samples to answer different queries." + "We take the earlier defined `stones_model` with non-trivial probabilities and the single observation that the bottle was shattered. We do not know who threw the stone and thus it is not obvious what context to hold fixed. We can capture all these different possibilities using the single program transformation performed by `SearchForExplanation` and post-process the samples to answer different queries." ] }, { "cell_type": "code", - "execution_count": 138, + "execution_count": 173, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.1558)\n" + "tensor(0.1550)\n" ] } ], @@ -1059,7 +1058,7 @@ " }\n", ")(stones_model))\n", "\n", - "logp, trace, mwc, log_weights = importance_infer(num_samples=1000)(query)()\n", + "logp, trace, mwc, log_weights = importance_infer(num_samples=100000)(query)()\n", "print(torch.exp(logp))" ] }, @@ -1074,19 +1073,19 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We first compute the probability of causation for `sally_throws`. We compute the probability that the set {sally_throws=1} is the cause of bottle shattering." + "We first compute the probability of causation for `sally_throws`. We compute the probability that the set {`sally_throws=1`} is the cause of bottle shattering." ] }, { "cell_type": "code", - "execution_count": 139, + "execution_count": 174, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.2173)\n" + "tensor(0.2194)\n" ] } ], @@ -1104,14 +1103,14 @@ }, { "cell_type": "code", - "execution_count": 140, + "execution_count": 175, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.0769)\n" + "tensor(0.0647)\n" ] } ], @@ -1129,14 +1128,14 @@ }, { "cell_type": "code", - "execution_count": 141, + "execution_count": 176, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.2650)\n" + "tensor(0.2767)\n" ] } ], @@ -1147,14 +1146,14 @@ }, { "cell_type": "code", - "execution_count": 142, + "execution_count": 177, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.1965)\n" + "tensor(0.1999)\n" ] } ], From fc199ccd85e19945f4363ccaf3676bc4d7d96550 Mon Sep 17 00:00:00 2001 From: PoorvaGarg Date: Thu, 15 Aug 2024 11:19:25 -0400 Subject: [PATCH 41/53] clean_notebooks.sh run --- .../explainable_categorical_alternate.ipynb | 38 ++-- docs/source/responsibility.ipynb | 177 ------------------ docs/source/tutorial_i.ipynb | 44 +++-- 3 files changed, 51 insertions(+), 208 deletions(-) delete mode 100644 docs/source/responsibility.ipynb diff --git a/docs/source/explainable_categorical_alternate.ipynb b/docs/source/explainable_categorical_alternate.ipynb index e35a16d0..a9e6938b 100644 --- a/docs/source/explainable_categorical_alternate.ipynb +++ b/docs/source/explainable_categorical_alternate.ipynb @@ -67,7 +67,7 @@ }, { "cell_type": "code", - "execution_count": 144, + "execution_count": 178, "metadata": {}, "outputs": [ { @@ -106,7 +106,7 @@ }, { "cell_type": "code", - "execution_count": 145, + "execution_count": 179, "metadata": {}, "outputs": [], "source": [ @@ -165,7 +165,7 @@ }, { "cell_type": "code", - "execution_count": 146, + "execution_count": 180, "metadata": {}, "outputs": [ { @@ -221,10 +221,10 @@ "\n" ], "text/plain": [ - "" + "" ] }, - "execution_count": 146, + "execution_count": 180, "metadata": {}, "output_type": "execute_result" } @@ -295,14 +295,14 @@ }, { "cell_type": "code", - "execution_count": 147, + "execution_count": 184, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.3016)\n" + "tensor(0.2989)\n" ] } ], @@ -329,20 +329,26 @@ }, { "cell_type": "code", - "execution_count": 148, + "execution_count": 187, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.6030)\n" + "tensor(5.7317e-06)\n", + "tensor(2988.9890)\n", + "tensor(5026.)\n", + "tensor(9.6378e-06)\n" ] } ], "source": [ - "mask_intervened = trace.nodes[\"__cause____antecedent_match_dropped\"][\"value\"] == 0\n", - "print(torch.sum(torch.exp(log_weights) * mask_intervened.squeeze())/torch.sum(mask_intervened.float()))" + "mask_intervened = trace.nodes[\"__cause____antecedent_match_dropped\"][\"value\"] == 1\n", + "print(torch.sum(torch.exp(log_weights) * mask_intervened.squeeze())/torch.sum(mask_intervened.float()))\n", + "print(torch.sum(torch.exp(log_weights)))\n", + "print(mask_intervened.float().sum())\n", + "print(torch.sum(torch.exp(log_weights) * mask_intervened.squeeze())/torch.sum(torch.exp(log_weights)))" ] }, { @@ -550,14 +556,15 @@ }, { "cell_type": "code", - "execution_count": 159, + "execution_count": 194, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(1.0000)\n" + "tensor(1.0000)\n", + "tensor(0.5258)\n" ] } ], @@ -573,8 +580,9 @@ "\n", "logp, trace, mwc, log_weights = importance_infer(num_samples=10000)(query)()\n", "\n", - "mask_intervened = (trace.nodes[\"match_dropped\"][\"value\"] == 1) & (trace.nodes[\"lightning\"][\"value\"] == 1) & (trace.nodes[\"__cause____antecedent_match_dropped\"][\"value\"] == 0) & (trace.nodes[\"__cause____antecedent_lightning\"][\"value\"] == 0)\n", - "print(torch.sum(torch.exp(log_weights) * mask_intervened.squeeze())/torch.sum(mask_intervened.float()))" + "mask_intervened = (trace.nodes[\"__cause____antecedent_match_dropped\"][\"value\"] == 0) & (trace.nodes[\"__cause____antecedent_lightning\"][\"value\"] == 0)\n", + "print(torch.sum(torch.exp(log_weights) * mask_intervened.squeeze())/torch.sum(mask_intervened.float()))\n", + "print(torch.sum(torch.exp(log_weights) * mask_intervened.squeeze())/torch.sum(torch.exp(log_weights)))" ] }, { diff --git a/docs/source/responsibility.ipynb b/docs/source/responsibility.ipynb deleted file mode 100644 index 5607419f..00000000 --- a/docs/source/responsibility.ipynb +++ /dev/null @@ -1,177 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "env: CUDA_VISIBLE_DEVICES=-1\n" - ] - } - ], - "source": [ - "%env CUDA_VISIBLE_DEVICES=-1\n", - "from typing import Callable, Dict, List, Optional\n", - "\n", - "import math\n", - "import pyro\n", - "import pyro.distributions as dist\n", - "import pyro.distributions.constraints as constraints\n", - "import torch\n", - "from chirho.counterfactual.handlers.counterfactual import \\\n", - " MultiWorldCounterfactual\n", - "from chirho.explainable.handlers import ExtractSupports, SearchForExplanation\n", - "from chirho.indexed.ops import IndexSet, gather\n", - "from chirho.observational.handlers import condition\n", - "from chirho.observational.handlers.soft_conditioning import soft_eq, KernelSoftConditionReparam\n", - "\n", - "pyro.settings.set(module_local_params=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [], - "source": [ - "def importance_infer(\n", - " model: Optional[Callable] = None, *, num_samples: int\n", - "):\n", - " \n", - " if model is None:\n", - " return lambda m: importance_infer(m, num_samples=num_samples)\n", - "\n", - " def _wrapped_model(\n", - " *args,\n", - " **kwargs\n", - " ):\n", - "\n", - " guide = pyro.poutine.block(hide_fn=lambda msg: msg[\"is_observed\"])(model)\n", - "\n", - " max_plate_nesting = 9 # TODO guess\n", - "\n", - " with pyro.poutine.block(), MultiWorldCounterfactual() as mwc:\n", - " log_weights, importance_tr, _ = pyro.infer.importance.vectorized_importance_weights(\n", - " model,\n", - " guide,\n", - " *args,\n", - " num_samples=num_samples,\n", - " max_plate_nesting=max_plate_nesting,\n", - " normalized=False,\n", - " **kwargs\n", - " )\n", - "\n", - " return torch.logsumexp(log_weights, dim=0) - math.log(num_samples), importance_tr, mwc, log_weights\n", - "\n", - " return _wrapped_model" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [], - "source": [ - "def example():\n", - " A = pyro.sample(\"A\", dist.Bernoulli(0.5))\n", - " B = pyro.sample(\"B\", dist.Bernoulli(0.5))\n", - " C = pyro.sample(\"C\", dist.Bernoulli(A))\n", - " return {\"A\": A, \"B\": B, \"C\": C}\n", - "\n", - "with ExtractSupports() as extract_supports:\n", - " example()" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "tensor(0.1057)\n" - ] - } - ], - "source": [ - "query = SearchForExplanation(\n", - " supports=extract_supports.supports,\n", - " antecedents={\"A\": 1.0, \"B\": 1.0},\n", - " consequents={\"C\": torch.tensor(1.0)},\n", - " witnesses={},\n", - " alternatives={\"A\": 0.0, \"B\": 0.0},\n", - " antecedent_bias=0.4,\n", - " consequent_scale=1e-5,\n", - ")(example)\n", - "\n", - "logp, trace, mwc, log_weights = importance_infer(num_samples=10000)(query)()\n", - "print(torch.exp(logp))" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "tensor(0.1077)\n" - ] - } - ], - "source": [ - "mask_intervened = (trace.nodes[\"__cause____antecedent_B\"][\"value\"] == 0)\n", - "print(torch.sum(torch.exp(log_weights) * mask_intervened.float().squeeze())/mask_intervened.float().sum())\n", - "# Marginalizing over the fact that B was intervened on gives the following answer which accounts for the causal role of the set {A = 1, B = 1}" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "tensor(5.1220e-06)\n" - ] - } - ], - "source": [ - "mask_intervened = (trace.nodes[\"__cause____antecedent_B\"][\"value\"] == 0) & (trace.nodes[\"__cause____antecedent_A\"][\"value\"] == 1)\n", - "print(torch.sum(torch.exp(log_weights) * mask_intervened.float().squeeze())/mask_intervened.float().sum())\n", - "# Marginalizing over the fact that B was intervened on and A was not gives the following answer which agrees with the fact that B has no causal role\n" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": ".venv", - "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.10.14" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/source/tutorial_i.ipynb b/docs/source/tutorial_i.ipynb index ca704abb..34dc10e0 100644 --- a/docs/source/tutorial_i.ipynb +++ b/docs/source/tutorial_i.ipynb @@ -1553,7 +1553,9 @@ " return bayesian_population_intervened_causal_model(n_individuals), context\n", "\n", "\n", - "results, counterfactual_context = bayesian_population_counterfactual_model(n_individuals)\n", + "results, counterfactual_context = bayesian_population_counterfactual_model(\n", + " n_individuals\n", + ")\n", "\n", "with counterfactual_context:\n", " # ChiRho's `MultiWorldCounterfactual` effect handler automatically constructs named index sites\n", @@ -1565,14 +1567,10 @@ " # world given by the specific `IndexSet`. Here, `smokes=0` refers to the counterfactual\n", " # world in which `smokes` was not intervened on.\n", " smokes_factual = gather(results[\"smokes\"], IndexSet(smokes={0})).squeeze()\n", - " smokes_counterfactual = gather(\n", - " results[\"smokes\"], IndexSet(smokes={1})\n", - " ).squeeze()\n", + " smokes_counterfactual = gather(results[\"smokes\"], IndexSet(smokes={1})).squeeze()\n", "\n", " cancer_factual = gather(results[\"cancer\"], IndexSet(smokes={0})).squeeze()\n", - " cancer_counterfactual = gather(\n", - " results[\"cancer\"], IndexSet(smokes={1})\n", - " ).squeeze()\n", + " cancer_counterfactual = gather(results[\"cancer\"], IndexSet(smokes={1})).squeeze()\n", "\n", "print(\"smokes_factual --- \", smokes_factual)\n", "print(\"smokes_counterfactual --- \", smokes_counterfactual)\n", @@ -1647,29 +1645,39 @@ }, "outputs": [], "source": [ - "counterfactual_model_conditioned = condition(bayesian_population_counterfactual_model, data)\n", + "counterfactual_model_conditioned = condition(\n", + " bayesian_population_counterfactual_model, data\n", + ")\n", "\n", - "counterfactual_conditioned_results, counterfactual_conditioned_context = counterfactual_model_conditioned(\n", - " n_individuals\n", + "counterfactual_conditioned_results, counterfactual_conditioned_context = (\n", + " counterfactual_model_conditioned(n_individuals)\n", ")\n", "\n", "with counterfactual_conditioned_context:\n", " # ChiRho's `condition` only conditions the model on the observational part\n", " # of the model, not the counterfactual part.\n", " assert torch.allclose(\n", - " gather(counterfactual_conditioned_results[\"smokes\"], IndexSet(smokes={0})).squeeze(),\n", + " gather(\n", + " counterfactual_conditioned_results[\"smokes\"], IndexSet(smokes={0})\n", + " ).squeeze(),\n", " data[\"smokes\"],\n", " )\n", " assert not torch.allclose(\n", - " gather(counterfactual_conditioned_results[\"smokes\"], IndexSet(smokes={1})).squeeze(),\n", + " gather(\n", + " counterfactual_conditioned_results[\"smokes\"], IndexSet(smokes={1})\n", + " ).squeeze(),\n", " data[\"smokes\"],\n", " )\n", " assert torch.allclose(\n", - " gather(counterfactual_conditioned_results[\"cancer\"], IndexSet(smokes={0})).squeeze(),\n", + " gather(\n", + " counterfactual_conditioned_results[\"cancer\"], IndexSet(smokes={0})\n", + " ).squeeze(),\n", " data[\"cancer\"],\n", " )\n", " assert not torch.allclose(\n", - " gather(counterfactual_conditioned_results[\"cancer\"], IndexSet(smokes={1})).squeeze(),\n", + " gather(\n", + " counterfactual_conditioned_results[\"cancer\"], IndexSet(smokes={1})\n", + " ).squeeze(),\n", " data[\"cancer\"],\n", " )" ] @@ -1771,11 +1779,15 @@ "predictive_counterfactual_posterior = pyro.infer.Predictive(\n", " bayesian_population_counterfactual_model, guide=guide, num_samples=num_samples\n", ")\n", - "predictions_counterfactual_posterior = predictive_counterfactual_posterior(n_individuals)\n", + "predictions_counterfactual_posterior = predictive_counterfactual_posterior(\n", + " n_individuals\n", + ")\n", "\n", "with counterfactual_conditioned_context:\n", " predictions_int_posterior = {\n", - " k: gather(predictions_counterfactual_posterior[k], IndexSet(smokes={1})).squeeze()\n", + " k: gather(\n", + " predictions_counterfactual_posterior[k], IndexSet(smokes={1})\n", + " ).squeeze()\n", " for k in predictions_counterfactual_posterior.keys()\n", " }\n", "\n", From 3034bd6e9810038b73068738972b10fe675fea60 Mon Sep 17 00:00:00 2001 From: PoorvaGarg Date: Thu, 15 Aug 2024 15:22:23 -0400 Subject: [PATCH 42/53] rough --- docs/source/counterfactual_sir.png | Bin 0 -> 126305 bytes docs/source/counterfactual_sir_search.png | Bin 0 -> 42433 bytes .../explainable_categorical_alternate.ipynb | 44 +- docs/source/explainable_sir.ipynb | 1524 +++++++++++++++++ 4 files changed, 1556 insertions(+), 12 deletions(-) create mode 100644 docs/source/counterfactual_sir.png create mode 100644 docs/source/counterfactual_sir_search.png create mode 100644 docs/source/explainable_sir.ipynb diff --git a/docs/source/counterfactual_sir.png b/docs/source/counterfactual_sir.png new file mode 100644 index 0000000000000000000000000000000000000000..5644276c6017bf1d9aa7ebbaa87c283e6e76a5d1 GIT binary patch literal 126305 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%0Aubpk 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 VmugilU1i{(`F`ttxu(Y>{sY^vuDAdI literal 0 HcmV?d00001 diff --git a/docs/source/counterfactual_sir_search.png b/docs/source/counterfactual_sir_search.png new file mode 100644 index 0000000000000000000000000000000000000000..cf748a2edde99acb9b1d06df4f31539b53c83a55 GIT binary patch literal 42433 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 D;2Cj6 literal 0 HcmV?d00001 diff --git a/docs/source/explainable_categorical_alternate.ipynb b/docs/source/explainable_categorical_alternate.ipynb index a9e6938b..ce601870 100644 --- a/docs/source/explainable_categorical_alternate.ipynb +++ b/docs/source/explainable_categorical_alternate.ipynb @@ -67,7 +67,7 @@ }, { "cell_type": "code", - "execution_count": 178, + "execution_count": 1, "metadata": {}, "outputs": [ { @@ -106,7 +106,7 @@ }, { "cell_type": "code", - "execution_count": 179, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -165,7 +165,7 @@ }, { "cell_type": "code", - "execution_count": 180, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -221,10 +221,10 @@ "\n" ], "text/plain": [ - "" + "" ] }, - "execution_count": 180, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -295,14 +295,14 @@ }, { "cell_type": "code", - "execution_count": 184, + "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.2989)\n" + "tensor(0.3010)\n" ] } ], @@ -329,17 +329,17 @@ }, { "cell_type": "code", - "execution_count": 187, + "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(5.7317e-06)\n", - "tensor(2988.9890)\n", - "tensor(5026.)\n", - "tensor(9.6378e-06)\n" + "tensor(5.7879e-06)\n", + "tensor(3009.9888)\n", + "tensor(5003.)\n", + "tensor(9.6203e-06)\n" ] } ], @@ -351,6 +351,26 @@ "print(torch.sum(torch.exp(log_weights) * mask_intervened.squeeze())/torch.sum(torch.exp(log_weights)))" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "lw = log_weights\n", + "print(lw.squeeze())\n", + "\n", + "mask_intervened = (tr.nodes[\"__cause____antecedent_match_dropped\"][\"value\"] == 0) \n", + "\n", + "with mwc:\n", + " oth = gather(tr.nodes[\"os_too_high\"][\"value\"], IndexSet(**{\"lockdown\": {2}, \"mask\": {2}}))\n", + " print(oth.shape)\n", + " os = gather(tr.nodes[\"overshoot\"][\"value\"], IndexSet(**{\"lockdown\": {2}, \"mask\": {2}}))\n", + "\n", + "denom = torch.sum(torch.exp(lw.squeeze()) * mask_intervened.squeeze().float()) / torch.sum(torch.exp(lw.squeeze()))\n", + "print(denom/0.25)" + ] + }, { "cell_type": "markdown", "metadata": {}, diff --git a/docs/source/explainable_sir.ipynb b/docs/source/explainable_sir.ipynb new file mode 100644 index 00000000..41fe28a9 --- /dev/null +++ b/docs/source/explainable_sir.ipynb @@ -0,0 +1,1524 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "import numbers\n", + "import os\n", + "from typing import Tuple, TypeVar, Union\n", + "from typing import Callable, Dict, List, Optional\n", + "import math\n", + "\n", + "import matplotlib.pyplot as plt\n", + "import pandas as pd\n", + "import pyro.distributions as dist\n", + "import seaborn as sns\n", + "import torch\n", + "from pyro.infer import Predictive\n", + "\n", + "import pyro\n", + "from chirho.counterfactual.handlers.counterfactual import \\\n", + " MultiWorldCounterfactual\n", + "from chirho.dynamical.handlers.interruption import StaticEvent\n", + "from chirho.dynamical.handlers.solver import TorchDiffEq\n", + "from chirho.dynamical.handlers.trajectory import LogTrajectory\n", + "from chirho.dynamical.ops import Dynamics, State, on, simulate\n", + "from chirho.explainable.handlers import SearchForExplanation\n", + "from chirho.explainable.handlers.components import ExtractSupports\n", + "from chirho.indexed.ops import IndexSet, gather, indices_of\n", + "from chirho.interventional.ops import Intervention, intervene\n", + "from chirho.observational.handlers import condition\n", + "\n", + "R = Union[numbers.Real, torch.Tensor]\n", + "S = TypeVar(\"S\")\n", + "T = TypeVar(\"T\")\n", + "\n", + "\n", + "sns.set_style(\"white\")\n", + "\n", + "seed = 123\n", + "pyro.clear_param_store()\n", + "pyro.set_rng_seed(seed)\n", + "\n", + "smoke_test = \"CI\" in os.environ\n", + "num_samples = 10 if smoke_test else 300\n", + "exp_plate_size = 10 if smoke_test else 2000" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "class SIRDynamics(pyro.nn.PyroModule):\n", + " def __init__(self, beta, gamma):\n", + " super().__init__()\n", + " self.beta = beta\n", + " self.gamma = gamma\n", + "\n", + " def forward(self, X: State[torch.Tensor]):\n", + " dX: State[torch.Tensor] = dict()\n", + " dX[\"S\"] = -self.beta * X[\"S\"] * X[\"I\"]\n", + " dX[\"I\"] = self.beta * X[\"S\"] * X[\"I\"] - self.gamma * X[\"I\"]\n", + " dX[\"R\"] = self.gamma * X[\"I\"]\n", + "\n", + " return dX\n", + "\n", + "\n", + "# TODO add running overshoot to states?\n", + "\n", + "\n", + "class SIRDynamicsLockdown(SIRDynamics):\n", + " def __init__(self, beta0, gamma):\n", + " super().__init__(beta0, gamma)\n", + " self.beta0 = beta0\n", + "\n", + " def forward(self, X: State[torch.Tensor]):\n", + " self.beta = (1 - X[\"l\"]) * self.beta0\n", + " dX = super().forward(X)\n", + " dX[\"l\"] = torch.zeros_like(X[\"l\"])\n", + " return dX" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.15116800367832184\n" + ] + } + ], + "source": [ + "init_state = dict(S=torch.tensor(99.0), I=torch.tensor(1.0), R=torch.tensor(0.0))\n", + "start_time = torch.tensor(0.0)\n", + "end_time = torch.tensor(12.0)\n", + "step_size = torch.tensor(0.1)\n", + "logging_times = torch.arange(start_time, end_time, step_size)\n", + "init_state_lockdown = dict(**init_state, l=torch.tensor(0.0))\n", + "\n", + "# We now simulate from the SIR model\n", + "beta_true = torch.tensor([0.03])\n", + "gamma_true = torch.tensor([0.5])\n", + "sir_true = SIRDynamics(beta_true, gamma_true)\n", + "with TorchDiffEq(), LogTrajectory(logging_times) as lt:\n", + " simulate(sir_true, init_state, start_time, end_time)\n", + "\n", + "sir_true_traj = lt.trajectory\n", + "\n", + "\n", + "def get_overshoot(trajectory):\n", + " t_max = torch.argmax(trajectory[\"I\"].squeeze())\n", + " S_peak = torch.max(trajectory[\"S\"].squeeze()[t_max]) / 100\n", + " S_final = trajectory[\"S\"].squeeze()[-1] / 100\n", + " return (S_peak - S_final).item()\n", + "\n", + "\n", + "print(get_overshoot(sir_true_traj))" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "def bayesian_sir(base_model=SIRDynamics) -> Dynamics[torch.Tensor]:\n", + " beta = pyro.sample(\"beta\", dist.Beta(18, 600))\n", + " gamma = pyro.sample(\"gamma\", dist.Beta(1600, 1600))\n", + " sir = base_model(beta, gamma)\n", + " return sir\n", + "\n", + "\n", + "def simulated_bayesian_sir(\n", + " init_state, start_time, logging_times, base_model=SIRDynamics\n", + ") -> State[torch.Tensor]:\n", + " sir = bayesian_sir(base_model)\n", + "\n", + " with TorchDiffEq(), LogTrajectory(logging_times, is_traced=True) as lt:\n", + " simulate(sir, init_state, start_time, logging_times[-1])\n", + " return lt.trajectory" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "def MaskedStaticIntervention(time: R, intervention: Intervention[State[T]]):\n", + "\n", + " @on(StaticEvent(time))\n", + " def callback(\n", + " dynamics: Dynamics[T], state: State[T]\n", + " ) -> Tuple[Dynamics[T], State[T]]:\n", + "\n", + " with pyro.poutine.block():\n", + " return dynamics, intervene(state, intervention)\n", + "\n", + " return callback" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "overshoot_threshold = 20\n", + "lockdown_time = torch.tensor(1.0)\n", + "mask_time = torch.tensor(1.5)\n", + "\n", + "\n", + "def policy_model():\n", + "\n", + " lockdown = pyro.sample(\"lockdown\", dist.Bernoulli(torch.tensor(0.5)))\n", + " mask = pyro.sample(\"mask\", dist.Bernoulli(torch.tensor(0.5)))\n", + "\n", + " lockdown_efficiency = pyro.deterministic(\n", + " \"lockdown_efficiency\", torch.tensor(0.6) * lockdown, event_dim=0\n", + " )\n", + "\n", + " mask_efficiency = pyro.deterministic(\n", + " \"mask_efficiency\", (0.1 * lockdown + 0.45 * (1 - lockdown)) * mask, event_dim=0\n", + " )\n", + "\n", + " joint_efficiency = pyro.deterministic(\n", + " \"joint_efficiency\",\n", + " torch.clamp(lockdown_efficiency + mask_efficiency, 0, 0.95),\n", + " event_dim=0,\n", + " )\n", + "\n", + " lockdown_sir = bayesian_sir(SIRDynamicsLockdown)\n", + " with LogTrajectory(logging_times, is_traced=True) as lt:\n", + " with TorchDiffEq():\n", + " with MaskedStaticIntervention(lockdown_time, dict(l=lockdown_efficiency)):\n", + " with MaskedStaticIntervention(mask_time, dict(l=joint_efficiency)):\n", + " simulate(\n", + " lockdown_sir, init_state_lockdown, start_time, logging_times[-1]\n", + " )\n", + "\n", + " trajectory = lt.trajectory\n", + "\n", + " t_max = torch.max(trajectory[\"I\"], dim=-1).indices\n", + " S_peaks = pyro.ops.indexing.Vindex(trajectory[\"S\"])[..., t_max]\n", + " overshoot = pyro.deterministic(\n", + " \"overshoot\", S_peaks - trajectory[\"S\"][..., -1], event_dim=0\n", + " )\n", + " os_too_high = pyro.deterministic(\n", + " \"os_too_high\",\n", + " (overshoot > overshoot_threshold).clone().detach().float(),\n", + " event_dim=0,\n", + " )\n", + "\n", + " return overshoot, os_too_high\n", + "\n", + "\n", + "with ExtractSupports() as s:\n", + " one_run = policy_model()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "def importance_infer(\n", + " model: Optional[Callable] = None, *, num_samples: int\n", + "):\n", + " \n", + " if model is None:\n", + " return lambda m: importance_infer(m, num_samples=num_samples)\n", + "\n", + " def _wrapped_model(\n", + " *args,\n", + " **kwargs\n", + " ):\n", + "\n", + " guide = pyro.poutine.block(hide_fn=lambda msg: msg[\"is_observed\"])(model)\n", + "\n", + " max_plate_nesting = 9 # TODO guess\n", + "\n", + " with pyro.poutine.block(), MultiWorldCounterfactual() as mwc:\n", + " log_weights, importance_tr, _ = pyro.infer.importance.vectorized_importance_weights(\n", + " model,\n", + " guide,\n", + " *args,\n", + " num_samples=num_samples,\n", + " max_plate_nesting=max_plate_nesting,\n", + " normalized=False,\n", + " **kwargs\n", + " )\n", + "\n", + " return torch.logsumexp(log_weights, dim=0) - math.log(num_samples), importance_tr, mwc, log_weights\n", + "\n", + " return _wrapped_model" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tensor(1.)\n" + ] + } + ], + "source": [ + "print(torch.exp(logp))" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [], + "source": [ + "# conditioning (as opposed to intervening) is sufficient for\n", + "# propagating the changes, as the decisions are upstream from ds\n", + "\n", + "# no interventions\n", + "policy_model_none = condition(\n", + " policy_model, {\"lockdown\": torch.tensor(0.0), \"mask\": torch.tensor(0.0)}\n", + ")\n", + "unintervened_predictive = Predictive(\n", + " policy_model_none, num_samples=num_samples, parallel=True\n", + ")\n", + "unintervened_samples = unintervened_predictive()\n", + "\n", + "# both interventions\n", + "policy_model_all = condition(\n", + " policy_model, {\"lockdown\": torch.tensor(1.0), \"mask\": torch.tensor(1.0)}\n", + ")\n", + "intervened_predictive = Predictive(\n", + " policy_model_all, num_samples=num_samples, parallel=True\n", + ")\n", + "intervened_samples = intervened_predictive()\n", + "\n", + "policy_model_mask = condition(\n", + " policy_model, {\"lockdown\": torch.tensor(0.0), \"mask\": torch.tensor(1.0)}\n", + ")\n", + "mask_predictive = Predictive(policy_model_mask, num_samples=num_samples, parallel=True)\n", + "mask_samples = mask_predictive()\n", + "\n", + "policy_model_lockdown = condition(\n", + " policy_model, {\"lockdown\": torch.tensor(1.0), \"mask\": torch.tensor(0.0)}\n", + ")\n", + "lockdown_predictive = Predictive(\n", + " policy_model_lockdown, num_samples=num_samples, parallel=True\n", + ")\n", + "lockdown_samples = lockdown_predictive()" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABKMAAAJ6CAYAAAD0G4HMAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzddZwU9f/A8dd2XDfd7NHNISUhiEEoFhgI+DV+iIUBiIiFCIIoKKioICYiiK2IoALSEtLdcd3bO78/5na55YKjjvD91Hns3mdmZz47O+zuve/9eX80iqIoCCGEEEIIIYQQQghRDrQXuwNCCCGEEEIIIYQQ4r9DglFCCCGEEEIIIYQQotxIMEoIIYQQQgghhBBClBsJRgkhhBBCCCGEEEKIciPBKCGEEEIIIYQQQghRbiQYJYQQQgghhBBCCCHKjQSjhBBCCCGEEEIIIUS5kWCUEEIIIYQQQgghhCg3EowSQgghzpKiKBe7C0JcMi6Hfw+XQx/9Lqe+CiGEEGdKglFCCCHO2tSpU0lMTDyj5fDhw+e9H127diUxMZEDBw6c932XZNmyZQwePPiCHmPVqlUkJibSv3//C3qcy8FTTz1FYmIi8+fPv9hduaguxrV+Ok6nk7fffpv33nvvnPd14MABEhMT6dq1a1C7//3D4/Gc1X6zs7N55ZVXWLBgQZkfc/jwYRITE7n66qtLbbsQint/Ka9jCyGEEOVBf7E7IIQQ4vKVmJhIr169gtrS0tL4+++/sVqtXHPNNUUeY7Vay6t7F8zRo0e57777SEhIuNhdEeKimzFjBlOnTuWhhx662F0p0bhx45g/fz6vvPLKxe7Kacn7ixBCiP8CCUYJIYQ4a9deey3XXnttUNuqVav4+++/iYqKYuLEieXSj1mzZuF2u6lUqVK5HM/n85XLcZo0acJPP/2ExWIpl+MJcTbKYzjZTz/9BIBef3ZfXc+mjwkJCfz0008YDIazOubZKun95WL1RwghhLgQJBglhBDisletWrWL3YULwmKxULt27YvdDSEuuovx78BgMFxS//4utf4IIYQQ50JqRgkhhCh399xzD4mJiezcuZMBAwbQuHFjOnToEMh+8Hg8zJ07l3vvvZc2bdrQsGFDkpKSuOeee/jxxx+L7K+kOjpOp5MZM2bQu3dvmjZtSsuWLRkwYACLFy8usW+//fYbgwYN4qqrrqJFixb07duXzz77DLfbDah1svzDD0+cOFFsfZvdu3fzzDPP0LFjRxo1akSHDh14+umn2b179xmdi9JqRu3fv58RI0Zw9dVX06hRI66++mpGjRrFkSNHimzrdDp55513uPnmm2nRogXNmzfn5ptv5t1338Vut5d4Lk514sQJxo8fT69evWjevDmNGjWic+fODB8+nL179wZt6+/72LFj2bt3L48++iht2rShSZMm9O3bl3nz5hV7jP379/P000/ToUMHmjVrxt13383atWvL3MfC/vzzT+677z6SkpJo3LgxPXr04PXXXyczMzOwTXZ2No0bN6Zp06bk5uYWu5/evXuTmJjIjh07Am1ncm35a6v99NNPjB49mubNm9O6dWvGjx8f6IP/vDZr1oyWLVvSr18/PvvssxJrJPnrNHXv3j3wOrzyyislPofvv/+eu+66ixYtWtCkSRN69erF9OnTS3z9y3oNd+3albfffhuAd999l8TERKZOnVrsPgtTFIUvv/ySm2++mWbNmnH11VczceJEHA5HsdsXVzOqrOctMTGRb775BoDnnnsuqPbYiBEjSExMZPXq1TzyyCM0adKEq666ilmzZp22RtPhw4d57LHHaNWqFS1atGDgwIEsW7asyHal1fnyXxuTJ08O/FzS+0tp/Tmb95zMzExmz55Nz549adKkCe3atWPkyJEcPXq0yGM2bNjAww8/TNeuXQP7f/TRR9mwYUOx50YIIYQ4HcmMEkIIcdE88sgj5OXl0alTJzZv3kyjRo1QFIVHHnmExYsXExERQdOmTTGZTOzevZvVq1ezevVq0tLSGDBgQKn7zs3NZdCgQWzatIno6GiuuuoqXC4Xa9asYdWqVQwdOpRHHnkk6DEvv/wyn376KQaDgVatWmGxWFi7di0vvfQSa9asYfLkySQmJtKtWzcWLVqExWKhW7duREdHB/axePFiHn/8cZxOJ4mJibRo0YJ9+/bx3XffsXDhQt588026dOlSpnNx7NixYp/bihUrGDJkCPn5+dhsNpo1a8a+ffv4+uuvWbRoER9++CGNGjUC1F/6/+///o/ly5eTkJBAmzZtUBSFtWvXMnnyZJYvX87s2bPRaDSlns+9e/dy1113kZ6eTp06dejQoQP5+fls2rSJBQsW8Pvvv/P9999TsWLFoMft3r2b2267DZPJRPPmzcnMzGT9+vU8++yzZGVlBRVp3rx5M4MHDyYrKytw7jZv3szAgQOpXLlyqf071eTJk3n33XfR6XS0bNmSqKgoNmzYwAcffMDPP//Mxx9/TNWqVQkPD6dLly78+uuv/P777/Tp06dI/3fs2EG9evVITEwEzu7aAnjrrbc4duwY7du35+jRo9SuXRuHw8Fdd93Fzp07qVatGh06dMBut7NmzRrWr1/Pv//+y2uvvVZkX4899hgHDhygdevW1KxZkzVr1vDJJ5+wadMmvvjiC3Q6HaC+/s888wzfffcdRqOR1q1bY7VaWbNmDW+++Sa//PILs2bNIioqKrDvM7mGu3XrxooVK9i5cyc2my0QNDqd4cOH8+2332K1Wmnbti0Oh4OZM2eyZMmSMr2+Z3LeevXqxYYNGzh06BDNmjWjatWqRbIpR48eTXp6Oh07dmT37t2nfQ55eXn079+f/Px82rRpQ05ODitXrmTFihU8//zz3HXXXWV6Hqc63ftLcc72Pee5555j0aJFNGnShKuvvpo1a9Ywf/58/v77b3744QfCwsIAWLlyJf/73//wer20aNGCRo0acejQocC/mffff5/27duf1fMVQgjxH6YIIYQQ59HKlSsVm82mdOnSpcRt7r77bsVmsymdOnVSMjIyFEVRFK/XqyiKovz666+KzWZTbr31ViU3Nzfoce+9955is9mU7t27B7V36dJFsdlsyv79+wNtw4cPV2w2mzJs2DAlLy8v0L5v377A9suXLw+0L1y4ULHZbErHjh2V3bt3B9rT0tKU6667TrHZbMqvv/6qKIqiHDp0KLBtYcnJyUqzZs2UxMREZf78+UHr5s6dqyQmJirNmzdXjh8/XqZz4T+X/fr1C2yfnp6uJCUlKfXr11d++umnoGN8+eWXis1mU6655hrF6XQqiqIoa9asUWw2m3L33XcrLpcr6Hldc801is1mU1auXKmczoMPPqjYbDZlxowZQe3Z2dnKrbfeqthsNmXatGmBdn/fbTab8vjjjwe9BrNnz1ZsNpvStm1bxefzBZ5z7969FZvNprz33nuBbV0ulzJixIjAvubNm3favv7++++KzWZTrrrqKuXff/8NtDudTmXUqFGKzWZTbr755sCxFy1apNhsNuWBBx4osq833nhDsdlsyocffhhoO9Nra8qUKYrNZlMSExOVjRs3Btq9Xq/yzTffKDab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ULazuYZr1KgBEJipsXPnzkHBmFO1b9+eBx54gPfff5+bbrqJq666CoCVK1fSsGHDMl1HZ3re/H2cNm0a69evP+fC2zVr1mTXrl10796dVq1akZKSwvr16zEYDEyYMCFoWNyAAQP45Zdf+PXXX7nuuutITExk165d7Nu3jz59+vDtt98G7buk95filMd7zosvvsg999zDuHHj+Oqrr6hduza5ubmsW7cOp9PJ/fffHzi/QgghRFlJZpQQQohLysCBA5k0aRKNGzdm586dLFmyBLvdzj333MN3330XCAgtWbKk1P3ExMTw1Vdf8dhjjxEfH8+aNWvYsGEDNWvW5Nlnn2XmzJlFZs575ZVXeP3112nYsCHr1q3j77//pnLlyjz//PO88sorge20Wi0TJ06kdu3abN26leXLlwfqWV177bV8/fXX9OzZk7S0NBYtWkR2dja33nor8+bNCyqGfbauvfZa5s2bR+/evcnJyeGPP/4gNTWVLl26MHv27EDmCahDft544w2efPJJatSowT///MMff/yBz+fjnnvuYcGCBaedqU6n0zFr1iwGDhxIdHQ0y5YtY+3atVStWpUXX3yRb775hvDwcDZt2nROAanq1aszd+5c+vfvj8PhYMmSJYSEhDBt2jQ6dux4RvsaPnw406ZNo02bNmzfvp0//viDkJAQ/u///o9vvvmGWrVqFfu4Hj16BK6LU4fo+Z3NtVUSk8nEhx9+yAMPPEBMTAyrVq1i2bJlWK1WHnroIebOnXvGM70VptVqmTx5MuPGjaNRo0b8888/LF++nAoVKvD0008zd+7cIvWEzvQa7tatGwMHDsRqtfLXX3+xbt260/brySef5M0336Rhw4asXbuWzZs3c/PNNzNjxowyPa8zPW/9+/cP1Ev766+/is1IOhMVKlTg888/p1GjRixbtoxdu3bRpUsX5syZQ9euXYO2bdy4MZ9++ikdO3YkNTWVpUuXEhsby8yZM+nZs2eRfZf2/lKcC/2e06xZMz7//HN69OhBdnY2ixcvZsuWLbRo0YK33nqLp5566pz2L4QQ4r9Jo5xLgQchhBDiEtCxY0eSk5NZvHjxOWUACCGEEEIIIS48yYwSQghxWcvKyiI9PR2NRhOobSSEEEIIIYS4dEnNKCGEEJel9PR0Bg8eTHp6Oh6PhxYtWpR5aJQQQgghhBDi4pHMKCGE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3749SUlJ7N69u8yfQX/88Qe9e/emcePG9OjRgwULFgStL8tnotPp5J133uG6666jcePGXHvttbz//vuBYT4jRozgm2++4ciRIyQmJjJ//vxiz+HUqVO57rrr+O233+jZsyeNGzemT58+rF+/ng0bNnDbbbfRpEkTevbsWWSo0c6dO3nwwQdp0aIFLVq04OGHH+bQoUNB22zfvp2hQ4dy1VVX0bBhQzp27Mgrr7wSlKlSls93/7C10w3lGj58OF6vlzlz5hATE1PqtgB//vknCxcuZOTIkYSHh5e4XUJCAgMHDgwEGAB0Oh3Vq1fn4MGDAIEstK5duwY9tk2bNhw/fpwdO3actj9lUaVKFaKiojh69ChQ8vWYnp7O119/Tc+ePQH1O+E111wDwMiRI4P6uXz5cu68805atmxJmzZtePLJJzl27FjQcffv38+jjz5K+/btadasGffcc0+ZhwuWds0XN+Tujz/+oG/fvjRp0oQePXrwww8/0L179yIlHvbu3ct9990X+O48ceLEIllfvXr1YubMmYERD/7vxqWVi1ixYgUej4fu3bsH2oxGI507dy71e2VZrhOAO+64g7Zt2wY9tlatWuTn55OWllbi/sV/gwSjhPiPe/bZZ4mKijrtcL3nn3+ecePG0a1bN6ZPn85dd93Fp59+ypAhQ864OORTTz1Fy5Yteffdd+nZsycffPABc+fOBdQv3HFxcXTq1Ik5c+YQHx9Peno6/fr1Y8uWLYwePZpJkybh8/m46667iqTlT506lfvvv58JEyZw8803U61atSJDF3744QciIyPp1KkTiqLw8MMP8+WXXwZSiJs3b84TTzxR5Evz7Nmz2bt3L+PGjeOVV15h8+bNDB8+HIDbbruNW2+9FSh5aF5qaiq33nora9eu5YknnmDq1KlUrlyZhx9+mO+++y5o28mTJ+Pz+XjjjTd45plnWLJkCa+++iqgpuU/+OCD2O12JkyYwLRp04iMjOT//u//Sk2pFkIIcflJT09n8+bNdOnSpcQsgsjISNq1axcI5PTu3ZstW7YEfSZkZ2fz119/0adPHwDWrFnDwIEDMZvNvPnmmzz77LOsXr2aAQMGBAVQvF4vH330EWPHjmXkyJHUrFmzzJ9Bzz//PAMHDmT69OlUqFCBESNGBIZcleUzUVEUHnroIT744ANuu+023n33Xa677jrefPNNxowZA6gBtk6dOhEXF8ecOXPo3Llziefy+PHjvPbaazz00EO89dZbZGdn8+ijjzJs2DBuu+023nnnHRRF4Yknngicg3379tGvXz/S0tIYP348Y8eO5dChQ/Tv3z/wy3RycnJgCOVrr73GjBkzuPHGG/nkk0+YPXt2UB9K+3wH6Ny5c5mGck2YMIEvvviCevXqlbqd/zyOHz+epKQkrrvuulK3veGGG3jqqaeC2rKyslizZk0g6y4qKgqgSN0pfxDi1EDd2crIyCAjIyMow+vU67F27dosXLgQj8dDly5dAIiPjw/8gfD//u//AvcXLFjA4MGDqVixIm+88QYjR45k/fr13HHHHYHXcvfu3fTt25fDhw/z3HPPBbLI7r333sDws9KUds2fauXKlQwZMoSKFSsydepU7rrrLsaMGVMkOAYwbty4wHfn66+/nhkzZvDll18GbXPddddx4sSJQD/j4+NPWy5iz549hISEEBcXF9RevXp1kpOTycvLK/ZxZblOGjZsyEsvvURkZGTQdosWLSI6Opro6OgS+yX+IxQhxH/S3Xffrdx9992KoijK77//rthsNuWNN94IrO/SpYsyfPhwRVEUZdeuXYrNZlPee++9oH0sWLBAsdlsyh9//FHicWw2mzJlyhRFURRl5cqVis1mUyZPnhy0TdeuXZUHH3yw2GMriqK88cYbSuPGjZXDhw8H2pxOp3LNNdcojzzyiKIoinLo0CHFZrMpzz77bNC+p0yZojRr1kyx2+2KoiiKz+dTOnfurDz//POKoijKsmXLFJvNpvz4449Bj3vqqaeU9u3bK263O9CnLl26KB6PJ7DN1KlTFZvNpqSnpweOZbPZSnz+EyZMUBo2bBj0PBRFUe69916lffv2itfrDTymf//+QduMGDFCadasmaIoipKcnKzYbDblu+++C6zPzs5WXn31VWXnzp2KEEKIK8emTZsUm82mfPrpp6Vu99prryk2m03JzMxU8vLylGbNmilvv/12YP3cuXOVevXqKcePH1cURVHuuOMOpWfPnkGfa3v37lXq168fONa8efMUm82mLFiwILBNWT6D/J+Hf/75Z2CbAwcOKDabTfn4448VRSnbZ+Iff/yh2Gw25Ycffgja5p133lFsNlvgeMOHD1e6dOlS6vkprk/vvfeeYrPZlLlz5wbafvnlF8Vmsylbt25V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LtevX48LL7wQRUVFOPXUU7FixYok1pC0xvX+/vvv46STTsKIESMwe/ZsVFZWHu5qH3atce2OHj0aAwYMiJn8fv/hrvphk+ic3HXXXfVe4yuvvNLgMV544QVMmDABRUVFuPnmmxEMBtui6odV/Hm56aab6p2TAQMGNHiXzZqamnr7jh07ti1fQqtq7LdGZ31vaeycdOb3lcbOS2d+b2novCTlvYURduedd7IzzjiDbdq0iX3yySesqKiI/etf/0p2tVKOruvsd7/7Hfv973/Pfv31V/bdd9+xk08+md17773JrlpKe//991lhYSGbN29esquSsm699VZ2yimnsA0bNrBvvvmGjR07lr3++uvJrlZK+t3vfsf+8pe/sB07drBPP/2UjRgxgn3yySfJrlbKCIVCbPbs2aywsJCtWbOGMcbfO8844wx2/fXXs61bt7KnnnqKjRgxgu3bty/JtW3fEp3L0tJSNnr0aPbAAw+wHTt2sPfff58NGzaMffbZZ8mtbCfVGtf7hg0b2PDhw9k777zDfv75Z3bJJZewq666qi1fRqtrjWv3wIEDrLCwkO3evZuVlpZak67rbfhKWk+ic8IYYzNmzGBPP/10zGsMBAIJj/HRRx+xUaNGsX//+99sw4YN7LTTTmN33HFHW72EwyLReamtrY05Hz/88AMbOnQo+/TTTxMe4/vvv2djxoyJeUx5eXlbvoxW09hvjc763tLYOenM7ytN/S7trO8tjZ2XZLy3dPowyu/3s2HDhsV88C1ZsoRdcsklSaxVatq6dSsrLCxkZWVlVtl7773Hxo8fn8Rapbaqqir2m9/8hp177rkURh2kqqoqNnjwYLZ27Vqr7Omnn2Y33XRTEmuVmqqrq1lhYSH75ZdfrLI5c+ak7AdyW9uyZQs788wz2RlnnBHzw+Kbb75hI0eOZH6/39r38ssvZ48++miyqtruNXQuX3vtNTZlypSYfW+99VZ23XXXJaOanVprXe9//etfYz7/iouL2YABA9ju3bsP7ws4TFrr2v3666/ZuHHjDnt920JD54QxxiZMmMC+/PLLZh1n+vTpMdfRd999x4YPH97gD8z2rrHzYjdz5kx2ww03NHicf/zjH+yCCy44XNVsU4391uis7y2NnZPO/L7S1O/Szvre0pLf623x3tLpu+lt3rwZqqqiqKjIKhs1ahQ2bNgAXdeT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PXvi+eefx4wZM7By5Ur06dMn4WOSdZ2QjoXCKEI6gfT0dIwcOTKm7IQTTsDxxx+Pt99+G/PmzUtKveLr1Nl09tdPCCGkeT777DM88MADuOaaazBnzhyrfMyYMTj77LNx/fXX46abbkJhYWGL/sBEUtPLL78Mj8eDp59+GmlpaQCA4447DpMnT8Yrr7yC2267DXv37sULL7yAW2+91WotdPzxx2P//v346quvGgyj4oMSTdNw1113YeDAgfjb3/4GgF+PmzZtwuLFi3HmmWcC4N8rI5EIFi5ciMmTJ0MUW9YBZ9CgQejVq1dM2eDBg3HyySfjtddew5133tno45988kkMHz4cQ4YMadHztqVE38dby0knnYSHH34Yr7/+Oq644opmP27//v14/fXX8be//c26TsaPH49TTz0VzzzzDO66666Ej0vWdUI6FvrXJ6ST8ng8cLlcEAQhpvzDDz/EtGnTUFRUhHHjxuG2225DTU0NAN6Uev78+QCA3/72tzFd8yKRCO6//36MGzcOI0eOxMyZM7Fr165G62DvpmY2Q169ejVmzpyJESNGYNy4cVi8eDE0TQPAuwPu27cP77zzDgYMGIC9e/cCAIqLi3HddddhzJgxGDFiBC6//HL89NNP1vPs3bsXAwYMwPPPP48pU6ZgxIgRePLJJzFgwAB89tlnMXX6+eefMWDAAHz66acAgHA4jPvvvx8TJ07E0KFDccYZZ+DDDz+MeczkyZPx6KOP4r777sMJJ5yA4cOH48orr8TOnTsB8Kbbjz/+eL3XHN9Nr7S0FPPnz8fEiRMxfPhwnHfeefi///u/eufs1Vdfxd/+9jeMGTMGRUVF+POf/4zy8nJrn927d+OPf/wjxo4dixEjRuCCCy5otdZshBBC2t7jjz+Ofv36Yfbs2fW2ORwO3HnnnZAkyWoVMnPmTEybNq3evrNmzbJ+FALA999/j0suuQQjRozAmDFjMG/ePFRWVlrb3377bQwePBgrVqzAuHHjMGbMGGzdurXZnzOff/45zjzzTKuL2MqVK2O2N+dzLxwOY8mSJZgyZQqGDRuGU045BUuXLoWu6wCAm266Ce+88w727duHAQMG4O233054Dh977DFMmTIFn376KaZOnYphw4bhrLPOwg8//ID169fj/PPPx/DhwzF16lSsXr065rG//vorrr76ahxzzDE45phjMHv2bOzZsydmn82bN2POnDk47rjjMGTIEEyYMAF33XUXQqGQtU9zPsPNbmuNdcvq168fZs6caQVRAJCWloZu3bph9+7dAIBVq1bB5XLhvPPOi3nsww8/3KIhAt544w38+OOPuOOOO+B0OgHAaoU2efLkmH3Hjh2LAwcO4Jdffmn28RvTq1cv5OTkoLi4GEDD12NlZSXefPNNTJ06FQD/3vfb3/4WADB//vyYen799deYPn06Ro0ahbFjx+L666/H/v37Y553586dmDt3rvWd9tJLL212d8HGrvlEXe4+//xzTJs2DcOHD8epp56K999/HyeffHK9f6Pt27fjyiuvtL4f//3vf4eqqjH7nHHGGXj++eehKIp1HpoaEmL16tVQVRUnn3yyVeZ0OnHiiSe26LtjMq8TkroojCKkE2CMQVVVqKqKSCSCsrIyPPDAA1AUBeeee6613xNPPIHrrrsOI0eOxKOPPorZs2fj448/xqWXXopQKIQTTzwRf/rTnwDwL8azZs2yHvvhhx9iy5YtuPfee3H77bdj06ZNuPbaa1tc1xtuuAGjRo3CU089halTp+LZZ5/FihUrrOfMz8/HxIkTsXz5cnTt2hWVlZW48MIL8eOPP+LWW2/FAw88AF3XcfHFF9drsv/YY4/hD3/4A+6//36cc8456N27Nz744IOYfd5//31kZ2dj4sSJYIxh9uzZeOONN3DFFVfgySefRFFREa699tp6X6hfeuklbN++HYsWLcJdd92FTZs2WS3Ozj//fOvL4PLly3H++efXe93l5eU477zz8P333+Paa6/FY489hp49e2L27Nl49913Y/Z96KGHoOs6HnzwQdx444347LPPcM899wDgTduvvvpqBINB3H///XjiiSeQnZ2NP/3pT02Gg4QQQtqfyspKbNq0CZMmTar3ByRTdnY2TjjhBCvIOfPMM/Hjjz/GvO/X1tbiP//5D8466ywAwHfffYcZM2bA7Xbj4Ycfxs0334xvv/0Wl112WUyAomkali1bhrvvvhvz58/HkUce2ezPmdtuuw0zZszAk08+iW7duuGmm27C5s2bATTvc48xhj/+8Y949tlncf755+Opp57ClClT8PDDD1vDD8yaNQsTJ05Efn4+li9fjhNPPLHBc3ngwAHce++9+OMf/4hHHnkEtbW1mDt3Lq677jqcf/75WLJkCRhjuPbaa61zsGPHDlx44YWoqKjAfffdh7vvvht79uzBRRddhIqKCgA8VLv44osRDAZx77334plnnsHpp5+Ol19+GS+99FJMHRr7DAeAE088EcuXL2+0hc/06dPx+9//PqZs165d2LJli9Uy7ueff0afPn3w3Xff4ZxzzsGQIUMwefJkLF++vMHjxvP7/Xj00Udx1llnYfjw4VZ5Tk4OAMSMHwrACsLig7qDVVVVhaqqKvTu3dsqi78ejzrqKHzyySdQVRWTJk0CAHTt2tX6I+Cf/vQna3nlypWYOXMmunfvjgcffBDz58/HDz/8gAsuuMD6t9y6dSumTZuGvXv34pZbbsHf//53CIKAyy+/vFljrTZ2zcdbs2YNZs2ahe7du+Oxxx7DxRdfjNtvv71eOAYAixYtsr4f/7//9//wzDPP4I033ojZZ8qUKSgpKbHq2bVr1wa/d5q2bdsGr9drdZE09enTB6WlpfD7/U2+5mRfJySFMUJIh3bJJZewwsLChNNTTz1l7VddXc2GDh3Kbr311pjHf/fdd6ywsJC98sorjDHG3nrrLVZYWMj27Nlj7TNp0iQ2ceJEpiiKVfbQQw+xwsJCVldX12DdCgsL2aOPPsoYY2zNmjWssLCQPfTQQzH7TJ48mV199dUxzzVv3jxr/cEHH2TDhg1je/futcrC4TD77W9/y6655hrGGGN79uxhhYWF7Oabb4459qOPPspGjhzJgsEgY4wxXdfZiSeeyG677TbGGGNfffUVKywsZB988EHM42644QY2btw4FolErDpNmjSJqapq7fPYY4+xwsJCVllZaT1XYWFhg6///vvvZ0OGDIl5HYwxdvnll7Nx48YxTdOsx1x00UUx+9x0001s5MiRjDHGSktLWWFhIXv33Xet7bW1teyee+5hv/76KyOEEJJaNm7cGPM53JB7772XFRYWsurqaub3+9nIkSPZ448/bm1fsWIFGzhwIDtw4ABjjLELLriATZ06Neaza/v27WzQoEH1PvNXrlxp7dOczxnzM++LL76w9tm1axcrLCxkL774ImOseZ97n3/+OSssLGTvv/9+zD5LlixhhYWF1vPNmzePTZo0qdHzk6hOTz/9NCssLGQrVqywyj766CNWWFjIfvrpJ8YYY9dddx074YQTYr7PVFVVsVGjRrF7772XMcbYl19+yS6++OJ633mmTp3KZs6caa039Rl+sILBILvgggvYyJEjrfP5+9//no0dO5Ydd9xx7JVXXmHffPMNu+WWW1hhYSF74403mnXcF198kQ0cOJBt3749pryiooKNHj2anXXWWWzDhg2srq6OffbZZ+w3v/kNKywsZO+8806z625eY7t27WKRSIRFIhHm8/nYpk2b2IwZM9jgwYPZ5s2bY/a1X4+MMfbnP/+ZnXnmmTFl5ne/t956izHGmKZpbNy4cTH/Hozx63LIkCHsvvvus441duzYmH/LSCTCTj31VHbuuec2+Dqac82b33XXrFnDGGNs+vTp7Mwzz2S6rluPef/99xN+P168eLG1j67rbOLEiWz27Nn16nHsscey+++/v8F6xrv11lvZhAkT6pX/4x//YIWFhdb7RWPa4johHRO1jCKkExgyZAjefPNNvPnmm1ixYgWee+45XH755XjooYfw0EMPAQDWr18PRVGsJs6m0aNHo2fPnk3+NWj48OFwOBzWutnvv7a2tkV1LSoqilnv1q0bAoFAg/uvXr0agwYNQkFBgdX6SxRF/OY3v8E333wTs++gQYNi1s8880wEAgGrq95///tfFBcXW381Xr16NQRBwMSJE61jq6qKyZMno6ysDFu2bLGONWzYMEiSFFNvAAgGg8163d9++y2KiorQs2fPenUsKyvD9u3brbL48Qa6detmPU9eXh769++PW2+9FfPmzcN7770HXdcxf/58GkeEEEJSEDNuTW//jE3E/AxijCEtLQ0nnXRSTLfyDz74AMcffzwKCgoQDAaxYcMGqxWw+fl2xBFH4Kijjqp3tyv752dLPmdGjx5tLcd/L2jO5963334LWZYxZcqUevuYx2ipY445Jua1AMCIESOssuzs7Jh6rlmzBmPGjIHb7bbOU3p6OkaPHm19zxg/fjxeeeUVuFwubN26Ff/3f/+HJ598EpWVlVaXKVNjn+EHw+fz4eqrr8b//vc/LF682DqfkUgEVVVVuOOOO3DxxRfj+OOPx8KFCzF+/HirpVBTXn31VUyePBlHHnlkTHmXLl2wbNkyaJqG888/H6NGjcI999xjtYj3eDwtfh0nn3wyhgwZgiFDhuCYY47BtGnTsGvXLixevLjeXeriv8/t2bOn3nhT8Xbs2IGysrJ633N79+6NoqIi61r69ttvMWnSJKSnp1v7yLKM008/HZs2bWqypVBj17ydoij44YcfcMopp8S0eJwyZQpkuf6wzvbjCoKAnj17Jjxujx49rGEsmsN8f2lIc8Z0asvrhHQsNIA5IZ2A1+vFsGHDYsrGjx+PQCCAZ599Fpdddpk1LpT5xcwuLy8PdXV1jT6HfdwCIPrhZY7p0FzxdwARRbHRD8rq6mrs2rWrwebs9i948XXs06cPioqK8MEHH+D//b//hw8++AC9e/e2vqhWV1eDMRbzxdWutLTU+kIU/4Ha0tdfU1ODI444ol65+e9h/8KR6LnMc2TeUefJJ5/Ep59+ipUrV8LhcOCkk07CHXfcgaysrGbVhxBCSPtghgvxXV3i7dmzB16v1wpTzjrrLLz77rvYvHkz8vLysHbtWqs7WG1tLXRdxzPPPGONM2Xncrli1u2fny35nLE/zvxcND+vmvO5V1NTg5ycnJg/9gCwuhQ19d0kEXvIYGrsR3F1dTU+/PDDeuNFAvzHNgCr292rr76KQCCA7t27Y/jw4fXOY6Lnaup7TmP279+Pq6++Gjt27MBDDz0Uc3cyr9dr/UHNbsKECfjqq69QXl6e8DufafPmzdi5c2eDQy4MGzYM7733HkpKShAMBtGnTx+sWbMGAA7qu8aTTz5p/bs6HA7k5OSgoKAg4b7x3+d8Pl+TwUZ1dTWAhr/nmmON1tTUNLgPYww+nw9er7fB52nsmo+vj6ZpyM3NjSmXJMn6b9iuudeNx+Opd5e7xqSnpycM2MxjZGRkNPr4tr5OSMdCYRQhndjQoUOxYsUK7N271/pAKC8vt24JbCorK0v4hbE9yMjIwJgxY3DjjTcm3G4OotiQM888E4sWLUJdXR0++ugjXHTRRTHHTktLqzfeg6mh290ejKysLJSVldUrN8vMfvfNUVBQgAULFuD222/H5s2b8dFHH+GZZ55BTk6ONcYGIYSQ1JCbm4uRI0fi448/xp///OeELRV8Ph++/vrrmIGCjz/+eOTn5+Nf//oX8vPz4XK5cMoppwCIBhUzZszA6aefXu94Tf2wb43PmeZ87mVlZaGqqgqapsUEUqWlpdY+h1tGRgZOOOGEhHcoM1uwLF26FC+88ALuuOMOnHLKKdYP+PjBw1vTL7/8giuvvBLhcBjLli3DscceG7O9T58+YIwhEonEhGLmoNfxf/yL9/nnn8Pj8SQcg6uqqgqff/45Jk6cGBMY/fTTTxAEoV7LpeYoLCxssnVTQ3JycpoMJs2Axz5YvKmsrMy6lrKyshrcx3yu1pCbmwuHw1HvuXRdt4Kzg1FbW4sePXo0e/9+/frB5/OhsrLSClcBPgZZz5492911QjoW6qZHSCe2ceNGSJKEI444AiNGjIDT6cT7778fs8/333+P4uJiq3VQsm/BGv/8Y8aMwY4dO3DkkUdi2LBh1vTPf/4Tb775Zr2/psY77bTTwBjDI488goqKipi7DI0ZMwaBQACMsZhj//rrr1iyZEm9u5i0pN7xjj32WPzwww/1/vL97rvvIj8/v9nB1w8//IATTjgBGzdutD7or732WhQWFlp3oyGEEJJa5syZgx07duDBBx+st03TNNx+++0IhUIxg1pLkoQzzjgDn332GT766COcdNJJVquN9PR0DB48GNu3b4/5fDv66KPx2GOPNXont9b6nGnO596YMWOgqio++uijevsAwKhRowAc3u8m5h3bBg0aZJ2noUOH4oUXXrDuvLtu3Tr0798f5557rhVElZSU4Ndff21xC/Hm2L9/P6644goIgoDXX3+9XhAFwGoRFX+jln//+98YMGBAwhZiduvXr8fgwYMThhGMMcyfPx+ffPKJVeb3+/GPf/wDxx57bJu3eOnRo0e9Qb/jv/8deeSRyM/Pr/c9d8+ePVi/fr31PffYY4/FZ599FtO6SNM0fPDBBxg2bFiTf+RsLkmScMwxx9S7e+S///3vFn2/tGOMoaSkpF7X18accMIJABDz35iiKPj8888xbty4Jh+fStcJaX+oZRQhnYDP58P69eutdUVR8O9//xtvvfUWLrjgAusvIVdddRWWLFkCh8OBSZMmYe/evXjkkUfQv39/nHPOOQCAzMxMAMCnn36K3/zmNzjqqKPa9LVkZmbip59+wrfffovhw4djxowZ+Oc//4kZM2Zg5syZyMnJwYcffoh//OMfmD9/fpPHM++c99prr6GoqCgm9Jk4cSKOPfZYzJo1C7NmzcJRRx2FjRs34tFHH8WECRNi/oLUnHoD/G59I0aMqNfS7IorrsC7776LGTNmYM6cOcjOzsbKlSuxZs0a3HPPPc3+om1+IbjxxhtxzTXXIC8vD9988w1+/vlnXHbZZc2uLyGEkPZjwoQJuOmmm3D//ffj559/xrnnnouuXbti7969eP311/Hzzz/j7rvvxsCBA2Med9ZZZ2HZsmUQRbFed7zrrrsOV111Fa6//nqceeaZ1l3KNmzYEHO33Hit9TnTnM+93/zmNxg7dixuueUWlJSUYODAgfj222/xzDPP4JxzzkH//v0B8M/Y8vJyfPHFFxg0aBC6du3agrPbuFmzZuHCCy/E1VdfjYsuuggulwvLly/HqlWr8OijjwLg42Y+8cQTWLp0KUaOHIldu3bh6aefhqIoLR4PqrKyErt370b//v0bDIzuuusuVFRU4I477qj3HS89PR39+/fH2LFjMWnSJCxatAjBYBBHH300Vq5cif/+97944oknrP13796NysrKemNZ/frrrxg/fnzC5+/SpQtOP/10PPzww3C73ejSpQuefvpplJaW4oEHHmjRa2kN48aNw7/+9S/U1dVZYaA5X716NY466iiMGDEC1113HebPn29d81VVVXj88ceRlZVltXybM2cO/vOf/+Cyyy7DVVddBYfDgVdeeQV79uzBs88+26r1njt3Li699FLMnTsX5513HoqLi/HII48AQIN3zmzMr7/+irq6OkyYMAEA/77/008/oVu3btZYpvF69uyJc845B4sWLUI4HEbfvn3x/PPPo7a2NibcPpzXCem8KIwipBP46aefcMEFF1jrLpcLvXv3xrXXXosrr7zSKje/VL7yyitYvnw5srOzMWXKFPzlL3+x/po6duxYnHDCCXjggQewevVqLF26tE1fy8yZM3HPPffgyiuvxPPPP4/Ro0fjjTfewAMPPIAFCxZYH6R33313s5vHn3XWWVi1ahXOOOOMmHJRFLF06VI88sgjePrpp1FRUYGCggJcccUVmD17dovqfcopp+Cf//wnbrrpJpx33nlYsGBBzPb8/Hy8/vrreOCBB3DXXXchEolg4MCBeOKJJ/Db3/622c/jcrmwbNkyPPDAA7j77rtRW1uLvn374s4778S0adNaVGdCCCHtxxVXXIGioiK8+OKLuO+++1BZWYn8/HyMGzcOd999txXM2A0cOBCFhYWoqqrC8ccfH7Nt/PjxeO655/D4449j7ty5cDgcGDJkCJ5//vl6PzjtWutzpjmfe4Ig4Omnn8ajjz6KF154AZWVlejVqxeuu+66mG5z06ZNwxdffIHZs2dj7ty5uOqqq5pdj6YMHDgQr776Kh566CHceOONYIyhsLAQS5Yssep59dVXo6qqCi+99BKWLFmC7t27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oEMTCoVwzTXXIC8vDxdccEGyq9PhFRcXW9fyww8/jL179+Kuu+5CKBTCLbfckuzqpTR6j2hd27dvhyAI6NevHy655BJ89913uPXWW5Genk5dzpvJ/h3/hRdeoOvzENnP548//kjX5yF49NFHUV5ejgULFmDRokX0/nmI4s/nkCFDWvX67PRhlMvlqncxmusUAhy8xYsX48UXX8RDDz2EwsLCZFcn5Tz++OMYOnRozF9NyMGRZRk+nw8PPPAAevbsCYD/aHr99dcpjGqh1atX480338QXX3wBt9uNYcOGoaSkBE8++SSFUYfA5XKhuro6pkxRFPoMOgR+vx+zZs3Czp078dprr8Hj8SS7Sh1ez549sXbtWmRlZUEQBAwaNAi6ruOvf/0r5s+fD0mSkl3FlEXvEa3r7LPPxqRJk5CdnQ0AGDhwIHbu3InXX3+dfuw3Q/x3fLo+D038+Tz66KPp+jwE5ji74XAYN9xwA84991wEg8GYfej6bL748/nf//63Va/PTt9HpaCgAFVVVVBV1SorKyuD2+1GZmZmEmuWuhYuXIjnn38eixcvxqmnnprs6qSkDz74AKtWrUJRURGKiorw3nvv4b333osZ24w0T35+PlwulxVEAcCRRx6J/fv3J7FWqWnTpk3o06dPzAf44MGDUVxcnMRapb6CggKUl5fHlJWXl9drVk6ax+fz4corr8SWLVvw4osv0rgbbSg7OxuCIFjrRx11FMLhMGpqapJYq9RH7xGtSxAE64eUqV+/figpKUlOhVJIou/4dH0evETnk67PlisvL8eqVatiyvr3749IJIL8/Hy6PluosfPp8/la9frs9GHUoEGDIMtyzCBm69atw7Bhw2g8mYPw+OOP44033sCDDz6I008/PdnVSVkvv/wy3nvvPaxcuRIrV67E5MmTMXnyZKxcuTLZVUs5I0aMQDgcxo4dO6yy7du3x4RTpHm6du2KXbt2xbQm3b59e8wYPaTlRowYgR9//BGhUMgqW7duHUaMGJHEWqUmXdcxZ84c7N27Fy+//DKOPvroZFep0/jyyy8xduzYmL9A//zzz8jOzqbxNw8RvUe0rkceeQQzZsyIKdu8eTP69euXnAqliIa+49P1eXAaOp90fbbc3r17MWfOnJhAZNOmTejSpQtGjRpF12cLNXY+X3755Va9Pjt92uLxeHD22WdjwYIF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5bnnnsPn8wFw0kknMWLECF577TXuuusutm3bxksvvcSdd97J6NGjARgyZAg7d+7kq6++4pJLLqn18bdu3crDDz/Mf/7zH1JTU6vtr6ioYO7cuVx11VVMnDgRgNNOO41LL72UOXPm1Bpg7U3//v2Tbg8aNIg2bdpw+eWX89577+1z5NusWbMYOXIkrVq12u/nbijNmjWjWbNm9fLYo0eP5plnnuHTTz/lrLPOqvP9VqxYwWeffca8efMYNmwYACeccAK/+c1v+Nvf/saf//znGu/3zDPPkJqayiuvvEJ6ejpg/Qz+9re/5YUXXuDmm28mEAjw6KOPMn78eDskHDJkCCUlJXzzzTdMmTLlIF+1aOpkZJQQol74fD6GDRvGJ598Um3fRx99xNlnn43DkZyHFxQUcO+99zJ8+HCOP/54srOzmThxYtLQ5C1btnDdddcxePBg+vXrxyWXXLLXYeE7duzg9NNPZ9SoUZSUlNR63I8//sj48eMZPHgwAwcO5LrrrksaGr506VJ69OjBkiVLGDduHP369WPo0KHMmjWrxqHGRUVF9OnTh8ceeyypPRgMMmjQIJ555pla+yKEEEIkmj17Nl27drVP/BM5nU7uu+8+NE3j+eefB2DcuHGMGjWq2rHXX3895513nn37+++/54orrqBfv35kZ2dz2223UVBQYO9/99136dWrF2+99RZDhw4lOzub9evX1/l38eeff855551nTxFbtGhR0v49e/Ywbdo0hg0bRt++fbnooov497//nXRMKBRizpw5nHPOOfTp04ezzjqLefPm2SNebr/9dt577z22b9++16nyTz/9NOeccw6ffvopI0eOpE+fPpx//vmsWLGClStXcvHFF9O3b19GjhzJkiVLku7766+/MmHCBAYOHMjAgQOZOHFitSlRa9euZdKkSZx00kn07t2bU089lQceeICKigr7mB49evD666/z17/+lezsbAYMGMCNN96YNLUpPi1r6dKlNb4OgK5duzJu3Dg7iALrc1fr1q3ZsmULAIsXL8btdnPRRRcl3feJJ57g6aefrvWxAWbOnElOTg4vv/wyPXv2rLZ/1apVlJSUcOaZZ9ptiqJw5plnsnTp0qTXfDCOP/54ALZv3w5Y38MzzzyT2bNnk52dzSmnnEJxcTG//vorn3/+OSNHjgSsz2xXXnklAFdeeWXSNMOPPvqIUaNGMWDAAIYOHcpdd91VbQTQvj4T7s27777L2WefTZ8+fTjvvPOS3hc1Tbl77733OPfcc+3jlyxZQq9evar9HK9atYpLL72UPn36cPrpp/PCCy8k7Xe5XJx99tk899xzdlv8s+veykd89dVX+Hw+TjnlFLutWbNmnHjiiXv9fL1x40YGDRpkB1EAXq+Xvn378vnnnwPw9ddfU15eXm2a52233cbbb79d62OLo4eEUUKIenPuuedWm6pXVlbGf//7X/sDQ5xpmkyYMIGvv/6aW265hfnz5zNp0iSWLFnC3XffDYBhGEyYMIFgMMgjjzzC3LlzycjI4M9//jM5OTnVnj83N5exY8eSkZHBiy++WOtIrG+//ZbLLrsMgAcffJAHHniAnTt3cumll1Yb9n/LLbcwaNAgnn32WUaOHMkLL7zAW2+9Ve0xMzIyOOOMM/jggw+Shkx/+umnBAIBLrjggrp9EYUQQhzVCgoK+Omnnxg+fDiKotR4TEZGBieffLId5Jx33nmsXr066XdjSUkJ//3vfzn//PMB+O677xg7diwej4cnnniC6dOns2zZMq688sqkMEHXdRYsWMCMGTOYNm0aXbp0qfPv4rvuuouxY8fyzDPP0Lp1a26//XbWrl0LQF5eHhdddBHff/89N998M08//TTt2rVj4sSJvP/++4D12eC6667jhRdesKf3nHPOOTzxxBP2Z4Prr7+eYcOGkZWVxcKFCzn99NNr/Vru2rWLhx56iOuuu44nn3ySkpISJk+ezJQpU7j44ouZM2cOpmly880321+DTZs2cemll5Kfn8/DDz/MjBkz2Lp1K5dddhn5+fmAFarFp1A+9NBDPP/88/zud7/j1Vdf5ZVXXknqw+OPP45hGDz22GPceuutfPbZZzz44IP2/vhUrt69e9f6OkaPHs3VV1+d1JaTk8O6devskXFr1qyhU6dOfPfdd/zhD3+gd+/ejBgxok5T9G666Sbef/99TjzxxBr3xz8bde7cOam9U6dO6LpuB2IHa9OmTQB07NjRbtuxYwdffPEFjz/+ONOmTSM9PZ0PPviArKwse3RV7969ueuuuwDrZzD+szJ37lymTJlC//79eeqpp5g4cSL//Oc/GTNmjP393p/PhFXt3LmTefPmceONN/L000+jKAqTJ0+2f06qWrRoEbfffjsDBw5k7ty5nH322Vx//fU1/pHznnvu4Xe/+x3z5s1jwIABzJo1q1rJi3POOYeffvrJ/rr17t17n++JDRs20L59ezRNS2rv2LGj/Tg1yczMZMeOHdXat27dage1a9asITU1lby8PC6//HKOP/54hg4dyty5c6WwvABkmp4Qoh6dfvrpeL3epKl6n376Kc2bN2fQoEFJx+7Zswev18ttt93GCSecAMDgwYPZsmWL/cEpPz+fjRs32h88Afr27cvs2bMJh8NJj1dYWMhVV12Fx+PhxRdfTPrLTVWPPvoonTp1Yt68efYv41NOOYUzzzyTp556Kmle+8UXX2z/ZXrIkCEsXryYzz//vMZi7RdeeCEfffQRS5cu5aSTTgKsDx4nn3wybdq0qfPXUQghxNErPiqkXbt2ez2uU6dO/Pvf/6a4uJizzjqLe++9l3/84x/276x//etf6Lpu/zHo0UcfpUuXLjz33HP2775+/frxu9/9jnfeeYfLL7/cfuzrrrvOPqHNzc2t8+/iBx54gNNOOw2wTm7PPPNMli1bxnHHHceLL75IQUEB//znP+3XNmzYMMaOHcsjjzzCyJEj+fLLL/nmm2947LHH+N3vfgfA0KFD8Xg8PPnkk1x55ZUcc8wxNGvWDJfLVW2qV1XBYJC7777b7tP69et59NFHmTFjhj2CKBAIMHnyZDZt2kTPnj2ZPXs2Xq+Xl156iZSUFMD6/X/GGWfwwgsvcNttt/Hrr7/Ss2dPnnzySfuYk08+ma+//pqlS5cmTTE79thjmTlzpn37hx9+SBpFfiBTuSoqKrjttttwuVxcccUVgBVi7t69m1tuuYVJkybRtWtXPvroIzuk2ds0vWOPPXavz1dWVgZgv9Y4v9+ftH9/RKPRpNezdu1aHnzwQVJTU5NG80Wj0aTPimAFSH369LHD2pSUFLp37w5A9+7d6d69O8XFxTzzzDP88Y9/tL8G8dd6+eWX2z/z+/OZsCrDMJgzZw7dunUDwO12M3bsWFauXMlvfvObasc/+eSTDB8+nAceeACAU089FafTyaOPPlrt2ClTptghWf/+/fn000/59ttvGT58uH1Mnz59AFiyZAldunQhJSVln++J0tLSat9HsL6X5eXltd7vwgsv5I477mDGjBlcffXVqKrKSy+9xPr16+3vZUFBAbquc+211/KnP/2JG264ga+//pqnn36aiooKmaYnZGSUEKL+eDweRowYkfQh68MPP+S3v/1ttb/utmrVildeeYVBgwaxbds2vv76a1599VX+97//2R9uW7RoQffu3bnzzju57bbb+OCDDzAMg2nTplWrkXH11Vezbt06pk+fTmZmZq19DAQC/Pjjj/z2t79N+qtQWloaw4cPZ9myZUnHDxgwIOl269atCQQCNT72ySefTNu2bfn73/8OWH+RXbJkCX/4wx9q7Y8QQgiRKD6CwOl07vW4+O8w0zTx+XycccYZfPTRR/b+Dz/8kCFDhtCqVSuCwSCrVq1i2LBhmKZJNBolGo3SoUMHunXrxtdff5302IlTtfbnd3FiYNC+fXsAe8r8smXLGDBgQLWQ7bzzzrMDr2XLluFwODjnnHOqHRN/jP01cODApNcCVggXl5GRkdTPb7/9luzsbDwej/11SklJ4YQTTuCbb74BrLDitddew+12s379ev7973/zzDPPUFBQUC2gqxoOtG7dmmAwuN+vI66srIwJEybw448/MmvWLPvrGYlEKCws5N577+Xyyy9nyJAh3H///ZxyyinMnj37gJ8P2GdRcFXd/1PM3r1728ugQYO4/PLLCYfDzJ49m6ysrKRjq04d3Lp1q/3zVZuVK1cSDoerjcw/4YQTaNeuHcuWLdvvz4RVZWZm2kEUVP7MJxb0jsvJyWHHjh3VfrbjoWtVie8lr9dLixYtqpWfSE1NJS0tbb+u1re3EUq1jcQE64+zt99+O2+//TannXYap556ql3A3OPxANbPYCAQ4JprrmHChAmcdNJJTJ06lYsvvpgXX3zxgEJLcWSRkVFCiHr129/+lkmTJrFr1y7cbjdLlizhpptuqvHY999/n8cee4ydO3eSkZFBz5497V9oYP1SXLBggV2gcdGiRTidTs444wzuvffepNFPwWCQ9u3b8+ijj7Jw4cJaPxiVlpZimqb9gTRRixYtqn2ASOwPWB+4avtFrqoqo0aN4sUXX+Tuu+/m73//OykpKUk1FoQQQoi9iYcL8RFStdm6dSt+v98OU84//3zef/991q5dS4sWLVi6dKk9HaykpATDMHj++eftOlOJ3G530u3E2kT787s48X7x38Px35nFxcV06NCh2nPHfx+XlJRQXFxMZmZmtSlE8XCippP8falpFIjX6631+KKiIj766KOkYC8uPoIpPu3u9ddfJxAI0KZNG/r27Vvt61jTc+3tc8S+7Ny5kwkTJrBp0yYef/xxzjjjDHuf3+9HURR79FrcqaeeyldffUVeXl6Nn33qIl7UvLy8POn7HQ8Xaip6vi+JNYScTidZWVk0b968xmPjI7ASn3dv30PArgu1t897+/uZsKrEn3eoDHNqCu/itdmqvsbavid1/bnxer37FfKkpKQk1SyLKy8v3+f38aqrruKKK65gy5YtZGZm0qxZM2699Vb7/6D496nqNMHTTjuNhQsXsmHDhqQgWBx9JIwSQtSr0047Db/fzyeffILP56N9+/Z2QcpE33//Pbfddhtjxoxh/Pjx9tVQHnnkEZYvX24f16pVK+655x7uvvtu1q5dyyeffMLzzz9PZmamXRMA4OWXX2bNmjVcc801vPLKK9Wu6BeXmpqKoig1/iLOzc21f6EeqFGjRjFnzhz++9//8vHHH3PuuefW+OFUCCGEqEnz5s3p378///znP7nxxhtr/ONKWVkZX3/9NSNGjLDbhgwZQlZWFh9//DFZWVm43W77KlvxoGLs2LE1jsTY14l9XX8X7016ejq5ubnV2uNtmZmZpKenU1hYiK7rSYHUnj177GPqW2pqKieffDJXXXVVtX3xC7HMmzePl156iXvvvZezzjrLPomvWjz8UPrll18YP348oVCIBQsWVKvv1KlTJ0zTJBKJJH3uiE+hqvrHtf3RpUsXwBrd07dvX7s9JycHp9NZY8i4L/EpZgciIyNjn0FRPDTLy8uja9euSftyc3Pp0KFDvX8mTNS6dWuAavWkaqsvVVclJSX79b7o0qULX331FYZhJP3fkpOTkzTKq6off/yRnTt3ctZZZyUd9/PPP9OrVy/A+hkEqo0OjEQiQPXQWxx9ZJqeEKJeuVwuzjjjDP75z3/y8ccf1zr8eMWKFRiGwQ033GAHUbqu20PgDcNgxYoVnHzyyfzwww8oikLPnj25+eabOfbYY6sVUczKyuK0007jt7/9LU8++WStQ5Z9Ph/HH388H3/8cVLByNLSUj7//PNqta32V7t27RgyZAivvPIKa9asqfHqRkIIIcTeTJo0iU2bNlW7QitYvyvvvvtuKioqkopaa5rG73//ez777DM++eQTzjjjDHvkRkpKCr169WLjxo306dPHXo455hiefvrpvV7JbX9+F+/NiSeeyIoVK6qN+Hr//ffJysqiU6dOZGdnE41Gq12ZN17gPP47+kCmhdVV/AqCPXv2tL9Oxx9/PC+99BKffvopAMuXL6d79+5ceOGFdhC1e/dufv31131OaTsQO3fu5KqrrkJRFN54440aC43HR0R9+OGHSe3/+c9/6NGjR40jxOpqwIAB+Hw+/vnPf9ptpmny6aefkp2djcvlOuDHPhDt2rVj586dSW1VR9P169cPl8vFP/7xj6T277//nh07djBw4MB6/0yYqHXr1nTs2NH+GYr717/+dcCPWVxcTDAYpG3btnW+zymnnEJ5eTlffvml3VZQUMD333/P0KFDa73fsmXLuOWWW5KmCn799desW7fOHqF32mmnoShKjT+DGRkZew27xNFBRkYJIerdueeey4QJE1BVlTvuuKPGY+J/Wbvvvvu48MILKS4u5vXXX7evuhMIBOjVqxcej4dbb72VG264gRYtWvDNN9+wZs0a+xK+VU2fPp0vv/ySu+++m/nz59d4zNSpUxk/fjzXXnsto0ePJhKJMG/ePMLhcI2X0d5fF110EVOmTKFbt24yHFkIIcR+O/XUU7n99tt55JFHWLNmDRdeeCEtW7Zk27ZtvPHGG6xZs4YZM2Zw3HHHJd3v/PPPZ8GCBaiqWm063pQpU7j22muZOnUq5513nn3VvFWrVnH99dfX2pcD+V1ck6uuuor333+fsWPHMmnSJDIyMli0aBHffvstDz74IKqqctpppzF48GDuuOMOdu/ezXHHHceyZct4/vnn+cMf/mAXqU5LSyMvL48vvviCnj170rJly/346u7d9ddfz6WXXsqECRO47LLLcLvdLFy4kMWLF/PUU08B1meYuXPnMm/ePPr3709OTg7PPfcc4XB4v+tBFRQUsGXLFrp3715rYPTAAw+Qn5/PvffeS1lZGStXrrT3xYt3Dx48mOHDhzNz5kyCwSDHHHMMixYt4n//+x9z5861j9+yZQsFBQX7LHSdyOv1Mm7cOObMmYPT6WTAgAG88847rF69Ounqgbt27WLXrl306tWrXgOqoUOH8re//Q3TNO2pcfFQ8PPPPyc9PZ3jjjuOa6+91u7z8OHD2bZtG08++STdu3e363nW92fCuPiV9m655RbuvvtuzjzzTNauXcucOXOAAwtY4zMJTjnlFMAaMbl+/Xo6duxYa1H8E088kezsbP7yl7/wl7/8hYyMDJ5++mlSU1PtgulgFfsPh8P2qKfzzjuPefPmcdNNNzF+/Hh27NjBQw89xMCBA+2abh06dOCKK67ghRdewOFwcOKJJ/LZZ5/x/vvvc+edd+6zDp448kkYJYSodyeffDJpaWm0adOm1r+CDB48mLvuuosXX3yRTz75hBYtWjB48GBmz57NxIkTWb58OcOGDWPBggX2lW9KSkro3Lkz9913X60jjlq2bMmUKVO47777WLRoERdccEG1Y4YMGcKLL77IU089xZQpU3C5XJxwwgk8/PDD1YqxHohhw4ahKIqMihJCCHHArrrqKgYMGMDLL7/Mww8/TEFBAVlZWQwdOpQZM2bYwUyi4447jmOPPZbCwkKGDBmStO+UU05h/vz5zJ49m8mTJ+N0OunduzcvvvjiXoMJt9u937+La5KVlcUbb7zBo48+ygMPPEAkEuG4445j7ty59pXHFEXhueee46mnnuKll16ioKCA9u3bM2XKlKRpc6NGjeKLL75g4sSJTJ48OenqdQfruOOO4/XXX+fxxx/n1ltvxTRNjj32WObMmWP3c8KECRQWFvLKK68wZ84c2rRpw/nnn2/3v6SkhLS0tDo93+eff860adN45ZVXGDx4cLX94XCYzz//HKDGKZHZ2dm8+uqrgHW1ttmzZ9tXLuzevTuzZ89Oms45d+5c3nvvPX755Zf9+rpMnDgRTdP4v//7PxYsWED37t2ZO3du0uiht956i9mzZ/Pvf/97nwXGD8ZZZ53FnDlz+OGHH+w/+h1zzDGMHDmS119/nS+//JJ//OMfdnj62muvsXDhQjIyMjjnnHO46aab7FGD9f2ZMNHvf/97AoEA8+fP55133uGYY47hr3/9K3/961+r1Z+qi//+97/07dvXrjO3evVqrrzySmbOnLnX9+bs2bN56KGHeOSRRzAMg4EDB/LEE08k1QO799572b59O//5z38A6/07f/58HnroISZNmkRaWhqjRo3ixhtvTBqVNn36dFq3bs3ChQuZN28eHTp04IEHHuDiiy/e79cnjjyKeaAV84QQQtTJRx99xK233soXX3xRazFOIYQQQogjzeWXX84TTzxR7Yp4h9p1111HZmYmM2fOrNfnOZT+8Y9/0KtXr6QaVp9//jkTJkzg73//e7WRjnsTCAQ49dRTefjhh5MK2QtxOJORUUIIUU8WL17Mjz/+yJtvvsmoUaMkiBJCCCHE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Jjs7m1NPPZWZM2cSCoUau1tN3rXXXsvtt9/e2N1ossLhMPfeey8nnngiJ598Mo899hhSLu/A7Ny5kwkTJjBw4EBGjBjBSy+91NhdanLC4TAjR45k6dKldtvWrVsZO3Ys/fv359xzz+Wrr75qxB42HTV9LVeuXMmll17KgAEDOPvss3nrrbcasYdHt08//ZQePXokLZMnT27sbh0V5P+ZxlfT9+CBBx6o9p547bXXGrGXR6a9nY/I+6Bh7O17IO+DhpGTk8P48eMZMGAAp59+Oi+88IK973B5Hzga5VkPM4888gg//fQTL7/8Mjt27OC2226jbdu2nHPOOY3dtSbFNE0mT55MWloar7/+OsXFxUyfPh1VVbntttsau3tN1ocffsgXX3zBH/7wh8buSpP1wAMPsHTpUubPn095eTk333wzbdu25dJLL23srjU5N910E23btuXdd99l/fr13HLLLbRr144zzzyzsbvWJIRCIaZOncq6devsNtM0mThxIsceeyzvvPMOixcvZtKkSXz00Ue0bdu2EXt7eKvpa5mbm8s111zDZZddxkMPPcTq1auZNm0aWVlZnH766Y3X2aPU+vXrGT58OPfff7/d5na7G7FHRwf5f6bx1fQ9ANiwYQNTp05N+kyXkpLS0N07ou3tfOTWW2+V90ED2Nc5obwP6p9hGFx77bX06dOH9957j5ycHKZMmUKrVq0YOXLkYfM+OOrDqEAgwFtvvcXzzz9P79696d27N+vWreP111+XMGo/bdy4kZUrV/L111/TokULACZPnszDDz8sYdQBKioq4pFHHqFPnz6N3ZUmq6ioiHfeeYcXX3yRvn37AjBu3DhWrVolYdR+Ki4uZuXKldx///107tyZzp07c+qpp7JkyRIJo+pg/fr1TJ06tdqovG+//ZatW7fy5ptv4vP56NatG0uWLOGdd97hhhtuaKTeHt5q+1ouXryYFi1aMGXKFAA6d+7M0qVL+eCDDySMagQbNmzg2GOPJSsrq7G7ctSQ/2caX23fA7DeE+PHj5f3RD3a2/nIaaedJu+DBrCvc0J5H9S/vLw8evbsyT333ENKSgqdO3dmyJAhLF++nBYtWhw274Ojfpre2rVriUajDBgwwG4bNGgQq1atwjCMRuxZ05OVlcULL7xg/6cTV1ZW1kg9avoefvhhzj//fLp3797YXWmyli9f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ZPPmzcyfP7/kfv71X/+1ZP3VV19l/vz5JV2ETdPkk5/8JG+++SapVIpjjz2WdDrN66+/Drh/8TrjjDNIJBK89tprAPz5z3/u81ej3rULxo0bt8Vheq+++iqzZ89m4sSJJe3/9m//Rmtra0lB0XLHzmQyZY9bXV3Nxz/+8ZLeVX6X7ng83u/5CCGE2D0or6dJJBLZ4n5+zwalFBUVFXzsYx/jt7/9bbD9qaee4ogjjqCxsZFMJsPrr7/Osccei1IKy7KwLIvJkyez77778pe//KXk2DNnzgyW6+vrmTZtGtdccw1XXHEFTz75JI7jcOWVV/apV3XYYYcFy5MmTQLcHlowsN+br776KqZpcsIJJ/TZxz/Gtjr00ENLHgvAwQcfHLT5Q43883z55ZeZO3cu8Xg8eJ6qqqo47LDDgp7XRx99NA8++CCxWIwVK1bwxz/+kR/96Ee0t7eTz+dL7n9bPgMMRDKZ5LzzzuMf//gHt912W/B8FgoFOjo6uP766znttNM44ogjuOGGGzj66KNZuHDhgI5dKBT4xje+we9//3u+/e1vc9BBBwXt6XSar371q5x33nl85CMf4bLLLuOzn/0s9913H8lkcpsfx6xZs4Jpzpw5nHbaaeTzeRYuXFjyeRJKfx4B1q1bF/x89WfZsmXk8/k+n2EPO+wwJk6cyKuvvko6neYf//gH//qv/1rSU6impob58+dv9edt1KhR7LvvvsG6f049PT199l2zZg0bNmzo87P9yU9+suyxw++lRCJBfX198DPqq66upqamZpt6HKkt9GTrrycmwJNPPsmFF17Icccdxz333MPixYuZPn06Z599dtCDbNq0adx9992sW7eOE088kcMPP5z777+fiy++GEA+xwopYC6EGDh/iJ3/4S2svr6et99+O9hvax8KwK2vcPTRR/Ob3/yGM844g/333x8g6M47atSokv17fxjp6urq91yUUiSTSfbbbz/Gjx/Piy++yKhRo2hpaeHII4/k0EMP5dVXX+XYY4/lrbfe4pJLLik5RiKRKFnXdX2Lv7C7urqYPHly2XMBSj4wbOuxTz31VJ544gn++te/YhgGq1ev5pZbbul3fyGEELsPP1zw6+b0Z926dVRWVgZhykknncQTTzzBu+++S319Pa+88kowHKy7uxvHcfjJT34S1JkKi8ViJevh2kSapnHvvfcGxZIff/xxIpEIH/vYx7j++uupra0teztdd/8G7v++G8jvza6uLkaNGtVnCJH/eaDcl/ytCf8By9f793JYZ2cnv/3tb0uCPZ9fjNofdvfQQw+RTqcZP348Bx10UJ/nsdx9be0zwJZs3LiR8847j1WrVvH973+fj33sY8G2yspKNE0r+SMgwDHHHMMLL7xAW1tb2c9Qvu7ubi688EJee+01rrnmGk477bSSYwN9/pD3T//0T/zyl7/kgw8+KAn4BiJcayoSidDQ0MCYMWPK7uvfvy+ZTG7xNYTiZ8v+Pjf29PTQ09ODUmqL+2xJ+OcdimFOuSv6+bXZej/G/l6Tgf7cJBKJbQoDq6qqytYtTaVSVFdX93u7hQsXMnv2bL7//e8HbUcddRSf+MQn+OEPf8idd94JuEHtH//4xyAgmzx5cvBah/+tEHsmCaOEEAPmf8At90urtbU1CI+qq6tLCqD6XnrpJSZNmhT8cr7kkks4/fTT+eQnP8nVV1/No48+imEYwXF6j7HvXW+qtra233OBYph17LHH8tJLLzFmzBj23ntvGhoamDdvHv/v//0/XnjhBeLxOPPmzduGZ6Kv2traspce7n0u22Pu3Lnstdde/O53v0PXdfbZZ58+f1kVQgixexozZgyHHHIIv//977nkkkuCUCcsmUzyl7/8heOOOy5oO+KII2hoaOB///d/aWhoIBaLBVfZ8oOKM888s2xPjK19sW9sbOS6667jO9/5Du+++y6/+93v+MlPfsKoUaOC+jxbM5Dfm7W1tXR0dGDbdkkg1dLSEuyzq1VXV3PkkUeWvWiIabpfpZYsWcL999/P9ddfz8c//vHgS3zv4uE703vvvcc555xDLpfj3nvv5fDDDy/ZPmXKFJRSFAqFklDMsixgy71SNm3axFlnncX69eu54447+vRMnzJlCkCfXl+FQgHoG2YOxIEHHrjNt/HV1dVtNSjyg4+2tjb22Wefkm2tra1MnjyZ6upqNE3r97Ol/zl4Zxg3bhzQ97Nuf/WlBqq7u3ub3hd77703L7zwAo7jlPzbsmbNmpJeXr19+OGHJeEnuD9TBxxwQFDsfcOGDfzlL3/hpJNOKgme3377berq6gb0h2uxe5NhekKIAfODnN/85jcl7evWrWPZsmVB1/fDDjuM119/vSSQ2rx5M1/5yldKrsxRX19PPB7n2muv5a233uK+++4DYOrUqYwfP57f/e53JffTu1Dj4YcfzjPPPFPyFyDbtnnqqac48MADiUajgPuXu3/84x/8+c9/Zu7cuYB7CeT169fzyCOPcNRRRwX7bq/DDz+cv//9733+cv3EE0/Q0NAQfHDbHpqmcfLJJ/P000/zpz/9ic985jM7dK5CCCFGlgsvvJBVq1Zxxx139Nlm2zbf+c53yGazJUWtDcPgU5/6FM888wy/+93v+NjHPhb03KiqqmL//fdn5cqVHHjggcE0ffp07rrrri1eye3vf/87Rx55JG+88QaapjFz5ky+/vWv09TUVPaqt/0ZyO/NuXPnYllWn88D/tB1/ypd5QK6ncW/guDMmTOD5+mAAw7g/vvv5//+7/8AtzzBtGnTOOWUU4Igqrm5mffff79sr5gdtXHjRs466yw0TePhhx/uE0QBQY+op556qqT9T3/6E/vtt1/ZHmLgBptnnHEGLS0t3HfffX2CKHB7QGmaVvbYdXV1WwwxdoWJEyf2uapz7950Bx98MNFotM9n2L/+9a9s2LCBQw89lIqKCg444AD+93//t6SIeE9PD88++2yfq8LtiHHjxrHXXnsFP0O+P/zhD9t9zK6uLjKZDBMmTBjwbY4++mhSqRTPP/980Nbe3s5f//pXjjrqqH5vt88++/C3v/2tpHdWLpfjrbfeCoKnzZs3c/XVV5f8e9La2spTTz3Fcccdt8VhgGLPID2jhBAlNm3axP3339+nvampiSOPPJJLL72UK6+8kssuu4x/+7d/o6Ojg4ULF1JbWxv81fDMM8/k8ccf5ytf+QrnnXcekUgkuJLOpz71qT5/vTr22GM54YQTuOuuuzj++OOZPHkyl19+OZdddhlXX301J5xwAsuWLePhhx8uud2FF17In//8Z04//XTOPfdcIpEIDz74IOvWrSu55O1HPvIRdF3n2WefDT7Iz5o1i8rKSpYuXcpNN920w8/bWWedxRNPPMGZZ57JhRdeSF1dHY8//jgvv/wyN9988w5/UD755JODSzH7V0ISQgixZzjmmGP41re+xa233so777zDKaecwtixY1m/fj0PP/ww77zzDjfddBMzZswoud1JJ53Evffei67rfYbjXXrppZx77rnB73P/qnmvv/46559/fr/nsv/++xOPx/nmN7/JRRddRH19PS+++CLvvPMOp59++oAf00B+b/7TP/0T8+bN4+qrr6a5uZkZM2bw6quv8pOf/ITPfOYzTJs2DXBr+rS1tfHcc88xc+ZMxo4duw3P7padf/75fP7zn+e8887jC1/4ArFYjF/+8pc8/fTTwVCkgw46iMWLF7NkyRIOOeQQ1qxZw49//GPy+fw214Nqb29n7dq1TJs2rd/A6MYbb2Tz5s1cf/31JJNJli1bFmyrqqpi2rRpzJs3j/nz57NgwQIymQzTp0/n8ccf529/+xuLFy8O9l+7di3t7e1Bj+s777yT1atXc9FFF2GaZsmxo9Eo+++/P5MnT+ZLX/oSP/3pTzFNM/jj4BNPPME111wT1DfbtGkTmzZtYv/999/hP/ptyVFHHcUvfvELlFJBwOGHgs8++yy1tbXMmDGDc889l0WLFhGJRJg/fz7r16/nhz/8IdOmTQv+0HfZZZdxzjnncO655/LFL36RQqHAkiVLyOfzXHDBBTvtnP0r7V1++eV85zvf4V/+5V949913WbRoEbB9AevSpUsBgitTJ5NJVqxYwV577RUMKe3t8MMPZ+7cuXzjG9/gG9/4BnV1ddx1111UV1cHVxUE9wrW+Xw+KKlxySWXcMEFF3DJJZdw6qmnks/neeCBB2hubub2228H4IADDuDQQw/luuuu45vf/CaGYfCDH/wAwzC46KKLtvnxid2PhFFCiBJr165lwYIFfdpPPfVUjjzySE4++WQqKyv58Y9/zAUXXEBVVRXHHHMMl156aVDDYfz48fziF7/gtttu41vf+hbRaJR58+bx/e9/n9ra2rJdqa+66ipeeOEFrrnmGu6//35OPPFEdF1n8eLF/M///A9NTU1897vf5dJLLw1uM336dH7xi19wxx13cOWVV6JpGgcddBA/+9nP+hR6nDdvXknPKNM0Oeyww8oWL98eDQ0NPPzww9x+++3ceOONFAoFZsyYweLFi/nnf/7nHT5+Y2MjM2bMoL6+nsbGxh0+nhBCiJHlrLPOYvbs2TzwwAPccssttLe309DQwFFHHcVNN90UBDNhM2bMoKmpiY6ODo444oiSbUcffTT33HMPCxcu5OKLLyYSiTBr1izuu+++LQ4Fj8Vi3Hvvvdx+++3cdNNNdHd3M3XqVL773e9y8sknD/jxDOT3pqZp/PjHP+bOO+/k/vvvp729nUmTJnHppZeWDJs7+eSTee6557jgggu4+OKLOffccwd8HlszY8YMHnroIb7//e/zzW9+E6UUTU1NLFq0KDjP8847j46ODn72s5+xaNEixo8fz0knnRScf3d3NzU1NQO6v2effZYrr7ySn/3sZ2VLCOTzeZ599lmAskMi586dy89//nMAfvjDH7Jw4ULuu+8+2tvbmTZtGgsXLiwZzrl48WL++7//m/feew8o9sy56667gj+C+SZOnMif/vQnwP3cNm7cOH75y1+yZMkSJk+ezI033shnP/vZYP9HH32UhQsX8sc//nGXDsn6+Mc/zqJFi3jjjTeCWlXTp0/nxBNP5KGHHuL555/nN7/5TRCePvjgg/zyl7+krq6OE044ga997WtBr8EjjjiC++67jzvvvJNLL72UaDTKYYcdxi233NKnQP+O+tSnPkU6neaee+7hscceY/r06Xz729/m29/+dp/6UwPx5z//mYMOOiioM/fWW29x+umns2DBgi2+NxcuXMj3vvc9br31VhzH4dBDD+UHP/hBSU2n66+/ng8//DB4/f/5n/+ZJUuWsHjxYi688EIqKys56KCD+NWvfhWE4pqmcdddd7FgwQKuvfZaAObNm8ddd921Tb23xO5LU9tbMU8IIcSgaW5uZv78+dx55519xugLIYQQQgxHp512Gj/4wQ/6XIRmZ/uP//gPRo0aVfYPqsPVb37zG/bff/+SGlbPPvss5513Hv/zP//Tp6fjlqTTaY455hhuueUW+ZwoRgypGSWEEMPYO++8w8KFC/nKV77C1KlTS/6aKYQQQggxXL3yyitkMpktXrVvZ/n617/OH/7wh22qWzbUnnjiCb761a/y5JNP8te//pXHHnuM73znO8ydO3ebgiiARx55hOnTp++U3vhCDBbpGSWEEMPYsmXLOOecc2hsbOSOO+7Y5g8nQgghhBBD4cMPP6SiomJQrnoI7lUN33333bKF/oejjo4Obr/9dv785z/T3t5OfX09xx9/PBdffDGVlZUDPk57ezuf/vSn+fnPf75DF8wRYrBJGCWEEEIIIYQQQgghBo0M0xNCCCGEEEIIIYQQg2a7w6h8Ps+JJ57IK6+8ErStW7eOM888k0MOOYRPfOITvPDCCyW3efHFFznxxBM5+OCDOf3001m3bt32n7kQQgghhBBCCCGEGHG2K4zK5XJceumlLF++PGhTSnHBBRdQX1/PY489xkknncSFF14Y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GMKzGvkaGxtpa2sraWtra+vTvVoMTDKZ5JxzzmH58uU88MADUsMipK6uDk3TgvV9992XXC5HV1fXEJ6VAPl3YDjSNC34cu3bZ599aG5uHpoT2sOU+z4h75OhV+51kffK0Ghra+Ppp58uaZs2bRqFQoGGhoYR8V7Z48OomTNnYppmSTGvpUuXcuCBB0o9me2wcOFCHnnkEe644w4++clPDvXpjFg///nPefLJJ3n88cd5/PHHOe644zjuuON4/PHHh/rURpyDDz6YXC7HqlWrgraVK1eWhFNiYMaOHcuaNWtKepOuXLmypEaP2HYHH3wwb731FtlsNmhbunQpBx988BCe1cjkOA4XXngh69ev5+c//znTp08f6lMaNp5//nnmzZtX8pfSd955h7q6OqmPOQzIvwPDzw9/+EPOPPPMkrZ3332XffbZZ2hOaA/S3/cJeZ8Mrf5eF3mvDI3169dz4YUXloR+b775JqNHj2bOnDkj4r2yx6ctiUSCT3/601x33XW88cYbPP3009x7772cfvrpQ31qI84HH3zA4sWL+epXv8qcOXNobW0NJrFtJk6cyJQpU4KpsrKSyspKpkyZMtSnNuLss88+fPSjH+XKK6/k3Xff5fnnn2fJkiV84QtfGOpTG3GOO+44IpEIV199NatWreJPf/oTd999N1/+8peH+tRGtLlz5zJ+/HiuvPJKli9fzpIlS3jjjTc49dRTh/rURpxf/epXvPLKK9x4443U1NQEv4N6D+vYE82ePZtYLMbVV1/NypUree6557j11lv5yle+MtSnJpB/B4aj+fPn89prr3HPPfewdu1afvGLX/D444/LEP9dbEvfJ+R9MnS29LrIe2VoHHjggcyaNYurrrqKFStW8Nxzz3HbbbfxH//xHyPmvaIppdRQn8RQy2QyXHfddfzhD3+gqqqKc845p0+6K7ZuyZIl3H777WW3vffee4N8NruXb33rWwB873vfG+IzGZl6enq44YYb+L//+z8SiQRf/OIXueCCC0qGq4iBWbFiBTfddBNvvPEGo0eP5rTTTuOMM86Q53Ib7bfffvzsZz9j3rx5AKxZs4Zvf/vbvP7660yZMoWrrrqKI488cojPcmQIP5fnnHMOL7zwQp995s6dy89//vMhOLvhZfny5dx8880sW7aMyspKPv/5z8u/hUNI/h0Yfnq/Jk8//TR33nknq1evZuLEiXz961/n4x//+BCf5e5ta98n5H0yNLb2ush7ZWg0Nzdzww038NJLL5FIJPjSl77Eeeedh6ZpI+K9ImGUEEIIIYQQQgghhBg0e/wwPSGEEEIIIYQQQggxeCSMEkIIIYQQQgghhBCDRsIoIYQQQgghhBBCCDFoJIwSQgghhBBCCCGEEINGwighhBBCCCGEEEIIMWgkjBJCCCGEEEIIIYQQg0bCKCGEEEIIIYQQQggxaCSMEkIIIYQQQgghhBCDRsIoIcSIsN9++3HZZZf1af/1r3/NcccdNwRnJIQQQgghhBBie0gYJYQYMX7zm9/w0ksvDfVpCCGEEEIIIYTYARJGCSFGjIkTJ/Ld736XfD4/1KcihBBCCCGEEGI7SRglhBgxvva1r9Hc3Mw999zT7z6bNm3ikksuYe7cucybN48bb7wxCK9+/etf8+Uvf5k777yTefPmcdhhh7FgwQKUUsHtH3nkEY477jhmz57Nl7/8Zd57771d/riEEEIIIYQQYk8iYZQQYsRobGzk4osv5u6772bdunV9tufzec444wwymQw///nP+cEPfsCzzz7LrbfeGuzz97//nVWrVvHwww9zzTXX8LOf/YwXX3wRgD/96U8sXLiQa665hv/+7/9mzpw5nH766XR1dQ3aYxRCCCGEEEKI3Z2EUUKIEeXLX/4yU6ZM4aabbuqz7fnnn6e5uZnbbruN/fbbjyOOOIJrr72Whx9+mFQqBYBt29xwww3ss88+nHTSScyYMYN//OMfAPz0pz/lvPPOY/78+UydOpWvfe1rTJw4kSeeeGJQH6MQQgghhBBC7M7MoT4BIYTYFoZhcN111/HFL36Rp59+umTbBx98wNSpU6mtrQ3aDj30UCzLYu3atQCMGTOGqqqqYHtVVRWWZQW3v+2227jjjjuC7blcjtWrV+/CRySEEEIIIYQQexYJo4QQI86hhx7KKaecwk033cRXvvKVoD0Wi/XZ17btknk0Gu2zj18zyrZtrrrqKo444oiS7eHwSgghhBBCCCHEjpFhekKIEenyyy8nnU6XFDPfe++9Wb16NZ2dnUHbsmXLME2Tvfbaa6vH3Hvvvdm0aRNTpkwJprvvvptly5btgkcghBBCCCGEEHsmCaOEECPSqFGjuPzyy/nwww+DtqOOOorJkyfzzW9+k/fee4+XX36ZG264gRNPPJGampqtHvOss87igQce4PHHH2ft2rXcdttt/O///i/77rvvrnwoQgghhBBCCLFHkWF6QogR69RTT+Wxxx6jpaUFcOtJLV68mBtuuIF///d/p7Kykk996lNceumlAzreJz7xCdra2rjzzjtpa2tj2rRp/OhHP2Lq1Km78FEIIYQQQgghxJ5FU36xFCGEEEIIIYQQQgghdjEZpieEEEIIIYQQQgghBo2EUUIIIYQQQgghhBBi0EgYJYQQQgghhBBCCCEGjYRRQgghhBBCCCGEEGLQSBglhBBCCCGEEEIIIQaNhFFCCCGEEEIIIYQQYtBIGCWEEEIIIYQQQgghBo2EUUIIIYQQQgghhBBi0EgYJYQQQgghhBBCCCEGjYRRQgghhBBCCCGEEGLQSBglhBBCCCGEEEIIIQbN/we2ry9L82ObgwAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "def add_pred_to_plot(preds, axs, coords, color, label):\n", + " sns.lineplot(\n", + " x=logging_times,\n", + " y=preds.mean(dim=0).squeeze().tolist(),\n", + " ax=axs[coords],\n", + " label=label,\n", + " color=color,\n", + " )\n", + " axs[coords].fill_between(\n", + " logging_times,\n", + " torch.quantile(preds, 0.025, dim=0).squeeze(),\n", + " torch.quantile(preds, 0.975, dim=0).squeeze(),\n", + " alpha=0.2,\n", + " color=color,\n", + " )\n", + "\n", + "\n", + "fig, axs = plt.subplots(4, 2, figsize=(12, 6))\n", + "\n", + "colors = [\"orange\", \"red\", \"green\"]\n", + "\n", + "add_pred_to_plot(\n", + " unintervened_samples[\"S\"], axs, coords=(0, 0), color=colors[0], label=\"susceptible\"\n", + ")\n", + "add_pred_to_plot(\n", + " unintervened_samples[\"I\"], axs, coords=(0, 0), color=colors[1], label=\"infected\"\n", + ")\n", + "add_pred_to_plot(\n", + " unintervened_samples[\"R\"], axs, coords=(0, 0), color=colors[2], label=\"recovered\"\n", + ")\n", + "\n", + "axs[0, 1].hist(unintervened_samples[\"overshoot\"].squeeze())\n", + "axs[0, 0].set_title(\"No interventions\")\n", + "axs[0, 1].set_title(\n", + " f\"Overshoot mean: {unintervened_samples['overshoot'].squeeze().mean().item():.2f}, Pr(too high): {unintervened_samples['os_too_high'].squeeze().float().mean().item():.2f} \"\n", + ")\n", + "\n", + "\n", + "add_pred_to_plot(\n", + " intervened_samples[\"S\"], axs, coords=(1, 0), color=colors[0], label=\"susceptible\"\n", + ")\n", + "add_pred_to_plot(\n", + " intervened_samples[\"I\"], axs, coords=(1, 0), color=colors[1], label=\"infected\"\n", + ")\n", + "add_pred_to_plot(\n", + " intervened_samples[\"R\"], axs, coords=(1, 0), color=colors[2], label=\"recovered\"\n", + ")\n", + "axs[1, 0].set_title(\"Both interventions\")\n", + "axs[1, 0].legend_.remove()\n", + "\n", + "\n", + "axs[1, 1].hist(intervened_samples[\"overshoot\"].squeeze())\n", + "axs[1, 1].set_title(\n", + " f\"Overshoot mean: {intervened_samples['overshoot'].squeeze().mean().item():.2f}, Pr(too high): {intervened_samples['os_too_high'].squeeze().float().mean().item():.2f} \"\n", + ")\n", + "\n", + "\n", + "add_pred_to_plot(\n", + " mask_samples[\"S\"], axs, coords=(2, 0), color=colors[0], label=\"susceptible\"\n", + ")\n", + "add_pred_to_plot(\n", + " mask_samples[\"I\"], axs, coords=(2, 0), color=colors[1], label=\"infected\"\n", + ")\n", + "add_pred_to_plot(\n", + " mask_samples[\"R\"], axs, coords=(2, 0), color=colors[2], label=\"recovered\"\n", + ")\n", + "axs[2, 0].set_title(\"Mask only\")\n", + "axs[2, 0].legend_.remove()\n", + "\n", + "axs[2, 1].hist(mask_samples[\"overshoot\"].squeeze())\n", + "axs[2, 1].set_title(\n", + " f\"Overshoot mean: {mask_samples['overshoot'].squeeze().mean().item():.2f}, Pr(too high): {mask_samples['os_too_high'].squeeze().float().mean().item():.2f} \"\n", + ")\n", + "\n", + "add_pred_to_plot(\n", + " lockdown_samples[\"S\"], axs, coords=(3, 0), color=colors[0], label=\"susceptible\"\n", + ")\n", + "add_pred_to_plot(\n", + " lockdown_samples[\"I\"], axs, coords=(3, 0), color=colors[1], label=\"infected\"\n", + ")\n", + "add_pred_to_plot(\n", + " lockdown_samples[\"R\"], axs, coords=(3, 0), color=colors[2], label=\"recovered\"\n", + ")\n", + "axs[3, 0].set_title(\"Lockdown only\")\n", + "axs[3, 0].legend_.remove()\n", + "\n", + "axs[3, 1].hist(lockdown_samples[\"overshoot\"].squeeze())\n", + "axs[3, 1].set_title(\n", + " f\"Overshoot mean: {lockdown_samples['overshoot'].squeeze().mean().item():.2f}, Pr(too high): {lockdown_samples['os_too_high'].squeeze().float().mean().item():.2f} \"\n", + ")\n", + "\n", + "\n", + "fig.tight_layout()\n", + "fig.suptitle(\"Trajectories and overshoot distributions\", fontsize=16, y=1.05)\n", + "sns.despine()\n", + "\n", + "plt.savefig(\"counterfactual_sir.png\")" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "dict_keys(['lockdown', 'mask', 'lockdown_efficiency', 'mask_efficiency', 'joint_efficiency', 'beta', 'gamma', 'S', 'I', 'R', 'l', 'overshoot', 'os_too_high'])\n" + ] + } + ], + "source": [ + "with ExtractSupports() as s:\n", + " policy_model()\n", + "\n", + "supports = s.supports\n", + "print(supports.keys())\n", + "\n", + "antecedents = {\"lockdown\": torch.tensor(1.0), \"mask\": torch.tensor(1.0)}\n", + "alternatives = {\"lockdown\": torch.tensor(0.0), \"mask\": torch.tensor(0.0)}\n", + "witnesses = {key: s.supports[key] for key in [\"lockdown_efficiency\", \"mask_efficiency\"]}\n", + "consequents = {\"os_too_high\": torch.tensor(1.0)}\n", + "\n", + "# with MultiWorldCounterfactual() as mwc:\n", + "# query = with SearchForExplanation(\n", + "# supports=supports,\n", + "# alternatives=alternatives,\n", + "# antecedents=antecedents,\n", + "# antecedent_bias=0.0,\n", + "# witnesses=witnesses,\n", + "# consequents=consequents,\n", + "# consequent_scale=1e-8,\n", + "# witness_bias=0.2,\n", + "# ):\n", + "# with pyro.plate(\"sample\", exp_plate_size):\n", + "# with pyro.poutine.trace() as tr:\n", + "# policy_model_all()" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": {}, + "outputs": [], + "source": [ + "query = SearchForExplanation(\n", + " supports=supports,\n", + " alternatives=alternatives,\n", + " antecedents=antecedents,\n", + " antecedent_bias=0.0,\n", + " witnesses=witnesses,\n", + " consequents=consequents,\n", + " consequent_scale=1e-8,\n", + " witness_bias=0.2,\n", + " )(policy_model_all)" + ] + }, + { + "cell_type": "code", + "execution_count": 79, + "metadata": {}, + "outputs": [], + "source": [ + "logp, tr, mwc, lw = importance_infer(num_samples=10000)(query)()" + ] + }, + { + "cell_type": "code", + "execution_count": 88, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tensor([ -inf, -inf, -inf, ..., 16.1154, -inf, -inf])\n", + "tensor(2432)\n", + "torch.Size([10000, 1, 1, 1, 1, 1, 1, 1, 1, 1])\n", + "tensor(0.6594)\n" + ] + } + ], + "source": [ + "print(lw.squeeze())\n", + "\n", + "mask_intervened = (tr.nodes[\"__cause____antecedent_lockdown\"][\"value\"] == 1) & (tr.nodes[\"__cause____antecedent_mask\"][\"value\"] == 0)\n", + "print(mask_intervened.sum())\n", + "\n", + "with mwc:\n", + " oth = gather(tr.nodes[\"os_too_high\"][\"value\"], IndexSet(**{\"lockdown\": {2}, \"mask\": {2}}))\n", + " print(oth.shape)\n", + " os = gather(tr.nodes[\"overshoot\"][\"value\"], IndexSet(**{\"lockdown\": {2}, \"mask\": {2}}))\n", + "\n", + "denom = torch.sum(torch.exp(lw.squeeze()) * mask_intervened.squeeze().float()) / torch.sum(torch.exp(lw.squeeze()))\n", + "print(denom/0.25)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "tensor([[ 0.0000e+00, 0.0000e+00, 0.0000e+00],\n", + " [ 0.0000e+00, -inf, 0.0000e+00],\n", + " [ 0.0000e+00, 0.0000e+00, -5.0000e+15]])" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tr.trace.nodes[\"__cause____consequent_os_too_high\"][\"fn\"].log_factor[:, :, :, :, :, 6].squeeze()" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "def get_table(\n", + " trace, mwc, antecedents, witnesses, consequents, others=None, world: int = 1\n", + "):\n", + "\n", + " values_table = {}\n", + " nodes = trace.trace.nodes\n", + " witnesses = [key for key, _ in witnesses.items()]\n", + "\n", + " with mwc:\n", + "\n", + " for antecedent_str in antecedents.keys():\n", + "\n", + " obs_indices = IndexSet(\n", + " **{\n", + " name: {0}\n", + " for name, ind in indices_of(nodes[antecedent_str][\"value\"]).items()\n", + " }\n", + " )\n", + " obs_ant = gather(\n", + " nodes[antecedent_str][\"value\"],\n", + " obs_indices,\n", + " event_dim=0,\n", + " )\n", + "\n", + " int_indices = IndexSet(\n", + " **{\n", + " name: {world}\n", + " for name, ind in indices_of(nodes[antecedent_str][\"value\"]).items()\n", + " }\n", + " )\n", + " int_ant = gather(\n", + " nodes[antecedent_str][\"value\"],\n", + " int_indices,\n", + " event_dim=0,\n", + " )\n", + "\n", + " values_table[f\"{antecedent_str}_obs\"] = obs_ant.squeeze().tolist()\n", + " values_table[f\"{antecedent_str}_int\"] = int_ant.squeeze().tolist()\n", + "\n", + " apr_ant = nodes[f\"__cause____antecedent_{antecedent_str}\"][\"value\"]\n", + " values_table[f\"apr_{antecedent_str}\"] = apr_ant.squeeze().tolist()\n", + "\n", + " if witnesses:\n", + " for candidate in witnesses:\n", + " obs_indices = IndexSet(\n", + " **{\n", + " name: {world}\n", + " for name, ind in indices_of(nodes[candidate][\"value\"]).items()\n", + " }\n", + " )\n", + " obs_candidate = gather(\n", + " nodes[candidate][\"value\"],\n", + " obs_indices,\n", + " event_dim=0,\n", + " )\n", + "\n", + " int_indices = IndexSet(\n", + " **{\n", + " name: {world}\n", + " for name, ind in indices_of(nodes[candidate][\"value\"]).items()\n", + " }\n", + " )\n", + " int_candidate = gather(\n", + " nodes[candidate][\"value\"],\n", + " int_indices,\n", + " event_dim=0,\n", + " )\n", + "\n", + " values_table[f\"{candidate}_obs\"] = obs_candidate.squeeze().tolist()\n", + " values_table[f\"{candidate}_int\"] = int_candidate.squeeze().tolist()\n", + "\n", + " wpr_con = nodes[f\"__cause____witness_{candidate}\"][\"value\"]\n", + " values_table[f\"wpr_{candidate}\"] = wpr_con.squeeze().tolist()\n", + "\n", + " if others:\n", + " for other in others:\n", + " obs_indices = IndexSet(\n", + " **{\n", + " name: {0}\n", + " for name, ind in indices_of(nodes[other][\"value\"]).items()\n", + " }\n", + " )\n", + "\n", + " obs_other = gather(\n", + " nodes[other][\"value\"],\n", + " obs_indices,\n", + " event_dim=0,\n", + " )\n", + "\n", + " int_indices = IndexSet(\n", + " **{\n", + " name: {world}\n", + " for name, ind in indices_of(nodes[other][\"value\"]).items()\n", + " }\n", + " )\n", + "\n", + " int_other = gather(\n", + " nodes[other][\"value\"],\n", + " int_indices,\n", + " event_dim=0,\n", + " )\n", + "\n", + " values_table[f\"{other}_obs\"] = obs_other.squeeze().tolist()\n", + " values_table[f\"{other}_int\"] = int_other.squeeze().tolist()\n", + "\n", + " for consequent in consequents.keys():\n", + "\n", + " obs_indices = IndexSet(\n", + " **{\n", + " name: {0}\n", + " for name, ind in indices_of(nodes[consequent][\"value\"]).items()\n", + " }\n", + " )\n", + " obs_consequent = gather(\n", + " nodes[consequent][\"value\"],\n", + " obs_indices,\n", + " event_dim=0,\n", + " )\n", + "\n", + " int_indices = IndexSet(\n", + " **{\n", + " name: {world}\n", + " for name, ind in indices_of(nodes[consequent][\"value\"]).items()\n", + " }\n", + " )\n", + " int_consequent = gather(\n", + " nodes[consequent][\"value\"],\n", + " int_indices,\n", + " event_dim=0,\n", + " )\n", + "\n", + " values_table[f\"{consequent}_obs\"] = obs_consequent.squeeze().tolist()\n", + " values_table[f\"{consequent}_int\"] = int_consequent.squeeze().tolist()\n", + "\n", + " values_df = pd.DataFrame(values_table)\n", + "\n", + " return values_df\n", + "\n", + "\n", + "table = get_table(\n", + " tr,\n", + " mwc,\n", + " antecedents,\n", + " witnesses,\n", + " consequents,\n", + " others=[\"joint_efficiency\", \"overshoot\"],\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
lockdown_obslockdown_intapr_lockdownmask_obsmask_intapr_masklockdown_efficiency_obslockdown_efficiency_intwpr_lockdown_efficiencymask_efficiency_obsmask_efficiency_intwpr_mask_efficiencyjoint_efficiency_obsjoint_efficiency_intovershoot_obsovershoot_intos_too_high_obsos_too_high_int
71.00.001.01.010.00.000.100.1010.70.1027.41394820.0812401.01.0
121.00.001.01.010.00.000.100.1010.70.1028.14365418.1764261.00.0
171.00.001.01.010.00.000.450.4500.70.4523.87853229.1183361.01.0
441.00.001.01.010.00.000.450.4500.70.4532.59492925.2029081.01.0
681.00.001.01.010.00.000.100.1010.70.1030.27199018.7337441.00.0
.........................................................
19321.00.001.01.010.00.000.100.1010.70.1033.91317716.3358461.00.0
19401.00.001.01.010.00.000.100.1010.70.1018.85662823.3308110.01.0
19491.00.001.01.010.00.000.450.4500.70.4532.29933926.9598581.01.0
19841.00.001.01.010.00.000.450.4500.70.4521.07369629.3471391.01.0
19861.00.001.01.010.00.000.100.1010.70.1032.65984715.7352281.00.0
\n", + "

153 rows × 18 columns

\n", + "
" + ], + "text/plain": [ + " lockdown_obs lockdown_int apr_lockdown mask_obs mask_int apr_mask \\\n", + "7 1.0 0.0 0 1.0 1.0 1 \n", + "12 1.0 0.0 0 1.0 1.0 1 \n", + "17 1.0 0.0 0 1.0 1.0 1 \n", + "44 1.0 0.0 0 1.0 1.0 1 \n", + "68 1.0 0.0 0 1.0 1.0 1 \n", + "... ... ... ... ... ... ... \n", + "1932 1.0 0.0 0 1.0 1.0 1 \n", + "1940 1.0 0.0 0 1.0 1.0 1 \n", + "1949 1.0 0.0 0 1.0 1.0 1 \n", + "1984 1.0 0.0 0 1.0 1.0 1 \n", + "1986 1.0 0.0 0 1.0 1.0 1 \n", + "\n", + " lockdown_efficiency_obs lockdown_efficiency_int \\\n", + "7 0.0 0.0 \n", + "12 0.0 0.0 \n", + "17 0.0 0.0 \n", + "44 0.0 0.0 \n", + "68 0.0 0.0 \n", + "... ... ... \n", + "1932 0.0 0.0 \n", + "1940 0.0 0.0 \n", + "1949 0.0 0.0 \n", + "1984 0.0 0.0 \n", + "1986 0.0 0.0 \n", + "\n", + " wpr_lockdown_efficiency mask_efficiency_obs mask_efficiency_int \\\n", + "7 0 0.10 0.10 \n", + "12 0 0.10 0.10 \n", + "17 0 0.45 0.45 \n", + "44 0 0.45 0.45 \n", + "68 0 0.10 0.10 \n", + "... ... ... ... \n", + "1932 0 0.10 0.10 \n", + "1940 0 0.10 0.10 \n", + "1949 0 0.45 0.45 \n", + "1984 0 0.45 0.45 \n", + "1986 0 0.10 0.10 \n", + "\n", + " wpr_mask_efficiency joint_efficiency_obs joint_efficiency_int \\\n", + "7 1 0.7 0.10 \n", + "12 1 0.7 0.10 \n", + "17 0 0.7 0.45 \n", + "44 0 0.7 0.45 \n", + "68 1 0.7 0.10 \n", + "... ... ... ... \n", + "1932 1 0.7 0.10 \n", + "1940 1 0.7 0.10 \n", + "1949 0 0.7 0.45 \n", + "1984 0 0.7 0.45 \n", + "1986 1 0.7 0.10 \n", + "\n", + " overshoot_obs overshoot_int os_too_high_obs os_too_high_int \n", + "7 27.413948 20.081240 1.0 1.0 \n", + "12 28.143654 18.176426 1.0 0.0 \n", + "17 23.878532 29.118336 1.0 1.0 \n", + "44 32.594929 25.202908 1.0 1.0 \n", + "68 30.271990 18.733744 1.0 0.0 \n", + "... ... ... ... ... \n", + "1932 33.913177 16.335846 1.0 0.0 \n", + "1940 18.856628 23.330811 0.0 1.0 \n", + "1949 32.299339 26.959858 1.0 1.0 \n", + "1984 21.073696 29.347139 1.0 1.0 \n", + "1986 32.659847 15.735228 1.0 0.0 \n", + "\n", + "[153 rows x 18 columns]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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V199pe7du2vChAm6cOGCPvnkE4fHLlmyRC+++KJKliyp999/X9HR0dq2bZvatm2rv//+W7Vr15anp6d+//138zHpP9Rv3rzZLPv111913333KSgoSNKtjyUAuJfR19+dff2pU6f07rvvqkePHpo4caISEhL08ssvq1+/fmrTpo2mTp0qwzD06quv6sqVK5Kk1atXq1evXgoICNC0adM0efJkPfDAA3r77bcVExMjSfr+++81duxYdezYUXPmzFGvXr307bffasSIEZnGMWfOHE2bNk0jRoxQq1at/tU+ASzrAeSiv/76SwEBARnK+/fvr6ioKJ05c0avvvqqw6/PXl5e6tOnj/bv36/g4GB9+OGHKlSokD766CN5eXlJkooVK6b+/fvr4MGDqly5siTpwQcfzNbaWvv27dMjjzyisWPHys3t6u9UderU0c8//6yNGzfqiSee+De7DgC4g507d05JSUm6//77b1k3NjZW33zzjdl3SVf7i2LFimnQoEH69ddf1aBBgyw/t2EY6tmzp9q0aSNJCg0N1cqVK7V69WrVq1fPXA6rRIkS5vaUKVOUN29effLJJ/L19ZUk1a5dW40bN9bs2bP12muvme136NBBTZs2NW8/+OCDkqTKlSvr/vvv1+nTp5U3b1699tprqlGjhqSrpzcfPXrUHCDb7XZNnTpVjRs31siRI822EhMTtWzZMuXPnz9Du1l17NgxdenSxWGQW7p0aUVGRmrLli050v9m9T2bPHmyKleurClTpshms0m6uiTZxIkTFR8fb7aXlJSkl156SadPn9bnn39u7u+BAwe0YsUKvfXWW2rfvr0kqV69enryyScVGxsr6eprOW7cONWtW1fjx48326xevbqaN2+uOXPmaNCgQQoLC9P69evVtWtXSdL69esVEBCgTZs2mY9Zu3atGjRoYH5vudWxBAD3Mvr6u7OvT0xM1LBhw1S/fn1JV9+78ePHa9SoUWrdurUk6fLly3r55Zd1+PBhVa5cWbGxsWrVqpXD0i4hISEKDw/Xxo0bFRQUpD/++EP333+/OnbsKDc3N4WFhcnHx0cXLlzIEMOXX36psWPH6u233zafE/g3SE4DucjPz0/Tp0/PUF6iRAlJMgdpZ8+e1aFDh3TkyBH98ssvkqTk5GRJV9cJa9CggZmYlq52JD///LMkZTgtKatatmypli1bKikpSYcPH9aRI0e0d+9epaWlKSUl5bbaBAC4Bnd3d0lXl364lT/++EOSMgyknnjiCUVHR2vjxo3ZGrBKV/uxdJ6enrrvvvt0+fLlG9bfsGGDwsLC5O3trdTUVEmSr6+vatSo4TDbVpL5o+2NFC9eXJ999pkMw9Dx48d15MgRHTp0SFu3bjX73sOHD+vvv//WY4895vDYLl26qEuXLtna1+ulnxackJBg9v3pp0KnP/+/lZX3LDw8XHv27FGfPn3MxLR0dRZd8+bNHR43aNAg7dq1S++8847DWp7ps5rTlxWTJDc3NzVp0sRMTh8+fFhxcXHq37+/Q5sPPvigQkJCzFivPZX6r7/+0qlTpzRkyBD16dNHf/31lwoWLKht27bp2WefdWgnu8cSANwr6Ovv3r6+evXq5nbRokUlyTyrSJIKFSpkPr8k84ffS5cu6fDhwzp69Kh27tzpEE+tWrW0YMECRUZGqnHjxmrQoIGefPJJh+8I0tWzrvbs2aMaNWroP//5z7/eF0AiOQ3kKk9PT1WrVu2G9+/cuVPDhw/Xzp07lTdvXlWoUME8TTb91Knz58+rSJEiOR7blStXNGLECH377bdKTU3V/fffr5CQEHl4eGT7tC0AgGspWLCg8uXLZ64bnJnLly8rJSXFnDHj5+fncL+Hh4cKFy6sf/75J9vP7+3t7XDbzc3tpn3P+fPn9cMPP+iHH37IcN99993ncNvHx+eWz7906VK9//77OnnypAoVKqTKlSs7xJR+YaXc6H+PHj2qoUOHav369cqTJ4/KlSunSpUqSVKO9b9Zec8uXLggwzCytI+nT59WQECApk6dqqZNmypfvnwOz1O4cGGH+tc+b/prmT54vlbRokXNdaYjIiI0cuRIbd26VYcOHVLZsmXVsGFD+fj4aNOmTfLx8ZHNZlPdunUd2sjusQQA9wr6+ru3r0+fWX6tGy3dIl2dDDds2DCtWrVKNptNZcqUMWeUp8fTvHlz2e12ffHFF+bSH6VLl9aAAQMcfrTevXu3IiIitHr1av38888OP1ADt4vkNGCRixcvqmvXrqpYsaKWLVumcuXKyc3NTWvWrNGKFSvMevnz59fZs2czPH7NmjU3/cX4+l/Ir/+VetSoUVqxYoUmTJigRx55xOzga9eu/W92CwDgIurWrauNGzcqKSnJ4eycdF999ZXee+89vfzyy5KkuLg4lS5d2rw/JSVF586dc0hM3qrvuV358+fXI488ohdeeCHDfR4e2fs6u3nzZr322mvq1KmTunTpouLFi0uSxowZoy1btkiSChQoIEkZ+t9z585pz549DrPBrnez18ButysqKkp58uTRN998o8qVK8vDw0OxsbH69ttvs7UfN1OwYEFJN3/PfH19ZbPZMuxjUlKSNmzY4DADK/1U68jISH3wwQd64403JP1fUjo+Pt78cV36vwG/9H+zt65dJiRdXFyc2cYDDzygcuXKaf369Tp8+LDCwsKUJ08eVa9eXRs3bpS7u7tq1qyZ6YAcAJA5+vq7t6/PjgEDBujQoUP65JNPFBISIk9PTyUmJuqrr75yqNeiRQu1aNFC//zzj9atW6dZs2Zp4MCBCg0NNV/Dtm3bavjw4Wrfvr2GDx+usLAw+mb8a1wQEbDIoUOHdP78eT333HOqUKGCuX7ir7/+KulqpyZJNWrU0G+//eZw+s+ePXsUFRWl3bt3m6drXcvX1zfDhRbSO+Frb4eHh6tx48ZmYnrXrl06e/as+dwAgLvXiy++qPPnz2vChAkZ7ouLi9NHH32kChUqmKe7Llu2zKHOsmXLlJaWptDQUElZ63uyKr1PTBcWFqbY2FhVrlxZ1apVU7Vq1VS1alV98sknWrlyZbba3rZtm+x2u/r06WMOtNLS0sxThu12u8qVK6fChQubS22l+/bbbxUVFaWUlJQMMUpXX4PTp087lG3dutXcPnfunA4fPqzWrVurWrVq5mD7+r7/3woLC5N08/csX758qly5coZ9/PXXX83rYqQrWrSoKlasqM6dO2vevHnmxZNq1aolSVq+fLlDG9e2WbZsWfn5+en77793qHPs2DFt377d4dTkiIgIbdy40fyOIslcD3Pt2rVq2LDhbb0eAHCvoq+/e/v67NiyZYsef/xxhYeHy9PTM9N4XnnlFfXq1UvS1R8KmjVrpp49eyo1NdXhO4Gfn59sNpveeustxcfHO1xPArhdzJwGLFK2bFn5+vrqww8/lIeHhzw8PLRixQp98803kq5e6ECSevbsqbZt26p79+567rnndOXKFU2YMEGBgYGqU6eOmbRev369ypcvr6CgIDVs2FA///yzRo8erUaNGmnz5s1asmSJw/MHBgbqxx9/1Jdffqny5ctr3759mj59umw2m/ncAIC7V3BwsPr27asJEybo4MGDatmypQoXLqwDBw5ozpw5SkpK0oQJE1S+fHm1atVKkyZNUmJiomrWrKm9e/dqypQpCg8PNy88l5W+J6sKFCigrVu3atOmTapRo4Z69uypdu3aqXv37mrfvr28vLy0YMECrVq1SpMmTcpW24GBgZKkt99+W88884wuXLigefPmad++fZKuzn7y9fVVnz599Pbbb6tIkSJq1KiRDh8+rEmTJqljx44qWLCgOeNq5cqVql+/vsqXL6+IiAgtW7ZMQUFBKlOmjBYtWqQjR46Yz12kSBGVLl1a8+bNU4kSJVSgQAGtXbtWn332mSTlWP9boUKFLL1nL7/8sl566SX169dPLVu2VHx8vN5//301btxY/v7+2rVrl0O7vXv31o8//qg33nhDixYtUpkyZdS2bVt98MEHSk1NVeXKlfXtt99q//795mPc3NzUr18/RUdHq3///nrqqad07tw5TZkyRQULFnSYIdegQQN99NFHkv4vwV6rVi1z4EtyGgCyh77+7u3rsyMwMFDfffedAgICVKJECW3dulUzZ850GPvXqlVLw4YN03vvvaf69esrISFBU6ZM0UMPPWQuSXKtSpUq6fnnn9dHH32kJ5980uHHZiC7SE4DFsmfP7+mTZumMWPGqG/fvuYMprlz56pbt27avHmzGjVqpCpVqujzzz/X+PHj9corr8jX11cNGjTQgAED5OnpKU9PT73wwgtasGCB1qxZo99++03PPPOMjh49qsWLF2v+/PmqWbOmJk2apPbt25vPP3jwYKWkpGjChAlKTk7W/fffr5deekmxsbH6+eefs3ThDACAa3vppZdUpUoVzZs3T++8844uXLigkiVLKiIiQj169FDJkiUlXV0KqkyZMlq4cKFmzZqlYsWK6bnnnlPPnj3NWUVZ6XuyqkePHpo2bZq6deumH374QZUqVdK8efP0wQcfaNCgQTIMQ/7+/po6daoeffTRbLUdHh6uoUOH6uOPP9by5ctVtGhRhYeHa8qUKerVq5d5IeKOHTvKx8dHc+bM0YIFC1SiRAl169ZN3bp1M9t55JFHNH78eK1fv14zZ85UdHS0UlNT9d5778nDw0PNmzdX//79zWUwJGnatGkaNWqUBg8eLE9PT1WoUEHTp0/XO++8o82bN6tTp07Zfr0yk5X3rGHDhvrwww/Nfb/vvvv05JNPqk+fPpm2mTdvXg0dOlTdu3fXzJkz1atXLw0bNkxFixbV3LlzdeHCBdWrV089evRwmKUXGRmpfPnyacaMGerVq5d8fX1Vr1499evXz2F909DQUOXPn19FixY1ywMCAuTr66vixYs7XIwRAJA19PV3b1+fVe+++65GjBihESNGSJIeeughDR8+XEuXLjUvbtyuXTulpKRo/vz5+uKLL+Tt7a3atWtr4MCBypMnT6bt9unTR8uXL9cbb7yhJUuWmLOygeyyGVwxBAAAAAAAAADgZMycBgAAAO5Qqampt6zj5uaW6bqYAADgzkdfj3sdyWkAAADgDnT8+PEsncrcu3fvGy7FAQAA7lz09QDLegAAAAB3pOTkZIeLC95IsWLFVLx4cSdEBAAAchJ9PUByGgAAAAAAAABgARasgWX4XQSZ4bgAgDsLn8vIDMcFANx5+GxGZjgucKcjOQ1J0uTJk1WxYkWnPd+WLVsUFRXltOe7E+zevVvdunVTrVq1FB4erhdffFG7d+92qGMYhubMmaPHH39c1apVU5MmTTRv3rxbtp2cnKz3339fERERCgwM1FNPPaUffvghQ71FixbpySefVLVq1dSoUSNNmTJFaWlp2dqP9GPl2r8qVaooPDxcvXr10oEDB7Lc1kcffaQBAwZIkhISEjRo0CBt3rw5W/HcrsGDB6tRo0Y3rbNo0SJVrFhRx48fz3K7WXnMuXPnFBERoWPHjmW53WtdunRJw4cPV506dRQSEqJu3brp0KFDt3zc/v371bVrV4WFhalu3bp67bXXFB8ff8P6n3/++S1fIwDORX+d+7LSX18rO5+VH3zwQYY+tGLFipozZ45Z5+zZs3rjjTdUr1491ahRQ507d9aePXuyvR+DBw/O8DwBAQGqW7euBg4cqJMnT2a5rREjRuiDDz6QJJ06dUpRUVH666+/sh3T7ejUqZM6dep00zq383+RlcccOnRIjRo1UkJCQrbaThcfH6/+/fsrPDxcoaGh6tevn86cOXPLx50+fdp8XPXq1W95DLz77ru3fI0AOB99du67E8bYn376qR577DEFBgaqVatWWrNmTbb3gzH2zd3JY+xt27apU6dOCgoKUu3atRUdHZ3pGDsnjpO7GclpWOLrr7/WwYMHrQ7DaY4cOaJnn31WV65c0ahRozR69GglJyerQ4cODh94Y8aM0QcffKDWrVtr5syZatSokd5++20tWLDgpu0PGDBA8+bNU1RUlD788ENVrlxZ/fr106+//mrWmTdvnl5//XXVq1dPM2fOVJs2bfThhx9q4sSJt7VPCxYsMP8+//xzvfHGG9q7d686duyouLi4Wz7+4MGDmjFjhgYOHChJ2rt3r7799lvZ7fbbiic3REREaMGCBSpWrFiOtlu4cGF17txZr7/++m39it2/f38tX75c/fv313vvvafTp0/rueee04ULF274mPj4eD3//PP6+++/NXr0aL3++uvatGmTunXrppSUlAz1ly1bpnfffTfbsQG4u9BfZ95fp8vuZ+W+ffsUFhbm0IcuWLBATz75pKSrA+g+ffpo1apV6tu3r95//33Z7XY9++yztzXY8vPzc3ieTz/9VH379tWvv/6qTp066cqVK7dsY/369Vq5cqV69OghSfr999/vuAFVmzZtbvld6XaUK1dOjz76qEaOHJntx6ampqpbt27asWOH3nrrLb311lvaunWrunTpkmm/m+7ixYvq2LGj9u7dq+HDh2v8+PG6dOmSXnjhhUwT2x999JE+/vjjbMcH4O5Dn+38MfbHH3+s9957Ty1bttTkyZP1wAMP6KWXXrrtZDBj7NtnxRh7x44d6tSpkxISEvTuu+/qnXfe0fHjx9W2bVv9888/Zr2cPk7uRh5WBwDcCz7//HPlzZtXM2bMkI+PjySpVq1aatSokebOnauhQ4fq+PHj+uSTT/Tmm2+qQ4cOkqTatWvr5MmTWrdundq2bZtp25s3b9aKFSs0c+ZMNWjQwHzckSNH9Ouvv6p+/fq6fPmyxo8fry5dupgdVe3atZWQkKDff/9d/fr1y/Y+BQcHO9wODQ1VyZIl1bFjRy1evPiWv9qPHTtWLVq0uKMv6nDffffpvvvuy5W2O3TooOnTp2vlypV6/PHHs/y4bdu26ZdffnF4v2vUqKFHH31UX3zxhV566aVMH/fTTz/p3Llz+uqrr/Tggw9KkvLnz6+uXbtq27ZtCgsLkyT9/fffmjhxohYsWKBChQr9u50EABeTlf5auv3Pyr179yoyMjJDH5ruf//7nzZv3qyRI0eqdevWkqTq1aurVq1a+vbbb9W7d+9s7Y+np2eG56pRo4by5Mmj1157TT/99JOeeOKJm7YxevRode7cWXnz5s3WcztTiRIlVKJEiVxpOyoqShEREXr++ecVEBCQ5cctX75ce/bs0bJly1ShQgVJUuXKldWiRQv9+OOPeuqppzJ93Keffqrz58/rhx9+MAfuVatWVWRkpP744w+1aNFCknTs2DG99957+vnnn5U/f/5/uZcA4HqsHmNfuXJF06ZN0wsvvKBevXpJkurXr6927dpp6tSpt/XDIWPsf8fZY+zp06crf/78+uyzz1SwYEFJV4/BZs2aafbs2Xr11Vdz5Ti5GzFz2knOnDmj6OhoNWjQQIGBgWrdurV++ukn8/4XX3xRkZGRGR7Xs2dPhy+vmzdv1rPPPqugoCCFhYXptdde09mzZ837Fy1apCpVqujrr79WnTp1FBYWptjYWB09elQ9evRQeHi4goKC1LZt20xnvaxevVpPPfWUebrLkiVLsrUfkpSUlKSpU6eqadOmqlatmh5//HHNnDnT/LVu8ODBWrx4sf766y9VrFhRixYtyvQ1mzx5spo2baqVK1eqRYsWqlatmp5++mlt27ZN27dvV5s2bRQYGKgWLVpo/fr1Do/9888/1b17d1WvXl3Vq1dXr169Msw42rdvn3r37q1atWopICBA9erV08iRIx1mEVWsWFHz5s3TkCFDFBYWppCQEPXt29fhNI30U0w2btyY6X5IV2fevPjii2anKUk+Pj4qUaKEjh49KklatWqVvLy8zMFougkTJmjy5Mk3bHv58uV68MEHzQ9RSbLZbJo/f77eeOMNSdJvv/2mS5cuZTjl87XXXtM333xzw7azq2rVqpJknuo7efJkPfbYY5oyZYq5lMSFCxf0559/avXq1eYAa+PGjXruueckSc8995xDnD/88IMiIyMVEhKiOnXqaOjQoRl+vdy5c6e6dOlinv7ao0ePLJ/6tGjRIjVp0kTVqlXTU0895fB/kdnpQ4sXL1bz5s3N+uvXr1eVKlUyHMcxMTFq166dqlWrpoiICM2ePdvhfk9PTzVp0kQzZswwyzZu3HjT/wlJWrdunXx8fFS3bl2z7L777lPNmjVvOpMtKSlJkuTr62uWpSdUzp8/b5Z9+OGHWrdunSZPnqyGDRvesD3gbkV/TX99q/5aur3PyrNnz+r06dOqXLnyDetk9lnt4+MjLy8vh8/qf6tatWqS/q+/Hjx4sJ5//nkNGzZM1atXV/PmzZWWlqbVq1frzz//NBPYixYtUnR0tCTp0Ucf1eDBgyVJaWlpmjdvnp588kkFBgYqIiJC48aNM/cn3W+//aYOHTooNDRU4eHh6t+/f5aWFzEMQ7NmzTJPrW7btq127Nhh3p/ZqfNz5szRo48+qsDAQLVr104///xzpu//rf6X/Pz8VKtWLYf+OivH0rp161S2bFkzMS1JFSpUUPny5W/aX69YsUJNmjRxmFHm5+entWvXmt+bpKs/Ghw5ckSffvrpTY8p4G5Gn02fbeUYOyYmRgkJCXrssccc6jz22GPauHFjls5OygrG2P/nThtjHzp0SKGhoWZiWpLy5s2rwMBArV692ozZGceJqyM57QTx8fFq3bq1Nm/erFdffVWTJ09W6dKl1atXLy1dulSS9NRTT2n37t06cuSI+biEhAT9+uuvevrppyVJmzZtUufOneXt7a0JEybo9ddf1x9//KHnnnvO4YBOS0vTRx99pFGjRik6Olply5ZV9+7dlZiYqDFjxmjatGkqVKiQXnrpJYfnk6ShQ4eqc+fOmj59ukqUKKHBgwdr3759Wd4PwzDUo0cPzZ4921w2omnTppowYYKGDRsm6eqXgQYNGpinmkZERNzwtTt16pTeffdd9ejRQxMnTlRCQoJefvll9evXT23atNHUqVNlGIb5i5QkHT58WO3atdPff/+t9957T6NGjdKxY8fUvn17/f3335KufgHo2LGjEhMT9e6772rWrFl64okn9Pnnn+uzzz5ziOGDDz6Q3W7X+++/r0GDBumXX37RO++8Y96fflrKzWbTdOjQQV27dnUoO3LkiA4cOKCHH35Y0tXZVGXKlNGmTZvUqlUrBQQEqFGjRrc83Wjfvn16+OGH9d1336lZs2aqUqWKmjVrplWrVpl19u7dq/z58ys+Pl4dO3ZU1apVVadOHU2bNi1HL45w+PBhSTJn5krSiRMntGbNGn3wwQeKjo5WwYIF9d1338nPz8/8ZTggIMCcjTZ06FDzWJk2bZr69eun4OBgTZo0Sb169dKKFSscTkXesGGD2rdvL0l65513NHLkSJ08eVLt2rW75WltJ0+e1MyZM9W3b19NnjxZNptNL7/8snmcXG/JkiUaPHiwqlevrmnTpqlJkybq2bNnput2v/XWW3riiSc0c+ZMhYSEaOzYsfrll18c6jRt2lS7du0yX7eAgIBb/k8cPHhQ999/v9zd3R3KH3zwQbOdzDRr1kx+fn56++23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stauXWu+3vXr15fNZsu07UKFCt30Azc3lC5dWidPnnQou34mQFBQkDw9PfX99987lG/evFknTpxQ9erV5ePjo6pVq+rHH390uGDCP//8o9WrV5v7nxNKlCihBx980DyG0v33v/+97TYvXLigxMTEDDPpbqZu3bq6dOmS1q5da5adPXtWmzdvVp06dW74uHLlymnr1q0OvywnJSVp9+7ddIjA/0d/TX+dlf76di1fvlzR0dHmLGLp6tIZq1evVnh4uKSrA5jY2FiHOpK0detW5c+fP0cHhLfi6ekpPz+/DP319cdEWFiYpIzfX5YtW6a0tDSFhoaqbNmy8vPzy9CnHzt2TNu3b3c4vfzfqlSpkvLnz5+j/fWpU6ckKdv99cGDBxUbG2uWxcbG6uDBgzftrxs0aKDff//dIZl+6NAhHT582OF0ZuBeR59Nn231GDskJEQ+Pj5asWKFWccwDK1cuVJhYWHy9PT81/uYHYyxr3LmGPuPP/7QgAEDHH7I/+2333TgwAFzYtiddpzcqZg57QQvvPCCli5dqs6dO6t3794qVKiQlixZog0bNuidd95x6ESefvppffTRR3Jzc8twalG/fv0UFRWl/v3766mnnjJP+4yJiTGvlp6ZKlWqyNvbW4MGDVKfPn1UtGhR/f7779q7d6+ee+65HN2P+vXrKzw8XG+88YZOnz6tSpUq6Y8//tCsWbPUqlUrVahQQdLV9Yri4+O1Zs0aVa5cWcWKFcvmq3pjPXv2VLt27dS9e3e1b99eXl5eWrBggVatWmUuXRAYGKhp06Zp5syZCg4O1pEjRzRjxgwlJydne62rs2fP6ujRo6pQocINO7eRI0fq77//1vDhw3Xx4kVt377dvM/X11cVKlRQeHi4GjZsqNGjRysxMVEPP/ywlixZoq1bt5rrWklXZ9ycPXvWXKfrySef1Ny5czVgwAD1799fxYsX12effaZTp05p4sSJkqQHHnhAzz77rGbPni0PDw/VrFlTv/zyi5YuXao333xTefLkkXR18HXq1ClVqVIlVz8k69Spoy+++MLhl+j0LzCrV69WwYIFValSJUVFRWnq1KnKkyePGjZsqOPHj2vixImqUKGCWrVqJUnq37+/unTpoqioKHXo0EEpKSmaOXOmkpOT1atXrxyLOf0qwwMGDNCwYcP02GOPad++fZo6daqk2/syuGXL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f16zZs3SyJEj5enpmeH+2NhYlSxZksQ08C/QhwEAgDuJu7u7nn76aXMbcCUkpwFYwpCbYtOKWh0GcNf58ssvVaxYMTVt2jTT+w8ePKg8efKoe/fu2rVrl8qWLatBgwYpMDDQyZECros+DAAA3Enc3d0VHBxsdRjAbXGzOgAAAJAzDMPQ119/rWefffaGdQ4fPqwLFy6oTZs2mjlzpsqXL6/nn39eJ0+edGKkAAAAAACQnAZgEZsM3e92Xve7nZdNhtXhAHeFnTt36vTp03riiSduWGfEiBFatWqVGjdurICAAL311lu6//779e233zoxUsC10YcByClHjhxRly5dFBISooiICM2ePdu879ixY+rcubOCg4PVvHlzrVu3zsJIAdzJ7Ha7/vzzT/3555+y2+1WhwNkC8lpAJZwl12PecXqMa9YuYvOE8gJa9euVY0aNVSwYMEb1vHw8JCvr69522azqVy5cjp9+rQzQgTuCvRhAHKC3W5XVFSUChcurMWLF2v48OGaPn26vvvuOxmGoV69eqlo0aJauHChnn76afXu3VsnTpywOmwAd6DU1FR9+eWX+vLLL5Wammp1OEC2kJwGAOAusWPHDlWvXv2mdTp16qQpU6aYt+12u/bv369y5crldngAAOAa8fHxqly5st566y099NBDatCggWrXrq0tW7Zow4YNOnbsmN5++22VL19e3bt3V3BwsBYuXGh12AAA5CiS0wAA3CUOHDigChUqOJSlpaUpLi5OycnJkqRGjRrpk08+0U8//aRDhw7p7bff1j///KNWrVpZETIAAPesYsWKacKECfL19ZVhGNqyZYs2bdqksLAwxcTEqEqVKvLx8THrh4aGavv27dYFDABALiA5DQDAXSI+Pl4FChRwKDt58qTq1q2rbdu2SZI6d+6srl27auTIkXr66acVGxurjz/+2GGpDwAA4FyNGjVShw4dFBISoiZNmiguLk7FihVzqFOkSBGdOnXKoggBAMgdHlYHAAAAcsaOHTsylN1///3av3+/edtms6lHjx7q0aOHM0MDAAA3MWnSJMXHx+utt97S6NGjlZiYKE9PT4c6np6e5plQAADcLUhOAwAAAABgoWrVqkmSkpKSNGDAAD3zzDNKTEx0qJOcnCxvb28rwgMAINewrAdwF0mzG1aHAAAAACAL4uPjtWrVKoeyChUqKCUl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e3PaGKNPPvlE27ZtU3Z2tq699lo9/fTT8vv9dpdmicmTJ2vevHnq2LFjs/Hq6molJyc3G+vWrZuOHDkSzvIsc679rKiokMfj0fPPP6+rrrpKN954o1577TWbqmy7xMREZWVlhe4Hg0GtWbNGw4cPd9WctrSfbpvTU40ePVqTJ09Wenq6srOzXTWnpzt9X902rzt27NA///lPTZs2rdm4m+e0vZHX33H670w0ZHa05LVEZrs9s8nr77hhPsPFzZlNXpPXTp1T8trdeS2R2adq7ZzavuZ0VVWV6urqFBMTo8WLF+uzzz7TY489pvr6ej300EN2l9dumvb5VDExMa44YTjVoUOH5PF41KdPH9166616//339fDDDyshIUHXXXed3eW1WX5+vvbv36+//vWveumll1w7p6fuZ2lpqWvn9Nlnn1VNTY0eeeQR5eXlufr/6en7OmjQINfMa0NDgxYsWKDf/va3iouLa/Y9N89peyOvv+PW3xk3Z3a05LVEZp/KDfNKXn/HDfMZLtGY2dH0O0Neu2NOyevvuGVeyezvtHZObW9OX3LJJdq1a5c6d+4sj8ejAQMGKBgMavbs2Zo7d658Pp/dJbaL2NhYffnll83G/H7/GZPsdDfffLOuueYadenSRZLUv39/ffrpp1q3bp3j/jOeLj8/X6tXr9aiRYuUmprq2jk9fT8vv/xy187pkCFDJJ088N5///2aOHGi6urqmj3GDXMqnbmve/bscc28Ll26VIMHD252ZUKT2NjYM0LSLXPa3sjr77j1d8atmR0teS2R2W7MbPL6O26Yz3CJxsx287H9dOS18+eUvHZfXktk9qlaO6e2L+shSV26dAmtTSJJKSkpamho0PHjx22sqn316NFDNTU1zcZqamrOuBTe6TweT+g/YpM+ffro6NGj9hRkkYULF+rFF19Ufn6+srOzJblzTs+2n26b05qaGm3evLnZWN++fXXixAklJSW5ak5b2tfa2lrXzOsbb7yhzZs3Kz09Xenp6dqwYYM2bNig9PR0V/4/DSfy+iS3/s647fguRU9eS2S2mzKbvCavrRBtmR1NvzNuO7ZL5LXb5jRa8lois63KbNub0++++64yMzObvXNy4MABdenSRV27drWxsvaVlpam0tJS1dfXh8aKioqUlpZmY1XWW7JkiaZMmdJs7KOPPlKfPn3sKcgCS5cuVUFBgZ555hndcMMNoXG3zem59tNtc/rZZ59pxowZzQLiww8/VNeuXZWRkeGqOW1pX19++WXXzOvLL7+sDRs2aP369Vq/fr1Gjx6t0aNHa/369UpLS9PevXtljJF0ck3GPXv2OHZOw4m8dsdxoCVuO75HS15LZLbbMpu8Jq/bKhoz243H9nNx27GdvHbfnEZLXktktmWZbWz29ddfm6ysLHPfffeZiooK884775iRI0ealStX2l2a5VJTU83OnTuNMcY0NjaasWPHmt/85jfm448/Ni+88IIZOnSo+de//mVzlW136n6WlJSYgQMHmlWrVpnDhw+btWvXmsGDB5s9e/bYXOWFKS8vNwMGDDCLFi0yx44da/blpjltaT/dNqeNjY1mwoQJZurUqaasrMy888475sc//rF56aWXXDWnxrS8r26b11PNmTPHzJkzxxhzMnOGDx9uFi5caMrKyszChQvNiBEjzDfffGNzlZGPvHbHceB0bs3saMlrY8hsN2Y2eU1et1W0ZDZ57fzjAHlNXjt9XslsazLb9ua0McZ8/PHHZsqUKWbo0KFmxIgR5rnnnjPBYNDusix3aqAYY8ynn35qfvGLX5jBgwebG264wWzfvt3G6qxz+n5u2rTJjB8/3gwZMsSMGTPGvPnmmzZW1zYvvPCCSU1NPeuXMe6Z0+/bTzfNqTHGHDlyxEyfPt1cccUVZsSIEWbFihWhY5Bb5rRJS/vqtnltcmpwGnPyhP7mm282Q4YMMbfccospLS21sTpnIa/dcRw4lVszO1ry2hgy262ZTV6T120VDZlNXjv/OEBek9dOn1djyGxj2p7ZHmP+c901AAAAAAAAAABhYvua0wAAAAAAAACA6ENzGgAAAAAAAAAQdjSnAQAAAAAAAABhR3MaAAAAAAAAABB2NKcBAAAAAAAAAGFHcxoAAAAAAAAAEHY0pwEAAAAAAAAAYUdzGgAAAAAAAAAQdjSnAQAAAAAAAABhR3MaAAAAAAAAABB2NKcBAAAAAAAAAGH3/wGnmnSwofx6gwAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "factual = table[\n", + " (table[\"lockdown_int\"] == 1)\n", + " & (table[\"mask_int\"] == 1)\n", + " & (table[\"wpr_lockdown_efficiency\"] == 0 & (table[\"wpr_mask_efficiency\"] == 0))\n", + "]\n", + "\n", + "\n", + "counterfactual_lockdown = table[\n", + " (table[\"lockdown_int\"] == 0)\n", + " & (table[\"mask_int\"] == 1)\n", + " & (table[\"wpr_lockdown_efficiency\"] == 0)\n", + "]\n", + "\n", + "display(counterfactual_lockdown)\n", + "\n", + "counterfactual_mask = table[\n", + " (table[\"lockdown_int\"] == 1)\n", + " & (table[\"mask_int\"] == 0)\n", + " & (table[\"wpr_mask_efficiency\"] == 0)\n", + "]\n", + "\n", + "\n", + "fig, axs = plt.subplots(1, 3, figsize=(18, 6))\n", + "\n", + "factual_mean = factual[\"overshoot_int\"].mean().item()\n", + "axs[0].hist(factual[\"overshoot_int\"])\n", + "axs[0].set_title(\n", + " f\"Factual\\n overshoot mean: {factual_mean:.2f}, Pr(too high): {factual['os_too_high_int'].mean().item():.2f}\"\n", + ")\n", + "axs[0].axvline(x=factual_mean, color=\"grey\", linestyle=\"--\")\n", + "\n", + "counterfactual_lockdown_mean = counterfactual_lockdown[\"overshoot_int\"].mean()\n", + "axs[1].hist(counterfactual_lockdown[\"overshoot_int\"])\n", + "axs[1].set_title(\n", + " f\"Counterfactual_lockdown\\n overshoot mean: {counterfactual_lockdown_mean:.2f}, Pr(too high): {counterfactual_lockdown['os_too_high_int'].mean():.2f}\"\n", + ")\n", + "axs[1].axvline(x=counterfactual_lockdown_mean, color=\"grey\", linestyle=\"--\")\n", + "\n", + "counterfactual_mask_mean = counterfactual_mask[\"overshoot_int\"].mean()\n", + "axs[2].hist(counterfactual_mask[\"overshoot_int\"])\n", + "axs[2].set_title(\n", + " f\"Counterfactual_mask\\n overshoot mean: {counterfactual_mask_mean:.2f}, Pr(too high): {counterfactual_mask['os_too_high_int'].mean():.2f}\"\n", + ")\n", + "axs[2].axvline(x=counterfactual_mask_mean, color=\"grey\", linestyle=\"--\")\n", + "\n", + "for i in range(3):\n", + " axs[i].set_xlim(5, 40)\n", + " axs[i].axvline(x=overshoot_threshold, color=\"red\", linestyle=\"-\")\n", + "\n", + "plt.savefig(\"counterfactual_sir_search.png\")\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAAJdCAYAAADjrMQFAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAACXGUlEQVR4nOzdd3yN5//H8ffJkJixErs1T4zYq1EVexS1WmpXqdEqNVp0aatF0ZotaraoUfOrVo2WKjVKqwi1R2JESImQde7fH345dSRBSO6TyOv5eHg457rX5z7jvq58znVdt8UwDEMAAAAAAACAiVycHQAAAAAAAADSH5JSAAAAAAAAMB1JKQAAAAAAAJiOpBQAAAAAAABMR1IKAAAAAAAApiMpBQAAAAAAANORlAIAAAAAAIDpSEoBAAAAAADAdCSlAAAAAAAAYDqSUgDSnN9++03Dhg1To0aNVKlSJfn5+almzZrq1q2b5s6dq6tXrzo7xDRry5Yt6tChgypVqiRfX1/5+vpq165dzg7LqYYOHSpfX18tX778obfZtWuXfH191blz5xSMzNzjO/uczHT+/Hn5+vqqbt26zg4lTatbt658fX11/vx5p8ZhGIZmzpypZs2aqVy5cvZrW5yoqCh9+eWXatiwofz8/Bze++XLl8vX11dDhw597DhSy+sBAEBq4ubsAADgYV29elWDBg3Sjh07JEkFChRQ9erVlSlTJoWEhGj//v3asWOHJk6cqLlz56p8+fJOjjhpJk+erClTpqhv37568803TT9+YGCg+vXrJ5vNpmeeeUbe3t6yWCzKnTu3aTGcP39e9erVU4ECBbRlyxbTjgvgyfX9999r7Nixypo1q2rVqqUsWbI4LJ8wYYJmzZql3Llzq169esqYMaNy5MjhpGjhbMuXL9ewYcPUqlUrjR492qmx7Nq1S126dFG1atU0b948p8YCACmFpBSANOHGjRvq0KGDTp06paJFi2rEiBGqUqWKwzpRUVFasWKFJk+erJCQECdFmnZt2rRJ0dHR6t27twYMGODscAAgWaxfv16SNHHiRD377LOJLl+wYIEKFy7ssKxBgwYqX768smbN+thxzJ07V9HR0cqTJ89j7wsAgCcFSSkAacKIESN06tQpFShQQAsXLlT27NnjrZMhQwa1a9dO9erV0/Xr180PMo0LDg6WJD399NNOjgQAks+Drm1xy+9NSElS1qxZkyUhJUlPPfVUsuwHAIAnCXNKAUj1zp07px9//FGSNGzYsAQTUnfLnTu3ihYtGq98zZo16tq1q6pVqyY/Pz/VqVNHw4YN06lTpxLcz73zjtyrc+fOCc65dHd5YGCg+vbtq+rVq8vPz0/PP/+8Zs+eLcMw4h1rypQpkqQpU6bYj53QXCYxMTH64Ycf1LlzZ/u51K1bV8OHD9eFCxfixXn3XEC3bt3SxIkT1aRJE5UvX15169bV5MmTHeZMGjZsmP3Yd88ftGPHDo0YMUItWrSwn0+tWrX01ltv6cCBA4m+TpJ08OBBDRkyRHXr1lXZsmVVrVo1vfDCC/r8888VFBQk6c7cTfXq1ZMkBQUFObwGd78PD5rjKbE5YKKjo7Vq1SoNGjRIjRs3VqVKlVSuXDk1atRIn376qS5dunTfc0hOJ06c0LBhw1SnTh35+fmpWrVq6tq1q9auXXvf7R7mdXyQq1ev6uWXX5avr6/eeustRUVFOSxfuXKl2rRpo/Lly6tatWrq3r279u7d+8D9HjhwQP3791fNmjXl5+cnf39/9e7dW7/99lu8dUeNGiVfX1/NmTMn3rLnn39evr6+evHFF+Mti/tuTJw40V529/sdERGhL774Qg0aNJCfn5+effZZDRky5LHe25iYGM2YMUNNmzZVuXLlVL16dfXv318nTpxwWO/s2bMqVaqUqlatqlu3biW6v6ZNm8rX11dbt259qOPffT35888/1bNnT1WvXl0VK1ZUp06dHN6bbdu2qWvXrqpataoqVqyobt266dChQwnu91G+zzabTYsXL9bLL7+sKlWqqEyZMvL399cLL7ygESNGJGmupK+//lq+vr4KCAjQ0aNHH3q7pFz/4l67uLjq1atnv55MnjzZPsdT3PX47utN3PXlQXNKXbp0SZ9//rmaN2+uihUrqkKFCmrUqJGGDh2qffv2Oaz7oDml1q9fr+7du+uZZ56Rn5+fnnvuOQ0ePFjHjx+Pt+7d854ZhqHFixerdevWqlChgipXrqxXX31V+/fvT/R1vHXrlubOnav27duratWq9jqxd+/eWr16taQ773fca3a/fX300Ufy9fXVmDFjEl0nIUm9niXlGiM51hXnzp3T22+/rWeffVZ+fn6qX7++xo8fH+/6V7duXQ0bNkyStGLFCofPRELz6T3se3bu3DlVqVJFJUuWTPC7f+nSJfn7+8vX19deD3Tu3FldunSRJO3evdshlrvnu4uKitLMmTPVunVrVaxY0X7ta9OmjcaMGaOwsLD7vAsA4Hz0lAKQ6v3888+KjY1VtmzZHmniYcMwNHToUK1cuVJubm6qUqWKcuXKpUOHDmn58uVat26dJk2apFq1aiVr3Nu3b9ecOXP01FNP6dlnn1VISIj++OMPff7557pw4YLee+89+7qtWrVSYGCgjhw5opIlS6pUqVL2ZZUrV7Y/Dg8PV58+fbR7925lypRJfn5+ypEjh/755x8tWrRI69ev15w5c1S6dOl48URGRqpz5846ceKEvXEcFhamUqVKqVWrVvrjjz909uxZVapUyd6j4O7kXtwffSVKlFClSpXk5uamkydPat26ddq4caO+/PJLNWrUKN5xZ86cqS+++EI2m02FCxdWvXr1dPv2bZ09e1azZ89WiRIl1Lp1a1WuXFkRERHasGGDMmXKlOC+HkdoaKjeeecdZc2aVcWKFZOvr69u3bqlwMBAzZs3T2vWrNGiRYtSvKfYL7/8on79+ikyMlJFihRRw4YNFRoaqj179uj333/X9u3bNXLkyHjbPezreD+nTp1Sz549dfbsWfXo0UODBw+WxWKxL//00081b948ubi4qHLlyvLx8dHRo0fVuXNnderUKdH9LlmyRMOHD5fNZlPp0qVVvXp1BQUF6eeff9bPP/+sN998U3379rWvX6NGDc2dO1c7duxQt27d7OWXLl2yJ3sOHTqk69evK1u2bPblO3futG9/rxs3bujll1/WhQsXVLlyZZUoUUJ//vmnVq5cqT179mjVqlWP1ONlwIAB+vnnn1W1alX5+vrqwIEDWr9+vbZt26bZs2erYsWKku70ggkICNDPP/+s1atXq23btvH29fvvv+v48eN66qmnkny9+eWXX/Tdd9/JarWqRo0aOnXqlPbs2aNu3brp22+/VWBgoD799FOVL19ezz77rAIDA7Vjxw516tRJK1eujPe5fpTv83vvvafly5fLw8NDlStXVs6cORUWFqbz589r/vz58vf3V8GCBe97HtHR0frwww+1fPlylSpVStOnT3/o4WxJvf4999xzKlCggDZs2KCIiAg1atRImTJlkiSVKlVKERERunbtmlasWCHpznU4zsP0atq5c6f69eun69evK1euXPL3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8uTJ2rlzp9566y0dP35cly9fVvv27SXdSVqtWrVKQUFBKlCggD0pdXdvoLs96Pt274TGDyNbtmyJJpDizvfixYsO5S+88IK++OILbdy4UZcvX5aPj4+ioqL0ww8/SLrTE+1RJHZ+mTNnVlhYWIK9lO537kn9PmfJkkWjRo3SsGHDNGHCBE2YMEHe3t6qUKGCnnvuOTVr1izRJMeAAQMUExOjt956y95zLake9/qX3OLu2JfQTTWSIu68du7ced8ba0gJn5e3t3eCPQelO+/Zv//+61DXPErcRYsW1bPPPqvt27dr06ZNaty4saT/Eq8dOnRIMOmTkEe5nj3qNSZOcl8bHvc9K1CggN5//30NHjxY4eHhat++/SPPofjUU09p2LBhGjNmjD755BN98sknKlCggCpUqKDatWurcePGSe59BQBmIykFINUrU6aMVq1apcOHDys2NjbJv7CnFJvNdt/lLi7J2xk17nilSpVyGE6UkHsntpUkT0/PRz72Tz/9pMmTJytTpkz64IMP9Mwzz8jHx0eenp6yWCz68ssvNX369Hh3FXSGxN6XL7/8Uhs3blTRokU1aNAg+7CGuAb7yy+/rP3796eKc0guxYsXl5ubmw4ePKgRI0Zo8uTJj/U5SE7lypVTlixZ9Pfff+vGjRv2pFNcj4saNWpo1apV2rFjh+rWratjx44pV65cif4RmNzft4d17+clY8aMeumllzRz5kwtWbJEffv21U8//aQrV67YbzDwKB50fg+bFJAe/fvcqFEj1ahRQ5s3b9Yff/yhffv2aePGjdq4caMmTZqk2bNnJ/j+tGzZUkuXLtXcuXP13HPPyc/P76FjjfO417/UKu68nn766QdOip5QIsmsz32XLl20fft2LViwQI0bN9aFCxe0ZcsWZcqU6YE3WHC2lKqLH/U9MwzDfodD6U5Pwujo6ESTiw/SuXNnNWnSRFu2bNEff/yhP/74Q2vWrNGaNWs0efJkLViwIMFepACQWpCUApDq1alTR6NHj9b169e1ZcsWNWjQ4KG3jetaHxYWpvDw8AR7S8X96nlvN3x3d3dFR0cnul3cL85mifu1t1KlSvrwww9NPfa6desk3enxkNBwldOnT8cri4s3JCREN27cSLbeUnEN95s3bya4PLH3Je4cxo8fn+AftQmdQ3LLkyePTp48mejQpxs3btiH2sR9Hh/ndcyWLZumTp2qXr16adu2bXrttdcSnMsne/bsypAhg6KiohQUFKQSJUrE21dit7HPkyePzp49q3PnzslqtSa6nYeHh8McRm5ubqpatap+/vln7dq1Szt27JCrq6uqV68uyXF4n6enpwzDkL+/f5KSL4/r+vXr8e4AGCfulvVxd9C6W8eOHTVnzhwtXrxYvXr10vz58+3lqcGjfJ/jxM0xFDec88KFCxoxYoQ2b96sESNG2M/1bn369FHx4sU1evRode3aVdOnT0/yUGJnXv8Ski9fPp06dUonT558rDt2xp1XkSJFNHr06OQK74HHO3nyZJK2q1WrlgoXLqzdu3fr2LFj+vHHHxUbG6sWLVok2gv5fsdPyvXsUa8xKeVx37MZM2Zo69atKlasmLJly6b9+/dr3LhxGjZs2CPHlDt3brVt29Z+188TJ07ovffe0/79+/XFF1/o888/f+R9A0BKY04pAKneU089paZNm0qSRo8e7TA/RkJCQ0PtDe68efPahywtX7483rqGYdhvBx73x3CcuF8WE2q8HzlyxD4MIbnEJVvunrPjbnG3lt6yZUuSh/49rn///VeSEhwiFBoamuBEsd7e3ipZsqRsNpuWLVv2UMd50Gsg/ZesOXHiRLxlhmEkOslx3DkkNIzx119/1bVr1x4qxscRN8/IypUrE1we9zoVLlzYfp6P8jreLUuWLJo5c6Zq1qyp3bt3q1u3bvbXIo6bm5v9F/+7f8G/W2KTLMedU9z36F5xQ62qVKkiNzfH38Li5ofatm2b9uzZIz8/P3sCKE+ePCpWrJh27tz5wKF7KWnVqlXxyqKiorR27VpJ/53/3fLnz6/69evr8uXLmjRpkvbv3y8fHx81bNgwxeN9GI/yfU5Mvnz51K9fP0lSYGBgout169ZNI0aMUEREhHr06OEwif3DcOb1LyFx8zg97g0y/P395e7urt27dz/SEPWkinsdf/zxR0VERDz0dhaLxT5f2pw5c+zDUZMywbn0aNezx7nGPIoH1UOP857t3btXEyZMUMaMGTVx4kT7/FJz587Vpk2bkhxLYooVK6YePXpIuv/3EgBSA5JSANKEDz74QE8//bTOnz+vDh06xLuzlXTnD8WlS5eqZcuWDomkV199VZL09ddf68iRI/ZywzD09ddfKzAwUNmyZbP/whgn7g/mKVOmOMw5cf78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va+++kp79+5VQECAChQoYF8vb968qly5coL77tSpk8LDwzV+/HhlzZpVvXv3TjSOFi1aaN26dRo+fLh27dqlSpUqKTY2VidPntT69es1c+ZMlS1bNukvwmOKmw9i7ty5ypIli0qWLKk33nhDEyZMUOPGjRUQEKBq1aqpXbt2mj59ugIDA/Xss8/K3d1dp0+f1vr16/Xee++pcePGypkzp1599VVNnz5dvXr1UkBAgA4fPqxt27YpR44c8Y79sLctzps3r7p06aJZs2YpJiZGZcuW1aZNm7R3716NGzfOofs/AAB4dLStHl9aaFtJ0sqVKxUcHGy/YcyePXvsSbIWLVqoQIECyfeiAIiHpBSQTvj7++uzzz7TjBkzNHLkSBUsWFCDBw9WUFCQQ8Opbt26CgoK0rJly3Tt2jXlyJFD1apV05tvvmnvap2Q3r1768aNG/bGU8eOHRNcz8XFRV999ZXmzp2rVatWaePGjcqYMaMKFiyozp07228RbKZDhw5p+vTp6tSpk/1ONZLUs2dPbd68We+//77WrFmjbNmy6ZNPPpGfn58WLVqk8ePHy9XVVQUKFNALL7ygSpUq2bd96623lCFDBi1atEi7du1SuXLlNHv2bPXq1euxYh08eLC8vLy0ePFiLV++XIULF9bYsWPve2cgAACQ/GhbJS4tta2WLVum3bt325/v2rXLfte/ypUrk5QCUpjFuLv/IwAAAAAAAGAC5pQCAAAAAACA6UhKAQAAAAAAwHQkpQAAAAAAAGA6klIAAAAAAAAwHUkpAAAAAAAAmI6kFAAAAAAAAExHUgpPhM6dO6tZs2bODgN4ZAcOHJCfn5+CgoKcHYpd3bp11atXrweut2vXLvn6+mrXrl1JPkbctuvXr3/gugMGDFD//v2TfAwAQNLRtkJaR9uKthXSBjdnB4DU49ixY5o+fbp27dqla9euKXv27Kpevbp69+6tEiVKODu8VGvatGkqXry46tev7+xQUo1r165p2bJl+vnnn3XixAnFxMSoaNGieuWVV/T8888nuM2hQ4c0efJk7du3T5GRkSpUqJDatm2rLl263PdYP/30k9auXau///5bV65cUd68eVWnTh29/vrrypYtW6LbnT17Vk2bNlVUVJSWLl2qsmXLPtK51q1b16GxkzNnThUpUkTdunVTgwYNHno/48ePV9OmTVWgQAF7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DRvG+67EXQOSKqlDRHr27GnUq1cvXnlERIRhtVqNcePGGYZhGAcOHIh3TYrz+eefG1ar1eF8ATw5aFvRtjKjbfWgYWhfffWVUa5cOcNqtdr/ffnll0k6RqNGjezbVqhQwRg/frzDVAszZ840rFarERwcHG/bNm3aGG3btk3S8eLQtkpbbauPP/7YKFWqVILLnnnmmYduz3/wwQf2z1vJkiWNN998M97Qv3Hjxhljx4411qxZY/z444/278/LL7/s8LogbWH4Xjp38+ZNSXpgZjluedz6TZo0UWhoqEM38w0bNshms9nvrhYWFqbff/9dTZo0UXh4uK5evaqrV6/q2rVrqlmzpk6fPq1Lly45HKdt27ZydXV1KMuWLZv++uuveOveK1OmTA5Z+AwZMqhs2bIOQ8W2bdsmb29vh7tkubu7q3PnzoqIiNCePXvs67m6usbrCvvqq6/KMIzH7uXQokULh67T5cqVk2EYatOmjcN65cqV04ULFxQTEyPpzt1QbDabmjRpYn89r169qty5c+vpp5926OJ79wTfERERunr1qipWrCjDMOy/aNzt3kkjK1eurPPnzzuUjR49WkePHk3yL3k2m02DBw/W9evX9cEHHzgsi4iI0K1bt9SiRQu9//77atiwod5//321a9dOa9as0enTp5N0rNWrV2vp0qXq1q2bChcu7LBs3LhxKlSokF566aUk7fNBtm/fLn9/f/n7+6tFixZav369WrRoocGDBzus17Bhw3jDOK5duyZJ971T4L22bt2qcuXKOfwCnzlzZrVr105BQUE6fvy4pIf/vN9P8eLFHY4Tdwecu79X9zp48KDCwsLidedv3ry5vLy8EtymdevWDhN/xx0zoeN4eXnZX7c48+bNS/FeUtKdX0gTmqA8rkdf3BCOyMhISXqodQE8WWhb0baKk5JtqweJ66k3YsQITZ48WW3atNH06dM1f/78h97HqFGjNHPmTA0fPlzFihVTZGSkw/DDuHossbruceo52laOUnPb6vbt24kOCU3K56Br166aM2eOPv/8c9WqVUs2my3esNZBgwZp8ODBev7559W0aVONHj1aAwYM0L59+5J1uCjMxfC9dO7eBlFi7m1g1apVS1mzZtXatWvt3XjXrl2rUqVKqUiRIpKks2fPyjAMTZw4URMnTkxwv6GhocqTJ4/9eUIV8uDBgzV06FDVrl1bZcqUUUBAgFq2bKlChQo5rJc3b95488R4eXk5XEyDgoL09NNPxxuPHzcUJzg42L6ej4+PsmTJkuB6d9+m9lHcPceM9N8dI/Llyxev3Gaz6caNG8qRI4dOnz4twzDUsGHDBPd7dyUVHBysSZMmacuWLfr3338d1rt3DLaHh0e8Ct3Lyyvedo9qxIgR+vXXX/X555/Hu91sXAPv7spdulPJLl68WH/++We85FJi9u7dq/fee081a9bUgAEDHJb9+eefWrVqlebOnftQ8zEkRfny5fXWW2/JYrHI09NTxYoVS7AhdL8Gp3HXfBoPEhwcrPLly8crL1q0qH251Wp96M/7/dz7mZQe/NmI2++9wy3c3NzizTUW597vRNzrd/369XjrGobxyHNCPS5PT88E5yKJS0LFfZ7jEk8Psy6AJwttqztoW6Vs2+p+1qxZow8//FAbNmywD+tq2LChDMPQuHHj1LRp0wSnOLhXxYoV7Y+bNm1qT44OGTJE0n/1WGJ13ePUc7St4scnpc62laenZ6JzoiXlc1CsWDH769iyZUu9+uqr6t27t3744Yf7xvbKK69o4sSJ2rFjh8NdkJF2kJRK57JmzSpvb+8HZsGPHj2qPHny2BsSGTJkUP369bVx40YNHz5coaGh2rdvnwYOHGjfJm6y6ldffVXPPfdcgvu998Ka0PxBzz//vKpUqaKNGzfqt99+06xZszRjxgxNnjzZPp+BpHi/AqZmiSVFEiuPq1RtNpssFotmzJiR4PnGzREQGxurbt262eeCKFq0qDJlyqRLly5p6NCh8SYST8nXbsqUKfr+++81aNAgtWzZMt5yHx8fHTt2LN5knHENuYdtvB05ckR9+vRRiRIlNGnSJIdGpCSNHTtWVapUUcGCBe2/Usb9IhQSEqLg4OB4lffDypEjh2rUqPHA9RKqlOMahQk1EFIDs75XD/rs3+369et6+umnUzqkBHl7e2vXrl3xGm8hISGS7nye7/4/rvxuISEhyp49e4K/LANI+2hbOUd6als9yPfff69SpUrFm2eobt26Wr58uQIDAx+q3XI3Ly8vPfPMM1q9erU9KeXt7S3pTr12b6IlJCTEPt/io6Bt9fjMalt5e3srNjZWoaGhDu35qKgohYWF2dtESdWoUSN9+OGHOnXqlD05mBBPT09lz57dlIQvUgZJKahOnTpasmSJ9u7dm+CEnHv37lVQUJDatWvnUN6kSROtWLFCO3fu1IkTJ2QYhsNkdHG/trm7uye54ruXj4+POnbsqI4dOyo0NFStWrXStGnTHBpOD6NAgQI6evSobDabw4X65MmTkv77RaFAgQLauXOnwsPDHX7Ri1svsV8kUtpTTz0lwzBUsGBB+6+mCfnnn390+vRpff755w6JoN9++82EKP+zYMECTZ48WV27dlXPnj0TXKdMmTL67bffdOnSJYcK5/Lly5IU71fGhJw9e1Y9evRQzpw5NWPGjASHTFy4cEFBQUGqV69evGV9+vRR1qxZtXfv3oc9tWQTd873dueXlOivQvnz59epU6filSf0OX6Yz3tyi9vv2bNn9cwzz9jLY2JiFBQUJF9f30fed0xMjC5cuKC6des+dpyPolSpUvrhhx904sQJFS9e3F7+119/2ZdLdyZ5zZkzpw4ePBhvHwcOHIjXYxDAk4W2FW0rZ7py5UqCQ7rierPEDV1Mqtu3bzvcDS2uzvv7778dElCXLl3SxYsX7RPVm422VdI8btsq7nNw8OBBh+vHwYMHZbPZHrnNEzfs70F32QsPD9e1a9ce6m8GpE7MKQV1795dnp6eGj58eLyxxGFhYRo+fLgyZsyoHj16OCyrUaOGsmfPrrVr12rdunUqV66cQ7fvXLlyqVq1alq8eLE9wXC3q1evPjC22NjYeLcCzZUrl3x8fBLsKvwgtWrVUkhIiNauXWsvi4mJ0bx585QpUyZVrVrVvl5sbKwWLFjgsP3cuXNlsVhUq1Yte1mmTJlM+yWmYcOGcnV11ZQpU+L9ymEYhv39i6sk717HMAx99913j3X8pNy2eO3atfr000/VvHlzDRs2LNH14hrbS5cudShfunSp3NzcHO5ClNCtaUNCQvTqq6/KYrFo1qxZiVZIn3zyib766iuHf3HzWgwZMkTjxo174DmlhDx58ihfvnwJJi8yZsyY4GcrICBABw4c0P79++1lERERWrJkiQoUKGBPljzs5z25+fn5KXv27FqyZIlDw3f16tWP/SvW8ePHFRkZ6TCkQHr42xYnxY0bN3TixAmHa1C9evXk7u6u77//3l5mGIYWLVqkPHnyOMTVsGFD/fLLLw63FN+5c6dOnz6txo0bJ2usAFIX2la0rR5WUtpWD6tIkSI6fPhwvCTLmjVr5OLi4pDASKj+DA0NjbfP8+fPa+fOnQ53WCtRooSKFi2qJUuWOMw1tXDhQlksFqfVdbStkuZx21bPPPOMsmfProULFzqUL1y4UBkzZlTt2rXtZVevXtWJEyd069Yte1lCn7fo6GitWrXKPnRTujMUMKEE1ddffy3DMBLtPYrUj55SUOHChTV69Gi9/fbbat68uV588UUVLFhQQUFBWrp0qa5du6Yvv/wyXndwd3d3NWjQQGvWrNGtW7fsXXnvNnz4cHXo0EHNmzdX27ZtVahQIV25ckV//vmnLl68qP/973/3je3mzZsKCAhQo0aNVLJkSWXKlEk7duzQ33//raFDhyb5XNu1a6fFixdr6NChOnTokAoUKKANGzZo3759evfdd+2/3NWtW1fVq1fX+PHj7b8+/Pbbb9q8ebO6du3q8FqUKVNGO3fu1Jw5c+Tj46OCBQsmOCY9OTz11FN666239MUXXygoKEj169dX5syZdf78eW3atElt27ZV9+7dVbRoUT311FP6/PPPdenSJWXJkkUbNmx47Abew962+MCBA3rnnXeUPXt2+fv7x3ufK1WqZG9kly5dWm3atNGyZcsUGxurqlWravfu3Vq/fr169erlMC9GQrem7dGjh86dO6cePXrojz/+0B9//GFfljt3bj377LOSpJo1a8aLM+71qFq1qsPtjM+fP6969eqpVatWGj16dFJeokdSr149bdy4Md6QsDJlymjhwoX6+uuv9fTTTytnzpzy9/dXz549tWbNGr322mvq3LmzvLy8tHLlSp0/f16TJ0+2N5wf9vOe3DJkyKA333xTI0aMUNeuXdWkSRMFBQVp+fLlD3Vb7/vZsWOHMmbMGK+HwMPetliStmzZoiNHjki60+g5evSovv76a0l3vvtxv+ht3LhRw4YN06hRo9S6dWtJd+ZX6dKli2bNmqWYmBiVLVtWmzZt0t69ezVu3DiHLvm9e/fW+vXr1aVLF3Xp0kURERGaNWuWrFZrvIl3ATxZaFvRtnpYD9u2kqQ9e/bYJ9K+evWqIiIi7PVX1apV7QmR7t27a9u2bfaecNmzZ9cvv/yibdu26aWXXnpg26p58+by9/dXyZIl5eXlpdOnT2vZsmWKiYnRoEGDHGJ655131KdPH7366qtq2rSp/vnnHy1YsEAvvfSSPZkg0bZ6XKm5beXp6al+/frpk08+Ub9+/fTcc89p7969+t///qcBAwYoe/bs9nUXLFigKVOm6LvvvlP16tUlSR9++KHCw8NVtWpV5cmTRyEhIVq9erVOnjypoUOH2kdAhISEqFWrVmratKm9N9z27du1detWPffccwmOhkDaQFIKku70VilatKi++eYbLV26VGFhYcqePbuqV6+uXr16yWq1Jrjd888/b5987u7u5XGKFy+uZcuWacqUKVqxYoXCwsKUM2dOlS5dWm+88cYD4/L09FT79u3122+/6aeffpJhGHrqqafsDbKk8vT01Lx58zRu3DitWLFC4eHhKlKkiMMfndKdX8OmTp2qSZMmae3atVq+fLkKFCigd955R6+++qrDPocOHaoPP/xQEyZM0O3bt9WqVasUazhJUs+ePVW4cGHNnTtXX331laQ7fyg/++yz9m637u7umjZtmj799FNNnz5dHh4eatCggTp27OhwF52Ucvz4cUVHR+vq1at699134y0fNWqUwy+/H3/8sfLnz6/ly5dr06ZNyp8/v4YNG6ZXXnnlgceKSy7MnDkz3rJq1arZk1JJERERIem/uRJSWps2bTR//nz98ccfDsM83njjDQUHB2vmzJm6efOmqlWrJn9/f+XOnVuLFi3S2LFjNX/+fEVGRsrX11fTpk1z+DXqYT/vKaFTp04yDMN+F5WSJUtq6tSp+vTTTxOc3+RhrV+/Xg0aNHisRt9PP/2kFStW2J8fPnzYftekvHnzPrCb+eDBg+Xl5aXFixdr+fLlKly4sMaOHavmzZs7rJcvXz7Nnz9fo0eP1hdffCF3d3cFBARo6NChzCcFpAO0rWhbJbfff/9dU6ZMcSiLm/C+b9++9qRU1apVtWjRIk2ePFkLFy5UWFiYChQooAEDBsTrnZeQ9u3b65dfftGvv/6qmzdvKmfOnHr22WfVq1eveMPE6tSpoylTpmjKlCkaMWKEcubMqV69esX7LNK2enypuW3VsWNHubu7a/bs2dqyZYvy5cunYcOGqWvXrg/c9vnnn9fSpUvtn9XMmTOrTJkyGjx4sEOiKVu2bKpdu7Z27NihlStXKjY2Vk8//bQGDhyoV199NdlvZATzWIyk3JYAANKBBQsWaNy4cdq4caNy585tyjG7du0qHx8fjR071pTjOYPNZpO/v78aNGigTz/9NMnbBwYGqlWrVlqxYoV9/gIAAJD60bZKGbSt8CQgnQgA99i1a5c6d+5sWqNJkgYOHKh169Y99i2xU4vIyMh4c3OsXLlSYWFhDvOEJcU333yjRo0a0WgCACCNoW31+Ghb4UlFTykAQLLbtWuXRo0apcaNGyt79uw6fPiwli5dqmLFimnZsmUMXwMAAEgC2lZ4UjGnFAAg2RUoUEB58+bVvHnz9O+//8rLy0stWrTQ4MGDaTQBAAAkEW0rPKnoKQUAAAAAAADTMacUAAAAAAAATEdSCgAAAAAAAKZLdXNK2Ww2Xb58WZkzZ5bFYnF2OAAAII0zDEM3b96Uj4+PXFzS3+9xtK0AAEBySs62VapLSl2+fFkBAQHODgMAADxhtm7dqrx58zo7DNPRtgIAACkhOdpWqS4plTlzZkl3Ti5LlixOjgZAqnXzppQ//53HwcHS/187kPpFRUXpyy+/lCQNHDiQO8YgxYWHhysgIMDexkhvaFsBaYvT6knaVgAeUnK2rVJdUiquW3mWLFloOAFInMUi2Wx3HmfJQsMpDYmKipK7u7ukO9d6klIwS3odukbbCkhbnFZP0rYCkETJ0bZKfxMrAAAAAAAAwOlSXU8pAMCTzc3NTV27drU/BgAA/6GeBJCecJUDAJjKxcVFhQsXdnYYAACkStSTANIThu8BAAAAAADAdPSUAgCYKjY2Vn/88YckqXLlynJ1dXVyRAAApB7UkwDSE5JSAABTxcbGat26dZKkChUq0NgGAOAu1JMA0hOG7wEAAAAAAMB0JKUAAAAAAABgOpJSAAAAAAAAMB1JKQAAAAAAAJiOpBQAAAAAAABMR1IKAAAAAAAApnNzdgAAgPTFzc1N7du3tz8GAAD/oZ4EkJ5wlQMAmMrFxUVWq9XZYQAAkCpRTwJITxi+BwAAAAAAANMlOSm1Z88e9e7dWzVr1pSvr682bdrksNwwDE2cOFE1a9ZUuXLl9Morr+j06dPJFS8AII2LjY3Vn3/+qT///FOxsbHODgdINtOnT1ebNm1UsWJF+fv76/XXX9fJkycd1omMjNTHH3+s6tWrq2LFinrzzTd15cqV++6XthWQvlBPAkhPkpyUioiIkK+vr4YPH57g8hkzZmjevHn66KOPtGTJEmXMmFHdu3dXZGTkYwcLAEj7YmNjtWrVKq1atYrGNp4ou3fvVseOHbVkyRLNmTNHMTEx6t69uyIiIuzrjBw5Uj///LMmTJigefPm6fLly+rbt+9990vbCkhfqCcBpCdJnlMqICBAAQEBCS4zDEPfffed+vTpo/r160uSxowZoxo1amjTpk1q2rTp40ULAACQSs2aNcvh+ejRo+Xv769Dhw6patWqunHjhpYtW6Zx48bJ399f0p0k1fPPP68///xTFSpUiLdP2lYAAOBJlqxzSp0/f14hISGqUaOGvSxr1qwqX7689u/fn5yHAgAASNVu3LghSfLy8pIkHTx4UNHR0Q7tpGLFiil//vz6888/E9wHbSsAAPAkS9akVEhIiCQpV65cDuW5cuV64HwJAIAnW6zNcOr2jyutxw9z2Ww2jRw5UpUqVbLfRevKlStyd3dXtmzZHNbNlSuXvQ11L9pWQPrirLqCOgqAsyR5+B4AAI/C1cWi/ov26+Slf1Xl/8vaTN0hm8X1gdsW98miiS9XTNkAHyAu/uOXw5O8bWqIH+b6+OOPdezYMX3//ffODgVAGuLqYtHApX8p5/8/f9h68nFQRwFwpmRNSnl7e0uSQkND5ePjYy8PDQ1VyZIlk/NQAIA06PjlcB29cF1VMt55HnjhumKUso3t5HT8crgOBV93dhhI5T755BP98ssvmj9/vvLmzWsvz507t6Kjo3X9+nWH3lKhoaH2NtS9aFsB6c/JkJv2pFRaqycBIKmSdfhewYIF5e3trZ07d9rLwsPD9ddff6liRbLvAADgyWUYhj755BNt3LhR3377rQoVKuSw3M/PT+7u7g7tpJMnTyo4ODjBSc4l2lYAAODJluSeUjdv3tTZs2ftz8+fP6/AwEB5eXkpf/786tKli6ZOnaqnn35aBQsW1MSJE+Xj42O/YwwAIH2LlYt+jixqfww8KT7++GP9+OOP+vrrr5U5c2b7fFBZs2aVp6ensmbNqjZt2mj06NHy8vJSlixZ9Omnn6pixYoOSanGjRtr0KBBatCggSwWC20rIJ2xyUI9CSDdSHJS6uDBg+rSpYv9+ahRoyRJrVq10ujRo/Xaa6/p1q1b+vDDD3X9+nVVrlxZM2fOlIeHR/JFDQBIswxZdNqW88ErAmnMwoULJUmdO3d2KB81apRat24tSXr33Xfl4uKifv36KSoqSjVr1tTw4cMd1j916pT9zn2SaFsB6Y3FhXoSQLqR5KRU9erVdfTo0USXWywW9e/fX/3793+swAAAANKS+7WP4nh4eGj48OHxElH32w9tKwAA8KTi7nsAAFNZZOhpl2uSpDO2HDJkcXJEAACkIoZNhV2uSqKeBPDkY5AyAMBUrrKpjsdJ1fE4KVfZnB0OAACpiosM6kkA6QZJKQAAAAAAAJiOpBQAAAAAAABMR1IKAAAAAAAApiMpBQAAAAAAANORlAIAAAAAAIDpSEoBAAAAAADAdG7ODgAAkL7EyqJfowrbHwMAgP8Y1JMA0hGSUgAAUxly0fHY3M4OAwCAVMmwUE8CSD8YvgcAAAAAAADT0VMKAGAqiwwVcPlXkhRk85LB0AQAAP5j2FTQJUwS9SSAJx89pQAApnKVTQ08jquBx3G5yubscAAASFVcZFBPAkg3SEoBAAAAAADAdCSlAAAAAAAAYDqSUgAAAAAAADAdSSkAAAAAAACYjqQUAAAAAAAATEdSCgAAAAAAAKZzc3YAAID0JVYW7Yx6yv4YAAD8x6CeBJCOkJQCAJjKkIuOxPo4OwwAAFIlw0I9CSD9YPgeAAAAAAAATEdPKQCAqSwylMflhiTpki2rDIYmAADwH8NQXpfrkqgnATz56CkFADCVq2xq4vGPmnj8I1fZnB0OAACpigv1JIB0hKQUAAAAAAAATEdSCgAAAAAAAKYjKQUAAAAAAADTkZQCAAAAAACA6UhKAQAAAAAAwHQkpQAAAAAAAGA6N2cHAABIX2yyaE90QftjAADwH4N6EkA6QlIKAGAqm1x0MCavs8MAACBVMiwuOkQ9CSCdYPgeAAAAAAAATEdPKQCAqSwylMsSIUkKNTLJYGgCAAD/MQzlttyURD0J4MlHTykAgKlcZVNzz0A19wyUq2zODgcAgFTFhXoSQDpCUgoAAAAAAACmIykFAAAAAAAA05GUAgAAAAAAgOlISgEAAABIVWJtRro8NgCkN9x9DwAAAECq4upiUf9F+3X8cripxy3uk0UTX65o6jEBID0jKQUAAAAg1Tl+OVyHgq87OwwAQAoiKQUAMJVNFu2Pzmd/DAAA/mNQTwJIR0hKAQBMZZOL/owp4OwwAABIlQwL9SSA9IOJzgEAAAAAAGA6ekoBAExmKLvltiQpzPCUGJoAAMB/DEPZLbckUU8CePKRlAIAmMpNNrXyPCRJmneromLk6uSIgOSxZ88ezZo1SwcPHlRISIi++uor1a9f377c19c3we3efvtt9ejRI8FlkydP1pQpUxzKihQpovXr1ydf4ABSFRfqSQDpCEkpAACAZBARESFfX1+1adNGffv2jbd8+/btDs+3bdum9957T40aNbrvfkuUKKE5c+bYn7u68gcqAAB4MpCUAgAASAYBAQEKCAhIdLm3t7fD882bN6t69eoqVKjQfffr6uoab1sAAIAnAROdAwAAmOzKlSvaunWrXnzxxQeue+bMGdWsWVP16tXToEGDFBwcbEKEAAAAKY+eUgAAACZbsWKFMmfOrIYNG953vXLlymnUqFEqUqSIfZ6qjh07avXq1cqSJYtJ0QIAAKQMklIAAAAmW7ZsmZo3by4PD4/7rnf3cMCSJUuqfPnyqlOnjtatW6eXXnoppcMEAABIUQzfAwAAMNHevXt16tSpR0oqZcuWTYULF9bZs2dTIDIAAABz0VMKAGAqmyz6OzqP/TGQ3ixdulRlypRRyZIlk7ztzZs3de7cOSY+B55gBvUkgHSEpBQAwFQ2uWhvzP3vNgakRTdv3nTowXT+/HkFBgbKy8tL+fPnlySFh4dr/fr1GjJkSIL76Nq1qxo0aKBOnTpJkj7//HPVqVNH+fPn1+XLlzV58mS5uLioWbNmKX9CAJzCsFBPAkg/SEoBAAAkg4MHD6pLly7256NGjZIktWrVSqNHj5YkrVmzRoZhJJpUOnfunK5du2Z/fvHiRQ0cOFBhYWHKmTOnKleurCVLlihnzpwpeCYAAADmICkFADCZoSyWKElSuJFBYmgCnhDVq1fX0aNH77tOu3bt1K5du0SXb9myxeH5+PHjkyU2AGmIYSiLJVIS9SSAJx8TnQMATOUmm17y/Fsvef4tN9mcHQ4AAKmKC/UkgHSEpBQAAAAAAABMR1IKAAAAAAAApiMpBQAAAAAAANORlAIAAAAAAIDpSEoBAAAAAADAdCSlAAAAAAAAYDo3ZwcAAEhfbLIoMMbb/hgAAPzHoJ4EkI6QlAIAmMomF/0e/bSzwwAAIFUyLNSTANIPhu8BAAAAAADAdPSUAgCYzJCHYiRJkXKTGJoAAMB/DEMeipZEPQngyUdPKQCAqdxkU4eMf6lDxr/kJpuzwwEAIFVxoZ4EkI6QlAIAAAAAAIDpSEoBAAAAAADAdCSlAAAAAAAAYDqSUgAAAAAAADAdSSkAAAAAAACYjqQUAAAAAAAATOfm7AAAAOmLTRYdi8llfwwAAP5jUE8CSEdISgEATGWTi7ZHF3F2GAAApEqGhXoSQPrB8D0AAAAAAACYjp5SAACTGXKTTZIUIxeJoQkAAPzHMOSmWEnUkwCefMneUyo2NlYTJkxQ3bp1Va5cOdWvX19fffWVDMNI7kMBANIgN9nUOeN+dc64356cAgAAd7hQTwJIR5K9p9SMGTO0cOFCff755ypevLgOHjyoYcOGKWvWrOrSpUtyHw4AAAAAAABpULInpfbv36969eqpdu3akqSCBQtqzZo1OnDgQHIfCgAAAAAAAGlUsg/fq1ixon7//XedOnVKknTkyBH98ccfqlWrVnIfCgAAAAAAAGlUsveU6tmzp8LDw9WkSRO5uroqNjZWAwYM0AsvvJDchwIAAAAAAEAalexJqXXr1mn16tX64osvVLx4cQUGBmrUqFHy8fFRq1atkvtwAAAAAAAASIOSPSk1ZswY9ezZU02bNpUk+fr6Kjg4WNOnTycpBQAAAAAAAEkpkJS6ffu2LBaLQ5mrq6sMw0juQwEA0iBDFp2KzWF/DAAA/mNI1JMA0o1kT0rVqVNH06ZNU/78+e3D9+bMmaM2bdok96EAAGlQrFz0S1QxZ4cBAECqZFhcqScBpBvJnpR6//33NXHiRH388ccKDQ2Vj4+P2rVrpzfeeCO5DwUAAAAAAIA0KtmTUlmyZNF7772n9957L7l3DQAAAAAAgCdEsielAAC4HzfFqnPG/ZKkebcqKkauTo4IAIDUw8WIVbeMeyVRTwJ48rk4OwAAAAAAAACkPySlAAAAAAAAYDqSUgAAAAAAADAdSSkAAAAAAACYjqQUAAAAAAAATEdSCgAAAAAAAKZzc3YAAID0xZBF52K97I8BAMB/DIl6EkC6QVIKAGCqWLloU1QJZ4cBAECqZFhcqScBpBsM3wMAAAAAAIDpSEoBAAAAAADAdCSlAACmclOsOnnuUyfPfXJTrLPDAZLNnj171Lt3b9WsWVO+vr7atGmTw/KhQ4fK19fX4V/37t0fuN8FCxaobt26Klu2rF566SUdOHAgpU4BQCrgYlBPAkg/SEoBAEznbrHJ3WJzdhhAsoqIiJCvr6+GDx+e6DrPPfectm/fbv/35Zdf3nefa9eu1ahRo/TGG29oxYoVKlmypLp3767Q0NDkDh9AKkI9CSC9YKJzAACAZBAQEKCAgID7rpMhQwZ5e3s/9D7nzJmjtm3bqk2bNpKkjz/+WL/88ouWLVumnj17Pla8AAAAzkZPKQAAAJPs3r1b/v7+atSokYYPH65r164lum5UVJQOHTqkGjVq2MtcXFxUo0YN7d+/34xwAQAAUhQ9pQAAAEzw3HPPqUGDBipYsKDOnTunL7/8Uq+99poWL14sV1fXeOtfu3ZNsbGxypUrl0N5rly5dPLkSbPCBgAASDEkpQAAAEzQtGlT++O4ic7r169v7z0FAM7gncVDsTZD8VPj5oi1GXJ1sTjp6ACcjaQUAACAExQqVEg5cuTQmTNnEkxK5ciRQ66urvEmNQ8NDVXu3LnNChPAEy5bRje5ulj09g9/aez/l7X++jdFemRM8WMX98miiS9XTPHjAEi9SEoBAExlyKILsVnsj4H06uLFiwoLC0t04vMMGTKoTJky2rlzp+rXry9Jstls2rlzpzp16mRmqABMZEhOqSdPhITbHwdeuKFbGaJNOzaA9IukFADAVLFy0fqoks4OA0h2N2/e1NmzZ+3Pz58/r8DAQHl5ecnLy0tTpkxRo0aNlDt3bp07d05jx47V008/reeee86+TdeuXdWgQQN70qlbt24aMmSI/Pz8VK5cOX377be6deuWWrdubfr5ATCHYXGlngSQbpCUAgAASAYHDx5Uly5d7M9HjRolSWrVqpU++ugj/fPPP1q5cqVu3LghHx8fPfvss+rfv78yZMhg3+bcuXMOd+R7/vnndfXqVU2aNEkhISEqVaqUZs6cyfA9AADwRCApBQAAkAyqV6+uo0ePJrp81qxZD9zHli1b4pV16tSJ4XoAAOCJRFIKAGAqN8XqJc+/JUk/3C6rGKfd7wcAgNTHxYhVe88/JVFPAnjykZQCAJjO0xLj7BAAAEi1qCcBpBcuzg4AAAAAAAAA6Q9JKQAAAAAAAJiOpBQAAAAAAABMR1IKAAAAAAAApiMpBQAAAAAAANNx9z0AgKkMWRRiy2R/DAAA/mNI1JMA0g2SUgAAU8XKRT9GlnZ2GAAApEqGxZV6EkC6wfA9AAAAAAAAmI6kFAAAAAAAAEzH8D0AgKlcFatWHockSSsiyyhWrk6OCACA1MPFiNWLHgckUU8CePKRlAIAmMoiKatLlP0xAABwRD0JIL1g+B4AAAAAAABMR1IKAAAAAAAApiMpBQAAAAAAANORlAIApHreWTwUazMeax+Puz0AAACA5MVE5wCAVC9bRje5uljUf9F+Hb8cnuTta/t66+1GJR97ewAAAADJh6QUAMBUhqRrNk/746Q4fjlch4KvJ/mYxbwzJ8v2AACY4VHrSQBIa0hKAQBMFStXrYz0c3YYAACkSjYL9SSA9IM5pQAAAAAAAGA6klIAAAAAAAAwHcP3AACmclWsmnsESpJWR5ZSrFydHBEAAKmHixGrlh4HJVFPAnjykZQCAJjKIimHy237YwAA4Ih6EkB6wfA9AAAAAAAAmI6kFAAAAAAAAExHUgoAAAAAAACmIykFAAAAAAAA05GUAgAAAAAAgOm4+x4AwFSGpBu2DPbHAADAEfUkgPSCpBQAwFSxctXSyHLODgMAgFTJZqGeBJB+MHwPAAAAAAAApiMpBQAAAAAAANMxfA8AYCpX2dTE44gkaV1kScXy+wgAAHYWI1bNPA5Lop4E8OQjKQUAMJVFhrxdIuyPAQDAfywS9SSAdIO0OwAAAAAAAExHUgoAAAAAAACmIykFAAAAAAAA05GUAgAAAABJ3lk8FGtjHiezOPP15n0GUgcmOgcAAAAASdkyusnVxaL+i/br+OVwU49d29dbbzcqaeoxnc1Zr3dxnyya+HJF044HIHEkpQAAprttUP0AAFKv45fDdSj4uqnHLOad2f44vdWTzni9AaQO6etqBwBwuhi5auHtCs4OAwCAVMlmoZ4EkH4wpxQAAAAAAABMR1IKAAAAAAAApmP4HgDAVK6yqUGGfyRJG6OsiuX3EQAA7CxGrBpnOCKJehLAk4+kFADAVBYZyucabn8MPCn27NmjWbNm6eDBgwoJCdFXX32l+vXrS5Kio6M1YcIEbdu2TefOnVOWLFlUo0YNDRo0SHny5El0n5MnT9aUKVMcyooUKaL169en6LkAcB6LRD0JIN0gKQUAAJAMIiIi5OvrqzZt2qhv374Oy27fvq3Dhw+rT58+KlmypK5fv67PPvtMffr00fLly++73xIlSmjOnDn2566urikSPwAAgNlISgEAACSDgIAABQQEJLgsa9asDoklSfrggw/00ksvKTg4WPnz5090v66urvL29k7WWAEAAFIDklIAAABOEB4eLovFomzZst13vTNnzqhmzZry8PBQhQoVNGjQoPsmsQAAANIKklIAAAAmi4yM1Lhx49S0aVNlyZIl0fXKlSunUaNGqUiRIvZ5qjp27KjVq1ffdzsAAIC0gKQUAACAiaKjo9W/f38ZhqGPP/74vuvePRywZMmSKl++vOrUqaN169bppZdeSulQAQAAUhRJKQCA6aINbm+N9Ck6OlpvvfWWgoOD9e233ya5t1O2bNlUuHBhnT17NoUiBJAaUE8CSC9ISgEATBUjV82/XcnZYQCmi0tInTlzRt99951y5MiR5H3cvHlT586dY+Jz4Alms1BPAkg/SEoBAAAkg5s3bzr0YDp//rwCAwPl5eUlb29v9evXT4cPH9b06dMVGxurkJAQSZKXl5cyZMggSeratasaNGigTp06SZI+//xz1alTR/nz59fly5c1efJkubi4qFmzZuafIAAAQDIjKQUAAJAMDh48qC5dutifjxo1SpLUqlUr9e3bV1u2bJEktWjRwmG77777TtWrV5cknTt3TteuXbMvu3jxogYOHKiwsDDlzJlTlStX1pIlS5QzZ86UPh0AAIAUR1IKAGAqV9lUJ8MJSdLPUcUUK+bNwJOhevXqOnr0aKLL77csTlziKs748eMfOy4AaYvFiFX9DMckUU8CePKlyBXu0qVLGjx4sKpXr65y5cqpefPm+vvvv1PiUACANMYiQ4Vc/1Uh139lkeHscAAASFUsEvUkgHQj2XtK/fvvv2rfvr2qV6+uGTNmKEeOHDpz5oy8vLyS+1AAAAAAAABIo5I9KTVjxgzlzZvXPo+CJBUqVCi5DwMAAAAAAIA0LNmH723ZskV+fn7q16+f/P391bJlSy1ZsiS5DwMAAAAAAIA0LNmTUufOndPChQtVuHBhzZo1S+3bt9enn36qFStWJPehAAAAAAAAkEYl+/A9wzDk5+engQMHSpJKly6tY8eOadGiRWrVqlVyHw4AAAAAAABpULL3lPL29laxYsUcyooWLarg4ODkPhQAAAAAAADSqGTvKVWpUiWdOnXKoez06dMqUKBAch8KAJAGxchVc25VcXYYAACkSjYL9SSA9CPZe0p17dpVf/31l6ZNm6YzZ85o9erVWrJkiTp06JDchwIAAAAAAEAalew9pcqVK6cpU6boyy+/1FdffaWCBQvq3Xff1QsvvJDchwIAAAAAAEAalexJKUmqU6eO6tSpkxK7BgCkca6y6bkMd4Z5/xpVRLHJ32kXAIA0y2LEqnaGE5KoJwE8+bjCAQBMZZGhIq7XVMT1miwynB0OAACpikWingSQbpCUAgAAAAAAgOlISgEAAAAAAMB0JKUAAAAAAABgOpJSAAAAAAAAMB1JKQAAAAAAAJiOpBQAAAAAAABM5+bsAAAA6UuMXDTvVkX7YwAA8B8b9SSAdISkFADAZBbFyNXZQQAAkDpZqCcBpB+k3gEAAAAAAGA6ekoBAEzlIptquJ+RJO2Iflo2fh8BAMDOYthU0/2UJOpJAE8+rnAAAFO5yFAJt1CVcAuViwxnhwMAQKpioZ4EkI6QlAIAAAAAAIDpSEoBAAAAAADAdCSlAAAAAAAAYDqSUgAAAAAAADAdSSkAAAAAAACYjqQUAAAAAAAATOfm7AAAAOlLjFz0/a3y9scAAOA/NupJAOkISSkAgMksipS7s4MAACB1slBPAkg/SL0DAAAAAADAdPSUAgCYykU2VXM/J0naHV1INn4fAQDAzmLY9Iz7GUnUkwCefFzhAACmcpGhUm4hKuUWIhcZzg4HAIBUxUI9CSAdISkFAAAAAAAA05GUAgAAAAAAgOlISgEAAAAAAMB0JKUAAAAAAABgOpJSAAAAAAAAMB1JKQAAAAAAAJjOzdkBAADSlxi56IfbZe2PAQDAf2zUkwDSEZJSAACTWRRueDg7CAAAUicL9SSA9IPUOwAAAAAAAExHTykAgKlcZFMltyBJ0r6YArLx+wgAAHYWw6YqbuckUU8CePJxhQMAmMpFhsq6X1JZ90tykeHscAAASFUs1JMA0hGSUgAAAMlgz5496t27t2rWrClfX19t2rTJYblhGJo4caJq1qypcuXK6ZVXXtHp06cfuN8FCxaobt26Klu2rF566SUdOHAghc4AAADAXCSlAAAAkkFERIR8fX01fPjwBJfPmDFD8+bN00cffaQlS5YoY8aM6t69uyIjIxPd59q1azVq1Ci98cYbWrFihUqWLKnu3bsrNDQ0pU4DAADANCSlAAAAkkFAQIAGDBigBg0axFtmGIa+++479enTR/Xr11fJkiU1ZswYXb58OV6PqrvNmTNHbdu2VZs2bVS8eHF9/PHH8vT01LJly1LyVAAAAExBUgoAACCFnT9/XiEhIapRo4a9LGvWrCpfvrz279+f4DZRUVE6dOiQwzYuLi6qUaNGotsAAACkJSSlAOAhxNoeb6LRx93+caX1+IG0LiQkRJKUK1cuh/JcuXLpypUrCW5z7do1xcbGJmkbPJmceQ3m+g8ASEluzg4AANICVxeL+i/ar+OXw5O8bXGfLJr4csUUiOrhpfX4ASA9e5xr+OOo7euttxuVNP3YcccFADz5SEoBwEM6fjlch4KvOzuMR5Za4o+Ri1bcLmN/DKQH3t7ekqTQ0FD5+PjYy0NDQ1WyZMJ/fOfIkUOurq7xJjUPDQ1V7ty5Uy5YpErOuIYX887slGPHHTe9slFPAkhHuMoBAExmUZiRUWFGRkkWZwcDmKJgwYLy9vbWzp077WXh4eH666+/VLFiwj0RM2TIoDJlyjhsY7PZtHPnzkS3AfAEsFBPAkg/6CkFAACQDG7evKmzZ8/an58/f16BgYHy8vJS/vz51aVLF02dOlVPP/20ChYsqIkTJ8rHx0f169e3b9O1a1c1aNBAnTp1kiR169ZNQ4YMkZ+fn8qVK6dvv/1Wt27dUuvWrU0/PwAAgORGUgoAYCoX2VTO7YIk6UBMPtnotIsnxMGDB9WlSxf781GjRkmSWrVqpdGjR+u1117TrVu39OGHH+r69euqXLmyZs6cKQ8PD/s2586d07Vr1+zPn3/+eV29elWTJk1SSEiISpUqpZkzZzJ8D3iCWQybKrgFSaKeBPDkIykFADCViwxVdL+TlDoYk1c2J8cDJJfq1avr6NGjiS63WCzq37+/+vfvn+g6W7ZsiVfWqVMne88pAE8+C/UkgHSEtDsAAAAAAABMR1IKAAAAAAAApiMpBQAAAAAAANORlAIAAAAAAIDpSEoBAAAAAADAdCSlAAAAAAAAYDo3ZwcAAEhfYuWi1bdL2R8DAID/2KgnAaQjJKUAAKYyZNEVI7OzwwAAIHWyUE8CSD9IvQMAAAAAAMB09JQCAJjKRTaVdrssSToc4yMbv48AAGBnMWzyc7soiXoSwJOPpBQAwFQuMlTV/bwk6UiMt2xOjgcAgNTEIkNVqCcBpBOk3QEAAAAAAGA6klIAAAAAAAAwHUkpAAAAAAAAmI6kFAAAAAAAAExHUgoAAAAAAACmIykFAAAAAAAA07k5OwAAQPoSKxeti7TaHwMAgP/YqCcBpCMkpQAApjJk0UVbNmeHAQBA6mShngSQfpB6BwAAAAAAgOnoKQUAMJVFNvm6XpEkHY3NLYPfRwAAsLMYNpV0vSyJehLAk4+kFADAVK4y5J/hrCTp+K1cinFyPAAApCYW6kkA6QhpdwAAAAAAAJiOpBQAAAAAAABMR1IKAAAAAAAApiMpBQAAAAAAANORlAIAAAAAAIDpSEoBAAAAAADAdG7ODgAAkL7EykUbI4vbHwMAgP/YZKGeBJBukJQCAJjKkEXnbdmdHQYAAKmTxYV6EkC6QeodAAAAAAAApqOnFADAVBbZVMz1qiTpRGxOGfw+AgCAncWwqbjrFUnUkwCefCSlAACmcpWh5zKcliSdvpVDMc4NBwCAVMVCPQkgHUnxtPs333wjX19fffbZZyl9KAAAAAAAAKQRKZqUOnDggBYtWiRfX9+UPAwAAAAAAADSmBRLSt28eVNvv/22Pv30U3l5eaXUYQAAAAAAAJAGpVhS6pNPPlFAQIBq1KiRUocAAAAAAABAGpUiE52vWbNGhw8f1tKlS1Ni9wAAAAAAAEjjkj0pdeHCBX322WeaPXu2PDw8knv3AJAuxdoMubpYnB0GAAAAACSbZE9KHTp0SKGhoWrdurW9LDY2Vnv27NGCBQv0999/y9XVNbkPCwBPNFcXi/ov2q/jl8OTvG1tX2+93ahkCkT1aGLlop8ji9ofAwCA/9hkoZ4EkG4ke1LqmWee0erVqx3Khg0bpqJFi+q1114jIQUAj+j45XAdCr6e5O2KeWdOgWgenSGLTttyOjsMAABSJ4sL9SSAdCPZk1JZsmSR1Wp1KMuUKZOyZ88erxwAAAAAAADpU4pMdA4AQGIsMvS0yzVJ0hlbDhliriwAAOwMmwq7XJVEPQngyWdKUmrevHlmHAYAkAa4yqY6HiclSfNuVVSMGNYNAEAcFxnUkwDSDWbOAwAAAAAAgOkYvgcAAGCSunXrKigoKF55hw4dNHz48Hjly5cv17BhwxzKMmTIoL///jvFYgQAADALSSkAAACTLF26VLGxsfbnx44dU7du3dS4ceNEt8mSJYvWr19vf26xML8MAAB4MpCUAgAAMEnOnI63ef/mm2/01FNPqVq1aoluY7FY5O3tndKhAQAAmI45pQAAAJwgKipK//vf/9SmTZv79n6KiIhQnTp1FBAQoD59+ujYsWMmRgkAAJBySEoBAAA4waZNm3Tjxg21atUq0XWKFCmikSNH6uuvv9bYsWNlGIZefvllXbx40cRIAQAAUgbD9wAApoqVRb9GFbY/BtKrZcuWqVatWsqTJ0+i61SsWFEVK1Z0eP78889r0aJFeuutt0yIEoDZDOpJAOkISSkAgKkMueh4bG5nhwE4VVBQkHbs2KHJkycnaTt3d3eVKlVKZ8+eTaHIADibYaGeBJB+MHwPAADAZMuXL1euXLlUu3btJG0XGxurf/75h4nPAQDAE4GeUgAAU1lkqIDLv5KkIJuXDIYmIJ2x2Wxavny5WrZsKTc3x6bYO++8ozx58mjQoEGSpClTpqhChQp6+umndf36dc2aNUvBwcF66aWXnBE6ADMYNhV0CZNEPQngyUdSCgBgKlfZ1MDjuCRp3q2KipGrkyMCzLVjxw4FBwerTZs28ZZduHBBLi7/dWS/fv26PvjgA4WEhMjLy0tlypTRokWLVLx4cTNDBmAiFxnUkwDSDZJSAAAAJqpZs6aOHj2a4LJ58+Y5PH/33Xf17rvvmhEWAACA6ZhTCgAAAAAAAKYjKQUAAAAAAADTkZQCAAAAAACA6UhKAQAAAAAAwHQkpQAAAAAA6YZ3Fg/F2gynHd+ZxwZSG+6+BwAwVaws2hn1lP0xAAD4j0E9meKyZXSTq4tF/Rft1/HL4aYeu7hPFk18uaKpxwRSM5JSAABTGXLRkVgfZ4cBAECqZFioJ81y/HK4DgVfd3YYQLrG8D0AAAAAAACYjp5SAABTWWQoj8sNSdIlW1YZDE0AAOA/hqG8Lnd671BPAnjS0VMKAGAqV9nUxOMfNfH4R66yOTscAABSFRfqSQDpCEkpAAAAAAAAmI6kFAAAAAAAAExHUgoAAAAAAACmIykFAAAAAAAA05GUAgAAAAAAgOlISgEAAAAAAMB0bs4OAACQvthk0Z7ogvbHAADgPwb1JIB0hKQUAMBUNrnoYExeZ4cBAECqZFhcdIh6EkA6wfA9AAAAAAAAmI6eUgAAU1lkKJclQpIUamSSwdAEAAD+YxjKbbkpiXoSwJOPnlIAAFO5yqbmnoFq7hkoV9mcHQ4AAKmKC/UkgHSEpBQAAAAAAABMR1IKAAAAAAAApiMpBQAAAAAAANORlAIAAAAAAIDpSEoBAAAAAADAdCSlAAAAAAAAYDo3ZwcAAEjdvLN4KNZmyNXFkiz7s8mi/dH57I8BAMB/DOpJAOkISSkAwH1ly+gmVxeL+i/ar+OXwx9pH7V9vfV2o5KSJJtc9GdMgeQMEQCAJ4ZhoZ4EkH6QlAIAPJTjl8N1KPj6I21bzDtzMkcDAAAAIK0jKQUAMJmh7JbbkqQww1NiaAIAAP8xDGW33JJEPQngycdE5wAAU7nJplaeh9TK85DcZHN2OAAApCou1JMA0hGSUgAAAAAAADAdSSkAAAAAAACYjqQUAAAAAAAATEdSCgAAAAAAAKYjKQUAAAAAAADTkZQCAOD/2rv/2Krq+4/jr3svlAItHfSHSMBSKW0FCm0JMUiRbwcGdLB8BVG+X34EU802YRMp4kayYdHQmgFDoCxkAgE6ZN13QtJinZh8afxGWF0oKsgQqONHwNB2sv7CFu493z8cl1UoFLjnc+6P5yNpOPfcc/p53w+f9PPO+57POQAAAACM6+Z0AACAyOKTS59duc+/DQAArrOYJwFEEIpSAACjfHLrr1cHOR0GAABByXIxTwKIHCzfAwAAAAAAgHFcKQUAMMxSjKtdktRsRUksTQAA4DrLUoyrTRLzJIDwx5VSAACjusmnmdGfaWb0Z+omn9PhAAAQVNzMkwAiCEUpAAAAAAAAGEdRCgAAwJD169crPT29w8+UKVNueU5lZaWmTJmizMxMTZs2TVVVVYaiBQAAsBf3lAIAADBo6NCh2rp1q/+1x+Pp9NhDhw6poKBAixcvVl5ensrLy7VgwQK98847SktLMxEuAACAbbhSCgAAwCCPx6PExET/T79+/To9dvv27Ro/fryee+45DRkyRIsWLdKwYcNUWlpqMGIAAAB7UJQCAAAw6PTp08rNzdXEiRNVUFCg8+fPd3rs4cOHNXbs2A77cnNzdfjwYZujBAAAsB/L9wAAAAwZOXKkioqKlJKSorq6OpWUlGj27NkqLy9XTEzMDcfX19crISGhw774+HjV19ebChkAAMA2FKUAAEb55NKxq4n+bSCSTJgwwb+dkZGhUaNGKS8vT5WVlZo5c6aDkQEIFhbzJIAIQlEKAGCUT24dvJLsdBhAUOjTp48GDx6sM2fO3PT9hISEG66KamhouOHqKQDhw3IxTwKIHNxTCgAAwCEtLS06e/asEhMTb/p+VlaWDh482GHfRx99pKysLAPRAQAA2IuiFADAMEs9dEU9dEWS5XQwgFFvvPGGqqurde7cOR06dEgLFy6U2+3W1KlTJUlLly7V6tWr/cfPmzdPH374obZs2aJTp05p/fr1OnLkiObMmePURwBgN4t5EkDkYPkeAMCobvLpv3t+IknacTlbV+VxOCLAnK+++kqLFy/WpUuX1K9fP40ePVplZWXq16+fJOnChQtyu69/Z5iTk6NVq1Zp7dq1WrNmjQYPHqySkhKlpaU59REA2MzNPAkgglCUAgAAMOQ3v/nNLd/fsWPHDfsef/xxPf7443aFBAAA4BiW7wEAAAAAAMA4ilIAAAAAAAAwjqIUAAAAAAAAjKMoBQAAAAAAAOMoSgEAAAAAAMA4nr4HADDKJ5dOXI33bwMAgOss5kkAEYSiFADAKJ/c+r8rKU6HAQBAULJczJMAIgfL9wAAAAAAAGAcV0oBAAyz1E0+SdJVuSWWJgAAcJ1lqZu8kpgnAYQ/rpQCABjVTT7N7VmjuT1r/MUpAADwLTfzJIAIQlEKAAAAAAAAxlGUAgAAAAAAgHEBv6fUpk2b9P7776u2tlbR0dHKzs7WkiVL9OCDDwa6KQAAAAAAAISogF8pVV1drdmzZ6usrExbt27V1atXlZ+fr9bW1kA3BQAAAAAAgBAV8CulNm/e3OF1cXGxxo4dq6NHj2rMmDGBbg4AAAAAAAAhyPZ7SjU1NUmS4uLi7G4KAAAAAAAAISLgV0r9O5/Pp5UrVyonJ0dpaWl2NgUACBGWXPrS29e/DQAArrMk5skwlhjTQ16fJY/bmf9bJ9sGbsbWolRhYaFOnDihnTt32tkMACCEeOXW/vYhTocBAEBQslwe5skw1qdnN3ncLr24q0YnLzYbbTs1KUZvzso22iZwO7YVpVasWKH9+/ertLRU/fv3t6sZAAAAAABCysmLzTp6vtHpMADHBbwoZVmWXnvtNe3bt087duzQoEGDAt0EAAAAAAAAQlzAi1KFhYWqqKjQxo0b1bt3b9XV1UmSYmNjFR0dHejmAAAhppu8mtuzRpK043K2rsrjcEQAAAQPt+XVsz3/Kol5EkD4C3hR6u2335YkzZ07t8P+oqIiTZ8+PdDNAQAAAAAAIAQFvCh1/PjxQP9KAAAAAAAAhBm30wEAAAAAAAAg8lCUAgAAAAAAgHEUpQAAAAAAAGAcRSkAAAAAAAAYF/AbnQMAcCuWXDrrjfNvAwCA6yyJeRJAxKAoBQAwyiu3Pmgf6nQYAAAEJcvlYZ4EEDFYvgcAAAAAAADjKEoBAAAAAADAOJbvAQCM6iavZkV/Ikna9c0oXZXH4YgAAAgebsurOdGHJDFPAgh/FKUAAMZ1d/mcDgEAgKDFPAkgUrB8DwAAAAAAAMZRlAIAAAAAAIBxFKUAAAAAAABgHEUpAAAAAAAAGEdRCgAAAAAAAMbx9D0AgFGWXLrgjfFvAwCA6yyJeRJAxKAoBQAwyiu33mvPcDoMAACCkuXyME8CiBgs3wMAAAAAAIBxFKUAAAAAAABgHMv3AABGdZNXM6M/kyT98ZtMXZXH4YgAAAgebsur/4o+LIl5EkD4oygFADAu2nXV6RAAAAhazJMAIgXL9wAAAAAAAGAcV0oBAAAYsmnTJr3//vuqra1VdHS0srOztWTJEj344IOdnvPOO+/oF7/4RYd9UVFR+uyzz+wOFwAAwFYUpQAAAAyprq7W7NmzlZmZKa/XqzVr1ig/P1979+5Vr169Oj0vJiZG7733nv+1y+UyES4AAICtKEoBAAAYsnnz5g6vi4uLNXbsWB09elRjxozp9DyXy6XExES7wwMAADCKohQAAIBDmpqaJElxcXG3PK61tVV5eXny+XwaNmyYFi9erKFDh5oIEQAAwDYUpQAARllyqc7Xy78NRCqfz6eVK1cqJydHaWlpnR6XkpKilStXKj09XU1NTdqyZYtmzZqlvXv3qn///gYjBmCCJTFPAogYFKUAAEZ55VZF2zCnwwAcV1hYqBMnTmjnzp23PC47O1vZ2dkdXj/xxBPatWuXFi1aZHOUAEyzXB7mSQARg6IUAACAYStWrND+/ftVWlp6x1c7de/eXQ899JDOnDljU3QAAABmuJ0OAAAAIFJYlqUVK1Zo37592rZtmwYNGnTHv8Pr9eqLL77gxucAACDkcaUUAMAoj7x6ssdRSdLutuHyyuNwRIA5hYWFqqio0MaNG9W7d2/V1dVJkmJjYxUdHS1JWrp0qe677z4VFBRIkjZs2KCsrCwlJyersbFRmzdv1vnz5zVz5kzHPgcA+7gtr57q8akk5kkA4Y+iFADAKJekWHe7fxuIJG+//bYkae7cuR32FxUVafr06ZKkCxcuyO2+fjF7Y2OjfvnLX6qurk5xcXEaPny4du3apdTUVHOBAzCKeRJApKAoBQAAYMjx48dve8yOHTs6vF62bJmWLVtmV0gAAACO4Z5SAAAAAAAAMI6iFAAAAAAAAIyjKAUAAAAAAADjKEoBAAAAAADAOG50DgAwypL0tS/avw0AADpingQQKShKAYgIXp8lj9uZBysnxvRwtP1g45VHe9pGOB0GAABByedingQQOShKAYgIHrdLL+6q0cmLzXd87n+kJ+rlyRl33Xafnt0cbR8AAAAAghFFKQAR4+TFZh0933jH5w1J7B0W7QMAAABAMKEoBQAwyiOvpvU4Jkkqb3tIXnkcjggAgODhtrz6zx5HJDFPAgh/FKUAAEa5JPV1f+PfBgAAHTFPAogUbqcDAAAAAAAAQOShKAUAAAAAAADjKEoBAAAAAADAOIpSAAAAAAAAMI6iFAAAAAAAAIzj6XsAAKMsSU2+KP82AADoiHkSQKSgKAUAMMorj/6nbaTTYQAAEJR8LuZJAJGD5XsAAAAAAAAwjqIUAAAAAAAAjGP5HgDAKI98erzH3yRJlW0Z8vL9CAAAfi7Lq6k9PpfEPAkg/FGUAgAY5ZKlRHerfxsAAFznkpgnAUQMyu4AAAAAAAAwjqIUAAAAAAAAjKMoBQAAAAAAAOMoSgEAAAAAAMA4ilIAAAAAAAAwjqfvAQCM+8Zi+gEAoDPMkwAiBX/tAABGXZVHb3+T5XQYAHDHvD5LHrfL6TAQ5nwu5kkAkYOiFAAAANAFHrdLL+6q0cmLzcba/I/0RL08OcNYewAAmERRCgAAAOiikxebdfR8o7H2hiT2NtYWAACmUZQCABjlkU+PRX0hSdrXniYvz9wAAMDPZXk1JepvkpgnAYQ/ilIAAKNcsnS/p9m/DQAArnNJzJMAIgZldwAAAAAAABhHUQoAAAAAAADGUZQCAAAAAACAcRSlAAAAAAAAYBxFKQAAAAAAABjH0/cAAMZdsfhOBACAzjBPAogUFKUAAEZdlUel3+Q4HQYAAEHJ52KeBBA5KMEDAAAAAADAOIpSAAAAAAAAMI7lewAAozzyKS/qlCTpf9uHyMv3IwAA+LksryZFnZDEPAkg/FGUAgAY5ZKlQZ5/+rcBAMB1Lol5EkDEoOwOAAAAAAAA4yhKAQAAAAAAwDjbilK///3v9f3vf1+ZmZmaOXOmPv30U7uaAgAACCl3midVVlZqypQpyszM1LRp01RVVWUoUgAAAPvYUpR69913VVRUpAULFmj37t3KyMhQfn6+Ghoa7GgOAAAgZNxpnnTo0CEVFBToqaee0p49ezRx4kQtWLBAX3zxheHIAQAAAsuWotTWrVv19NNPa8aMGUpNTVVhYaGio6P1pz/9yY7mAAAAQsad5knbt2/X+PHj9dxzz2nIkCFatGiRhg0bptLSUsORAwAABFbAn77X3t6uo0eP6kc/+pF/n9vt1iOPPKKamprbnm9Z3z5horm5OdChAQgnLS2S+1919eZmybr902kG93HL1979jpu6r+e3f5M4/+7O/+7vsNq668o/r0iS0uK7y3J5bI/B6fMH93EzrznoWt9bXfg7Ybe7yZMOHz6s+fPnd9iXm5urDz74oEttklsF1r38LbwbgfgbHGptR+Jn/ve2H+jj0pW6O5snA9OuR83/yq3S4rupvYf9n58xZrZt8hEESiBzq4AXpb7++mt5vV7Fx8d32B8fH6/a2trbnt/S0iJJmjBhQqBDAxBuUlO//ffRR21tplbSds6/J9/9Haf8W380EkMwnD+66B5+AQKipaVFsbGxjsZwN3lSfX29EhISbji+vr6+S22SW4W2QPwNDrW2I/Ezd9521+bJQLVbeS232r7U9na/27ZJwff/bK5t8hEEUiByq4AXpe5VUlKSqqqq1Lt3b7lcLqfDAQAAIc6yLLW0tCgpKcnpUBxBbgUAAAIpkLlVwItSffv2lcfjueFmnQ0NDTd8y3czbrdb/fv3D3RYAAAggjl9hdQ1d5MnJSQk3HBVVFfzKoncCgAABF6gcquA3+g8KipKw4cP14EDB/z7fD6fDhw4oOzs7EA3BwAAEDLuJk/KysrSwYMHO+z76KOPlJWVZWeoAAAAtrPl6XvPPvusysrKtHv3bp06dUqvvvqqLl++rOnTp9vRHAAAQMi4XZ60dOlSrV692n/8vHnz9OGHH2rLli06deqU1q9fryNHjmjOnDlOfQQAAICAsOWeUk888YT+8Y9/aN26daqrq9NDDz2kt956q8uXmQMAAISr2+VJFy5ckNt9/XvDnJwcrVq1SmvXrtWaNWs0ePBglZSUKC0tzamPAAAAEBAuKxiejwwAAAAAAICIYsvyPQAAAAAAAOBWKEoBAAAAAADAOIpSAAAAAAAAMI6iFAAAAAAAAIwLmqLU+vXrlZ6e3uFnypQpTocV0j7++GP9+Mc/Vm5urtLT0/XBBx90eN+yLL355pvKzc3VyJEjNX/+fP397393JtgQdbs+/vnPf37DuM7Pz3co2tC0adMmzZgxQ9nZ2Ro7dqxeeOEF1dbWdjimra1NhYWFevjhh5Wdna2f/vSnqq+vdyji0NOVPp47d+4NY/lXv/qVQxGHnp07d2ratGnKyclRTk6OnnnmGVVVVfnfZwzfu9v1cSSOYXKrwCO3sh+5lf3IrexHbmU/ciszTORX3QId9L0YOnSotm7d6n/t8XgcjCb0tba2Kj09XTNmzNDChQtveP93v/udduzYoeLiYg0cOFBvvvmm8vPz9e6776pHjx4ORBx6btfHkjR+/HgVFRX5X0dFRZkKLyxUV1dr9uzZyszMlNfr1Zo1a5Sfn6+9e/eqV69ekqSVK1eqqqpKa9euVWxsrF577TUtXLhQu3btcjj60NCVPpakp59+Wj/72c/8r3v27OlEuCGpf//+WrJkiZKTk2VZlvbs2aMFCxZo9+7dGjp0KGM4AG7Xx1JkjmFyq8Ait7IfuZX9yK3sR25lP3IrM4zkV1aQWLdunfXDH/7Q6TDCVlpamrVv3z7/a5/PZ40bN8566623/PsaGxutESNGWBUVFU6EGPK+28eWZVmvvPKK9ZOf/MShiMJTQ0ODlZaWZlVXV1uW9e24HT58uFVZWek/5uTJk1ZaWppVU1PjUJSh7bt9bFmWNWfOHOv11193MKrwM2bMGKusrIwxbKNrfWxZkTmGya3sRW5lP3IrM8it7EduZQa5lRmBzq+CZvmeJJ0+fVq5ubmaOHGiCgoKdP78eadDClvnzp1TXV2dHnnkEf++2NhYjRo1SjU1NQ5GFn6qq6s1duxYTZ48WcuXL9fXX3/tdEghrampSZIUFxcnSTpy5IiuXLnSYSwPGTJEAwYM0OHDh50IMeR9t4+vKS8v18MPP6ypU6dq9erVunz5shPhhTyv16u9e/eqtbVV2dnZjGEbfLePr4nEMUxuZQ65lTnkVoFFbmU/cit7kVuZYVd+FTTL90aOHKmioiKlpKSorq5OJSUlmj17tsrLyxUTE+N0eGGnrq5OkhQfH99hf3x8PGttA2j8+PF67LHHNHDgQJ09e1Zr1qzR888/rz/84Q8sobgLPp9PK1euVE5OjtLS0iRJ9fX16t69u/r06dPh2Pj4eP84R9fdrI8laerUqRowYICSkpJ0/PhxrVq1Sl9++aU2bNjgYLSh5fjx45o1a5ba2trUq1cvlZSUKDU1VceOHWMMB0hnfSxF5hgmtzKL3MoMcqvAIreyH7mVfcitzLA7vwqaotSECRP82xkZGRo1apTy8vJUWVmpmTNnOhgZcPd+8IMf+Lev3fht0qRJ/m/4cGcKCwt14sQJ7dy50+lQwlZnffzMM8/4t9PT05WYmKj58+frzJkzeuCBB0yHGZJSUlK0Z88eNTU16c9//rNeeeUVlZaWOh1WWOmsj1NTUyNyDJNbIRyRWwUWuZX9yK3sQ25lht35VVAt3/t3ffr00eDBg3XmzBmnQwlLiYmJkqSGhoYO+xsaGpSQkOBESBFh0KBB6tu3r06fPu10KCFnxYoV2r9/v7Zt26b+/fv79yckJOjKlStqbGzscHxDQ4N/nKNrOuvjmxk1apQkMZbvQFRUlJKTkzVixAgVFBQoIyND27dvZwwHUGd9fDOROIbJrexFbuUMcqu7R25lP3Ire5FbmWF3fhW0RamWlhadPXuWQWOTgQMHKjExUQcOHPDva25u1ieffNJhfSgC66uvvtKlS5cY13fAsiytWLFC+/bt07Zt2zRo0KAO748YMULdu3fvMJZra2t1/vx5ZWVlGY42NN2uj2/m2LFjksRYvgc+n0/t7e2MYRtd6+ObicQxTG5lL3IrZ5Bb3TlyK/uRWzmD3MqMQOdXQbN874033lBeXp4GDBigixcvav369XK73Zo6darToYWslpaWDt+Gnjt3TseOHVNcXJwGDBigefPm6be//a2Sk5P9jy1OSkrSpEmTHIw6tNyqj+Pi4rRhwwZNnjxZCQkJOnv2rH79618rOTlZ48ePdzDq0FJYWKiKigpt3LhRvXv39q8Dj42NVXR0tGJjYzVjxgwVFxcrLi5OMTExev3115Wdnc2k00W36+MzZ86ovLxcEyZM0Pe+9z0dP35cRUVFGjNmjDIyMhyOPjSsXr1ajz76qO6//361tLSooqJC1dXV2rx5M2M4QG7Vx5E6hsmtAo/cyn7kVvYjt7IfuZX9yK3MMJFfuSzLsmz8DF320ksv6eOPP9alS5fUr18/jR49Wi+99BLrae/BX/7yF82bN++G/U8++aSKi4tlWZbWrVunsrIyNTY2avTo0Vq+fLlSUlIciDY03aqPX331VS1YsECff/65mpqalJSUpHHjxunFF1/kMv47kJ6eftP9RUVFmj59uiSpra1NxcXF2rt3r9rb25Wbm6vly5fzTVMX3a6PL1y4oJdfflknTpxQa2ur7r//fk2aNEkvvPACN0vuomXLlungwYO6ePGiYmNjlZ6erueff17jxo2TxBgOhFv1caSOYXKrwCO3sh+5lf3IrexHbmU/ciszTORXQVOUAgAAAAAAQOQI2ntKAQAAAAAAIHxRlAIAAAAAAIBxFKUAAAAAAABgHEUpAAAAAAAAGEdRCgAAAAAAAMZRlAIAAAAAAIBxFKUAAAAAAABgHEUpAAAAAAAAGEdRCgAAAAAAAMZRlAIAAAAAAIBxFKUAAAAAAABgHEUpAAAAAAAAGPf/WwP/UQzYUfgAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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0aKFYTKZjAEDBthtc+XKFSMwMNAW+8PX1Y0bN4wDBw4kevy///7beOWVVwyTyWQMGTLEiImJsVv/2rVrRkBAgNPnYffu3UaFChWcnlN0dLRRp04dw2QyGcOHD7fb74ULF2zLPv30U7vt2rZta5hMJuPQoUO2tsuXL9veO0wmkzFq1KhHbmP9O7b+LZ89e9a2LC4uzhg6dKhhMpmMN99800iOx3n/MwzDdr4XL150ut/E3usTej95nNc/oTg+/fRTw2QyGa+++qpx4cIFu2UbNmwwypYta1StWtW4deuWrf1xn+P4+HijZcuWtmUPf+7du3fP+PHHH23/j4iIMPz9/Y3y5csb169fd3h+Fi1aZHtNkiq5nwsnT540ypUrZ5jNZmPNmjV26/74449G+fLlDZPJZPz88892y6zv3dZr/cHr4tSpU4a/v79hMpmMw4cP222X0Gv+oMd5zQzDMEaPHm2YTCbjtddes73vf/LJJ4bJZDJatGjhcB1ZP787duzoNI79+/cbJpPJaN68uXH79m2H5UePHjXCw8MTPA8ASAsYvgcgzQsPD5ck5c6d+7G2tw4zevfdd+16IHl4eKhXr14ym82KiIjQihUrnjzYBzRs2FCvvfaaXVtwcLBCQkIUHx+vvXv3Jmt/Z86c0bp165Q3b15NnDjR4fl4/fXXVbt2bf3111/auXOn030MHz5cvr6+yTuR/69+/foOPUWs7S+++KJu3rzpMJRx+vTpkqT+/fvbfv19UKlSpVSyZMnHiie5smTJonr16tl6hlj5+PhowIAByps3r3766SeH4UlPIlOmTBozZowyZsxoaytfvrxq1aoli8WiqKgoDRs2zK5XSv369WUymRQZGaljx47Z7a9ixYoymUwOx8mXL5/ef/99Sf83abNVWFiYJKl27doO22XNmlX+/v4Jxm+xWDR27FiNHj1aRYoU0fLlyxNdPzEZMmTQyJEjlSFDBltb/vz5bcOilixZoujoaNsy67CVpUuXOgx3XblypWJiYtSoUaPHvp6tDh48qF9//VUZM2bUqFGjbD1pJClXrlz66KOPJEnr16/X33//bVs2f/583b59W3Xq1NF7773ncF3lzp3b4WYMDzp58qTatGlju+vluHHj5OPj43Ced+7ckb+/v15//XW7ZcHBwWrbtq3TfW/YsEGXL19W3rx59cEHH9jtt3Dh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tWnTJvXt21etWrVS+fLldevWLW3fvl0jR45UmTJlHPbfsWNHRUZGavLkycqaNat69uwpSerdu7d++ukndejQQe3atbN9QJcqVUqnTp2ybV+mTBm1aNFCy5cvV0REhKpWrarffvtNa9asUf369VW9enW741WpUkXr1q2TyWRS9uzZJUnlypVTpkyZ9Ndff6lZs2Yp8nxavffee9q3b5/atGmjV199VaVKldKtW7f0+++/a8+ePdq/f3+KHi8pDMPQsGHDlCFDBn344YeSpNdee02bN2/WmDFjFBwcrHz58qlr167avn27evbsqRYtWqh8+fK6e/eu/vjjD23atEnbtm1Trly5VLduXVWuXFmTJk3S5cuXVapUKW3evFm3b992OHZybmfcqFEj+fv7a+jQoTp9+rRy5syppUuXKj4+Xr17934aTw0AAMlGDkUOldZyKEn6/PPPJUmnT5+WJH333Xc6dOiQJDnMgQXAHkUpIBU8+AvNg1q2bKnSpUtr8eLFmjRpkmbNmiXDMFSxYkV98sknqlSpkm3dzJkza/HixZo+fbq2bNmiNWvWKHfu3LYP6IT07NlTt2/ftiVVHTp0UJkyZTR37lyNGzdO06ZNU/78+dW7d29dv37dLqGSpNGjR6tQoUJas2aNtm7dqjx58qhHjx7q1auXw7ECAwO1bt06Wzd0SfL29pa/v792795t154S8uTJo2+++UYzZszQli1btHTpUuXIkUOlSpXSwIEDU/RYSbVo0SLt379f06dPV65cuWztY8aMUdOmTfXf//5Xs2fPVsaMGbVo0SLNmjVLGzdu1LfffqssWbKoWLFi6t27t7JmzSrp/lwRM2fO1NixY/W///1PHh4eqlu3roYMGaLmzZs/dpxeXl62+TIWLVqk6OhoVahQQePGjVOJEiWe9GkAACBFkEORQ6W1HEqSpk6davf/VatW2R5TlAIS52EkNusdAAAAAAAA8BQwpxQAAAAAAABcjqIUAAAAAAAAXI6iFAAAAAAAAFyOohQAAAAAAABcjqIUAAAAAAAAXI6iFAAAAAAAAFyOohT+lTp16qSmTZumdhjAYzt69Kj8/Px0+fLl1A7Fpm7duurRo8cj19u3b5/MZrP27duX7GNYt924ceMj1+3fv7/69u2b7GMAAJwjf8Kzbv369apWrZru3LmT2qHYmM1mffTRR49cb/Xq1TKbzbp06VKyj2Hd9rfffnvkum3atNGECROSfQzgafFO7QCQdv3555+aNWuW9u3bp3/++Uc5cuRQUFCQevbsqdKlS6d2eGnWF198oVKlSql+/fqpHUqa8c8//2jVqlX64YcfdObMGcXFxalEiRJ6/fXX9dJLLyW67cyZMzVlyhSVLl1aa9euTdLxQkNDNXbsWO3atUsWi0VBQUEaNmyYChcubLfekiVLtHfvXh09elRXr15VixYtNH78+Mc+T+l+4ebBQlKuXLlUvHhxvfHGG2rQoEGS9zN58mQ1adJEBQsWtLUtXrxYGTNmVMuWLZ8oxn+L7t27q1WrVjp58qTKlCnzRPv65ptvNG/ePF26dEnPPfecOnXqpE6dOj1yuyFDhmjNmjUJLt+5c6fy5cvn0B4REaFGjRopPDxcU6dO1YsvvvhE8QNIO8ifHg/5k6Pk5E/79u1T586dne5n+fLl8vf3T/RYD+cvDypatKg2b95s+7/ZbHa63nvvvae33nor0eMk5MF9enh4KE+ePDKZTOrRo4eCgoKStI/4+HhNnz5dHTt2VObMmW3tXFv2unfvrvfff19vvPGGfH19H3s/FotFc+fO1dKlS3X9+nUVK1ZMPXr0SHJh+9ixY5o+fbqOHTumqKgoFSpUSK+++qo6dOggLy8v23p37tzRlClTtGnTJoWHh6tw4cLq1KmT2rdv/9ixI22hKAWnNm/erAEDBihHjhxq1aqVChUqpMuXL2vlypXatGmTJk+enKwv2O5k1qxZatSoER98D/jll180ZcoU1apVS2+//ba8vb21adMm9e/fX6dPn1afPn2cbvf3339r1qxZypQpU5KPdefOHXXu3Fm3b99Wjx495OPjowULFqhjx4769ttvlTNnTtu6X375pe7cuaMKFSro+vXrT3yeVmXLltUbb7whSbp27ZqWL1+uXr166cMPP1S7du0euf2JEye0e/duLVu2zK596dKlypkzZ5ovSlWtWlVHjx6Vj4/PUz1OuXLl5Ofnp3nz5j3RL37Lli3TiBEj1KhRI73xxhs6ePCgRo8erbt37z4yuW7btq2Cg4Pt2gzD0IcffqiCBQs6LUhJ0rRp03Tv3r3HjhlA2kT+9PjInxw9Tv7UqVMnVahQwa6tSJEijzzWsGHDHHoXXblyRVOmTFHNmjUd1q9Zs6ZeeeUVu7Zy5col5bQSZN2nYRi6dOmSli5dqi5dumjWrFmqXbv2I7f/4YcfdO7cObVt29au/Vm5tl555RU1adJE6dKle6rHqVevnrJkyaIlS5Y8UY/zyZMna/bs2WrTpo0qVKigbdu26b333pOHh4eaNGmS6LbHjh3Ta6+9pmLFiql79+7KkCGDdu7cqTFjxujChQv6z3/+I+l+obFr1646duyYOnTooKJFi+rnn3/WyJEjFRERoZ49ez52/Eg7KErBwYULFzRo0CAVLlxYixcvVq5cuWzLOnfurA4dOmjQoEH63//+59Dz5GmKiopKVnECaUepUqW0adMmu14/7du31+uvv645c+aoW7duTl/bjz/+WJUqVZLFYtE///yTpGMtWbJEf/31l7755htVrFhRkvT888+rWbNmmj9/vgYMGGBbd9GiRSpQoIA8PDwUEBDwhGf5f/Lly2eXqDVv3lwNGzbUggULEixKxcXFyWKxKF26dFq1apUKFCjwyF810ypPT0+lT5/eJcdq3Lixpk+frjt37tj9KppU9+7d0+TJk/XCCy9o2rRpku53a7dYLJo5c6batm2r7NmzJ7h9QECAw7Vz8OBB3b17V82aNXO6zR9//KGlS5fqnXfesR0TwLOP/Akp7XHypypVqjxW71tnBZvPP/9ckpx+nhUrVsyhKPWkHt5ngwYN9PLLL2vhwoUJFqWio6Pl4+MjT09PrVq1SpUrV07wB6G0zsvLy66H0NPi6empRo0a6bvvvlOfPn3k4eGR7H2EhoZq/vz56tChg4YPHy5JevXVV9WxY0dNmDBBL774YqLnsnz5cknS119/rRw5ckiSXnvtNXXs2FFr1qyxFaU2b96sI0eOaMyYMWrdurWk+38Dffr00eeff65XX31VuXPnTnb8SFuYUwoOvvzyS929e1ejRo2yS6ik+0ORPvroI0VFRWnOnDmSpI0bN8psNmv//v0O+1q2bJnMZrP++OMPW9uZM2fUp08fVatWTRUqVFDLli21bds2u+2s46L379+vDz/8UMHBwbYPo8jISI0ZM0Z169aVn5+fgoOD9cYbb+j33393OP7p06fVqVMnVapUSc8//7wt5geFhYVp2LBhqlGjhipUqKCXX37Z6XCcqKgojR8/XrVr15afn58aNWqkuXPnyjAM2zpms1lRUVFas2aNzGazzGazhgwZkuBzbZ0/Z/369frss8/0/PPPKyAgQH369NHt27cVExOjMWPGKDg4WAEBARo6dKhiYmIc9vPdd9+pZcuWqlixoqpVq6b+/fvr6tWrduscPHhQffr00QsvvCA/Pz/Vrl1bY8eOdeitMWTIEAUEBCg0NFTvvPOOAgICVL16dX388ceKj4+3W/fatWs6c+aMYmNjEzxHSSpcuLBdQiXd75pdv359xcTE6OLFiw7bHDhwQJs2bdKwYcMS3ffDNm3apAoVKtgKUpJUsmRJBQcHa8OGDXbrFixY8LE+iJPL19dXJUqUsHWLv3Tpksxms+bOnasFCxaofv36qlChgs6cOSNJ2rZtm6pXr24XW926dfXnn39q//79tmvrweFlFy9etP1dVapUSW3atNGPP/7oEEtSr/fEHDx4UK1bt1aFChVUr149ffvtt3bLE5pTavHixapXr54qVqyo1q1b6+DBgwkOk7MWhWrVqqUKFSqoS5cuOn/+vMN6NWrUUFRUlHbv3m3XfuXKFdvzmZh9+/bp5s2bDl3AO3TooKioKKfP4aOsXbtWHh4eCXZfHzNmjOrXr68qVaoke98A0i7yJ/KntJA/Sfdf67i4uET3nRRr165VoUKFVLlyZafL7927p+jo6Cc+TkLMZrNy5sxpm2PJ+rqvW7dOkydP1vPPP69KlSopMjJS0dHR+umnn1SjRg2HfSR2bR0/flzdunVT5cqVFRAQoC5duuiXX35xiCWpeVZitm7dqqZNm8rPz09NmjTRzp077ZY7m1PKYrFo+vTpCgkJUaVKldSpUyedPn1adevWdfo3EhMTo3Hjxql69ery9/fXu+++q/DwcIf1atSoocuXL+vEiRN27RcuXNCFCxeSdC6xsbF2+ZOHh4fatWunv//+W0eOHEl0+8jISKVPn17ZsmWza/f19VWGDBls/z906JAkOfS8eumllxQdHe3wHohnEz2l4OCHH35QwYIFE/zCVLVqVRUsWFA7duyQJL3wwgvKlCmTNmzYoGrVqtmtu379epUuXVomk0nS/XkW2rVrp3z58ql79+627d59911Nnz7doUv7yJEjlStXLr377ruKioqSJI0YMUKbNm1Sx44dVbJkSd28eVOHDh3SmTNnVL58edu2t27dUrdu3dSgQQM1btxYmzZt0sSJE2UymWwJ2r1799SpUydduHBBHTp0UKFChbRx40YNGTJEERER6tKli6T7w3Hefvtt7du3T61bt1bZsmX1008/acKECQoNDbUVTiZMmKD//Oc/qlixotq0aSMpaV2mZ8+erQwZMuitt97S+fPn9fXXX8vb21seHh6KiIhQr1699Ouvv2r16tUqWLCgevXqZdt25syZmjp1qho3bqzWrVsrPDxcX3/9tTp06KBvv/3W9ma/ceNG3bt3T+3atVOOHDl09OhRff311/r7778demtYu8pWrFhRgwYN0p49ezRv3jwVLlzY7sPn008/1Zo1a7Rt2zYVKlTokef5sBs3bkiS3ZA66/FHjRql1q1bJzhvgTMWi0WnTp1Sq1atHJZVqFBBP//8syIjI5UlS5Zkx/okYmNj9ffff9t+CbJavXq1oqOj1aZNG6VLl07Zs2dXaGiorly54tAFftiwYRo1apQyZcpk66qcJ08eSfefx9dee013795Vp06dlDNnTq1Zs0Zvv/22pk2bZvu7Sur1npjz58+rb9++at26tVq0aKFVq1ZpyJAhKl++fKJzpSxZskQfffSRqlSpotdff12XL1/Wu+++q2zZsil//vwO68+ZM0ceHh568803FRkZqS+//FIDBw7UN998Y7deqVKllCFDBh0+fNju/WPw4MHav3+/Tp06lej5HD9+XJLk5+dn116+fHl5enrqxIkTyfolODY2Vhs2bFBAQIDTv4kNGzboyJEjWr9+fZqaxB7AkyN/In9K7fxJkoYOHaqoqCh5eXkpMDBQgwYNchjOlxTHjx/XmTNnEhwetWbNGi1ZskSGYahkyZJ6++23E+wh/Lhu3bqliIgIFS1a1K79888/l4+Pj7p27aqYmBj5+Pjo2LFjio2NdcifEru2/vzzT3Xo0EGZM2dWt27d5O3treXLl6tTp076+uuvValSJUlJz7MSc+jQIW3evFnt27dX5syZtWjRIvXp00c//PCD09fRatKkSfryyy9Vp04dPf/88zp58qS6du2aYDFw9OjRypYtm3r16qXLly/rq6++0kcffaQpU6bYrWfNew4fPmz3nL3++uuSpO3btyd6PidOnFCmTJlUsmRJu3brj8InTpxI9Me3atWqaf369Ro+fLjeeOMN2/C9LVu26P3337etFxMTIy8vL4cpITJmzCjp/jBA6+uKZ5gBPCAiIsIwmUzG22+/neh6PXv2NEwmk3H79m3DMAxjwIABRnBwsBEXF2db59q1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9uzZowYNGtjuCPOgvn37OlzXffv2lSR169ZNM2bMcLodgGcH+RP5U1KldP4kOb8OTp48qe3bt6tmzZp2xcPEPiN37NihiIiIBO+k5+w4kZGR+uqrr5QzZ067Ozm6kp+fn+0ufA9zdm15eXmpZs2a2rZtm90PgTdu3NDatWsVGBhoK6QmNc9KacHBwfL29nbIUR7+e3oc1ufp4fzpwoULunDhwiO3r1evnnx8fGxzO0n3/zaWLVumfPny2e3X2fVevHhx7d692+69Mj4+Xhs2bFDmzJkTvftmeHi4vvzyS5nNZopS/xL0lIKDYsWKafz48Xr//ffVrFkztW7dWoUKFdLly5e1cuVK/fPPP/r0008d3ix8fHzUoEEDrVu3Tnfv3tXgwYMd9j1ixAi1b99ezZo1U5s2bVS4cGHduHFDv/zyi/7++2/973//SzS2O3fuqHbt2mrUqJHKlCmjTJkyaffu3frtt980ZMiQZJ9r27ZttXz5cg0ZMkS///67ChYsqE2bNunw4cMaNmyY7cOobt26CgoK0uTJk209O3bt2qVt27apS5cuds9F+fLltWfPHs2fP1958+ZVoUKFnI5DTwlFihRRv379NGnSJF2+fFn169dX5syZdenSJW3dulVt2rRR165dVaJECRUpUkQff/yxQkNDlSVLFm3atOmJk7+k3tL46NGjGjRokHLkyKHg4GCH17ly5coqXLiwcuXK5bQnyVdffSVJDssGDx6s/fv32w2XaN++vb755hv16NFDb775pry9vbVgwQLlzp3bNhbdavv27Tp58qSk+7/MnDp1Sp9//rmk+6+5tZfMpUuXVK9ePbVo0ULjx49P6tPz2OrVq6ctW7Y4dIkuX768li5dqs8//1xFixZVrly5FBwcrLfeekvr1q1T9+7d1alTJ2XPnl3ffvutLl26pOnTp9sS0aRe7yktXbp06t27t0aNGqUuXbqocePGunz5slavXp2kW34nZvfu3cqYMaNDUuLs2nAmQ4YM6tOnjz766CP16dNHzz//vA4ePKj//e9/6t+/v91Q0cWLF+uzzz7TwoULFRQUZLef9evXKy4uLsEk3lmvCevcJxUqVHB63QN4tpA/kT8lVUrnT5LUr18/ZciQQQEBAcqdO7dOnz6tFStWKEOGDA43WknsM/L7779XunTp1KhRI6cxLV68WFu3blWdOnVUoEABXbt2TatXr9aVK1c0YcIEu8mv9+3bp86dO6tXr17q3bt3kp+fx5E+fXqFhIRoz549th99rBK6tvr166fdu3erffv2at++vby8vLR8+XLFxMTo/ffft22f1DwrpeXJk0edO3fWvHnz1LNnTz3//PM6deqUdu7cqZw5cz72fFDS/fypQIECKleunF27dR6xR012nj9/fnXu3Flz585VXFycKlSooK1bt+rgwYOaOHGi3XBFZ9d79+7d9f7776tNmzZq06aNMmTIoHXr1un3339Xv3797G5g0LFjR/n7+6to0aK6fv26VqxYoaioKH3xxRdMe/AvQVEKTjVu3FglSpTQ7NmztXLlSt28eVM5cuRQUFCQevTokeBkfi+99JK++eYbeXh4OL37VKlSpbRq1Sp99tlnWrNmjW7evKlcuXKpXLlyevfddx8ZV4YMGdSuXTvt2rVLmzdvlmEYKlKkiC1ZS64MGTJo0aJFmjhxotasWaPIyEgVL15c48aNU8uWLW3reXp6aubMmZo2bZrWr1+v1atXq2DBgnaT7lkNGTJEw4cP15QpU3Tv3j21aNHiqSVV0v0PymLFimnBggWaMWOGpPsfFDVr1rQNI/Lx8dEXX3yh0aNHa9asWUqfPr0aNGigDh062N1h52k5ffq0YmNjFR4ermHDhjksHzdunMNEq48rS5YsWrRokcaOHauZM2fKYrEoKChIQ4cOdehSvnnzZq1Zs8b2/+PHj9vupJM/f35bUSoqKkrS/fHzrtCqVSt9/fXXOnTokF0x491339WVK1f05Zdf6s6dO6pWrZqCg4OVJ08eLVu2TJ988om+/vprRUdHy2w264svvrDr6ZPU6/1p6NixowzD0Pz5820TtM6cOVOjR49+osnnN27cqAYNGjxRQa1Dhw7y8fHRvHnztH37dj333HMaOnSow91+EvP9998rd+7c/GIHuDnyJ/KnlJSc/Kl+/fr6/vvvtWDBAkVGRipnzpxq0KCBevXqleR5FyMjI/Xjjz/qhRdesP1w8rDKlSvryJEjtus7Y8aMqlixosaMGWObrN8qNfKn3r176+rVq3YTiyd0bZUuXVqLFy/WpEmTNGvWLBmGoYoVK+qTTz6xu/aSmmc9DQMHDlSGDBn0zTffaM+ePfL399fcuXPVvn17p3e/SwqLxaJNmzapdevWT1TYGjhwoLJnz67l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88159NFH87d/+7fp6enJZz7zmXzsYx/L+vXrS07fXsYy10nygQ98IH/+53/e+Hrq1KllxG1bxxxzTD75yU9m7ty5qdfrue+++3Lttdfm3nvvzcknn2w9N8nB5jlp/7Wshmo+NVQx1E/FUEMVQ/1UDPVTcQqpoerjxK233lr/gz/4g7JjTGjz5s2rP/TQQ42va7Va/bzzzquvXbu2cWz37t310047rb5hw4YyIk4YvzrX9Xq9fv3119c/8pGPlJRoYhoYGKjPmzevvnHjxnq9/ov1e+qpp9YffPDBxvds3769Pm/evPrmzZtLSjkx/Opc1+v1+p/8yZ/Ub7rpphJTTUxnn312/Z577rGeW+zVea7X238tq6FaTw1VDPVTcdRQxVA/FUf9VJxm11DjZvtekvz4xz/O4sWL87u/+7v5xCc+keeff77sSBPac889l127dmXRokWNYz09PVmwYEE2b95cYrKJa+PGjTn33HNz0UUX5YYbbsjPfvazsiO1tT179iRJZsyYkSR58sknMzw8fMCaPvHEEzN79ux8//vfLyPihPGrc/2q+++/P+ecc04uueSSfP7zn8/LL79cRrwJYXR0NA888ED27duXhQsXWs8t8qvz/Kp2X8tqqGKpoYqlfmo+NVQx1E+tp34qTqtqqHGzfe+MM85If39/TjjhhOzatStf/vKXc8UVV+T+++/P9OnTy443Ie3atStJMnPmzAOOz5w5057bFjj//PPznve8J3PmzMmzzz6bL3zhC7nmmmvyD//wD7ZZ/BpqtVpuvvnmnHnmmZk3b16S5MUXX8xhhx2WI4444oDvnTlzZmO989a93lwnySWXXJLZs2dn1qxZ2bZtW2655Zb86Ec/ype+9KUS07afbdu25fLLL8/+/ftz+OGH58tf/nJOOumkbN261Xpuojea56T917IaqnhqqOKon5pPDVUM9VNrqZ+K0+oaatw0pZYsWdIYz58/PwsWLMiFF16YBx98MMuXLy8xGTTHxRdf3Bi/ehO4pUuXNt79461ZtWpVnnrqqdx9991lR5nw3miuP/jBDzbGfX196e3tzdVXX50dO3bk+OOPLzpm2zrhhBNy3333Zc+ePfmnf/qnXH/99bnrrrvKjjXhvNE8n3TSSW2/ltVQTGTqp+ZTQxVD/dRa6qfitLqGGlfb9/67I444Im9729uyY8eOsqNMWL29vUmSgYGBA44PDAzk6KOPLiNSRznuuONy1FFH5cc//nHZUdrOjTfemEceeSTr1q3LMccc0zh+9NFHZ3h4OLt37z7g+wcGBhrrnbfmjeb69SxYsCBJrOm3aNKkSZk7d25OO+20fOITn8j8+fPzjW98w3pusjea59fT7mtZDdV6aqjyqJ8OjRqqGOqn1lM/FafVNdS4bUrt3bs3zz77rIXTQnPmzElvb28ee+yxxrHBwcE8/vjjB+wRpTV+8pOf5KWXXrLG34J6vZ4bb7wxDz30UNatW5fjjjvugMdPO+20HHbYYQes6aeffjrPP/983vnOdxactr0dbK5fz9atW5PEmj5EtVotQ0ND1nOLvTrPr6fd17IaqvXUUOVRP/161FDFUD+VR/1UnGbXUONm+95f//Vf58ILL8zs2bOzc+fOfPGLX0ylUskll1xSdrS2tnfv3gPeKX3uueeydevWzJgxI7Nnz85VV12V22+/PXPnzm18nPGsWbOydOnSElO3pzeb6xkzZuRLX/pSLrroohx99NF59tln8zd/8zeZO3duzj///BJTt5dVq1Zlw4YNue222zJt2rTGvvCenp5MmTIlPT09ueyyy7J69erMmDEj06dPz0033ZSFCxf6R+gtOthc79ixI/fff3+WLFmSI488Mtu2bUt/f3/OPvvszJ8/v+T07ePzn/983v3ud+fYY4/N3r17s2HDhmzcuDFf+9rXrOcmerN5nghrWQ3VGmqoYqifiqGGKob6qRjqp+IUUUN11ev1egtfw5h9/OMfz6ZNm/LSSy/lN37jN3LWWWfl4x//uH21h+hf//Vfc9VVV73m+KWXXprVq1enXq/n1ltvzT333JPdu3fnrLPOyg033JATTjihhLTt7c3m+tOf/nSuvfba/PCHP8yePXsya9asnHfeeVm5cqXL/N+Cvr6+1z3e39+fZcuWJUn279+f1atX54EHHsjQ0FAWL16cG264wbtPb9HB5vqFF17Iddddl6eeeir79u3Lsccem6VLl+ajH/2oGyu/BX/1V3+V733ve9m5c2d6enrS19eXa665Juedd14S67lZ3myeJ8JaVkO1hhqqGOqnYqihiqF+Kob6qThF1FDjpikFAAAAQOcYt/eUAgAAAGDi0pQCAAAAoHCaUgAAAAAUTlMKAAAAgMJpSgEAAABQOE0pAAAAAAqnKQUAAABA4TSlAAAAACicphQAAAAAhdOUAgAAAKBwmlIAAAAAFE5TCgAAAIDC/X+ijSa/SK2rLwAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "def plot_counterfactual_by_context(data, name, other):\n", + "\n", + " grouped_data = data.groupby([\"wpr_lockdown_efficiency\", \"wpr_mask_efficiency\"])\n", + "\n", + " fig, axs = plt.subplots(1, 2, figsize=(12, 6))\n", + "\n", + " for (lockdown_efficiency, mask_efficiency), ax in zip(\n", + " grouped_data.groups.keys(), axs.flatten()\n", + " ):\n", + " data_subset = grouped_data.get_group((lockdown_efficiency, mask_efficiency))\n", + " mean_overshoot = data_subset[\"overshoot_int\"].mean().item()\n", + "\n", + " fixed = mask_efficiency if name == \"lockdown\" else lockdown_efficiency\n", + " ax.hist(data_subset[\"overshoot_int\"])\n", + " ax.set_title(\n", + " f\"{other} eff fixed: {fixed}\\nOvershoot mean: {mean_overshoot:.2f}, Pr(too high): {data_subset['os_too_high_int'].mean().item():.2f}\"\n", + " )\n", + " ax.set_xlim(5, 35)\n", + " ax.axvline(x=mean_overshoot, color=\"grey\", linestyle=\"--\")\n", + " ax.axvline(x=overshoot_threshold, color=\"red\", linestyle=\"-\")\n", + "\n", + " plt.suptitle(\n", + " f\"Counterfactual {name} by {other.lower()} efficiency contexts\",\n", + " fontsize=16,\n", + " y=1,\n", + " )\n", + " plt.tight_layout()\n", + " plt.show()\n", + "\n", + "\n", + "plot_counterfactual_by_context(counterfactual_lockdown, \"lockdown\", \"Mask\")\n", + "\n", + "plot_counterfactual_by_context(counterfactual_mask, \"mask\", \"Lockdown\")" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "sufficiency_table = get_table(\n", + " tr,\n", + " mwc,\n", + " antecedents,\n", + " witnesses,\n", + " consequents,\n", + " world=2,\n", + " others=[\"joint_efficiency\", \"overshoot\"],\n", + ")\n", + "\n", + "\n", + "factual_sufficiency = sufficiency_table[\n", + " (sufficiency_table[\"lockdown_int\"] == 1)\n", + " & (sufficiency_table[\"mask_int\"] == 1)\n", + " & (\n", + " sufficiency_table[\"wpr_lockdown_efficiency\"]\n", + " == 0 & (sufficiency_table[\"wpr_mask_efficiency\"] == 0)\n", + " )\n", + "]\n", + "\n", + "counterfactual_sufficiency_lockdown = sufficiency_table[\n", + " (sufficiency_table[\"lockdown_int\"] == 0)\n", + " & (sufficiency_table[\"mask_int\"] == 1)\n", + " & (sufficiency_table[\"wpr_lockdown_efficiency\"] == 0)\n", + "]\n", + "\n", + "counterfactual_sufficiency_mask = sufficiency_table[\n", + " (sufficiency_table[\"lockdown_int\"] == 1)\n", + " & (sufficiency_table[\"mask_int\"] == 0)\n", + " & (sufficiency_table[\"wpr_mask_efficiency\"] == 0)\n", + "]\n" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABasAAAIlCAYAAADbmqTaAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAACaXklEQVR4nOzdZ3gUZfv38d/ukoQeWpDe3VACJFQTkK5IUwGlSlFARSnqH6V43yKIBBCVKiIgvUqTIkUUEBVFEQQUkd6iEIKQhEDazvOCJ3OzJpRAkgmb7+c4OJi9dnbmnM3snjvnXHONzTAMQwAAAAAAAAAAWMhudQAAAAAAAAAAAFCsBgAAAAAAAABYjmI1AAAAAAAAAMByFKsBAAAAAAAAAJajWA0AAAAAAAAAsBzFagAAAAAAAACA5ShWAwAAAAAAAAAsR7EaAAAAAAAAAGA5itUAAAAAAAAAAMtRrAaQKv7+/po8ebLVYQAAcFsXLlzQgAEDVLduXfn7+2vOnDlWh3RPmjRpoiFDhqT7a+7UmTNn5O/vr1mzZt3V61euXCl/f3+dOXMmjSMDAGQ15PzMpUmTJnrhhResDgP3qWxWBwB4qpUrV2ro0KEpPtenTx8NGjQoTdZz7tw5LVu2TM2aNVOlSpXSZJkAAM9w6tQpzZw5U999953Onz8vLy8vOZ1OtWjRQh07dlT27NktjW/hwoXKkSOH2rVrly7LDw0N1Y4dO9SvXz8VKlRIAQEBabr8q1evaubMmapTp47q1q2bpssGACA1yPnkfMBTUKwG0tmAAQNUokQJtzan05lmyz9//rymTJmi4sWLU6wGAJi2bdumgQMHytvbW0888YScTqfi4+O1e/duvffeezpy5IjeeecdS2NcvHix8ufPn24Hrj/88IOaNm2qXr16pcvyr169qilTpqhfv34cuAIALEPOJ+cDnoRiNZDOGjRooKpVq1odBgAgCzl9+rReffVVFStWTHPnzlXhwoXN57p27aqTJ09q27Zt1gWYjhISEuRyueTt7a2IiAjlzZvX6pAAAEg35HxyPuBpGLMasMDZs2f19ttvq3nz5qpWrZrq1q2rAQMGpDhmY2RkpEaPHq0mTZooICBADRo00BtvvKGLFy/qxx9/1FNPPSVJGjp0qPz9/eXv76+VK1dKuvk4V926dVO3bt3Mx3FxcZo4caLatWunmjVrKjAwUF26dNEPP/yQTu8AACA9zZw5UzExMXr33XfdDlqTlC5dWj169JB0/UBv6tSpatasmQICAtSkSRN98MEHiouLc3vNze5Z8O9ckzQO8e7duxUaGqqHHnpIgYGBevnll3Xx4kW31x0+fFi7du0y89eNuSkyMlLvvvuuGjZsqICAAD3yyCP65JNP5HK5zHluHDN5zpw5atasmapWrapFixbJ399fhmFo4cKF5vIl6dKlSxo7dqzatGmjoKAg1ahRQ71799Yff/yRbNtiY2M1efJkNW/eXFWrVlX9+vXVr18/nTp1SmfOnFFwcLAkacqUKeY6kt6jf+faJEOGDFGTJk3c2mbNmqVOnTqpbt26qlatmtq1a6eNGzcme21aOX36tAYMGKA6deqoevXq6tChQ4qFjFtt/80YhqH//ve/CggI0ObNm832w4cPq3v37qpWrZoaNGigjz76yO1veaOFCxeqVatWCggIUP369TVixAhFRkaaz8+bN0+VKlVya/v000/l7++v0NBQsy0xMVFBQUF67733JLnvL0uXLjX3+fbt22vfvn13/P4BQGZCzifnJ/H399fIkSO1YcMGtWzZUtWqVVPHjh116NAhSdKSJUv0yCOPqGrVqurWrVuy+sPPP/+sAQMGqFGjRgoICFDDhg01evRoXbt2zW2+8PBwDR06VA0aNDBzdd++fW97D4pVq1apcuXKGjt2bJpsLzwXPauBdBYdHe2WqCVp//792rNnj1q1aqUiRYro7NmzWrx4sbp3767169crR44ckqQrV66oa9euOnr0qNq3b6/KlSvrn3/+0ddff61z586pfPnyGjBggCZNmqSOHTuqZs2akqQaNWqkOsbPPvtMrVu31tNPP60rV65o+fLl6t27tz777DOGFwGA+8zWrVtVsmTJO8oH//nPf7Rq1So1b95czz77rPbt26fp06fr6NGjmjp16l3HMGrUKOXNm1f9+vXT2bNnNXfuXI0cOVITJkyQJA0bNkzvvPOOcubMqRdffFGSVKhQIUnXL7V95plndO7cOXXq1ElFixbVnj179MEHHyg8PFxvvvmm27pWrlyp2NhYdejQQd7e3qpSpYrGjRunN954Q/Xq1dMTTzxhznv69Glt2bJFjz32mEqUKKELFy5o6dKleuaZZ7R+/Xo98MADkq4XOl944QXt3LlTrVq1Uvfu3XXlyhV99913+vPPPxUSEqK3335bb7/9th555BE98sgjkmQeIKfGvHnz1KRJE7Vp00bx8fFav369Bg4cqOnTp6tRo0apXt6tXLhwQZ06ddLVq1fVrVs35c+fX6tWrVLfvn01adIkcztut/2lSpVKtuzExEQNGzZMX3zxhaZMmWLGHh4eru7duysxMVHPP/+8cuTIoWXLlsnHxyfZMiZPnqwpU6YoJCREnTt31vHjx7V48WLt379fixcvlpeXl2rVqiWXy6Xdu3ercePGkq4fYNvtdv3888/msn7//XfFxMSodu3abutYt26drly5oo4dO8pms2nmzJnq37+/tmzZIi8vr7R6qwEgQ5Dzyfk3+vnnn/X111+rS5cukqRPPvlEL774onr37q1FixapS5cuunz5smbOnKlhw4Zp3rx55ms3btyoa9euqXPnzsqXL5/27dunBQsW6O+//9akSZPM+fr3768jR47omWeeUfHixXXx4kV99913+uuvv5INgZpk6dKlGj58uF544QW9+uqr97yd8HAGgHSxYsUKw+l0pvjv6tWryebfs2eP4XQ6jVWrVpltEydONJxOp7F58+Zk87tcLsMwDGPfvn2G0+k0VqxYkWyexo0bG4MHD07W/swzzxjPPPOM+TghIcGIjY11m+fy5ctGSEiIMXToULd2p9NpTJo06dYbDwCwTFRUlOF0Oo2+ffvedt6DBw8aTqfTePPNN93ax4wZYzidTmPnzp1m282+//+da5LyX8+ePc1cZRiGMXr0aKNSpUpGZGSk2daqVSu3fJRk6tSpRmBgoHH8+HG39vHjxxuVKlUywsLCDMMwjNOnTxtOp9OoUaOGERERkWw5TqfTGDFihFtbbGyskZiY6NZ2+vRpIyAgwJgyZYrZtnz5csPpdBqzZ89Ottyk7YqIiLjp+/LvXJtk8ODBRuPGjd3a/v27IC4uzmjdurXRvXt3t/ab5fVb+fdr3n33XcPpdBo//fST2RYdHW00adLEaNy4sfne3Mn2J73/M2fONOLj441XXnnFqFatmrFjxw63+ZPW+euvv5ptERERRs2aNQ2n02mcPn3abKtSpYrx3HPPuf2NFixYYDidTmP58uWGYRhGYmKiUaNGDWPcuHFmPHXq1DEGDBhgVKpUyYiOjjYMwzBmz55tVKxY0bh8+bJbvHXq1DEuXbpkLn/Lli2G0+k0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mjVLrVq1Up48ecy2PXv2aMqUKWrbtq3y5s1717FlhI0bN97Rdt6rjh07aty4cerfv79y5859V8v4+++/1bVrV+XJk0evvvqqYmJi9Omnn+rPP//UZ599Jm9v71u+ftCgQfr666/19NNPq0qVKjp37pwWLVqkjh07au3atSpevLgk6cUXX9RTTz3l9tqrV69q+PDhqlev3l3FDuDuka9Tlpp8vX37dr388suqU6eO/vvf/+rPP//UtGnTFBERoREjRtzxOq9cuaL33ntPOXPmTPH59957TzNnzlTz5s3VvXt3HT16VAsWLNCRI0c0a9asu95Wb29vjRo1StL13x6bNm3S2LFjtX//fn344Ye3fX18fLzmzZunnj17yuFwmO330761b98+t9jTg4+Pj5588knNmTNH3bp1u+vfBwcPHlTPnj1Vvnx5DRkyRH///bc+/fRTnThxQjNnzryjZdSrV09PPPGEW1vlypWTzTd58mRNnTpVzZs3V9u2bZWQkKA///xT586du6vYAdyb++l7NSNlxpw9bty4ZG0HDhzQvHnz7umYh5yddXK2y+XSs88+q6NHj6pz584qW7asTp48qUWLFunbb7/VF198kezYP6n+kiS936eMQLH6PuFyuRQfHy8fHx+rQ8FdmDRpkurWrevWFhAQoMGDB2vt2rV6+umnzfb3339fYWFhWrlypUqWLJmq9VSsWFHz5893a3vmmWf04osvav78+Ro4cKD5xbVw4UL5+flp3rx5ZkGyY8eOatGihVauXHlPxermzZurQIECkqTOnTurf//+2rx5s/bu3XvTXmNXr15Vjhw59Pvvv+uPP/6462E0MoPbFXjTSvPmzTVq1Cht3LgxWSH4Tn388ce6evWqVq5cqWLFikmSqlWrpmeffVarVq1Sx44db/rac+fOafPmzXruuec0ePBgs71WrVrq0aOHvvzyS3M/SunH2eeffy5JatOmzV3FDmRG5Ov7W2ry9bhx4+Tv769PP/1U2bJd/0mdK1cuTZ8+Xd27d1f58uXvaJ3Tpk1Trly5VLduXX311Vduz50/f15z5szRE0884XYAXKZMGb3zzjv6+uuv1aRJk7va1mzZsrkVLrt06aKnn35aX3zxhYYMGaIHHngg2WsMw1BsbKyyZ8+ubdu26eLFi2rRosVdrT8zyKjPaYsWLTRz5kz98MMPCg4OvqtlfPDBB8qbN6/mz59vHqSWKFFC//nPf/Ttt9+qfv36t11GmTJlkhWr/23v3r2aOnWqhgwZck+/BYH7ATn7/pbZcrakFL9jd+3aJZvNptatW6dm89yQs7NOzt67d6/279+vt956S127djXby5Ytq2HDhmnnzp165JFH3F5zY/3FUzAMyG1ERERo2LBhCgkJUdWqVfX4449r1apV5vPx8fGqU6eOhg4dmuy10dHRqlq1qsaOHWu2xcXFadKkSXrkkUcUEBCghg0baty4ccku30gaU2fNmjVq1aqVqlatqh07dkiS1q9fr3bt2ikoKEg1atRQmzZtNHfu3GTrj4uLU2hoqB566CEFBgbq5ZdfTvHS/oULF6pVq1YKCAhQ/fr1NWLEiBQvndmwYYPatWunatWqqW7duho0aJBbD4shQ4Zo4cKFZvxJ/24laXzeH3/80Vx2mzZt9OOPP0q6fmlPmzZtVLVqVbVr106///57smUcPXpUAwYMUJ06dcz5/p04Ll26pLFjx6pNmzbm+9a7d2/98ccfbvP9+OOP8vf31xdffKFp06apQYMGqlq1qnr06KGTJ0+6zXv16lUdPXr0joZL+HcSlaRmzZqZ8SeJjIzUypUr1aFDB5UsWVJxcXFpMl5S8eLFdfXqVcXHx5tt0dHR8vX1dSusZsuWTfnz53c7C50WHnroIUnSmTNnJF0fEqJ169Y6cOCAunbtqurVq+uDDz6QJG3ZskVeXl6qVauW+frJkyebB+lNmzY1962k5SUkJGjq1Klq1qyZAgIC1KRJE33wwQcpvnd3ur/fTFRUlIYMGaJatWqpZs2aGjp0aLLhWVIas/qPP/7QM888o2rVqqlBgwb66KOPtGLFCrftuNHPP/+sp556SlWrVlXTpk1THJ6lYMGC8vf3T7a/R0VF6ejRo4qKirrt9mzevFmNGjUyC9WSFBISojJlymjDhg23fG3S0C6FChVya/fz85N0+x8U69atU86cOdW0adPbxgncDvn6f8jX6Z+vjxw5oiNHjqhDhw7mQa90/eDRMAxt2rTptuuSpBMnTmjOnDkaOnSo23KS7N27VwkJCW6X7EpSy5YtJV3fx9KK3W5XnTp1JElnz56V9L+/+44dO8y/e9KlsVu2bFHx4sVVqlQpcxm327diYmI0ZswYNWzYUAEBAWrevLlmzZqVbKiy1OT1mzl37pxeeuklBQUF6aGHHtLYsWOVmJjoNk9K418m7eNVq1ZVs2bNtGTJEvMy25Rs2bJFrVu3VkBAgFq1aqVvvvkm2TwBAQHKly9fsv394sWLOnr06G2HeYuOjtb333+vxx9/3K031RNPPKGcOXPeNl/f6Nq1a4qNjb3p83PnzlWhQoXUvXt3GYZxx5csA6lBzv4fcrbn5OyUxMXFafPmzapdu7aKFClyR6+5E+Ts6zwxZycdYxcsWNCt/XbH2NHR0SkO/Xq/omf1LVy7dk3dunXTqVOn1LVrV5UoUUIbN27UkCFDFBkZqR49esjLy0vNmjXTl19+qREjRrgV/rZs2aK4uDjzgMLlcqlv377avXu3OnTooPLly+vPP//U3LlzdeLECX300Udu6//hhx+0YcMGde3aVfnz51fx4sX13Xff6bXXXlNwcLAGDRokSTp27Jh++eUX9ejRw+31o0aNUt68edWvXz+dPXtWc+fO1ciRIzVhwgRznsmTJ2vKlCkKCQlR586ddfz4cS1evFj79+/X4sWL5eXlJen6DSWGDh2qqlWr6rXXXlNERITmzZunX375RatXr1bevHnVsWNHnT9/Xt99912Kl7/czMmTJ/V///d/6tSpkzn20osvvqgRI0boww8/VOfOnSVJn3zyiV555RVt3LhRdvv18yyHDx9W586d9cADD6hPnz7mh//ll1/W5MmTzTNOp0+f1pYtW/TYY4+pRIkSunDhgpYuXapnnnlG69evT3YmcsaMGbLZbHruuecUHR2tmTNnatCgQfrss8/Mefbt26fu3burX79+d3XZzIULFyRJ+fPnN9t2796t2NhYlS5dWgMGDNCWLVvkcrkUGBio4cOHq1KlSne07GvXrikmJkYxMTH66aeftHLlSgUGBroVoevUqaMZM2ZowoQJatu2rWw2m9auXasDBw647SNp4dSpU5KkfPnymW2XLl1Snz591KpVKz3++OPml/GePXvkdDrNfU+SHnnkEZ04cULr1q3T0KFDzfcs6ezhf/7zH61atUrNmzfXs88+q3379mn69Ok6evSopk6dai7nTvf3W3nllVdUokQJvfbaa/r999/12WefqUCBAnr99ddv+ppz586Zn8/nn39eOXPmvOUQGydPntTAgQP11FNPqW3btlqxYoWGDBmiKlWq6MEHH3Sbt0qVKtqyZYtb25dffqmhQ4cqNDRU7dq1u2VcERERCggISPZctWrVUkzeNypVqpSKFCmi2bNnq2zZsqpcubLOnz+v9957TyVKlEhWXLnRxYsX9f3336tFixY3vYwOuFPka/J1RufrpAP7f48J+MADD6hIkSI6ePDgHS179OjRqlu3rho2bJjiwUvSgd6/D0yShgT77bff7nAr7szp06cluefr48eP6//+7//UsWNHdejQQWXLlpV0PV//+54Dt9q3DMNQ37599eOPP+qpp55SpUqVtGPHDo0bN07nzp3TsGHDzHnvNK/fTGJionr16qVq1arpjTfe0M6dO/Xpp5+qZMmS6tKly01f9/vvv6t3797y8/NT//795XK5NHXq1Jv2Vtq9e7c2b96sLl26KFeuXJo/f74GDBigrVu3uu0v0vXhNn755Re3toULF2rKlCmaN29eikWXJIcOHVJCQkKyfO3t7a1KlSrd8f62atUqLVq0SIZhqHz58urbt2+yq5t27typoKAgzZs3T9OmTdOlS5fk5+enF1980e1eIsDdImeTsz01Z6dk+/btioyM1OOPP35H86cGOdszc3ZAQIBy5sypiRMnytfXV+XKldPJkyf13nvvqWrVqgoJCUn2mqZNmyomJsbsCDZkyJBkHcruOwZuas6cOYbT6TQ+//xzsy0uLs7o2LGjERgYaERFRRmGYRg7duwwnE6n8fXXX7u9vk+fPkbTpk3Nx6tXrzYqVqxo/PTTT27zLV682HA6ncbu3bvNNqfTaVSsWNE4fPiw27yjRo0yatSoYSQkJNw07hUrVhhOp9Po2bOn4XK5zPbRo0cblSpVMiIjIw3DMIyIiAijSpUqxnPPPWckJiaa8y1YsMBwOp3G8uXLzW0ODg42WrdubVy7ds2cb+vWrYbT6TQmTpxoto0YMcJwOp03je3fGjdubDidTuOXX34x25Lez2rVqhlnz54125csWWI4nU7jhx9+MNt69OhhtG7d2oiNjTXbXC6X0bFjR+PRRx8122JjY9220TAM4/Tp00ZAQIAxZcoUs+2HH34wnE6n0aJFC7dlzp0713A6ncahQ4eSzTtp0qQ73t4bDRs2zKhUqZJx/Phxs2327NmG0+k06tSpYzz11FPGmjVrjIULFxohISFG7dq1jXPnzt3RsqdPn244nU7zX48ePYywsDC3ea5cuWIMHDjQ8Pf3N+erXr268eWX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5Zdf9PDDD6tYsWK6dOmSNm/erP3796tbt25mrwCHw6HnnntOEyZMUMeOHfXEE0/I5XJp+fLl+vvvv/Xee++5xd+tWzft2rVLhw4duuv3604lnZnetWuX6tevb7Yn7VsffvihWrZsKS8vLzVu3FgVK1ZU27ZttXTpUkVGRqp27drav3+/Vq1apWbNmpk3V7nT/T099O7dW2vWrNGzzz6rZ555Rjlz5tRnn32mokWL6tKlS3fdWyIiIkKHDh1KNtRGSvvGzbz44ovauHGjunfvru7duysmJkazZs2S0+lU+/btzfnOnTunli1bqm3bthozZoyk62OrP/jgg5o6darCwsJUvXp1nTx5UgsXLpSfn5+eeuqpZOtjCBCkB/I1+fpW0itfv/HGG+rbt6+ee+45tWrVSn/++acWLlyop59+2u1v/O/v5Bw5cqhZs2bJ1r1lyxbt378/2XOjRo1SXFycKlasqISEBK1bt0779u3TmDFjkg3HkHSJ6Ndff33nb9Bdatq0qT7//HMdP37cbczVm+1bTZo0Ud26dfXhhx/q7Nmz8vf313fffaevvvpKPXr0MC8rv9O8nh769eunb7/9Vp07d1bnzp3lcrm0YMECPfjgg24nnFPrwIEDunTpkpo2berWvnDhQk2ZMkXz5s277Q2bXn31VXXq1EndunVThw4d9Pfff2v27NmqX7++27i6Ke3vCxcu1JYtW9S4cWMVK1ZM58+f18qVKxUWFqZx48a59frr1KmTli9frpEjR5q9Oz///HOFhYVxg0WkCXI2OftW7vecnWTNmjUqXLjwLb/bydn3xlNzdtu2bfXpp5/qrbfe0u+//64HH3xQv/32m5YvX64HH3zQbZ9r3LixWrZsKafTKW9vb/3yyy9av369KlWqpI4dO971e5AZUKy+hezZs2v+/PkaP368Vq1apejoaJUtW/amBaAaNWqoaNGi+uuvv5Kd8ZWun6GdOnWq5syZo88//1xffvmlcuTIoRIlSqhbt24p3lzh3x5//HEtW7ZMixYtUmRkpPz8/NSiRQv179//pmNA3Ur//v1VoEABLViwQKGhofL19VWHDh302muvycvLy5yvXbt2yp49u2bMmKHx48crZ86catasmV5//XW3u8o++uij6tatm9avX681a9bIMIx0TaQVKlTQihUrNGXKFK1atUqXLl0y75z68ssv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tryW1/X+PDCYMltel0Mt8nrAbAOSJFu2bMm8efPyJ3/yJ7n66quzffv2okvqdy+++GJ27NiRuXPn9pwbPXp0Zs2alY0bNxZYWf9Yv359zjrrrJx77rlZunRpfv3rXxdd0hHbtWtXkmTs2LFJkmeeeSb79+8/aE6nTp2a5ubmPPXUU0WU2Gdef62/tW7dupx55pk5//zz88UvfjF79+4torw+09XVlQceeCB79uzJ7NmzSzunr7/O3yrbfF533XWZP3/+QfOXlPt3tb/J698oc14nMruenwfkdbnmMxkcmS2v+8dgy2x5La/rzWDIbHldrvmsRV4PmG1AZs6cmeXLl2fKlCnZsWNHbr311lxyySVZt25dRo0aVXR5/WbHjh1JkvHjxx90fvz48XW7X88bOeecc/Ke97wnkyZNyrZt2/KlL30pV1xxRf7pn/6pbm9H6+7uzg033JA5c+Zk+vTpSZKXX345Rx11VMaMGXPQ944fP75nvutRb9eaJOeff36am5szceLEPPfcc7npppvy85//PLfcckuB1R6e5557Lh/60Ieyb9++HH300bn11ltz0kkn5dlnny3VnL7RdSblms8keeCBB/Kzn/0s3/72t3/vsbL+rvY3eV3+vE5kdj0/D8jrcs3nYMlsed0/BmNmy2t5XU/KntnyWl4nhzevA6ZZPX/+/J7j1tbWzJo1KwsWLMhDDz2URYsWFVgZfeW8887rOf7tpvILFy7seSW4Hi1btizPP/987r333qJL6XdvdK0f/OAHe45bWlrS1NSUyy+/PFu3bs3b3va2Wpd5RKZMmZL77rsvu3btyve+971ce+21+frXv150WX3uja7zpJNOKtV8/vKXv8znPve5/MM//EPd7U84kMnrwUFm1y95XS6DIbPldf+R2eUnr+tb2TNbXsvrwzWgtgH5XWPGjMmJJ56YrVu3Fl1Kv2pqakqStLe3H3S+vb09EyZMKKKkmjnhhBNy7LHHZsuWLUWXcliuu+66PPbYY7n77rtz3HHH9ZyfMGFC9u/fn507dx70/e3t7T3zXW/e6Fp7M2vWrCSpy3kdOnRoJk+enBkzZuTqq69Oa2trvva1r5VuTt/oOntTz/O5adOmtLe358ILL8zJJ5+ck08+OevXr88999yTk08+uXTzWhR5Xf68TmR2vZDX5ZrPZHBktryuncGQ2fJaXteLwZDZ8lpeJ4c3rwO2Wb179+5s27atbv+hvlWTJk1KU1NTnnzyyZ5zHR0defrppw/a36aMXnrppbzyyit1N8fVajXXXXddHnnkkdx999054YQTDnp8xowZOeqoow6a0xdeeCHbt2/PaaedVuNqj8ybXWtvnn322SSpu3ntTXd3dzo7O0s1p7357XX2pp7n84//+I+zbt263HfffT3/zZgxI+9///t7jss8r7Uir8uf14nMHujk9eDI66ScmS2va2cwZLa8ltcD3WDObHn9G/U6n7XM6wGzDciNN96YBQsWpLm5OW1tbVm9enUqlUrOP//8oks7Yrt37z7o1esXX3wxzz77bMaOHZvm5uZcdtlluf322zN58uRMmjQpK1euzMSJE7Nw4cICqz50f+g6x44dm1tuuSXnnntuJkyYkG3btuULX/hCJk+enHPOOafAqg/dsmXLcv/99+e2227LyJEje/beGT16dIYPH57Ro0fnoosuyooVKzJ27NiMGjUq119/fWbPnl13T7xvdq1bt27NunXrMn/+/BxzzDF57rnnsnz58pxxxhlpbW0tuPpD88UvfjHvfOc7c/zxx2f37t25//77s379+nz1q18t1Zz+oess03wmyahRow7a+y1Jjj766BxzzDE958syr7Ukr+s/rxOZXbbMltfly+tk8GS2vO4/Zc1seS2v6/l5YLBktryW10cyrw3VarXaV4UfiY9//OPZsGFDXnnllYwbNy6nn356Pv7xj9fV/i1v5Mc//nEuu+yy3zt/wQUXZMWKFalWq1m1alXWrl2bnTt35vTTT8/SpUszZcqUAqo9fH/oOj/zmc/kyiuvzM9+9rPs2rUrEydOzNlnn50lS5bU3e1YLS0tvZ5fvnx5LrzwwiTJvn37smLFijzwwAPp7OzMvHnzsnTp0rp75ezNrvWXv/xlrrnmmjz//PPZs2dPjj/++CxcuDAf/ehH6+5DWz71qU/lRz/6Udra2jJ69Oi0tLTkiiuuyNlnn52kPHP6h66zTPP5Ri699NK0trbm7/7u75KUZ15rSV7Xf14nMrtsmS2vy5fXyeDObHndN8qa2fJaXtfz88BgyWx5La+PZF4HTLMaAAAAAIDBa8DuWQ0AAAAAwOChWQ0AAAAAQOE0qwEAAAAAKJxmNQAAAAAAhdOsBgAAAACgcJrVAAAAAAAUTrMaAAAAAIDCaVYDAAAAAFA4zWoAAAAAAAqnWQ0AAAAAQOE0qwEAAAAAKJxmNQAAAAAAhft/jGXwQVPF2fYAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, axs = plt.subplots(1, 3, figsize=(18, 6))\n", + "\n", + "factual_sufficiency_mean = factual_sufficiency[\"overshoot_int\"].mean().item()\n", + "axs[0].hist(factual_sufficiency[\"overshoot_int\"])\n", + "\n", + "axs[0].set_title((\n", + " f\"Factual\\n overshoot mean: {factual_sufficiency_mean:.2f}, Pr(too high): \"\n", + " f\"{factual_sufficiency['os_too_high_int'].mean().item():.2f}\"\n", + "))\n", + "axs[0].axvline(x=factual_sufficiency_mean, color=\"grey\", linestyle=\"--\")\n", + "\n", + "counterfactual_sufficiency_lockdown_mean = counterfactual_sufficiency_lockdown[\"overshoot_int\"].mean()\n", + "axs[1].hist(counterfactual_sufficiency_lockdown[\"overshoot_int\"])\n", + "axs[1].set_title((\n", + " f\"Counterfactual_lockdown\\n overshoot mean: {counterfactual_sufficiency_lockdown_mean:.2f}, \"\n", + " f\"Pr(too high): {counterfactual_lockdown['os_too_high_int'].mean():.2f}\"\n", + "))\n", + "axs[1].axvline(x=counterfactual_sufficiency_lockdown_mean, color=\"grey\", linestyle=\"--\")\n", + "\n", + "counterfactual_sufficiency_mask_mean = counterfactual_sufficiency_mask[\"overshoot_int\"].mean()\n", + "axs[2].hist(counterfactual_sufficiency_mask[\"overshoot_int\"])\n", + "axs[2].set_title((\n", + " f\"Counterfactual_mask\\n overshoot mean: {counterfactual_sufficiency_mask_mean:.2f}, \"\n", + " f\"Pr(too high): {counterfactual_mask['os_too_high_int'].mean():.2f}\"\n", + "))\n", + "axs[2].axvline(x=counterfactual_sufficiency_mask_mean, color=\"grey\", linestyle=\"--\")\n", + "\n", + "for i in range(3):\n", + " axs[i].set_xlim(5, 40)\n", + " axs[i].axvline(x=overshoot_threshold, color=\"red\", linestyle=\"-\")\n", + "\n", + "#plt.savefig(\"counterfactual_sir_search_sufficiency.png\")\n", + "\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
lockdown_obslockdown_intapr_lockdownmask_obsmask_intapr_masklockdown_efficiency_obslockdown_efficiency_intwpr_lockdown_efficiencymask_efficiency_obsmask_efficiency_intwpr_mask_efficiencyjoint_efficiency_obsjoint_efficiency_intovershoot_obsovershoot_intos_too_high_obsos_too_high_int
111.00.011.01.000.00.000.000.0010.70.0015.61640921.5985300.01.0
381.00.011.01.000.00.000.450.4500.70.4531.68021425.2103521.01.0
511.00.011.01.000.00.000.450.4500.70.4532.04195424.7607081.01.0
1041.00.011.01.000.00.000.000.0010.70.0030.14712917.7575171.00.0
1101.00.011.01.000.00.000.000.0010.70.0015.18748523.5354390.01.0
\n", + "
" + ], + "text/plain": [ + " lockdown_obs lockdown_int apr_lockdown mask_obs mask_int apr_mask \\\n", + "11 1.0 0.0 1 1.0 1.0 0 \n", + "38 1.0 0.0 1 1.0 1.0 0 \n", + "51 1.0 0.0 1 1.0 1.0 0 \n", + "104 1.0 0.0 1 1.0 1.0 0 \n", + "110 1.0 0.0 1 1.0 1.0 0 \n", + "\n", + " lockdown_efficiency_obs lockdown_efficiency_int \\\n", + "11 0.0 0.0 \n", + "38 0.0 0.0 \n", + "51 0.0 0.0 \n", + "104 0.0 0.0 \n", + "110 0.0 0.0 \n", + "\n", + " wpr_lockdown_efficiency mask_efficiency_obs mask_efficiency_int \\\n", + "11 0 0.00 0.00 \n", + "38 0 0.45 0.45 \n", + "51 0 0.45 0.45 \n", + "104 0 0.00 0.00 \n", + "110 0 0.00 0.00 \n", + "\n", + " wpr_mask_efficiency joint_efficiency_obs joint_efficiency_int \\\n", + "11 1 0.7 0.00 \n", + "38 0 0.7 0.45 \n", + "51 0 0.7 0.45 \n", + "104 1 0.7 0.00 \n", + "110 1 0.7 0.00 \n", + "\n", + " overshoot_obs overshoot_int os_too_high_obs os_too_high_int \n", + "11 15.616409 21.598530 0.0 1.0 \n", + "38 31.680214 25.210352 1.0 1.0 \n", + "51 32.041954 24.760708 1.0 1.0 \n", + "104 30.147129 17.757517 1.0 0.0 \n", + "110 15.187485 23.535439 0.0 1.0 " + ] + }, + "execution_count": 25, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\n", + "counterfactual_sufficiency_lockdown.head()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "chirho", + "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.10.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 75ddfaf13acaa752c8e67b7a2f7e70941ea6aa06 Mon Sep 17 00:00:00 2001 From: PoorvaGarg Date: Thu, 15 Aug 2024 15:24:11 -0400 Subject: [PATCH 43/53] reveresed accidental commit --- .../explainable_categorical_alternate.ipynb | 112 ++++++++---------- 1 file changed, 52 insertions(+), 60 deletions(-) diff --git a/docs/source/explainable_categorical_alternate.ipynb b/docs/source/explainable_categorical_alternate.ipynb index a9e6938b..d4990530 100644 --- a/docs/source/explainable_categorical_alternate.ipynb +++ b/docs/source/explainable_categorical_alternate.ipynb @@ -67,7 +67,7 @@ }, { "cell_type": "code", - "execution_count": 178, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -106,7 +106,7 @@ }, { "cell_type": "code", - "execution_count": 179, + "execution_count": 7, "metadata": {}, "outputs": [], "source": [ @@ -165,7 +165,7 @@ }, { "cell_type": "code", - "execution_count": 180, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -221,10 +221,10 @@ "\n" ], "text/plain": [ - "" + "" ] }, - "execution_count": 180, + "execution_count": 8, "metadata": {}, "output_type": "execute_result" } @@ -295,14 +295,14 @@ }, { "cell_type": "code", - "execution_count": 184, + "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.2989)\n" + "tensor(0.3023)\n" ] } ], @@ -329,26 +329,20 @@ }, { "cell_type": "code", - "execution_count": 187, + "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(5.7317e-06)\n", - "tensor(2988.9890)\n", - "tensor(5026.)\n", - "tensor(9.6378e-06)\n" + "tensor(0.6017)\n" ] } ], "source": [ - "mask_intervened = trace.nodes[\"__cause____antecedent_match_dropped\"][\"value\"] == 1\n", - "print(torch.sum(torch.exp(log_weights) * mask_intervened.squeeze())/torch.sum(mask_intervened.float()))\n", - "print(torch.sum(torch.exp(log_weights)))\n", - "print(mask_intervened.float().sum())\n", - "print(torch.sum(torch.exp(log_weights) * mask_intervened.squeeze())/torch.sum(torch.exp(log_weights)))" + "mask_intervened = trace.nodes[\"__cause____antecedent_match_dropped\"][\"value\"] == 0\n", + "print(torch.sum(torch.exp(log_weights) * mask_intervened.squeeze())/torch.sum(mask_intervened.float()))" ] }, { @@ -369,7 +363,7 @@ }, { "cell_type": "code", - "execution_count": 149, + "execution_count": 11, "metadata": {}, "outputs": [ { @@ -403,7 +397,7 @@ }, { "cell_type": "code", - "execution_count": 150, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -428,14 +422,14 @@ }, { "cell_type": "code", - "execution_count": 151, + "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(2.8435e-06)\n" + "tensor(2.8425e-06)\n" ] } ], @@ -459,14 +453,14 @@ }, { "cell_type": "code", - "execution_count": 152, + "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(2.8377e-06)\n" + "tensor(2.8358e-06)\n" ] } ], @@ -484,14 +478,14 @@ }, { "cell_type": "code", - "execution_count": 153, + "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.0754)\n" + "tensor(0.0718)\n" ] } ], @@ -522,14 +516,14 @@ }, { "cell_type": "code", - "execution_count": 154, + "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.2900)\n" + "tensor(0.2862)\n" ] } ], @@ -556,15 +550,14 @@ }, { "cell_type": "code", - "execution_count": 194, + "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(1.0000)\n", - "tensor(0.5258)\n" + "tensor(1.0000)\n" ] } ], @@ -581,8 +574,7 @@ "logp, trace, mwc, log_weights = importance_infer(num_samples=10000)(query)()\n", "\n", "mask_intervened = (trace.nodes[\"__cause____antecedent_match_dropped\"][\"value\"] == 0) & (trace.nodes[\"__cause____antecedent_lightning\"][\"value\"] == 0)\n", - "print(torch.sum(torch.exp(log_weights) * mask_intervened.squeeze())/torch.sum(mask_intervened.float()))\n", - "print(torch.sum(torch.exp(log_weights) * mask_intervened.squeeze())/torch.sum(torch.exp(log_weights)))" + "print(torch.sum(torch.exp(log_weights) * mask_intervened.squeeze())/torch.sum(mask_intervened.float()))" ] }, { @@ -603,7 +595,7 @@ }, { "cell_type": "code", - "execution_count": 160, + "execution_count": 19, "metadata": {}, "outputs": [ { @@ -668,7 +660,7 @@ "sally_hits\n", "\n", "\n", - "\n", + "\n", "prob_sally_hits->sally_hits\n", "\n", "\n", @@ -686,7 +678,7 @@ "bill_hits\n", "\n", "\n", - "\n", + "\n", "prob_bill_hits->bill_hits\n", "\n", "\n", @@ -704,7 +696,7 @@ "bottle_shatters\n", "\n", "\n", - "\n", + "\n", "prob_bottle_shatters_if_sally->bottle_shatters\n", "\n", "\n", @@ -722,19 +714,19 @@ "\n", "\n", "\n", - "\n", + "\n", "sally_throws->sally_hits\n", "\n", "\n", "\n", "\n", - "\n", + "\n", "bill_throws->bill_hits\n", "\n", "\n", "\n", "\n", - "\n", + "\n", "sally_hits->bill_hits\n", "\n", "\n", @@ -746,7 +738,7 @@ "\n", "\n", "\n", - "\n", + "\n", "bill_hits->bottle_shatters\n", "\n", "\n", @@ -755,10 +747,10 @@ "\n" ], "text/plain": [ - "" + "" ] }, - "execution_count": 160, + "execution_count": 19, "metadata": {}, "output_type": "execute_result" } @@ -836,7 +828,7 @@ }, { "cell_type": "code", - "execution_count": 161, + "execution_count": 20, "metadata": {}, "outputs": [ { @@ -872,7 +864,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 21, "metadata": {}, "outputs": [ { @@ -907,14 +899,14 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.2508)\n" + "tensor(0.2494)\n" ] } ], @@ -943,14 +935,14 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 23, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.5009)\n" + "tensor(0.5014)\n" ] } ], @@ -970,7 +962,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 24, "metadata": {}, "outputs": [ { @@ -1006,7 +998,7 @@ }, { "cell_type": "code", - "execution_count": 137, + "execution_count": 25, "metadata": {}, "outputs": [ { @@ -1035,14 +1027,14 @@ }, { "cell_type": "code", - "execution_count": 173, + "execution_count": 26, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.1550)\n" + "tensor(0.1553)\n" ] } ], @@ -1086,14 +1078,14 @@ }, { "cell_type": "code", - "execution_count": 174, + "execution_count": 27, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.2194)\n" + "tensor(0.2195)\n" ] } ], @@ -1111,14 +1103,14 @@ }, { "cell_type": "code", - "execution_count": 175, + "execution_count": 28, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.0647)\n" + "tensor(0.0667)\n" ] } ], @@ -1136,14 +1128,14 @@ }, { "cell_type": "code", - "execution_count": 176, + "execution_count": 29, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.2767)\n" + "tensor(0.2777)\n" ] } ], @@ -1154,14 +1146,14 @@ }, { "cell_type": "code", - "execution_count": 177, + "execution_count": 30, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.1999)\n" + "tensor(0.2014)\n" ] } ], From 2a4b3a97172b048de7185b28d82382c9866b6247 Mon Sep 17 00:00:00 2001 From: rfl-urbaniak Date: Thu, 15 Aug 2024 19:04:23 -0400 Subject: [PATCH 44/53] modifed descriptions and arguments a bit --- .../explainable_categorical_alternate.ipynb | 119 +++++++++++------- 1 file changed, 74 insertions(+), 45 deletions(-) diff --git a/docs/source/explainable_categorical_alternate.ipynb b/docs/source/explainable_categorical_alternate.ipynb index d4990530..516cea41 100644 --- a/docs/source/explainable_categorical_alternate.ipynb +++ b/docs/source/explainable_categorical_alternate.ipynb @@ -67,7 +67,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 1, "metadata": {}, "outputs": [ { @@ -106,7 +106,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -160,12 +160,12 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Let's start with a very simple model, in which a forest fire can be caused by any of the two things: a match being dropped (`match_dropped`), or a lightning strike (`lightning`), and either of these factors alone is already deterministically sufficient for the `forest_fire` to occur. A match being dropped is more likely than a lightning strike (we use fairly large probabilities for the sake of example transparency). For illustration, we also include a causally irrelevant site representing whether a ChiRho developer smiles, `smile`." + "Let's start with a very simple model, in which a forest fire can be caused by any of the two things: a match being dropped (`match_dropped`), or a lightning strike (`lightning`), and either of these factors alone is already deterministically sufficient for the `forest_fire` to occur. A match being dropped is more likely than a lightning strike (we use fairly large probabilities for the sake of example transparency). For illustration, we also include a causally irrelevant site representing whether a ChiRho developer smiles, `smile`. A but-for analysis assigns causal role to a node if it having a different value would result in a different outcome. We will implement this concept and reflect on it in this section." ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -174,57 +174,88 @@ "\n", "\n", - "\n", - "\n", - "\n", - "\n", - "\n", + "\n", + "\n", + "\n", + "%3\n", + "\n", "\n", "\n", "u_match_dropped\n", - "\n", - "u_match_dropped\n", + "\n", + "u_match_dropped\n", "\n", "\n", "\n", "match_dropped\n", - "\n", - "match_dropped\n", + "\n", + "match_dropped\n", + "\n", + "\n", + "\n", + "u_match_dropped->match_dropped\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "forest_fire\n", + "\n", + "forest_fire\n", + "\n", + "\n", + "\n", + "u_match_dropped->forest_fire\n", + "\n", + "\n", "\n", "\n", "\n", "u_lightning\n", - "\n", - "u_lightning\n", + "\n", + "u_lightning\n", "\n", "\n", "\n", "lightning\n", - "\n", - "lightning\n", + "\n", + "lightning\n", + "\n", + "\n", + "\n", + "u_lightning->lightning\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "u_lightning->forest_fire\n", + "\n", + "\n", "\n", "\n", "\n", "smile\n", - "\n", - "smile\n", + "\n", + "smile\n", "\n", - "\n", - "\n", - "forest_fire\n", - "\n", - "forest_fire\n", + "\n", + "\n", + "smile->forest_fire\n", + "\n", + "\n", "\n", "\n", "\n" ], "text/plain": [ - "" + "" ] }, - "execution_count": 8, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -288,21 +319,21 @@ "source": [ "**Causal Query 1** What is the probability that dropping a match has a causal impact on the forest fire?\n", "\n", - "To answer the above question, we compute the probability of both forest fire not occurring if we intervene on the match to not be dropped, and forest fire occurring if we intervene on the match to be dropped. i.e. $P(f'_{m'}, f_m)$. this computation can be carried out using `SearchForExplanation`.\n", + "To answer the above question, we compute the probability of both the forest fire not occurring if we intervene on the match to not be dropped (the \"but-for\" part), and the forest fire occurring if we intervene on the match to be dropped, that is, $P(f'_{m'}, f_m)$. This computation can be carried out using `SearchForExplanation`.\n", "\n", - "The potential cause (`antecedent`) we're considering is `match_dropped=1`, we contrast it with what would happen if we intervened on it to not happen (`alternatives`). We are interested in whether an outcome variable `forest_fire` (`consequent`) has value 1 under these two interventions. Note that these two inteventions correspond to `match_dropped=1` being a sufficient and necessary cause for `forest_fire=1`. In this simple case, the notion corresponds to Pearl's notion of probability of necessity and sufficiency - although what `SearchForExplanation` can do goes beyond it, for instance, by allowing for the estimands to be context-sensitive, as we will illustrate later in this notebook." + "The potential cause (`antecedent`) we're considering is `match_dropped=1`. We inspect what would happen if we intervened on it to not happen (`alternatives`), and what happens if we intervene on it to happen, do(`match_dropped=1`). We are interested in whether (and with what probability) an outcome variable `forest_fire` (`consequent`) has both value 0 under the first (this is the \"but-for\" part) and value 1 under the second intervention. Note that these two interventions correspond to `match_dropped=1` being a necessary and sufficient cause for `forest_fire=1`. In this simple case, the notion corresponds to Pearl's notion of probability of necessity and sufficiency - although what `SearchForExplanation` can do goes beyond it, for instance, by allowing for the estimands to be context-sensitive, as we will illustrate later in this notebook." ] }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.3023)\n" + "tensor(0.3030)\n" ] } ], @@ -349,7 +380,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Note that the result above matches our intuition. `match_dropped` has a causal effect on `forest_fire` only when `lightning` is not there and the corresponding probability is $0.6$." + "Note that the result above matches our intuition. `match_dropped` has a causal effect on `forest_fire` only when `lightning` is not there and the probability of that happening is $0.6$." ] }, { @@ -363,7 +394,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -397,7 +428,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -422,14 +453,14 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(2.8425e-06)\n" + "tensor(2.8435e-06)\n" ] } ], @@ -453,14 +484,14 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(2.8358e-06)\n" + "tensor(2.8719e-06)\n" ] } ], @@ -478,14 +509,14 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.0718)\n" + "tensor(0.0701)\n" ] } ], @@ -536,21 +567,19 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "This again matches our intuition, since the probability of `match_dropped=1` and `lightning=1` is $0.28$ where the set $\\{m, l\\}$ is a cause. Now, we move to context-sensitive causal explanations.\n", - "\n", - "TODO_R: this needs to be better explained, something's off with this argument." + "This again matches our intuition. Conditioning brings the factivity requirement into the picture, and so now what we are estimating is the probability of `m` and `l` in fact happening *and* having a causal impact on the forest fire. Since in general, the two-element set has deterministically complete control over the forest fire, the only non-trivial probability is the one brought in by the factivity requirement - the probability of both `match_dropped=1` and `lightning=1`, which is $0.28$." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "One can also compute $P(f_{m, l}, f'_{m', l'} | m, l)$ as follows by subselecting the samples with `match_dropped=1` and `lightning=1`. Since {`match_dropped=1`, `lightning=1`} always leads to `forest_fire=1` and {`match_dropped=0`, `lightning=0`} always leads to `forest_fire=0`, we have $P(f_{m, l}, f'_{m', l'} | m, l) = 1$ that we get as a result of the following code snippet." + "One might also be interested in computing the causal impact of the set without factoring in the factivity requirement, so that the result mirrors the intuition that the two-element set has complete control over the outcome. To get to this point, one can compute $P(f_{m, l}, f'_{m', l'} | m, l)$ as follows by subselecting the samples with `match_dropped=1` and `lightning=1`. Since {`match_dropped=1`, `lightning=1`} always leads to `forest_fire=1` and {`match_dropped=0`, `lightning=0`} always leads to `forest_fire=0`, we have $P(f_{m, l}, f'_{m', l'} | m, l) = 1$, which we get as a result of the following code snippet." ] }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 10, "metadata": {}, "outputs": [ { From 78c9aaef135fa51514a7690f1af80457ec1bdb56 Mon Sep 17 00:00:00 2001 From: PoorvaGarg Date: Fri, 16 Aug 2024 10:07:20 -0400 Subject: [PATCH 45/53] trying out things --- docs/source/counterfactual_sir.png | Bin 126305 -> 127306 bytes .../explainable_categorical_alternate.ipynb | 64 ++-- docs/source/explainable_sir.ipynb | 310 +++++++++++++++--- 3 files changed, 307 insertions(+), 67 deletions(-) diff --git a/docs/source/counterfactual_sir.png b/docs/source/counterfactual_sir.png index 5644276c6017bf1d9aa7ebbaa87c283e6e76a5d1..43fa84b439d792c2ad4aebd28cb8b74e0afbad69 100644 GIT binary patch literal 127306 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 QS{IS5y^) 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

}v+; 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 ty!C%QK!1+JjahI0|DwYG$w|A|dPG+o literal 126305 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%0Aubpk zN4hfMzRV*V_7vKc5#VbKwzWQ(|Gtv!dFs#Oc#wNAwoC)|w+T>H!5bTPBxl6l2U@br z{I6rtATk$~d+uIFz$7uRJ%sv!Cxk!Q`3s;Pg1`4ZVA{#6#tjxe%jvpS==o;!$QuLw z0YLXRH{f&}KD5G@y^Bpi5P6Q6>@=aQUHzFoAUy+6>MPXD!NDR9w`SnJ$O@49e@YM8 z4yYZ2r_2amF;W$w=K_OU(vzdVNVcTjw@u-NuYV?}(H8)2KtZ8|Pcl!;cI>V4+%59v zsRf8J0<|Md5d0lLuU_iv&+b7ZFJiX>g$6_^VD?d*0=`o-bjp*IloI39cfb5%J_1x( z>hdq)$KLTRug;{yzj5o9l7J5YUL*~i^A^8(Ge3NN9=N614DMbkK66133OSvyTBc^y zs{-!lajFeCw3kCeL*kn0ZOFz5=fqe44AMDRli*={X#8($OVByFvp-e7At2N@Oy6}Bj?nAI8-d$SP-6_pGQzIgfrZPzusV3 zf>$XgSPd*{G=2l95lEtN4AY0ZeP^)tZvYT$Bq^SXYZkU8!}z%jwkvU9O`l|DCc}W$ z;5u@l0&D*nmY>Q-bqn0?-i~)XLc{4N4Blc89DT520!jhfefEyvb|1B%;y5kSzI6%T0puABnEUDdr)>#K=2c+2n z`ZnqvXxOU$Y{`;J1>%L`;T&MDcY(zP`~&zfH1q<_3>k3p`3@1c4)9kea@6~2nV4Px zZUiw$eoM$t+*zERn|mPdA21%fJ*yt$@*085q`JI#C;&kBN?U z{b#l??@q=g!Sf#!w?W52fzSHll_M#_=cCq)2+=@5hg>Cthb9s^um=TlXS&E$beIsw2#WL^8rc;1v2&=(NSG)~(s zn4<6V^z_77sSA85dJYfg7|~X4&jPmKQgO}2C}bT=f_jg^lSMK68604rTZnWoOTj=m z2uz$ykB0d3i^ACylcCf2W-6Uh?mNEqw2aPhmT)lM}v#mZR!My>R_&JhSynOGcF7Wv#VX||8!d*T}}gzT?T&o4d}@f zKRf~mDte7xL}X+#Ai|*spT|O$`gQnFFsOx zxMCwnI)aeY2Y_gV5R!ZZF(2ZA0zR(=ChG#AOd=~8cpmMLzz+2$02BAeX zWgf&FPavQIl-#k>1ptmr!eug;bPJ$^NSo$Euek2Z1`4gD=&V&}A+S#Ic8nMy=7vELkIFA`D zvfMb}hS200pinEi#9-DN0)HLG($(rZ8f`%?1Gx?hP`zG>Zk;~Nsg^-qXV*I(xVa7B z&)R^{i3MgemDorj?C_n$AeJONb!8ZqEVGrvhI#R0IK zPyMa=k87v?=eneC-!_I>9hn3Xl*_yd(i&(7gjM4&p>xe3Ljb&~R}i8u?K28H5uknq zTtt4yANLSn46xM1m?;Fi1STQ+L(iXI*vuzuL?M|A0njZRcl-B1?X1Ra(0F}lW4LTW z0NvLIU_7TrwqUe52iX?HY7#(s?ScRw>0}Ty68zIAFku%EsTuHRm+(kV`v9x&J6sGt z<`{7dtpNoT5WUWzrv&6TF`%h2?ETL#G$U}rh2n%ep`Q=&jgoI$b*xQ7wY5+q0?^OVkf%w7|w}$0Ea?N-INE@Su zpAJHTbg&sUsw#@6M!);^Lt|noVkuCJ5dh;`1ZQ(J81JqhZeOszbd@1bY5AoCE+ zBi})JfhJhwk-cis^Wpp?(Z3%|LEaben!-W#F@zL_kduH{7fb1L3xI`Bp&_;k_}KD@C9-&rrE*Qk)d%AUg8NCYf#w(IDvZMbtK=FS zG^p{s4g~;>ym{_i810jxH4g#3PTT+)$G)vXz3Bg99DDJXSIlkWEF`lrU>%FBhg5kJ zZ0w+)T|+}W5>tR+bIj_@=hKK%39tbc09*q>ACgy3rL@7vfBH2q!T3=-ib5lBUx_0B z5`wRy$q!^>BPBD}OCYHNSYZ<+?ud`5l3)eaEhMnQoP|IP5flMusPRKsKNOk;(!@5e z6@%;t-6Ftnx&J)A>v#`j8b~h+40V-+K~*RrfOh-^Fp&_g9!v#SJK{xkXY2v^*Z_|T z@w_0MNBCb^MaAuXX5_|0jx_jeEeMz|+^I~f4AUh>!ze@G{9|N&MHror-^_|10P^fa z2HI?^B7i1PnEL`@dWESCvCojvL5sVQ$Am2Qry8qoS1}qPL0E8mn3jkdZw~vS! zEtDbbKg19GCtWQo`$rfRa>U(KO~QGB7Y&jK&aRakdzW*>}Hw>J)!vV+H^N|N%bUpX7H0K zkc`f`PXG@cp@Lz|DNmz$2*GOuqBjHRak^yCKoX{se+TCCudW01Es%uH59FtxKrDth zX}kuXg2DSh4Z!$4Z^Xq%BsHLT9&2cUhra>C57O!m{xT?CR>OQ+o+rJyQby)b~CQxLEf+8?;sTdKXybKX8!O6h;%W9Gx#kK%@=b9aZm)`*I@YpK_xU;?% zCYU7=76m$N7ifbp;?QF42K8O1!R^=ty=Q*A9DX_l#!-Z4ZD?q~un$fh8(aX~kGw#T z*@9U6IS9L!>WyIHcpV<@kC4m2#{AUbDsSV`hZRcU&)QdH4C+Z;9X$Kp7|N-6*$6 zpdcdEF+@SUMZ7Ra1*Ze}HWBg#cde-}=2vH+PxziCaD%$(2@FDRLVbpK^#=HDey>j& z8XiG_y8&r6GN?gJ`BvDO6FACXLMyeF1SD7?usWR z_FeKrOpf0pFRsqb&Ju!geG{V5@0~a+3uLcTXSjaP*Z==t`iF>STeqT6Hs@N&)qd>-o6 z(oo_BlrY~hA|Hy?n7MdskYZwd;O5<(eGyC%iHcBh8lIKgVrn!|$yLt9_yQsHauUS6 zP!m9+mP6O+{2No~nL?1EIr#+QdvgFACoS)^zF|R3ZuA#H2ZhwKngJdFCbaZhZO%laNvN7jxH7B1Ek8cH*eM| z(L#YZeFn-#yg$dDnjc4KN)VLTCfPg%y$mv7{dq@1YD@y5Rs(bne(=HO=vUD|wu?Mw z|EMd$zXfbqs8kd}aXd$-glKwt+6}xPNRuIvp8#-Hs0|_m*YaRKUr{r1Gi|_ZfsH{K z4dA*9JDgGGzW$uM*vOBSGJqa@}@$jMuvM)U$wwz2H%+mOFMC?1CC zfIMPN5|&pS?zXqK)}g`$2#o9)=Uo$^u;#QjrcM52Z+ji3@*ZA-KW1mAAkA$8I~4{4 zvN|q^gYiO}{g8|j27iQ&=LaotJ_dNf$c}&_RH%q|!_BEYp{<1=8>u6a#S9uKay_ED zEaoh@WYPSEN{^s6JAtHm5LhD=FY*caIM|}mUcNH_3r)j~u80c+_>{PIV#RR?q z#8`*XM0xh%W6-FgiN$Se_+cTihk>Sz@YioaddU2E_GFG;1?BTg@Flm7NZ<(swJ>{- zptt}bwIMe+$H74eHASI3gK8pi!kLe2amX5m>g&k(38^N_wMRo!>OpA6E#fvtaA-ha zqlpH3!t!W|jTuNhy$gFCbtTzdi0>w@|O{AJm&4?*UGVAFKOz=pHsWz%Rr!_V-je9#3ThoY9& zX|baN$79-bIqLMNR_WtFYB|{Ue>UCi)w*i05qhz*u_30c8P*IX-v`4~7h*)}WmcieS+?i|wD5?_h zTM7K8)D3FAy$(hGf|&%VCj;7GX8dip4N*phMlL;s?U&p(?xVp0X)ED^&F#EYIFAzm zNsw(}Yh?FlGfcyK0#^zt4DS)K!M? z!5foDe`&!|voKyIh-O5P2uK`t?7=p*b9ci2;(vgcBn55=g;u}UYhX$|Zd+hD15Hp) z!ajH|`=1ah+`Y^7$8{6lJhC%jDS4l(fvZH$JmkoRVc<5*w>7&z7!IqQp${NQEaX(( zV3It5FdIp`3rxOHqEE&k!Y7db??VU$h8}jPxm`oGmy6+41%gf$s*%FhUcG)y%%7OkKTp z>IAD(NN8v;_5@Jek(~k41(pl+FYq2vKKOUH^T|?z@0J0SB6AFXnO3mKqFb+RfF*G{v}XwF@l-|a`8en zAak9HmKGlag%&>WwLFC~G3C)aP#p05UMFBbirU@Xm1f>XZ3ygTO;G(pMnK>B$4D*% z;l#(kwlQ$N<4)KH5ca1)Qq}~^-vzK}$8A^xf=~ZSiZDuLVs436Qqw{$B&*G5D25dev3?WEfCx1p2*Zy!}ZP#_Jn(tTJX*nu{fK1l(MBpFg4;1yp)PG1=M8DZFh>?Ppy zf!k7MI%G{80NKTcJYIUB+pKsR3LPydDum560fB+ZP*VgTxzFHVs6YOPD(siX8oc8a z=psAN(oV2H*#+$fA7p0r=a(fR?R4wW;XM7~v(a{MP2*`}5cf8qSqIvf%H;n~*hK&V z6WQm}Qp!)+LqO_;v|WC12X1kr#SGfoHKC%CfoOHyXCm$h<`!Tfvr~Wl17R2W7cxd6 z4D4)xiI8UG_Kn-xKmhDmuExmOr4y2qZ)eTJe*lpyL1=UG69uqeK}3P=y*o#Xk*nK; zPTdGTRG62Lb~Y5kVip#b6s3%L26nKK5xZ1Xe_fXhkB$yPh9>ktK#TUfvv<`6trsAV zGGxBp5c8uoQM7&!HK@GZKbQz1e&NpO!@&;3T~~!E7>#Y^dc0^Pf+@;if6vA0o}64y zett4a3jvj`MD7EHv$If-#3y59|0SA~4|$a6CoH18$DOyn37{eZvR!w z3h7O2YpaB$v0AnUX;M;>se9W4d!D2a%S}S|CtYz!Knp^+vB&dq3j?|D#Dc4ujZP%$ z`CofSiV|5QjlQu~j*ZeEmRBNvV9qd9?Yd*b^G{%Z`2Eb$G438FP_UfA3NJ0+rwzYJ zubcZTSC9?+%a<<%L4MycpT*O80uVBo<)vyuVv1CiIuzXsXm`@vz5=ov%gjRr;o5DtyO zn#o@2)YN@D#`LnVURYEmMPVe&Y=;y35rNkVJiNVY25ZY`WOo>LsxQPFp9e)T+Ajca z!+X15$Nh1Qjr~y|=C^%bNYy0QvS<=t=Q0yJfzJW1_lTBb&3a+Rlkgq`L5=K^d-Y1P zvcZF=AH^OV98exH0iO6JTf7?4a{z66q4%M`UoBki4uubwlcb$05h6Jckc61A9 zdAgGf1!0HAacCTum<$y>S~^e=(}gc6AoDy!z|2tWY2-F}0INB)SiMgyFC zi0QrwG4c#}W*T5q@A7tF6ujomba)PEOA4CFM2-%Ac^{ocJrBkJlybXkLn4aw>kx$z zK_7xVWUu$jM>~}9d+T~eP~$~xRh0|D+Mz5=muh*D(o#}q|BqTPP^fH3jD8I2h7}Dw zFyio{$r(cM<=UNnvP6UUzX!h*Q3eWiSE!qCT{TdL$-M5g|LE#g<$718>+auMdE79- zMZ??;;fv-66lm4y?U|Jfimk!)t5NbNKef>BtLr+<$p$ zM>RWl2IC&8z=LjSV_%IOI_d`@l*vF2LL@p&qg2BMH3L&2MzVb0YTR3O zs7wp9!*}FmFgyv8_&tFSyKp!8 zyYC?e0YMEo0u(Y|ErON@78%fj=b|Y{Zg!yZ&;^pU^RI5$O<|xgztaE09^xmoCuxEb zX{B*m?7j2rH#RnmurEts&<-`i*U;-|A)mzR{DqbT57$x-ao17RPZA7RD=Uv+F2>*M z4S|vl*g*&(KZAkcK9s?NpFeMciP#T1?82+NTLQ2Ih@wR|2)PQO23flg%SnW=$k&9n zxj^N=e$@qK2w)QRKBH}*fpRpYOoot2N!0@0y(w_}1<}$U_}L+*XWM`vCkZNoXbS_B zL7u|*+y{vgtk+iz+M@v+CiA*qo=JJ=3XZ=7N`z={#9lAnE5_?Tk5dZ>9&HX* zyY4*-(08YLu&6(Lmj3C5CB*#UDmors%VXrKo?^i(mmshiAiT-hLa6omL)~{ckLO%O@)%%-YU3#7;{HIS9 zJ(}9XRoe;>!w*Ad1U_qW*t6+k+4pB%za^;!1+U-P*2I9DD;9k)Y`sv1rwHj)43zDluw)9t zBN6!Kj#K`eTwG9DCI_>lM>xwn*iG0369&r7wPD5T=KgReJ>wOdF`;9-^yt3 zYs>fPjFgu%PztkFdhKF}iWu^}Cch)04(a96Elqm~ba2Q$j&@$k-M#yzv-2TjS7XkD z`U-EuEddTqO--$&q460a|DG)-kCj5S6Bd$>Xyg}hsiK3`O9+pC+cc8o4^|Bx(Fk6= zc{2gxl^CdJ`#>5NuEqTs0_2#RPih>SugUki%{*gsgQpEm@F6=7Pbv)ku!RZ^+l77NA8SE|fHQ3Ft zthZSR^(eS0LF=qVX#Tss34fa)KP}TVjE3iJd>Zd)`^ixYENDvCdLP2VfcFS{D%!6I zbIVUyg0OleJ+R$E$o9StE(I1_0)7QGK-<3p^)v&|O=+=%4M`N3u-SQm^vw;Hk04;3 z{t&J(Q&xMJdqub~^(Ix?-lF0YIdi;X{79ig>sOSg`?MIcrZijak$qseOq;3=bRG3 zxhApwcEi670)u*uuup2zt{>5czB(P3@ zB|SGIBbb=)(`#7faDY7nzrc;2IzA6kmKp38gW|Uzd~gD2JF$mZ|Kmd?2)a9%3NT!h z&(Ky=s9mmpy^LmRk-m2eDP=lEvD3Fybbco7$^!N4>y#kri$8mCCvo> z=QRa?z^1$p>wkeqy9q}~3uv*544cx@(ntZ$_;~gWnl#}0il7vXL2GufcGdMmS0Y_a$=*{PCDyitx- z<$tANL%_nixw*OHV?C5qRQ2@6?jOO93!Ng}Z_%OzX)8}h z;wX50&2gpLS6EfB3V;3{?N$lCI4ZaLMz@g2BU7(`V^d%InbI;rD?LVAa;4y|B92xi z!&UMHX8uq2-6-p$+6|mEXWq_QmpwI*2&Rc9xyfysq-HeUy86Q=eWJ|U$3*8M4Na8k z@N&ew?AqN41^rl(cPjqxq~2n`z}NiqN|8C*{S5W%gOYbc16?aEvKE6^zg-t|W^j3u zpr&K=u&Da)swh)gmGL`aZ^i99YlBy<%Q}nG_XQssIx^o)VkeBg&tX-zeN2)Tq9D=# z9->)e@~vZOV69DTagf9Rb_Zks$hdha4QYYQ^V2Xa5@+P*I?L$u=vPL-l9tduEcGoh zo*@g`g?JpAuFPE*t95hwog1U=Yj02TTP@32^wUVXaXq~zx#|*3J$g=a)g@!tysU*Q zX@<*VILwVv@wSJP#+vK`|L6FZ8DE=J*0C$n`U5m$-w=Eh*;2dRXd7fu*+N$8Y5}88z2o;iiAR&l@#j7ybUCs|%{vnQnNn4bioBPohn-Y>nE4~Y9+$M}C z%&2GjDf0a`u6dYfh>-A}S@0&X_08&6`Xd_g#Pn59NK{=O`6}*8X3*pBiNA1eboHnZ zec{UH9V?nioY``eZeLmL+$_XxU;?zMkxJa2lf zB95M&b=1i0dHE?tT_cSg-q&(?+Rv2ldjU0RjwFT41U+5+ zSFz;>!N){DmR=|>8|)QHq9WgZ!KQijwZN`7zp+&AHI>_{$Ky1k5>Kq!>A-r304k;f z8PNI(tZAA-h>D6QKCnQyF=YG-)swEkUI!Gj!gNm-7tYv-ErY+|QsAHAR>H&^P&UF+ zG#1k}$JX^-ZQre!hO;K1$W-ZoFoG|r>*CNy!fVw;6EC+m^%bA4Bt5It7M=+c1H}*fkv4Kr^8v<;(mIi+LYkb2u9w zo|Kh%8x^zVNGFielq;lsMQ1SnU|7C_NptgK!eSr4z~dWc%{>ySd)ArTnUhf@X+0w< z6UL-Vrv2g5U#6BPJ>~OmZlCpH4M3H!rh2>O0DScQeA>c#EN)BxC&9`w76@^ zYWLL}1r84-64OQF_&-(fe*NiEfSp2?vNG2iy7D@6mU!sT$rZQ3n$FLfE393_?r~(} zPb>{j*(*BHPFV^ss9e;#bYm<;U3`_dPL8fQmDSR*|6N|jzDgQb<+9A<>whZ7RNmeF zcqg;IcTFLl#q4PY9V`7S%90hT1Ct#S9W#9jQ;vrtx=X*yOoC0!1FHvCOGfR!_kZg6 z+b7Mq7oj5cjs4^mi3`jYPD}zR@SBoNorgC{#w|kGMsg|>dS`{rJ_o-&>0zRB{%uIC zOI0RW+@i~u?YBt`PVFm!gBztT(Z`c}(}|0Y%{u;RzI>eqeqLuk;#yu4|48Y%>#Vw? zN7uFM=0WGlL;VDA^e@?s$>Q5)x$Xot3FPAneg;Rzw0@KGVs!UU-`}C1%vUq2G;+8Q zO}I&~bZX1xkm}sHv`*pU#)m=ryibf`ldBA-=H4XUU5Pf?h+yniep0D_`E-VW)w3p+ z7cbuyaaVQd715|V%&Pos5~7o+AQcq*7EL32XTxcMpC{Z-(&U$ei^UH_v;-;IRaX8gsdouF2g6D{+&f4klEz<9?dZ}pnX z&z;%QB)X2$yRNBB?W8~ki(d=o9+QGh+!X;Q!Q zv!dI0+p^7Dp-)WG&+wK@+Y|& z#g)g6C6L6DUDWU0q&N7)n_sP9Q}qe%-=NXz)zICQU#FR?#?{MK2gXTl+1BPi(%Fbq zwpiT7Q~hEcWAx9y)RD`C1tUa;@k~1XkNmO(l#1yN^y&FB)`*6B@jVm@mrblaPn8}K zyBxL{2)_(qd19(4{fN|q%7xX+k<~xX95-X{R&*4l1FHmd_P@dlU$}VOm$3N8S^iXv z_?jHX%{ryc{!Wt>F$yB=rYJGvvA?3A*Zl0A3wvsWs5+mvl*o0?#x4@iK=SA+n-78J zRS_zEpRF=OG?bZgZJaWn^(#^3-kE%*yfR0>xSOGO2T^_67divo%`S>K;5LMv# zBgJ!iN8FDLB2K^g^UN!<(YtqLPiOT_TK_43TRF>C)8?}VriPo{A>Z{r%lA?_mx|mk zU-fB^Q>L{`efcBIUC)EMY(`;o!NfWN`kDO4z*sHPZnwS)_ZU;{j*QH{SiuvTn6j2U zFP2-kmX+m{sj`zkmA?Nu;=p+4-eTUV%Pd>!%#H7sW$Z0<+`sX#m>UZ8 zfX+s@V{3YI;Eq8(x3-(Gk<9x={b{WsI@3scr3&XVRoj;Jt?vWlr&Y>U5-;Xz0p3w!UsU-6U*(qhh7gJj3UPc$8o$w<1l<#J!?V+9vLlR<;*o;_qFq zjxi~}vQon4e@`)uO8m~o1v1TUbI9}3?0V$|q3}T&SxTcg4UURf1WCE7kl)0v?lq1!Grd#YMznrku;l@z#uI6ZIb1w9G- zjJHK2m*-t9G9qBUWJ?^0<{I186Dz77HrX%wvN<<2`fPM~;t@QE*&TBV{^@H z|9+Tr$a%A;<|0ea8|*E3=d&JaPjHI_-p=b9lxQgAZ%#6D32;fx4V7$GP*SJlOggVp zIQS}V_1ne4gu8is(Ts*)E8SIxsFO=DOgMY}3|V9Pc-fE&fFJ@b6(pIJujj!(bA zPSpsDZ(H=O57eKSVxJhw``fTd{w06#?R&xI(fxfR_P;oIdM8A^2l8Y{N@7J{Ov$|* zD>8!YWn>j58QC+{raP;4?Qt=bk5~uy4fPB-q?%Y6hfDmW;BA>6M)5RLX!xIB#xkwsOnm9+QgG>CF?#q-fh}X?)JTb@^9Pb| ziN=X6aQh2W>*BYcjF%Sg2)|w~!{*%eChES%ik&`rxQ2EX_E;Fg##h)}d69xZ$QrEn zNPFM$H|3>p+wlDMKB}=nZwLqY`9JTv$^tq$rk(lODW2lcs&!IVJd#SH$^;^=b-$3v zf}b`+dxEFkv2i@gWXs4I_G~QeuBVhGKg0T!>Wup%d^#%XZOB3!j^g<-IXvCK{O*=( z#{mL64NR2EbeSJMm5#*_nd@APO`Gl(b<;PvEE?l(GQFw8)Nb)T*?&+Wp3j zEZ3o1>faO|Rtc$%tyHRbM<*PJi#_%g5yle^qiuDJdil3<6q?HJ1fe~F5ITuqJy~K! z8z-Fl>iHU+KZRqPwgcYBvyEg7j@GJt;%%b~0}jFJ!zpfC8X6}KrZ|Rnvh-=QS86vB zidVQ!ZC#%);85~bTDAEdRkS2yBk(phV_5TE->0{+p%gX}v7z)=6dqr_C!G_e(|+D4 zW-BSyw{x!X;ZVtQ6P%8kXEB#t`d04i_FpSiA8p^Vypc1aQT>9c|3YDHO#HKBg{RsBoX2SYrs?VEhp%go=WjZQX3 ztf!=MOBCuz6jBIGbG9|Sky^6HQ3ck{-gK$(6GVfp20Z3IB0KY&m~hN z4}UV?o12@nukZouUl&Q8EqM;|N~o#e3}%O}g9SA~@>VtLNAE-NP6c z$ZmfN;IXaG!cUyB+Sy_BxH@ohe&klPx&6s2a`N2w;D3)lg!IUsn%3eeF~h->O@E&6 zINy@+>bC2s<~x-rQBvjRx)5<|0j*~oR`gpDQsa^3uslar=43mrPVKyX?(mSbrQuQD z*dspmcf%?b0pB9wmy!VM{?TCF&GCszW4DE{?tnZx{l%!^7rb=(???47S9Wm>-D%)B z*L0%4!to(&Cl4Rc(9>JF$FMS1aRurWq+8_lR~HihD5EZtT+%wM>5;nlS^$%yLttH) zPP4Ym`cZ(?{XNm+fQ>);N(Y6a^j5zTlJ-riFrRAMeOHej+~bgDH@NG}Ev0@{>W(#T zWVdC*CP7pYzY})tG;1%_+0Isry`F_w8^cWs#YV5TqVx+{ZsQ-N(i1;v(Av=bZ8}AD zxL6;xWf94p`h4}us zwV16{=xv{U_uPrk_4r-vz0B}b;fpwD#fv~H;Uw|it5@YA*nOC5C0vkJL4VA6PTKau6kcc|1jzq$-Pe)i;+l0l`BBN#^IIDwQ z2kU4ZaH{JI6n4=5OPEoia?b34D}kOKBh7_6%XPh5t#m}JhAX3ygv-5G7wqX_0)2Eu z`^XDlE?Q!7e(UEqQAq9ml?kqXLz1)vMIe4o zo8~z2Ho`>A)hb@S%a7zp6Z9&HYe!${x_-YTvNbYi@0Tu`8(y!LeNZFPO45i9o{!lz zlES&D0N8DSsu~b(-~lO66s>-h!!EEGL0e{6&NYG}NKo_OKOT~vAW7dc787#69zH77 zhOMLw53jsL(cFTTOo|CJd~Mw$A_0a6qm!%6;l%phSo(^7?;qeht10M)y{FVVm78>4 z=UayzU4J*l$t!_r7C3qaMIv-gL{~5O=jV2lCcepLihbx;lX2PqSGMyr*yzgvQq4VYEDsuhu^^IgnB;Ujbscuob1kYaabkk!N zsT3vRyiVDcTJ^plGt-)GvD^ceRrE(z;o-rl2wCQoSWCC(H9HJR+;lborSbtHuhLIXt`INPb3<}FR0s(PeaJnL5H%{WR)RZE`G zAo;2jtm$j2LZ4}5-S0A>u?oK^45(W_)StVSWh5XkCO?1w;oj`;>EQP)3*o&jWN_XW zrnBgicryk4YNt$$9BwXY@wGapkdt8DN4(7INzPBXp#of&NS_$?gIsEtH1X<;uB z7ifsP5$AZc8GNcfXM5i1FX1dR;o8=baau&OFirA#9eMlm_hBPMS;ptMQ#YzU;pqPz zct<(ZCb3Dd%qdu0`6;;M)H`j}2l?&i)n72@r*yNty*>H0gYiv&Bui0cFIyF@m%|?A zhO2Dfh_Far1Us1`3=THUy%Oxba!*y-oMfa}S+O(vPAc4T?IKM6#A~awqxR&^#Jt@B z6Jq=joFgM$y{S#%Op+iPSupG9aW#tV;riN{tblK$_rGfdHzykNmXlC6%ReIWaEdCb zV-`F zyo#$FOE?WY6!YNbZ)kC>k0j$YabjfVLH?18*4@zItar<$#hvdtMIgjQS}*t zvZq3?Rc=eC2C94+RXCfvBy+ohB>GBo$HSeC3QvgFJOev$ zO>wQ{i!y8z@~1tf&!~>f`WjV;N>}{^7!r%<9URXNB`tn`v8Q?mtM1imbC&N&s?t7( zl%^l2pVG-k?o4W~_l4X(ix0f%I>+F5f?#h|+V+rxbJ~q(?u}(gqp1r|wiZDuwRiNZ zM~WB4G)KuN$esq%nOZlS)$olrxy~_ACG}sF*c_30wZ71v_C$ei&vZM{&_(g(*R}eS z+T$)aUpTln&-Ug;Xjv<2sz2-YQ7E4)x@}S6H}#Xv(z>G8(uT0`W|(ubO7tvyX8EZy zaye?g!K=A8I1y%stbDz3&pJ1zU3VF9RBS{|NA23FMUU_K+?II92AQ;P{4;kgt8+uW z@mqrtZj1xAfdUMx%F5$aD~6X`LvFZu(2as-Nh_t|eJF z-a=O7P<-|V)nz}I#5v2|Go7=2bw6cKRW+DW4{A_^1au4dKW{XNP`U>dkQ>t1wa2BV&37e$=@b>NlVF6AJhH*|M#c6W+2l^3W5P$It1^quKkjx44*Qf>1$8mA%%R z;*XM%?d012i6+lPaogkG)YN{WtkEZCHSJ=pog>a&j-e2mFvy{hs`+^Pp|qwCC+;t= zDKC$v=N{}*`1L>j7JRV^BK78*H5{^@vd7$aXz#>`JQOgjHP&LX+#yceB zG4Yt)ys;?vx!g2i8Z-4_yc!Puma^34-83grT}%3W&3@LdHzz8p>E4b8ow#02_j)u) z;qTZM?W~2nQJ;qKbX3u8+f1o%xmwqyT&Mfm6cpt9^qf=5ND`PV>EbJ6^;ER}Cfk@t2SvMv|vSf#Y?YPg+Uq*g?;;Y8O zpId1b&)%r>nsYyqdl&ombhT;f%ZbY?`%Anx`W$dqW_~JUu$~yKktI!mss~{vx9Rm1 zu&^j*GejTv;sB=RvC67$A2~mcf4Vjq6XkuTrOPi1ZpS_?9r{xc(mu7kevUFA zFHWb*)urBglHEg@rfFa#rTBdNSp%HH^;KN)PTV6qJMt61WZ9oJmNo^Sf7QaA8W|_; z+?CiDT&%9Hn$^%3dkM>i@A`x!%SRQt!c6xYhS525%V8xs-1;rsa}3XP&HRn4aD*?H zOB&*_HDukYxcz$doB6DAvrYO%EUh#q8|_O~TN1UM z#jfajroD>;x4Y`2$B9J6q!#hIq#isrzc7_0mtUK@=wg?e+BbFifTNd6pF>mg(SAz# zy>_RxU(H|N7F(x1b>|(AZ<`+&hu7pVUa=J+<~klB_DWgM4+1HZzKG*7iXvGVUK!a~ zjMC^y4Nnur$>p(<5|2KSJWspB(^xl4)9Gbu{acBGy>T~rD0Gea1VZhmKX+ArC;pul zo_(fmf%Fn_vht7tNfcIu{&M?wyaaMTvH!u_TL4uZwtt_5ib{z}mx_R-NC-+vihy*d zbV;YQfJh^afJjJpBc0MH-3=mfNC`o3ub)28fA@W7XLfdWW@pqEB$u?Z)dEo3&L+O+%_r+R(-+7Eb9-`_y_ZFyoE59YaRafI`k~WxkBY zn!>5{Oa*Zn+Tc`r-<;)0zW)IEZXd>6P|gZ)M#;?3zu$8{z6_P*Kk`4ZrH~A zf%mDDrw{U%B5*dw!_Ob_YyL6!*5BSV3rbTo6tF6aa;#3k`5e*~ElT}E$L7_BxC@l6 z2el4=6x|FBO%8hRG{aC_G`u>f-9KFa()uB~tal1;Je71tNJ`|+Ka$ktfyiZ?V>wlo zOH3+H`0zZ$g;yA}SuT04j&4oppWRt zt>|=DOnS#e;P5^oIzr1)@Tsj4fnrd627w5H2z}w&y*|tua&6}&r(c`xJ5d`wcYgGJ zS?!X*&W;QoPWoF)ye3@!@JcbBQA~`J3*l9vDk~>Vaq3e)ZWX+(B$dtSWcBVePMy{; z(~DDSD@yP6>JkzuRM9^2^7C9J*SAF%iSf6(km{sG1dS^y0*xlfqc5$Q(&s=(-<>G)FuD9?|nzNoPUn3xv z&fNYLDv$ZGBGC-=f8=%k^?okfzUw6IOwFyC#4GCVfg9B|POAPMMlC_sLPZr8o8=E~ za|qk!2lWjo1Q{sbyQuE}F*!M`FER5I=`cxs_5;_F4_8v8F-9M<7vLJklXtSAo-hqf zKFO?T{;XLL`?O-fm#m(i%N4)Hm7e#L9qD0oi&E$X%?g#IB7-S)qPZ_|5e4pq6Ox@l znKOMEq&U4>?EztDqyw+eTKBJZ?yqkCA%0Gw01cvSQhMVNmfc}*N#_L_=J#7@q+4i0 zAS1ZdVo<$H2B{o*_`>9w5~##o{n|ku_M>!heBa^*O)V!sfyU>}wcrFM`E(}rEGF7z zyLE?**;qLh#H|WnF4?}@^!VnR)}0YmCsZC4KiR0&-glv5Vx=N1U7cV;pIP#*0ToyS zFN0$hDT`=dxcpe|ZmDmi;pg;yHvqqA9tiieWJz|iabGWg7@yLXgoa?oi&ns7QGU|^1I3jvnQ8(&(ek5)+m$TQEs2DWhyix zxiI9XgGq4~wm>*BTgvdoRQAiGbmCUD=2o;DwrlK`8*+rQeu$M)L|2Zbmw;0TKX#Y6 zrUPGeqh6Aq-oP=d(bknY+We)Kb=jj-MinP*A$lrDQLjR@Gv?mQkIawZctwJ?Kez2c z`*4CbgN2FaEau;3aPU61H!=B7o#y;^P6?MWa}Hrhr7|dQ z`;mR)x=BVtCOMYFd7_~AQ-t(V4MBU6HI3;@+D;V=z^$2g6$f<|2i?M(THNs*Z*R0X z`%V9H&+@KPkt^YHEe9#-W?%LTYjLBWnMFl6#3#p8XvM8*#cg6#g>B8Cn6jGD6pAd1~^%d$}-wvG*3yp_iTGlefW?(C+f&Yh4i&b8@Muje0&~BuiU<=h}qPTQw|Sh3o`2Wm?{QOta#zx?~m! z373c4eyHE*xDll9cZVcZBP2m1#O5adb+MvQJ<&AN0Up=s>HYmpSz<2Sm4|AHt1GRu zMAV0zzlv+y*I#<`$gNOlUh_9-Wn=wrz)bmLeM8ie=c5fzoLWH`Y4#VKlj6FqHVGaU zdBGmBbk+3WM5hl0YSYOHYU&p=-*ANXNcdf5ZKWz$*`HLEk;bhKS=O+QV4}au#?sSZ zr+ep9kh<-nG2gDX0!hv5r_M`*xa>3NK30OH$!JtFF_*LOzFp3(%zbomZ9`GT^|fn{ zw6qyc)&;$*>m6US1T-36cD*Nd_1>!ptjkp4b~>B4dSt-iG*E0-c*!gmdHViTsp@W%#ik7aKpc7pGrv zihW}HzCJoSRkAxJ|2hj94R$An>-HQ+nggy8$vqKBi=zuC()&4i1B8dJrwct1nMf~V zHVU6CWiGEa3!hX7a{RobLw%f5wRk3A`|x|)P_mRFn>!Xo6#?B#KLc(d;?;1fil))F zK?y-zT#g^K$plR}CxIp>C{#$BlktfYAIB3uChwS-2rA+C#@d~PVNaAp&m6}##{vq+ zE^2k<1W<9i@CQCr?VeP2PP(9Nw&~57Or+3Wz!R%r>Rq_z;=payD%P|@`=kGMD`C^d z9w&)d#T1!RT39B%Px^P=i5n7E>aQQvMH|Ulhm4G3x2F^)#~E9jYe>F`p*V=aso--& zkKcMWyq`;KH-g_nR^D|g`PYU8V2btU<6Vrsn5WvB!1e8O8UI24=V{V+ws(~ZeAEc5 zIh?)RnejB8o4%upjd)+qT$ys3u;i6oFB}{T7*>2Vw0b+4@@{g>WefH*C-10*4jh*U zm;!Fgk#oLl2QPl{sp(YJyG-8;$L^^oR!mrzmn?ap(BhTHy)&19`@71VpLa>wtb@c9 zXLSFO#zwCi$H(+LpO;U#LImW07Ru)n5LCXUscuzv5ss-A8L1Y&{ZsBHzo9Tmb~D~r z={I?$M5;!p*@K~P8x7*>==$n`Me0uPTvXn0>De zA8~z-5{gTu_hH3%xgn%#=bF|dLAskUMN^9xA+H@<8j!Ht#@R^npy#e}`)0l(WXc^M z6t3}q{V4KnrDJvPA&D3*x-yfLzu4&=mibZztEbI4V-^;MKZ%DgS|{Lr^3!u=@0HZ4 z7*JFl*KuCBV61V&;^)tYt4^n0fBq?XmE2$M&8wI4SDo{~di834>TTZDlgB>m*fDeT zSEI2~A7YSKHTkm~x-JoomlIZQW8_6dRo`v({;j2y71p+ApWVHyn1o7W?!ct9-~GOl zYR4`=TYq^14=v*+`JHy=0-dje>oBgan6$e;A1$%=y^u)ZP3JgaqZ@y#*PMJI^rxAp zQJ=ej_Q+zD(;~O?wab>Rs`Z$9K_c2ZpzYpVzq^FgL z=X0vkL&ss&+~IfFG1vWReM^RK^gZ-~R9(dUGUfnG-ntvUxaCG*)dGcb8x@WAt@KM=rsH*=P7j=zO%jUc1fy%A15~Nf5grfN*kHo#DTi<4ysh!TY*6T9_J66;l zTOVACRk5D$Nx+T%Vlf!DYs%_RhnW{bLqfFqy6BOrfkpqmg@Ad84umyLn9JiR|Emiy z!ev3b>a{yL+Q<3&e7P7O+PW+iZq`n#5VqxcwB`B4j|k*566Z?3m3*T^+L4{zu1(sK zjhD{wrk35WmiyxP1J$H57zqE0Ifdd#?>44MO) zXIOL#UUj5ioFwU4%;olclK9jb;a}O&2G08(7wIn#tyc~VO$}u#)Yu5KXMKs6zkhGY z#;0gFCG;dbi_61Zc)!}(b=B+*R=@qUY z10>>i{Y%Oyw)^+^4`=L1*KVuIh->e}BtB#2eZt2f!QAt9ZFd}9mGA0;2JepK@SQS- zQA)Lh5$a#`RNXLhn_Gby73tM%S(BF-wOR ze|O27mMs)#_*j+CW}@JHBT~2)hK7Tq_MPA$|A0E zBsqo1I&<*7z*2c?MA1C|#F@{sTqk01+OLAu?|>Eekd!fGjIljW^2P>xoeBe$vj0=% zv>UBOP75Z)hA-}GZ){oXT^lJ4G@lUt$(LK+AX@QKzrs@~gPf78JgAz|E@o`Luo#n7 z^%WP4xz-9-wQ$7`+Z(daXp^nZlsKbN#dsP&6!j zc-=g(HSk6l<)>9C?2h&D>ryi^S2~!nv!Ca1$Fk3`zw%o3Jn${M>5sp6wK-}kvIwrK zz_?NvTJFEp;q2qwFxNrJx>UGw@g3Y`*3okIVRK@Z{%|$@sfa1|@XO+?T$j=(MR^x9 zqSIP%O1KpIzne0Q7_&fDLzS%clc?smyVm>stCnThg{sys)DP%#3w{zj^PFi7cp>}6 zkfQlVhyc!^v&HT$)C)E)!Q1J)w`;h^vvPQ-lwWr+w&r#3X4~H*eA5?>_`~_ld3;royjPl4PP6cZPlSI=Gqnj%%ZVP&CTj(%c?1^nI``Yr9dZdEdnL^9`0S=|c z7}2I)c*E6gZ__JkD{5QPlKDJ|G#M|0m9IS?u3BGNb7{&l6)WJG^Q+`J$cr7jNl=+) z)^Wk{J`IQKgU91kyqCuvVG@c8-w@1UvDCuzRiZoEpRi&l9U;knYx zgw+L-)59qSi^?l5%CClGW6@Roh4M|_-4jaF@YcXkx_(O<%lyi7>Vo~{?eZ8Z1MYfe%?Jl~C8^P7)?ie|x3)(f_W3{WNch!m9k5ehN3e@zf%*cKpci0Sw z$;o}&5lFZ+i#OjzOT?gOGC~%_s8YhD;m=;@u;aj&a!?>_>{le5_^Z?v^H0HS=U8f= zs4^cap1JjFCuBe-KaHio5ZpYjeNp}`ph(2u_}YkF09{@uw^KmSl8SP*GOfRIU@D`n zdJO#4N;&kY@>2RG{EEPoyzBR4p7+lRVU})+nF(?7-x!Q#J=EwyBlIT2WF(AEl%skb zbS+wSQc7KH#_3gzwk#8ouXe`aAcYmNp%I)DoCrkaM^8{DtE6hWW#EwjVeY6#hGy35_|Z z3|3&RtU#V*Pw%j86~1m7CU<$(6mK4`oQT3onQ*xRO0Aoa3?nPX)m`E{z%!YGawD`wUAJ1K6L$#mSIdT>dAutf^j zO4(Oa*&v&-n6W80ze)-7>hlqAbBbasf4*agNGIeAP%Wv6jvc{ADjA?>N3dUXndLte?{BM+T&AwB|>dxghKJ@>qlIk*O_7-lS$`cS8^6?RTfS(l1~RR3Ak!Ik;IbO zjNsP|wp0wiV=f{3SGWoId&IT3bdx|ePetf12EQw(b#(jpKG6FsHYFGy9=9YVwfRD7 z^Zot1xT>jI)wbLTDh6YFlnkT(h#?7j&FSN@P^Z$zB6VbG8E}t7jTR0-+Z2wn^+GY6 zL7`DEJ>vp29rdw-KZ;r1H%IKM$#na{}Mqky3AqF~U*^^k)2Akj><@ zIf$c`5T6~tuo`5)x>KxyEZjDukNo;w1v{52lTpbF>&3r9}OhX7cV`o*Ws4T zKld1FDT#i^%tawZ`G{`Y^50%>(|L!MSCE_Ydb_cz=z9G7&mG?aB`(Z*jNuhD9H$l5 ztKR1=PvCo1#RaLS{PlttQYhBSk*zcpv95>gKUOvd*+d7m=etUXIbMc;35uCWja3(8 z2~r+lk9}KNR+kw-$dw4O6K--DlseLV>Pce;5+j;t9d-@5PkZcnBycmK6jrTVRmprB z6wzJ!?Pm2i8-sZTGISiD>fNO;d9^$DD60l{OatFZ+Aj!;*o&8`Kj~#%mytw6ccgJE zkET^-pH^Vxm$q%W(Mlzhaa|QtDvVCjpNy5bI!bXFt)A#7n`wnpN(`BmI#-H$(^Xol zx7Vv$4<|pHt8>MV9PY3243U!Oyq@bMro0?=xyB*e7TR#h-_;5xq+)y$L@%pYPTp3# zOF*WqG|@A=SACo2#aj(hbhj=X;bI+4@mmA2YFL=>7OZv9Mt^KPzfu!P)7%^F$cdLa zS>us&8gf#L}_X5;zx0R}$= z=TP6Jm{^_Ft1LPFOu~;x<&MNNt1)bs#n@-lAvaX%jM<|lFDR?*+1@lwFb+=;Zq2CO zS!cDw;YQ~VnA=$#)vo4eg=2o=k2oHB9+MqOBg8sDffh? z{!3)+c_cZ$P;d0Dp3-o8@oVp|g$nWL>&D-@{>FtOji`;Q*!@L~kP*g*b>RTRGy1Fm z*X|f}N8Ivw%9lAdcc!n>w-m_fi>i)WDMHn+f}zR+g~meSd+S>}#+^VT{In;yavw^E zKQSLzXR%&A-H_MNyMNk}A@a@QKDw^{l(npd^d;@rXcv4LHbkEg?MxkAIo>e$LKT%i z8On8|{&X&V*GoKF62DWa`;@LCyCHK^N`-D}{jFjDPf3N(VDJegn+vszttdCg(FLgC(y`5j*JdEi+S+)2F_?JDu_W@bv;UBc zucB;)ZxLO5_a|nR_ArSnnikITg!lyCJRJ5MnhLhhpQbVDv~rI?|J9sQSG8beBex>D zjV#&0*};T^53VEl@RKg|nRs(!$=Y3t+LB4yRKM$gM&aI_i><358y|Dgc(Lu#t5V!G zA!&^RJKQ%dN_4h2ZJ!g2H4Wdiy_uQG7NuGSC(pE>I@j9%!qKu4WQ_~PsUmLV4fu*` zUfo+{*Q(Y|7QMCd#nQ#5cDh6Fh{ut+Sb<-+_mmTU- zV~5Tu-(h9hq0gL!?#q^yN@_LxiQ7?nFB-SCQ)nx>RP`&nVc8O>cq12Un{X^mI${^aXXA~xM;-w?Q!uPJG#@81H3O%Q2q4Qh1R=Sx%#QXEA z0oIGIsV*U7I=O<)oQU{Cd(?eyr#^P;`izo?U#Th;$GX}x4Bl!yc3ev1c3nZva5nkh-lm~rZ{^)TgOl;Zqv*0RW>=dbv(kN5(`q}HNhakAlC zK82AIE?K-8~Dk5bV;=9pd;W}fmrqR80_an!z zgOQB_I7u8(+4GI7&}BtxbTi)yRk#_ogtcsc5QwQ+ODDuC20Mmm>Nd_^qa-VIBhqSSw?z&}xxTytd zX6d0XXX=09^l$dO>!l%$eRUTTqkhM1t7c93YQXTr>uhT&zhAs+4xtmyzuacgjPsiC zqS0it@ZP6B8(NtfEruxu8fqL|2iZGn-`2$i?_v;0DaI%G2foRPP-B+9Rj7WqCn+y_ z04Kp}TrV0sY+5qoVC@}Zuh<3&=#G? zkvX()6g-DSIc>M?aqPIs#A|i-pOP}Krz~w9_&pL5%21bDv0YV8E+@riN^hdEBwud5 zKDB$#&tj7)&R_W2)u{~|7QZ`d8gCcFq-l{U266fr9{ z9$?u~TT6|_;^mRLq_gE}8CsBNE~Tw?P?>njGBu`))kR(8#K09Tb;&u<>A9@nmn&LQw`hzMO2qx z!Bu=j5(ShoSU~N32^22OQH7MyNr{e|qA7f6U0KAYriDXGTkOg2e)K{6lySIt{?WyY zY@T)XIFtzj!c5HyL|n%4xh?@gYFxZ`XqDPU;^U7UsfAjfT5`5pN1BU~LuO>s&I3bFv8u19 zV# zgd&B3v3{|iM3bquxqbpC^kD`Wl z%Uwlgw8m-D?2fj35)Ti8zFdE;+NKjZwIHFbY1u|as!CqsTQV7N=EnYtH*%7yV2U`9 z*4$8@8@KEb?ZCsj`hbq8kBapB=w_Zn%|V-nl;4X$r?^;HG8Qx?bLvX^1tXT^fleY5 zD1XUvb;qLzH-9ijkml5gsjpQ%`&QpI$3TB#(z|>$e8W2RkZAX=A{3a>MAxInKyaB zGNi-AkZiZjtrsmwgU8r6|0x^rx$Jp5|Em{THxj2ev7N!j8H*W|g2I}@X>aj3zJmC7K zaP@@V#DMWe%j0{$Hp>6T!l{|cnE3z=A_(swR0#YFfmDg`u<{n{dY*ojT@8q=t z%FjdV{eBNUv5|K#R9TL!D2-V~>{(r;LRo?xhiD98<`?tX9bfN-^rtDiO%&*SZrjMNXQQ8${SGAG*mxHui2 zKOJ)jX&ZhlQZ`1_>ibmoCKLBGT+D@o{;A|78tg8mRiTF0VoFicLyA}PMYV4+m1Og% z1rlf*4^#EUXyvKt|CG8}ym^DlC?iBhBGZInaQ)leud$Kzn>mUa3Ym4EMtySxQM8tt z6hukaHqit!?TtEIRec;-W#qQk-yMh)3P^>=HUm_BQJ=}za@QihL_XAl=*--|j5ZQn4j%-E70bqoHY!0P!;qFQ{>4Q{X- z;M33Sy%;nqm1)x|POsC*c{3?F%=3 zb#uYB?`@^{S_wjMVGl1b!+`&*-ge4doNs)(k_57%~B_5vM1n8fnLFOBGFIa*PBT z?*q+(yU=>1)${#PDs@{fOn9Hl>9bbVjAttC6_WW%inx`t&I8?s?z7PpV32qm_HVp>M*uNx02epx={U_l7Pt z@$d-AnV1ue zrbqX87(y%3(|s@hE8&=I%#Dw}Q|eXSFxNrYbC1rG?b_j`zUB5S z(x=_gU2N=+`nV1-u=?NNDcpCLv-V4||6`b~zD>eWQ9nC8Iou(~(9zLXvt3{`aVAX} zXqri}%~vHUNcYRbTJrgL1N+)-xD49(_x@_cw_J1;9ts)kBD7T}PBP0)R;-b?&DYPJ zf1mUDv@}G4oj+!&ldP{N zp33>UvY9@+pTQ@4)*->GSEaC($d~MDnLCS$KIQdz_F2|oD)+qPK!%T;AKx;+B%+c| zRzL9u&O;;FBg-v=Z4qiGX9dr1n?}@;iuH#YlEtpKbe+w|Kdo0~yv!1?jyjF%7{>lg zwrTx||A0SoGJK{YW0sqAQfN^houT8dHNCIsYRPr8Om?ycr}cx+LSE!+pgQ|R)*cjUl|(V_RXw1aYUM0kh% zf^yfCz{jGJS_&mW2EJhWI)a9Y16(pPf2&O=$)waNn&3#9$mtq>mVU_3Ymq~ybx7n! zGk*oSS6+>AtR>*iN?lW!o|13e$@aS|#=~_kAl$-tZET4>`Wewh=88Ry8 z08`=>Vz|0{S7fYuG3LH{S=nx|Uv!!m8#X*5zoVie&PUY|b1w`u z!CBn}sMY(9H*zH1O$!RGKI^8L;Pa4QDj#nhE0Lf^i%Pi;eQ7+})9XA^5-gJu-+M`{ zo~7CZ3yQIkyo?c~LRtTM$EVX!Fw|{Krba|`tb^0n@N@mZZT+H`t_{n!v$3e$6Uc|lw*n^Z==86GRzcNlH|Wpw!IQrNCFppLtXI0tAnJ_BBUer83L!TaZC$Qj@-5h_ zJB7&?;6)noX%okHKcG_6`Zb0g*5}8J-0{;~CX4#~OfTwD8|V zDyF97hgH9Q{;MUG!7#F@?D6+fWE=W5ytjz9Vop}FUHARoMDB1|fnRu=Q+C2Icb4QP-f07_uqG4zAR?&wwmVy{JmBMJT~fT1Mdh8{p$RzMgV3zRjr zK%G;|W#LW13=0xr1rX7qBa*Yo-;vKXWOz08|N77WNNW81l4ZjGDk~O+mUjib0LYjo z!+qf(gK+-XtYp{RirQf-)Od+62(ht)t|73Ec;Moj$ldE^D60xLkm6?m0*khVbNWn> zc=|Mm#Zh?t9H6l8eSpx5C7v~TAT%OSd;9{h3xs;Z~F(fFhFsbLI}Jeg)&Lhv_9nD*&|P+3)3m;NvDDl2!!ffa!2&=Mco-qR=rf zePRLGw3jF=N}}Z>=?#lbHycorf9N7xx6^`MFy13FwAKG~*~7+WbIa}4wy&=N=ujeK z7DC1q1cGSEh{9rj!{MHQO@$NIWG-A&3kOZJ1cVbcG}g$fAWrYgA(E2iO6bmPfL5zj_`86x)& z;2l~}VM1gS;aM9F9=pXO*X2Q$bQxyRX0lGln(6Sz&aFlh4PApdOmEPEwgY*)Opi>U zWblm7@P0yVxi2SJ6h<613l(SC3%{Z+=j$o02Eqj?5H7qr zBul$`dJNz$Fd7Kky@e$iQZ?%;g^{m720E`v_U;)@t2Z-&%dsuL9W4;$25BT3A z>e&0bVMgi&<7J2RFj;>W<^9}G>+9<(>u`t=^bYMN&9Z=d&^Wp!S&LlR1#l07dm3^A zR17;Hw^cTkPnY+9?VO&~0bRFE{{aX+bRcjZFtWpw+7`qhbs(&#cN;XO%{5MeQUQ{v zY_Fd*nUQlCRl+^xRLJOWBCr*v16`S`f16rF5Qd1~JdK zW(mk`R78EUV5Y)p0rsI)xd#9*9DoN)6yQ; z?L-Oy)_ITtZrMJna*D&_1?lcpL=hBJ^PdlqfWC38ku7LSa)2NVPOB-3l}ZKK^`MCB z`2_@mL2niP1!&oVKKN@;QBjwf)|5EgCxGqme$a>okf}JZm9hC56fkM)xp_QiKZmZo zZ8hsCA31v68)GI4Kn(^aCK{@6UP}bmy1Eba=#e0Pi$-LQ5Vc)o_GLgS85x70pp1=# z1BgHz(1j3~3i5lf{jB6Gq9a0UNja%RisWb@+Gt%WG-%f(0F#1bEL=W+EEkMg8*wZ6Naq zvf5^1J+Z9X-NkyXp9J~^;(47}i|Y2S!e+UZm1HMr;hZ(&3Ur=V@L&in6E?U0;HPIG z(j5pg)fG+<j_FduHK`D!vP`!W?XaU!ZyX3Zj~c zawjK{S&Ov0gf;%ZMO&~RaY)(!hLqrwcOdGv2VLg<4c$LA+V%LH8PVn_nQ}4E z_eO$juis15;4p2V6v!>%-=55(R_qPZ&nW{QaCLr0Xsa)ErDmfLa~`yZ%~q1jWtEkc zr-4-Td;jB~w(TQ(C>e7ATC+TdCG8b>@>Xr<8H8GbKv7nc?D2@TY+k#w91Q~13xSS- z=Hvy0A%ln(0D~q82Hze=1j5#ia=ZIeZ-=chG+@ zhP35^uTVb(v%hBCu61p{A65P1hHO?uE*k(^Pk@B^Yi8RM5p(|5UC&p(xrVp{7Hio# zOt2O}@!p(=C~O|Wk!JYx@R8UpCqbG5i4d+7|BK&|I9)W6PVw^JWa97F;Gh3%g#Z5# z(*G3~_?Hlro53B;|6~S`Dm;7+65{{!J_DK0y#L*9|NEs$PUJJ7Mq#w7_qv(L%Nt=q zARJ~w*MEXxkR{Pdz)zTtA$rsTpyWNe<^P{lBY@~Ge8x2G4e-?j0^$y9l;ynUzfUt90Rl$@g^pX(?;&g11BjfWlG5-CFHW)* zA8giJ6nOiveD`5D?Sq)PEv&9b9SD&rU$-$C(Hlqn8HCSa07)bH3ll^{%8@S$o~_Bk zw)aQ$lOY!IJw%!rNV2tPLytW141DhWA3($cMKM)h4{Fcj+sHJ-vNvh+Mh_w94nySG zk+%RXVl?R?Bn(fno@+>QnlwXX=n(>lHxm6J>d4@~Ap)aD#%T~>m!M1C=X>&hzTtOs z6o87`&e?H%k<9}hED=mi7D}_$i3PU7ZC>6fGjce%v+I%sTKVYTK+PE9v!pXf8rzm^ zSI>d@BM3G)rA+X8Aed%x zVTsyxA)|=Oe{GaNhiHDoHj4$VrW1jGT64($(Q3FK8fwiux?MSFu`OTyPp~+Kjfn7>K0^eF5OLMj)!p2CgIQ|=kYEDbM~T@G9pX^WPsSSUfU;V- zEJg62r;HHJyms|A9s}6JOGruuj@etA+5*urL5#}RKfm#tU%dNx{xb_i<@40Tox$3H zcyTXiflJ!jJ^(<#(oy3dei&-AX4U`hqdPH~k#GKoM2%$NzW?ts@c&QS^}qA?|ErDo zzj@Qecj;i*SpyzQc(VGLHX;^ka}=079q@Z>@hcKo0&~0x{8owT5y*LcC1HDk_7TVd z*a!KR@!-_{6%>H8B}!ff=>$@Cfm#0w%k+34+_MeH>75XDYt~wrQMqj*{BoOb$=2ZV zwOrRSuu#7yePWnY_wsblf~bGbW8EYoVh0u*V9?$>g(w6e^20Y|cwWPjw*`Q}9^`Rb zyCvM9@=mC#)m+j+)dM2TNCu50lVlV}K*iVr5r3pK^}uZKE{OaGn_R{AMRuU5gOnx| zw6v0(dLbx7Of)I46EmXO56|-*FdUOvoMIqz}M2S7oeY3Qby`TR`3rRqsJn|K2Euzp~KnNW`lI*udAPk7nK;#FJ z4@KN~d=a5hLfF+QP@f5U{UhoKwbiO_SG?iuP_zHhDg^{d6&qkFcl3TZT2Zf@@1#Q;9!^I{MaB4&i7 zpx_=@nN;$}SI3y}s0&B8y#M(D{cVJIhvX?pUIitZRx@gt7lfyQ%+Y5U%6s?jr2q`3 zU|i9b4S_)&pLr&`EM5V@LNp}zMV3F32XoK4b0l(G1KJ{aAv4ix5k~$JLbrK2RT&yC za1sE5j&Y#^hd^z+$HcS*51Iuf7_<;-!DK|LA6ewEP_AEn<1+sms~P|!ADT?zrPFZLh_&MnE3W->e)^v8Rq4=bWj3Vg&=N`&qeAxS zcf{hsY7u<2;CCazqY*GWk&ws6A#&b8RYwbZynfH~XF4@Pklsz4`<*#(dIqa34VL(y z)5bsPK)XUSG&Z*DqK(@Dcq39yMCv^=>jh(A)`3I9<_*>$f*epB@DuC+OF^(1mqZGqWCYI~Adu|6ghCiS!0Q>XI;DZ2 z;u{;}z)0Q&MJe)4``Q@ z!Vqil_r=tjBYk8iJG6VwbGIVjw{j(&@Vrq!$mDi)hx=U#*d_4M~Uwd8$jX%TJ! z;`B_|&UFmLH&dV?IrsW-4kB>}{OoribGHxMa}R1lKqkE2l)Qb8{1un{p$#PIc96mG ziiAe}$<9FP+pi#he$VS%xR3t>m?KRrRnxHaZy?BfWKn_XlB}Hr8aN_>kJvMCr^{Zz zz=4t((o_M^6foFZ0bczJEbNEVyMob~qoQh{VG5N(3a{V0GE?x1!jMY=_D2Br&jXmL z$Blo^wiAEXAT=eJ=^Ys6o!Ysxeo{IJ#~hGAx!iyn{1bD}Vlx&sQovq-CeRAFEvuil zU%_d?<4Xb8<_|>OfDrC&?BJk6!}*B?!vD%N3#E#JkM^L0V#!Ys8X=5K zs)f?0Rq3Urkw~Er%q*@q;wj*%uYLU50oL=e@@1J z?}mFhWM+SG7<`5xW~S|WSiC8_pU1Pk{{7os$Kzn6+^c6}3bH7KBGm}y3F8;q1eq5XuPakKGsW;>~<8HzQJz``*=y%Un46(GW<0X7CWUOm62%YZUx;<^e9 z^H#*x$UIuPiMV7)yg!!21@%Ssde;gLjO{7w#ti4} zS$C*-{03iP0_A_m9L=hRu+U`$ei>$kDJh7FUHk|yIB8&FYz$FMFXDW@rHYUWdh+eB zeicj+8v-;K{(Q&|`Z$~dLy8axw+ZQG@bV@?X+9Vp+T`XKd=EO&_8bKuTk_vJFnU9jveL$rzl^{WbY$#Q*Sjk|$6fR!8Xbw$}b!6*}z_1P1ZZ~XDSg6O6 zaa$#wpsc+T5BXpbmNDMDCkLdS9C$&d!fIhcA|eQY7+2%fm@}a$De8E#mc^72?FxbO zFpRS@Cz-M&gChjIIY zhj2#;f+X;V;204enK|%lB^fe2fA#3*c16+Wx$tdKltFij%kfVd@v3mTw=_C{rerf zX%_OMuq{3~^#bPu`GouK;B^Z2w_Oy;Hip2Wry}10eD?3<&=T}ggy~v`x007+fU+60 zBNU}Rd5l7!rwEabJnZmrm>&QY%6+i!e`MBiFJpMQD{4r9gKL$esp0b5)^%`68OY%6 zAJi>JN-62-rJjH{P0;}c`vEwUJV?Fd32)xaMwGKB!YvarYrr9lK)H4pT0=1kk~3gl z%%K@;4l(08{D3O>rNEQ9KWDmJHuFyofL*nzJQp<=r^fu98Om_$P!Lf?qVW;Poszyr zbs0eKdcVAbXDNhZ*cuu%<&_AW7sX)!Q$hCFAsZleiGyLMP=y(q)rAb)|1lJhhGvOj z^_W8e-yDqA^M)`O4;AE7!Wi&aQhWU_K~@KNcooT!`j3$x1tD#4;j)}8FYkDEF3qY{ z&4v%lrwtWR1@Mu>Ybh_K&zJK(Uu8~8k9?{)E=(7!>zY}3t< z_36wJD5Q?j(a}J|X)9m-<@IO#PsWT+so@o9(n^yzY}$S10b7F{iG}{L9(Yzi;oHzG z#2fcgubub7hJGJnX3-E9ChqxTx0ux@Ehr;;R-U!bky`FYggI3Q*1D);yH0PskS z2=F5jmUaCBK$sr59d2Gas6rA2lUmTp_2$2hgKQG;n$Rgo0`G`#U@>f*<3{oI0UuO0qY-QprP?aB+W?|JRl$2gOdaE2d?VS+6G72cnp|2Su-<+ z0aH%YucPlAPwbUcRXL!xiojlxV$kXaX>dD|HC0YoEkRDK2a6o3`5w^8mCby`ECN`ee^Lkp)KhQim0!55*Y7938o!%8>$KO84Kp9n0Upmx8+sd-R<|Je;Zz zW*ek$F(9B?4q_^laKmYw`{<-Ob}(~Jqbn~j1dE9rh5hdEwt+SEX$VLEJcQKC!S@@Q z*l?hT*aT$dspVa$JK<4wJ-MTfm5p%apcYT>{RlD*7vKb|SC|t*<9$Sn1fq9uUL62x zAb6?S`Hk^$d(;|7(-xAnLta|qdFJ{TEeM;6_tdBPRzhaR*}}E?>ZPzHh}zSjJ2&uE z?itVlk;5JT?W}@{r$?2%zU1}$bOGP16G5y(@oPx9`MX5HhZUzXUV#>gY{$Q1I9V6vSpwE3b8a9I=pB~Ipy^qv*Qa2uZoE}>45Nja;eI^vg*zJ}j&d-k;?b``e zd4%M0*VoOFS^^ss^RoUA*4{d*%BcGqMd=izTSU4JaFA{!q#FT&LwC0V(ujm~3y2)L zLqHk?q&r2BZb3pq^zO&^{oVV0HvqdT2%zzoASsq|cCOTRu~pAJ{bB9x z{n*ONDjk_YX8tevLKa#9j04=+aR2WlX+siih9FghP8Za+!jkP8;<0Ah@#;GG45W>2 z;8p_szAq>gguv=fU4Tl5x{##CfRjt{P5*l5kwOOqk3*35NS5F!uO7NKWbe! zAoBbKNnRwVd$_pD|9~;^17E(_&C-AR{9P47(l3*26}yk;_A2NDNr~9X|eO7X(k{^ zK(>wmn1invUFRR%?@+7+H+Ltv3+~*wPeC;$a6UnRZ8}2}Yz_HlSDD9|Bt4)QQP1#kal$2BlsdLNL%Yk{#pSG5i5M91nexGLoG3j_~SI4`Ip zy3~WNwISbK=!2cC)Bl~PWJpX%=mMZGM2+@D;CrP0xxG0BPHu-6IKIFWoT;D20}sH0 zV8%Sq-Sk4-ZA)9u>{7R5{NY6#L{os%jO2(#?Ii=Z*#> zo%jRp(7WEdVZdD54P@J*-)F!chR_FU+JL$aP_^_uA%7l*v}*+!8-6!OC#ByxxS2mR zfKunLH9)Fj#Kmxc^PpFfMclG0u>MN4uOGB1Cb_3Qmv}e(lror9b5(4ZYRLz0r}15Z#<@3XhF97 z%ZrNvpEd<{hxN)fScyU;G6H0#<8~ZeT$>Enw-=NHSWdiuVhpfF$gBI~(xGwi4#1`CLOT+nDmh6_z! z0g=lc)GYttVDJebRZk5drGTbnv;JlTgkGq=hd4fEo;H$?OCzAd2UbFwi<{v=$D#Cj z`yxPYi?LE{RkaXXxoAR@D{kGLdXWVUH&mtpyv5?({m0GyX+wo zmZ}GUYh62b1!;#H0MH-`@&w2b+`$W<0%9siUI2FSFd$EdAQ~IE9#0+l014O$c<%gt z|Im^UAi7%vD67{Wadi_XS8&Ln@>KQ03ILbDAGET0iwa^*z+t-tWgukHE(|jAtlLaz zA3}OH2tox|)IyB~CMqU@B}f;63wY2fP%a7sY76y%>ItyIXaztp9u+(aC}s~o>-+rT z{&c_xVNy^I1d8eKx&2MZ>ldgIN8u&kdm{Nk2@Vkgpfp?n!aztgHDT*nwQrP?npz8} zIDk3KSq^xDQcz1vtJ~@0vOGu=fcnhi!U_oGKuQ8W6{L>>5-UJdOmzeWk#QOJLNd0k zvD_at9pFa*Z`_=OWq^6HLNXqJD)w)>7m7FbuOq;dL%|LrEg%XN_-1e4i-wHPK?a(n zUF8I}6BJ6jLNR~*qQ~)pys2A(l99DATjLSsqjpe6TiV$0gYt&E?Mw?eQ${Wwf}Y;j zj^A1{KpF;}N8uovRtUuhaC$TNpTYnVfBo4UKnJgYAvC~f?-}GK>9e*1))UfeU4Bsy z>;|e0U@}ct?UH{0LCe`3{`&g*;N4L{r%1)8;s*#=kh_F2KyaY1jg1Y+88RUwW7jyA z=zt?gp+K|fYd=IyfnNYI5Kv78Ok>2rFNdT~Kp=tgDql8|&;QKUx$RsJdh>Was{s1! zgF$-bpKXBwYsZX$oi>jLZuPy{!X8xhxo&-wkU|&I$C<$fz?p!4`j>$LC>4QZkZP*Y zKsoXgY%n)a<3bqk_Y+?T{mzf1dkAGnh;I;w11aO6{2sd80HP~D=LO!=7`P>DK-hyQ zp$q|sRF7OJNJ5MNxV<1T3S89!;PPUijKz_DrhM z0OA)78IMEkH^?9X#n%H)=qNbAnYaGn6d{pzkfA-46G2fbIW=_>Xb1rSmGZdI1t9a# z*-^=r$N>a{J0Le6f1-cE2R4@paPfu`E9gBXYXL`e7_iDH$_2<^0f=Xi>cH=G3(6qX zL=WLbe?cw? zOaoy6(8&e+zkB_}by`!w4Mft%O^RKA{(tr?*Yx_YXZiNc-vavED2Skf;KAW^X&8ki z*nO>kuJ_g6R@za;i(gQHaPuAHGZ=Xw(FEJVu}c2+>z*{^MT1NpK$Y|w09^(dIrfPY(5?Nv84LbnV=QMQ8I6bSjqIe|yFk#lo6$b^q{ebJA>9XZ|+^cR(H z&oru02D(q>MC-sE$K4M6+W;8?uDGT-dfR`38N(h>mtvva#oV+{Ff+w>pDERiH95%R zVh1I1FeV*1wGw&t^~tTRVh{vqJ({fq`adq#!H)k~mwOwtof{O`!Anjo)xh{3wr&Q;gcoCrQh z{9k_PHi5w_(${iODgcC7-iygv&=~_C4dM~)igExE$e%6a4}_0a;KV}l4aBJ&AkcFK zEEz-H|Hx;+r<9un?%fa#_7`Y9szG&DfAL@cIOmRA?>MoaiqI_wKHak>R|XW&c0dKF zP%D7Ep8Z(K1^#i>RzqY!R6SX~t@~8-`E#z|H0Wc>@ekOrKx&YBeauIlh5*P34-anz zSc2UlP_9F?A^=s2oIriYY1BBp5CqPE@XhZ)NdQ;5UHni23RQsc%e3CUoWekNKI`Q-}Tk&HU`Yq8VU~K9lS!6w|-1-RD{IbR6mzPy=2mfWus}2sd8!7qR-fP8UFZ5*;uI8PK z|51Daso7XPNknA>@E1^i;g1h~GNjA`sNRPLQgU+9DGWf*skphhh28?-$o`A7fax~2 z>!6@UEt)wgVOf|jesAf%v*`ZMmL)yBwG<6qY~3>IAV+-+v=>XkddFA;bXdTqf|X|k zzlGZK9>qJk&dpMz{nt**Ig{Tc0wD*Qs1KG5ZsAXt)RyNAjI=-Afx~}02jTwuXMb?_ ze;>X3|JkzJ@?LEk(f|zot+wwf5BH_$Udr>w5Bn%(D=MeVV0gDd^e~`7^nnRJDaRp` zl81C3(OY2@_Xw#ALRYK1R3BaneeB^tRm85xs|qmkVUqVKjCd}R$0EZmZdI?p*ElQp z;@093E3r&eTVb-hOeS)+Q-W5zqvFr$p>vS-($j@E;WMtHRvj`3He3|tXT=*qsijM5 z!rng8x_j-@Rateh_MXo_)(W;pq)j|mNID$)7XKst-+nzU|Gx+4_Q(Loc1VB+KpUv> zX^8t%48-n(o+OyfC=CikQv(!tyc&uU1PT)UL8uXW$yKK-XO@ zegqa|OZ%zto#?`Hc^AP(7oVl`A7#ni^(vg4oI~B+U4h70)8Sk5+J7hEO{nXIR9T)R+x}yz3nS23Jid(ZAVZ$n}J*Z>}WX)y1+rx5DMrg z_(z9Bj1z$UDL@AkpwJ!8WF0;gQ0Lh!YTvzm&QOpm-Uc(Yj_;mKevZ;Uh4yLnlNRAO z98y!+EB%Z5&wE}PR~2pLL4DkWD}KNViO7=zJ@Z%RnJ(J_KTBDH*V6~cVL6mEs??c| zc>8O=yl=KV_^?SAQG}j5{2AXP<>y5hCi3fd(yhl~5BRm->4W+EiHPxb&M&L1&FQJH z?J|0GzY@IG8EmvNXXh991v3Snw&h^KwSFyh)arz~vQVzUNpbG%WPY=)PFkFu=50X= zQcWN1o_No3J8u1T`7yfARkAPox5Hl4tMSv>^Xm(Y<%6uS2N*Kb(!Rf$uU&_Gi!*qc zo!{=n+|}geC3JJ8>gr^STaQ9SnQO!h%kqkKr~CcJlO%pmEH|YjYux#byyfO-X~F*Q z?MX$c_V!ng7x_0A&A%?TzpURBm%7Z97;S%(`1tAD%Z^-}P-oMB2J~SD4~xV)A$;Gc zQ4my45COh(0Z11lTM@JC4o?qeKg`0CPd6W%K8Lh}D;ROr6l?FK;1Aw?@M`={P|aIBL!{2*6~&i~ zr5@9-IE}P9D;UWlEn1WuC{ppeV=R8**4!;*(4;{_N3_O#B;P+prI$QAVWj6dK4vsU zSIy6DXBIu@#4qLxc&53uEh0*#IOlnG$?sk6rK*2N{XR)Uq{Ko1i2P94N@nepyGk?*yU2x-|Z z;~hJ~JG-`m0&tO-S%ZK;@QL$2-_mcW97X==a~ocOBbzcbYZ0 zUhwD?bew(NeG$*GtQ97?(0#K2Kw3A$K`9Zr;;CBSh`O|;mF%LdWB`#fbg(@BIy zjU}mp;W zo!>k7Q^_#hUi1An`ENoZ_fhdx1I=z~sg2cn_ksEhYgza8EL(VvEfvXZN#ljU$e;1p zT-zqptsuIOwCvNFEBTB0E`sqqjxneeZ?Z<{3^ISQtF^&NM4xDP7~ZYPbBeY^$*&5T zMGvO*)>Mi&6G`JtOxrkJz9@~l%$UDfaW)Goj`Ad3=|g=lJy`jI(>%Q)RhxQibz*Q66P_OR!z~iPz`g z=Y-@lb4ewMddR?Z?1-7ig_CCANrr~8>O6B}`u^*D5=G2(XZESteDxM-o&&7IC|oU~ z4Q|RYcP~`GEcLhymKHO4onfESwyM&7`Ab)MK9qf6uZ`lGTlc$Opsih{Zn+_XWDU)k zM$1nq_zm^7&Q~hkDm8J};~o?q?m)UHn%9=%+Je=?cZJ&`6P?XI3n1gz{Aw+=$T^J^ zIM42|;CE#<^pFYbQ%!zmNGHS8|Dw&*pb}gCAw97F+WZ7QbdhPH#LC>uz8WbJ_hS`J zt;O*YKf6=zW*i3x@$KW)QzKT~$y3&hocX?4#iN!&d4c?r?)~s73iAg3pVeFB zI?5mNXVnoG=ndru=r%NceMUv}TMC9nbQjO>HVYKpIz<(x#C)*7f->?0$qNy8NEC8&}-kgv-gRN^L}csKr$M zChd#4C_>AtDvsR0==OFahNcl=k>%YoOzk)0vdDGgAs^S8(LY&n=Bq78 z$%+TlNlxhacZZgZ;C$jI*|DZEe*){!CiOSv7QD=n;p!kb<>@P^Uo$If(IYP%lU$`|>+>`lVXVb>1VVYzt~_5e>vOWZyBTl2pn*+4B-=_i9)lyk8w%UNEd zX}G~q16|y+R{|ZyhTT=A{)Tmux=+?@f=a(BtVh`w1kH&(?vS7>WXhj)e~YH8WT5Nj zFx;$L8c55+maZ0t+})Tg3G}-@r&9^Y_(LhKon6Y7IL?44+LeHCx|ie__jON)pHo}N zRPdD$-qiXk2eog5`kQGHGz*r~#sVxBSMY2Wjivfd&-A7!E7w3nYBnx+W0w+?8*Z*Fjxm5y+L*Y{-aRk9M zK|jMRPIDJbdGAX!YL(-KU&`f|NFI1-#bTf>ja~)Q^iz5J=Oma$sQs?YE-bMThgSvwTyG>j4pYm z{ztr@bNPKThi2_ll8T2+WpZqD#yp0fJw=z&!Za2RTQf}krkwuMFeG&6XVr4bFsIaC z4zs=7nSsLYYiHAmA)6G$v2H2Tqy`5Y$=~iZ#)g9iw>&R5j|}=}!uclTe!=P^E*ih6 zr+;JAIfp+hlIihrlSzX`j|<>04Irq6u}gbP3au36X;(~@G)Xj1?1x))x4zICLrg1{8F48iEb;)Yb zO-Q%)X|jjaQ#X$7L6VC5!c)#!k25HP|1%{u%$5PfMw@e)znidg9u0An3o6*qa(k(^ zMU4hWMalVloR6h9os^*`HM2$Zh5;E;`ww@Tv7XxGP6$SRN%~`dQe0ZnN2A-J*5fl3 zGLnh_?XmD{!tq6=Txj8GDp}t+i%8rMvypChqUUVw!`Gxz(f|uL>kAGL)r|V zzTvokxfYdPiCO9Rve{$&rbM;`6lt(3TKimHy+Rk$O1AiwiopHbY}hu!Lg^5;yhrG1 zg*5R#m@?4tP{}6jcWXLqTmr17!Xo(-BBq1A32t!dIZoyvpjh0zA!pCtxTp zS1~0AAbGHZ>5Uy|kQMooEsLefjFo3(OBn%4TAK3Acvod=EM^Wu<-ceuK+CK+d}-{bKLx&p;b0?gEP zI=`vBRx}YQ$Rt7cUHp#eL8AU4+?QZMkW?Njg+tGf>xXtWal3tD+M_gJz0_RSw9nvh ze-EbXL%M5stA_fav+cpN&s{n#F>^0Gm>d~DqW!ppD>_7VvE4fOO1lN@(8M&vk}1Cv z%HXP0U%Hs+=H)U`58?IHbv0FvKB9JF?60lbpH5RLbL2Vd;0vUuj|W_ZI{>AL8e*q! zAZ2?nDkjuS!byWPZw$$Nj^@%`<}yr$?UxNSwGkA{>LFZ(~f1?cwI0q32jVCH0ASo z-J}K{8GiqJ!fp(95{G*OWR${2lSP~$#0fN7wy6Vz&D@4hZn z>Opl{CS^hj+B1jFz1@o$uSjdDE8`j8(7iVgU74pzdar0tfJTOW=cl#V&&bk3&vS9E z+-$<7I(-n_z zifyS#*Sg5CPuk!HtM=k8^vsxlUSn1jO^JRxiHo~kUtb4P8X5~-TwUJ+Wh%{F;J=c8 zM&)k#%;=sS##=|F>q@A`r_p%JA80)IV7ZAX6S+({EGYmb}> zfL;F;h@U$Yq7l94Kk8JuJ(qJ_PY%L{uK>HrbJY?1VXaf@ru@jtT@sb7_Zc=1RyfdS z#|YI{`Al*V?U$)n-jEuOup#7)DWz{AA8zQzMLU*<~ZJyg!+4`zcqr8Df&54XOuTb#4? z?M=nZWDcFE7zpg^#oc71Pg%3BjA`VXa-H7dG4F>@>#;6^9dC_sw!j%J~e) zOCFSYE2_ROJH#wg7r?HK%e9u;b)1o}bh(I>n7&vaxux;(#?-VT_xIxQ+s5*r@2ouP zt30x1^(e){?>ABIF^NwyRcGvoi)ag$4-{`_yR+`ThQ@8tU>7&dETomCQz4R389&Qx zM`I&2lg7cX1q@OU_zrJS%VT9r8!|de1@&c;aytmi79rLeYX2*kP*ivhwOW)_wy-aE zfWMtx`nQcj@)~C_=%muP>fe6ZeFXN)D5vxf^pojsp@Gt)NMjco%P%Aa#G8>4r_Lbf z>XTbWup7wEv}cd|qhGkjB_e8=(~EZKm{)}4^4+jLxuwgj6UrN~{D?{Pkw-Yc81h4H zBg8b^cTFs8Bj~4NfGIEg)s@Y+8g06Ig~&Ew$LZ)QdNql3eHY5kbfhuO$pL9$LN^NI zXKDFphqXNWR|)U!d%^|g<&WlB?#q<>1MQIjq!t2lifvT-OO&8rK0*CJC^820F}R&Z zE7yAMXN5c`Ph?P8pZq@V0A2@lp7q^h~Z1v1F;S z=lv%{q*Z;{MpmV~L%snKV1MHVxVI>MVXv+fn&x8~FNj=N!?12bhCcaV9$#}$F> zdXg#cl#P7Cxf}W84r$avxt1uIR)j(}$IP!z4gQF2?v0`soyR^@Qwx7q*+$k+*Y_oM zb-t&m`OdiB_E`Oqpl=D^xBFUFa~vjz>DvYtzpC4XdRrznT6LsnT727h^i!!77QJs1?g{be z_NBXT#rehE`IL5E$nZEhVnKt-I>3(g8=d)cx3?h~lK4OVGh`QVhBe>?#HoFpwk`iH z;@X$*jY3sGh+$TxDNwIh67d7Jub1vT%xjp7T$^>3jn77CKE^#udoi9S-9$`C8jnZLzVKWd`cv)S*}@e-6|Iz_em zS)fXG*@fF*BRH#u@dNfBa{^ie63O}22 zpdC3bmk@J!fZy=dGXQ0bs#mnH2c^{HdAN3pCV`$j|Gq`c3^FQ;ETAHvvYZFMwnVJE zZxTj5o=YbX4gUMgHutfsdtXn$t1$sEUw|alyC>x&N#WM@OO4Sz z1VxPgw^W5qnkE+FLt_tCcl82!1nyYjex3t6iPEeWEneG#&5jwB8HN24pYD`VD2d>4 zx);YVd`nm>*K)L^F|L-KD_&DiS!U|Q-Qn2Xp*WStut^f9y4B9nMh4x;t=P(D_I!YG zd*tn@HS3JG&u=~=5p91-$v4rz#i|!}cMm)RF5pxLWn=tDI&uCPO#EYgKe4g~9r#tz z^%y^QrLJB6cikEESioZp*_@Z^iBNA5be}n=&)=!U)FgUITk7R%eB5enOB&{;NP36L zws*gG$t@S@MK?qGBm?7ZfD>8*^4e21mS$=lHUwv|(X8{b{z;UC2<2th!H#mr2scg; zxT15EeMg1)%6fG(;@Dj_=a&KzQc`_1>(RE_{aFQJA)mLmrv(RPsx?ItW0es@1Uwsx zFmx5J>%s^;p|MF}!CV`U{NaVq0@=D$))r$J{?Uw=&4FUd4T@>Gpxx&mx}0qXIvD$T z@bV{Y8~th7Nz=1X`-3A;&r!1NTrW`QHipc8g`|Xr6w1pp6}(UNA4C*~)Q* zdCF8hTNc<+8dBcJ>U)~!XLjCcN4316aHmc>)~;%h$R%|lFRsjQ9{r8GUzD^sn8{^d z`hL6Yv3_t###S-+ln&!ZPUY}t;jK7zDs{q46SdRsr0B+)B)pr$H9>!{Zng;Os@&59 zJlH>o7|?#c7y86>$%0h)lMSuSuk!7KcSNJ?Rd3Q5&p5T>?bS(YB#RM#Q*K#ZKdlF> zW_AB^`h$^{>=**B1hl7Zm-5Y&wi#`112b=2F4nTdPb3=XC_Y==^gj77ts*o9&iAxp zp&{6SGwdp=CDo-98rpxQ&;_nqaY|;(H4BR4`Z!DU3^0%I;LM#_di(Ns%73!a)2@fn z)dj|~bqo^uq&DZt6Fwn1r*VjR*f^7q@(C%3+T&0wcGkD(fnCfO5 z@qp%991Qg^BvCrk-MZ=K`Iir)VIfqhf}y)(Ah?XY8p<6y8!^8=wGB&`M&~a^=_mN~ z(DP-T0=m&j?ZP0}Qm|&9;80jg+d*LEfA%J)k2D2jWMS)O4iZY@tM<%m{gUE5dvh6d zgSdi=ZFddU&Q7Uqvu(K@=8Z_5)3Vi384H!z(T6(WD7Hjl^!(I8g*QUYBTvViW~h`yG!2U#z4rM$dpbewjdjV-Q8 z`QR+sgmBOMo>>$SPF3~h&(a{PGB?K%{wI99r(3+;B2)~il5aN0w1h^LaRi80IE#W) z>3LA=!d&2K?av;e%d*-DVrmo8SDCHb~y22Pu-W(V+b-&VfBtefBm0Kr0g{0yaYI;?lx*?v?-e`f{ z-uByROn!V)nk|o!ssyy>Uy7?Xnl86NPKn83agZb0`|Ya7Uf3tS?KHB4#tNSJ zz_LB^O3*_ljU2I>^@P-(k}2e%MN?;l^E=DF6W63@3^R#&I8OK5sJF0atO8%9S~~DR z(j@nZtl~76G%xNv*mESoyLt)5HIA;)8XQSs_}t-;@4_hck@3SPoV3{0dId0@;F;fI zD(XF#zWmj-oB}QOwu%)#p-9_rtvJodSAW1>jj@pi&*&jDUM5=T1SyIQaALfeeb@x#>+;I>?MVdy4i9!3m+>>2mi-y!fq@AtpPG(%C-Odg$ zip}3IrKjx~=M_NJ7OcTTMMWKg)p!y=pMt?<+w`V*QF=1+cvhA^|49CKRT$s^?t|>S zC6hpiAGM&szCLBYbVBsAxesbt!GvlxrVdBT?m&5GhFN26u3bmp_i?LKLKYl0TVekg zv7TA>7GXQwmiMgY(^(c({9nHHp}nA9Kk#CnUrIMyV+~f2uA4WnM7$C1wD!O^I*@MM zz!2t;40GDd)TZzt3uD%iDIOCj5~7m#urCNRR4B3wlc$>-K$Y$P+ah$y7eXa}-x+;I z=xZtB(mul(QvlDDv_cU4YcbtWu>zgH*z$=bntvP&yYWmcKOsI1{qAyHnx9M$^Ej^4 z&`X-Ig|HL<4@0JGLrQ$LYy)xTdxVcmtoR-8t|h20te~i7025VVZ8W@rLu)xkvYamI633`S30nO`45tL2I*!&+!RzN86R$dE8PXX08;8#)*& zTtW%oBN~|f*$^XT8^OEv!pMv>6@34yf%Fd)~vYU#g7G6i==Kmv>bi}EUt+aK^ z4v=_09K4j#zDd>dpy^PmOMzo+hGJP*)wi;DnEYezY7JYr{vsjv@l$wZChkb=9kIhP zscp^|ueh!dqhQgp>9?|f!?F&g2j%|=wU;8h+t=B;>B9--!1H5uIY>2BUca|RtXffw zta4yC9ta%|Zf54|X_XC)OAB_6XQJ=x&*#oqNl)>IAE>Xv^Na3QRue^<;*)x#$2PV{ z7)Gf1x6%o@nbJgr6ZmhS<|*9q*U-+LVI9mS1_H zfII84Czk0ooglVAq-J-Bv_Mm{w@jj1{$O{a!10H*KHhnfpYdIyoo6b-yiYo5v2lC? z=E+FgH7)VpuB$Oj^*>98o`~YWB>Ix#U69H0oeHD5!!lv#hPegpd%`eBHJ?0Ec?OGb#$XNAEyQRw z1$KGPPhDT8g~pX zlw!UtHzNgPxt2A)XCkCVbr@R@jQR0~B=R-o{kUE$emwTV6?&rW#z@cTs?$j-LXjW( ztv%;LxFR4w>!QTVr>lib@?45hgK==JB)Ld7N;)qqEK?~j19(u!_}Z1OD)YZy>*T<0 zf4D3&)&_2lHO3U1$qIPtS6DWHU{kxL@yY3qKk4d6WHvtf`ZYcWrx|Pkk(evDA(*zfhem z=1d4}QsBK1Vf5PKvxNLvM#hD>tV-ex`=@4>6s2SED7?^dcoe6sQ$Lr=EZ6!DLi4^a z?bt68#UlO)X_}Xx3tE3Sj_=z}Q6-5WkR>ua{MuCPSAX`OMAm0=Yba0oa@!#K&&_EaxM z6T!vCBnj;A|5m>DHPBlWV$06gVVd|#tIkmQQhIr+g+9PZKP?@;Jf*Qy;aeY>!g}tW zskFe!Yn#(M_2VUdfuVkdUVpLRc$rs>KW%~5lPX=9z3!QPt0R1zn!9Da;8U=D9J$L2 z`{mP#kS1SV*J4Z)nhO(KUi0OXONk9~e0mpVsN|Z0-#P4SSYQP&;QwC| z&=PpeaQ49Sf#-VX@JPMolEYG3Yu}KgOUC z>m7%HsjXjf07jl*JOe@HDI@H6rgMkvzq-LKTIp3oViR}k<->zT^nifzPp$8Iwd(m;uMyb5-OlAw;hi6+<4wGh8IxTV6}#f!!Ubqims zXH=^ziFc_qI|xvzMxRi{RhDV$8hSj^eK?pcdKmk#fiZeKkxGZi_C%41E9L>#M7QF3 z_=!JZ6{Zqy=6>L~F*Db<+1puB1Q#A}HX+TAt-bS1zQv&=Ehn zZG2*z6{c6K^WDfc1I?SJmonly&>9tXUa5pyZ8^wj=mFQiZ)PQ1o!#I{VxVlBirsZK zESx&AleEr7_YOb5oAs%KuwABn@|A?WTMiSc*zS(M@enpCg;lPW%`UUBEGeNNyv>5P zD79M21^=CiH&!6$7u!cT${v4+iJsVhu-lQ@5bUWKcW_ov%FW#!qx)eKcUXTW%GuU< zn0KCz-rs*y0KVHMBy-`c1&mIjxm8_SoO>Gmdqp+&K-#6H!+xBU+o{acHGs7dU-b6Z zBnVE1<7Trt7WQioPKhzGk<4F4^bAC|U7bHO37Ym~=jc0CCUVF6uYc$WwB5#vMxS|# z-YxSkFP(*T1N#knNJwnbSWU-9UEREye)}L@UAJ>Ug!nLQaIK*P5B_-TdLf(MyiS}( z^28--Gdg)1VBB%_@DY#EjF1$P%?ao9Y=^ukwryp@Gso zSv-3kr*2?{INA_~zEZK(qbG++i>C7YD9U$vD-OL*gi#+pRAn50`0&B_gUN??H5iCB z``@owzSB#i-SjM9`(9Cy?djgqu)|vPA@7n`LHPB0f!)ZiABX1s&W11}X`=^Z^%qYN zMh0Y!hw*bg2j1>6nASY=vde+n|8B}P5~KXT4<$n7h+<+(*h00ntKABy?$l0G;h&!` z8VU)#mgJR(2`Iq@UJLX0w=}a;*M@(J*Z$yuws}8LowB1yZd^M$?ZmrTQA1C;!}t*^ z6R5(!{9=fbi4!8GDUPr02n<7w^?gRa$z+plRzrj$)v?gC5botTT4m)Cn9g-|=dsbP zBi|c?{Ck&##Vq9|-!Sn7!&bk!WGfzzqj&~nL@juC$UiJZQZd4MsP)H z;Arnh)t5t^W4peouXFj2-7(%d-QV#1Z5;QY>Y8_YfO!N4gX41rzRymj%(0~0`{Ier z=;7m1>FKTof^T`jX}D+)Yyw{vUAZL~@hHIBBNt(wPG)$&nyD+3kmVuvs@j~S;Cqxk z1+}rc|0vdqQh?&`SwTJ$_vl-NGtHRD{sxkcDSvvyvX1GyPVGC+vK*HKuLmCoc5mH@ zI;zM!Ixsub1*)o=>CRG5Uc5MdF?88x72h~r$r}|lmitl*>#`O`@k)}!-v&K~T z_j+C%_4Ev@G^kvs$t2fBIpY3&oRFif?lQb&wmm*+T~-q7tv2&z=vnDAfQXu7wghYIwkhGoB7JV5zdy6h|M{-~N{kLPv&6l}l2_1e zEBm5!p4?^bcCyYvI{)dTK$!i#B4!qH{6exeyrJI1AB7X9$Zz`HyFA1M<uDA^6;CZAKPpX1FXp7G?#{R&iMIp3Kwnn86a* za!@{1ZQvZ(&b*_q7H(xnXl--1##jyA^ozt$Oqw1|)Ix?u#q3;`wJ|1l32$l%ej5JA zL@7?{n2ayU%KU$ftw7-5avV}?bCg5|n0i0|hh<{b9Dr#0RYkSy&#mj~s}^a|{qj*k z9e#c=V&r)FNB6xTtZ!~{mx}LX5C zBE3e%yVZ}zYb!v0vRhm;yi@atqHYakm@n&&q4!D%jO&|PD2ImEm$h@p4y2$guc`xv z(*nwfV&($F1Le{DhHzV_ZKrz^hS&U6NeQ<90p~t|4b6=#(slJZesC#)hu=VEfA6j? z=02w6E1TT#?RVM%ufHQ^Ffhr{bnI4EA0!XSNeLA5|CmcZ-=g#?D!CT;I<7DW2P=K2 z;FVvN8ceIf}Tvr&|g_PCJeI!hE&e|V{sTak#xZd5`Oli-+P>$@|0S*i!L zOqPRjo;c(OsH8l0Cx&wT?vrbTibjuYC#&JgvDV$4(?$w{R-um=+2HRYRNR7$jz9Qt zI2z()BITtwop$zx&$r_ry0$e|a}YEe`yjAVBkUFqFK$ihc8jfg@?3UEw$4I{CW9b;xx*k*!< z_=zT!!HBNzTb+}A_+3oZDYm`G0oM2YEKaUvV>_+B=2(NGXgJ4wI>T~WbLdfh=Dj%a z3bv~4`M31e1>(ckzhTrCT-$)rEopX9b$P2%?;uRItB?%Lc;rm z;oOK-;x!_4{1BK_tPjrX?zb?U$!hG{^^Xq)GTGXLXA{{x0320PGz1VSrC?V)&yh~J zJH^gOwGuyUie;oBLSf`^7z-)%(mq17jMdh#1YRL*<;r%qR*vwoEZ3Yvgqf0JYMAX8 z36=$N`X4P7RU?%)zeL@HQfX7DB1Rrm8hN&PS*EApHx19iI6uMH@`mAjTt^@IyatAc z-M%=Kf6&WV_^RfR+7NK)Sd1NY#26cP3JE{Pc|CNknn?*Ei^td2CurGLM2@Qf7kBsoUvsREZk(LlH+8oa2lA#%N=q~YWfZbVlP|pQ zR{UeO1#gm^cs$-6c>i2H7=z(ubuGCkW0+;+l`#qNlSi0-(HXQ{j&ZnYAi0>+&86g- zibS!Lk1MR2d3I@r(stz@6z`7`?^JYtMfBoT!-W)(B(_Tr(kf_t z-i{B=furr7Sxr&57kj;^(O`&PgRv1rbXPMOJe4V69h}yQ?)GhyZ6YzXNWN;xL=rt= z_>wI25I z#jI;qaw4T{FUpboPSOVQlWEIyB|Op7o}XDiWN0ug6?<{n)1}eLZg~ZZ#Ie4k%6J~1 zS*0HIcEJIkeD}w3;NcIm3>| z*~Xl7S+6$X+H&gminlb0FplTe z-IWLJj;6IoHyMZjS8wMX)l}9ka8$5^I*P~)7|VboQWRkjg=E0OFf;`PL?9N5N>hpy zNiw2>f`Up3Q7}spQ0X<)pcDb41_?!s5CJ0~B@iVLLXx)+Gk)uvx88d1{qfdwt+0TY zdr$5?XP`mBw(sS@U5M1Rvb=?No%uCwDRf|)pU(!p%2KD z+UEY^P~1fLq#N9G?g^W`!TxdXLPx}+rt<>kv|tFq4``GPC)PdGiOMvQo7Z+0_!egk zah&%a9*5<#t}oG7J9pCbs@Jdin2a;A3srq(_gb4H~3%CnE$%kP=kRjub# zs;4EiwEe!tigmrP?)IHkf9QQxvSPJY=XgB+&D_r9U=c1fIwdxPk{qdwJM^ahM&@hf zySW+lL+Ta2dS*sL6UDn-G_*)ItD|6lBZZfmf48~i+>{h5AV7gtV2v(-~gcdfY z4ARN0&NHN6m&epjFQOdHAeGg69Ly-l#|>HFe_Eu|HR(o5koBAJV*RP*?Gjfgc6)PM z{)?{oS;TLT)r3Q9o|R6yCmmw%XiNxS*UydEu50V3^Lxa;9A$5{=STQN-3R9?Qd830 zjk^^3TQr5c&mUiX<@MT9t;^omlElBd&)gYa!p_xt=^D%z6!GwBT!PzWt0vhP^OYTI zlT3y^^VJTs?hXupqnOv&vpGl2Yo0u@-)>UmR9ESCzIJm@?ALeJ1C|l5e;(mq_K^9! zNMn5Ie8n)eOAZWOthzCMbQkUhnL_At7lr*$r7kwfl;lquHB+;!KR^Ab#k%dA*`(|O z%1j6@p4re@(4NMlMUl?ALQ+#yWaK%OC<;Y+;lheNv$*Nbfe`+S&h0-QSsbWHzw)DO zv#rB$S30$L@}rL|^B_Cdr*CaQnNTIyr?u(cu2S>5*3-!c8`IWHwoMLFA6KrwIbb8f zaH{Po`sJ=OIj%FKt{tCdj>ZqW-|RLcS^G>4%nX)X+}_e^+HL;q(S!8MnxFM<8ea3e zb*4PHRnM4?v3nrj-1e*0O)J|6)<38ZtqW68A6j_8*{@m8^2nBEsJ2qw>tGY@6}j&~ zn6-<+-Ho=pbF5Xf9_ZuaRmk13c~PIL^*HtBq?!he1bK>6#M6e-{>j*0d(n zr#9z|%^kI`g0AFrCOTidU@X6P^+XusFxz`Oh2ZizjK$kXk(%5JXTGm1w=^Ypm7HsH z7nrrIO(?;TzfqiwUK$V=?`JH2HWGFLFB0xfAw8FrCKQNMVp8+OW!snRuk#pJl>O+{ z!lsQoXEiB1z-=nf%ucGX$l?+fpI85K_Rk}EoyTgoZRozxJtpO_cvatwiTzfYXI%?0 zv{KW7jpq_*Pt#7^3yt=;^zg`|WK`Aw#QkblZ^VRA=V| z<0Ti{SRVtIcON`)NM&RlW!2sc-we@vJXzNE%&oT4JeJ^OV|L_j$G+t)x{CQ(4x1_- z7$5iI4Hu^pd_UoIQF?vZ?816kZfA8sK!+nRYb#1?Wy4P#7u1WW%&gyql zX?DBbujiL&vd{9g1jg11O-j$kJWFHDIg=w4dH^6uX=lhrmyFL$xpyHjrg zBfm90{aA9v^(Xhc7K=4ak5g9Kg27<6P?;J|N9*9k`T?ELKeKTWoeW9{oM{+Wp5n;j5q;}O4(XpW4(UOi6ccQQ;zxIbor=b1P&_A%NkA(%9 zc773XtGqYMO^W=~YF31_rV^*6W-o8 zqAzz@MskJ|YZM|s?`zfV|sDJxcoXm}>Gk7ErzKn6iQ;HcU?;;~>mZ8GBdO}FF4 z?fqduY4!>Q@K&XO^p_9T11`kQtNm~xnrc$f>gBCGI*QYp5(me*zl^SA9IAF5Kv;3W zELk&j(9X!Y4g52Y+eVQPw*HG++|yO?%@xOugsxSP95ek0%ckYT~$3Kiv z43NCWKp@^TR(9E;`pXeixq_NKCQ!?9OiN2cnlc2QsuGmsaRD;aa6ZKs-w{1UpQ?_- z&7|SJ2;8$BbBFl=v$}(yNyqm&5V;Q1uRO7r6J*0f6)@OWz?~zy3ST<-*U1}ySh=5(8LwZLPqy>VQTmn-f=P;!=s~0Hv6UV4^zz_YGM_J5@%B zrr0gr0mamqaQli=96AAAKj%Y>;RxQQszbQIrk=+3F`fo4zcw`Fy=rmA@aBr}QepM2-ZtHmU zYB|!uAh4?NDt=l{28m!GN*FH5w{963(L_~Pp#1ReD!dBHiShTH^d!JJADExrpAUpt zaOafDrAdjv={xuF**t{0if-5hz`6B^QHBmo``~Xu&b<(NY~-R4XnH&J^ysLl)kfe5%7U>K~{_cZc9tc)9LJ{HMI(ez#YyRfF09+6}g}{R=a(qFEPic zuC6W|c*2&XCu$mre~@!eb4Bqu;cB9|lava3%xl=>!jotdy?^;DfbOLV;J)zsVZ@I1 z9m%m2hTk`R@Qg;E)G}h80=nbuSDbVwB5pzl+&_)DvB*Xwoxw}9(xv4C_xpjzmJU#N z0?O&(lHy)Fl=*84sx340isNgd5&+^_;Lb?$#lKLtLZdE5Y^jmB6ygP+V)z<5%0_DZ znBjZoe(bjHf(xTgSP^76gA6rl8C z`SRs~6JP9;dU{-4VVGsGPpsnu0gBJ4nPs?CJxv@&-W#f9h>Fz7<)BcgAQ*1zfSM^J z97bG0v<|sHFp)&7x+Q*|8q}TH;p&QV|U8 zO;!D>yuo)kEcOkuN6jo;w8+r^Q`1mcw&Ixr9v5&=pb)XEFg7%7rh%DRagy{C`HwaG zN4kol05vZHOq39}B;rqls$O{%HMOJ*f3UFl`{ID1=qdo=z<51dhnrm>7K^K3;3VEr zuoyW#wHi9f{WP)jr=nJZ!H07Tq7+p7fapB{@)bbT2QZ;;0JF)Y+7&;(g675!>h^VR zeTu+)Uy*nU@zcBM35t#9RU{0OPzT;1bpw?dEb_N6cFK7{Cx}oTSsB!cDPu4LtEtnn zS4}S=w-%dB>jUg}3{o1Qc#d#^!0ANhC_YaruHgyNa~xyD#y^u5rKTK6dyZ=JT3S|0 z(dK?%ymhDQ?!aHfMFJ3?CV`T~ADld_(|XguN$weC?CEdjUE+E|Pdk101@tEdZ}tsu z9NlYH{@v{y1rU5rflf;?GkEb?yrZccp<;)#Bc05O5OQ@TuJS(xj zEt9o?U8*#@A>L<+f-4=_U{QF6@F@8SsW@pmo()1!Nies$PDCe3SsPu~v-F-E)|efl zO16RrLALGY2bep8P>9&cG^#VG5n3S(9$#n#sg5CZ+u1Ivm?G=A1w^TcOg!VH&;i>*V(#eDNJ6uZ0KWP1<@oB2=MOI$j+wgB4?jtX6GT9VdRNG(GSei z{ENqhp+APfaO&&pBOY-2rVnc<`c@37Ul@7!d~=-9CVfNQ8IkC%o>n&& z=&X=Kbai!UyC%vAjq_E`+)e7awPj8=WM)tkr&N`J)f!w(3+glW!nO2oe!EzBFv5#TlY25S#4FMKDy5^i1LRWO%=^aCLn0gkmy zdeH}~3l}a#CPe!N&;6~*3QMofMXJrr6@g6%5k)%P1J}yV( zO%dauU@CfIVxsu^>LTzx0~R)=)b`1~Cx=f$Jx({hSP=k8Om0x#MOD-@QG+<5o~e+* z2T{{GoS7W>^fo#Gva;hx*CKlmXnj_2ApH#mSwQH(9!?jW?rkmz!2t%(L~Kg{4Wrl2 zHH*#e=|Ih)L!!=yEN*W2v)T6~s%=>AC(A(iKEkD(u|Gt3``@%zeGRu#n<~E&g(=MZu(6yeQ&w*XRr%7-P#m$>LPl_ES#7X zD+0b|11nrVi-8fp#mpNYvLRJ4913+`Gnqv}!}bz^pEL<3N+`ipz=B|^)G~clqbH_&`q0`nCvdjZm8LvtY= zCZ;nS%5~jp$cTjsM9nEBl>l(zeFb@6$ub986$-qdXNiJT*G?lb1Q6odHOnf0M^ncr zE*^nKnS`-`k?u+|$V2$3&KDLY_)-3mT;IkD>Mf>uu*&ejCTil?I#pG7$bHaSW6e@I z;y^Gl3ZTm3(|1cXu-pD2cXgj*a{u+G7g&+H|HJiKkPX}Mzdr}7X8r%Py7(WK6KKUU zx2JaH$)oXq)#Lv4D@`xd2K#J;L1z0_`j|*jLgHK28>#Jl`>$7+UQ6Eqhd;R=Rt+K& zyboreNcVeFG&iD#YnPO<#pCO=th#XRH4KNnHyb5(f8TP6h@h=n#f1V%7(I zYFb4ErwtYI4OozsM}n7Sk9-w7BU~-Mn!F>8|*|zw`%LjGV}&lMB7VU@|Nf)nkVXil|(kRKhEV z?6vijgo~G4g-A3GlX@ze15pAp+mDlMmO*1~ZuUajA#`VvA#x%&xH<*`Doe2bU)3PU zA$zjnA`H!D;13JiGO;DcIWTh@A22g32b^sA;KP_Qz~&33T02|S%MQM?e80s(hTb&fSRUg)@?_w zs*uJ#J3iFXj zwebYF)hwoCzu!}#QE^jz}^s|4tT;tFB`4JmF zA{#Pzetf#9@>SoDps7VM{pE_IK6d79oNZRS)6xnm_z=)gp-?Ereh}%CGn%^q`ui&2 zK0Kjf=zj$!y3A4Fxx2xW7UK%vj}*8GUEOv^u!PLb!7vfF(j97M+7Yl}wihGWh|H8o z!H6j6eqpS8gQKIypAAt&1@}SRc>QXde0clFARB7H3XcAQG5uxI*(fi5IM1K24;b#--Q z4HFjOL_1+6Qh0^;eU$A>TC4UCrL1G*Ka{fn#d`nyORxOb1N3`~|6ilR|H(-uq|Pe^ VmugilU1i{(`F`ttxu(Y>{sY^vuDAdI diff --git a/docs/source/explainable_categorical_alternate.ipynb b/docs/source/explainable_categorical_alternate.ipynb index ce601870..a5b59a1d 100644 --- a/docs/source/explainable_categorical_alternate.ipynb +++ b/docs/source/explainable_categorical_alternate.ipynb @@ -67,7 +67,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 2, "metadata": {}, "outputs": [ { @@ -106,7 +106,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -165,7 +165,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -221,10 +221,10 @@ "\n" ], "text/plain": [ - "" + "" ] }, - "execution_count": 3, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -295,14 +295,16 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.3010)\n" + "tensor(1.)\n", + "tensor([-5.9605e-08, 0.0000e+00, -5.9605e-08, ..., 0.0000e+00,\n", + " 0.0000e+00, -5.9605e-08])\n" ] } ], @@ -316,8 +318,9 @@ " consequent_scale=1e-5,\n", ")(forest_fire_model)\n", "\n", - "logp, trace, mwc, log_weights = importance_infer(num_samples=10000)(query)()\n", - "print(torch.exp(logp))" + "logp, trace, mwc, log_weights = importance_infer(num_samples=10000)(forest_fire_model)()\n", + "print(torch.exp(logp))\n", + "print(log_weights)" ] }, { @@ -329,22 +332,22 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(5.7879e-06)\n", - "tensor(3009.9888)\n", - "tensor(5003.)\n", - "tensor(9.6203e-06)\n" + "tensor(0.6093)\n", + "tensor(3035.9878)\n", + "tensor(4983.)\n", + "tensor(1.0000)\n" ] } ], "source": [ - "mask_intervened = trace.nodes[\"__cause____antecedent_match_dropped\"][\"value\"] == 1\n", + "mask_intervened = trace.nodes[\"__cause____antecedent_match_dropped\"][\"value\"] == 0\n", "print(torch.sum(torch.exp(log_weights) * mask_intervened.squeeze())/torch.sum(mask_intervened.float()))\n", "print(torch.sum(torch.exp(log_weights)))\n", "print(mask_intervened.float().sum())\n", @@ -353,22 +356,37 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 17, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tensor([-2.0027e-05, -2.0027e-05, -2.3024e+01, ..., -2.0027e-05,\n", + " -1.1512e+01, -2.0027e-05])\n", + "tensor(0.6093)\n", + "tensor([9.9998e-01, 9.9998e-01, 1.0014e-10, ..., 9.9998e-01, 1.0013e-05,\n", + " 9.9998e-01])\n", + "tensor(1.0000)\n" + ] + } + ], "source": [ "lw = log_weights\n", "print(lw.squeeze())\n", "\n", - "mask_intervened = (tr.nodes[\"__cause____antecedent_match_dropped\"][\"value\"] == 0) \n", + "mask_intervened = (trace.nodes[\"__cause____antecedent_match_dropped\"][\"value\"] == 0) \n", + "print(torch.sum(torch.exp(log_weights) * mask_intervened.squeeze())/torch.sum(mask_intervened.float()))\n", + "print(torch.exp(lw.squeeze()))\n", "\n", - "with mwc:\n", - " oth = gather(tr.nodes[\"os_too_high\"][\"value\"], IndexSet(**{\"lockdown\": {2}, \"mask\": {2}}))\n", - " print(oth.shape)\n", - " os = gather(tr.nodes[\"overshoot\"][\"value\"], IndexSet(**{\"lockdown\": {2}, \"mask\": {2}}))\n", + "# with mwc:\n", + "# oth = gather(tr.nodes[\"os_too_high\"][\"value\"], IndexSet(**{\"lockdown\": {2}, \"mask\": {2}}))\n", + "# print(oth.shape)\n", + "# os = gather(tr.nodes[\"overshoot\"][\"value\"], IndexSet(**{\"lockdown\": {2}, \"mask\": {2}}))\n", "\n", "denom = torch.sum(torch.exp(lw.squeeze()) * mask_intervened.squeeze().float()) / torch.sum(torch.exp(lw.squeeze()))\n", - "print(denom/0.25)" + "print(denom)" ] }, { diff --git a/docs/source/explainable_sir.ipynb b/docs/source/explainable_sir.ipynb index 41fe28a9..35038d0f 100644 --- a/docs/source/explainable_sir.ipynb +++ b/docs/source/explainable_sir.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 19, + "execution_count": 42, "metadata": {}, "outputs": [], "source": [ @@ -50,7 +50,7 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 43, "metadata": {}, "outputs": [], "source": [ @@ -86,7 +86,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 44, "metadata": {}, "outputs": [ { @@ -127,7 +127,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 45, "metadata": {}, "outputs": [], "source": [ @@ -150,7 +150,7 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 46, "metadata": {}, "outputs": [], "source": [ @@ -169,7 +169,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 58, "metadata": {}, "outputs": [], "source": [ @@ -223,12 +223,32 @@ "\n", "\n", "with ExtractSupports() as s:\n", - " one_run = policy_model()\n" + " one_run = policy_model()\n", + "\n", + "import pyro.distributions.constraints as constraints\n", + "s.supports[\"os_too_high\"] = constraints.independent(base_constraint=constraints.boolean, reinterpreted_batch_ndims=0)\n" ] }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 59, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'lockdown': Boolean(), 'mask': Boolean(), 'lockdown_efficiency': IndependentConstraint(Real(), 0), 'mask_efficiency': IndependentConstraint(Real(), 0), 'joint_efficiency': IndependentConstraint(Real(), 0), 'beta': Interval(lower_bound=0.0, upper_bound=1.0), 'gamma': Interval(lower_bound=0.0, upper_bound=1.0), 'S': IndependentConstraint(Real(), 1), 'I': IndependentConstraint(Real(), 1), 'R': IndependentConstraint(Real(), 1), 'l': IndependentConstraint(Real(), 1), 'overshoot': IndependentConstraint(Real(), 0), 'os_too_high': IndependentConstraint(Boolean(), 0)}\n" + ] + } + ], + "source": [ + "print(s.supports)" + ] + }, + { + "cell_type": "code", + "execution_count": 60, "metadata": {}, "outputs": [], "source": [ @@ -266,21 +286,21 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 61, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(1.)\n" + "tensor(997362.)\n" ] } ], @@ -290,7 +310,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 62, "metadata": {}, "outputs": [], "source": [ @@ -332,12 +352,12 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 63, "metadata": {}, "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAABKMAAAJ6CAYAAAD0G4HMAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzddZwU9f/A8dd2XDfd7NHNISUhiEEoFhgI+DV+iIUBiIiFCIIoKKioICYiiK2IoALSEtLdcd3bO78/5na55YKjjvD91Hns3mdmZz47O+zuve/9eX80iqIoCCGEEEIIIYQQQghRDrQXuwNCCCGEEEIIIYQQ4r9DglFCCCGEEEIIIYQQotxIMEoIIYQQQgghhBBClBsJRgkhhBBCCCGEEEKIciPBKCGEEEIIIYQQQghRbiQYJYQQQgghhBBCCCHKjQSjhBBCCCGEEEIIIUS5kWCUEEIIIYQQQgghhCg3EowSQgghzpKiKBe7C0JcMi6Hfw+XQx/9Lqe+CiGEEGdKglFCCCHO2tSpU0lMTDyj5fDhw+e9H127diUxMZEDBw6c932XZNmyZQwePPiCHmPVqlUkJibSv3//C3qcy8FTTz1FYmIi8+fPv9hduaguxrV+Ok6nk7fffpv33nvvnPd14MABEhMT6dq1a1C7//3D4/Gc1X6zs7N55ZVXWLBgQZkfc/jwYRITE7n66qtLbbsQint/Ka9jCyGEEOVBf7E7IIQQ4vKVmJhIr169gtrS0tL4+++/sVqtXHPNNUUeY7Vay6t7F8zRo0e57777SEhIuNhdEeKimzFjBlOnTuWhhx662F0p0bhx45g/fz6vvPLKxe7Kacn7ixBCiP8CCUYJIYQ4a9deey3XXnttUNuqVav4+++/iYqKYuLEieXSj1mzZuF2u6lUqVK5HM/n85XLcZo0acJPP/2ExWIpl+MJcTbKYzjZTz/9BIBef3ZfXc+mjwkJCfz0008YDIazOubZKun95WL1RwghhLgQJBglhBDisletWrWL3YULwmKxULt27YvdDSEuuovx78BgMFxS//4utf4IIYQQ50JqRgkhhCh399xzD4mJiezcuZMBAwbQuHFjOnToEMh+8Hg8zJ07l3vvvZc2bdrQsGFDkpKSuOeee/jxxx+L7K+kOjpOp5MZM2bQu3dvmjZtSsuWLRkwYACLFy8usW+//fYbgwYN4qqrrqJFixb07duXzz77DLfbDah1svzDD0+cOFFsfZvdu3fzzDPP0LFjRxo1akSHDh14+umn2b179xmdi9JqRu3fv58RI0Zw9dVX06hRI66++mpGjRrFkSNHimzrdDp55513uPnmm2nRogXNmzfn5ptv5t1338Vut5d4Lk514sQJxo8fT69evWjevDmNGjWic+fODB8+nL179wZt6+/72LFj2bt3L48++iht2rShSZMm9O3bl3nz5hV7jP379/P000/ToUMHmjVrxt13383atWvL3MfC/vzzT+677z6SkpJo3LgxPXr04PXXXyczMzOwTXZ2No0bN6Zp06bk5uYWu5/evXuTmJjIjh07Am1ncm35a6v99NNPjB49mubNm9O6dWvGjx8f6IP/vDZr1oyWLVvSr18/PvvssxJrJPnrNHXv3j3wOrzyyislPofvv/+eu+66ixYtWtCkSRN69erF9OnTS3z9y3oNd+3albfffhuAd999l8TERKZOnVrsPgtTFIUvv/ySm2++mWbNmnH11VczceJEHA5HsdsXVzOqrOctMTGRb775BoDnnnsuqPbYiBEjSExMZPXq1TzyyCM0adKEq666ilmzZp22RtPhw4d57LHHaNWqFS1atGDgwIEsW7asyHal1fnyXxuTJ08O/FzS+0tp/Tmb95zMzExmz55Nz549adKkCe3atWPkyJEcPXq0yGM2bNjAww8/TNeuXQP7f/TRR9mwYUOx50YIIYQ4HcmMEkIIcdE88sgj5OXl0alTJzZv3kyjRo1QFIVHHnmExYsXExERQdOmTTGZTOzevZvVq1ezevVq0tLSGDBgQKn7zs3NZdCgQWzatIno6GiuuuoqXC4Xa9asYdWqVQwdOpRHHnkk6DEvv/wyn376KQaDgVatWmGxWFi7di0vvfQSa9asYfLkySQmJtKtWzcWLVqExWKhW7duREdHB/axePFiHn/8cZxOJ4mJibRo0YJ9+/bx3XffsXDhQt588026dOlSpnNx7NixYp/bihUrGDJkCPn5+dhsNpo1a8a+ffv4+uuvWbRoER9++CGNGjUC1F/6/+///o/ly5eTkJBAmzZtUBSFtWvXMnnyZJYvX87s2bPRaDSlns+9e/dy1113kZ6eTp06dejQoQP5+fls2rSJBQsW8Pvvv/P9999TsWLFoMft3r2b2267DZPJRPPmzcnMzGT9+vU8++yzZGVlBRVp3rx5M4MHDyYrKytw7jZv3szAgQOpXLlyqf071eTJk3n33XfR6XS0bNmSqKgoNmzYwAcffMDPP//Mxx9/TNWqVQkPD6dLly78+uuv/P777/Tp06dI/3fs2EG9evVITEwEzu7aAnjrrbc4duwY7du35+jRo9SuXRuHw8Fdd93Fzp07qVatGh06dMBut7NmzRrWr1/Pv//+y2uvvVZkX4899hgHDhygdevW1KxZkzVr1vDJJ5+wadMmvvjiC3Q6HaC+/s888wzfffcdRqOR1q1bY7VaWbNmDW+++Sa//PILs2bNIioqKrDvM7mGu3XrxooVK9i5cyc2my0QNDqd4cOH8+2332K1Wmnbti0Oh4OZM2eyZMmSMr2+Z3LeevXqxYYNGzh06BDNmjWjatWqRbIpR48eTXp6Oh07dmT37t2nfQ55eXn079+f/Px82rRpQ05ODitXrmTFihU8//zz3HXXXWV6Hqc63ftLcc72Pee5555j0aJFNGnShKuvvpo1a9Ywf/58/v77b3744QfCwsIAWLlyJf/73//wer20aNGCRo0acejQocC/mffff5/27duf1fMVQgjxH6YIIYQQ59HKlSsVm82mdOnSpcRt7r77bsVmsymdOnVSMjIyFEVRFK/XqyiKovz666+KzWZTbr31ViU3Nzfoce+9955is9mU7t27B7V36dJFsdlsyv79+wNtw4cPV2w2mzJs2DAlLy8v0L5v377A9suXLw+0L1y4ULHZbErHjh2V3bt3B9rT0tKU6667TrHZbMqvv/6qKIqiHDp0KLBtYcnJyUqzZs2UxMREZf78+UHr5s6dqyQmJirNmzdXjh8/XqZz4T+X/fr1C2yfnp6uJCUlKfXr11d++umnoGN8+eWXis1mU6655hrF6XQqiqIoa9asUWw2m3L33XcrLpcr6Hldc801is1mU1auXKmczoMPPqjYbDZlxowZQe3Z2dnKrbfeqthsNmXatGmBdn/fbTab8vjjjwe9BrNnz1ZsNpvStm1bxefzBZ5z7969FZvNprz33nuBbV0ulzJixIjAvubNm3favv7++++KzWZTrrrqKuXff/8NtDudTmXUqFGKzWZTbr755sCxFy1apNhsNuWBBx4osq833nhDsdlsyocffhhoO9Nra8qUKYrNZlMSExOVjRs3Btq9Xq/yzTffKDab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ULazuYZr1KgBEJipsXPnzkHBmFO1b9+eBx54gPfff5+bbrqJq666CoCVK1fSsGHDMl1HZ3re/H2cNm0a69evP+fC2zVr1mTXrl10796dVq1akZKSwvr16zEYDEyYMCFoWNyAAQP45Zdf+PXXX7nuuutITExk165d7Nu3jz59+vDtt98G7buk95filMd7zosvvsg999zDuHHj+Oqrr6hduza5ubmsW7cOp9PJ/fffHzi/QgghRFlJZpQQQohLysCBA5k0aRKNGzdm586dLFmyBLvdzj333MN3330XCAgtWbKk1P3ExMTw1Vdf8dhjjxEfH8+aNWvYsGEDNWvW5Nlnn2XmzJlFZs575ZVXeP3112nYsCHr1q3j77//pnLlyjz//PO88sorge20Wi0TJ06kdu3abN26leXLlwfqWV177bV8/fXX9OzZk7S0NBYtWkR2dja33nor8+bNCyqGfbauvfZa5s2bR+/evcnJyeGPP/4gNTWVLl26MHv27EDmCahDft544w2efPJJatSowT///MMff/yBz+fjnnvuYcGCBaedqU6n0zFr1iwGDhxIdHQ0y5YtY+3atVStWpUXX3yRb775hvDwcDZt2nROAanq1aszd+5c+vfvj8PhYMmSJYSEhDBt2jQ6dux4RvsaPnw406ZNo02bNmzfvp0//viDkJAQ/u///o9vvvmGWrVqFfu4Hj16BK6LU4fo+Z3NtVUSk8nEhx9+yAMPPEBMTAyrVq1i2bJlWK1WHnroIebOnXvGM70VptVqmTx5MuPGjaNRo0b8888/LF++nAoVKvD0008zd+7cIvWEzvQa7tatGwMHDsRqtfLXX3+xbt260/brySef5M0336Rhw4asXbuWzZs3c/PNNzNjxowyPa8zPW/9+/cP1Ev766+/is1IOhMVKlTg888/p1GjRixbtoxdu3bRpUsX5syZQ9euXYO2bdy4MZ9++ikdO3YkNTWVpUuXEhsby8yZM+nZs2eRfZf2/lKcC/2e06xZMz7//HN69OhBdnY2ixcvZsuWLbRo0YK33nqLp5566pz2L4QQ4r9Jo5xLgQchhBDiEtCxY0eSk5NZvHjxOWUACCGEEEIIIS48yYwSQghxWcvKyiI9PR2NRhOobSSEEEIIIYS4dEnNKCGEEJel9PR0Bg8eTHp6Oh6PhxYtWpR5aJQQQgghhBDi4pHMKCGE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3749SUlJ7N69u8yfQX/88Qe9e/emcePG9OjRgwULFgStL8tnotPp5J133uG6666jcePGXHvttbz//vuBYT4jRozgm2++4ciRIyQmJjJ//vxiz+HUqVO57rrr+O233+jZsyeNGzemT58+rF+/ng0bNnDbbbfRpEkTevbsWWSo0c6dO3nwwQdp0aIFLVq04OGHH+bQoUNB22zfvp2hQ4dy1VVX0bBhQzp27Mgrr7wSlKlSls93/7C10w3lGj58OF6vlzlz5hATE1PqtgB//vknCxcuZOTIkYSHh5e4XUJCAgMHDgwEGAB0Oh3Vq1fn4MGDAIEstK5duwY9tk2bNhw/fpwdO3actj9lUaVKFaKiojh69ChQ8vWYnp7O119/Tc+ePQH1O+E111wDwMiRI4P6uXz5cu68805atmxJmzZtePLJJzl27FjQcffv38+jjz5K+/btadasGffcc0+ZhwuWds0XN+Tujz/+oG/fvjRp0oQePXrwww8/0L179yIlHvbu3ct9990X+O48ceLEIllfvXr1YubMmYERD/7vxqWVi1ixYgUej4fu3bsH2oxGI507dy71e2VZrhOAO+64g7Zt2wY9tlatWuTn55OWllbi/sV/gwSjhPiPe/bZZ4mKijrtcL3nn3+ecePG0a1bN6ZPn85dd93Fp59+ypAhQ864OORTTz1Fy5Yteffdd+nZsycffPABc+fOBdQv3HFxcXTq1Ik5c+YQHx9Peno6/fr1Y8uWLYwePZpJkybh8/m46667iqTlT506lfvvv58JEyZw8803U61atSJDF3744QciIyPp1KkTiqLw8MMP8+WXXwZSiJs3b84TTzxR5Evz7Nmz2bt3L+PGjeOVV15h8+bNDB8+HIDbbruNW2+9FSh5aF5qaiq33nora9eu5YknnmDq1KlUrlyZhx9+mO+++y5o28mTJ+Pz+XjjjTd45plnWLJkCa+++iqgpuU/+OCD2O12JkyYwLRp04iMjOT//u//Sk2pFkIIcflJT09n8+bNdOnSpcQsgsjISNq1axcI5PTu3ZstW7YEfSZkZ2fz119/0adPHwDWrFnDwIEDMZvNvPnmmzz77LOsXr2aAQMGBAVQvF4vH330EWPHjmXkyJHUrFmzzJ9Bzz//PAMHDmT69OlUqFCBESNGBIZcleUzUVEUHnroIT744ANuu+023n33Xa677jrefPNNxowZA6gBtk6dOhEXF8ecOXPo3Llziefy+PHjvPbaazz00EO89dZbZGdn8+ijjzJs2DBuu+023nnnHRRF4Yknngicg3379tGvXz/S0tIYP348Y8eO5dChQ/Tv3z/wy3RycnJgCOVrr73GjBkzuPHGG/nkk0+YPXt2UB9K+3wH6Ny5c5mGck2YMIEvvviCevXqlbqd/zyOHz+epKQkrrvuulK3veGGG3jqqaeC2rKyslizZk0g6y4qKgqgSN0pfxDi1EDd2crIyCAjIyMow+vU67F27dosXLgQj8dDly5dAIiPjw/8gfD//u//AvcXLFjA4MGDqVixIm+88QYjR45k/fr13HHHHYHXcvfu3fTt25fDhw/z3HPPBbLI7r333sDws9KUds2fauXKlQwZMoSKFSsydepU7rrrLsaMGVMkOAYwbty4wHfn66+/nhkzZvDll18GbXPddddx4sSJQD/j4+NPWy5iz549hISEEBcXF9RevXp1kpOTycvLK/ZxZblOGjZsyEsvvURkZGTQdosWLSI6Opro6OgS+yX+IxQhxH/S3Xffrdx9992KoijK77//rthsNuWNN94IrO/SpYsyfPhwRVEUZdeuXYrNZlPee++9oH0sWLBAsdlsyh9//FHicWw2mzJlyhRFURRl5cqVis1mUyZPnhy0TdeuXZUHH3yw2GMriqK88cYbSuPGjZXDhw8H2pxOp3LNNdcojzzyiKIoinLo0CHFZrMpzz77bNC+p0yZojRr1kyx2+2KoiiKz+dTOnfurDz//POKoijKsmXLFJvNpvz4449Bj3vqqaeU9u3bK263O9CnLl26KB6PJ7DN1KlTFZvNpqSnpweOZbPZSnz+EyZMUBo2bBj0PBRFUe69916lffv2itfrDTymf//+QduMGDFCadasmaIoipKcnKzYbDblu+++C6zPzs5WXn31VWXnzp2KEEKIK8emTZsUm82mfPrpp6Vu99prryk2m03JzMxU8vLylGbNmilvv/12YP3cuXOVevXqKcePH1cURVHuuOMOpWfPnkGfa3v37lXq168fONa8efMUm82mLFiwILBNWT6D/J+Hf/75Z2CbAwcOKDabTfn4448VRSnbZ+Iff/yh2Gw25Ycffgja5p133lFsNlvgeMOHD1e6dOlS6vkprk/vvfeeYrPZlLlz5wbafvnlF8Vmsylbt25VFEVRhg0bprRr107JyckJbJORkaG0bNlSee211xRFUZSlS5cqd911V9A2iqIoPXv2VAYPHhz4+XSf72fr1O9Np1q0aJFis9mU5cuXn/G+vV6v8sgjjyj169dXNm7cqCiKoqSlpSmtWrVS+vTpo2zcuFHJyclRlixZolx99dWKzWZTvvnmmzLv33+NHThwQHG73Yrb7VZyc3OVzZs3KwMHDlQaNGigbN++PWjbwtejoijKY489pvTu3Tuozf+9cN68eYHn0b59+6DXQ1HU67Jhw4bK+PHjA/tq06ZN0GvpdruVHj16KLfcckuJz6Ms17z/e/DKlSsVRVGUO++8U+ndu7fi8/kCj/nhhx+K/e78+uuvB7bx+XxKp06dlIcffrhIP1q3bq1MmDChxH6eavTo0UrHjh2LtH/11VeKzWYLvF+cTnHXSXFmzZql2Gw25aOPPipzH8WVSzKjhBB07dqV3r1788EHH7Bly5Yi6/1/YbnxxhuD2m+88UZ0Ot0ZzQoC0Lx586CfK1SoQH5+fonbr1ixgvr165OQkIDH48Hj8aDVarn66qv5+++/g7atX79+0M+9e/cmPz8/MFTvn3/+4ejRo4G/DK9YsQKNRkOnTp0C+/Z4PHTt2pWUlBR27doV2Ffjxo3R6XRB/Qaw2+1let6rV6+mefPmVK5cuUgfU1JS2Lt3b6Dt1JoCFSpUCBwnNjaWOnXqMHr0aIYPH87333+Pz+dj5MiRUitECCGuMEpB9rHBYCh1O//nk6IoWK1WunXrFjTk/Mcff6Rt27YkJCRgt9vZuHFjIEPY/9lXtWpVateuXWRWtMKfrWfyGdSqVavAfX89oOzsbKBsn4mrV69Gr9cXyebxDzUsS6bKqVq0aBH0XACaNm0aaPNncfj7uXLlSpKSkjCbzYHzFBoaSqtWrQLfQTp06MCnn36KyWRi9+7d/P7770yfPp309PQiWeelfb5fKJ999hn169enXbt2Z/Q4t9vN008/za+//sqoUaNo0qQJANHR0Xz00Ud4vV5uu+02WrZsyauvvhqoP2qxWM64j927d6dhw4Y0bNiQFi1a0LdvXw4cOMDrr79eZJa6U7/rHTp0qEi9qVPt27ePlJSUwFA+v2rVqtG8efPAtbR69Wq6dOlCaGhoYBu9Xs+NN97I5s2bS8wU8ivtmi/M5XKxfv16rr322qCMx+uuuw69vmhZ58L71Wg0VK5cudj9VqpUKVDioiyU04xuKEvtr5Kuk1N9+umnjBs3juuvv56BAweWuY/iyiUFzIUQADz33HOsWLGCkSNHMm/evKB1WVlZAEVSePV6PVFRUeTk5JzRsU4ttKnVakv9MMzMzOTAgQMlpqwX/hJntVqD1lWvXp3mzZvz448/cv311/Pjjz9SrVq1wJfRzMxMFEUJ+nJaWHJycuBLz6lfrvwf0GWdnjYrK4uqVasWafd/GS78paK4Y/nPkUaj4aOPPmL69On89ttvLFiwAIPBQLdu3XjxxReJiIgoU3+EEEJc+vzBmlOHRJ3q0KFDhISEBIIpffr04bvvvmP79u3ExsayatWqwHCw7OxsfD4fM2bMCNSZKsxkMgX9XPiz9Uw+gwo/zv+Z6f8sK8tnYlZWFlFRUUF/CIKT30fO9PsHEBRk8CsteJKZmclPP/1UpJYkEBhm5B9299lnn5Gfn0/FihVp0qRJkfNY3LFO9x3oXGVmZrJq1SqGDRt2Ro/Lzs5m6NChrFmzhtGjR3PXXXcFrW/cuDHff/89J06cwG63U716dVauXAlwVt9Dpk+fHnhdDQYDUVFRQfWICjv1u15ubu5pA2D+WZr911dhsbGxgTqkWVlZJW6jKAq5ubmEhISUeJzSrvlT++P1eovU+9LpdEWGtUHZrxuLxUJubm6J/TtVaGhosQE2/z7CwsJKffzprhNQ/31MmDCBmTNn0rNnT8aPHy+FywUgwSghRIGIiAheeOEFHn74YaZNm1ZkHUBKSkrQXzDdbjcZGRmB2gEXSlhYGElJSTzzzDPFrjcajaU+vnfv3owbN46cnBx++eUX+vfvH7Rvq9VapKaDX/Xq1c++46eIiIggJSWlSLu/7UzOY0JCAi+88AJjxoxh+/bt/PLLL8yYMYOoqKhAHQ0hhBCXv5iYGJo1a8avv/7KY489VmymQm5uLsuXLw8q1Ny2bVvi4uL4+eefiYuLw2Qyce211wIQEhKCRqNh4MCBRbKe4fSZLefjM6gsn4kRERFkZGTg9XqDAlLJycmBbS60sLAw2rVrV+wMZf4Mlvfff59Zs2bx4osvcu211wZ+gffXkryYli5disfjOW2tqMKOHz/OoEGDOHz4MG+88UZgJjS/jIwM/vjjDzp16hQUMNq6dSsajaZI5lJZ2Gy202Y3laQsfxj1B3gKF4v3S0lJCVxLERERJW7jP9b5EBMTg8FgKHIsn88XCJydjezsbCpVqlTm7WvVqkVubi7p6elBNZwOHDhA5cqVi52p0e901wmoGWBPPvkkCxcuZPDgwTzzzDMSiBIBMkxPCBHQrVs3evbsyfvvvx80m05SUhJAkULgP/74I16vl5YtW57Xfpz6RTspKYl9+/ZRs2ZNGjduHFi+/fZbvv766yJ/MT3VDTfcgKIovPXWW6SlpQXNJJSUlER+fj6KogTte+fOnbzzzjtFZio5k36fqnXr1qxfv77IX7e/++474uLiyhz4Wr9+Pe3atWPTpk2BL31PPPEENpstMOOMEEKIK8fQoUPZt28fb7zxRpF1Xq+XMWPG4HA4+N///hdo1+l09OrViyVLlvDLL7/QrVu3QNZGaGgoDRo0YO/evUGffXXr1mXq1KmlDr8/X59BZflMTEpKwuPx8MsvvxTZBgh8/yjLUKKz5Z+xrX79+oHz1KhRI2bNmhWYlXfdunXUqVOHW265JRCIOnHiBDt37ixz9vSFsnHjRipUqFBkOGRJcnNzuffee0lOTmbmzJnFBhgURWHkyJEsXLgw0JaXl8dXX31F69atyz1Du1KlSkWKfp/63bBmzZrExcXxww8/BLUfOnSIDRs2BDLkW7duzZIlS4Kyi7xeLz/++CONGzc+7R9Ay0qn09GiRYsis0cuXrz4jL57FqYoCidOnCjzaw0Ehm4W/jfmcrn4448/aN++fYmPK8t1Aupshr/99hsjR45k+PDhEogSQSQzSggRZPTo0axcuTLoLzV16tTh5ptvZsqUKdjtdlq3bs22bdt4++23adOmDR07djyvfQgPD2fr1q2sXr2aJk2aMHDgQL799lsGDhzI4MGDiYqK4qeffuKrr75i5MiRp92ff+a8zz//nObNmwcFfTp16kTr1q0ZMmQIQ4YMoXbt2mzatIkpU6bQsWPHM5rpwz9V8g8//EDTpk2LDD8YNGgQ3333HQMHDmTo0KFERkayYMECVq5cyauvvlrmL9MNGjTAbDbzzDPP8MgjjxAbG8vff//Ntm3bGDBgQJn7K4QQ4vLQsWNHRowYwYQJE9i2bRu33HIL8fHxHD58mC+++IJt27YxduzYIjOr9enTh48++gitVltkON6wYcN44IEHePLJJ+ndu3dglrKNGzcyZMiQEvtyvj6DyvKZePXVV9OmTRuee+45Tpw4Qb169Vi9ejUzZszg5ptvpk6dOoD6+Zuamsqff/5J/fr1iY+PP4OzW7ohQ4bQr18/HnzwQfr374/JZGLOnDksWrSIKVOmANCkSROmTZvG+++/T7NmzThw4ADvvfceLpfrjOtBpaenc/DgQerUqVPskMIztWPHjsB5Ks7BgwdJT08P1LKaMmUK+/fv55FHHkGv17Nhw4bAtkajkQYNGhAdHc2NN97Im2++idlsJjo6mvfee4/k5GQmTZp0wZ5LSdq3b8/PP/9MTk5OIBjov12xYgW1a9emadOmDBs2jJEjRwau+YyMDN5++20iIiICmW9Dhw7lr7/+YsCAATzwwAMYDAY+/fRTDh06xAcffHBe+/3oo49yzz338Oijj3Lrrbdy9OhR3nrrLYCzCtrs3LmTnJycwPdyl8vF1q1bqVChQqDO6akqV67MzTffzLhx43A6ndSoUYOZM2eSnZ0dFNw+m+tk0aJF/PDDD3Tt2pVmzZoFbQPqe8n5Cu6Jy5MEo4QQQSIjI3nhhRcYOnRoUPvYsWOpXr068+bNY8aMGcTHxzNgwACGDBly3v8iOXjwYF599VXuu+8+Zs6cSatWrfjyyy+ZNGkSL7zwQuDDcuzYsWVOge/Tpw+LFi2iV69eQe1arZb333+ft956i/fee4+0tDQSEhIYNGgQDz/88Bn1+9prr+Xbb79lxIgR3HrrrbzwwgtB6+Pi4vjiiy+YNGkSr7zyCm63m3r16jFt2jSuueaaMh/HZDLx0UcfMWnSJMaOHUt2djY1atTgpZdeom/fvmfUZyGEEJeHQYMG0bx5cz7++GPGjx9Peno6cXFxtG/fnrFjxxYbcKhXrx42m42MjAzatm0btK5Dhw58+OGHvP322zz66KMYDAYaNmzIzJkzixTZLux8fQaV5TNRo9Hw3nvvMWXKFGbNmkV6ejpVqlRh2LBhQcPm+vbty59//snDDz/Mo48+ygMPPFDmfpxOvXr1+Oyzz5g8eTLPPPMMiqJgs9l45513Av188MEHycjIYPbs2bzzzjtUrFiRPn36BPqfnZ0d+IPV6fzxxx+MHDmS2bNn06ZNm3Puf1paWpEC4IVNmzaNb775hh07dgAEsp2mTp3K1KlTg7atXLkyixcvBuDFF19k4sSJTJw4EbvdTrNmzfj4449p1KjRBXsuJenSpQt6vZ6lS5dyww03AGr236BBg5gzZw5//vkny5cvp2/fvoSEhPDee+/x8MMPExoaSseOHRk2bFigXlXdunX5/PPPeeONNxg5ciQajYYmTZowe/bsoCLi50OrVq2YOnUqb731FkOGDKFy5cqMHj2aJ554otS6VCX566+/iIuLC2R5JScnc8cddzB06FAeeeSREh/30ksvER4ezowZM8jPzw+8DxT+4+3ZXCf+bRYvXhy4bgr7/fffz3poprgyaJQLWTFPCCGEuIJ4vV7cbvfF7oY4TwwGw2mH+QohhDh7zzzzDHfeeWepAc7z4eWXX2bXrl0l1gC9FP3+++9UqFAhaIKeXbt20bNnzzP+Q6WiKPTo0YM777xTZqoTlw3JjBJCCCFOQ1EUjh8/fk5FRcWlKTIykgoVKkgdCyGEOM92797Nxo0bi2SKXwgPPfQQN954I5s2baJJkyYX/Hjnw7Jly/jpp5946qmnqFmzJidOnGD69OnUqlWLDh06nNG+Fi5ciNfrpV+/fheot0Kcf5IZJYQQQpzGsWPHyMzMJD4+HqvVKoGLK4CiKOTn55OcnExkZCQVK1a82F0SQogrSnp6Ok6ns9zeX3/66Sdmz57Nl19+WS7HO1cOh4O33nqLX3/9NfBZ1LFjR5588kliY2PLvB+Xy0WvXr149dVXz/ukQkJcSBKMEkIIIUrh9XrZuXMn8fHxxMTEXOzuiPMsLS2N5ORkbDabDNkTQgghhCgnF24eVCGEEOIK4K8R5Z8SXVxZ/K+r1AITQgghhCg/EowSQgghykCG5l2Z5HUVQgghhCh/Zx2Mcrlc9OzZk1WrVgXaDh06xMCBA2nWrBk33HADy5YtC3rM33//Tc+ePWnatCkDBgzg0KFDZT6eoijk5uYiowqFEEIIIU5PvjsJIYQQ4lJ1VsEop9PJsGHD2LVrV6BNURQefvhhYmNjmTdvHn369GHo0KEcPXoUgKNHj/Lwww/Tt29fvv76a6KjoxkyZEiZvyDl5eXRsmVL8vLyzqbLQgghhBD/KfLdSQghhBCXqjMORu3evZvbb7+dgwcPBrWvXLmSQ4cO8dJLL1G7dm0efPBBmjVrxrx58wCYO3cujRo1YvDgwdStW5dx48Zx5MgRVq9efX6eiRBCCCEuWz///DNpaWkATJ06lXvuuQeA+fPn07Vr1xIfN2LECEaMGFEufRRCCCGEEOfHGQejVq9eTZs2bZgzZ05Q+8aNG2nQoEFQgdeWLVuyYcOGwPpWrVoF1lksFho2bBhYf0nI2gqpq9TbvEPgygSf92L3SgghhLiiHTlyhMcffxy73Q7A4MGDmTp16kXulRBCCCGEuFD0Z/qAO++8s9j2lJQU4uPjg9piYmI4fvx4mdZfdCeWwO8l/OVVHw7GSDBGgDEaTHFgigVzgrpYq0BIVbBUAVMMSDFUIYS4YpU2vFyhlKHnShm2KWF//mMqikLgv4L76v8n207drtj1pdwPOl4J6wo/h1LXK4XaT9l34bbj6ep3gb0Ze8k15wa2O5ZyjKM5R3F5XWxN2Vrk3Jv0JhRFkSLkQgghhBCXmTMORpXEbrdjNBqD2oxGIy6Xq0zrL7qwuhDbDnL3gTcPPHZQCqZ59mSrS34Z9qM1gaUShFQDazUIrQnh9SCiPhijAC1otKDRFbrVlfyzEEJcRvyBCJ/iOxkQKaXtfNwCxbb5j+fDh8/nw6f4cPlcODwOXB4XLq8Lp9eJ0+PE6XXi8rpw+Vy4PC7cXnfgvgkTHSM6Ys4xo3PqTh7H5wNvfolBoUAw6JT+FT5PBSuLbT816APg05rP6A8ev8z7hZ/m/kR2ejZValbhnqH34PV6GfvEWD5b8llgu3dfexeAh0Y8RF5uHjMmzGDLP1tAA82vas7AxwdiDVEzn3/66id+nf8rOVk52BrZGDxsMPEV41EUhQWfLGDRd4twOVwkNklk4GMDiU2IBeCuLndx/1P38+3n35KdkU2Ldi2478n7MFvM3H/r/QDcf+v9PDD8AVKPp7Jtwzaee/M5nF4niqIwc9pMFi5YiMVqoVf/XvTo2wO7x45P8aHT6ALP5bfffmPy5MkcOXKEunXr8swzz5CUlFTmcyaEEOfK61PQaS/vIPmV8ByEEJe28xaMMplMZGZmBrW5XC7MZnNg/amBJ5fLRXh4+PnqwrmxVoFrl4OigM+tBqLcueBKA0eKurjSwHECnKnq4koHZ9rJ++5s8Dkhb5+6nMoYAyE11MBXeD31Vh9SEIQqCERRcKv13xpBYwCdSb2vNRQEqvSg1Z9ya1Bv5S/EQvwn+RRfYFEUJfhnlGLXFQ4SFfezT/HhVbz4fD48igdFUfAqXrw+byDI479feB9BAaFTMnS8Pi9OrxOHx4HTU3DrVQNCTvfJwJDT61QDQz63GigqCBa5PW6cPqcaMPKqgSP/Nv4gkr/t1NuzUT2kOk3bN8VoN4J/F4pCvfX/IzR703l69comJ7wpO5rPCLzPayi41WiK3N+3cx9fvPcFT73yFNVqVOPHr39kygtTePz5xwGw6q2gUfeh1+rRoCHUGMqXs78kJzOHCe9OwOv1MunFSfz8xc8Mfngwvyz4hW9mf8MjIx6hTmIdPn73Y6a9NI2ps6by7VffsnLxSp59+VmiYqKY99k8Xh/+OjO+mIFer37dmDdzHsNGDSM6JprXX3qdz9/6nFGvjGLarGkMGTiE6R9Pp2btmnzx8RcYdUYqh1UmyhxF6olUUg6m8O6sd9mxdQcTx06kZaOWtGzdMigravv27QwfPpwXX3yRJk2a8Oeff3L//ffz3XffUb169XJ8pYQQ/2U6rYbHvlzP7uTci92Vs1InPpS3+jW/2N0QQlzhzlswKiEhgd27dwe1paamBobmJSQkkJqaWmR9/fr1z1cXzg+NBnRGwKgGiiwJEFHMdl4XeO3q4s4FVyo40yH/INiPq4ErZxrkH4Kc3eAoaHOlQcY6/8EgtA5Et4TYNhDZRA0oKT5QvKC41AwtvCfbQA2YBfqrPRmc0uhAq1Ozs3Rm0JpBb1aDWdrCS0GAS6s79VkJIS6gwsEhr897MtBTTHtQW8E2Hp8Hj8+D1+dV7yvqfa/Pi1fxngwGFWQDnRocOjVQBGpwSIMmMNSpcLaOV/Fid9sDwSKHxxG0OD1OHF4HDndBm/eUdYXaAj8X7OtSoNPoMOqMGHVG9Fo9Rp0Rg9aAQVewaNWlirUKJr2JEEMIOqMOf9hHpzWUe5+tBgv1YuuhKUPm7MG8g2g1WlrUbUGdunVo+lRTNl27KTBcsHrkyeBMqCEUgKrhVclOySYyLJLmic2xWCxUebMKCgqVwiqx6PtF3D3gbu646Q4AaoyuweyPZxOuC2f+Z/MZ8dwIOnXsBECzl5pxbddr2b5uO506q22D/zeYG7rfAMCIZ0cw5IEhPD/meapVqKYeP6Eq8RHxmPQm9Fo94aZwLHoLJpOJsePGEhkZSZP6Tdi8fjM/fvMjV111VdBz/vDDD7n99tvp1asXAAMGDGDNmjV88cUXUuRcCFGudifnsuVo9sXuhhBCXLLOWzCqadOmvP/++zgcjkA21Lp162jZsmVg/bp16wLb2+12tm7dytChQ89XF8qXzlgQtIoAC0Ad8DoKAlMZYD+qZkopHjCEAxo1Wyp7B2T+C5mb1G1yd6nLwS/VIFJMK4jvBAldC4b1nYY/SOXzFASwPODJAXdmQZsPUE4O+dMUyqLSmUFnBb21IPOqIPuqcBaWECIQ7Cnu1h8sKtzm8XkC2TiF7wcFmQoNHVMUBS/eQJDIHxw6lUajQavRotVo0aDeP7VNp9HhUTzYXXbyPfnku9Ulz5VHnjuPfHc+ua5ctc2dR64rlzx3HnmuvJPbFmzn8l74YdQGrQGz3oxZb8akN2HSmTDpTZh1wT8XvjXqjEH3/T/79+VvM+gMQdsYtIZAu1FnRFvWodAe0GfrSQhJwGQ2BZp91/xBnrcs47fPI521zPWR2rZrS526dbi97+3Uq1+PTl060feWvhw4cKDUx/W/uz/DHh3GNZ2uoU2bNlxz7TVcf8P1AOzfv58HGzwY2DYmNoYnnnyC/Px8Tpw4wcinRwb1z+l0cvDAydl3mzVvFrjfoGEDvF4vBw8cJCqq9M+7ylUqExEZEQiW1qtfjwXzFxTZbs+ePfz8889Bk6y43W46dOhQ6v6FEEIIIUT5Om/BqKSkJCpWrMjIkSMZMmQIS5YsYdOmTYwbNw6AW265hQ8//JD333+fLl268M4771ClShXatGlzvrpw8enM6mKOhdBaakDIny3lzlQLnEc0gurqX5RxpELmBkhdASl/gzMFUpary9bxENsWKvZQg1N6a/HH9A/xK0vgSPGpwSqfRx2K6MlRA2eK52S2lX9fmoKglD4MDKEng1X+5yiBKnGZ8QeLTs0u8rcVDiK5vGqtIP9wL/8wNS/eQADJn62EAmhQY74FmUX+oJBGU/ytXqsv0u4PKPm5vW6ynFlkObLIdmaT5cwix5VDlkO9zXZmk+PMIceVc/K24P75zjwy6oxY9BZCDCFYDOqt2WDGqrdiMViwGqxY9BYsBgtmvTlw36K3BAJNp/5s1psx6UzoLucMTY1GzaC9RFksFmZ/Ppt1a9fx1x9/8d2C7/h6zte89vprRbb1eD3odepXgqQ2Sfz828/8seQPlv21jLEvjmXF8hW8Mu4V9Hp9IMvOT0HB5VYDl6++/irVa1QPWhceER4YIqlolECQ0+lSr1Ov4g20+Yde+gO9/n9/Wq0Wj88T2K/X50Vv0AfVigLwer3cf//93HTTTUHt/j+SCSGEEEKIS8N5C0bpdDqmTZvGqFGj6Nu3L9WrV+edd96hUqVKAFSpUoWpU6fy6quv8s4779C8eXPeeeedK3cGHK1OnVnPFKMWM3ecgLwD6hA+naFgNr5YqNBNXRQFcndD8jI4/hvk7ISUZeqiC4HKN0C129WC6GdLo1WDTFpjydsoXjVQ5XMXDEHMgjx/kRSN2neNUQ1IGcLBEAY6S0GQyqIGrYS4wBRFwe1zBwJLHp8nkIXkX5yek3WHnF5nIOBUOIupcOFpIKh+jj84pNPo0Gq0GHQGzBqz2qbVFQkelcbj85DpyCQjP4MMRwaZjszgxZlJliOLTEdmIABl99jP+TyFGEIINYYSYlRvQ42hgTb//RBjCCGGEKwGa6DNarASYlRvrQYreu15+6gQ51nh6/fUWes2bdjEmtVrGHz/YJq3as5Djz7E9V2vZ/Xq1QBkZGcQEqIG0w4fOkzV6lVxeV188ckX1LXV5bqe13Fdr+tY+PNCXhnzCt5XvVStVpUdO3bQsVNHADKzMrmtz23M/nw20dHRZKRl0KlzJzRocLvdjHx6JAMGDSC+mTpkf//u/TRp1AQNGjbt3ITBYKB+nfpkZmUCYDFaCDWGYtQZ0Wl1hBhDMOlNHDl8BJ1Xh8ViQYOGHVt3UKdWHUIMIUH/DmvWrMnhw4eD6kNNmDCBmjVrctttt124F0IIIYQQQpyRc/oNY8eOHUE/V69enU8//bTE7Tt16kSnTp3O5ZCXJ51JDUhZKqnZTzl7IO8wmKIKhvCh/oU9rK661B6kzup3bCEc+0WtO3VwrrpEt1Yzq+KvvjCz7Wl0oNOpwaVTKQr4XAWBqvyTQwFBLaKuNakBKWNkoSBVwTBAmRlQnIa/JlLhgtOFh7g5PU7sHntg9rOgTKeCwtqFaVGDRv4sJK1GG6gN5P/5XLJy7G47afY0UvNTSbenk25PJ82eFrifYc8g3aHe5rhyzuoYWo2WMGMYEaYIwkwnb8NN4YQZC25NYYH7ocZQwoxhgWDTZZ11dAUqdva8QjPnBW1XaBsNhWp5FdCokdOT94tpN5vNfPDuB8TGxnLVVVexbt067Pl2unXrxiezPuGzjz7j1ttv5beFv7Fzx05q1qpJiDGEzNRMJn0zibFj1RpNfy3+i/r16xNqDOXee+5l3LhxNG7QmFq1avHWm29RtUpVbDVtDBo0iOlvT6dSQiVq1arFtGnT2LhhIw1sDbAYLABMf2c6NarVwGQyMX7ceG6++WYiIyLxedVMqz079xAfEx8I+Bp0BnQaHU6nk1EjR/HII4+wbt06Fv66kC+//BKtNvizZeDAgdx11100btyYzp07s3jxYmbNmsXHH398Hl5BIYQQQghxvsifu8uTVg+WiuqsenkHIXcPuA6DJb5otlJoTaj7INR5ANJWq4Go5L8gfY26hNaC2vepWVWacvqFU6NRA2s6ExAavM7nAZ9DDVLlZhQUWy+0vSFSDVLpQyRA9R/jz2IqPOuZfyiO0+vE7rarQSaPM3gIneIJyljSaXQnh7hpdRh0Bixai9pe8Ivr+ehrnjuP1PxUUvJSSM5PJjU/tciSZk8j331mtYK0Gi0RpgiizFFEWiKJNEcSZY4iwhRBpDmSCHPEyfumCCLMEYQaQ8/L8xLnRlGUQBZdIJsOgorBFxdo8iscIAr8XKhdg0adAa9gFrxTb0/dtrifgUCmsb+tVdNWvPrqq0ybNo0Jr06gUqVKvP766zRr3IyXX36ZyZMn8/lnn9O9e3fuuusuMjIyMOqMPPHEE+Tl5TH04aHk5+fTunVrJk6ciE6r46abbiI5OZmXXnyJ3NxckpKSmDJlChqNhvvuu4+8vDyef/55cnNzadSoER9++CERESdnAbnpppsYMWIE2dnZ3HjjjYwaNQqA6OhoevfuzeOPP85TTz1V5DWoX78+CQkJ3H777URFRfHqq6/SqFGjIts1a9aMCRMmMHXqVCZMmEC1atWYNGkSrVu3LuOrLYQQQgghyoNGKa5K7iUoNzeXli1bsm7dOkJDQ0//gMuBK0udaS//YEE2UXjp29uPw8Gv4dBc8OSpbSHV1aBUxR7lF5QqK0UBn1Mt7O51qFlVaE4O6TNGqkXa9SGgD5UhfpehwoEm/+IPNOW58wKBpsJD6LyKN1BnyT8krrjFX0vpfPY125nNibwTJOclczz3OMl5yYHlRN4JUvJTzijIZNKZiLXGEmOJIcoSRbQlmhhLDNGWaKIt0WqbWb0NN4VLYOki8xeP9wc8/bW/PD5PYCZD//DNQIxHAb2ip6KnIlWrV8VkMhUNDGk0aNEGBZT87VAQbCrmMYF1V+pw9VMkJiYye/bsS65WpMPhYN++fdSsWfOKqy11RX53EuIyceOUpZftbHoNK4Xz46MdL3Y3hBBXOMmMupiMERDdXA3KZG9XAzamODUDqTiWCpA4FGrdCwe+hANfqHWoNj0P+z6Feo9DTFJ5PoPSaTQnC577BQJU9oLssL0FQwMt6tA+YywYwwuCU5aSz4UoF/5gU+H6Sy6vC7vbHpiRLZDt5HPj8xUUNdaAXqPHoDOg1+ox6oxYDVYMWsMFGzrm9XlJzU/lWO4xdclRb0/knuBY7jGO5x4vcx2mEEMI8SHxxIXEEWuJJdaqLnHWOGKsMYEAlNVQ9pnNxPmlKEpQ8fnCtcACwSZ8QY/RaDToNfrAEE1/Vp3FYMGkM6l1wXRm9LqTAVG9Vo/P7SP9WLpauN1oLjbgJIQQQgghhCg7CUZdbBothNVWs4OytkD+EbBWLD3LyRAGde6HGv3hwFewb7Za8HzNEIjrAImPnVuh8wupcIDKWDCVt8+jBuJcmWr2F5wMTpniThZKL2lGQXFOfIoPp8cZqMXk9DpxuB3kuHLIdeWqmU4+F26fG8WnJlL6a7kYtAZ1uJzBckEDTX7ZzmyOZB/hSM4RDmcf5kjOEY7mHOVozlGO5R4Lmm2rJJHmSBJCEkgITSAhJIH4kHjiQ+JJCEkgzhpHXEgcVoNcaxeDPzupcBZd4aL0QRlLqAFPnVYXCCwZ9UZMehNmnRmT3hSoEVY4sBSUfVfwuNMFlBwOB5mazMCxhBBCCCGEEOdGglGXCksFNdiSuQXyD6vFzrWG0h+jD4Xag6FqX9g9Aw59rc6+l7oCqt2h1py6hKcdD9DqQRsKhoIhBIpPDU65c8CRTGBonzGiIDgVoQaodKXMCiiCKIo6nbrD48DhceD0Osl355PjVANOLp8Lt8cdqNOk0WgwaA0YdUYMOoOa1aQzXPBhZoqikOXM4mDWQQ5mHeRw9mEOZR/iUPYhDmcfJttZerq7TqOjQmgFKoRWoFJYpcD9CqEVqBhakfiQeMz6K2sYzuWgcIDp1MWn+NQAkwIarZq5VDhgFGIIUTOX9CZMOlOg3Z91F/i5HIKh4tycOumJEEIIIYT475Jg1KXEEA7RLSBzM+QfKFtACtRhfg2ehuq3w44pkPwnHPgcji+C+k9CQtfLa7ibRqsG5vyZUIpPHdbnygT7MXW9LgRMsWCKUYNU+lApiI6aWeIPOPmXbGc22c7swFA7t8+NoiiB2eWMOiNWvRWjSc0iKQ9Oj5ND2YfYn7mf/Zn7OZB1IBCAOt3MczGWGCqHV6ZyWGWqhFehUlglKoVVonJYZeKscRKQKGf+oJJ/uGbhIvT+LCatRhscYDKGYDVYA8Pj/MElf6adQXsy0CTD4IQQQgghhLjySDDqUqMzQWRj9f6ZBKRALWbeYhKk/A1bx4P9CGwYDnHtof5wsFa6cP2+kDTagiLnBVleihc8+WA/DLn71AwpQziYKxQUgo+44rOmFEUJmoku35VPljOLHFdOYKidv36TQWfApFOHLIUZwzDoyng9nQd5rjz2Ze5jb8Ze9mXuY1/GPvZn7edozlE1I6YECSEJVA2vStWIquptwf1KYZVkCF058vq8gQBT4ZkQA7WYFIKylEx6E5H6SLW2ksGsZtYVCjD5M+2kkLsQJ/32228MHTo0qK1Hjx5MmTKFrVu3MmbMGHbu3EmdOnV48cUXi51FUIgridenoNPKHyKEEOJKJ8GoS5HOePYBKYC4dtBhDuydCXs/hpTlkH6HWkuqat/LP4NIo1NrSBnC1J+9DnV2wawtqJWzQ8EcX5A1FXnZ15ry+rzku/PVoJM7n2xnNpmOTHW4nceJ1+dVCzNr9Zj1ZkIMIUSZo8o1Q8jhcbA/cz+703ezJ2MPe9L3sCdjDyfyTpT4mFBjKDUia1A9ojrVI6pTLaIaNSJrUCW8igylKyf+YJM/0OTyutTaTCiggFarVYNJBQGlCHNEYNicP6vOoDME7pdXZp0QV5Ldu3fTpUsXXn755UCbyWQiPz+fBx54gF69evHaa6/xxRdf8OCDD/Lbb79htV7en2tClEan1fDYl+vZnZx7sbtyVjonxvF0j3oXuxtCCHHJk98cLlVFAlKV1dpKZX68Ger+H1S8Hra8AhkbYOtrcPw3aDQarFUuSLcvCn9BdFOMmjXlzoW8fZCzWw1EmWLAnFAQmAq9pIcsenwe8lx55LvzyXPlkenMJNuZjcPjUDNSFB8GrSFQpDnCFFGuAQBFUTiRd4KdaTvZlb6L3em72ZW+i4NZB0vMdIq1xlIrshY1ImtQK0q9rRFZgxhLjAzBusAURcHj8wSGZ7q8LlxeV1CwyZ+9ZNFbiLXGBmU1FV4MWoO8XkJcAHv27MFmsxEXFxfU/vXXX2MymXjmmWfQaDSMGjWKv/76i19++YW+fftepN6KS9mVlFG0OzmXLUdLrxN5qaoddxnUaxVCiEuABKMuZYGAlE8tam6tcuZZTaE1IOl9dda9XW9D+jpY3g9sj0K12y7pwMxZ0ejUGlLGCFAU8OaD4wTkHVQDU8ZIsFRUZ/LTh13U5+9TfOS58shzq8GndHs6WY4sHB4HLq8LDRqMOiNmvZlIUyRGnbFcgwFen5dD2YfYnrqd7anb2Zm2kx1pO8hyZhW7fYQpgjrRdagdVZva0bWpHVWbmpE1iTBHlFuf/4sURQkKNAWymxQlkDHnDyhFmCIINYVi0VsCs835h3CW5/BNIcRJe/bsoV27dkXaN27cSMuWLQPv+xqNhhYtWrBhwwYJRoliXe4ZRSBZRUII8V8iwahLnc4IEQ3B61SLd1srn/k+NFqo0Q/iO8C/L0HGP7BtAiT/BY2fV4e0XYk0muBaUx47uDLU86gzgTG6XANTTo+TXFcuua5cMh2ZZDgysLvtOL1OUMCoM2IxWIi2RGMs55pXXp+Xg1kH2Zq6lW0p29iaupWdaTtxeBxFttVpdNSMqknd6Lonl5i6kul0gXl8nkAR+kAhehQ0qAEnk86ESW8i1hpLmDEMs8EcaPMHnOT1EeLSoigK+/btY9myZbz33nt4vV6uu+46Hn30UVJSUqhTp07Q9jExMezatesi9VZcDi7njCKQrCIhhPgvkWDU5UBvhchGkLYWHClgjjv9Y4pjrQJJ78LBr2DHVEhbqWZJNRgBFa89v32+FOkt6gJqnSlXBtiPqkP8jNFqbS5j1HkZyqcoCnnuPDX45MwlNT+VHFcO+Z58fD51qJ3FYCHcFI5JZyrXIIF/qN3m5M1sSdnClpQtbE/dTr47v8i2Zr0ZW4yNxJhEEmMSqRdbj5qRNTHpTeXW3/8SRVECwSanVw08eX1eQC0UbtSrmUxRlijCTeGY9WbMerM6bFNvlqF0oojDhw9zzTXX8Pvvv1OlSunDs+fMmcPkyZNxOp3MnTu3SCCkrFwuFwsWLOD2228/q8fPnz+ft99+m8WLF5/V4y8nR48exW63YzQaefPNNzl8+DCvvPIKDocj0F6Y0WjE5XJdpN4KIYQQQpw/Eoy6XBgj1YBUxj/gylKHoZ0NjRaq94OYq2DTaMjeBhufheQ/1aCUvyj4lc5fZwoKAlPpkH/0ZI0pS0U1QFXG4uc+xUeuK5ccZw5ZjixS7anku/PVzCJFDepYDBYiTBHlWlgcwO62szV1K/+e+JfNyZv5N/lf0uxpRbYz683Ui6lH/bj61I9Vl2oR1cq9v/8F/qCT0+sMzH6oKApAIOAUZgoj3BROqDE0EHQy683lHrwUl7eKFSuybNkyoqOjT7vt66+/zoABA7jllluoUKHCWR/zxx9/5N133z3rYNR/SeXKlVm1ahURERFoNBrq16+Pz+fj6aefJikpqUjgyeVyYTbLBA9CCCGEuPxJMOpyYqkA3gaQsRG0xpNZPmcjtAZcNRP2fAh7P4Jjv6pFzhu/CDGtzlePLw+FA1OefHAkQ/4h0IWohc8tCWpgSncyG6hw8CnDkUFafhq5rlxcXhdajRarwUqYMYxYS2y5Bw5O5J5g44mNbDyxkU0nNrEzbSdexRu0jU6jo25MXRrGNaRhXEMaxDWgZmRNCTxdAG6vG6fXGZj90Kf40Gg0GHQGTDoTkeZIIi2RWA1WNWipt6hZTlLDSZwHOp2uSGHskuTk5JCUlETlymcxHLwQf2BVlE1kZGTQz7Vr18bpdBIXF0dqamrQutTUVOLjr9Ch9UIIIYT4T5Fg1OUmpDp48iB7h1o/6lxmUtPqoe6DENdezZLKPwRr/g9q3qPOxKc1gNMFdgfkO9SC4KAOYdNoQK8DowEMBjDqQX8FXE56q7ooCnjz1HOStw9FF0aePoJsjZlMH6TY0wPBJ51Gh9VgJcocVe7D1xRFYV/mPtYfX8+G4xvYcHwDx3KPFdkuzhpH44TGNI5Xl3qx9TDr5a/r55PX5w3KdHL73KAQCDqFmcKoGl41UEDcny1XnrMhivNMUSC/6PDWC8pqPaNhxIWH6V1zzTVMmDCBGTNmsH//fpo0acL48eOpWrUqiYmJANx7770kJSXxySefsHPnTl5++WU2btxIxYoVGTBgAHfddVdg399++y3Tp0/n2LFj1K9fn+eff56cnBxGjhwJQGJiIr///juVK1dm2rRpfPHFFzgcDlq1asXzzz9PpUqVADhx4gSjRo1i7dq11KxZk06dOp3HE3ZpW7p0KU899RR//PEHFov6B6Zt27YRGRlJy5YtmTFjRmAyAkVR+Oeff3jooYcucq+FEEIIIc6d/BZ0udFoIKwueHLAfhxCSq8BUiaRjaDdZ7D9DTi8APbNhqNLwXwfOKPA4QSvD1DA/zuQolF/1unUIJRBrwamQkMgzApGI5gKFrPx8gtUaTQ4NUayMJPlzCYlbxvZ+anYPS60hlBCQioTZa2IKST+zGc4PAc+xcfu9N38c+wf1h1bx/rj68l0ZAZto9VoscXYaJrQlCYJTWia0JQKoWc/5EYU5fF5cHgcgUVRFDRaDWadOpQuLiSOcFM4FoMFi96CxWAp96L04gJTFOjQAf7+u3yP2749LF161nXtpk6dyssvv0xMTAyPPfYYb775JpMmTWLZsmV06NCBqVOnkpSUhMPh4P777+fmm2/m5ZdfZu/evYwePZqQkBBuuukmli5dyqhRoxg1ahTt2rXjk08+4cEHH+T333/n2Wef5aOPPuLrr78mOjqaTz/9lO+//55JkyYRGxvLRx99xODBg/n+++8xGAw89thjWK1W5s6dy65duxg1ahRRUVHn+cRdmpo3b47JZOK5557j4Ycf5tChQ0yYMIH//e9/XHfddUyaNImxY8fSr18/vvzyS+x2O9dff/3F7rYQQgghxDm7zCIEAiiYYa8BuPPAmQqm2HPfpwOIuA8yKkPeLHDuA+eLYLwFYnuUHEzyesHtAY8H7E7IzlXbFNTAlcEAJgNYLBAeAiHWggCVCSymSypI5VN85LjyyXblkmLPIN2ZTZ7LjoKCRW8mNKwqsRo9Gm8eeNIgNwsc4WpBeUNEmetLnQlFUdiTsYe1R9ey7tg6/jn2D1nOrKBtTDoTjeMb07xic5omNKVxfGNCjDIbzfni8roCQSd/bSeD1oBZbybMFEb1yOqEGEKwGqyB4JPUdPqPuAxf50GDBtG2bVsA+vfvz2effQYQGMoXERFBZGQkc+fOJSYmhscffxyAGjVqcOTIEWbPns1NN93EnDlz6NmzJ/379wfgmWeewWAwkJWVRVhYWNDwwA8++IAxY8bQpk0bAF566SU6dOjA0qVLqVq1KuvXr2fJkiVUqlSJunXrsnnzZn755ZfyPC0XTWhoKB9++CGvvvoqt9xyCyEhIfTr14///e9/aDQa3nvvPcaMGcNXX31FYmIi77//Plbr+f+sEUIIIYQob5dOJECcGUM4RNSH9LXqsD39WQYf7A44fAwOHYd8O5gTIfJlyJ8Jrn/B9SVkb4WI+0EXWfTxOp26UMzwNJ9PDVS53GqQKjUdfAqgqFlUJuPJIJXVcjJIZTap68uBy+smy5VLpiOH4/Y0sp15OH0uTFoDIQYLlULj0J6a+aSLACLA6wJPLmSlgs6izsRnjlVfG+3ZZ8EczTnK6iOrWXN0DWuPri1SbNxqsNIsoRktKragecXmNIhtIPWFzpOgwJPHiYKCUWfErDcTY40hyhxFiFENPFkNVsl2+i/TaNQMpUt8mN6pqlevHrgfGhqK2+0udru9e/eyfft2mjdvHmjzer3odGpduX379tGvX7/AOqPRyPDhw4vsJy8vj+PHj/PEE0+g1Z58L3U4HOzfvx+n00lkZGRgyB5A48aN/zPBKIC6desyc+bMYtc1adKEb775ppx7JIQQQghx4Ukw6nJmqQhhNsjaClbTmdWP8nrheArsOwyZORAZBtGRJ9ebnob8RZDzBbg2QepIiBgE5qSyH0OrPTlUrzBFAbcbnCUEqQwGsJghIlQd9ucPUFlMBYGvc2P3OMh05pJqzyDZnkGu246i+LAaLESZwzCVNcCgM6oLgNcOrhRwHAedVc1WM0WrsxNqSu9zjjOHtUfXsurIKlYeWcnh7MNB6006E80qNKNVpVa0qtiK+nH1pc7QeeDxebC77WrwyesACGQ8xVpjiwSeJOAnitBoIOTyykI0GMp2HXs8Htq2bcvzzz9f7Hp9GbNavV518oS33nqLmjVrBq2LiIhgxYoVRQqel7WPQgghhBDi8iW/0V7ONBoIq63Wj8o/Wvb6UVk5sHs/HE9Vgz6VE4r+pV2jgZDuYGoAmdPBcwAyp4K5LYTfC9pz+AVMo1FrShmLCfq43OByQV4+pGeqQSr/cD+zUR3mF2ZVM6oCNalOn0mV57aT4cwmOT+dVEcW+W47Go2WMIOVitZYdNpzrPuks6iL4lNn5Ms/CPZDapaUKQ4MkWr2mkaD1+dlW+o2Vh5eyd+H/2ZL8pag2e50Gh0N4xuSVCmJpMpJNIpvJBk458in+HB4HOS789UaTyjoNDosegtR1iiizdGEGkMl8CREgZo1a/L7779TpUqVQDbUt99+y7///stzzz1H9erV2b59e2B7r9dL9+7def3114OGqYaHhxMTE0NKSgqdO3cGwOVyMWzYMO677z5sNhtZWVkcOHAgkLW1bdu28nuiQgghhBDiopBg1OVOa4DweuDKPn39KEWBYymwY69a3ykh9vQ1m/SVIeYFyF0Aed+BYwW4tkPE/8DU5Hw+E5XRUDSwpChqkMrpgrRMNYimnJJJZTJCeCiEWsFkArORPK2XdMXBCUcGaY4s8jx2TFoDocYQok3hF6auj0YLhlB18XnVQGH2TjI9LlakHWR58k5WHFtfpO5T9YjqtKnchquqXEXLii2l5tM5cnqc2D1q1pPL60Kr0WI2mAkxhFAtohphpjBCDCGEGEMk0CdEMXr37s3bb7/N888/z+DBgzl8+DBjx45l0KBBANxzzz0MHjyYVq1a0aJFCz755BMURaFhw4akpKSQlZXF/v37qVKlCgMHDuTNN98kJiaGWrVqMW3aNP755x/Gjh1LREQEbdu25dlnn2X06NEcPnyYTz/9lJDLLONMCCGEEEKcGQlGXQkMYRBRD9LXgccOekvRbbxe2HsI9hxUAziV4su+f40ewm4FUzPIeg+8xyHjdbB0hrD+oL3AxVQ1mlKG+xXUpCoonm532Un32TnuyyVV6yBf68NoDSUsLIIYSxgaowFQwOdWz8MFKkCsKAo7sg6x7OgGlh3dwJb0vSicHIoSYrCQVLEF7ap15Koq7akYVvGC9OO/wKf4sLvtgeCTglpg3GqwUjm8cmC4XYghBLPeLMXFhSiD0NBQZsyYwauvvspNN91EZGQkd911Fw8++CAArVu3ZsyYMbzzzjukpKTQqFEj3n33XcxmM1dddRXVq1enV69efP7559x3333k5eXx/PPPk5ubS6NGjfjwww+JiIgAYPLkyYwePZp+/fpRqVIl7rnnHubPn38xn74QQgghhLjANMqpxRouUbm5ubRs2ZJ169YRGhp6sbtz6VEUyNoG2dvV4XqF6xTZHbBrPxw8BlEREFJMsKrMx3FCzhzI/039WRut1pIyNTuX3p8Tl89DuieXE64sTrizyfM6MChawn0GrF4tGq9Xne3Pf6nr9aDXqYvZpA5VNBrUdoP+5JDAM6xP5fA4WX1iC0uPbmDZsQ2k2DOC1tsiq9G+QlPaJdhoHJ6AXqNVh+6Z49Ti5/owNbNKlMrtdZPvzsfuseP2udGgwWKwEGoMJdYSq2Y9FQSfdNpzrzEmhMPhYN++fdSsWROz2XyxuyPOsyv59ZXvTv89N05Zypaj2Re7G2etd9OKTOnf4rJ+HlfCc2hYKZwfH+14sbshhLjCSWbUlUKjgbA64M4C+3GwVlbb8x2wZRecSIH42HOfpU5jgvABaiHzrA/AewIyJoG5A4TfCdqwc38uZeBTfGR48khx53DEmUGuz4FG0RChtxBtjCkl+0UBj08NTnm8kJWrDv1TFECj1qfS6wqG/pkgzAImMxj1ao0rk1FdXyDNkcXSo+v568h6Vp3YjNPrCqyz6E20SWhE+4pNaV+xKfHW6FO64lXrS+XuB81Btb6UOQ4MEaALuSynjT/fFEXB6XVid9vJd+fjwxcoMl4xtCLRVrXWU4ghBIvhHIKsQgghhBBCCCHKjQSjriQ6ozpcLzUbXBngMqmBqJR0qJgAuvOYdWOsB7FjIWce5P8CjmXg3KgGpMztzzyQkm9X61mlpqv9TcmAjEzIzS9Y8iDPjs/txudxo7g9hHu8hGk11NJq1eem1eIzGfCajfgKFm+IGU+YBU+oBW+oBXdEKJ6oUNxRobgjQ/FGhJ3SV0UNVLk8ahH1zCzU0XWKmjWlN3CQbP5w7eOPzG38m30gaPhdRWssHSo14+pKzWkRX6/0mfk0OnWIpSFMHTbozoPsnaA1qgEpUywYI9TC6P8RhQuN2z12UMCkN2E1WKkdVpsIcwShxlBCjaEyo6AQQgghxAUQF2rC61PQaS//P4xeKc9DiCuR/DZ3pTFGQUR9OPg37MmA9NzzH4jy05gKgk9JkP0heA6rNaXsf0H4INAXUwfJ64V9h2H7Hth/GA4chYNHITWj6LbF0BYs54vPqMcVE44rNkJd4iJwJUThLFjc0ZEoWg077MdYkrGOJVnb2etKDdpHA2MCV4fWpVNEfepEV0cTYlGH/OU4wOA5mWlV2ox9WgOYItX7Xie4M8GZAlqz+pqaYtSgle7KGkLi9Xmxe+zY3XYcXgcoYDFaCDOFUTOyJmGmMMJMYVgNVrQyhFEIIYQQ4oILt+jRaTU89uV6difnXuzunLU68aG81a/5xe6GEKIEEoy6EnnCYa8Dju+H6vUuTCCqMGMdiHkZ8n6B3G/AtQ1Sn4WQG0B3LWw+AOu3wNbdau0qp6v4/YSHQnwMxEZBfAyOiBByrFpSTT6yzOCxmAgxh2AyWVAMOhStFhQFjdeHxqeg8XrROt1oHS60Tjc6uwtdnh19jh1drh19Tj76rDwMGbkYMnLQ5znQujyYj6VjPpYe1BWfBlZWga8bapjfUMOBMF9gnR4NrUzV6BTbiKsjEknQhqqF1N0eNavrhE8d9qfRqHWndFo1IGU0gdWk1qkyGE7WpzIagob+oTOpi6KAzwGuFLAfUwvTm6LBGK0O6dNefrPA+YNPea48XF4XGo1a7ynSEkmcNY4wUxihxlAseosUGhdCCCGEuIh2J+detnWvhBCXPglGXWlyc2HTv+AMgWo2cGeA7gxmzjtbGj2E9lSzpLa+Byt3wr/fwc7vwHPKtiEWSKwFdapDtUonl7AQPIqXNHcuR50ZHHdn4fC5CdWaCNdbsGh0+AD7+eqyy40hPQdjahbGlCx0qZmsdx7hJ8sxvq+Qw7EQBXWMnoLFDdfvgpu3Q8+dCpGOA3jNx3BU+gdH1TgcVeJwVI3DXiUOZ4XoguBSQX0qfwH1vHzIygafj5P1qfQnC6qbTWAxqrWpChdTN0aBUQteuxqUyj+qDt0zxYAx8pIOTHl8HuxuO3luNfik1WoJ0YcQGxJLnDWOUGMoYaYwzPorK+NLCCGEEEIIIUTJJBh1JcnPh02bIC0NqtYAbx5kblGLmhsiLtxxFQX2HISla+CvNeqwu8JigCbh0OIaaNgGqlYsMmQt3+sk2ZHCAUcamZ48NGiI0luJN4RfuG4bDdgTIvk7JIvfIw+zOG4raZ6TqcghWhOdTTW53l6Ba9IsRDmyMJnSMEenohzPQOdwEbL3GCF7jwXt16fX4awUg71aPPaq8Tiqx2OvloAzISo4S03xqUXUPR5wu8HhhFTPKcXU/TP/6dUZ/iwm9b42GzSp6v5MYRASB5aCoXxa0wU7Z6dzavBJp9Vh1VtJCE0g1hpLmFHNfDLpL14fhRBCCCGEEEJcXBKMulI4HGog6sQJqFJFDfZowyC0BmRtV2sP6c5zACA9CxYtg1+Xwv4jJ9v1OmjRENo0hvppEPE7kA18A+Yj4LsNtBVQFIUMTx7HXJkccWWQ63UQojVRwRiBXqMr6ajnzKf42JB3kN8yN7M4MzgAFaYz0zmiPtdENCAprDbGgiLZeQWLn8btwXgiA/PhVCyHUzAHllR0DheWg8lYDiYHH9eox14lDkf1BDVQVT0Be/UE3NGnFlEvoBRkVbkLAlaZTrW2VuFglVYD2mRgu3reQ8IgLBascWCOAFPoyewrgx505/effHHBpxBDCBVCKxBrjQ1kPhlLK+QuhBBCCCGEEOI/RYJRVwKnE/79F44ePRmI8jMngCcP8g6AOV6dwe1c+HywaiP8uES99RXUUjIYIKkJdGwNbZtBaMjJx3ivh5y54FgOjtUojrXkm9qxS9uGIx4Ft+IlUmelmjHmgtUJUhSFf/MP8VvGZhZlbSHFnRNYF66z0CmiHt0iG5IUWgtDGWZpUwx6nFXicFaJI4v6J1f4fBhTsjAfUoNRlkMpmAtutS53sZlUnlAL9uong1P2gmCVz2oGvRb0hpJ6ETwM0OOBtBw4dkJ9XXQG0IeCORyMoWpgymQCiwUs1oLZAQuGAgZuDaXOhHi64JO/5pMEn4QQQgghhBBClESCUZc7txu2boVDh6ByZbVgdmEaDYRUB68DHMkFAamzKGiemwc//wXfLoJjhTJ+6teGHldDlzbBAajCdNEQ+SBOV3e82XOwerYS4lxGY1YQr2tJqvFq3FrLmffpNBRFYYf9GL9m/suijC0cc2cG1oVqzXSJrH9GAagy0WpxJUThSogiu1XiyXavD1NyBuYDyVgOnsByIBnLgROYj6ahz7UTtuUAYVsOBO3KGRepBqlqVAgEqRyVYgoVO9cUDOHTgckf/PEPa1TA5wKPHTzp4MkCtwHyQkHRA4aTgcnCtasMBjCbwRoCJiNenYZ8xU0+HlwaL1qDEas5nAqhFYixxhBmDJPMJyGEEEIIIYQQZ0SCUZczjwe2bIF9+6BSJTWYUBytHkJrq8EJZxqY48p+jKPJMPcnWLgUHAWz4IVa4bpOcH0nqFH5tLvI8dg57srioNNOttKdyvom1PctJ8x3iEre1VSw/0OqvgXHDR1xa8+9ttU+Rwq/ZmxiYeZmDjrTAu0hWhNXR9Tj2shGtCk0BK9c6LQ4K8bgrBhD1lUnM6k0Lrc61O/ACXU5eALL/hMY03MwpWRiSskkcu3OwPY+vQ5HldigDCp79QTcsRGnZDRp1NpRRhMYAcUFXid4MwuG95nBGK5mTmnN4NOC14vX48aelkHe0VycPjdajYYQrZl4QxixlhjCTEbCzBqMYUCIA8yAwaEWXTcYgheZDU8IUU7mz5/P22+/zeLFiy92V4QQQgghRBlIMOpy5fXC9u2wdy9UqKD+8l8avRnCakPWNnBlqrOwlWbXfvjyB/hrNfgUta1mFbipO1zTDiylz36mKAqZnnwOu9I56sog3+siXGehqikajSaGnUp9wnx7qehaQpjvIPGe1cR51pKub8wJfXvsugplPRMAHHFm8Fvmv/ya8S+7HCcC7SaNgY4RNq6NbEy78LqYtac5T+VMMRqw16qIvVbFoHZdTn5BgCq5UKAqGZ3diXX/Caz7TwRt77Wa1MBUNX+AKh5H1Xg8kaHqBhoj6I0F/+J94FEz5by+Y9g1GvI0OpxaE1qdBWtoBHGxFYk1RhKmDyFMZ8WkaE8WWne71dpkbndB/SrUwJNOdzLDSqc7OSTQZFKzrQIzBxbaxh+40usleCWEEEIIIc6buFATXp+CTnt5f8e8Ep6DEMWRYNTlyOeDXbvUJSFB/WW/LAzhaoZU9na1jpS+mGF1/+6AT7+Ftf+ebGvdBO64EZrVP23AwKf4SHPnctiZzlF3Jm6fhyh9CLGmsOANNRpydLXJMdci1LePSq4/CPPtJ8azkRjPRrK1tThhaEe2rk6JwwpT3TksytzCrxmb+Df/cKBdr9HRNqwOPaIac3V4ItbzXbi9HHjDrOQ2qkluo5onGxUFY3JmUHDKcuAE5iOp6PKdhG4/ROj2Q0H7cUeE4KgaF5jZL79qLOmVI8kK0eFSFDRosaIhVqMhTqMhTANhWg0mdOowPo1WXXQFASRzCUFIRQmuXeXxQE4OZGaq9xXlZOAK1OvIH5DyB6csFnX/JtPJTCu9Xr3vXwyGIjMxCiGEEEIIcapwix6dVsNjX65nd3Lu6R9wCaoTH8pb/Zpf7G4IcUFIMOpyoyiwZw/s2AGxsSUHB0pijgVvDcjZXZDNYlX3uXE7fPINbNimbqfVqnWg7rgRalc/7W69io8UdzYHHGmccGcCGmL0IZgNp6klpNGQq6vFTkstrN4jJLj/Jsq7hXDfXsKde3FqokjRtyLN0AKPJoRsj53FWVtZmPEva3P34UMNcGjQ0Cq0Bj2imtAloj4ReuuZnZfLgUYTqEeVlVTvZLPbg+loWsEMfmo2lflgMqYTGRiy8jBk5RG2eX/QrtwRIXiqVYDqldBXr4ahRlWoVhHCw8DnBFcqOI6DVlcwpC9CDWbqreo1c+oQR39wqaShoqfy+dSlcPDKH7jyB69O3bc/i8piAasVQkLUAJVOp16v/tvCmVdn0ichzpCiKOS788v1mFaD9Ywmejh8+DDXXHMNjz76KLNmzaJXr160bduWyZMnc+TIEerWrcszzzxDUlISAB6PhylTpjB//nzsdjvt27fnxRdfJCoqCqfTyZQpU/jhhx/IysriqquuYsyYMVSsWJEnnngCo9HI+PHjA8d+8sknMZvNjB07lmPHjvHiiy+yYsUKYmJi6Nu3L//3f/+HTqdj/vz5fPXVV8TExLBy5UrGjBlDr169mDZtGl988QUOh4NWrVrx/PPPU6lSJQBOnDjBqFGjWLt2LTVr1qRTp07n90QLIYS4YuxOzmXL0eyL3Q0hxCnkt7TLiT8QtXUrREaqv5CfDWtlUHyQswe27oBPf1QzokAtht3jaujfEyrGn3ZXbp+HZHc2B5yppLhy0Gu0xOnDz6oeU76uMvt0t3HE151490piPP9gUjKIdP7Gn+mL+CQ3lMV5ebgVX+AxjaxV6BHVmO6RjYg1hJWy9yuXYtDjqJ6Ao3oCKUoD7F4XeT4XPoedsCMZxB3JIvpwJhFHMjAdTEZ3Ik0NUv27B/7dE7yzEAtUrQjVKkG1ylA1HipFQ3wu6I4WBKdMamDKGAE6S8FyhtlnWu3JwNHp+INW/iGCWVmQmqq2nco/XLDw4s/o8i9GY8lDBQ2GopMACFEMRVHoMLMDfx/6u1yP275qe5YOWnrGM4/+888/zJs3j/z8fO68805efPFFmjRpwp9//sn999/Pd999R/Xq1XnrrbdYsGABr776KpUqVWLMmDGMGTOGKVOmMGbMGP755x/Gjx9PZGQkEydOZMiQIcybN48bb7yRZ599FrfbjcFgwOVysWTJEt5++20URWHo0KHUq1ePb775hpSUFJ5//nk0Gg0PP/wwAOvXr+ehhx5i2LBhREVF8emnn/L9998zadIkYmNj+eijjxg8eDDff/89BoOBxx57DKvVyty5c9m1axejRo0iKirqQpxyIYQQ4qKRoYbiSibBqMuFosDu3ScDUaGhZ78vjQa2n4DpM2HjVrXNoIcbOquZUAmxp92Fy+fhuCuT/c5U0t15mDR6Khgj0GvO/Rd5lzaSPYZr+NRemSXpf7M45yh2RQFyAGhk1NIrshodo64m3lLnnI93Xik+8HjB61OHrfl8as0tjQa0mpO33oLtCmcBaTSgcHJ2O4MeTAVBEop/83b7POT7XNh9LlyKF11BwfEEYzixIZUJizcT2sqMqXCtLLsDDh5VlwNH4MBRdTl2AvLssH2vuhSm00HFOKiSAJXjoHIMVIyGKnEQGweGUNBHgt6i1ifTWtTA1fmg1Z4cpnc6hYcLer3q4naDw1F81pV//4VrWRmNavZVSIg6ZNBgCC7Q7r8vNa7+8zQl/Lu8FN17771Uq1aNp59+mttvv51evXoBMGDAANasWcMXX3zB8OHD+eqrrxg+fDhXX301AC+++CI///wzWVlZfPvtt8yYMYOrrroKgIkTJ9K5c2eWL1/O1Vdfjc/nY9WqVXTo0IFly5ZhNptp06YNK1eu5OjRo8ydOxetVkutWrUYPnw4I0eODASjNBoN//d//4e5INv3gw8+YMyYMbRp0waAl156iQ4dOrB06VKqVq3K+vXrWbJkCZUqVaJu3bps3ryZX375pbxPqxBCCHFByVBDcSWTYNTlwOdTA1Hbtp17IGrtWnj/ffjnH/Vngx56tIE7+0BCxdIfCzh8Lo67stjvSCXDk4tVa6KSMRJdCXWdzoTb52FV7l5+y9jMH1nbyPM5A+uqGcO5JSyEe0PSaGpyAfvBt598ewUydA3J0DfCqY055z6cEY8X3C5weU4W8w7UQtKqi9GonmN/YMQfnNLr1SwkixmMBYENn08NRnk9YHdCvh1y88FdkAGk0+HQKdh1Cvk6H16tBoNGh1VrpLIpmih9CGE6M6E6c+mZaRYzJNZSl8JcbjhyHA4eUwNVh47CoePqfYcTDh9XlyL7M0GlOKgUA5VioXI8VK4M1WpBfGU1QKUzq8t5uE5KdabDBaForav8fMjOVu/7TmbhBQ37MxjULCurVQ1cFa5pVfhWsqyuWBqNhqWDll7yw/T8KldWZz7ds2cPP//8M3PmzAmsc7vddOjQgYyMDDIzM2nYsGFgXZ06dXjkkUfYuHEjPp+Ppk2bBtZFRkZSs2ZN9uzZQ8eOHenWrRsLFy6kQ4cOLFy4kB49eqDT6dizZw+ZmZm0bNky8Fifz4fD4SAjIwOAmJiYQCAqLy+P48eP88QTT6AtVCPO4XCwf/9+nE4nkZGRgSF7AI0bN5ZglBBCiCuWDDUUVyIJRl3q/MXKt28/t0BUkSCUAW66Ce4dAKEOyD0Anny1JlAx8rwOjjkzOeBMI8ubT5jWTBVjNNpzDC54FC9rcvayKHMLS7K2ke21B9YlGMK5NrIx10Y1pp6lIhqNBq/iZo93JzGe9UR4d2P1HcfqO05l9+/kayuQqatPpq4edm2F85i5oqgBIWfBMDGPRw0aGQqyl0IsEBZTUHy7ICih06pDHk8ttu3zqUErrfb0xeA9bux5udjzc3E4clHyHRgdHkI8Gmq5zUQqBkI1ZkJ1JvRGU8GxDeqxz4bRADWrqkvQ01cgNQMOHVOXw8dP3p5IUQNnew6ry6nMRqgQUxCsSoAqVaBKdahSDSpXBVNY0fpT5c0/nO90EwH4s6z8QausLEhLO5lt5X89C2dZ+WcUlCyrK5JGoyHEWMxEEJcgU8H17fV6uf/++7npppuC1pvNZvSlBHFNJfz78Hq9+AqCtjfccAMjR47kueeeY/HixbzzzjuAWoeqVq1aTJs2rcjjw8LCiuzf6/UC8NZbb1GzZs2g7SMiIlixYgXKKRmOhtPNKCuEEEIIIS4pEoy6lLndaqHy3bshOlr9hfZMKAqsXg0fflhMEOpeqFChYDsfoIO8/aC4wRAR2EW2x85RVwaHnGnkeB1E6CxUM8ac1V/m/QoHoP7I2kZWoQBUjD6UbpEN6R7ZiCYhVYsEuxSNgUx9QzL1DdEpeUR6thPl3Uy4d18gMFXJvQSXJpxMXSLZurrk6Gri05SxppHiO5np5HKr2U+agvNmNEBUBIRZ1cCC2Xgy86msSpkJzuV1Y/c4sXuduDxutFotZqORsJAEalhshBtDCdWbCfHp0Lo84HSpfbTbITvvZCaVy0VgvJ+/3/7lbDJ1NBqIi1aXFg2D17nccDxFDUwdOaFmVh05oS7JaeBwwf5j6lLkXGggNgoqxEGlSgVLZahcBSpXh4QKl1ZmkT9oVRpFOVnfyuMpeG1OybLSaE4ODfTXqiopy+rURYhzVLNmTQ4fPkz16icnppgwYQI1a9bktttuIyoqiu3bt5OYmAjAtm3bePDBB/npp5/Q6/Vs2LCBjh07ApCRkcGBAwcCAaN27drh9XqZOXMmZrOZVq1aBY559OhRoqOjA8Gn5cuXM3/+fCZMmFCkj+Hh4cTExJCSkkLnzp0BcLlcDBs2jPvuuw+bzUZWVhYHDhwIPI9t27ZdmBMmhBBCCCEuCAlGXarsdrU+1IEDkJBwZrPm+Xzw11/w0UfqPqD4IJSfRgshVdVaPzl7URwpZOksHHJlcNSVQb7XSaQu5JyCUE6fm5U5e1icuZW/sreT43UE1kXrQ+gS0YDukQ1pHlqjzEP+vJoQ0gwtSTO0DASmIr07CPfuwahkE+9ZQ7xnDQpacrVVydbVJkdXi3xtJRSNXj1ProKgk8t1MrvFYFCzjCLD1awnk1ENPpnOX3Frr8+H3evE4VEXHwpGrQGL3kRFawzR5ghCDVZCDGbMOlPR824pbqdeNfjjdKrZSg4n5ORBbp5aJyor52RwLVC4W68GqQxnmVFlNBQUO69UdJ3LDSdS4egJOJqsLsf8S4oaTEtOV5dNO4o+XqeDuBioEK9esxUrQsUqUKGiej8h4eyL+F8o/uvndIGjwsMCC2dZud3B2/mDVf7FP5OgxVJ8sMq/vWRaiRIMHDiQu+66i8aNG9O5c2cWL17MrFmz+PjjjwG45557eOutt0hISCAmJoaxY8fSrFkzQkNDue2223j55Zd5+eWXiYiIYOLEiVSoUIH27dsDoNfrufbaa3n33Xe57bbbAu9bHTp0oHLlyjz99NM88cQT5OTkMHr0aNq1a4euhPfUgQMH8uabbxITExPIqvrnn38YO3YsERERtG3blmeffZbRo0dz+PBhPv30U0LO9A82QgghhBDiopFg1KUoKws2b4bkZLX2Tlnr37hc8Ouv8MknsLegALXJBDffDHffXTQIVZhGg88US5onn8Np6zlmP45LbyHKEE6s6exmqcvx2Fmes4s/srbxd/Yu8n2uwLqzDUCVpHBgSqO4CfPuJdK7k3DvbkxKBmG+A4T5DoB7MT5FT66vIrm+KuToqpFvrI4vvkLBbGvGguCT8bz9Qu9TfDg8LhxeJ3aPE5/iQ6vRYtabCDNYqRFekTBDCCEGCyEGM/qzHbam06nBs5BTIlU+nxr4Kbzk5UOuXS3snZuvBkF8ClAwhLBwoMpfTP1MGQ3qzHxVi6lFpiiQkaUGpY4XLP77J1LUAJXHC8eT1YXNxR8jNAQS4tXAVHyCGqhKSIC4uJO351Jj7UIpS10rfzF2f5aVuyALLjk5eCbBwnWy/IvZrAas/JlWp84Y6F9KydQTV6ZmzZoxYcIEpk6dyoQJE6hWrRqTJk2idevWADzwwAPk5OTw+OOP4/F46Ny5M6NHjwZg+PDhjB8/nkcffRSXy0W7du2YNWsWxkKTC9x4443MmTOHG2+8MdCm0+mYPn06L7/8MrfffjtWq5XrrruO4cOHl9jP++67j7y8PJ5//nlyc3Np1KgRH374IRERaubu5MmTGT16NP369aNSpUrcc889zJ8//0KcMvEfITM9CSGEEOVLglGXEkWB48fVbKbcXLW+Tll+WUxPh3nz4Ouv1ewKUIf03X479O+vDvErhcfnIcWVyUH7MU4400EfQrQlAYsnv2AIX9kdcWawNHsHS7N3sDZnH15OPj7BEE6XiAZ0jWxA05Bq56XoeRGKD8WlkO2uSra7AnjaYdRkEm44QrjuIGGaQ+g1dsJ1hwjXHQJWoHg12POrkqepQ56+NvmGGtipxNn88/D6fDi9auDJ4XXh9fnQaDSYdUY16ykklnBjKCF6MyEGC2Z9GYcPngutVi1abikmu86fTeVyqTWxXC41iyo3H/IdanaVO08NhGgANCcLeftrZun1an2sMwneaTQQHakuDesW0y8fpGWoQ/1OpBYsKZCcqgaqUtIhz6FmfeXugz37Sj6WxQJxsRAbC3HxEB+v3o+NVYNVMTHqfav10sooKmsxdv/QQP/iD1qlpKivb+HaOoWLsPsDU/6glb+mVeGgVeHbS2nIpCizKlWqsGNHcObhjTfeGBQsKsxgMDBixAhGjBhRZJ3FYuGFF17ghRdeKPF4bdq0KXI8gKpVq/L+++8X+5i+ffvSt2/foDadTscTTzzBE088UexjoqKiePvtt4Pahg4dWmK/hDidy322qs6JcTzdo97F7oYQQghRZhKMulQ4HLBnj5rRZDCoGVGl/WKsKLBxIyxYAAsXFtQJQv1F+/bb4ZZbIKz0jCa718EJZzoH7MfJdGWj1+iIM0Zh1BpA8YIrA+zHwJkOpnCKu1zcPg+b8g/xd/YulmbvYK8jJWh9LXMcnSLq0zmiPvUtFc+54HmhE6D+4u3yFNR28gQPszPqITwSQiy4THVINbcj1WQCnQaz4yihudsJy91OaO5ujO40rPaDWO0HiUtdDIBPY8BuqUq+tQb5lqrYCxaf7uSwMLfXg8PrxOl14/C6UBR/4MkUFHiy6s1Y9WYs+mKG211sJWVTQfAwRn99Krcb8uwnA1WBYJU/U0dRh30aCgJU+lNuy/r8dVqIj1GXRrbit8mzQ0qaGrBKSS0IVKWpQazUTEjNUrex2+HgIXUpjdkMsTH/z959B0hR3v8Df0/ZdnuVu+NoAiIevZwgqEAQYuGn2FCjYkNMNAEksUTEWFBUVGIXCyr2QrAQWyx8o8YCqEQgqCi9HVxvW2dn5vn98czMzu7tNThub+8+r+93MjPPzM4+O4xb3vc8z/DwNjePh1RduhjrtuUuXdpXcNXcroEA/+/EfvdA886B5t0e7cc0x7WywkfjDoLmoOz2LoTx3QkpvCKEpKBUvlvVUfnUTZUQQkhqoTCqPSgt5QOVl5byrkWeRAMCGaqrgQ8+4CHUDltrkMGDgenTgZNOarQlBWMM1ZE6lIQrsCdUAp8aRJrkRjd3HmTB9uNRkABXHr+7XrCEB1KSDCZ5sVepxtq6bVhduxXf+bbHdL+TIGJkem+MzyzEbzIHoo877+DPC6+x0drDmJRItKWHw/gRnOEF0j3Ru9mZd5VroFVZyNMLIU8vlOefxA+jVMLr3wavfyu8ge1IC+yCpAfhDWyHN7A95rEBOQd1zq6oc3ZFwNUdsqcn0tN6Iz3rCKS7vPBILqQ1NM5TqhFFwO3iUyL2sMr8t4lE+JhVgRCfIhEgaAwEb96FEIiOW2WGVJJkhFbGcnPOndcDeHsBfXs1vE8wxO8EWFHBg6uyCqCy2phqgIpaoKrOGGMrBOzdx6emOB1ATg6QncPn8VN2duyUkdE+whn7Xf6aYgZWZngVCgF+f7TM3uLKbMVlDvJu/tu6XNEAy+msH1jZwy4KsAghhBBCCOk0KIxKpro6YPduYOdOvt67d+IApa4O+Pxz3gLq22+jLRjcbuDkk/mYUMOGNfoDPqwpKFeqsTdUgnKlBhE9gixHBo5wFzQemkhpKJHTsa72V3xXtRHf1e3AAbUuZpcc2YvjMo7C+MwBOD6jPzLlRsK0huh6NHAyfwSbLZ1kCZAdvJtZ11wejjgd/Mety8m3H4KIswuqHDkozRwJRYsgrIXhCB1AenAXssL7kKUcQFb4ANxqNdLUKqSpVSgIxHVDkbw8GEnrDaT1Ajw9+JTWE3B3Aw52HKj2rKmwCuDXqhlW2f99w0q0ZVUozMOqsBINPux3bRfNoEO0BR1m6CE23pXV42543Cq7YAioNEKrimoeVlXX8MCquhao8gHVdXwKGwFcSSmfmkMQ+NhVWZlAVlZ0yjTnmfWnjAw+T9Zd9JrTRdBkjm9lD6/CYd7yyvo3ZbH721teSVJ03QyunM5o10F7wJVobj6eEEIIIYQQkhI64C/kFBAIAHv28BAqEOBdgOLvArRvH/DNN8DXXwNr18beZWvQIOCss4ApUxodnFnVVVRF6lCmVGF/uBy1ET+cogM5jgy4RGfCx+hMx87gfmyo/RU/1PyC9bW/oDhcHrOPLIgY7umO49KPxAlZA1CYdkTzut9pGg8d4gMnwHarexnISgfSPNHQyby73SGGTowxqLoGRY9A0SJQdBURPQJm1MEhOuCSHUhzeJCZNgwZzrFwyy44JScgu8D0EATfdsC/g49T5N8J+HYCoQOA5gdqf+FTPQJvZebuBngKAHcB4MoH3F355Mrjk9SCOyamCkkCPFLiu/+ZGIu9LszQSjPmVnClRLtkhsI8wNRUPvC6AB5gmd3LzKDKHljZl+ODC48b6NmdT00JhICaaqCqmgdWVbVATS2/W2FNHVDtA2r9fKrz84HiGeOhcl1d81pe2blcQEY6/289I52HVOn2eWZ03WvsZ05eL+9SeLhbHDV3fCs7XY92DzSnSIS3wLKXmcc3w2mgfoBl/vuaQZbDEW2JFR9kJZrMxzfRIo/ZAzXSYdC/KyGEEEJI26Mwqq0wxsdmKSsDdu3id8zLyeEDJwO8RcaGDcAPPwCrV0dbS5n69QNOOYW3hOrTp8Gn0ZiGmogPFUoNisNlqI7wVkwZkhe93F1jQiPGGPaHy/GLbxd+8m3Hprpt+Mm3HX4tFHNMEQIGpPfFsVmDcWz2YIzM6A+PHuRjSkV8gFINSE4ATkCDrXWExgeiNpu5WF2xZCAzHUgzutU5HEboJDfava7pU8zDpoiuxkwa08AYgwABsijDKclwSk7kuDKR4UyDR3bBJTnhlp1wSy44pYZaoriALkV8ijnpYSC4D/DvBgJ7gGAxENjH58H9gB4GwmV8qvlfwy9A9vJQypkLuLoAzhzAac6zAUe2bZ4JNBAophxBiA6G3hTGjNDKNu6Ral5rRqClGKGVOSC7Wa4aXcvMAAtm8MCiIZYZSohmqCVGwwpz8riAtG5A90buTmmnaUCtjwdVtUZwVefjZbU+vuwL8OCqLhANsPzGf4fhMJ/KKw7m7HJuN+/WmOYBvGk8oErzGPM03jU4zWvskwZ4vNHtHq+xPY3v4/EAThcfG+xQuqKa57OlLb90PTbIMpfDYT4+mL0sUcggCLEBlP3fPX7gdiPYcggCEIkgUFsLjz20EoTY5URz0u4FAgEAfPB2QgghhLSu/HRXh7ljaUd5He1Fm4ZR4XAYd9xxBz755BO43W7MnDkTM2fObMsqtD1F4UFTcTFQUsL/6i/L/A54a9YAmzfzEGr37tjHSRIwfDgwbhwwfjzQv3+DTxHSwqhRfahSalGiVKI24ofKNKRLHnRz5kIWZdREfNhYtxU7AvuwPbAPv/p341ffLtRpgXrHc4tODE7vh6KsASjKHIBh3iPhhSP648+nGKFTBqBJxgDWNYAQASQBkN2AJ53fKc3tigYN1tTywElnOlRd4xPjgZMZPDGmAxAgAJBFGbIowSHKyHR64ZU9SHd64JQccElOuIy5U3S03phOkgtI78eneIzx0C50AAge4PNQKZ/CZca8nAdWqp9P/l3NfF4P4MgEHFmAIwOQM2zzdEC2T17blMa7FcoePjZYKhEEo4tmM380mt3HND0aWKlqdF3XomGWotjGvlKjYWrE2J/pfK7rRshhNscCXxaEaIhlTca6Q+ZdTAvyeMAl2LY3dB1qOhAIGuGUH/AHbMt+HmD5ArzcF+D7+s0pxLsemgPLh0J8qqg6xH8AgxnKuZzRrpoeY+4y5uZYUeayue6y7ecyj+EGnO7outN4jNNphF62cwxjksDfbyAakxNWwGjfL+b8Gi2sdOPf0rw+zPAqEuHn1gyyjLnEGLIzM1FqhF5prrgx4RItx5fZp/jtTR2jqeOTg8IYQyAQQGlpKbKzsyHRmGWEEEJIq8v0yCl/x1IA6N81HY9cWNT0jqTZ2jSMuv/++7Fp0ya8+OKLKC4uxrx589CjRw9MmTKlLatxeDEG+Hx8MPKff+bTtm3AgQO8bPdu3gUvkaOOAkaOBEaPBo47rsG74YW0MOrUAHxaAGXhKtSoPtRG/KhRffCpAVRHfNgfLsfeUAn2hkqxJ1iCikhNwmPJgoR+7u4Y5D4CQ929MdTZC0c6ukYHM48AqA0BkmJ0aZGNwcKNH5IOc1BiAUCYT6wW0AKAObC5KPDHiW5AlIzTxKAxHRrToOnG3AycGA+dwBiY8WNfEATIQjRoSpNd8EhueB1uuGUXHKIMp+SAU3Twlk+iA5LYDn5YCAJv5eTqAmQNTrwPYzyECpcDSoUxr+JTuNJogVbNW6Ap1UCkFoAOaEE+hUoOvn6iiwdUkic6yR7eZVAy5qK57OKT6DLKzXVn/WXRaUwO2zwJDTGt7mMAmjFmdwwzsDDDLCu0sJXpWjSgUo0wwwyyIqrtsUaopbNomKXbgy1Eu6KZIZcZqIgCkJUB5GRFAy+zJZe1bgu2zEkUgIjGQ6hAiIdVwZBxh0FjPWCEVubcPgWC0TG9guadE9XouTGDr8PNabZSkqNBpLnskKPbHY76wXf8NlmKtsSUpWg4bn+sbG43H8PLuvnLALkHSnXFeh8DYOSRcS2wEvb6Yg2UJyJEG+6Z67ZZ7D72bbbHWWFVfOgVVybUW0hcFnPMw+kgnuMQ65WdnY1u3ZrZ0pHUQ38lJoQQ0hypfMdSoOO08GpPr6HNfh0GAgGsWLECzzzzDIYMGYIhQ4Zgy5YtePXVV1MjjIpEeBeb6mqgqoq3bKqo4CHTvn285dOBA8D+/bwFVFUTLRAKCoDCQj4NG8ZbQWVmWpsZY/CpfpSGKnFAqUBxqAz7gmUoDpagVKlCabgSVZE61Kh1qIzUoTxSAw16408pZ6OfswB9XQUo9PRCYVpv9EvrAYfsjA4YbE5SgjtdmXc+M7r66UyHznRousbnzM3L9Bxoqh+66ocW8UNTasDUKjA9AjAVAgQwQYAkuSAJTkiyE7Lkgiw44HV6jG5zvAWTQ5LhEPlkBlHtJmhqLYLAWzI50gH0bXp/pgOqj4dSkRpAqQHUOiBiTGot7z6p+vl+qrkc4GNbqX6AGWPx6GFACR/OV2cjGqGUPaByAIIjGlYJslFmnxvlMcuSsSzZ1m3LMZNtO0QjFDNaJwmyMReNfY054suMSZYAh2DsI0SfA47oPtZjjVY7DEYIBaO1jbFuBVJm6xxbQGUv1zQeKmkqoMaNs8SYEYaZIZFxDLDoczDjfSHN6KqXmwMIRuhlZV/GgoD6rXjsk6bz6yUc4WN5KcbcnJS4MkWJ7mvfX7E9xuxOaX+8bkttFJVP/sN/hTZGANAdQNe0NES6duVBldmNUxb59SXbxycTbGOX2bp/ysbc6ipo21805tbYZ+a1BKNchBVQijD+XeyhJOr/m1kt9Ix1KS7ENI9r1lM0XoskxtZJtHVflSVbXe3Htz1GRLSFoFlHIUEdEVcuxrVqs/ZH3P5GmcMF5I0w3j9bzuFwUIuoQ9QR/tp94oB8/PXUgcmuBiGEkHasI7Twam+tu9osjNq8eTNUVUVRUfTFjxo1Ck899RR0XYeY7DshVVTAf8Nc1BXvhBYKQg/6oYeC0AJ+6H4ftIgCTQQ0AdBEQE0wRYy50g1QegKKW0Y4OwPhLlkIdclAOCsdoQwPgpke+GUdPjUEv/4jfNo61H0fgE8PwqeFUKcHUasFoUJr0UuQIKKrKwfdXHnomdYNPdO7o5e3O7p7u6N31hFIc6ZBF0UwUQSTBOiiAL8oggkCdPBWSGbAxBiDzsLQmc5/RCsAIuBBEmO8i4oASJAgiiIkQYIoiBAFEZIkwyXnwiX3gFNy8gmAxCKQoUJmGmQ9BFkLQGYqZKZDFhgkphu/NYToYMUiwFuJGOeCwWhNYv/hL9jmnYAgGt3zMgH0avnjGeMhlBbiwZQWjM61ULTFlRayTUHjMeHoY3XFNg/zuR6OXY9pCqIb29sq/GrvbOGCNTeuZesHt7Fs3yYgug+AmG5skjGZx4e5r31diFs25vZ/KmaUx5eJ4C3MXCy6j/04LO6/QRa3PabMGGcuvk6MARoDFMZbZkZ0Y1k31hmfFD26rLK4ZZ3P1bjtqh5bphrH0Gzratx6JLY5kxQIQIof068zEhAbgJnhmBWUIRqAWcEZbMEVYgMo+z72feOPH79+RB6w7GMgI6/tzwGxpPpfu4/K9za9EyGEEILU/8xrT9osjCorK0NOTg6czuigy3l5eQiHw6iurkaXLl3aqioJrfv8NUzo+RqCfVvzqCqAKmOyFVU2/wgCBKQ7vMh0piPDmYFMZwYyXZnIcecg25ODHE8Ouni6INebjxxPF8hmVygBECFaA5argog6QYAgCDHlVoAkSMZ4S3ySRAkOycGXjaBJEiVrX3NdEqSYclmUIQpi88dj0jUjxDAn3noKeiQafJghB9N4CxCmgSdkxjg+zOzqZBu/J+ZXdPw6bMGV/Ye+0PB2a9m+W4If4zGPjd+nIY3s0+h5bGn4Fre/IBvjTWUd9CEaxZjxb2b+u0b4XFeNZYX/+zOjTFf4/ua/v67yZaYa+5nrtusgZlKNcj22zFqPm0Ozreu28vh1lmDZmMx9zfLm98MyHmMLWTuLpq4hM49rL2NJM/C3GxW8VVvEmJuTatumJVjWE5RrtvLGyvQEy/Z5/HZzncWV6XHbE5XHT805LxqzrSTJxkpg3xYgv2/y6nCYdcrxNgkhhBDS4bVZGBUMBmOCKADWuqIobVWNBnnGnQjvzxkIqXUQjcBGgADJCGtEUYIoSsa6BEk05kYAw+eSEeI4IYsSZJGHOU7ZFW0hJDnhklzwODxwyS64JTcyXBnIcGbA6/TC6/Aiy52FLGcWMt2ZyHBmQBR5XQRBiJmboY9ZJgpivWUzbDLL4stbFBwdDqIEiB4Anqb3jQkZbMGCFR5o9YMBa87ql1uBgvFrk9n2S/RY2H542cMvZv/lZi+P/4HW1HqCx8SsN/GD76B/Dx7OH5KMh16SjGb9G6c6xhJcU3GBlbU90brtcYBtWUd0bKK48NUegpn7Wsv2axm252jgWrbWYXusbTnRurka898I6h8npjzuuo7Z1zavV44GtseVN7i9qX2Y7X0g7nWw+Ncb/1rijscSlCU8Jhp+/TGLccdN9Noaer9I+J94fJ3iEijNuG50Fu1aqhnPq9smq+upHldmLqP+eszjET3nZriVaLtuPId16RllfY4E+g1P9AI7jE4x3iYhhBBCOp02C6NcLle90Mlcd7vdbVWNBg3uNgxlt9SiNsyb3AnGn+/jQ55EIZB9X3IYWWPytJcmEweh0R/Hzdm3mY896P1aoFn1a2vtsU6EkMNHACRn07ulqJQfb5MQQgghpAFtFkYVFBSgqqoKqqpClvnTlpWVwe12I9M2cHdDmPHD1+c7vIOFidb4KlF6s/osEEIIIaTtHf7W1V6vNyl/cDrU8Tbb6rtT30wRupK6fygq8PBzlMqvoyO8BqBjvA56De1HR3gd9Braj47wOvpmiof9O4GpOd+d2iyMGjRoEGRZxvr16zF69GgAwLp16zBs2LBmDV7u9/NbKU2cOPGw1pMQQgghxG7dunVITz+4O/YdikMdb5O+OzXPdgAvJbsSh6gjvAagY7wOeg3tR0d4HfQa2o+O8Dq2Axi1qG2eqznfndosjPJ4PDj77LOxYMEC3HPPPSgtLcWyZcuwaFHzzkbXrl3xxRdfJO2vk4QQQgjpnLze5Nxt7VDH26TvToQQQghJhuZ8d2qzMAoA5s+fjwULFuDyyy9Heno6rrnmGpxyyinNeqwoiujWrdthriEhhBBCSPtwqONt0ncnQgghhLRXbRpGeTwe3Hfffbjvvvva8mkJIYQQQlLOoY63SQghhBDSXjU9WBMhhBBCCGlz9vE2TS0Zb5MQQgghpL2ibzKEEEIIIe2QfbzNjRs3YtWqVVi2bBkuu+yyZFeNEEIIIeSQCMy87y8hhBBCCGlXgsEgFixYgE8++QTp6em48sorMWPGjGRXixBCCCHkkFAYRQghhBBCCCGEEELaDHXTI4QQQgghhBBCCCFthsIoQgghhBBCCCGEENJmKIwihBBCCCGEEEIIIW2GwigA4XAYN998M0aPHo3x48dj2bJlya5SyiopKcHcuXMxZswYTJgwAYsWLUI4HE52tVLeVVddhZtuuinZ1UhZiqLgjjvuwLHHHosTTjgBDz74IGi4vIOzf/9+XH311TjmmGMwefJkvPDCC8muUspRFAVTp07F2rVrrbI9e/ZgxowZGDlyJE477TR89dVXSaxh6kh0LtevX48LL7wQRUVFOPXUU7FixYok1pC0xvX+/vvv46STTsKIESMwe/ZsVFZWHu5qH3atce2OHj0aAwYMiJn8fv/hrvphk+ic3HXXXfVe4yuvvNLgMV544QVMmDABRUVFuPnmmxEMBtui6odV/Hm56aab6p2TAQMGNHiXzZqamnr7jh07ti1fQqtq7LdGZ31vaeycdOb3lcbOS2d+b2novCTlvYURduedd7IzzjiDbdq0iX3yySesqKiI/etf/0p2tVKOruvsd7/7Hfv973/Pfv31V/bdd9+xk08+md17773JrlpKe//991lhYSGbN29esquSsm699VZ2yimnsA0bNrBvvvmGjR07lr3++uvJrlZK+t3vfsf+8pe/sB07drBPP/2UjRgxgn3yySfJrlbKCIVCbPbs2aywsJCtWbOGMcbfO8844wx2/fXXs61bt7KnnnqKjRgxgu3bty/JtW3fEp3L0tJSNnr0aPbAAw+wHTt2sPfff58NGzaMffbZZ8mtbCfVGtf7hg0b2PDhw9k777zDfv75Z3bJJZewq666qi1fRqtrjWv3wIEDrLCwkO3evZuVlpZak67rbfhKWk+ic8IYYzNmzGBPP/10zGsMBAIJj/HRRx+xUaNGsX//+99sw4YN7LTTTmN33HFHW72EwyLReamtrY05Hz/88AMbOnQo+/TTTxMe4/vvv2djxoyJeUx5eXlbvoxW09hvjc763tLYOenM7ytN/S7trO8tjZ2XZLy3dPowyu/3s2HDhsV88C1ZsoRdcsklSaxVatq6dSsrLCxkZWVlVtl7773Hxo8fn8Rapbaqqir2m9/8hp177rkURh2kqqoqNnjwYLZ27Vqr7Omnn2Y33XRTEmuVmqqrq1lhYSH75ZdfrLI5c+ak7AdyW9uyZQs788wz2RlnnBHzw+Kbb75hI0eOZH6/39r38ssvZ48++miyqtruNXQuX3vtNTZlypSYfW+99VZ23XXXJaOanVprXe9//etfYz7/iouL2YABA9ju3bsP7ws4TFrr2v3666/ZuHHjDnt920JD54QxxiZMmMC+/PLLZh1n+vTpMdfRd999x4YPH97gD8z2rrHzYjdz5kx2ww03NHicf/zjH+yCCy44XNVsU4391uis7y2NnZPO/L7S1O/Szvre0pLf623x3tLpu+lt3rwZqqqiqKjIKhs1ahQ2bNgAXdeT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PXvi+eefx4wZM7By5Ur06dMn4WOSdZ2QjoXCKEI6gfT0dIwcOTKm7IQTTsDxxx+Pt99+G/PmzUtKveLr1Nl09tdPCCGkeT777DM88MADuOaaazBnzhyrfMyYMTj77LNx/fXX46abbkJhYWGL/sBEUtPLL78Mj8eDp59+GmlpaQCA4447DpMnT8Yrr7yC2267DXv37sULL7yAW2+91WotdPzxx2P//v346quvGgyj4oMSTdNw1113YeDAgfjb3/4GgF+PmzZtwuLFi3HmmWcC4N8rI5EIFi5ciMmTJ0MUW9YBZ9CgQejVq1dM2eDBg3HyySfjtddew5133tno45988kkMHz4cQ4YMadHztqVE38dby0knnYSHH34Yr7/+Oq644opmP27//v14/fXX8be//c26TsaPH49TTz0VzzzzDO66666Ej0vWdUI6FvrXJ6ST8ng8cLlcEAQhpvzDDz/EtGnTUFRUhHHjxuG2225DTU0NAN6Uev78+QCA3/72tzFd8yKRCO6//36MGzcOI0eOxMyZM7Fr165G62DvpmY2Q169ejVmzpyJESNGYNy4cVi8eDE0TQPAuwPu27cP77zzDgYMGIC9e/cCAIqLi3HddddhzJgxGDFiBC6//HL89NNP1vPs3bsXAwYMwPPPP48pU6ZgxIgRePLJJzFgwAB89tlnMXX6+eefMWDAAHz66acAgHA4jPvvvx8TJ07E0KFDccYZZ+DDDz+MeczkyZPx6KOP4r777sMJJ5yA4cOH48orr8TOnTsB8Kbbjz/+eL3XHN9Nr7S0FPPnz8fEiRMxfPhwnHfeefi///u/eufs1Vdfxd/+9jeMGTMGRUVF+POf/4zy8nJrn927d+OPf/wjxo4dixEjRuCCCy5otdZshBBC2t7jjz+Ofv36Yfbs2fW2ORwO3HnnnZAkyWoVMnPmTEybNq3evrNmzbJ+FALA999/j0suuQQjRozAmDFjMG/ePFRWVlrb3377bQwePBgrVqzAuHHjMGbMGGzdurXZnzOff/45zjzzTKuL2MqVK2O2N+dzLxwOY8mSJZgyZQqGDRuGU045BUuXLoWu6wCAm266Ce+88w727duHAQMG4O233054Dh977DFMmTIFn376KaZOnYphw4bhrLPOwg8//ID169fj/PPPx/DhwzF16lSsXr065rG//vorrr76ahxzzDE45phjMHv2bOzZsydmn82bN2POnDk47rjjMGTIEEyYMAF33XUXQqGQtU9zPsPNbmuNdcvq168fZs6caQVRAJCWloZu3bph9+7dAIBVq1bB5XLhvPPOi3nsww8/3KIhAt544w38+OOPuOOOO+B0OgHAaoU2efLkmH3Hjh2LAwcO4Jdffmn28RvTq1cv5OTkoLi4GEDD12NlZSXefPNNTJ06FQD/3vfb3/4WADB//vyYen799deYPn06Ro0ahbFjx+L666/H/v37Y553586dmDt3rvWd9tJLL212d8HGrvlEXe4+//xzTJs2DcOHD8epp56K999/HyeffHK9f6Pt27fjyiuvtL4f//3vf4eqqjH7nHHGGXj++eehKIp1HpoaEmL16tVQVRUnn3yyVeZ0OnHiiSe26LtjMq8TkroojCKkE2CMQVVVqKqKSCSCsrIyPPDAA1AUBeeee6613xNPPIHrrrsOI0eOxKOPPorZs2fj448/xqWXXopQKIQTTzwRf/rTnwDwL8azZs2yHvvhhx9iy5YtuPfee3H77bdj06ZNuPbaa1tc1xtuuAGjRo3CU089halTp+LZZ5/FihUrrOfMz8/HxIkTsXz5cnTt2hWVlZW48MIL8eOPP+LWW2/FAw88AF3XcfHFF9drsv/YY4/hD3/4A+6//36cc8456N27Nz744IOYfd5//31kZ2dj4sSJYIxh9uzZeOONN3DFFVfgySefRFFREa699tp6X6hfeuklbN++HYsWLcJdd92FTZs2WS3Ozj//fOvL4PLly3H++efXe93l5eU477zz8P333+Paa6/FY489hp49e2L27Nl49913Y/Z96KGHoOs6HnzwQdx444347LPPcM899wDgTduvvvpqBINB3H///XjiiSeQnZ2NP/3pT02Gg4QQQtqfyspKbNq0CZMmTar3ByRTdnY2TjjhBCvIOfPMM/Hjjz/GvO/X1tbiP//5D8466ywAwHfffYcZM2bA7Xbj4Ycfxs0334xvv/0Wl112WUyAomkali1bhrvvvhvz58/HkUce2ezPmdtuuw0zZszAk08+iW7duuGmm27C5s2bATTvc48xhj/+8Y949tlncf755+Opp57ClClT8PDDD1vDD8yaNQsTJ05Efn4+li9fjhNPPLHBc3ngwAHce++9+OMf/4hHHnkEtbW1mDt3Lq677jqcf/75WLJkCRhjuPbaa61zsGPHDlx44YWoqKjAfffdh7vvvht79uzBRRddhIqKCgA8VLv44osRDAZx77334plnnsHpp5+Ol19+GS+99FJMHRr7DAeAE088EcuXL2+0hc/06dPx+9//PqZs165d2LJli9Uy7ueff0afPn3w3Xff4ZxzzsGQIUMwefJkLF++vMHjxvP7/Xj00Udx1llnYfjw4VZ5Tk4OAMSMHwrACsLig7qDVVVVhaqqKvTu3dsqi78ejzrqKHzyySdQVRWTJk0CAHTt2tX6I+Cf/vQna3nlypWYOXMmunfvjgcffBDz58/HDz/8gAsuuMD6t9y6dSumTZuGvXv34pZbbsHf//53CIKAyy+/vFljrTZ2zcdbs2YNZs2ahe7du+Oxxx7DxRdfjNtvv71eOAYAixYtsr4f/7//9//wzDPP4I033ojZZ8qUKSgpKbHq2bVr1wa/d5q2bdsGr9drdZE09enTB6WlpfD7/U2+5mRfJySFMUJIh3bJJZewwsLChNNTTz1l7VddXc2GDh3Kbr311pjHf/fdd6ywsJC98sorjDHG3nrrLVZYWMj27Nlj7TNp0iQ2ceJEpiiKVfbQQw+xwsJCVldX12DdCgsL2aOPPsoYY2zNmjWssLCQPfTQQzH7TJ48mV199dUxzzVv3jxr/cEHH2TDhg1je/futcrC4TD77W9/y6655hrGGGN79uxhhYWF7Oabb4459qOPPspGjhzJgsEgY4wxXdfZiSeeyG677TbGGGNfffUVKywsZB988EHM42644QY2btw4FolErDpNmjSJqapq7fPYY4+xwsJCVllZaT1XYWFhg6///vvvZ0OGDIl5HYwxdvnll7Nx48YxTdOsx1x00UUx+9x0001s5MiRjDHGSktLWWFhIXv33Xet7bW1teyee+5hv/76KyOEEJJaNm7cGPM53JB7772XFRYWsurqaub3+9nIkSPZ448/bm1fsWIFGzhwIDtw4ABjjLELLriATZ06Neaza/v27WzQoEH1PvNXrlxp7dOczxnzM++LL76w9tm1axcrLCxkL774ImOseZ97n3/+OSssLGTvv/9+zD5LlixhhYWF1vPNmzePTZo0qdHzk6hOTz/9NCssLGQrVqywyj766CNWWFjIfvrpJ8YYY9dddx074YQTYr7PVFVVsVGjRrF7772XMcbYl19+yS6++OJ633mmTp3KZs6caa039Rl+sILBILvgggvYyJEjrfP5+9//no0dO5Ydd9xx7JVXXmHffPMNu+WWW1hhYSF74403mnXcF198kQ0cOJBt3749pryiooKNHj2anXXWWWzDhg2srq6OffbZZ+w3v/kNKywsZO+8806z625eY7t27WKRSIRFIhHm8/nYpk2b2IwZM9jgwYPZ5s2bY/a1X4+MMfbnP/+ZnXnmmTFl5ne/t956izHGmKZpbNy4cTH/Hozx63LIkCHsvvvus441duzYmH/LSCTCTj31VHbuuec2+Dqac82b33XXrFnDGGNs+vTp7Mwzz2S6rluPef/99xN+P168eLG1j67rbOLEiWz27Nn16nHsscey+++/v8F6xrv11lvZhAkT6pX/4x//YIWFhdb7RWPa4johHRO1jCKkExgyZAjefPNNvPnmm1ixYgWee+45XH755XjooYfw0EMPAQDWr18PRVGsJs6m0aNHo2fPnk3+NWj48OFwOBzWutnvv7a2tkV1LSoqilnv1q0bAoFAg/uvXr0agwYNQkFBgdX6SxRF/OY3v8E333wTs++gQYNi1s8880wEAgGrq95///tfFBcXW381Xr16NQRBwMSJE61jq6qKyZMno6ysDFu2bLGONWzYMEiSFFNvAAgGg8163d9++y2KiorQs2fPenUsKyvD9u3brbL48Qa6detmPU9eXh769++PW2+9FfPmzcN7770HXdcxf/58GkeEEEJSEDNuTW//jE3E/AxijCEtLQ0nnXRSTLfyDz74AMcffzwKCgoQDAaxYcMGqxWw+fl2xBFH4Kijjqp3tyv752dLPmdGjx5tLcd/L2jO5963334LWZYxZcqUevuYx2ipY445Jua1AMCIESOssuzs7Jh6rlmzBmPGjIHb7bbOU3p6OkaPHm19zxg/fjxeeeUVuFwubN26Ff/3f/+HJ598EpWVlVaXKVNjn+EHw+fz4eqrr8b//vc/LF682DqfkUgEVVVVuOOOO3DxxRfj+OOPx8KFCzF+/HirpVBTXn31VUyePBlHHnlkTHmXLl2wbNkyaJqG888/H6NGjcI999xjtYj3eDwtfh0nn3wyhgwZgiFDhuCYY47BtGnTsGvXLixevLjeXeriv8/t2bOn3nhT8Xbs2IGysrJ633N79+6NoqIi61r69ttvMWnSJKSnp1v7yLKM008/HZs2bWqypVBj17ydoij44YcfcMopp8S0eJwyZQpkuf6wzvbjCoKAnj17Jjxujx49rGEsmsN8f2lIc8Z0asvrhHQsNIA5IZ2A1+vFsGHDYsrGjx+PQCCAZ599Fpdddpk1LpT5xcwuLy8PdXV1jT6HfdwCIPrhZY7p0FzxdwARRbHRD8rq6mrs2rWrwebs9i948XXs06cPioqK8MEHH+D//b//hw8++AC9e/e2vqhWV1eDMRbzxdWutLTU+kIU/4Ha0tdfU1ODI444ol65+e9h/8KR6LnMc2TeUefJJ5/Ep59+ipUrV8LhcOCkk07CHXfcgaysrGbVhxBCSPtghgvxXV3i7dmzB16v1wpTzjrrLLz77rvYvHkz8vLysHbtWqs7WG1tLXRdxzPPPGONM2Xncrli1u2fny35nLE/zvxcND+vmvO5V1NTg5ycnJg/9gCwuhQ19d0kEXvIYGrsR3F1dTU+/PDDeuNFAvzHNgCr292rr76KQCCA7t27Y/jw4fXOY6Lnaup7TmP279+Pq6++Gjt27MBDDz0Uc3cyr9dr/UHNbsKECfjqq69QXl6e8DufafPmzdi5c2eDQy4MGzYM7733HkpKShAMBtGnTx+sWbMGAA7qu8aTTz5p/bs6HA7k5OSgoKAg4b7x3+d8Pl+TwUZ1dTWAhr/nmmON1tTUNLgPYww+nw9er7fB52nsmo+vj6ZpyM3NjSmXJMn6b9iuudeNx+Opd5e7xqSnpycM2MxjZGRkNPr4tr5OSMdCYRQhndjQoUOxYsUK7N271/pAKC8vt24JbCorK0v4hbE9yMjIwJgxY3DjjTcm3G4OotiQM888E4sWLUJdXR0++ugjXHTRRTHHTktLqzfeg6mh290ejKysLJSVldUrN8vMfvfNUVBQgAULFuD222/H5s2b8dFHH+GZZ55BTk6ONcYGIYSQ1JCbm4uRI0fi448/xp///OeELRV8Ph++/vrrmIGCjz/+eOTn5+Nf//oX8vPz4XK5cMoppwCIBhUzZszA6aefXu94Tf2wb43PmeZ87mVlZaGqqgqapsUEUqWlpdY+h1tGRgZOOOGEhHcoM1uwLF26FC+88ALuuOMOnHLKKdYP+PjBw1vTL7/8giuvvBLhcBjLli3DscceG7O9T58+YIwhEonEhGLmoNfxf/yL9/nnn8Pj8SQcg6uqqgqff/45Jk6cGBMY/fTTTxAEoV7LpeYoLCxssnVTQ3JycpoMJs2Axz5YvKmsrMy6lrKyshrcx3yu1pCbmwuHw1HvuXRdt4Kzg1FbW4sePXo0e/9+/frB5/OhsrLSClcBPgZZz5492911QjoW6qZHSCe2ceNGSJKEI444AiNGjIDT6cT7778fs8/333+P4uJiq3VQsm/BGv/8Y8aMwY4dO3DkkUdi2LBh1vTPf/4Tb775Zr2/psY77bTTwBjDI488goqKipi7DI0ZMwaBQACMsZhj//rrr1iyZEm9u5i0pN7xjj32WPzwww/1/vL97rvvIj8/v9nB1w8//IATTjgBGzdutD7or732WhQWFlp3oyGEEJJa5syZgx07duDBBx+st03TNNx+++0IhUIxg1pLkoQzzjgDn332GT766COcdNJJVquN9PR0DB48GNu3b4/5fDv66KPx2GOPNXont9b6nGnO596YMWOgqio++uijevsAwKhRowAc3u8m5h3bBg0aZJ2noUOH4oUXXrDuvLtu3Tr0798f5557rhVElZSU4Ndff21xC/Hm2L9/P6644goIgoDXX3+9XhAFwGoRFX+jln//+98YMGBAwhZiduvXr8fgwYMThhGMMcyfPx+ffPKJVeb3+/GPf/wDxx57bJu3eOnRo0e9Qb/jv/8deeSRyM/Pr/c9d8+ePVi/fr31PffYY4/FZ599FtO6SNM0fPDBBxg2bFiTf+RsLkmScMwxx9S7e+S///3vFn2/tGOMoaSkpF7X18accMIJABDz35iiKPj8888xbty4Jh+fStcJaX+oZRQhnYDP58P69eutdUVR8O9//xtvvfUWLrjgAusvIVdddRWWLFkCh8OBSZMmYe/evXjkkUfQv39/nHPOOQCAzMxMAMCnn36K3/zmNzjqqKPa9LVkZmbip59+wrfffovhw4djxowZ+Oc//4kZM2Zg5syZyMnJwYcffoh//OMfmD9/fpPHM++c99prr6GoqCgm9Jk4cSKOPfZYzJo1C7NmzcJRRx2FjRs34tFHH8WECRNi/oLUnHoD/G59I0aMqNfS7IorrsC7776LGTNmYM6cOcjOzsbKlSuxZs0a3HPPPc3+om1+IbjxxhtxzTXXIC8vD9988w1+/vlnXHbZZc2uLyGEkPZjwoQJuOmmm3D//ffj559/xrnnnouuXbti7969eP311/Hzzz/j7rvvxsCBA2Med9ZZZ2HZsmUQRbFed7zrrrsOV111Fa6//nqceeaZ1l3KNmzYEHO33Hit9TnTnM+93/zmNxg7dixuueUWlJSUYODAgfj222/xzDPP4JxzzkH//v0B8M/Y8vJyfPHFFxg0aBC6du3agrPbuFmzZuHCCy/E1VdfjYsuuggulwvLly/HqlWr8OijjwLg42Y+8cQTWLp0KUaOHIldu3bh6aefhqIoLR4PqrKyErt370b//v0bDIzuuusuVFRU4I477qj3HS89PR39+/fH2LFjMWnSJCxatAjBYBBHH300Vq5cif/+97944oknrP13796NysrKemNZ/frrrxg/fnzC5+/SpQtOP/10PPzww3C73ejSpQuefvpplJaW4oEHHmjRa2kN48aNw7/+9S/U1dVZYaA5X716NY466iiMGDEC1113HebPn29d81VVVXj88ceRlZVltXybM2cO/vOf/+Cyyy7DVVddBYfDgVdeeQV79uzBs88+26r1njt3Li699FLMnTsX5513HoqLi/HII48AQIN3zmzMr7/+irq6OkyYMAEA/77/008/oVu3btZYpvF69uyJc845B4sWLUI4HEbfvn3x/PPPo7a2NibcPpzXCem8KIwipBP46aefcMEFF1jrLpcLvXv3xrXXXosrr7zSKje/VL7yyitYvnw5srOzMWXKFPzlL3+x/po6duxYnHDCCXjggQewevVqLF26tE1fy8yZM3HPPffgyiuvxPPPP4/Ro0fjjTfewAMPPIAFCxZYH6R33313s5vHn3XWWVi1ahXOOOOMmHJRFLF06VI88sgjePrpp1FRUYGCggJcccUVmD17dovqfcopp+Cf//wnbrrpJpx33nlYsGBBzPb8/Hy8/vrreOCBB3DXXXchEolg4MCBeOKJJ/Db3/622c/jcrmwbNkyPPDAA7j77rtRW1uLvn374s4778S0adNaVGdCCCHtxxVXXIGioiK8+OKLuO+++1BZWYn8/HyMGzcOd999txXM2A0cOBCFhYWoqqrC8ccfH7Nt/PjxeO655/D4449j7ty5cDgcGDJkCJ5//vl6PzjtWutzpjmfe4Ig4Omnn8ajjz6KF154AZWVlejVqxeuu+66mG5z06ZNwxdffIHZs2dj7ty5uOqqq5pdj6YMHDgQr776Kh566CHceOONYIyhsLAQS5Yssep59dVXo6qqCi+99BKWLFmC7t27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oEMTCoVwzTXXIC8vDxdccEGyq9PhFRcXW9fyww8/jL179+Kuu+5CKBTCLbfckuzqpTR6j2hd27dvhyAI6NevHy655BJ89913uPXWW5Genk5dzpvJ/h3/hRdeoOvzENnP548//kjX5yF49NFHUV5ejgULFmDRokX0/nmI4s/nkCFDWvX67PRhlMvlqncxmusUAhy8xYsX48UXX8RDDz2EwsLCZFcn5Tz++OMYOnRozF9NyMGRZRk+nw8PPPAAevbsCYD/aHr99dcpjGqh1atX480338QXX3wBt9uNYcOGoaSkBE8++SSFUYfA5XKhuro6pkxRFPoMOgR+vx+zZs3Czp078dprr8Hj8SS7Sh1ez549sXbtWmRlZUEQBAwaNAi6ruOvf/0r5s+fD0mSkl3FlEXvEa3r7LPPxqRJk5CdnQ0AGDhwIHbu3InXX3+dfuw3Q/x3fLo+D038+Tz66KPp+jwE5ji74XAYN9xwA84991wEg8GYfej6bL748/nf//63Va/PTt9HpaCgAFVVVVBV1SorKyuD2+1GZmZmEmuWuhYuXIjnn38eixcvxqmnnprs6qSkDz74AKtWrUJRURGKiorw3nvv4b333osZ24w0T35+PlwulxVEAcCRRx6J/fv3J7FWqWnTpk3o06dPzAf44MGDUVxcnMRapb6CggKUl5fHlJWXl9drVk6ax+fz4corr8SWLVvw4osv0rgbbSg7OxuCIFjrRx11FMLhMGpqapJYq9RH7xGtSxAE64eUqV+/figpKUlOhVJIou/4dH0evETnk67PlisvL8eqVatiyvr3749IJIL8/Hy6PluosfPp8/la9frs9GHUoEGDIMtyzCBm69atw7Bhw2g8mYPw+OOP44033sCDDz6I008/PdnVSVkvv/wy3nvvPaxcuRIrV67E5MmTMXnyZKxcuTLZVUs5I0aMQDgcxo4dO6yy7du3x4RTpHm6du2KXbt2xbQm3b59e8wYPaTlRowYgR9//BGhUMgqW7duHUaMGJHEWqUmXdcxZ84c7N27Fy+//DKOPvroZFep0/jyyy8xduzYmL9A//zzz8jOzqbxNw8RvUe0rkceeQQzZsyIKdu8eTP69euXnAqliIa+49P1eXAaOp90fbbc3r17MWfOnJhAZNOmTejSpQtGjRpF12cLNXY+X3755Va9Pjt92uLxeHD22WdjwYIF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5bnnnsPn8wFw0kknMWLECF577TXuuusutm3bxksvvcSdd97J6NGjARgyZAg7d+7kq6++4pJLLqn18bdu3crDDz/Mf/7zH1JTU6vtr6ioYO7cuVx11VVMnDgRgNNOO41LL72UOXPm1Bpg7U3//v2Tbg8aNIg2bdpw+eWX89577+1z5NusWbMYOXIkrVq12u/nbijNmjWjWbNm9fLYo0eP5plnnuHTTz/lrLPOqvP9VqxYwWeffca8efMYNmwYACeccAK/+c1v+Nvf/saf//znGu/3zDPPkJqayiuvvEJ6ejpg/Qz+9re/5YUXXuDmm28mEAjw6KOPMn78eDskHDJkCCUlJXzzzTdMmTLlIF+1aOpkZJQQol74fD6GDRvGJ598Um3fRx99xNlnn43DkZyHFxQUcO+99zJ8+HCOP/54srOzmThxYtLQ5C1btnDdddcxePBg+vXrxyWXXLLXYeE7duzg9NNPZ9SoUZSUlNR63I8//sj48eMZPHgwAwcO5LrrrksaGr506VJ69OjBkiVLGDduHP369WPo0KHMmjWrxqHGRUVF9OnTh8ceeyypPRgMMmjQIJ555pla+yKEEEIkmj17Nl27drVP/BM5nU7uu+8+NE3j+eefB2DcuHGMGjWq2rHXX3895513nn37+++/54orrqBfv35kZ2dz2223UVBQYO9/99136dWrF2+99RZDhw4lOzub9evX1/l38eeff855551nTxFbtGhR0v49e/Ywbdo0hg0bRt++fbnooov497//nXRMKBRizpw5nHPOOfTp04ezzjqLefPm2SNebr/9dt577z22b9++16nyTz/9NOeccw6ffvopI0eOpE+fPpx//vmsWLGClStXcvHFF9O3b19GjhzJkiVLku7766+/MmHCBAYOHMjAgQOZOHFitSlRa9euZdKkSZx00kn07t2bU089lQceeICKigr7mB49evD666/z17/+lezsbAYMGMCNN96YNLUpPi1r6dKlNb4OgK5duzJu3Dg7iALrc1fr1q3ZsmULAIsXL8btdnPRRRcl3feJJ57g6aefrvWxAWbOnElOTg4vv/wyPXv2rLZ/1apVlJSUcOaZZ9ptiqJw5plnsnTp0qTXfDCOP/54ALZv3w5Y38MzzzyT2bNnk52dzSmnnEJxcTG//vorn3/+OSNHjgSsz2xXXnklAFdeeWXSNMOPPvqIUaNGMWDAAIYOHcpdd91VbQTQvj4T7s27777L2WefTZ8+fTjvvPOS3hc1Tbl77733OPfcc+3jlyxZQq9evar9HK9atYpLL72UPn36cPrpp/PCCy8k7Xe5XJx99tk899xzdlv8s+veykd89dVX+Hw+TjnlFLutWbNmnHjiiXv9fL1x40YGDRpkB1EAXq+Xvn378vnnnwPw9ddfU15eXm2a52233cbbb79d62OLo4eEUUKIenPuuedWm6pXVlbGf//7X/sDQ5xpmkyYMIGvv/6aW265hfnz5zNp0iSWLFnC3XffDYBhGEyYMIFgMMgjjzzC3LlzycjI4M9//jM5OTnVnj83N5exY8eSkZHBiy++WOtIrG+//ZbLLrsMgAcffJAHHniAnTt3cumll1Yb9n/LLbcwaNAgnn32WUaOHMkLL7zAW2+9Ve0xMzIyOOOMM/jggw+Shkx/+umnBAIBLrjggrp9EYUQQhzVCgoK+Omnnxg+fDiKotR4TEZGBieffLId5Jx33nmsXr066XdjSUkJ//3vfzn//PMB+O677xg7diwej4cnnniC6dOns2zZMq688sqkMEHXdRYsWMCMGTOYNm0aXbp0qfPv4rvuuouxY8fyzDPP0Lp1a26//XbWrl0LQF5eHhdddBHff/89N998M08//TTt2rVj4sSJvP/++4D12eC6667jhRdesKf3nHPOOTzxxBP2Z4Prr7+eYcOGkZWVxcKFCzn99NNr/Vru2rWLhx56iOuuu44nn3ySkpISJk+ezJQpU7j44ouZM2cOpmly880321+DTZs2cemll5Kfn8/DDz/MjBkz2Lp1K5dddhn5+fmAFarFp1A+9NBDPP/88/zud7/j1Vdf5ZVXXknqw+OPP45hGDz22GPceuutfPbZZzz44IP2/vhUrt69e9f6OkaPHs3VV1+d1JaTk8O6devskXFr1qyhU6dOfPfdd/zhD3+gd+/ejBgxok5T9G666Sbef/99TjzxxBr3xz8bde7cOam9U6dO6LpuB2IHa9OmTQB07NjRbtuxYwdffPEFjz/+ONOmTSM9PZ0PPviArKwse3RV7969ueuuuwDrZzD+szJ37lymTJlC//79eeqpp5g4cSL//Oc/GTNmjP393p/PhFXt3LmTefPmceONN/L000+jKAqTJ0+2f06qWrRoEbfffjsDBw5k7ty5nH322Vx//fU1/pHznnvu4Xe/+x3z5s1jwIABzJo1q1rJi3POOYeffvrJ/rr17t17n++JDRs20L59ezRNS2rv2LGj/Tg1yczMZMeOHdXat27dage1a9asITU1lby8PC6//HKOP/54hg4dyty5c6WwvABkmp4Qoh6dfvrpeL3epKl6n376Kc2bN2fQoEFJx+7Zswev18ttt93GCSecAMDgwYPZsmWL/cEpPz+fjRs32h88Afr27cvs2bMJh8NJj1dYWMhVV12Fx+PhxRdfTPrLTVWPPvoonTp1Yt68efYv41NOOYUzzzyTp556Kmle+8UXX2z/ZXrIkCEsXryYzz//vMZi7RdeeCEfffQRS5cu5aSTTgKsDx4nn3wybdq0qfPXUQghxNErPiqkXbt2ez2uU6dO/Pvf/6a4uJizzjqLe++9l3/84x/276x//etf6Lpu/zHo0UcfpUuXLjz33HP2775+/frxu9/9jnfeeYfLL7/cfuzrrrvOPqHNzc2t8+/iBx54gNNOOw2wTm7PPPNMli1bxnHHHceLL75IQUEB//znP+3XNmzYMMaOHcsjjzzCyJEj+fLLL/nmm2947LHH+N3vfgfA0KFD8Xg8PPnkk1x55ZUcc8wxNGvWDJfLVW2qV1XBYJC7777b7tP69et59NFHmTFjhj2CKBAIMHnyZDZt2kTPnj2ZPXs2Xq+Xl156iZSUFMD6/X/GGWfwwgsvcNttt/Hrr7/Ss2dPnnzySfuYk08+ma+//pqlS5cmTTE79thjmTlzpn37hx9+SBpFfiBTuSoqKrjttttwuVxcccUVgBVi7t69m1tuuYVJkybRtWtXPvroIzuk2ds0vWOPPXavz1dWVgZgv9Y4v9+ftH9/RKPRpNezdu1aHnzwQVJTU5NG80Wj0aTPimAFSH369LHD2pSUFLp37w5A9+7d6d69O8XFxTzzzDP88Y9/tL8G8dd6+eWX2z/z+/OZsCrDMJgzZw7dunUDwO12M3bsWFauXMlvfvObasc/+eSTDB8+nAceeACAU089FafTyaOPPlrt2ClTptghWf/+/fn000/59ttvGT58uH1Mnz59AFiyZAldunQhJSVln++J0tLSat9HsL6X5eXltd7vwgsv5I477mDGjBlcffXVqKrKSy+9xPr16+3vZUFBAbquc+211/KnP/2JG264ga+//pqnn36aiooKmaYnZGSUEKL+eDweRowYkfQh68MPP+S3v/1ttb/utmrVildeeYVBgwaxbds2vv76a1599VX+97//2R9uW7RoQffu3bnzzju57bbb+OCDDzAMg2nTplWrkXH11Vezbt06pk+fTmZmZq19DAQC/Pjjj/z2t79N+qtQWloaw4cPZ9myZUnHDxgwIOl269atCQQCNT72ySefTNu2bfn73/8OWH+RXbJkCX/4wx9q7Y8QQgiRKD6CwOl07vW4+O8w0zTx+XycccYZfPTRR/b+Dz/8kCFDhtCqVSuCwSCrVq1i2LBhmKZJNBolGo3SoUMHunXrxtdff5302IlTtfbnd3FiYNC+fXsAe8r8smXLGDBgQLWQ7bzzzrMDr2XLluFwODjnnHOqHRN/jP01cODApNcCVggXl5GRkdTPb7/9luzsbDwej/11SklJ4YQTTuCbb74BrLDitddew+12s379ev7973/zzDPPUFBQUC2gqxoOtG7dmmAwuN+vI66srIwJEybw448/MmvWLPvrGYlEKCws5N577+Xyyy9nyJAh3H///ZxyyinMnj37gJ8P2GdRcFXd/1PM3r1728ugQYO4/PLLCYfDzJ49m6ysrKRjq04d3Lp1q/3zVZuVK1cSDoerjcw/4YQTaNeuHcuWLdvvz4RVZWZm2kEUVP7MJxb0jsvJyWHHjh3VfrbjoWtVie8lr9dLixYtqpWfSE1NJS0tbb+u1re3EUq1jcQE64+zt99+O2+//TannXYap556ql3A3OPxANbPYCAQ4JprrmHChAmcdNJJTJ06lYsvvpgXX3zxgEJLcWSRkVFCiHr129/+lkmTJrFr1y7cbjdLlizhpptuqvHY999/n8cee4ydO3eSkZFBz5497V9oYP1SXLBggV2gcdGiRTidTs444wzuvffepNFPwWCQ9u3b8+ijj7Jw4cJaPxiVlpZimqb9gTRRixYtqn2ASOwPWB+4avtFrqoqo0aN4sUXX+Tuu+/m73//OykpKUk1FoQQQoi9iYcL8RFStdm6dSt+v98OU84//3zef/991q5dS4sWLVi6dKk9HaykpATDMHj++eftOlOJ3G530u3E2kT787s48X7x38Px35nFxcV06NCh2nPHfx+XlJRQXFxMZmZmtSlE8XCippP8falpFIjX6631+KKiIj766KOkYC8uPoIpPu3u9ddfJxAI0KZNG/r27Vvt61jTc+3tc8S+7Ny5kwkTJrBp0yYef/xxzjjjDHuf3+9HURR79FrcqaeeyldffUVeXl6Nn33qIl7UvLy8POn7HQ8Xaip6vi+JNYScTidZWVk0b968xmPjI7ASn3dv30PArgu1t897+/uZsKrEn3eoDHNqCu/itdmqvsbavid1/bnxer37FfKkpKQk1SyLKy8v3+f38aqrruKKK65gy5YtZGZm0qxZM2699Vb7/6D496nqNMHTTjuNhQsXsmHDhqQgWBx9JIwSQtSr0047Db/fzyeffILP56N9+/Z2QcpE33//Pbfddhtjxoxh/Pjx9tVQHnnkEZYvX24f16pVK+655x7uvvtu1q5dyyeffMLzzz9PZmamXRMA4OWXX2bNmjVcc801vPLKK9Wu6BeXmpqKoig1/iLOzc21f6EeqFGjRjFnzhz++9//8vHHH3PuuefW+OFUCCGEqEnz5s3p378///znP7nxxhtr/ONKWVkZX3/9NSNGjLDbhgwZQlZWFh9//DFZWVm43W77KlvxoGLs2LE1jsTY14l9XX8X7016ejq5ubnV2uNtmZmZpKenU1hYiK7rSYHUnj177GPqW2pqKieffDJXXXVVtX3xC7HMmzePl156iXvvvZezzjrLPomvWjz8UPrll18YP348oVCIBQsWVKvv1KlTJ0zTJBKJJH3uiE+hqvrHtf3RpUsXwBrd07dvX7s9JycHp9NZY8i4L/EpZgciIyNjn0FRPDTLy8uja9euSftyc3Pp0KFDvX8mTNS6dWuAavWkaqsvVVclJSX79b7o0qULX331FYZhJP3fkpOTkzTKq6off/yRnTt3ctZZZyUd9/PPP9OrVy/A+hkEqo0OjEQiQPXQWxx9ZJqeEKJeuVwuzjjjDP75z3/y8ccf1zr8eMWKFRiGwQ033GAHUbqu20PgDcNgxYoVnHzyyfzwww8oikLPnj25+eabOfbYY6sVUczKyuK0007jt7/9LU8++WStQ5Z9Ph/HH388H3/8cVLByNLSUj7//PNqta32V7t27RgyZAivvPIKa9asqfHqRkIIIcTeTJo0iU2bNlW7QitYvyvvvvtuKioqkopaa5rG73//ez777DM++eQTzjjjDHvkRkpKCr169WLjxo306dPHXo455hiefvrpvV7JbX9+F+/NiSeeyIoVK6qN+Hr//ffJysqiU6dOZGdnE41Gq12ZN17gPP47+kCmhdVV/AqCPXv2tL9Oxx9/PC+99BKffvopAMuXL6d79+5ceOGFdhC1e/dufv31131OaTsQO3fu5KqrrkJRFN54440aC43HR0R9+OGHSe3/+c9/6NGjR40jxOpqwIAB+Hw+/vnPf9ptpmny6aefkp2djcvlOuDHPhDt2rVj586dSW1VR9P169cPl8vFP/7xj6T277//nh07djBw4MB6/0yYqHXr1nTs2NH+GYr717/+dcCPWVxcTDAYpG3btnW+zymnnEJ5eTlffvml3VZQUMD333/P0KFDa73fsmXLuOWWW5KmCn799desW7fOHqF32mmnoShKjT+DGRkZew27xNFBRkYJIerdueeey4QJE1BVlTvuuKPGY+J/Wbvvvvu48MILKS4u5vXXX7evuhMIBOjVqxcej4dbb72VG264gRYtWvDNN9+wZs0a+xK+VU2fPp0vv/ySu+++m/nz59d4zNSpUxk/fjzXXnsto0ePJhKJMG/ePMLhcI2X0d5fF110EVOmTKFbt24yHFkIIcR+O/XUU7n99tt55JFHWLNmDRdeeCEtW7Zk27ZtvPHGG6xZs4YZM2Zw3HHHJd3v/PPPZ8GCBaiqWm063pQpU7j22muZOnUq5513nn3VvFWrVnH99dfX2pcD+V1ck6uuuor333+fsWPHMmnSJDIyMli0aBHffvstDz74IKqqctpppzF48GDuuOMOdu/ezXHHHceyZct4/vnn+cMf/mAXqU5LSyMvL48vvviCnj170rJly/346u7d9ddfz6WXXsqECRO47LLLcLvdLFy4kMWLF/PUU08B1meYuXPnMm/ePPr3709OTg7PPfcc4XB4v+tBFRQUsGXLFrp3715rYPTAAw+Qn5/PvffeS1lZGStXrrT3xYt3Dx48mOHDhzNz5kyCwSDHHHMMixYt4n//+x9z5861j9+yZQsFBQX7LHSdyOv1Mm7cOObMmYPT6WTAgAG88847rF69Ounqgbt27WLXrl306tWrXgOqoUOH8re//Q3TNO2pcfFQ8PPPPyc9PZ3jjjuOa6+91u7z8OHD2bZtG08++STdu3e363nW92fCuPiV9m655RbuvvtuzjzzTNauXcucOXOAAwtY4zMJTjnlFMAaMbl+/Xo6duxYa1H8E088kezsbP7yl7/wl7/8hYyMDJ5++mlSU1PtgulgFfsPh8P2qKfzzjuPefPmcdNNNzF+/Hh27NjBQw89xMCBA+2abh06dOCKK67ghRdewOFwcOKJJ/LZZ5/x/vvvc+edd+6zDp448kkYJYSodyeffDJpaWm0adOm1r+CDB48mLvuuosXX3yRTz75hBYtWjB48GBmz57NxIkTWb58OcOGDWPBggX2lW9KSkro3Lkz9913X60jjlq2bMmUKVO47777WLRoERdccEG1Y4YMGcKLL77IU089xZQpU3C5XJxwwgk8/PDD1YqxHohhw4ahKIqMihJCCHHArrrqKgYMGMDLL7/Mww8/TEFBAVlZWQwdOpQZM2bYwUyi4447jmOPPZbCwkKGDBmStO+UU05h/vz5zJ49m8mTJ+N0OunduzcvvvjiXoMJt9u937+La5KVlcUbb7zBo48+ygMPPEAkEuG4445j7ty59pXHFEXhueee46mnnuKll16ioKCA9u3bM2XKlKRpc6NGjeKLL75g4sSJTJ48OenqdQfruOOO4/XXX+fxxx/n1ltvxTRNjj32WObMmWP3c8KECRQWFvLKK68wZ84c2rRpw/nnn2/3v6SkhLS0tDo93+eff860adN45ZVXGDx4cLX94XCYzz//HKDGKZHZ2dm8+uqrgHW1ttmzZ9tXLuzevTuzZ89Oms45d+5c3nvvPX755Zf9+rpMnDgRTdP4v//7PxYsWED37t2ZO3du0uiht956i9mzZ/Pvf/97nwXGD8ZZZ53FnDlz+OGHH+w/+h1zzDGMHDmS119/nS+//JJ//OMfdnj62muvsXDhQjIyMjjnnHO46aab7FGD9f2ZMNHvf/97AoEA8+fP55133uGYY47hr3/9K3/961+r1Z+qi//+97/07dvXrjO3evVqrrzySmbOnLnX9+bs2bN56KGHeOSRRzAMg4EDB/LEE08k1QO799572b59O//5z38A6/07f/58HnroISZNmkRaWhqjRo3ixhtvTBqVNn36dFq3bs3ChQuZN28eHTp04IEHHuDiiy/e79cnjjyKeaAV84QQQtTJRx99xK233soXX3xRazFOIYQQQogjzeWXX84TTzxR7Yp4h9p1111HZmYmM2fOrNfnOZT+8Y9/0KtXr6QaVp9//jkTJkzg73//e7WRjnsTCAQ49dRTefjhh5MK2QtxOJORUUIIUU8WL17Mjz/+yJtvvsmoUaMkiBJCCCHE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Jjs7m1NPPZWZM2cSCoUau1tN3rXXXsvtt9/e2N1ossLhMPfeey8nnngiJ598Mo899hhSLu/A7Ny5kwkTJjBw4EBGjBjBSy+91NhdanLC4TAjR45k6dKldtvWrVsZO3Ys/fv359xzz+Wrr75qxB42HTV9LVeuXMmll17KgAEDOPvss3nrrbcasYdHt08//ZQePXokLZMnT27sbh0V5P+ZxlfT9+CBBx6o9p547bXXGrGXR6a9nY/I+6Bh7O17IO+DhpGTk8P48eMZMGAAp59+Oi+88IK973B5Hzga5VkPM4888gg//fQTL7/8Mjt27OC2226jbdu2nHPOOY3dtSbFNE0mT55MWloar7/+OsXFxUyfPh1VVbntttsau3tN1ocffsgXX3zBH/7wh8buSpP1wAMPsHTpUubPn095eTk333wzbdu25dJLL23srjU5N910E23btuXdd99l/fr13HLLLbRr144zzzyzsbvWJIRCIaZOncq6devsNtM0mThxIsceeyzvvPMOixcvZtKkSXz00Ue0bdu2EXt7eKvpa5mbm8s111zDZZddxkMPPcTq1auZNm0aWVlZnH766Y3X2aPU+vXrGT58OPfff7/d5na7G7FHRwf5f6bx1fQ9ANiwYQNTp05N+kyXkpLS0N07ou3tfOTWW2+V90ED2Nc5obwP6p9hGFx77bX06dOH9957j5ycHKZMmUKrVq0YOXLkYfM+OOrDqEAgwFtvvcXzzz9P79696d27N+vWreP111+XMGo/bdy4kZUrV/L111/TokULACZPnszDDz8sYdQBKioq4pFHHqFPnz6N3ZUmq6ioiHfeeYcXX3yRvn37AjBu3DhWrVolYdR+Ki4uZuXKldx///107tyZzp07c+qpp7JkyRIJo+pg/fr1TJ06tdqovG+//ZatW7fy5ptv4vP56NatG0uWLOGdd97hhhtuaKTeHt5q+1ouXryYFi1aMGXKFAA6d+7M0qVL+eCDDySMagQbNmzg2GOPJSsrq7G7ctSQ/2caX23fA7DeE+PHj5f3RD3a2/nIaaedJu+DBrCvc0J5H9S/vLw8evbsyT333ENKSgqdO3dmyJAhLF++nBYtWhw274Ojfpre2rVriUajDBgwwG4bNGgQq1atwjCMRuxZ05OVlcULL7xg/6cTV1ZW1kg9avoefvhhzj//fLp3797YXWmyli9fTkpKCtnZ2Xbbtddey8yZMxuxV02Tx+PB6/Xy7rvvEolE2LhxI//73//o2bNnY3etSVi2bBmDBw9m4cKFSe2rVq2iV69e+Hw+u23QoEGsXLmygXvYdNT2tYxPBahKfg81jg0bNtC5c+fG7sZRRf6faXy1fQ/KysrYvXu3vCfq2d7OR+R90DD29j2Q90HDaNmyJU888QQpKSmYpsny5cv57rvvyM7OPqzeB0f9yKjc3FwyMzNxuVx2W4sWLQiFQhQVFdGsWbNG7F3TkpaWxqmnnmrfNgyD1157jZNOOqkRe9V0LVmyhO+//54PPviAe+65p7G702Rt3bqVdu3asWjRIp599lkikQijRo3iz3/+M6p61Ofx+8XtdnPXXXdx//3388orr6DrOqNGjeLiiy9u7K41CaNHj66xPTc3l5YtWya1NW/enF27djVEt5qk2r6W7du3p3379vbt/Px8PvzwQ/mLdyMwTZNNmzbx1Vdf8dxzz6HrOueccw6TJ09O+swlDi35f6bx1fY92LBhA4qi8Oyzz/Lf//6XjIwMrrrqKinDcIjt7XxE3gcNY2/fA3kfNLwRI0awY8cOhg8fztlnn82DDz542LwPjvowKhgMVvtQFL8dDocbo0tHjFmzZvHzzz/z9ttvN3ZXmpxQKMTdd9/NXXfdhcfjaezuNGmBQICcnBzefPNNZs6cSW5uLnfddRder5dx48Y1dveanA0bNjB8+HCuuuoq1q1bx/3338+QIUM477zzGrtrTVZtv4fkd9DBqaio4IYbbqBFixZccskljd2do86OHTvsn+0nnniCbdu28cADD1BRUcEdd9zR2N076sj/M41v48aNKIpC165dueKKK/juu++48847SUlJkanu9SjxfOSll16S90EjSPwerF69Wt4HDeypp54iLy+Pe+65h5kzZx5Wvw+O+jDK7XZX+8LHb0sIcOBmzZrFyy+/zOOPP86xxx7b2N1pcmbPns3xxx+f9FcFcWAcDgdlZWU8+uijtGvXDrBOkt544w0Jo/bTkiVLePvtt/niiy/weDz06dOH3bt388wzz0gYdRDcbjdFRUVJbeFwWH4HHYTy8nKuv/56Nm/ezN/+9je8Xm9jd+mo065dO5YuXUp6ejqKotCzZ08Mw+Avf/kL06ZNQ9O0xu7iUUX+n2l8F1xwAcOHDycjIwOA4447js2bN/PGG2/ISXg9qXo+Iu+Dhlf1e3DMMcfI+6CBxWsPh0IhbrnlFi688EKCwWDSMY31Pjjq56i0atWKwsJCotGo3Zabm4vH4yEtLa0Re9Z03X///bz44ovMmjWLs88+u7G70yR9+OGHLF68mAEDBjBgwAA++OADPvjgg6TaZqJusrKycLvddhAF0KVLF3bu3NmIvWqafvrpJzp16pT0y6pXr17s2LGjEXvV9LVq1Yq8vLyktry8vGpDqEXdlJWVMX78eNatW8fLL78sdSkaUUZGBoqi2Le7detGKBSiuLi4EXt1dJL/Zxqfoij2CXhc165d2b17d+N06AhX0/mIvA8aVk3fA3kfNIy8vDwWL16c1Na9e3cikQhZWVmHzfvgqA+jevbsicPhSCrYtXz5cvr06SP1ZA7A7NmzefPNN3nsscf43e9+19jdabJeffVVPvjgAxYtWsSiRYsYMWIEI0aMYNGiRY3dtSanX79+hEIhNm3aZLdt3LgxKZwSddOyZUtycnKSRpNu3LgxqUaP2H/9+vVj9erVVFRU2G3Lly+nX79+jdirpskwDCZNmsS2bdt49dVXOeaYYxq7S0etL7/8ksGDByf99XXNmjVkZGRIPc5GIP/PNL4nn3ySsWPHJrWtXbuWrl27Nk6HjmC1nY/I+6Dh1PY9kPdBw9i2bRuTJk1KCvl++uknmjVrxqBBgw6b98FRn7Z4vV4uuOAC7rnnHn744QcWL17MggULuPLKKxu7a03Ohg0bmDt3Ltdccw2DBg0iNzfXXsT+adeuHZ06dbIXv9+P3++nU6dOjd21Jqdr166cfvrpTJs2jbVr1/Lll18yb948LrvsssbuWpMzYsQInE4nd9xxB5s2beI///kPzz77LGPGjGnsrjVp2dnZtGnThmnTprFu3TrmzZvHDz/8wEUXXdTYXWty3n77bZYuXcoDDzxAWlqa/Tuo6rQMUf8GDBiA2+3mjjvuYOPGjXzxxRc88sgjXH311Y3dtaOS/D/T+IYPH853333H/Pnz2bJlC3/7299YtGiRlAw4xPZ2PiLvg4axt++BvA8aRp8+fejduzfTp09n/fr1fPHFF8yaNYvrrrvusHofKKZpmg3+rIeZYDDIPffcw7/+9S9SUlIYP358tcRW7Nu8efN49NFHa9z3yy+/NHBvjiy33347AA899FAj96RpKi0t5f777+fTTz/F6/UyevRoJk6cmDR9RNTN+vXrmTFjBj/88APNmjXj8ssv509/+pN8LfdTjx49eOWVVxg8eDAAOTk5/PWvf2XVqlV06tSJ6dOnc/LJJzdyL5uGxK/l+PHj+eqrr6odk52dzauvvtoIvTu6rVu3jgcffJCVK1fi9/u59NJL5f/eBiT/zzS+qt+DxYsX89RTT7F582batWvHzTffzFlnndXIvTyy7Ot8RN4H9W9f3wN5HzSM3bt3c//997NkyRK8Xi9XXHEFEyZMQFGUw+Z9IGGUEEIIIYQQQgghhGgwR/00PSGEEEIIIYQQQgjRcCSMEkIIIYQQQgghhBANRsIoIYQQQgghhBBCCNFgJIwSQgghhBBCCCGEEA1GwighhBBCCCGEEEII0WAkjBJCCCGEEEIIIYQQDUbCKCGEEEIIIYQQQgjRYCSMEkIIIYQQQgghhBANRsIoIUST0KNHD6ZOnVqt/d1332XEiBGN0CMhhBBCCCGEEAdCwighRJPxj3/8gyVLljR2N4QQQgghhBBCHAQJo4QQTUa7du247777CIfDjd0VIYQQQgghhBAHSMIoIUSTcdNNN7F7927mz59f6zG7du3ixhtvJDs7m8GDB/PAAw/Y4dW7777LmDFjeOqppxg8eDAnnHACM2fOxDRN+/5vvvkmI0aMYMCAAYwZM4Zffvml3l+XEEIIIYQQQhxNJIwSQjQZrVq1YvLkyTz77LNs3bq12v5wOMyf/vQngsEgr776Kk888QSff/45jzzyiH3MihUr2LRpE2+88QZ33nknr7zyCt988w0A//nPf5g9ezZ33nkn7733HoMGDeLKK6+kuLi4wV6jEEIIIYQQQhzpJIwSQjQpY8aMoVOnTsyYMaPavi+//JLdu3cza9YsevTowZAhQ7jrrrt44403KC8vB0DXde6//366du3K+eefz3HHHcePP/4IwAsvvMCECRMYPnw4nTt35qabbqJdu3a8//77DfoahRBCCCGEEOJI5mjsDgghxP7QNI177rmH0aNHs3jx4qR9GzZsoHPnzqSnp9ttAwcOJBqNsmXLFgCaN29OSkqKvT8lJYVoNGrff9asWTz22GP2/lAoxObNm+vxFQkhhBBCCCHE0UXCKCFEkzNw4EAuvPBCZsyYwdVXX223u93uasfqup60drlc1Y6J14zSdZ3p06czZMiQpP2J4ZUQQgghhBBCiIMj0/SEEE3SLbfcQiAQSCpm3qVLFzZv3kxRUZHdtnLlShwOBx07dtznY3bp0oVdu3bRqVMne3n22WdZuXJlPbwCIYQQQgghhDg6SRglhGiSMjMzueWWW9i+fbvdNnToUDp06MCtt97KL7/8wrfffsv999/PyJEjSUtL2+djXnXVVbz88sssWrSILVu2MGvWLD7++GO6detWny9FCCGEEEIIIY4qMk1PCNFkXXTRRbzzzjvs2bMHsOpJzZ07l/vvv58//vGP+P1+fv/73zNlypQ6Pd65555LXl4eTz31FHl5eXTv3p1nnnmGzp071+OrEEIIIYQQQoiji2LGi6UIIYQQQgghhBBCCFHPZJqeEEIIIYQQQgghhGgwEkYJIYQQQgghhBBCiAYjYZQQQgghhBBCCCGEaDASRgkhhBBCCCGEEEKIBiNhlBBCCCGEEEIIIYRoMBJGCSGEEEIIIYQQQogGI2GUEEIIIYQQQgghhGgwEkYJIYQQQgghhBBCiAYjYZQQQgghhBBCCCGEaDASRgkhhBBCCCGEEEKIBiNhlBBCCCGEEEIIIYRoMBJGCSGEEEIIIYQQQogGI2GUEEIIIYQQQgghhGgwEkYJIYQQQgghhBBCiAYjYZQQQgghhBBCCCGEaDASRgkhhBBCCCGEEEKIBiNhlBBCCCGEEKJJM02zsbsgDkPycyHE4UvCKCGEbcyYMYwZM6ben2fbtm306NGDd999d7/ut3TpUnr06MHSpUvrqWeHhxEjRnD77bc3djeEEEIcZpYvX84NN9zA0KFD6dOnD7/5zW+444472LBhQ2N3LcnTTz9Njx49Guz5li9fzrXXXttgz3c4WL16Nddccw0nnXQSgwcPZty4caxevTrpGNM0mT9/PmeddRZ9+vTh7LPP5vXXX9/nY+fk5HDjjTdyyimnMGjQIC677DKWLFlS7bh3332X3//+9/Tp04cRI0Ywe/ZsdF3fr9cR/1lJXHr16sXgwYOZOHEi69atq/NjLViwgFtuuQWAkpISbr31Vr7//vv96s+Buv322xkxYsRej3n33Xfp0aMH27Ztq/Pj1uU+hYWFnH766WzdurXOj5uovLyce++9l6FDhzJgwACuueYaNm7cuM/7/fLLL1x99dVkZ2dzyimncNttt5GXl5d0zO7du5k6dSrZ2dkMHDiQ8ePH8+OPPx5QP8WRR8IoIYQQQgghDnPz5s3j8ssvJxgMMn36dObPn891113Hzz//zB/+8Ac+/PDDxu5io3nrrbcOu0CuPuXk5HDFFVdQUVHBjBkzmDlzJuFwmNGjRyeFCI888giPP/44F110EfPmzWPEiBHcd999LFy4sNbHLiws5IorrmDjxo1Mnz6dxx9/nBYtWjBu3DiWLVtmH/f6668zffp0Tj31VObNm8fFF1/Ms88+y5NPPnlAr2nhwoX28uqrr3LHHXewZs0aLr/8cnJzc/d5/w0bNvDcc8/xl7/8BYA1a9bw97//HcMwDqg/9eH0009n4cKFtGzZ8pA+bmZmJmPHjmX69OkHNBJs6tSpfPLJJ0ydOpWHH36Y3bt3c+WVV1JcXFzrffLy8vjTn/5Efn4+M2fOZPr06Xz33Xdcc801RCIRAEpLS7nsssv45ptvuPHGG3n66adp164dV1xxBT/88MMBv15x5HA0dgeEEEIIIYQQtfvss8949NFHueGGG5g0aZLdnp2dzQUXXMDUqVO5/fbbOfbYYznmmGMasaeiIbz66qt4vV6ee+45fD4fACeddBIjRozgtdde46677mLbtm289NJL3HnnnYwePRqAIUOGsHPnTr766isuueSSGh970aJFFBYW8vbbb9OqVSsAhg4dyvnnn8/8+fPJzs4mEAjw6KOPMn78eDv8GTJkCCUlJXzzzTdMmTJlv19T//79k24PGjSINm3acPnll/Pee+/tc+TbrFmzGDlypN3nw1GzZs1o1qxZvTz26NGjeeaZZ/j0008566yz6ny/FStW8NlnnzFv3jyGDRsGwAknnMBvfvMb/va3v/HnP/+5xvv9+9//prCwkP/7v/+jY8eOAKSmpnL11VezYsUKsrOzeeedd9i+fTt/+9vfGDRoEGD9LBUVFfHggw/y5ptvHuSrFk2djIwSQuy3r7/+mtGjRzNo0CAGDx7M1KlT2blzZ9IxGzduZNKkSWRnZ3PiiScyYcKEWv9qaZom06ZNo2/fvnz11Vd2+5tvvsnZZ59N3759ueKKK9ixY0e1+27evJnJkyczdOhQ+vfvz5gxY1i+fDkARUVF9OrVi5deesk+fufOnfTo0cP+8ARgGAaDBw/mueees6cQfvzxx0yePJkBAwaQnZ3NHXfcQSAQ2OvXZc+ePUybNo1hw4bRt29fLrroIv79738nHdOjRw9ef/11/vrXv5Kdnc2AAQO48cYbqw1rjrvwwgu59NJLq7WPHTuWq666aq/9EUIIcWSYPXs2Xbt2ZeLEidX2OZ1O7rvvPjRN4/nnnwdg3LhxjBo1qtqx119/Peedd559+/vvv+eKK66gX79+ZGdnc9ttt1FQUGDvf/fdd+nVqxdvvfUWQ4cOJTs7m/Xr17Nlyxauu+46Bg8eTL9+/bjkkkv44osvqj3f559/znnnnWdPEVu0aFHS/rr83gyFQsyZM4dzzjmHPn36cNZZZzFv3jx7xMvtt9/Oe++9x/bt2/daAuDpp5/mnHPO4dNPP2XkyJH06dOH888/nxUrVrBy5Uouvvhi+vbty8iRI6tNSfv111+ZMGECAwcOZODAgUycOLHalKi1a9cyadIkTjrpJHr37s2pp57KAw88QEVFhX1MXT4DxKdl7a0kQdeuXRk3bpwdRAH4fD5at27Nli1bAFi8eDFut5uLLroo6b5PPPEETz/9dK2P3apVK8aOHZsU6miaRqdOnezH/vrrrykvL69W2uG2227j7bffrvWx99fxxx8PwPbt2wHre3jmmWcye/Zse2pYcXExv/76K59//jkjR44ErLIOV155JQBXXnllUj8/+ugjRo0axYABAxg6dCh33XVXtRFAP/74I+PHj2fw4MEMHDiQ6667rs7TBd99913OPvts+vTpw3nnnZf0vqhpyt17773Hueeeax+/ZMkSevXqVe3neNWqVVx66aX06dOH008/nRdeeCFpv8vl4uyzz+a5556z2+LlLfZWFuOrr77C5/Nxyimn2G3NmjXjxBNPrPE9HRcKhQBISUmx2zIyMgDr8zdYo9XS09PtICpu8ODBrFixYq8jr8TRQcIoIcR+WbRoEePGjaNNmzY89thjTJs2jRUrVnDJJZeQn58PWPPDL7nkEjZv3sw999zDrFmz7OG88V9QiR544AH+8Y9/MHv2bPuX4Wuvvcbdd9/NsGHDmDt3Lv369ePOO+9Mut/69esZNWoU27Zt44477uD//b//h6Io/OlPf2LZsmVkZGTQv39/vvnmG/s+8Q+YiTUEVq1aRVFREaeffrrddvfdd9OuXTvmzp3L+PHjefvtt3nmmWdq/brk5eVx0UUX8f3333PzzTfbQ5EnTpzI+++/n3Ts448/jmEYPPbYY9x666189tlnPPjggzU+7kUXXcSKFSvIycmx23bu3MnSpUtrPNEQQghxZCkoKOCnn35i+PDhKIpS4zEZGRmcfPLJdpBz3nnnsXr16qTfHSUlJfz3v//l/PPPB+C7775j7NixeDwennjiCaZPn86yZcu48sorkwIUXddZsGABM2bMYNq0aXTp0oUJEyYQDAZ55JFHmDt3LhkZGfz5z39Oej6Au+66i7Fjx/LMM8/QunVrbr/9dtauXQvU7femaZpcd911vPDCC/Y0sHPOOYcnnniCu+++G7ACtmHDhpGVlcXChQuTfpdXtWvXLh566CGuu+46nnzySUpKSpg8eTJTpkzh4osvZs6cOZimyc0332x/DTZt2sSll15Kfn4+Dz/8MDNmzGDr1q1cdtll9ueePXv22FMoH3roIZ5//nl+97vf8eqrr/LKK68k9WFfnwHiU7l69+5d6+sYPXo0V199dVJbTk4O69ats0fGrVmzhk6dOvHdd9/xhz/8gd69ezNixIi9TtEDOPfcc+26S3HFxcV8993/b+/O4+So6/yPv+roa+4kM5mcJEAyJIQrBBK5FsO6wiouCrgeKKfCLqcCiiAgyBGBBRWSiFEuBcEf4rIgrrooIMhpNCB3Qm6SzJE5++6q+v7+qKOrZ3qSyTVH8nlCParqW9XV1d3Tme73fL+feq3k2NXV1bS1tXHaaadxwAEHcNRRR7F48eKdWjB81apVAEHPG4ANGzbw3HPP8f3vf58rr7yS2tpannzySRoaGoLeVbNmzeLaa68F3J9B/2dl8eLFXHrppRxyyCHceeedXHDBBfz+97/ny1/+cvB6v/zyy3zhC18A4Oabb+bGG29k48aNfP7zn9/qUNCNGzeyZMmSYEiapmlcfPHFwc9Jb48//jjf+ta3OPTQQ1m8eDHHH388559/ftm6W9dddx2f/OQnWbJkCbNnz+a2227jmWeeKdnnhBNO4M033wyet1mzZm31PfHBBx8wadIkDMMoad9rr72C45Tzr//6rzQ0NPDd736XlpYW1q1bx6233kpDQwNHHnkk4A4fTKVSfUInP9TcltpZYjelhBDC86UvfUl96Utf6ne7bdvqqKOOUmeffXZJ+5o1a9SsWbPULbfcopRS6nvf+5466KCDVEtLS7DPxo0b1Uc/+lH17LPPqnXr1qmmpib12GOPqf/6r/9Ss2bNUs8880ywr+M46ogjjlBf+9rXSu7n2muvVU1NTerll19WSil1ySWXqHnz5qmenp5gn0KhoI4//nh1yimnKKWU+vGPf6wOOeQQlc/nlVJKXX755eozn/mMampqUuvWrVNKKfXDH/5QzZ8/XymlgnO7/PLLS+77y1/+sjrxxBP7fW5uvfVWNWvWLLV+/fqS9jPOOEMdddRRyrZtpZRSTU1N6gtf+ELJPt/61rfUIYccEqzPnz9fXXHFFUoppbq7u9VBBx2kfvjDHwbbf/SjH6k5c+aoTCbT7/kIIYTYPbzxxhuqqalJPfjgg1vc73vf+55qampSnZ2dKpVKqUMOOUQtXLgw2P7oo4+qGTNmqE2bNimllPrc5z6nTjzxRGVZVrDPypUr1cyZM4P7euyxx1RTU5N6/PHHg31aWlpUU1OTeuKJJ4K27u5udfPNN6v3339fKaXUnXfeqZqamtRzzz0X7LNmzRrV1NSkHnjgAaXUwH5vPvvss6qpqUn95je/Kdln0aJFqqmpKbi/K664Ivg93p9y5/TjH/9YNTU1qUcffTRo+93vfqeamprU22+/rZRS6tJLL1VHHnlkyWeNjo4ONWfOHPW9731PKaXU888/r0477bSSfZRS6sQTTyz5zDSQzwDbI5PJqM997nPqkEMOCZ7Pr3zlK2revHnqIx/5iHrwwQfViy++qK6++mrV1NSkHnnkkQEf27ZtddFFF6mZM2eq119/XSml1He+8x11yCGHqCOOOELdfffd6qWXXlL/9V//pWbMmKFuv/32bTp3/3UpFArB1NPTo1577TX1mc98Rs2ZMyf4POnv+9prr5Uc49RTT1X/+Z//WdL28ssvl3xm7OzsVAcccIC65pprSvZ77bXXSt5fp556qvrEJz5R8r7o6upSc+fOVRdffHG/j+OKK65QTU1NasWKFUHbiy++qJqamtTTTz+tlCq+n/zPnx/96EfVeeedV3Ic/2fyscceK7nNL37xi2CfdDqtZs2apW6++eaS23Z3d6umpib10EMP9XuevZ199tnq85//fJ/2O+64Q82aNWuLt3366afVQQcdpJqamlRTU5M6/PDD1TvvvBNsX758uZo1a5Y6/fTT1fvvv6+6urrU//zP/6jDDjus7Oso9jzSM0oIMWCrVq2itbU16Abt22uvvZg9e3ZQ2HLp0qUccsghNDQ0BPuMGzeOZ555JhiPDm7xyyVLlvDJT36y5K82K1euZPPmzcyfP7/kfv71X/+1ZP3VV19l/vz5JV2ETdPkk5/8JG+++SapVIpjjz2WdDrN66+/Drh/8TrjjDNIJBK89tprAPz5z3/u81ej3rULxo0bt8Vheq+++iqzZ89m4sSJJe3/9m//Rmtra0lB0XLHzmQyZY9bXV3Nxz/+8ZLeVX6X7ng83u/5CCGE2D0or6dJJBLZ4n5+zwalFBUVFXzsYx/jt7/9bbD9qaee4ogjjqCxsZFMJsPrr7/Osccei1IKy7KwLIvJkyez77778pe//KXk2DNnzgyW6+vrmTZtGtdccw1XXHEFTz75JI7jcOWVV/apV3XYYYcFy5MmTQLcHlowsN+br776KqZpcsIJJ/TZxz/Gtjr00ENLHgvAwQcfHLT5Q43883z55ZeZO3cu8Xg8eJ6qqqo47LDDgp7XRx99NA8++CCxWIwVK1bwxz/+kR/96Ee0t7eTz+dL7n9bPgMMRDKZ5LzzzuMf//gHt912W/B8FgoFOjo6uP766znttNM44ogjuOGGGzj66KNZuHDhgI5dKBT4xje+we9//3u+/e1vc9BBBwXt6XSar371q5x33nl85CMf4bLLLuOzn/0s9913H8lkcpsfx6xZs4Jpzpw5nHbaaeTzeRYuXFjyeRJKfx4B1q1bF/x89WfZsmXk8/k+n2EPO+wwJk6cyKuvvko6neYf//gH//qv/1rSU6impob58+dv9edt1KhR7LvvvsG6f049PT199l2zZg0bNmzo87P9yU9+suyxw++lRCJBfX198DPqq66upqamZpt6HKkt9GTrrycmwJNPPsmFF17Icccdxz333MPixYuZPn06Z599dtCDbNq0adx9992sW7eOE088kcMPP5z777+fiy++GEA+xwopYC6EGDh/iJ3/4S2svr6et99+O9hvax8KwK2vcPTRR/Ob3/yGM844g/333x8g6M47atSokv17fxjp6urq91yUUiSTSfbbbz/Gjx/Piy++yKhRo2hpaeHII4/k0EMP5dVXX+XYY4/lrbfe4pJLLik5RiKRKFnXdX2Lv7C7urqYPHly2XMBSj4wbOuxTz31VJ544gn++te/YhgGq1ev5pZbbul3fyGEELsPP1zw6+b0Z926dVRWVgZhykknncQTTzzBu+++S319Pa+88kowHKy7uxvHcfjJT34S1JkKi8ViJevh2kSapnHvvfcGxZIff/xxIpEIH/vYx7j++uupra0teztdd/8G7v++G8jvza6uLkaNGtVnCJH/eaDcl/ytCf8By9f793JYZ2cnv/3tb0uCPZ9fjNofdvfQQw+RTqcZP348Bx10UJ/nsdx9be0zwJZs3LiR8847j1WrVvH973+fj33sY8G2yspKNE0r+SMgwDHHHMMLL7xAW1tb2c9Qvu7ubi688EJee+01rrnmGk477bSSYwN9/pD3T//0T/zyl7/kgw8+KAn4BiJcayoSidDQ0MCYMWPK7uvfvy+ZTG7xNYTiZ8v+Pjf29PTQ09ODUmqL+2xJ+OcdimFOuSv6+bXZej/G/l6Tgf7cJBKJbQoDq6qqytYtTaVSVFdX93u7hQsXMnv2bL7//e8HbUcddRSf+MQn+OEPf8idd94JuEHtH//4xyAgmzx5cvBah/+tEHsmCaOEEAPmf8At90urtbU1CI+qq6tLCqD6XnrpJSZNmhT8cr7kkks4/fTT+eQnP8nVV1/No48+imEYwXF6j7HvXW+qtra233OBYph17LHH8tJLLzFmzBj23ntvGhoamDdvHv/v//0/XnjhBeLxOPPmzduGZ6Kv2traspce7n0u22Pu3Lnstdde/O53v0PXdfbZZ58+f1kVQgixexozZgyHHHIIv//977nkkkuCUCcsmUzyl7/8heOOOy5oO+KII2hoaOB///d/aWhoIBaLBVfZ8oOKM888s2xPjK19sW9sbOS6667jO9/5Du+++y6/+93v+MlPfsKoUaOC+jxbM5Dfm7W1tXR0dGDbdkkg1dLSEuyzq1VXV3PkkUeWvWiIabpfpZYsWcL999/P9ddfz8c//vHgS3zv4uE703vvvcc555xDLpfj3nvv5fDDDy/ZPmXKFJRSFAqFklDMsixgy71SNm3axFlnncX69eu54447+vRMnzJlCkCfXl+FQgHoG2YOxIEHHrjNt/HV1dVtNSjyg4+2tjb22Wefkm2tra1MnjyZ6upqNE3r97Ol/zl4Zxg3bhzQ97Nuf/WlBqq7u3ub3hd77703L7zwAo7jlPzbsmbNmpJeXr19+OGHJeEnuD9TBxxwQFDsfcOGDfzlL3/hpJNOKgme3377berq6gb0h2uxe5NhekKIAfODnN/85jcl7evWrWPZsmVB1/fDDjuM119/vSSQ2rx5M1/5yldKrsxRX19PPB7n2muv5a233uK+++4DYOrUqYwfP57f/e53JffTu1Dj4YcfzjPPPFPyFyDbtnnqqac48MADiUajgPuXu3/84x/8+c9/Zu7cuYB7CeT169fzyCOPcNRRRwX7bq/DDz+cv//9733+cv3EE0/Q0NAQfHDbHpqmcfLJJ/P000/zpz/9ic985jM7dK5CCCFGlgsvvJBVq1Zxxx139Nlm2zbf+c53yGazJUWtDcPgU5/6FM888wy/+93v+NjHPhb03KiqqmL//fdn5cqVHHjggcE0ffp07rrrri1eye3vf/87Rx55JG+88QaapjFz5ky+/vWv09TUVPaqt/0ZyO/NuXPnYllWn88D/tB1/ypd5QK6ncW/guDMmTOD5+mAAw7g/vvv5//+7/8AtzzBtGnTOOWUU4Igqrm5mffff79sr5gdtXHjRs466yw0TePhhx/uE0QBQY+op556qqT9T3/6E/vtt1/ZHmLgBptnnHEGLS0t3HfffX2CKHB7QGmaVvbYdXV1WwwxdoWJEyf2uapz7950Bx98MNFotM9n2L/+9a9s2LCBQw89lIqKCg444AD+93//t6SIeE9PD88++2yfq8LtiHHjxrHXXnsFP0O+P/zhD9t9zK6uLjKZDBMmTBjwbY4++mhSqRTPP/980Nbe3s5f//pXjjrqqH5vt88++/C3v/2tpHdWLpfjrbfeCoKnzZs3c/XVV5f8e9La2spTTz3Fcccdt8VhgGLPID2jhBAlNm3axP3339+nvampiSOPPJJLL72UK6+8kssuu4x/+7d/o6Ojg4ULF1JbWxv81fDMM8/k8ccf5ytf+QrnnXcekUgkuJLOpz71qT5/vTr22GM54YQTuOuuuzj++OOZPHkyl19+OZdddhlXX301J5xwAsuWLePhhx8uud2FF17In//8Z04//XTOPfdcIpEIDz74IOvWrSu55O1HPvIRdF3n2WefDT7Iz5o1i8rKSpYuXcpNN920w8/bWWedxRNPPMGZZ57JhRdeSF1dHY8//jgvv/wyN9988w5/UD755JODSzH7V0ISQgixZzjmmGP41re+xa233so777zDKaecwtixY1m/fj0PP/ww77zzDjfddBMzZswoud1JJ53Evffei67rfYbjXXrppZx77rnB73P/qnmvv/46559/fr/nsv/++xOPx/nmN7/JRRddRH19PS+++CLvvPMOp59++oAf00B+b/7TP/0T8+bN4+qrr6a5uZkZM2bw6quv8pOf/ITPfOYzTJs2DXBr+rS1tfHcc88xc+ZMxo4duw3P7padf/75fP7zn+e8887jC1/4ArFYjF/+8pc8/fTTwVCkgw46iMWLF7NkyRIOOeQQ1qxZw49//GPy+fw214Nqb29n7dq1TJs2rd/A6MYbb2Tz5s1cf/31JJNJli1bFmyrqqpi2rRpzJs3j/nz57NgwQIymQzTp0/n8ccf529/+xuLFy8O9l+7di3t7e1Bj+s777yT1atXc9FFF2GaZsmxo9Eo+++/P5MnT+ZLX/oSP/3pTzFNM/jj4BNPPME111wT1DfbtGkTmzZtYv/999/hP/ptyVFHHcUvfvELlFJBwOGHgs8++yy1tbXMmDGDc889l0WLFhGJRJg/fz7r16/nhz/8IdOmTQv+0HfZZZdxzjnncO655/LFL36RQqHAkiVLyOfzXHDBBTvtnP0r7V1++eV85zvf4V/+5V949913WbRoEbB9AevSpUsBgitTJ5NJVqxYwV577RUMKe3t8MMPZ+7cuXzjG9/gG9/4BnV1ddx1111UV1cHVxUE9wrW+Xw+KKlxySWXcMEFF3DJJZdw6qmnks/neeCBB2hubub2228H4IADDuDQQw/luuuu45vf/CaGYfCDH/wAwzC46KKLtvnxid2PhFFCiBJr165lwYIFfdpPPfVUjjzySE4++WQqKyv58Y9/zAUXXEBVVRXHHHMMl156aVDDYfz48fziF7/gtttu41vf+hbRaJR58+bx/e9/n9ra2rJdqa+66ipeeOEFrrnmGu6//35OPPFEdF1n8eLF/M///A9NTU1897vf5dJLLw1uM336dH7xi19wxx13cOWVV6JpGgcddBA/+9nP+hR6nDdvXknPKNM0Oeyww8oWL98eDQ0NPPzww9x+++3ceOONFAoFZsyYweLFi/nnf/7nHT5+Y2MjM2bMoL6+nsbGxh0+nhBCiJHlrLPOYvbs2TzwwAPccssttLe309DQwFFHHcVNN90UBDNhM2bMoKmpiY6ODo444oiSbUcffTT33HMPCxcu5OKLLyYSiTBr1izuu+++LQ4Fj8Vi3Hvvvdx+++3cdNNNdHd3M3XqVL773e9y8sknD/jxDOT3pqZp/PjHP+bOO+/k/vvvp729nUmTJnHppZeWDJs7+eSTee6557jgggu4+OKLOffccwd8HlszY8YMHnroIb7//e/zzW9+E6UUTU1NLFq0KDjP8847j46ODn72s5+xaNEixo8fz0knnRScf3d3NzU1NQO6v2effZYrr7ySn/3sZ2VLCOTzeZ599lmAskMi586dy89//nMAfvjDH7Jw4ULuu+8+2tvbmTZtGgsXLiwZzrl48WL++7//m/feew8o9sy56667gj+C+SZOnMif/vQnwP3cNm7cOH75y1+yZMkSJk+ezI033shnP/vZYP9HH32UhQsX8sc//nGXDsn6+Mc/zqJFi3jjjTeCWlXTp0/nxBNP5KGHHuL555/nN7/5TRCePvjgg/zyl7+krq6OE044ga997WtBr8EjjjiC++67jzvvvJNLL72UaDTKYYcdxi233NKnQP+O+tSnPkU6neaee+7hscceY/r06Xz729/m29/+dp/6UwPx5z//mYMOOiioM/fWW29x+umns2DBgi2+NxcuXMj3vvc9br31VhzH4dBDD+UHP/hBSU2n66+/ng8//DB4/f/5n/+ZJUuWsHjxYi688EIqKys56KCD+NWvfhWE4pqmcdddd7FgwQKuvfZaAObNm8ddd921Tb23xO5LU9tbMU8IIcSgaW5uZv78+dx55519xugLIYQQQgxHp512Gj/4wQ/6XIRmZ/uP//gPRo0aVfYPqsPVb37zG/bff/+SGlbPPvss5513Hv/zP//Tp6fjlqTTaY455hhuueUW+ZwoRgypGSWEEMPYO++8w8KFC/nKV77C1KlTS/6aKYQQQggxXL3yyitkMpktXrVvZ/n617/OH/7wh22qWzbUnnjiCb761a/y5JNP8te//pXHHnuM73znO8ydO3ebgiiARx55hOnTp++U3vhCDBbpGSWEEMPYsmXLOOecc2hsbOSOO+7Y5g8nQgghhBBD4cMPP6SiomJQrnoI7lUN33333bKF/oejjo4Obr/9dv785z/T3t5OfX09xx9/PBdffDGVlZUDPk57ezuf/vSn+fnPf75DF8wRYrBJGCWEEEIIIYQQQgghBo0M0xNCCCGEEEIIIYQQg2a7w6h8Ps+JJ57IK6+8ErStW7eOM888k0MOOYRPfOITvPDCCyW3efHFFznxxBM5+OCDOf3001m3bt32n7kQQgghhBBCCCGEGHG2K4zK5XJceumlLF++PGhTSnHBBRdQX1/PY489xkknncSFF14Y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GMKzGvkaGxtpa2sraWtra+vTvVoMTDKZ5JxzzmH58uU88MADUsMipK6uDk3TgvV9992XXC5HV1fXEJ6VAPl3YDjSNC34cu3bZ599aG5uHpoT2sOU+z4h75OhV+51kffK0Ghra+Ppp58uaZs2bRqFQoGGhoYR8V7Z48OomTNnYppmSTGvpUuXcuCBB0o9me2wcOFCHnnkEe644w4++clPDvXpjFg///nPefLJJ3n88cd5/PHHOe644zjuuON4/PHHh/rURpyDDz6YXC7HqlWrgraVK1eWhFNiYMaOHcuaNWtKepOuXLmypEaP2HYHH3wwb731FtlsNmhbunQpBx988BCe1cjkOA4XXngh69ev5+c//znTp08f6lMaNp5//nnmzZtX8pfSd955h7q6OqmPOQzIvwPDzw9/+EPOPPPMkrZ3332XffbZZ2hOaA/S3/cJeZ8Mrf5eF3mvDI3169dz4YUXloR+b775JqNHj2bOnDkj4r2yx6ctiUSCT3/601x33XW88cYbPP3009x7772cfvrpQ31qI84HH3zA4sWL+epXv8qcOXNobW0NJrFtJk6cyJQpU4KpsrKSyspKpkyZMtSnNuLss88+fPSjH+XKK6/k3Xff5fnnn2fJkiV84QtfGOpTG3GOO+44IpEIV199NatWreJPf/oTd999N1/+8peH+tRGtLlz5zJ+/HiuvPJKli9fzpIlS3jjjTc49dRTh/rURpxf/epXvPLKK9x4443U1NQEv4N6D+vYE82ePZtYLMbVV1/NypUree6557j11lv5yle+MtSnJpB/B4aj+fPn89prr3HPPfewdu1afvGLX/D444/LEP9dbEvfJ+R9MnS29LrIe2VoHHjggcyaNYurrrqKFStW8Nxzz3HbbbfxH//xHyPmvaIppdRQn8RQy2QyXHfddfzhD3+gqqqKc845p0+6K7ZuyZIl3H777WW3vffee4N8NruXb33rWwB873vfG+IzGZl6enq44YYb+L//+z8SiQRf/OIXueCCC0qGq4iBWbFiBTfddBNvvPEGo0eP5rTTTuOMM86Q53Ib7bfffvzsZz9j3rx5AKxZs4Zvf/vbvP7660yZMoWrrrqKI488cojPcmQIP5fnnHMOL7zwQp995s6dy89//vMhOLvhZfny5dx8880sW7aMyspKPv/5z8u/hUNI/h0Yfnq/Jk8//TR33nknq1evZuLEiXz961/n4x//+BCf5e5ta98n5H0yNLb2ush7ZWg0Nzdzww038NJLL5FIJPjSl77Eeeedh6ZpI+K9ImGUEEIIIYQQQgghhBg0e/wwPSGEEEIIIYQQQggxeCSMEkIIIYQQQgghhBCDRsIoIYQQQgghhBBCCDFoJIwSQgghhBBCCCGEEINGwighhBBCCCGEEEIIMWgkjBJCCCGEEEIIIYQQg0bCKCGEEEIIIYQQQggxaCSMEkIIIYQQQgghhBCDRsIoIcSIsN9++3HZZZf1af/1r3/NcccdNwRnJIQQQgghhBBie0gYJYQYMX7zm9/w0ksvDfVpCCGEEEIIIYTYARJGCSFGjIkTJ/Ld736XfD4/1KcihBBCCCGEEGI7SRglhBgxvva1r9Hc3Mw999zT7z6bNm3ikksuYe7cucybN48bb7wxCK9+/etf8+Uvf5k777yTefPmcdhhh7FgwQKUUsHtH3nkEY477jhmz57Nl7/8Zd57771d/riEEEIIIYQQYk8iYZQQYsRobGzk4osv5u6772bdunV9tufzec444wwymQw///nP+cEPfsCzzz7LrbfeGuzz97//nVWrVvHwww9zzTXX8LOf/YwXX3wRgD/96U8sXLiQa665hv/+7/9mzpw5nH766XR1dQ3aYxRCCCGEEEKI3Z2EUUKIEeXLX/4yU6ZM4aabbuqz7fnnn6e5uZnbbruN/fbbjyOOOIJrr72Whx9+mFQqBYBt29xwww3ss88+nHTSScyYMYN//OMfAPz0pz/lvPPOY/78+UydOpWvfe1rTJw4kSeeeGJQH6MQQgghhBBC7M7MoT4BIYTYFoZhcN111/HFL36Rp59+umTbBx98wNSpU6mtrQ3aDj30UCzLYu3atQCMGTOGqqqqYHtVVRWWZQW3v+2227jjjjuC7blcjtWrV+/CRySEEEIIIYQQexYJo4QQI86hhx7KKaecwk033cRXvvKVoD0Wi/XZ17btknk0Gu2zj18zyrZtrrrqKo444oiS7eHwSgghhBBCCCHEjpFhekKIEenyyy8nnU6XFDPfe++9Wb16NZ2dnUHbsmXLME2Tvfbaa6vH3Hvvvdm0aRNTpkwJprvvvptly5btgkcghBBCCCGEEHsmCaOEECPSqFGjuPzyy/nwww+DtqOOOorJkyfzzW9+k/fee4+XX36ZG264gRNPPJGampqtHvOss87igQce4PHHH2ft2rXcdttt/O///i/77rvvrnwoQgghhBBCCLFHkWF6QogR69RTT+Wxxx6jpaUFcOtJLV68mBtuuIF///d/p7Kykk996lNceumlAzreJz7xCdra2rjzzjtpa2tj2rRp/OhHP2Lq1Km78FEIIYQQQgghxJ5FU36xFCGEEEIIIYQQQgghdjEZpieEEEIIIYQQQgghBo2EUUIIIYQQQgghhBBi0EgYJYQQQgghhBBCCCEGjYRRQgghhBBCCCGEEGLQSBglhBBCCCGEEEIIIQaNhFFCCCGEEEIIIYQQYtBIGCWEEEIIIYQQQgghBo2EUUIIIYQQQgghhBBi0EgYJYQQQgghhBBCCCEGjYRRQgghhBBCCCGEEGLQSBglhBBCCCGEEEIIIQbN/we2ry9L82ObgwAAAABJRU5ErkJggg==", + "image/png": "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nc369et5/vnnycnJCSjmvGXLFgYNGkROTo7/3G3ZsoWBAwdStWrVk7bvRBMnTuT9999Hp9PRqlUrIiMj2bBhAx9++CE///wzn3zyCdWrVycsLIyuXbuyePFifvvtN3r37l2q/Tt37qRBgwYkJCQAZ3ZtAbz77rukpqbSoUMHjhw5Qt26dSksLKR///7s2rWLGjVq0LFjR+x2O2vWrGH9+vVs3ryZN954o9S+nnzySZKTk2nTpg21a9dmzZo1fPrpp2zatIm5c+ei0+kA9fV/7rnn+O677zAajbRp04agoCDWrFnDO++8w6JFi5g1axaRkZH+fZ/ONdyjRw/++ecfdu3ahdVq9QePTmXYsGF8++23BAUF0a5dOwoLC/n4449ZunRphV7f0zlvvXr1YsOGDRw6dIjmzZtTvXr1UtmVL774IpmZmXTq1Ik9e/ac8hgKCgq44447sNlstG3blry8PFauXMk///zDqFGj6N+/f4WO40Snen8py5m+57zwwgv8+uuvNG3alKuvvpo1a9awcOFC/v77b3744QdCQ0MBWLlyJffffz8ej4eWLVvSpEkTDh065P+bmT59Oh06dDij4xVCCCFQhBBCiHNo5cqVitVqVbp27VruOnfddZditVqVzp07K1lZWYqiKIrH41EURVEWL16sWK1W5ZZbblHy8/MDtvvggw8Uq9WqXHPNNQHzu3btqlitVuXAgQP+ecOGDVOsVqsydOhQpaCgwD9///79/vX/+usv//wlS5YoVqtV6dSpk7Jnzx7//IyMDOX6669XrFarsnjxYkVRFOXQoUP+dUs6fvy40rx5cyUhIUFZuHBhwLL58+crCQkJSosWLZSjR49W6Fz4zmW/fv3862dmZipJSUlKw4YNlZ9++ingOb744gvFarUq3bt3VxwOh6IoirJmzRrFarUqd911l+J0OgOOq3v37orValVWrlypnMpDDz2kWK1WZcaMGQHzc3NzlVtuuUWxWq3KtGnT/PN9bbdarcpTTz0V8BrMnj1bsVqtSrt27RSv1+s/5ptuukmxWq3KBx984F/X6XQqw4cP9+9rwYIFp2zrb7/9plitVuWqq65SNm/e7J/vcDiUkSNHKlarVenTp4//uX/99VfFarUqDz74YKl9vf3224rValVmzpzpn3e619akSZMUq9WqJCQkKBs3bvTP93g8ytdff61YrVbl6aef9rdHURQlOTlZadOmjWK1WpWDBw/65/v2365dO2X79u3++QcOHFCaNWumWK1WZdWqVaXO9TXXXBOwn7y8POXBBx9UrFar8vjjj/vnn8k17Du+t99+u9T5K8uiRYsUq9Wq9OjRQ0lNTfXP37x5s9K6desy3z98r7/L5VIURTnt8+Z7zb788suA/frmN2/e3L++1+tVvF5vmX/nvnlWq1W58cYblbS0NP+y5cuXK40bN1aaNGmiHDp0yD+/rPenk5278t5fypp/Nu85zZs3D/jbz8rKUq655hrFarUqc+bM8c8fMGCAYrValeXLlwfs/+OPP/a/twghhBBnSrrvCSGEuGh69epFREQEAFqt+pHkcrno1q0bzzzzDMHBwQHr+7qxpaSknHS/x44d47vvviM2NpZXX301YMS/WrVqMXz4cABmzpzpn//5558DaneeknVboqKiePrpp6lTp06Z3VpKmjdvHjabjT59+tCnT5+AZbfccgt9+vShoKCAuXPnVuhclGX+/PlkZ2dz55138n//938By26//Xa6du3KoUOH+OWXXwA4fvw4ALGxsQEFkqOionj11VcZO3Ys1atXP+lxAVSuXJkePXpw7733BswPDQ2lZ8+eQNmvi16vZ/To0QGvwe23347RaCQjI4OMjAwA/v33X3bs2EGjRo148MEH/esaDAZeeukloqOjT9lGn1mzZgHw3HPP+TPGAIxGIy+99BK1atVi69atrFy5EoCrr76ayMhI/vrrr4CufQA//vgjOp3Of4xncm35NGvWjKZNm/ofa7Va0tLSAPX8lsxWq1GjBq+//jrjx48v9XcA8OCDD9KgQQP/45o1a/q7fZXsZug7F6+99lrA6xwSEsJbb71FaGgoS5Ys8XctO5truKJ82w4fPpxKlSr55zdp0oRHH320Qvs40/NWnq5du/rPj0ajOWXmIKjZVTExMf7HHTt2pF+/fjidznK7p55rZ/N63XbbbbRt29b/OCIigptuugmAXbt2+ef7zvWJA0nceeedjBgxgvvvv/+cHY8QQoj/HglKCSGEuGhK/qj2ufHGG3nvvfcCfiwVFhaybds2vvvuOwA8Hg8ej6fc/a5duxaPx0NiYmJA0MCnQ4cOaLVa1q1bh8fjQVEU1qxZg1arLbObS48ePfj5558ZOHDgSY9nzZo1AFx33XVlLr/hhhsA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7kyVKlXK3GdWVhZ33XUX+/bt4/nnn2fixInExMQwaNAgVq9e7V9v1KhRzJ07l3vuuYcpU6ZQqVIl7r//fjZu3HhGx1KynZ9++ikvvPAC27dvp3///qSlpZ1y+7179/LBBx/w7LPPArB9+3a+/fZbvF7vGbXnfOjSpQvz5s0jLi7unO43MjKSgQMH8vzzz59RZtjTTz/NokWLePrppxk3bhzHjh1jwIAB5OTklLtNcnIyd911F4WFhYwZM4axY8fidDq58847/QEtm83GwIED2b59Oy+99BJvvfUWx44d46677rosv++Lc0t/sRsghLi4QkND2b17N1OnTmXIkCHn5TmaN29+XvZ7ufivH78QQohzZ+nSpUyYMIHBgwfz+OOP++cnJSVx88038/TTTzN8+HCsViv169e/iC0VF8qOHTt47bXX2Lx5M2azudTyGjVqUKNGjYB5gwcPJjw8nLfeeguNRlPmfr/55huysrL46quviI+PB6BDhw707t2bmTNnkpSURGFhIT/99BMPPvgg99xzDwBt27ale/fufPHFFzRr1uy0j+fE702tWrWicuXK9O/fn6+//vqUmXBvvvkmPXv29Lf5UhQVFUVUVNR52fedd97Je++9xy+//MK1115b4e3Wr1/P0qVLmT59Op07dwagdevWdO/enc8//5xHHnmkzO0+/fRTLBYLH3zwAUFBQQBcddVVdOvWjTlz5jBq1CgWL17M/v37+eGHH/zvS1arle7du7No0SL69et3lkctLmeSKSXEf1zDhg25+eab+fDDD9myZctJ1/V4PHz22Wf06tWLpk2b0qVLF9566y0cDsdJtyvZfW3VqlUkJCTwzz//MGjQIJo1a0aHDh1488038Xg8gNpt8PDhw3z99dcBacpHjhxh6NChJCUl0axZM+655x62bdvmf56UlBQSEhL4+OOPuf7662nWrBnvvfceCQkJLF26NKBN27dvJyEhgV9++QUAh8PB+PHj6dy5M02aNKFXr1789NNPAdt069aNSZMmMW7cONq3b0/Tpk257777/KnHkydPZsqUKaWO+cTue8ePH2fEiBF07tyZpk2bcsstt/Dbb7+VOmefffYZI0eOJCkpiRYtWvDkk0+Snp7uX+fgwYM8/PDDtG3blmbNmnH77bfzxx9/nPS1EEIIcXmbMmUKderU4bHHHiu1zGAw8Morr6DT6ZgxYwYAgwYNom/fvqXWffTRR7npppv8j9euXctdd91Fs2bNSEpKYtiwYWRmZvqXL1y4kEaNGjF//nw6dOhAUlISe/bsqfBn0bJly7jppptITEzkuuuu45tvvglYXpHPRofDwdSpU7n++utJTEzk2muvZfr06f4MmOHDh/P1119z+PBhEhISWLhwYZnncPLkyVx//fX88ssv9OzZk8TERHr37s369evZsGEDt956K02bNqVnz56luqHt2rWLhx56iJYtW/q7IJ3YVWrHjh08/vjjXHXVVTRu3JhOnTrx2muvUVhY6F+nIp/zvu5aq1atKvM4fIYNG4bH42HevHlER0efdF2AP/74gyVLljBixAjCwsLKXS8+Pp6BAwcGBHd0Oh01a9bk4MGDALhcLrxeLyEhIf519Ho9oaGhZGVlnbItFdWkSRMAf1fDyZMnc8011zBlyhSSkpLo2LEjOTk57Nq1i2XLltGzZ09A/d45YMAAAAYMGMDdd9/t3+dPP/1E3759adGiBR06dGDUqFGlMoI2b97MfffdR9u2bWnZsiUPP/xwhbsRLly4kOuuu47ExERuuummgL+Lsrriff3119xwww3+9f/55x8aNWpU6jreuHEj/fr1IzExkS5duvDhhx8GLDcajVx33XV88MEH/nm+79/l/U0ArFixgqCgIDp27OifFxUVRZs2bU76/bJOnToMGjTIH5ACCAoKolKlSv7rpEePHsydOzcgUG4wGABO+TtCXPkkKCWE4PnnnycyMvKU3fhGjRrF2LFj6dGjB++99x79+/dnzpw5PProo6edIvzMM8/QqlUr3n//fXr27MmHH37I/PnzAfULd2xsLJ07d/anNmdmZtKvXz+2bt3Kiy++yIQJE/B6vfTv379Umv7kyZN54IEHGD9+PH369KFGjRqlujL88MMPRERE0LlzZxRF4bHHHuOLL77g3nvv5b333qNFixYMGTKk1Jfm2bNns2/fPsaOHctrr73Gli1bGDZsGAC33nort9xyC1B+l7309HRuueUW1q5dy5AhQ5g8eTJVq1blscce47vvvgtYd+LEiXi9Xt5++22ee+45li5dyuuvvw6oafoPPfQQdrud8ePHM23aNCIiInjkkUdITk4+rddCCCHE5SEzM5MtW7bQtWvXcrNbIiIiaN++vT+gc9NNN7F169aAz4bc3Fz+/PNPevfuDcCaNWsYOHAgZrOZd955h+eff57Vq1czYMCAgECKx+Pho48+YsyYMYwYMYLatWtX+LNo1KhRDBw4kPfee49KlSoxfPhwduzYAVTss1FRFB5++GE+/PBDbr31Vt5//32uv/563nnnHUaPHg2ogbbOnTsTGxvLvHnz6NKlS7nn8ujRo7zxxhs8/PDDvPvuu+Tm5vLEE08wdOhQbr31VqZOnYqiKAwZMsR/Dvbv30+/fv3IyMhg3LhxjBkzhkOHDnHHHXeQkZEBqME1X9fKN954gxkzZnDjjTfy6aefMnv27IA2nOxzHoq7eDVu3Ljc4wAYP348c+fOpUGDBiddz3cex40bR1JSEtdff/1J173hhhv8dZl8cnJyWLNmjT+4EBoaSp8+fZg9ezbr168nNzeXjz76iN27dwcEPc/W/v37AQIyvo4cOcIff/zBxIkTGTFiBOHh4Xz//ffExsb6s60aN27MqFGjAPUa9F0r06ZNY+jQoTRv3pxJkybx2GOPsXjxYu6++27/671y5Up/ndDXX3+d1157jdTUVPr163fKLqKpqalMnz6dJ598ksmTJ6PRaHjiiSf818mJvvnmG4YPH07Lli2ZNm0a1113HY8++qj/H2xLeumll7jxxhuZPn06LVq04M033yz1j6/XX389W7Zs8Z+3xo0bn/JvYu/evVSrVg2dThcwv0aNGv79lOXOO+/k/vvvD5iXnJzM7t27A66Tli1bAuB0OtmxYwfDhw8nMjKS//u//yt33+I/QhFC/Gfdddddyl133aUoiqL89ttvitVqVd5++23/8q5duyrDhg1TFEVRdu/erVitVuWDDz4I2Mc333yjWK1WZdmyZeU+j9VqVSZNmqQoiqKsXLlSsVqtysSJEwPW6datm/LQQw+V+dyKoihvv/22kpiYqKSkpPjnORwOpXv37srgwYMVRVGUQ4cOKVarVXn++ecD9j1p0iSlefPmit1uVxRFUbxer9KlSxdl1KhRiqIoyooVKxSr1ar8+OOPAds988wzSocOHRSXy+VvU9euXRW32+1fZ/LkyYrValUyMzP9z2W1Wss9/vHjxyuNGzcOOA5FUZR77rlH6dChg+LxePzb3HHHHQHrDB8+XGnevLmiKIpy/PhxxWq1Kt99951/eW5urvL6668ru3btUoQQQlx5Nm3apFitVmXOnDknXe+N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Bg0iMjKSn376iS+//JIRI0accn++kfY+//xzWrRoERD86dy5M23atOHRRx/l0UcfpW7dumzatIlJkybRqVMnf0p+RdsN6uh+zZo1K9Ud4d577+W7775j4MCBPP7440RERPDNN9+wcuVKXn/99Qp/mW7UqBFms5nnnnuOwYMHExMTw99//8327dv9Qx8LIYS48nTq1Inhw4czfvx4tm/fzv/+9z/i4uJISUlh7ty5bN++nTFjxpQaia1379589NFHaLXaUt30hg4dyoMPPsjTTz/NTTfd5B9lb+PGjTz66KPltuVcfRZV5LPx6quvpm3btrzwwgscO3aMBg0asHr1ambMmEGfPn2oV68eoH4Op6en88cff9CwYUPi4uJO4+ye3KOPPkq/fv146KGHuOOOOzCZTMybN49ff/2VSZMmAdC0aVOmTZvG9OnTad68OcnJyXzwwQc4nc7TrheVmZnJwYMHqVevXpldDU/Xzp07/eepLAcPHiQzM9Nf62rSpEkcOHCAwYMHo9fr2bBhg39do9FIo0aNuOWWW5gzZw4PPPAAgwcPJj4+nr///puPPvqI/v37+7tXHj16lKNHj9KoUaNTZrefjQ4dOvD555+jKIq/y5wvOLhs2TLCw8Np0KABDz74IFOnTsVgMNC1a1dSUlJ49913/d93AZ5++mnuu+8+HnzwQe68805cLhfTp0/H6XTy2GOPnbM2+0bme+aZZxg9ejTXXHMNO3bsYOrUqcCZBVrXrVsHqIEmUAOMe/bsoUaNGuV+r23Tpg1JSUk8++yzPPvss0RERDB58mRCQ0MDehjs2bMHp9NJo0aNAHjttdfIyMjg5ZdfJj8/P+A6CQkJoV69evTr148vvviChx56iMcffxyDwcDnn3/Orl27mDlz5mkfn7iySFBKCFFKREQEL730Eo8//njA/DFjxlCzZk0WLFjAjBkziIuLY8CAATz66KPn/F8mBw0axOuvv859993Hxx9/TOvWrfniiy+YMGECL730Eg6Hg1q1ajFmzJgKp8T37t2bX3/9lV69egXM12q1TJ8+nXfffZcPPviAjIwM4uPjuffee0/7S8e1117Lt99+y/Dhw7nlllt46aWXApbHxsYyd+5cJkyYwGuvvYbL5aJBgwZMmzaN7t27V/h5TCYTH330ERMmTGDMmDHk5uZSq1YtXnnlFfr27XtabRZC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SHReamtrY87Hd999x0aMGME++OCDhNv45ptvWFFRUcw65eXlHXkYbUZT7xHd+R7T1HnpzveY5t47u+v9panz0pnvL91elPL7/WzkyJExX5JLlixhf/nLX5I4qtRky5YtrKCggJWVlVl1b775Jps0aVISR5XaVFVVsSOPPJKddtppJErtB1VVVWzYsGHsyy+/tOoee+wxdsMNNyRxVKlJdXU1KygoYL/88otVd8UVV6Tsl3cy2Lx5MzvxxBPZCSecEPMy8sUXX7AxY8Ywv99v9b3gggvYQw89lKyhdnoaO5cvvPACmz59ekzfm266iV1zzTXJGGaXoa2u3b///e8x32nFxcVsyJAhbOfOne17AO1EW12Hn3/+OZs4cWK7j7cjaezcMMbY5MmT2aefftqi7Zxzzjkx19PXX3/NRo0a1ehLZmenqfNiZ9asWey6665rdDv//ve/2Zlnntlew+xQmnqP6M73mKbOS3e+xzT33tld7y+teR/vTPeXbu++t2nTJqiqisLCQqtu7Nix2LBhA3RdT+LIUo+8vDw88cQTyM3Njamvr69P0ohSn3vuuQcnnXQSBg0alOyhpDTr1q2Dz+dDUVGRVTd79mwsXLgwiaNKTdxuNzweD1599VVEIhFs27YN3377LYYOHZrsoaUMX331FcaPH4+XX345pn7Dhg0YNmwYvF6vVTd27FisX7++g0eYOjR2Lk1z9Xjo+2j/aKtrd8OGDRg3bpy13Lt3b/Tp0wcbNmxol3G3N211HW7ZsgUHHnhgu4wxWTR2burr67F3714MHDiw2W1omobvv/8+5poZM2YMIpEINm3a1NZD7hAaOy921qxZg6+//hrXXHNNo322bNnSonOYCjT1HtGd7zFNnZfufI9p6rx05/tLS9/HO9v9Re6QvXRiysrKkJ2dDafTadXl5uYiHA6juroaOTk5SRxdapGRkYHJkydby7quY8WKFTj88MOTOKrUZc2aNfjmm2/w5ptvYsGCBckeTkqza9cu9O3bF6+//joeffRRRCIRnHrqqfjrX/8KUez22nyrcLlcuPnmm3H77bfj2WefhaZpOPXUU3HGGWcke2gpwznnnJOwvqysDD179oyp69GjB/bs2dMRw0pJGjuX/fr1Q79+/azliooKvP3227jyyis7amhdkra6dktLS7vUtd5W1+HWrVsRDAZx3nnnYfv27Rg6dChuvPHGlH6JbOzcbN26FYIg4NFHH8Unn3yCrKwsXHjhhTjllFMa9K2trUU4HI65ZmRZRlZWVpe7ZuwsW7YMp5xyCnr37t1on61bt0JVVZx++unYu3cvxo0bh/nz5zf4+0oFmnqP6M73mKbOS3e+xzR1Xrrz/aWl7+Od7f7S7d/GgsFgjCAFwFpWFCUZQ+oy3Hvvvfjpp59w9dVXJ3soKUc4HMYtt9yCm2++GW63O9nDSXkCgQB27NiBl156CQsXLsS8efPw3HPPUYDufWTr1q2YOnUqXn75ZSxcuBDvvvsu3njjjWQPK+Vp7PuIvov2j1AohCuvvBK5ubk488wzkz2cLklrr91QKNTtrvWWXIfbtm1DTU0N/vrXv2Lp0qVwu92YOXNml7Tw27ZtGwRBwEEHHYRly5bhjDPOwE033YQPPvigQd9QKAQA3eqa2bVrF9auXYvzzjuvyX7btm1DfX095s+fjwceeAClpaW47LLLoGlaB420/bC/R9A9Jkpj71fd/R5jPy90f4mS6HrpjPeXbm8p5XK5Glxw5jKJAfvOvffei2eeeQYPPPAACgoKkj2clGPx4sUYMWJEjNJN7DuyLKO+vh733Xcf+vbtCwAoLi7Giy++iFmzZiV5dKnFmjVr8Morr+Djjz+G2+3GyJEjsXfvXjzyyCM48cQTkz28lMblcqG6ujqmTlEU+i7aD/x+Py6//HL89ttveOGFF+DxeJI9pC5Ja6/dxp69uurn09Lr8Mknn0QkEkFaWhoA4P/9v/+HKVOm4MMPP8QJJ5zQkUNud04++WRMnToVWVlZAIBDDjkEv/32G1588UX84Q9/iOnrcrkANPyxuCtfM++99x6GDh3abPiGt99+G4IgWH9rDz30ECZNmoQNGzbg0EMP7Yihtgvx7xF0j+E09n7V3e8x8edl8ODBdH9B49dLZ7y/dHtLqfz8fFRVVUFVVauurKwMbrcbGRkZSRxZ6nL77bfjqaeewr333ovjjjsu2cNJSd5++22sXr0ahYWFKCwsxJtvvok333wzJvYZ0XLy8vLgcrksQQoADjzwQJSUlCRxVKnJDz/8gAEDBsQ8CA4bNgzFxcVJHFXXID8/H+Xl5TF15eXlKemG0Rmor6/HRRddhM2bN+OZZ57pMnFXOiOtvXYb65+Xl9duY0wWrbkOnU6n9bII8Jelfv36Ye/evR0w0o5FEATrhdHkoIMOSnisWVlZcLlcMdeMqqqorq7uktcMAHz66ac4+uijm+3n8Xhivo979OiBrKyslL5mEr1H0D2m8fer7n6PSXRe6P7S9Pt4Z7y/dHtRaujQoZBlOSZQ3rp16zBy5EiKNbMPLF68GC+99BLuv/9+/OlPf0r2cFKW5557Dm+++SZef/11vP7665g2bRqmTZuG119/PdlDS0lGjx6NcDiM7du3W3Xbtm2LEamIltGzZ0/s2LEj5helbdu2xcQ0IPaN0aNH48cff7RMyQH+fTR69Ogkjio10XUdV1xxBX7//Xc899xzGDx4cLKH1KVp7bU7evRorFu3zlouKSlBSUlJl7vWW3MdMsZwzDHH4NVXX7XqTNfzgw46qCOG26E8+OCDmDlzZkzdpk2bEh6rKIoYOXJkzDWzfv16yLKMQw45pL2H2uEwxvD99983a4lQX1+Pww47DGvXrrXq9u7di6qqqpS9Zhp7j+ju95jGzkt3v8c0dl66+/2lqffxznp/6faqi8fjwcknn4wFCxZg48aNWL16NZYvX47zzz8/2UNLObZu3YqlS5fikksuwdixY1FWVmYlonX07dsXAwYMsFJaWhrS0tIwYMCAZA8tJTnooINw1FFHYf78+di0aRM+/fRTLFu2DGeffXayh5ZyTJs2DQ6HA//85z+xfft2/O9//8Ojjz7arF860TxFRUXo3bs35s+fj82bN2PZsmXYuHEjTj/99GQPLeV45ZVX8OWXX+KOO+5ARkaG9V0U7/5BtA3NXbuKoqCsrMyKQ3H22WfjP//5D1auXIlNmzbh+uuvx1FHHYUDDjggmYfR5jR3HdrPiyAIOOqoo/Dwww/jyy+/xObNm3H99dejV69emDJlSnIPpB2YOnUqvv76azz55JPYuXMnXnjhBbz++uuWS30oFIp5fjznnHPw5JNPYvXq1di4cSMWLFiAP//5zynvXpOI3bt3w+/3J3StsZ8Xn8+HsWPHYuHChdi4cSN+/PFHXH311Zg8eTKGDBnS0cPeb5p6j+jO95imzkt3vsc0dV668/2luffxTnt/YQQLBALs+uuvZ2PGjGGTJk1iTz31VLKHlJI89thjrKCgIGEi9o958+axefPmJXsYKU1tbS37+9//zsaMGcMmTJjAHn74YabrerKHlZJs3ryZzZw5kx166KHsmGOOYU899RSdy32koKCArV271lr+7bff2LnnnstGjBjB/vSnP7HPP/88iaNLLeznctasWQm/i/7yl78keZRdh9Zcu2vXrmUFBQVs165dVt2qVavYlClT2JgxY9icOXNYZWVlh46/vWjNdRh/XkKhEFu4cCGbOHEiGz16NLv00ktZcXFx0o6lrYm/Zj744AN2wgknsJEjR7Lp06ez9957z2pbtWpVg+fHxx57jE2YMIGNHTuWzZ8/n4VCoQ4be3sSf17Wr1/PCgoKWDgcbtA3/rxUV1ezG264gY0fP54VFhay6667jlVXV3fIuNua5t4juus9pqnz0p3vMc1dL931/tLceems9xeBMcbaXuoiCIIgCIIgCIIgCIIgiMbp9u57BEEQBEEQBEEQBEEQRMdDohRBEARBEARBEARBEATR4ZAoRRAEQRAEQRAEQRAEQXQ4JEoRBEEQBEEQBEEQBEEQHQ6JUgRBEARBEARBEARBEESHQ6IUQRAEQRAEQRAEQRAE0eGQKEUQBEEQBEEQBEEQBEF0OCRKEQSRMgwZMgTXXnttg/pXX30V06ZNS8KICIIgCIIgCIIgiH2FRCmCIFKKt956C2vWrEn2MAiCIAiCIAiCIIj9hEQpgiBSir59++K2226DoijJHgpBEARBEARBEASxH5AoRRBESvG3v/0Ne/fuxZNPPtlonz179uCqq65CUVERxo8fjzvuuMMSsV599VWcd955eOihhzB+/HiMGzcOCxcuBGPMWv+ll17CtGnTUFhYiPPOOw+//PJLux8XQRAEQRAEQRBEd4NEKYIgUor8/HzMnTsXjz76KHbt2tWgXVEUXHDBBQgGg3juuefwr3/9Cx999BEWLVpk9fnuu++wfft2vPjii7jpppvw7LPP4osvvgAA/O9//8PixYtx00034bXXXsPYsWNx/vnno6ampsOOkSAIgiAIgiAIojtAohRBECnHeeedhwEDBuDOO+9s0Pbpp59i7969uPfeezFkyBBMmDABN998M1588UX4/X4AgKZpuP3223HQQQfhpJNOwiGHHILvv/8eAPDEE0/g0ksvxdSpUzFw4ED87W9/Q9++ffHGG2906DESBEEQBEEQBEF0deRkD4AgCKK1SJKEBQsW4JxzzsHq1atj2rZu3YqBAwciMzPTqjv00EOhqip27twJAOjRowd8Pp/V7vP5oKqqtf69996L+++/32oPh8P47bff2vGICIIgCIIgCIIguh8kShEEkZIceuihOO2003DnnXfi4osvtupdLleDvpqmxeROp7NBHzOmlKZpuPHGGzFhwoSYdruIRRAEQRAEQRAEQew/5L5HEETKct111yEQCMQEPT/wwAPx22+/obq62qpbv349ZFlG//79m93mgQceiD179mDAgAFWevTRR7F+/fp2OAKCIAiCIAiCIIjuC4lSBEGkLNnZ2bjuuuuwe/duq27ixIk44IADcP311+OXX37B2rVrcfvtt2PGjBnIyMhodpsXXnghnnnmGbz++uvYuXMn7r33Xvzf//0fDj744PY8FIIgCIIgCIIgiG4Hue8RBJHSnH766Vi1ahVKS0sB8HhTS5cuxe23344///nPSEtLwwknnIBrrrmmRds7/vjjUV5ejoceegjl5eUYNGgQHnnkEQwcOLAdj4IgCIIgCIIgCKL7ITAzkApBEARBEARBEARBEARBdBDkvkcQBEEQBEEQBEEQBEF0OCRKEQRBEARBEARBEARBEB0OiVIEQRAEQRAEQRAEQRBEh0OiFEEQBEEQBEEQBEEQBNHhkChFEARBEARBEARBEARBdDgkShEEQRAEQRAEQRAEQRAdDolSBEEQBEEQBEEQBEEQRIdDohRBEARBEARBEARBEATR4ZAoRRAEQRAEQRAEQRAEQXQ4JEoRBEEQBEEQBEEQBEEQHQ6JUgRBEARBEARBEARBEESHQ6IUQRAEQRAEQRAEQRAE0eGQKEUQBEEQBEEQBEEQBEF0OCRKEQRBEARBEARBEARBEB0OiVIEQRAEQRAEQRAEQRBEh0OiFEEQBEEQBEEQBEEQBNHhkChFEMQ+wxjrlvveH1J13ARBEASRCtD3LJEIui4IovNCohRBdAPOO+88DBkyJCaNGzcO559/Pr766qtWb2/Pnj2YPXs2du/ebdVNmzYNN9xwQ6u3NWTIEDz88MOtWmflypW45557Wr2vZLN582acffbZMXX7cvwEQRBE92bdunW48sorMXHiRIwcORJHH300/vnPf2Lr1q3JHloMDz/8MIYMGdJh+1u3bh1mz57dYfvrDPz444+45JJLcPjhh2P8+PGYNWsWfvzxx5g+jDE8+eSTOPbYYzFy5Egcd9xxeP7555vdtqIouP/++3HUUUdh1KhROPHEE/HOO+/E9AkEArjnnnswbdo0FBYW4swzz8SaNWtafRzmtWJPw4YNw/jx4zFnzhxs3ry5xdtavnw5rrvuOgBAbW0trr/+enzzzTetHtO+cMMNN2DatGlN9nn11VcxZMgQ/P777y3ebkvWqaqqwlFHHYVdu3a1eLt2/H4/br31VkycOBGFhYW45JJLsG3btmbX++WXX3DxxRejqKgIkyZNwrx581BeXh7Tp6ysDP/85z8xdepUFBYW4tRTT21wLRHdFznZAyAIomMYNmwYbrnlFgCApmmoqqrCiy++iIsuugivvvoqBg8e3OJtffHFF/j444/bZFwvv/wyevXq1ap1HnnkERQVFbXJ/juSd999F999911M3b4cP0EQBNF9WbZsGe6//35MmjQJN954I/Ly8rBjxw68+OKLOOWUU7Bw4UL86U9/SvYwk8LKlSs7nTDXnuzYsQN/+ctfMGLECNx5550QBAHLly/HOeecg9deew0HHXQQAGDRokV47rnnMHfuXIwcORKffPIJbrvtNsiyjDPPPLPR7V933XX4/PPPce2112LgwIH4z3/+g2uuuQY+nw9HHnkkAODmm2/G6tWrcfXVV2PQoEH497//jYsvvhgvvPACRo8e3epjevnll62ypmkoLi7GAw88gHPPPRdvv/028vLymlx/69ateOyxx/DGG28AAH7++Wf85z//wWmnndbqsbQXRx11FF5++WX07NmzTbebnZ2NmTNn4sYbb8Szzz4LQRBatf61116LDRs24O9//zt8Ph8WL16M888/H2+//TYyMzMTrlNeXo4LLrgAvXv3xsKFCxEOh/H//t//wyWXXIJ///vfcDgcUBQFF198Merq6jB37lz07NkT7733Hq6++mooioKTTz65DY6eSGVIlCKIboLP58OYMWNi6o444ghMmDABr776KubNm5eUccWPqbvR3Y+fIAiCaDkffvgh7rvvPlx55ZW44oorrPqioiKcfPLJuPbaa3HDDTegoKCgVT82EanJc889B4/Hg8ceewxerxcAcPjhh2PatGlYsWIFbr75Zvz+++94+umncdNNN+Gcc84BAEyYMAElJSX47LPPGhWlvvnmG7z33ntYtmwZpkyZYq23Y8cOfPLJJzjyyCMRCoXwzjvvYPbs2bjgggsAAOPHj8fRRx+Nl156aZ9EqfjnorFjx6J3794499xz8dprrzVrCXfvvfdixowZyM/Pb/W+O4qcnBzk5OS0y7bPOeccPPLII/jggw9w7LHHtni97777Dh9++GHM5z1u3DgcffTReOGFF/DXv/414Xr//e9/UVVVhX//+9/o378/ACA9PR0XX3wxvvvuOxQVFeGjjz7Cpk2bsHLlSowaNQoAMHHiRBQXF+OJJ54gUYog9z2C6M54PB64XK4Gv6S88847OPXUU1FYWIiJEyfi5ptvRk1NDQBuPjx//nwAwNFHHx3jsheJRLBo0SJMnDgRY8aMwaxZs7Bjx44mx2B3X/vyyy8xZMgQrFmzBrNmzcLo0aMxceJE3HvvvdA0DQB3E9y9ezdee+21GDPm4uJiXHPNNSgqKsLo0aNxwQUX4KeffrL28/vvv2PIkCF46qmnMH36dIwePRqPPPIIhgwZgg8//DBmTD///DOGDBmCDz74AAAQDoexaNEiTJkyBSNGjMAJJ5zQwOR42rRpeOihh3DPPffgiCOOwKhRo3DRRRfht99+A8DN0hcvXtzgmOPd90pLSzF//nxMmTIFo0aNwumnn47//ve/Dc7Z888/j3/84x8oKipCYWEhrrrqqhhT6Z07d+Kyyy7D+PHjMXr0aJx55pltZt1GEARBJIfFixfjoIMOwpw5cxq0ORwO3HbbbZAkCY8//jgAYNasWTj11FMb9L388stx4oknWsvffPMN/vKXv2D06NEoKirCvHnzUFlZabW/+uqrGDZsGFauXImJEyeiqKgIW7ZsafF3zUcffYQTTzzRch17/fXXY9pb8t0XDoexZMkSTJ8+HSNHjsSxxx6LZcuWQdd1ANxt6rXXXsPu3bsxZMgQvPrqqwnP4cMPP4zp06fjgw8+wIwZMzBy5EicdNJJ+O6777B+/XqcccYZGDVqFGbMmNHADe3XX3/FpZdeikMPPRSHHnoo5syZ08BVatOmTbjiiitw+OGHY/jw4Zg8eTLuuOMOhEIhq09LvsdNd60vv/wy4XEAwEEHHYRZs2ZZghQAeL1e9OrVCzt37gQArF69Gi6XC6effnrMuv/617+aDB/w7rvvon///pZAAQCCIOCll17CP//5TwD8uU/Xdfh8PquPLMtIT09HVVVVo9tuLSNGjAAAK2zEww8/jD/84Q9YvHix5TJWU1ODX3/9FR999BFmzJgBgD9Xnn/++QCA888/H+edd561zaaedU2+//57XHTRRRg/fjwOPfRQXHbZZS12I3z11Vdx3HHHYeTIkTjxxBNj/i4SueK99tprOP74463+a9aswbBhwxpcxxs2bMBZZ52FkSNH4qijjsITTzwR0+50OnHcccfhscces+rM5+vG/iYA4LPPPoPX68WkSZOsupycHBx22GFNPj+Gw2EAiLkGsrKyAADV1dVW25lnnomRI0fGrHvQQQdZ1ynRvSFRiiC6CYwxqKoKVVURiURQVlaG++67D4qixJg0L126FNdccw3GjBmDhx56CHPmzMF7772H8847D6FQCEcddZT1a8nixYtx+eWXW+u+88472Lx5M+6++27ccsst+OGHH3D11Ve3eqzXXXcdxo4di0cffRQzZszAE088gZUrV1r7zMvLw5QpUyzT58rKSpx11ln48ccfcdNNN+G+++6Drus499xzG5jxP/zww7jkkkuwaNEinHLKKejfvz/efvvtmD5vvfUWsrKyMGXKFDDGMGfOHLz00ku48MIL8cgjj6CwsBBXX311g4fqZ599Ftu2bcPChQtxxx134IcffrAs0M444wzrgfDll1/GGWec0eC4y8vLcfrpp+Obb77B1VdfjYcffhh9+/bFnDlzLDN0kwceeAC6ruP+++/H9ddfjw8//BB33XUXAEDXdVx66aUIBoNYtGgRli5diqysLPz1r39tViQkCIIgOieVlZX44YcfMHXq1EbdcrKysnDEEUdYgs6JJ56IH3/8MebeX1tbi08++QQnnXQSAODrr7/GzJkz4Xa78a9//Qs33ngjvvrqK5x//vkxQoqmaVi+fDnuvPNOzJ8/HwceeGCLv2tuvvlmzJw5E4888gh69eqFG264AZs2bQLQsu8+xhguu+wyPPHEEzjjjDPw6KOPYvr06fjXv/5lhSa4/PLLMWXKFOTl5eHll1/GUUcd1ei53LNnD+6++25cdtllePDBB1FbW4u5c+fimmuuwRlnnIElS5aAMYarr77aOgfbt2/HWWedhYqKCtxzzz248847sWvXLpx99tmoqKgAwMW1c889F8FgEHfffTcef/xx/OlPf8Jzzz2HZ599NmYMTX2PA1EXr+HDhzd6HOeccw4uvvjimLodO3Zg8+bNlqXczz//jAEDBuDrr7/GKaecguHDh2PatGkxbnKJ2LRpEwYPHow333wTf/zjHzFs2DD88Y9/xOrVq60+6enpOOWUU/Dss8/i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vPjii/j5559x55134pBDDolZ76STTsLy5cshimIDN71rrrkGs2fPxrXXXosTTzzRmmVvw4YNMTPsxtNW3zUt+e478sgjMX78ePzzn//E3r17ccghh+Crr77C448/jlNOOcWawSsjIwPl5eX4+OOPMXToUPTs2bMVZ7dpLr/8cpx11lm49NJLcfbZZ8PlcuHll1/G6tWrLRelUaNGYenSpVi2bBnGjBmDHTt24LHHHoOiKK2OF1VZWYmdO3di0KBBjQpHd9xxByoqKnDrrbc2eM7z+XwYNGgQxo8fj6lTp2LhwoUIBoMYPHgwXn/9dXz77bdWbCgA2LlzJyorK61YVyeccAJWrFiB6667Dtdeey3y8/Px7LPPYs+ePXjwwQcBcAuwFStW4JJLLsGVV16J/Px8fPHFF1i+fDnOPfdcy71yz5492LNnD4YNG9as9fr+MHHiRLzwwgsx1l2mOPjRRx8hMzMThxxySIueda+99lpcdNFFmD17Ns455xxEIhEsW7YMiqJgzpw5bTZmc2a+6667Drfccgv+8Ic/YNOmTViyZAmAfRNa161bB4ALTQB/B9iyZQv69+/f6HPrYYcdhqKiIvz973/H3//+d2RlZeHhhx9Genp6jAfBli1boCgKhg0bBgC46qqrMGfOHFx11VU4/fTToSgKnnnmGezduxf33XcfAOD555/HN998gzPPPBO9evWKuU6BhvHViO4HiVIE0U346aefcOaZZ1rLLpcL/fv3x9VXX42LLrrIqjcfLFesWIGXX34ZWVlZmD59Ov72t79Zv6yOHz8eRxxxBO677z6sWbMGy5Yt69BjmTVrFu666y5cdNFFeOqppzBu3Di89NJLuO+++7BgwQKEw2EMHDgQd955Z4tN5k866SSsXr0aJ5xwQky9KIpYtmwZHnzwQTz22GOoqKhAfn4+LrzwwlY/lBx77LH4z3/+gxtuuAGnn346FixYENOel5eHF198Effddx/uuOMORCIRHHLIIVi6dCmOPvroFu/H5XJh+fLluO+++3DnnXeitrYWAwcOxG233YZTTz21VWMmCIIgOhcXXnghCgsL8cwzz+Cee+5BZWUl8vLyMHHiRNx5550Jp1g/5JBDUFBQgKqqKkyYMCGmbdKkSXjyySexePFizJ07Fw6HA8OHD8dTTz3V5MtiW33XtOS7TxAEPPbYY3jooYfw9NNPo7KyEv369cM111wT40536qmn4uOPP8acOXMwd+5czJ49u8XjaI5DDjkEzz//PB544AFcf/31YIyhoKAAS5YsscZ56aWXoqqqCs8++yyWLFmC3r1746STTrLGX1tba/1A1RwfffQR5s+fj2effRbjx49v0K4oCj766CMASOgqWVRUhOeeew4A8OCDD2Lx4sV46qmnUFlZiUGDBmHx4sUxbp5Lly7Fa6+9hl9++QUAj+f01FNP4f7778cDDzwAv9+PYcOG4emnn7biTPl8Przwwgu47777cPfddyMUCmHAgAG45ZZbcMYZZ1jbXrlyJRYvXoz//ve/zQYi3x+OPfZYLFmyBBs3brSC1g8ePBgzZszA888/j08//RRvvfVWi551J0yYgKeeegoPPfQQrrnmGjidTowbNw733HNPm08ac8IJJyAQCODJJ5/EqlWrMHjwYPzjH//AP/7xjwbxqVrCJ598glGjRllx6H788Uecf/75WLhwYZN/m4sXL8bdd9+NRYsWQdd1HHroofjXv/4VEx/u1ltvxe7du/G///0PAHD00Udj2bJlWLp0Ka644gqkpaVh1KhReOWVVyxx3LT6evnll614ZHbMa47ovghsXyPqEQRBEARBEARBEEQznHvuufjXv/7VYAa9tuayyy5DdnY2Fi5c2K77aUveeustDBs2LCbG1UcffYRLL70U//nPfxpYPjZFIBDA5MmTcc899zSI9UQQnRWKKUUQBEEQBEEQBEG0C19++SWCwWCjM8q1JVdffTXef//9lIqh+cYbb+CSSy7Bm2++iW+++QarVq3CLbfcgqKiolYJUgDw0ksvYfDgwa2ysCeIZEOWUgRBEARBEARBEES7sHv3bni93g6ZJRHgsyBu2rQp4YQAnZGqqircd999+OSTT1BZWYnc3Fwcd9xxmDt3LtLS0lq8ncrKSpx88sl47rnn2nR2aIJob0iUIgiCIAiCIAiCIAiCIDocct8jCIIgCIIgCIIgCIIgOhwSpQiCIAiCIAiCIAiCIIgOZ59FKUVRMGPGDHz55ZdW3a5duzBz5kyMGTMGxx9/PD777LOYdb744gvMmDEDo0ePxvnnn49du3bt+8gJgiAIgiAIgiAIgiCIlGWfRKlwOIxrrrkGmzdvtuoYY5gzZw5yc3OxatUqnHTSSbjiiiusmQ+Ki4sxZ84cnHrqqXjl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8lcUse8cDgeBQIBHHnmETp06AeZJ1BtvvCGhVAMtWbKEv/3tb3z22Wd4PB4GDRrErl27eOaZZySU2k9ut5vi4uKUdZFIRH4X7Yfy8nKuuuoqNm3axOuvv47X623qJh2SOnXqxNKlS8nMzERRFPr164eu6/zlL39h+vTpaJrW1E1sseTfhQPvjDPOYOzYsWRlZQHQt29fNm3axBtvvCEn/fVQ9Tu+vEf3T9XXs3fv3vL+3E/WWLzhcJibbrqJs846i1AolLKPvEfrr+rr+cMPPxzw9+hh32+lXbt2FBUVEYvF7HX5+fl4PB4yMjKasGUt14wZM3jxxReZNWsW48ePb+rmtEgffPABixcvZujQoQwdOpT333+f999/P2XsM1F/OTk5uN1uO5AC6N69Ozt27GjCVrVMv/zyC7m5uSm/yPv3709eXl4TturQ0K5dOwoKClLWFRQUVCs5F/UTCASYPHkya9eu5eWXX5bxOQ6yrKwsFEWxb/fs2ZNwOExJSUkTtqrlk38XDjxFUeyTKUuPHj3YtWtX0zSoBanpO768R/ddTa+nvD/3TUFBAYsXL05Z16tXL6LRKDk5OfIebaC6Xs9AIHDA36OHfSjVr18/HA5HykBny5YtY9CgQTLWzD6YM2cOb775Jo8++iinnHJKUzenxVqwYAHvv/8+ixYtYtGiRYwbN45x48axaNGipm5aizRkyBDC4TAbN260123YsCElpBL107ZtWzZv3pxSYbphw4aU8XvEvhkyZAgrV66koqLCXrds2TKGDBnShK1qmXRdZ9q0aWzbto0FCxbQu3fvpm7SIe2LL75g1KhRKX+JXrVqFVlZWTI2536SfxcOvCeeeIKLL744Zd3q1avp0aNH0zSohajtO768R/dNba+nvD/3zbZt25g2bVpKMPLLL7/QqlUrhg8fLu/RBqrr9VywYMEBf48e9qmL1+vljDPO4O6772bFihUsXryY+fPnc9FFFzV101qc9evX8/TTT3P55ZczfPhw8vPz7Uk0TKdOncjNzbWntLQ00tLSyM3NbeqmtUg9evTghBNOYPr06axevZovvviCuXPncv755zd101qccePG4XQ6uf3229m4cSMff/wxzz77LJMmTWrqprV4I0eOpEOHDkyfPp21a9cyd+5cVqxYwdlnn93UTWtx/va3v7F06VLuu+8+MjIy7N9FVbuY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wIGMHDmSqVOnppQrb9myhSuvvJJRo0YxZMgQzj33XD777LNa25GXl8cJJ5zAhAkTKC0trXW/n3/+mcmTJzNq1CiGDRvGlVdemVIuvnTpUvr06cOSJUu49NJLGTJkCGPGjGHWrFnE4/FqxysuLmbQoEE8+uijKetDoRDDhw/nmWeeqbUtQgghRFVz5syhR48eTJ06tdo2p9PJvffei6ZpPP/88wBceumlTJgwodq+V111Faeddpp9+/vvv+fCCy9kyJAhjBw5kltuuYXCwkJ7+8KFC+nfvz9vv/02Y8aMYeTIkaxbt67ev48//fRTTjvtNLvr2KJFi1K27969m+nTp3P88cczePBgzj77bP773/+m7BMOh3nqqac46aSTGDRoECeeeCJz585F13XA7Db17rvvsn379jq70T/55JOcdNJJfPTRR5x66qkMGjSI008/nR9//JHly5dzzjnnMHjwYE499dRq3dB+/fVXpkyZwrBhwxg2bBhTp06t1lVq9erVTJs2jaOPPpoBAwZw3HHHcd9991FRUWHv06dPH1577TX++te/MnLkSIYOHcq1116b0uXJ6q61dOnSGp8HQI8ePbj00kvtQArM717t27dny5YtACxevBi3283ZZ5+dct/HH3+cJ598stZjf/nll/h8Po499lh7XatWrTjqqKPsn3E0GkXXdfx+v72Pw+EgPT2doqKiWo/dUAMHDgRg+/btgPkz/P3vf8+cOXMYOXIkxx57LCUlJfz66698+umnnHrqqYD5ve2iiy4C4KKLLmLSpEn2MT/88EMmTJjA0KFDGTNmDHfeeSclJSUpj7u374V1WbhwIePHj2fQoEGcdtppKZ+Lmrrivfvuu5x88sn2/kuWLKF///7V3sc//fQT5513HoMGDeKEE07ghRdeSNnucrkYP348zz33nL3O+v5a19AS9fl512TDhg0MHz48pZLK6/UyePBgPv30U3vd6tWr6devX63HEYc3CaWEEAfVySefbHfhswQCAT7//HP7S4PFMAymTJnCV199xU033cS8efOYNm0aS5Ys4a677gJA13WmTJlCKBTi4Ycf5umnnyYrK4v/+7//Y/PmzdUePz8/n4svvpisrCxefPHFWiuzvvnmG84//3wAHnjgAe677z527NjBeeedV60rwE033cTw4cN59tlnOfXUU3nhhRd4++23qx0zKyuL3/3ud7z//vspA2x+9NFHBINBzjjjjPq9iEIIIQ57hYWF/PLLL4wdO7bWbjlZWVkcc8wxdqBz2mmnsXLlypTfj6WlpXz++eecfvrpAHz33XdcfPHFeDweHn/8cW677Ta+/fZbLrroopQgJR6PM3/+fO6//36mT59O9+7d6/37+M477+Tiiy/mmWeeoX379tx6662sXr0agIKCAs4++2y+//57rr/+ep588kk6derE1KlT7S5YhmFw5ZVX8sILL3DOOefw7LPPctJJJ/H444/b3w+uuuoqjj/+eHJycnjrrbc44YQTan0td+7cyYMPPsiVV17JE088QWlpKddccw033HAD55xzDk899RSGYXD99dfbr8HGjRs577zz2LNnDw899BD3338/W7du5fzzz2fPnj2AGa5dcMEFhEIhHnzwQZ5//nlOOeUUFixYwCuvvJLShsceewxd13n00Ue5+eab+eSTT3jggQfs7VYXrwEDBtT6PCZOnMhll12Wsm7z5s2sXbvWrpRbtWoVubm5fPfdd5x55pkMGDCAcePGpXSTq8n69evp3LkzmqalrO/atSsbN24EID09nTPPPJNXXnmFH3/8kdLSUubPn8/atWtTQs/9ZT1e165d7XV5eXl89tlnPPbYY0yfPp3MzEzef/99cnJy7GqcAQMGcOeddwLme9B6rzz99NPccMMNHHnkkcyePZupU6fy73//m0mTJtk/74Z8L6xqx44dzJ07l2uvvZYnn3wSRVG45ppr7PdJVYsWLeLWW29l2LBhPP3004wfP56rrrqqxj943n333ZxyyinMnTuXoUOHMmvWrGrDYZx00kn88ssv9us2YMCAvX4m6vPzrkl2djZ5eXnV1m/dutUObMPhMBs3bmT79u2cfvrpDBw4kLFjxzJv3jwZgF4A0n1PCHGQnXDCCXi93pQufB999BGtW7dm+PDhKfvu3r0br9fLLbfcwogRIwCzDHzLli32l6c9e/awYcMG+8snwODBg5kzZw6RSCTleEVFRVxyySV4PB5efPHFWvvDAzzyyCPk5uYyd+5c+xfysccey+9//3tmz57NE088Ye97zjnn2H+lHj16NIsXL+bTTz+tcVD3s846iw8//JClS5dy9NFHA+aXj2OOOYYOHTrU+3UUQghxeLOqRDp16lTnfrm5ufz3v/+lpKSEE088kXvuuYd//OMf9u+t//znP8TjcfsPQ4888gjdu3fnueees3//DRkyhFNOOYV33nmHCy64wD72lVdeaZ/Y5ufn1/v38X333cdvfvMbwDzJ/f3vf8+3335L3759efHFFyksLOTf//63/dyOP/54Lr74Yh5++GFOPfVUvvjiC77++mseffRRe7ysMWPG4PF4eOKJJ7jooovo3bs3rVq1wuVy7bWLUCgU4q677rLbtG7dOh555BHuv/9+u6IoGAxyzTXXsHHjRvr168ecOXPwer289NJLdmXQ6NGj+d3vfscLL7zALbfcwq+//kq/fv144okn7H2OOeYYvvrqK5YuXZrS9eyII45g5syZ9u0VK1akVJbvSxeviooKbrnlFlwuFxdeeCFghpm7du3ipptuYtq0afTo0YMPP/zQDmtq675XVlaWUgFlSUtLo7y83L59ww03sGbNmpTvQNdccw0nn3xyg9puicViKc9n9erVPPDAA6Snp6cEXbFYLOX7IphB0qBBg+zQ1u/306tXLwB69epFr169KCkp4ZlnnuFPf/qT/RqA+fO44IIL7Pd8Q74XVqXrOk899RQ9e/YEwO12c/HFF7N8+XJ++9vfVtv/iSeeYOzYsdx3330AHHfccTidTh555JFq+95www12WHbkkUfy0Ucf8c033zB27Fh7n0GDBgGwZMkSunfvjt/v3+tnor4/76rOOussbr/9du6//34uu+wyVFXlpZdeYt26dfbP8tdffyUWi7Fx40auv/56MjMz+e9//8usWbMoLS21u/iJw5eEUkKIg8rj8TBu3LiUUOqDDz7gD3/4Q7W/9LZr145XXnkFwzDYtm0bmzdvZsOGDfzwww/2F9w2bdrQq1cv7rjjDr788kuOPfZYfvOb3zB9+vRqj33ZZZexdu1aXn75ZbKzs2ttYzAY5Oeff2batGkpfyHKyMhg7Nix1cqWhw4dmnK7ffv2BIPBGo99zDHH0LFjR/7+979z9NFHs3PnTpYsWcKsWbNqf9GEEEKIKqyKAqfTWed+1u8xwzDw+Xz87ne/48MPP7RDqQ8++IDRo0fTrl07QqEQP/30E5MnT8YwDPskskuXLvTs2ZOvvvoqJZRK7n7TkN/HycFB586dAezu9N9++y1Dhw6tFraddtppTJ8+nQ0bNvDtt9/icDg46aSTqu3zxBNP8O233zZ4DK1hw4alPBcgZQyk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tXbF3q+//so999xT7WqWH374IZ06dbK7N4rDl1RKCSEaxcknn8yUKVNQVZXbb7+9xn0GDx4MwL333stZZ51FSUkJr732mn2FnmAwSP/+/fF4PNx8881cffXVtGnThq+//ppVq1bZl/2t6rbbbuOLL77grrvuYt68eTXuc+ONNzJ58mSuuOIKJk6cSDQaZe7cuUQikRovvd1QZ599NjfccAM9e/ZMGbNCCCGEqK/jjjuOW2+9lYcffphVq1Zx1lln0bZtW7Zt28Ybb7zBqlWruP/+++nbt2/K/U4//XTmz5+PqqrVuundcMMNXHHFFdx4442cdtpp9lX2fvrpJ6666qpa27Ivv49rcskll/Dee+9x8cUXM23aNLKysli0aBHffPMNDzzwAKqq8pvf/IZRo0Zx++23s2vXLvr27cu3337L888/z5lnnmkPZp2RkUFBQQGfffYZ/fr1o23btg14det21VVXcd555zFlyhTOP/983G43b731FosXL2b27NmA+T3m6aefZu7cuRx55JFs3ryZ5557jkgk0uDxogoLC9myZQu9evWqNTi677772LNnD/fccw+BQIDly5fb26xBvkeNGsXYsWOZOXMmoVCI3r17s2jRIn744Qeefvppe/8tW7ZQWFhod6M66qijGDlyJH/5y1/4y1/+QlZWFk8++STp6en2QNtnn302r776Kpdffrn9B8Wvv/6a+fPnc8EFF9jdK3fu3MnOnTvp378/LperQa9DQ4wZM4bXX38dwzDsLnNWOPjpp5+SmZlJ3759ueKKK3jqqadwOp2MHTuWbdu28cQTT9CrVy/OPPNM4OB/L7RYV+a76aabuOuuu/j973/P6tWreeqpp4B9C1qt3gXHHnssYFZQrlu3jq5du9ZalVSfnzeYFwWIRCJ2FdRpp53G3Llzue6665g8eTJ5eXk8+OCDDBs2zB6Yfvz48fbFAK677jratm3LP/7xDz7++GNmz559UMNk0TJIKCWEaBTHHHMMGRkZdOjQodYy4FGjRnHnnXfy4osv8q9//Ys2bdowatQo5syZw9SpU1m2bBnHH3888+fPt6+SU1paSrdu3bj33ntrrUBq27YtN9xwA/feey+LFi3ijDPOqLbP6NGjefHFF5k9ezY33HADLpeLESNG8NBDDzV48NSaHH/88SiKIlVSQggh9ssll1zC0KFDefnll3nooYcoLCwkJyeHMWPGcP/999sBTbK+fftyxBFHUFRUxOjRo1O2HXvsscybN485c+ZwzTXX4HQ6GTBgAC+++GKd47y43e4G/z6uSU5ODm+88QaPPPII9913H9FolL59+/L000/bVypTFIXnnnuO2bNn89JLL1FYWEjnzp254YYbUrrTTZgwgc8++4ypU6dyzTXXpFztbn/17duX1157jccee4ybb74ZwzA44ogjeOqpp+x2TpkyhaKiIl555RWeeuopOnTowOmnn263v7S0lIyMjHo93qeffsr06dN55ZVXGDVqVLXtkUiETz/9FKDGrpIjR45kwYIFgHl1tzlz5thXOuzVqxdz5sxJ6eb59NNP8+6777JmzRp73Zw5c3jwwQd5+OGH0XWdYcOG8fjjj9td4Px+P6+//jqPPPIIDz74IBUVFeTm5nLXXXdxzjnn2Md5++23mTNnDv/9738PalXMiSeeyFNPPcWKFSvsPwD27t2bU089lddee40vvviCf/zjH3aI+uqrr/LWW2+RlZXFSSedxHXXXWdXER7s74XJ/vjHPxIMBpk3bx7vvPMOvXv35q9//St//etfq41PVR+ff/45gwcPtsehW7lyJRdddBEzZ86s87O5t583wD333MP27dv5+OOPAfPzO2/ePB588EGmTZtGRkYGEyZM4Nprr7Wr1LxeLy+++CKPPfYYs2fPpqioyB68Pnn8M3H4Uox9HVFPCCFEvX344YfcfPPNfPbZZ7UO2CmEEEIIcSi64IILePzxx6tdQe9Au/LKK8nOzmbmzJkH9XEOpH/84x/0798/ZYyrTz/9lClTpvD3v/+9WuVjXYLBIMcddxwPPfSQBD6ixZBKKSGEOIgWL17Mzz//zJtvvsmECRMkkBJCCCHEYWXp0qWEQqFaryh3IF1//fVMnDiRq6++utHHtNpX7733Ho899hjXXXcdHTp0YPPmzcyePZuRI0c2KJACePPNN+ndu7ddvSdESyCVUkIIcRC99NJLPP744wwfPpzHH398r5fVFUIIIYQ4lGzfvh2fz9coV0kE8yqIq1evrvGCAM1RUVERjzzyCJ9//jmFhYW0adOG8ePHc80115CWllbv4xQWFnLGGWewYMECcnNzD2KLhTiwJJQSQgghhBBCCCGEEI1OhroXQgghhBBCCCGEEI1un0OpSCTCqaeeytKlS+11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EEIIIRqdhFJCCCGEEEKIQ4ZhGE3dBNHMyHtCiOZLQikhRIpJkyYxadKkg/4427Zto0+fPixcuLBB91u6dCl9+vRh6dKlB6llzcO4ceO49dZbm7oZQgghmqlly5Zx9dVXM2bMGAYNGsRvf/tbbr/9dtavX9/UTUvx5JNP0qdPn0Z7vGXLlnHFFVc02uM1BytXruTyyy/n6KOPZtSoUVx66aWsXLkyZR/DMJg3bx4nnngigwYNYvz48bz22mt7PfZjjz1Gnz59qk3z5s2z93n77bdr3Ofee+9t0POYNGlStWMMHDiQE044gXvuuYeSkpJ6H+vKK6/k7bffBmDt2rWcf/75DWrL/qjPd7hbb72VcePGNei49bnPkiVLOP3004lGow06tmXz5s1ceeWVjBgxglGjRnHXXXcRCAT2er+FCxdy6qmn2v8WzZkzh1gsVuv+Dz74YKOcb4iWwdHUDRBCCCGEEELU39y5c3n00Uc59thjue2228jJyWHz5s288cYbnHnmmcycOZNTTjmlqZvZJN5+++1mF8wdTJs3b+bCCy9k4MCB3H///SiKwvz585k4cSLvvvsuPXr0AODhhx9mwYIFXHPNNQwaNIjPP/+ce++9F4fDwbnnnlvr8VevXs3IkSO58cYbU9Z37NjRXl61ahXdu3fnwQcfTNmnTZs2DX4+/fv356677rJvR6NRVq5cyaOPPsqqVat44403UBSlzmMsXLiQXbt2cdZZZwHwr3/9ix9//LHBbTmYrrrqKi666KIDftzRo0fTqVMnnn76aa699toG3be0tJQ///nPtGnThgcffJDCwkJmzZrFtm3bUkLIql5++WUeeOABxo8fz1/+8heKioqYPXs2a9as4cknn6y2//z583nxxRcZOXJkg5+fODRJKCWEEEIIIUQL8cknn/DII49w9dVXM23aNHv9yJEjOeOMM7jxxhu59dZbOeKII+jdu3cTtlQ0hgULFuD1ennuuefw+XwAHH300YwbN45XX32VO++8k23btvHSSy9xxx13MHHiRMAML3bs2MGXX35ZZyi1atUqJkyYwJFHHlnnPoMGDapzn/ry+/3VjnPUUUdRXl7O7Nmz+emnn+p8nIqKCv6//+//46677kJVm2+noK5dux60Y//f//0fEydO5Pzzz6dt27b1vt8bb7xBcXExCxcupFWrVgC0a9eOK664gmXLljF8+PBq94nH4zz99NOMGTOG2bNn2+v79+/PH//4R7766ivGjBkDwNatW3nooYf4+OOPSU9P389nKQ4lzfeTKoRo1r766ismTpzI8OHDGTVqFDfeeCM7duxI2WfDhg1MmzaNkSNHctRRRzFlypRa/3ppGAbTp09n8ODBfPnll/b6N998k/HjxzN48GAuvPBC8vLyqt1306ZNXHPNNYwZM4YjjzySSZMmsWzZMgCKi4vp378/L730kr3/jh076NOnD3/5y1/sdbquM2rUKJ577jm7a+E///lPrrnmGoYOHcrIkSO5/fbbCQaDdb4uu3fvZvr06Rx//PEMHjyYs88+m//+978p+/Tp04fXXnuNv/71r4wcOZKhQ4dy7bXXUlBQUOMxzzrrLM4777xq6y+++GIuueSSOtsjhBDi0DJnzhx69OjB1KlTq21zOp3ce++9aJrG888/D8Cll17KhAkTqu171VVXcdppp9m3v//+ey688EKGDBnCyJEjueWWWygsLLS3L1y4kP79+/P2228zZswYRo4cybp169iyZQtXXnklo0aNYsiQIZx77rl89tln1R7v008/5bTTTrO7ji1atChle31+f4bDYZ566ilOOukkBg0axIknnsjcuXPRdR0wuze9++67bN++vc4hAp588klOOukkPvroI7vL0emnn86PP/7I8uXLOeeccxg8eDCnnnoqS5YsSbnvr7/+ypQpUxg2bBjDhg1j6tSpbN26NWWf1atX///t3XeYFFW+PvC3UofpnsTMMOTsCAICorCKLuLdq97VNaBeXbPgyq5iQq+Ka8BVwLBmwZxx1Z9huaZ1V9a0rijKFbNIzkxOnaq6qs7vj1NVXdXTMwwDTE/PfD889VTVqaru6qZ7pvud7zmF2bNn4xe/+AVGjx6NI444ArfddhsSiYSzT3s+C7z++uu7HLJg2LBhmDFjhhNIAUBeXh769OmDzZs3AwCWLVsGv9+PU0891XPsfffdl7GSxVZXV4fKykqMGjWq1X0YY1i9enWb++wNY8aMAQDnc+A555yDq6++GpdddhnGjx/vfB567bXXoKoqpk2bBoD/Xz/00EMA+HNuP95dvZZs77zzDqZPn44JEyZgypQpuOmmm9rVjTCZTOLOO+90PpvOmDEDmzZtcrand8VLJpP485//jF/+8pc48MADMXPmTCxduhT7778/tm7d6rnt119/HccccwzGjh2LE044ocX7bezYsejXrx+efvppp83uRpt+W26ffPIJJk6c6ARSAHD44YcjFArh448/znhMTU0NGhoacOSRR3raKyoqUFxcjA8//NBpW7hwITZt2oRnn312n79eSG6hUIoQstuWLl2KGTNmoG/fvrjnnnswd+5cfPXVVzj99NNRW1sLAKisrMTpp5+OjRs3Yt68ebjrrrtQU1OD8847Dw0NDS1u87bbbsNbb72Fhx56CIcffjgAYMmSJbj55psxdepULF68GOPGjcONN97oOW7t2rWYPn06tm7dihtuuAF//vOfIQgCzjvvPKxYsQJFRUUYP348Pv30U+cY+wPml19+6bR9/fXXLX6p3nzzzU4J9MyZM/Hqq6/i4YcfbvV5qampwamnnoovv/wSV155JR588EH0798fl1xyCd544w3Pvvfeey9M08Q999yDa665Bh988AEWLFiQ8XZPPfVUfPXVV54PMzt27MDnn3+e8YsGIYSQ7qmurg7fffcdpk2b1moXpqKiIhx22GFOoHPCCSfg+++/9/wOaWpqwscff4wTTzwRAPDFF1/g/PPPRyAQwH333Yfrr78eK1aswLnnnusJUgzDwFNPPYX58+dj7ty5GDp0KGbNmoV4PI4777wTixcvRlFREf7whz947g8AbrrpJpx//vl4+OGH0adPH1x33XX46aefALTv9ydjDL///e/xxBNP4LTTTsMjjzyCY489Fvfdd5/T3eviiy/G1KlTUVZWhpdffrnFF2W3nTt34vbbb8fvf/973H///WhqasJll12GOXPm4LTTTsOiRYvAGMOVV17pPAcbNmzAGWecgdraWtxxxx2YP38+tmzZgt/+9rfO55+qqiqcddZZiMfjuP322/H444/juOOOw/PPP4/nnnvOcw67+ixw5JFH4uWXX8bo0aNbfRxnnnkmLrzwQk/bpk2bsGbNGqdS7scff8TgwYPxxRdf4OSTT8bo0aNx1FFH4eWXX271dgE4/z8ffvghpk2bhtGjR+Okk07yhCCbN29GNBrFt99+i2OOOQajR4/OGDruqQ0bNgAABg4c6LT97W9/QygUwsMPP+w8B2+88QaOPPJI+Hw+AMBpp53mhHEvv/wyTjvttHa9lgBg8eLFmDNnDsaPH48HHngAl1xyCf7+97/jnHPO8bwvMnnnnXewZs0a3H777bj55pvx3Xff4corr2x1/5tuugnPPvsszj77bCxatAilpaUtPvMC/PPfY489hssvvxwPPvggBEHAZZdd5rz+bMceeyzeeustZ/20007Dyy+/3Gbl1Lp16zB06FBPmyRJGDBggPP8pysoKIAsyy3+aNzY2IimpiZPYHvFFVfgjTfewCGHHNLqOZAeihFCiMvZZ5/Nzj777Fa3G4bBpkyZwmbMmOFp37RpExs9ejS74447GGOM3X777ezAAw9kVVVVzj47duxgRx55JPvwww/Zli1bWEVFBXvttdfYn//8ZzZ69Gj2wQcfOPuapskOPfRQdsUVV3ju56abbmIVFRXss88+Y4wxdvnll7PJkyez5uZmZ59kMsmOOeYYdsoppzDGGHv00UfZ+PHjmaZpjDHGrr76anbyySeziooKtmXLFsYYY/fffz+bNm0aY4w553b11Vd77vucc85hxx9/fKvPzZ133slGjx7Ntm7d6mk/77zz2JQpU5hhGIwxxioqKthvf/tbzz7XXXcdGz9+vLM+bdo0du211zLGGGtqamIHHnggu//++53tDz/8MJs4cSKLx+Otng8hhJDu5ZtvvmEVFRVsyZIlbe53++23s4qKCtbQ0MCi0SgbP348e+ihh5ztr7zyChs5ciTbuXMnY4yx008/nR1//PFM13Vnn/Xr17NRo0Y59/Xaa6+xiooKtnTpUmefqqoqVlFRwd544w2nrampiS1YsID9/PPPjDHGHnjgAVZRUcE++ugjZ59NmzaxiooK9uyzzzLG2vf788MPP2QVFRXsrbfe8uyzaNEiVlFR4dzftdde6/w+b02mc3r00UdZRUUFe+WVV5y2d999l1VUVLAffviBMcbYnDlz2GGHHeb5zFFfX88mTpzIbr/9dsYYY//617/YWWed5dmHMcaOP/54z2en9nwW6Ih4PM5OP/10Nn78eOf5vPDCC9nkyZPZL37xC7ZkyRL26aefshtuuIFVVFSwl156qdXbeuKJJ1hFRQWbOXMm++STT9j777/PZsyYwUaOHMk+/vhjxhhjf/vb31hFRQU79dRT2fvvv88+/vhjNmfOHFZRUcFefvnl3Tr3s88+m5111lksmUw6U01NDXvnnXfYpEmT2Omnn85M03T2HTduHFNV1Tm+ubmZjRo1ij399NOe27X/v23teS01NDSwMWPGsBtvvNGzzxdffLHL9+C0adPY1KlTnc+djDF27733soqKCud14X6dbtq0ie2///7sqaee8tzOjBkzPJ9Vr732WlZRUcHWrl3r7PPpp5+yiooKtmzZMs+x7733Xot9d2XMmDHsnnvuadF+xhlnsAsuuKDV46666io2evRo9sorr7CGhga2bt06NmPGDDZmzBh27rnnZjxmV983SM9ClVKEkN2yYcMGVFdX4/jjj/e0Dxo0CBMmTMCKFSsA8KvfjB8/HmVlZc4+ffr0wQcffICpU6c6bS+88AIee+wxHHfccZ6/aK5fvx61tbVO+bXtv/7rvzzrK1aswLRp0xAOh502WZZx3HHH4bvvvkM0GsXUqVMRi8Xw9ddfAwA+++wznHfeeQgGg/jiiy8AAB9//HGLv6imj1nQp0+fNrvvrVixAhMmTED//v097SeccAKqq6uxfv36Nm87Ho9nvN38/HwcffTRnmqrv/71r/j1r3+NQCDQ6vkQQgjpXph1WXtFUdrcT5IkZ/+8vDz86le/wjvvvONsf/vtt3HooYeivLwc8XgcX3/9NaZOnQrGGHRdh67rGDhwIIYPH45///vfntt2d7spLS3FiBEjcOONN+Laa6/Fm2++CdM0MXfu3BbjWR188MHO8oABAwDwii2gfb8/V6xYAVmWceyxx7bYx76N3XXQQQd5HgsAjBs3zmkrKirynOdnn32GSZMmIRAIOM9TOBzGwQcf7FRkH3744ViyZAn8fj/Wrl2Lf/7zn3j44YdRV1cHTdM89787nwXaIxKJYNasWfj2229x1113Oc9nMplEfX09brnlFpx11lk49NBDceutt+Lwww93urZl8l//9V945JFH8Oijj2LKlCmYNm0aHnnkEQwdOtQZP+iQQw7BI488gmeffRbTpk3DEUccgbvvvhuHHXYYHnjgAec1215ffPEFRo8e7UyHHXYY5syZgzFjxuDuu+/2VAgOGzbMqYgCeBWRYRjO66s17XktrVq1Cpqmtfi8e/DBB6N///67fL0deOCBnvdp+mve7fPPPwdjrMX5pN83ABQXF2P48OEtbre5udmzn93eVne9dG39X7U1uPwtt9yCE044ATfccAMmTZqEk08+GRMmTMDo0aMRDAbbff+k56KBzgkhu8XuepfpiiqlpaX44YcfnP129aEA4KXhhx9+ON566y2cd955OOCAAwDA6a9fXFzs2d8dctn7tXYujDFEIhHsv//+6Nu3Lz799FMUFxejqqoKhx12GA466CCsWLECU6dOxffff9/iKiXpv0hFUWzzF3ZjY6OnrNx9LoD3g8ju3vapp56KN954A19++SUkScLGjRtxxx13tLo/IYSQ7scOGbZt29bmflu2bEEoFHJClRNPPBFvvPEGfvrpJ5SWluLzzz93uok1NTXBNE08/vjjzjhUbn6/37PuHrvIvtLbww8/jPfeew9Lly6Foij41a9+hVtuuQWFhYUZj7MHoLZ/77Xn92djYyOKi4udwM1mfy5I/1LeHu4/aNna+hLd0NCAd955xxPw2exxeOzueC+88AJisRj69u2LAw88sMXzmOm+dvVZoC07duzArFmzsGHDBtx777341a9+5WwLhUIQBMHzR0EAOOKII/DJJ5+gpqYm42epfv36ea6yB/BAdMqUKXjppZcAACUlJS3+gAgAU6dOxaeffoqampoWn93aMnr0aNxyyy0A+OvL7/ejb9++Gf+vQqGQZ91+Dbhfa5m057Vkfw5t7TPmrl5v6edgv+bTx6wC4IzdVlJS4mlPX890u3ZYlH679mtrd94X4XAY0Wi0RXskEkF5eXmrx4VCISxYsAB//OMfsX37dvTr1w+hUAivvvoqBg8e3O77Jz0XhVKEkN1if8DNNCh3dXW1EyLl5+d7Bki1LV++HAMGDHB+iV5++eU499xzcdxxx+GGG27AK6+8AkmSnNtJ7yOfPh5VYWFhq+cCpEKtqVOnYvny5SgpKcHQoUNRVlaGyZMn4//9v/+HTz75BIFAAJMnT96NZ6KlwsJC537bOpeOmDRpEgYNGoR3330Xoihi2LBhe+UqN4QQQnJHSUkJxo8fj7///e+4/PLLM15dLBKJ4N///rdnEOVDDz0UZWVl+Nvf/oaysjL4/X4cffTRAFKBxfnnn4/jjjuuxe3tqtKhvLwc8+bNw80334yffvoJ7777Lh5//HEUFxd7xudpS3t+fxYWFqK+vh6GYXjChKqqKmeffS0/Px+HHXZYxouMyDL/WvXYY4/hmWeewS233IKjjz7aucpY+iDje9Pq1asxc+ZMqKqKp556qsWYPYMHDwZjDMlk0hOO6boOAK1WXX/00UdIJBI45phjPO2qqjoh3JdffoktW7bg5JNPbrGPJEmeYLI9QqEQxo4du1vH2OzXQKZqJLf2vJbs866pqcGwYcM8x1dXV2cMUTvKDnxqamo8IWCmz9Ht1dofd9sydOhQZ3B8m2EY2Lp1q/PzIpMPPvgABQUFmDhxolMhWVtbi507dzp/bCakLdR9jxCyW+xAxz14IsD/Krtq1SqnFP7ggw/G119/7fmFWltbiwsvvNAzQGZpaSkCgQBuuukmfP/9986VQoYMGYK+ffvi3Xff9dzPBx984Fk/5JBD8MEHHyASiThthmHg7bffxtixY52y7iOPPBLffvstPv74Y0yaNAkAv2Ty1q1b8dJLL2HKlCmeEvCOOOSQQ/DVV1+1+Av2G2+8gbKysj36a5EgCJg+fTqWLVuG999/v8WHP0IIIT3D7NmzsWHDBtxzzz0tthmGgZtvvhmJRMIz+LUkSfjNb36DDz74AO+++y5+9atfORUX4XAYBxxwANavX4+xY8c603777YcHH3ywzSu/ffXVVzjssMPwzTffQBAEjBo1CldeeSUqKioyXi23Ne35/Tlp0iTout7ic4Hdtd2+XH2moG5vsa84OGrUKOd5GjNmDJ555hm89957APjwBSNGjMApp5ziBFKVlZX4+eefM1bJ7KkdO3bgggsugCAIePHFFzMOIm1XSL399tue9vfffx/7779/xiokAHj33Xcxd+5czx8EY7EYPvzwQ+cPeZ999hmuu+46z0DYpmni73//OyZMmLDHn612R3l5OSRJws6dOz3t6a+J9ryWxo0bB5/P1+Lz7pdffont27d7un7uqYkTJ0KSJOc1ZPvHP/7R4dusrKwEgBaVbm2ZMmUKvvjiC89n908++QSxWAxTpkxp9biXXnoJd955p6ft2WefhSRJGavoCElHlVKEkBZ27tyJZ555pkV7RUWF07d/7ty5uOqqq3DCCSegvr4eDz30EAoLC52/Hp5//vlYunQpLrzwQsyaNQuKojhX3PnNb37Topx46tSpOPbYY/Hggw/imGOOwcCBA3H11Vfjqquuwg033IBjjz0Wq1atwosvvug5bvbs2fj4449x7rnn4qKLLoKiKFiyZAm2bNmCJ554wtnvF7/4BURRxIcffuh8kB89ejRCoRBWrlyJ+fPn7/HzdsEFF+CNN97A+eefj9mzZ6OoqAhLly7FZ599hgULFuzxB+Xp06c7lzK2r5hECCGkZzniiCNw3XXX4c4778SPP/6IU045Bb1798bWrVvx4osv4scff8T8+fMxcuRIz3EnnnginnrqKYii2KKb3pw5c3DRRRc5v9ftq+x9/fXXuPjii1s9lwMOOACBQADXXHMNLr30UpSWluLTTz/Fjz/+iHPPPbfdj6k9vz9/+ctfYvLkybjhhhtQWVmJkSNHYsWKFXj88cdx8sknY8SIEQD41cBqamrw0UcfYdSoUW1ebWx3XXzxxTjjjDMwa9Ys/Pa3v4Xf78fLL7+MZcuWOWMsHXjggVi8eDEee+wxjB8/Hps2bcKjjz4KTdN2e7youro6bN68GSNGjGg1OLrttttQW1uLW265BZFIBKtWrXK2hcNhjBgxApMnT8a0adOwcOFCxONx7Lfffli6dCn+7//+D4sXL3b237x5M+rq6pxK7AsvvBDvvvsufve732HWrFlON894PI5LL70UAHDGGWfgpZdewu9//3tcfvnlCAaD+Mtf/oKff/4ZL7zwgnPba9euhaZp+7RyJi8vDwcddBBWrlyJ888/32kvKCgAALz11lsYN25cu19LF110ERYtWgRFUTBt2jRs3boV999/P0aMGLFX/zg4cOBAnHLKKbjnnnuQTCYxcuRIvPfee84fYjvy+XHlypUYMGCAczW9nTt3OpVLrQWFZ555JpYsWYILLrgAs2fPRkNDA+666y788pe/9IRwq1atQq9evTBo0CAAwDnnnIOZM2diwYIFOOqoo7B8+XI8+uij+N3vfufsQ0hbKJQihLSwefNmLFy4sEX7qaeeisMOOwzTp09HKBTCo48+iksuuQThcBhHHHEE5syZ4/TH79u3L/7yl7/grrvuwnXXXQefz4fJkyfj3nvvRWFhYcY+7tdffz0++eQT3HjjjXjmmWdw/PHHQxRFLF68GP/7v/+LiooK/OlPf8KcOXOcY/bbbz/85S9/wT333IO5c+dCEAQceOCBeO655zyDqgaDQUyePNlTKSXLMg4++OCMg5x3RFlZGV588UXcfffduO2225wPFosXL8Z//Md/7PHtl5eXY+TIkSgtLW2zbz8hhJDu7YILLsCECRPw7LPP4o477kBdXR3KysowZcoUzJ8/3/lS7TZy5EhUVFSgvr4ehx56qGfb4YcfjieffBIPPfQQLrvsMiiKgtGjR+Ppp59us6u43+/HU089hbvvvhvz589HU1MThgwZgj/96U+YPn16ux9Pe35/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euuteO+99xAMBnHmmWfikksu8XQ3Ie2zdu1azJ8/H9988w169eqFs846C+eddx49lx2w//7747nnnsPkyZMBAJs2bcIf//hHfP311xg8eDCuv/56HHbYYVk+y9zgfi5nzpyJTz75pMU+kyZNwvPPP5+Fs+v+1qxZgwULFmDVqlUIhUI444wz6GdsJ6KfJdmX/n+wbNkyPPDAA9i4cSP69++PK6+8EkcffXSWz7L72NX3DnoP7Hu7+j+g90DnqKysxK233orly5cjGAzi7LPPxqxZsyAIQs68DyiUIoQQQgghhBBCCCGdrsd33yOEEEIIIYQQQgghnY9CKUIIIYQQQgghhBDS6SiUIoQQQgghhBBCCCGdjkIpQgghhBBCCCGEENLpKJQihBBCCCGEEEIIIZ2OQilCCCGEEEIIIYQQ0ukolCKEEEIIIYQQQgghnY5CKUIIIYQQQgghhBDS6SiUIoTkjP333x9XXXVVi/bXX38dRx11VBbOiBBCCCGEEEJIR1EoRQjJKW+99RaWL1+e7dMghBBCCCGEELKHKJQihOSU/v37409/+hM0Tcv2qRBCCCGEEEII2QMUShFCcsoVV1yByspKPPnkk63us3PnTlx++eWYNGkSJk+ejNtuu80JsV5//XWcc845eOCBBzB58mQcfPDBWLhwIRhjzvEvvfQSjjrqKEyYMAHnnHMOVq9evc8fFyGEEEIIIYT0NBRKEUJySnl5OS677DI88sgj2LJlS4vtmqbhvPPOQzwex/PPP4/77rsPH374Ie68805nn6+++gobNmzAiy++iBtvvBHPPfccPv30UwDA+++/j4ceegg33ngj/vrXv2LixIk499xz0djY2GmPkRBCCCGEEEJ6AgqlCCE555xzzsHgwYMxf/78Ftv+9a9/obKyEnfddRf2339/HHroobjpppvw4osvIhqNAgAMw8Ctt96KYcOG4cQTT8TIkSPx7bffAgCeeOIJzJo1C9OmTcOQIUNwxRVXoH///njjjTc69TESQgghhBBCSHcnZ/sECCFkd0mShHnz5uHMM8/EsmXLPNvWrVuHIUOGoLCw0Gk76KCDoOs6Nm/eDAAoKSlBOBx2tofDYei67hx/11134Z577nG2q6qKjRs37sNHRAghhBBCCCE9D4VShJCcdNBBB+GUU07B/PnzceGFFzrtfr+/xb6GYXjmPp+vxT72mFKGYeD666/HoYce6tnuDrEIIYQQQgghhOw56r5HCMlZV199NWKxmGfQ86FDh2Ljxo1oaGhw2latWgVZljFo0KBd3ubQoUOxc+dODB482JkeeeQRrFq1ah88AkIIIYQQQgjpuSiUIoTkrOLiYlx99dXYtm2b0zZlyhQMHDgQ11xzDVavXo3PPvsMt956K44//ngUFBTs8jYvuOACPPvss1i6dCk2b96Mu+66C3/7298wfPjwfflQCCGEEEIIIaTHoe57hJCcduqpp+K1115DVVUVAD7e1OLFi3Hrrbfiv//7vxEKhfCb3/wGc+bMadft/frXv0ZNTQ0eeOAB1NTUYMSIEXj44YcxZMiQffgoCCGEEEIIIaTnEZg9kAohhBBCCCGEEEIIIZ2Euu8RQgghhBBCCCGEkE5HoRQhhBBCCCGEEEII6XQUShFCCCGEEEIIIYSQTkehFCGEEEIIIYQQQgjpdBRKEUIIIYQQQgghhJBOR6EUIYQQQgghhBBCCOl0FEoRQgghhBBCCCGEkE5HoRQhhBBCCCGEEEII6XQUShFCCCGEEEIIIYSQTkehFCGEEEIIIYQQQgjpdBRKEUIIIYQQQgghhJBO9/8BNt9YQxiOoXEAAAAASUVORK5CYII=", "text/plain": [ "

" ] @@ -448,7 +468,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 64, "metadata": {}, "outputs": [ { @@ -471,25 +491,25 @@ "witnesses = {key: s.supports[key] for key in [\"lockdown_efficiency\", \"mask_efficiency\"]}\n", "consequents = {\"os_too_high\": torch.tensor(1.0)}\n", "\n", - "# with MultiWorldCounterfactual() as mwc:\n", - "# query = with SearchForExplanation(\n", - "# supports=supports,\n", - "# alternatives=alternatives,\n", - "# antecedents=antecedents,\n", - "# antecedent_bias=0.0,\n", - "# witnesses=witnesses,\n", - "# consequents=consequents,\n", - "# consequent_scale=1e-8,\n", - "# witness_bias=0.2,\n", - "# ):\n", - "# with pyro.plate(\"sample\", exp_plate_size):\n", - "# with pyro.poutine.trace() as tr:\n", - "# policy_model_all()" + "with MultiWorldCounterfactual() as mwc:\n", + " with SearchForExplanation(\n", + " supports=supports,\n", + " alternatives=alternatives,\n", + " antecedents=antecedents,\n", + " antecedent_bias=0.0,\n", + " witnesses=witnesses,\n", + " consequents=consequents,\n", + " consequent_scale=1e-8,\n", + " witness_bias=0.2,\n", + " ):\n", + " with pyro.plate(\"sample\", exp_plate_size):\n", + " with pyro.poutine.trace() as tr:\n", + " policy_model_all()" ] }, { "cell_type": "code", - "execution_count": 60, + "execution_count": 73, "metadata": {}, "outputs": [], "source": [ @@ -497,43 +517,244 @@ " supports=supports,\n", " alternatives=alternatives,\n", " antecedents=antecedents,\n", - " antecedent_bias=0.0,\n", - " witnesses=witnesses,\n", + " antecedent_bias=-0.5,\n", + " # witnesses=witnesses,\n", " consequents=consequents,\n", " consequent_scale=1e-8,\n", - " witness_bias=0.2,\n", - " )(policy_model_all)" + " # witness_bias=0.2,\n", + " )(policy_model_all)\n", + "\n", + "# $P(…) [0.25 X 1(o | do(l, m)) 1(o’ | do (l’, m’)) + 0.25 X 1(o | do(l)) 1(o’ | do (l’)) + 0.25 X 1(o | do(m)) 1(o’ | do (m’)) + 0.25 X 1(o)1(o’)]" ] }, { "cell_type": "code", - "execution_count": 79, + "execution_count": 74, "metadata": {}, "outputs": [], "source": [ - "logp, tr, mwc, lw = importance_infer(num_samples=10000)(query)()" + "logp, tr, mwc, lw = importance_infer(num_samples=1000)(query)()" ] }, { "cell_type": "code", - "execution_count": 88, + "execution_count": 76, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor([ -inf, -inf, -inf, ..., 16.1154, -inf, -inf])\n", - "tensor(2432)\n", - "torch.Size([10000, 1, 1, 1, 1, 1, 1, 1, 1, 1])\n", - "tensor(0.6594)\n" + "tensor([ 1.6115e+01, -inf, -inf, -inf, -inf,\n", + " -inf, 1.6115e+01, -inf, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " 1.6115e+01, 1.6115e+01, -inf, -inf, -inf,\n", + " -inf, -inf, -inf, 1.6115e+01, -5.0000e+15,\n", + " -inf, -5.0000e+15, -inf, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " -inf, -5.0000e+15, -inf, -inf, -inf,\n", + " -5.0000e+15, -inf, -5.0000e+15, -inf, -inf,\n", + " -inf, -inf, -5.0000e+15, -inf, 1.6115e+01,\n", + " -inf, -inf, -5.0000e+15, -inf, 1.6115e+01,\n", + " -5.0000e+15, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, 1.6115e+01, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, 1.6115e+01,\n", + " 1.6115e+01, -inf, -inf, -inf, -5.0000e+15,\n", + " -inf, -inf, -inf, -inf, -5.0000e+15,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " 1.6115e+01, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, -inf, -5.0000e+15, -inf,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, -5.0000e+15,\n", + " -inf, -inf, -inf, 1.6115e+01, 1.6115e+01,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " -inf, 1.6115e+01, -inf, 1.6115e+01, -inf,\n", + " -inf, -inf, -inf, -inf, -5.0000e+15,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, -5.0000e+15,\n", + " -inf, 1.6115e+01, -inf, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " -5.0000e+15, 1.6115e+01, -inf, 1.6115e+01, -inf,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, -5.0000e+15, -inf, -inf,\n", + " -inf, -inf, -inf, 1.6115e+01, -inf,\n", + " -5.0000e+15, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " -inf, -5.0000e+15, -inf, -inf, -inf,\n", + " -inf, 1.6115e+01, -inf, -5.0000e+15, -inf,\n", + " 1.6115e+01, -inf, -inf, -inf, -inf,\n", + " -inf, -5.0000e+15, -inf, -inf, -5.0000e+15,\n", + " -5.0000e+15, -inf, -inf, -inf, -inf,\n", + " -5.0000e+15, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " -inf, 1.6115e+01, -inf, -inf, -inf,\n", + " -inf, -inf, -5.0000e+15, 1.6115e+01, -inf,\n", + " -inf, -5.0000e+15, -inf, -5.0000e+15, -inf,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, -5.0000e+15,\n", + " -inf, -5.0000e+15, 1.6115e+01, -5.0000e+15, -inf,\n", + " -inf, -inf, -inf, -inf, 1.6115e+01,\n", + " -inf, -inf, -5.0000e+15, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, 1.6115e+01,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " -inf, -5.0000e+15, -inf, -inf, -inf,\n", + " 1.6115e+01, -5.0000e+15, -inf, 1.6115e+01, -inf,\n", + " 1.6115e+01, -inf, -5.0000e+15, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, -5.0000e+15,\n", + " -inf, -inf, -5.0000e+15, -5.0000e+15, -inf,\n", + " -inf, -inf, -inf, -inf, -5.0000e+15,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " -inf, 1.6115e+01, 1.6115e+01, -inf, 1.6115e+01,\n", + " 1.6115e+01, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, 1.6115e+01, -inf, -inf,\n", + " -inf, 1.6115e+01, -5.0000e+15, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " 1.6115e+01, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " 1.6115e+01, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, 1.6115e+01, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, 1.6115e+01,\n", + " -inf, -inf, -5.0000e+15, -inf, 1.6115e+01,\n", + " -inf, -inf, 1.6115e+01, -inf, -inf,\n", + " -inf, 1.6115e+01, -inf, -inf, -inf,\n", + " -inf, -inf, -5.0000e+15, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, -5.0000e+15, -inf, -inf,\n", + " -inf, -inf, -inf, -5.0000e+15, -inf,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, -inf, 1.6115e+01, -inf,\n", + " -5.0000e+15, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, -inf, -5.0000e+15, -inf,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " -5.0000e+15, -inf, 1.6115e+01, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " 1.6115e+01, -inf, -5.0000e+15, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, 1.6115e+01,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " -5.0000e+15, -inf, -5.0000e+15, -5.0000e+15, -inf,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, -5.0000e+15, 1.6115e+01, -inf,\n", + " -inf, -5.0000e+15, 1.6115e+01, -inf, -inf,\n", + " 1.6115e+01, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, 1.6115e+01, -inf, -inf,\n", + " 1.6115e+01, -5.0000e+15, -5.0000e+15, 1.6115e+01, -inf,\n", + " -inf, 1.6115e+01, -inf, -inf, -inf,\n", + " -5.0000e+15, -5.0000e+15, -inf, -inf, -inf,\n", + " 1.6115e+01, 1.6115e+01, -inf, -5.0000e+15, -inf,\n", + " -inf, -inf, -inf, -inf, -5.0000e+15,\n", + " -5.0000e+15, -5.0000e+15, -inf, -inf, -inf,\n", + " -inf, 1.6115e+01, -inf, -inf, -inf,\n", + " -inf, 1.6115e+01, -inf, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, -5.0000e+15, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " 1.6115e+01, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, 1.6115e+01, -inf, -inf,\n", + " -inf, -inf, -inf, 1.6115e+01, -inf,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, 1.6115e+01,\n", + " -inf, -inf, -inf, -inf, -5.0000e+15,\n", + " -inf, -inf, -5.0000e+15, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " -5.0000e+15, -inf, -inf, -inf, -inf,\n", + " -inf, -5.0000e+15, -inf, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " 1.6115e+01, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " -inf, 1.6115e+01, -inf, -inf, -inf,\n", + " -inf, -5.0000e+15, -inf, -5.0000e+15, -inf,\n", + " 1.6115e+01, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, 1.6115e+01, -inf, -inf,\n", + " -inf, -5.0000e+15, -5.0000e+15, -inf, -inf,\n", + " -inf, -5.0000e+15, -inf, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, -inf, 1.6115e+01, -inf,\n", + " 1.6115e+01, -inf, -inf, -inf, -5.0000e+15,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, -5.0000e+15, -inf, -inf,\n", + " -inf, -inf, -inf, -5.0000e+15, -inf,\n", + " -inf, -inf, -5.0000e+15, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " -inf, -5.0000e+15, -inf, -inf, -inf,\n", + " -inf, -inf, -inf, 1.6115e+01, -inf,\n", + " -inf, 1.6115e+01, -inf, -5.0000e+15, -inf,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " -inf, -5.0000e+15, -inf, -inf, -inf,\n", + " -5.0000e+15, -5.0000e+15, -inf, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " -inf, -5.0000e+15, -inf, -inf, -inf,\n", + " -inf, -inf, -5.0000e+15, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, -inf, -5.0000e+15, -inf,\n", + " -inf, 1.6115e+01, 1.6115e+01, -5.0000e+15, 1.6115e+01,\n", + " -inf, -inf, -inf, 1.6115e+01, -inf,\n", + " -inf, 1.6115e+01, -inf, 1.6115e+01, -inf,\n", + " -5.0000e+15, -inf, -inf, 1.6115e+01, -5.0000e+15,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, 1.6115e+01,\n", + " -5.0000e+15, -inf, -inf, -inf, -inf,\n", + " 1.6115e+01, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, 1.6115e+01, -inf, -inf,\n", + " -inf, -5.0000e+15, -inf, -inf, -5.0000e+15,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, -5.0000e+15, -inf, -inf,\n", + " -inf, -5.0000e+15, 1.6115e+01, -inf, -inf,\n", + " -inf, -5.0000e+15, -inf, 1.6115e+01, -inf,\n", + " -inf, 1.6115e+01, -inf, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, 1.6115e+01,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, 1.6115e+01, -inf, -5.0000e+15,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, 1.6115e+01, -inf, -inf,\n", + " -inf, -inf, -inf, 1.6115e+01, -inf,\n", + " -inf, -inf, -inf, -inf, 1.6115e+01,\n", + " -inf, 1.6115e+01, -inf, 1.6115e+01, -inf,\n", + " -5.0000e+15, -inf, -5.0000e+15, -inf, -5.0000e+15,\n", + " -5.0000e+15, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, -5.0000e+15,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, -inf,\n", + " 1.6115e+01, -inf, -inf, -inf, -inf,\n", + " -inf, -5.0000e+15, -inf, -inf, -inf,\n", + " -5.0000e+15, -inf, -5.0000e+15, -inf, -inf,\n", + " -inf, -inf, -5.0000e+15, -inf, -inf,\n", + " 1.6115e+01, -inf, -inf, -inf, -inf,\n", + " -inf, -inf, -inf, -inf, -inf])\n", + "tensor(1000)\n", + "torch.Size([1000, 1, 1, 1, 1, 1, 1, 1, 1, 1])\n", + "tensor(907599.)\n" ] } ], "source": [ "print(lw.squeeze())\n", "\n", - "mask_intervened = (tr.nodes[\"__cause____antecedent_lockdown\"][\"value\"] == 1) & (tr.nodes[\"__cause____antecedent_mask\"][\"value\"] == 0)\n", + "mask_intervened = (tr.nodes[\"__cause____antecedent_lockdown\"][\"value\"] == 0) & (tr.nodes[\"__cause____antecedent_mask\"][\"value\"] == 0)\n", "print(mask_intervened.sum())\n", "\n", "with mwc:\n", @@ -541,8 +762,9 @@ " print(oth.shape)\n", " os = gather(tr.nodes[\"overshoot\"][\"value\"], IndexSet(**{\"lockdown\": {2}, \"mask\": {2}}))\n", "\n", - "denom = torch.sum(torch.exp(lw.squeeze()) * mask_intervened.squeeze().float()) / torch.sum(torch.exp(lw.squeeze()))\n", - "print(denom/0.25)\n" + "denom = torch.sum(torch.exp(lw.squeeze()) * mask_intervened.squeeze().float())/torch.sum(mask_intervened.squeeze()).float()\n", + "print(denom)\n", + "# print(denom/torch.sum(torch.exp(lw.squeeze())))\n" ] }, { From de604b0565ec2cf564990a40f103eb37c8548e98 Mon Sep 17 00:00:00 2001 From: PoorvaGarg Date: Fri, 16 Aug 2024 10:42:01 -0400 Subject: [PATCH 46/53] clean up --- docs/source/explainable_categorical.ipynb | 691 ++++++--- .../explainable_categorical_alternate.ipynb | 1236 ----------------- tests/explainable/test_handlers_components.py | 4 - 3 files changed, 520 insertions(+), 1411 deletions(-) delete mode 100644 docs/source/explainable_categorical_alternate.ipynb diff --git a/docs/source/explainable_categorical.ipynb b/docs/source/explainable_categorical.ipynb index 2bae0454..b8cc7b4d 100644 --- a/docs/source/explainable_categorical.ipynb +++ b/docs/source/explainable_categorical.ipynb @@ -11,11 +11,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The **Explainable Reasoning with ChiRho** package aims to provide a systematic, unified approach to causal explanation computations in terms of different probabilistic queries over expanded causal models that are constructed from a single generic program transformation applied to an arbitrary causal model represented as a ChiRho program. The approach of reducing causal queries to probabilistic computations on transformed causal models is the foundational idea behind all of ChiRho. The key strategy underlying \"causal explanation\" queries is their use of auxiliary variables representing uncertainty about what the proposed interventions are and which interventions or preemptions to apply, implicitly inducing a search space over counterfactuals.\n", + "The **Explainable Reasoning with ChiRho** package aims to provide a systematic, unified approach to causal explanation computations. The package provides a single generic program transformation that can be applied to any arbitrary causal model representable as a Chirho program. This program transformation allows several causal explanation queries to be modeled in terms of probabilistic queries. This approach of reducing causal queries to probabilistic computations on transformed causal models is the foundational idea behind all of ChiRho and in this module, has been leveraged for causal explanations as well.\n", "\n", - "The goal of this notebook is to illustrate how the package can be used to provide an approximate method of answering a range of causal explanation queries with respect to models in which categorical variables play the key role. As the key tool will involve sampling-based posterior probability estimation, a lot of what will be said *mutatis mutandis* applies to more general settings where variables are continuous (to which we will devote another tutorial).\n", + "The goal of this notebook is to illustrate how the package can be used to provide an approximate method of answering a range of causal explanation queries in causal models with only categorical variables. As the key tool will involve sampling-based posterior probability estimation, a lot of what will be said *mutatis mutandis* applies to more general settings where variables are continuous (to which we will devote another tutorial).\n", "\n", - "In yet [another notebook](https://basisresearch.github.io/chirho/actual_causality.html) we illustrate how the module allows for a faithful reconstruction of a particular notion of local explanation (the so-called Halpern-Pearl modified definition of actual causality [(J. Halpern, MIT Press, 2016)](https://mitpress.mit.edu/9780262537131/actual-causality/)), which inspired some of the conceptual steps underlying the current implementation." + "In yet [another notebook](https://basisresearch.github.io/chirho/actual_causality.html) we illustrate how the module allows for a faithful reconstruction of a particular notion of local explanation (the so-called Halpern-Pearl modified definition of actual causality [(J. Halpern, MIT Press, 2016)](https://mitpress.mit.edu/9780262537131/actual-causality/)), which inspired some of the conceptual steps underlying the current implementation.\n", + "\n", + "Before proceeding, the readers should go through the introductory tutorials on [causal reasoning in Chirho](https://basisresearch.github.io/chirho/tutorial_i.html). They might also find a notebook on [actual causality](https://basisresearch.github.io/chirho/actual_causality.html) helpful." ] }, { @@ -24,25 +26,25 @@ "source": [ "**Outline**\n", "\n", - "[Causal explanation and counterfactual thinking](#causal-explanation-and-counterfactual-thinking) \n", + "[Motivation](#motivation)\n", "\n", + "[Setup](#setup)\n", "\n", - "[Witness nodes and context sensitivity](#witness-nodes-and-context-sensitivity)\n", + "[But-for Causal Explanations](#but-for-causal-explanations) \n", "\n", - "[Probability of causation and responsibility](#probability-of-causation-and-responsibility)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Causal explanation and counterfactual thinking" + "[Context-sensitive Causal Explanations](#context-sensitive-causal-explanations)\n", + "\n", + "[Probability of causation and responsibility](#probability-of-causation-and-responsibility)\n", + "\n", + "[Further Discussion](#further-discussion)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ + "# Motivation\n", + "\n", "Consider the following causality-related queries:\n", "\n", "- **Friendly Fire:** On March 24, 2002, A B-52 bomber fired a Joint Direct Attack Munition at a US battalion command post, killing three and injuring twenty special forces soldiers. Out of multiple potential contributing factors, which were actually responsible for the incident?\n", @@ -51,33 +53,21 @@ "\n", "- **Explainable AI:** Your pre-trial release has been refused based on your [COMPAS score](https://en.wikipedia.org/wiki/COMPAS_(software)). The decision was made using a proprietary predictive model. All you have access to is the questionnaire that was used, and perhaps some demographic information about a class of human beings subjected to this evaluation. But which of these factors resulted in your score being what it is, and what were their contributions?\n", "\n", + "Questions of this sort are more specific and local as they pertain to actual cases that come with their own contexts, unlike average treatment effects discussed in an earlier [tutorial](https://github.com/BasisResearch/chirho/blob/master/docs/source/tutorial_i.ipynb). Being able to answer such context-sensitive questions is useful for understanding how we can prevent undesirable outcomes and promote desirable ones in contexts similar to the ones in which they had been observed. Moreover, these context-sensitive causality questions are also an essential element of blame and responsibility assignments. \n", "\n", - "Questions of this sort are more local than those pertaining to average treatment effects, as they pertain to actual cases that come with their own contexts. Being able to answer them is useful for understanding how we can prevent undesirable outcomes similar to ones that we have observed, or promote the occurrence of desirable outcomes in contexts similar to the ones in which they had been observed. These context-sensitive causality questions are also an essential element of blame and responsibility assignments. If the phenomenon we're trying to explain is the behavior of a predictive model, we are dealing with a problem in explainable AI; but the underlying intuition behind the workings of **Explainable Reasoning with ChiRho** is that causally explaining the behavior of an opaque model is not that much different from providing a causal explanation of other real-world phenomena: we need to address such queries in a principled manner employing some approximate but hopefully reliable causal model of how things work (be that events outside of computers, or a predicitive model's behavior). **Explainable Reasoning with ChiRho** package aims to provide a unified general approach to the relevant causal explanation computations.\n", - "\n", - "At some level of generality, a useful point of departure is a general counterfactual one. On one hand, we can ask whether the event would have occurred had a given candidate cause not taken place. This is sometimes called the *but-for test*, has a tradition of being used as a tool for answering causality and attribution queries. \n", - "\n", - "- It is often used in [the law of torts](https://plato.stanford.edu/entries/causation-law/) to determine if a defendant's conduct was the cause of a particular harm. The test is often formulated as follows: \"But for the defendant's conduct, would the harm have occurred?\" \n", - "- A major philosophical position in the analysis of causality is that the definition of causal dependence should be formulated in terms of counterfactual conditionals (Lewis, 1973. “Causation”, Journal of Philosophy, 70: 556–67). On this approach, $e$ causally depends on $c$ if and only if, if $c$ were not to occur $e$ would not occur. (The view does not remain uncontested, see the [SEP entry on counterfactual theories of causation](https://plato.stanford.edu/entries/causation-counterfactual/)).\n", - "- At least a few major approaches to explainable AI (such as [LIME](https://arxiv.org/abs/1602.04938), or [Shapley values](https://papers.nips.cc/paper_files/paper/2017/hash/8a20a8621978632d76c43dfd28b67767-Abstract.html)) are based on the idea that explanations can be obtained by perturbing or shifting the input values and observing the changes in the output. This to a large extent can be thought of as a way of evaluating the but-for condition: if the input value was different, would the output value change? \n", - " \n", - "More generally, we can ask about the probability with which an alterantive intervention would lead to a cahnge in the outcome (perhaps while conditioning on other items of information), in line with the ideas present in Pearl's *Probabilities of causation...* and Chapter 9 of Pearl's *Causality*. While immensely useful, the but-for condition is not fine-grained enough to answer all the questions we are interested in or to give us the intended answers in cases in which the underlying causal model is non-trivial. We will illustrate this observation in this tutorial. \n", - "\n", - "\n", - "On the other hand, we can ask whether given our model (and perhaps conditioning on other pieces of information we posses), intervening on a given candidate cause to have a given value results in the outcome being as observed (or, more generally, the probability of that outcome being as observed) - this is conceptually similar to Pearl's probability of sufficiency. \n", - "\n", - "We will start with these two approaches, but soon we will notice that often our explanatory questions are more local and a more fine-grained tool is needed. The general intuition (inspired by Halpern's *Actual Causality*) that we implemented is that when we ask local explanatory questions, we need to keep some part of the actual context fixed and consider alternative scenarios insofar as potential causes are involved. That is, we (i) search through possible alternative interventions that could be performed on the candidate cause nodes, (ii) search through possible context nodes that are to be intervened to be at their factual values even in the counterfactual worlds, (iii) see how these options play out in intervened worlds, and (iv) investigate and meaningfully summarize what happens with the outcome nodes of interest in all those counterfactual worlds. " + "In this notebook, we demonstrate the use of `SearchForExplanation`, a handler that provides a unified approach to answering such questions on a wide range of levels of granularity." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Let's start with a very simple model, in which a forest fire can be caused by exactly one of two things: a match being dropped (`match_dropped`), or a lightning strike (`lightning`), and either of these factors alone is already deterministically sufficient for the `forest_fire` to occur. A match being dropped is more likely than a lightning strike (we use fairly large probabilities for the sake of example transparency). For the sake of illustration, we also include a causally irrelevant site representing whether a ChiRho developer smiles, `smile`." + "## Setup" ] }, { "cell_type": "code", - "execution_count": 111, + "execution_count": 21, "metadata": {}, "outputs": [ { @@ -102,13 +92,21 @@ "from chirho.explainable.handlers import ExtractSupports, SearchForExplanation\n", "from chirho.indexed.ops import IndexSet, gather\n", "from chirho.observational.handlers import condition\n", + "from chirho.observational.handlers.soft_conditioning import soft_eq, KernelSoftConditionReparam\n", "\n", "pyro.settings.set(module_local_params=True)" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We first setup the essentials for performing probabilistic inference on the transformed causal models. We define a function for performing importance sampling on a model and a few other utility functions." + ] + }, { "cell_type": "code", - "execution_count": 112, + "execution_count": 22, "metadata": {}, "outputs": [], "source": [ @@ -139,28 +137,35 @@ " **kwargs\n", " )\n", "\n", - " # resample using importance weights to get posterior samples\n", - " idx = dist.Categorical(logits=log_weights).sample((num_samples,))\n", - " for name, node in importance_tr.nodes.items():\n", - " if node[\"type\"] != \"sample\" or pyro.poutine.util.site_is_subsample(node) or node[\"is_observed\"]:\n", - " continue\n", - " importance_tr.nodes[name][\"value\"] = torch.index_select(\n", - " importance_tr.nodes[name][\"value\"],\n", - " -max_plate_nesting - 1 - len(importance_tr.nodes[name][\"fn\"].event_shape),\n", - " idx,\n", - " )\n", + " return torch.logsumexp(log_weights, dim=0) - math.log(num_samples), importance_tr, mwc, log_weights\n", "\n", - " with pyro.poutine.replay(trace=importance_tr), mwc:\n", - " trace = pyro.poutine.trace(model).get_trace(*args, **kwargs)\n", + " return _wrapped_model\n", "\n", - " return torch.logsumexp(log_weights, dim=0) - math.log(num_samples), trace, mwc\n", + "# The following functions are needed for conditioning on random variables defined using `pyro.deterministic`\n", + "def _soft_eq(v1: torch.Tensor, v2: torch.Tensor) -> torch.Tensor:\n", + " return soft_eq(constraints.boolean, v1, v2, scale=0.001)\n", "\n", - " return _wrapped_model" + "def reparam_config(data):\n", + " return {i: KernelSoftConditionReparam(_soft_eq) for i in data}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## But-for Causal Explanations" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's start with a very simple model, in which a forest fire can be caused by any of the two things: a match being dropped (`match_dropped`), or a lightning strike (`lightning`), and either of these factors alone is already deterministically sufficient for the `forest_fire` to occur. A match being dropped is more likely than a lightning strike (we use fairly large probabilities for the sake of example transparency). For illustration, we also include a causally irrelevant site representing whether a ChiRho developer smiles, `smile`. A but-for analysis assigns causal role to a node if it having a different value would result in a different outcome. We will implement this concept and reflect on it in this section." ] }, { "cell_type": "code", - "execution_count": 113, + "execution_count": 23, "metadata": {}, "outputs": [ { @@ -216,10 +221,10 @@ "\n" ], "text/plain": [ - "" + "" ] }, - "execution_count": 113, + "execution_count": 23, "metadata": {}, "output_type": "execute_result" } @@ -258,31 +263,46 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Throughout this tutorial, we assume all nodes are binary and use $'$ as negation. Once we specify (i) the distributions for the nodes we use (`supports`), (ii) candidate causes $X_i = x_i$ (`antecedents`) (iii) their alternative values ($X_i = x_i'$), (iv) elements of the current context (`witnesses`), and (v) the `consequents` of interest $Y=y$. The `SearchForExplanation` handler transforms the original model into one in which interventions and alternative interventions on the antecedents are applied in parallel counterfactual worlds stochastically preempted and context elements are stochastically selected and preempted to be kept at the factual values in all counterfactual worlds.\n", + "Before we further go into causal queries, let us describe some notation. Let $F$ refer to the `forest_fire`, $f$ stand for $F=1$, $f'$ for $F=0$. The notation $M$ stands for `match_dropped`, with analogous conventions. We also place interventions conditioned on in subscripts. As an example, $f_{m'}$ stands for $F=1$ when $do(M=0)$." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Throughout this tutorial, we consider different kinds of causal queries and compute them using a unified program transformation, which takes place using the handler `SearchForExplanation`. It takes the following inputs:\n", + "1. the distributions for the variables we use (`supports`),\n", + "2. the candidate causes $X_i = x_i$ (`antecedents`),\n", + "3. their alternative values ($X_i = x_i'$) (`alternatives`),\n", + "4. the candidate elements of the current context (`witnesses`), and \n", + "5. the `consequents` of interest $Y=y$. \n", "\n", - "First, let's go back to our original query. Let $F$ be the `forest_fire`, $f$ stand for $F=1$, $f'$ for $F=0$, $M$ stand for `match_dropped`, with analogous conventions. We also place interventions conditioned on in subscripts, so that, for example\n", - "$P(f_{m'})$ stands for $P(F=1\\vert do(M=0))$.\n", + "The `SearchForExplanation` handler then takes these arguments and transforms the original model into another model in which interventions on antecedents and witnesses are applied stochastically. Once the antecedents $A \\subseteq$ `antecedents` and witnesses $W \\subseteq$ `witnesses` are chosen from the candidates via sampling, parallel counterfactual worlds are created to condition on `A` being sufficient and necessary causes for the consequent with the context `W`. For more details on `SearchForExplanation`, please refer to the [documentation](https://basisresearch.github.io/chirho/explainable.html#chirho.explainable.handlers.explanation.SearchForExplanation).\n", "\n", - "We are currently interested in $P(f'_{m'}, f_m)$, that is the probability of both forest fire not occurring if we intervene on the match to not be dropped, and forest fire occurring if we intervene on the match to be dropped." + "Now we are ready to use `SearchForExplanation` for answering but-for causal questions." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "First, suppose we are interested in asking the question of whether dropping a match has causal power over whether the forest fire occurs. We assume all relevant nodes are binary. The potential cause (`antecedent`) we're considering is `match_dropped=1`, we contrast it with what would happen if we intervened on it to not happen (`alternatives`). We are interested in whether an outcome variable (`consequent`) has value 1 under these two interventions. The counterfactual world in which we intervene with `alternatives` is world 1, and the counterfactual world in which we intervene with `antecedents` is world 2. We will be interested in cases in which none of these interventions have been preempted (more about this later), so we will sample with appropriate masks as well." + "**Causal Query 1** What is the probability that dropping a match has a causal impact on the forest fire?\n", + "\n", + "To answer the above question, we compute the probability of both the forest fire not occurring if we intervene on the match to not be dropped (the \"but-for\" part), and the forest fire occurring if we intervene on the match to be dropped, that is, $P(f'_{m'}, f_m)$. This computation can be carried out using `SearchForExplanation`.\n", + "\n", + "The potential cause (`antecedent`) we're considering is `match_dropped=1`. We inspect what would happen if we intervened on it to not happen (`alternatives`), and what happens if we intervene on it to happen, do(`match_dropped=1`). We are interested in whether (and with what probability) an outcome variable `forest_fire` (`consequent`) has both value 0 under the first (this is the \"but-for\" part) and value 1 under the second intervention. Note that these two interventions correspond to `match_dropped=1` being a necessary and sufficient cause for `forest_fire=1`. In this simple case, the notion corresponds to Pearl's notion of probability of necessity and sufficiency - although what `SearchForExplanation` can do goes beyond it, for instance, by allowing for the estimands to be context-sensitive, as we will illustrate later in this notebook." ] }, { "cell_type": "code", - "execution_count": 114, + "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.3102)\n" + "tensor(0.2987)\n" ] } ], @@ -296,7 +316,75 @@ " consequent_scale=1e-5,\n", ")(forest_fire_model)\n", "\n", - "logp, trace, mwc = importance_infer(num_samples=10000)(query)()\n", + "logp, trace, mwc, log_weights = importance_infer(num_samples=10000)(query)()\n", + "print(torch.exp(logp))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The above, strictly speaking, is not our answer yet. Remember that interventions on antecedents are chosen stochastically (with default probability $0.5$ for each candidate node). Thus the above is rather $P(f'_{m'}, f_m)P(m \\text{ was intervened on})$. To obtain $P(f'_{m'}, f_m)$ we therefore need to multiply the result by 2, obtaining $0.6$. In general, we don't need to keep track of the analytic solutions, and we can reach the similar conclusion by post-processing the samples to reject those where `match_dropped` was not intervened on. So, without knowing or using an analytic form (which in general will not be manageable), to compute $P(f'_{m'}, f_m)$, we can subselect the samples as follows:" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tensor(0.6000)\n" + ] + } + ], + "source": [ + "mask_intervened = trace.nodes[\"__cause____antecedent_match_dropped\"][\"value\"] == 0\n", + "print(torch.sum(torch.exp(log_weights) * mask_intervened.squeeze())/torch.sum(mask_intervened.float()))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note that the result above matches our intuition. `match_dropped` has a causal effect on `forest_fire` only when `lightning` is not there and the probability of that happening is $0.6$." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Causal Query 2** What is the probability that a Chirho developer has a causal impact on the forest fire?\n", + "\n", + "The intuitive answer is obviously zero, and we show that the same conclusion can be drawn using `SearchForExplanation`." + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tensor(1.0011e-05)\n" + ] + } + ], + "source": [ + "query = SearchForExplanation(\n", + " supports=forest_fire_supports,\n", + " antecedents={\"smile\": torch.tensor(1.0)},\n", + " consequents={\"forest_fire\": torch.tensor(1.0)},\n", + " witnesses={}, \n", + " alternatives={\"smile\": torch.tensor(0.0)},\n", + " consequent_scale=1e-5,\n", + ")(forest_fire_model)\n", + "\n", + "logp, trace, mwc, log_weights = importance_infer(num_samples=10000)(query)()\n", "print(torch.exp(logp))" ] }, @@ -304,19 +392,44 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "More interestingly, in cases of overdetermination, a similar estimation would lead us to assign no causal role to any of to co-contributing factors. This can be seen in the context in which both causes occurred. Trivially, if lightning occurred, then had no match been dropped, the forest fire, caused by lighning, would still occur (a symmetric reasoning goes through for the lightning as well), $P(f'_{m'}\\vert m, l) = P(f'_{l'}\\vert m, l)=0$. Intuitively, these quantities are not good guides to the causal role of `match_dropped` and `lightning`, as we think they did played a causal role. This is the first illustration of why the but-for analysis is not fine-grained enough." + "The above probability is already 0, and the following post-processing does not affect the result. We still provide the following code snippet for the sake of completeness." + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tensor(1.0011e-05)\n" + ] + } + ], + "source": [ + "mask_intervened = trace.nodes[\"__cause____antecedent_smile\"][\"value\"] == 0\n", + "print(torch.sum(torch.exp(log_weights) * mask_intervened.squeeze())/torch.sum(mask_intervened.float()))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The examples above show how `SearchForExplanation` can be used for but-for analysis. Note, however, that such analysis would not work in a case of overdetermination, where each of the two factors can alone cause the outcome. Consider the case where both `match_dropped` and `lightning` did occur. In this case, if we try to determine the causal role of `match_dropped`, it would come out to be zero (a symmetric reasoning works for lightning as well). This results in $P(f'_{m'}, f_m, m, l) = P(f'_{l'}, f_l, m, l)=0$. This is a canonical example of the limitations of the but-for analysis." ] }, { "cell_type": "code", - "execution_count": 129, + "execution_count": 28, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.4234)\n" + "tensor(2.8055e-06)\n" ] } ], @@ -325,55 +438,72 @@ " supports=forest_fire_supports,\n", " antecedents={\"match_dropped\": torch.tensor(1.0)},\n", " consequents={\"forest_fire\": torch.tensor(1.0)},\n", - " witnesses={}, # potential context elements, we leave them empty for now\n", + " witnesses={}, \n", " alternatives={\"match_dropped\": torch.tensor(0.0)},\n", - " antecedent_bias=-0.5,\n", " consequent_scale=1e-5,\n", - ")(condition(\n", - " data={\"u_match_dropped\": torch.tensor(1.0)}\n", - ")(forest_fire_model))\n", + ")( # We need to reparametrize as we are conditioning on deterministic nodes\n", + " pyro.poutine.reparam(config=reparam_config([\"match_dropped\", \"lightning\"]))(\n", + " condition(data={\"match_dropped\": torch.tensor(1.0), \"lightning\": torch.tensor(1.0)})\n", + " (forest_fire_model)\n", + " ))\n", "\n", - "logp, trace, mwc = importance_infer(num_samples=10000)(query)()\n", + "logp, trace, mwc, log_weights = importance_infer(num_samples=10000)(query)()\n", "print(torch.exp(logp))" ] }, { - "cell_type": "markdown", + "cell_type": "code", + "execution_count": 29, "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tensor(2.7924e-06)\n" + ] + } + ], "source": [ - "## Witness nodes and context sensitivity" + "mask_intervened = trace.nodes[\"__cause____antecedent_match_dropped\"][\"value\"] == 0\n", + "print(torch.sum(torch.exp(log_weights) * mask_intervened.squeeze())/torch.sum(mask_intervened.float()))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Some of these intuitions in the forest fire example may be salvaged by considering a two-membered antecedent set, estimating $P(f'_{m',l'}, f_{m,l})$. " + "One thing we can do, is to consider the set containing both `match_dropped` and `lightning`. Then we can estimate $P(f'_{m',l'}, f_{m,l}, m, l)$ to determine their joint causal role, which comes out to be greater than 0, as follows." ] }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 30, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.4375)\n" + "tensor(0.0670)\n" ] } ], "source": [ "query = SearchForExplanation(\n", " supports=forest_fire_supports,\n", - " antecedents={\"match_dropped\": 1.0, \"lightning\": 1.0},\n", + " antecedents={\"match_dropped\": torch.tensor(1.0), \"lightning\": torch.tensor(1.0)},\n", " consequents={\"forest_fire\": torch.tensor(1.0)},\n", " witnesses={},\n", - " alternatives={\"match_dropped\": 0.0, \"lightning\": 0.0},\n", - ")(forest_fire_model)\n", + " alternatives={\"match_dropped\": torch.tensor(0.0), \"lightning\": torch.tensor(0.0)},\n", + " consequent_scale=1e-5,\n", + ")(\n", + " pyro.poutine.reparam(config=reparam_config([\"match_dropped\", \"lightning\"]))(\n", + " condition(data={\"match_dropped\": torch.tensor(1.0), \"lightning\": torch.tensor(1.0)})\n", + " (forest_fire_model)\n", + " ))\n", "\n", - "logp, trace, mwc = importance_infer(num_samples=10000)(query)()\n", + "logp, trace, mwc, log_weights = importance_infer(num_samples=10000)(query)()\n", "print(torch.exp(logp))" ] }, @@ -381,16 +511,89 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "This already suggests a more complicated picture, as it turns out that we need to pay attention to membership in larger antecedent sets that would make a difference (that is one reason why we need stochasticity in antecedent candidate preemption: to search for such sets).\n", + "Now to get our estimand of $P(f_{m, l}, f_{m', l'}, m, l)$, we would need to multiply our result by four, as we now have made two stochastic decisions about interventions, each with probability $0.5$. Or, we can post-process the sample:" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tensor(0.2772)\n" + ] + } + ], + "source": [ + "mask_intervened = (trace.nodes[\"__cause____antecedent_match_dropped\"][\"value\"] == 0) & (trace.nodes[\"__cause____antecedent_lightning\"][\"value\"] == 0)\n", + "print(torch.sum(torch.exp(log_weights) * mask_intervened.squeeze())/torch.sum(mask_intervened.float()))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This again matches our intuition. Conditioning brings the factivity requirement into the picture, and so now what we are estimating is the probability of `m` and `l` in fact happening *and* having a causal impact on the forest fire. Since in general, the two-element set has deterministically complete control over the forest fire, the only non-trivial probability is the one brought in by the factivity requirement - the probability of both `match_dropped=1` and `lightning=1`, which is $0.28$." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "One might also be interested in computing the causal impact of the set without factoring in the factivity requirement, so that the result mirrors the intuition that the two-element set has complete control over the outcome. To get to this point, one can compute $P(f_{m, l}, f'_{m', l'} | m, l)$ as follows by subselecting the samples with `match_dropped=1` and `lightning=1`. Since {`match_dropped=1`, `lightning=1`} always leads to `forest_fire=1` and {`match_dropped=0`, `lightning=0`} always leads to `forest_fire=0`, we have $P(f_{m, l}, f'_{m', l'} | m, l) = 1$, which we get as a result of the following code snippet." + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tensor(1.0000)\n" + ] + } + ], + "source": [ + "query = SearchForExplanation(\n", + " supports=forest_fire_supports,\n", + " antecedents={\"match_dropped\": torch.tensor(1.0), \"lightning\": torch.tensor(1.0)},\n", + " consequents={\"forest_fire\": torch.tensor(1.0)},\n", + " witnesses={},\n", + " alternatives={\"match_dropped\": torch.tensor(0.0), \"lightning\": torch.tensor(0.0)},\n", + " consequent_scale=1e-5,\n", + ")(forest_fire_model)\n", "\n", - "But even then, the but-for analysis does not pay sufficient attention to the granularity of a given problem and its causal structure. There are asymmetric cases where the efficiency of one cause prevents the efficiency of another, in which our causal attributions should also be asymmetric, but \"being a member of the same larger antecedent set\" isn't.\n", + "logp, trace, mwc, log_weights = importance_infer(num_samples=10000)(query)()\n", + "\n", + "mask_intervened = (trace.nodes[\"__cause____antecedent_match_dropped\"][\"value\"] == 0) & (trace.nodes[\"__cause____antecedent_lightning\"][\"value\"] == 0) & (trace.nodes[\"match_dropped\"][\"value\"] == 1) & (trace.nodes[\"lightning\"][\"value\"] == 1)\n", + "print(torch.sum(torch.exp(log_weights) * mask_intervened.squeeze())/torch.sum(mask_intervened.float()))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Context-sensitive Causal Explanations" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As the previous example showed, the but-for analysis is not sufficient for identifying causal roles. This induces the need to pay attention to the membership of variables in larger antecedent sets that would make a difference (that is one reason why we need stochasticity in the antecedent candidate preemption: to search for such sets). But even then, the but-for analysis does not pay sufficient attention to the granularity of a given problem and its causal structure. There are asymmetric cases where the efficiency of one cause prevents the efficiency of another, in which our causal attributions should a be asymmetric, but \"being a member of the same larger antecedent set\" isn't. We illustrate using a simple example.\n", "\n", - "A simple example is breaking a bottle. Suppose Sally and Bob throw a rock at a bottle, and Sally does so a little earlier than Bob. Suppose both are perfectly accurate, and the bottle shatters when hit. Sally hits, and the bottle shatters, but Bob doesn't hit it because the bottle is no longer there. " + "Consider the example of breaking a bottle. Suppose Sally and Bob throw a rock at a bottle, and Sally does so a little earlier than Bob. Suppose both are perfectly accurate, and the bottle shatters when hit. Sally hits, and the bottle shatters, but Bob doesn't hit it because the bottle is no longer there." ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 33, "metadata": {}, "outputs": [ { @@ -399,154 +602,153 @@ "\n", "\n", - "\n", - "\n", - "\n", + "\n", + "\n", "\n", - "%3\n", - "\n", + "\n", "\n", "\n", "prob_sally_throws\n", - "\n", - "prob_sally_throws\n", + "\n", + "prob_sally_throws\n", "\n", "\n", "\n", "sally_throws\n", - "\n", - "sally_throws\n", + "\n", + "sally_throws\n", "\n", "\n", "\n", "prob_sally_throws->sally_throws\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "prob_bill_throws\n", - "\n", - "prob_bill_throws\n", + "\n", + "prob_bill_throws\n", "\n", "\n", "\n", "bill_throws\n", - "\n", - "bill_throws\n", + "\n", + "bill_throws\n", "\n", "\n", "\n", "prob_bill_throws->bill_throws\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "prob_sally_hits\n", - "\n", - "prob_sally_hits\n", + "\n", + "prob_sally_hits\n", "\n", "\n", "\n", "sally_hits\n", - "\n", - "sally_hits\n", + "\n", + "sally_hits\n", "\n", "\n", - "\n", + "\n", "prob_sally_hits->sally_hits\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "prob_bill_hits\n", - "\n", - "prob_bill_hits\n", + "\n", + "prob_bill_hits\n", "\n", "\n", "\n", "bill_hits\n", - "\n", - "bill_hits\n", + "\n", + "bill_hits\n", "\n", "\n", "\n", "prob_bill_hits->bill_hits\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "prob_bottle_shatters_if_sally\n", - "\n", - "prob_bottle_shatters_if_sally\n", + "\n", + "prob_bottle_shatters_if_sally\n", "\n", "\n", "\n", "bottle_shatters\n", - "\n", - "bottle_shatters\n", + "\n", + "bottle_shatters\n", "\n", "\n", - "\n", + "\n", "prob_bottle_shatters_if_sally->bottle_shatters\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "prob_bottle_shatters_if_bill\n", - "\n", - "prob_bottle_shatters_if_bill\n", + "\n", + "prob_bottle_shatters_if_bill\n", "\n", "\n", - "\n", + "\n", "prob_bottle_shatters_if_bill->bottle_shatters\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", - "\n", + "\n", "sally_throws->sally_hits\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", - "\n", + "\n", "bill_throws->bill_hits\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", - "\n", + "\n", "sally_hits->bill_hits\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", - "\n", + "\n", "sally_hits->bottle_shatters\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n", "bill_hits->bottle_shatters\n", - "\n", - "\n", + "\n", + "\n", "\n", "\n", "\n" ], "text/plain": [ - "" + "" ] }, - "execution_count": 7, + "execution_count": 33, "metadata": {}, "output_type": "execute_result" } @@ -624,7 +826,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 34, "metadata": {}, "outputs": [ { @@ -654,10 +856,28 @@ " }\n", ")(stones_model))\n", "\n", - "logp, trace, mwc = importance_infer(num_samples=10000)(query)()\n", + "logp, trace, mwc, log_weights = importance_infer(num_samples=10000)(query)()\n", "print(torch.exp(logp))" ] }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tensor(1.0013e-05)\n" + ] + } + ], + "source": [ + "mask_intervened = trace.nodes[\"__cause____antecedent_sally_throws\"][\"value\"] == 0\n", + "print(torch.sum(torch.exp(log_weights) * mask_intervened.squeeze())/torch.sum(mask_intervened.float()))" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -669,7 +889,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "An intuitive solution to the problem, inspired by the Pearl-Halpern definition of actual causality (which we discuss in [another notebook](https://basisresearch.github.io/chirho/actual_causality.html)) is to say that **in answering actual causality queries, we need to consider what happens when part of the actual context is kept fixed.** For instance, in the bottle shattering example, given the observed fact that Bob’s stone didn’t hit, in the counterfactual world in which we keep this observed fact fixed, if Sally nad not thrown the stone, the bottle in fact would not have shattered. \n", + "An intuitive solution to the problem, inspired by the Pearl-Halpern definition of actual causality (which we discuss in [another notebook](https://basisresearch.github.io/chirho/actual_causality.html)) is to say that **in answering actual causality queries, we need to consider what happens when part of the actual context is kept fixed.** For instance, in the bottle shattering example, given the observed fact that Bob’s stone didn’t hit, in the counterfactual world in which we keep this observed fact fixed, if Sally had not thrown the stone, the bottle in fact would not have shattered. \n", "\n", "\n", "For this reason, our handler allows not only stochastic preemption of interventions (to approximate the search through possible antecedent sets) but also stochastic witness preemption of those nodes that are considered part of the context (these needn't exclude each other). In a witness preemption, we ensure that the counterfactual value is identical to the factual one (and by applying it randomly to candidate witness nodes, we approximate a search through all possible context sets)." @@ -677,14 +897,14 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 36, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(0.2521)\n" + "tensor(0.2513)\n" ] } ], @@ -695,6 +915,7 @@ " consequents={\"bottle_shatters\": torch.tensor(1.0)},\n", " witnesses={\"bill_hits\": None},\n", " alternatives={\"sally_throws\": torch.tensor(0.0)},\n", + " consequent_scale=1e-5\n", ")(condition(\n", " data={\n", " \"prob_sally_throws\": torch.tensor(1.0),\n", @@ -706,23 +927,40 @@ " }\n", ")(stones_model))\n", "\n", - "logp, trace, mwc = importance_infer(num_samples=10000)(query)()\n", + "logp, trace, mwc, log_weights = importance_infer(num_samples=100000)(query)()\n", "print(torch.exp(logp))" ] }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tensor(0.5019)\n" + ] + } + ], + "source": [ + "mask_intervened = trace.nodes[\"__cause____antecedent_sally_throws\"][\"value\"] == 0\n", + "print(torch.sum(torch.exp(log_weights) * mask_intervened.squeeze())/torch.sum(mask_intervened.float()))" + ] + }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Admittedly, our search through contexts is very simple and degenerate, as the only part of the actual context which stochastically is kept fixed at the factual value is `bill_hits`. But already with this search, sally throwing is diagnosed as having non-null probability. In fact, the definition of actual causality in Halpern's book (*Actual causality*) contains an existential quantifier: a variable is an actual cause if there is at least one context in which a change in the outcome variable would result from changing the antecedent to have an alternative value, so our search provides a correct diagnosis here.\n", + "Admittedly, our search through contexts is simple as the only part of the actual context which stochastically is kept fixed at the factual value is `bill_hits`. But already with this search, Sally's throw is diagnosed as having impact on the bottle shattering with non-null probability. In fact, the definition of actual causality in Halpern's book (*Actual causality*) contains an existential quantifier: a variable is an actual cause if there is at least one context in which a change in the outcome variable would result from changing the antecedent to have an alternative value, so our search provides a correct diagnosis here.\n", "\n", - "Crucally, as intended, an analogous inference for whether `bill_throws` is a cause of the bottle shattering, yields a different\n", - "result and assigns null causal role to bill." + "Crucially, as intended, an analogous inference for whether `bill_throws` is a cause of the bottle shattering, yields a different result and assigns null causal role to Bill's throw." ] }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 38, "metadata": {}, "outputs": [ { @@ -752,48 +990,60 @@ " }\n", ")(stones_model))\n", "\n", - "logp, trace, mwc = importance_infer(num_samples=10000)(query)()\n", + "logp, trace, mwc, log_weights = importance_infer(num_samples=10000)(query)()\n", "print(torch.exp(logp))" ] }, { - "cell_type": "markdown", + "cell_type": "code", + "execution_count": 39, "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tensor(1.0013e-05)\n" + ] + } + ], "source": [ - "## Probability of causation and responsibility" + "mask_intervened = trace.nodes[\"__cause____antecedent_bill_throws\"][\"value\"] == 0\n", + "print(torch.sum(torch.exp(log_weights) * mask_intervened.squeeze())/torch.sum(mask_intervened.float()))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "We might use non-trivial probabilities and be interested in more involved queries. Suppose we aren't sure what part of the context we want to hold fixed, allowing both `sally_hits` and `bill_hits` to be witness candidates, so we attach equal weights to all four possible context sets. \n", + "## Probability of Causation and Responsibility\n", "\n", - "Suppose also that beyond knowing the non-degenerate probabilities involved, we don't know who threw the stone, and we only observed the bottle has been shattered. We can use the handler to estimate the answer to a somewhat different question involving the probabilities that changing the value of `sally_throws` or changing the value of `billy_throws` (whatever these are in the factual world) would lead to a change in the outcome variables, and that fixing them to be at the factual values would result in the outcome variable having the same value. We also allow both `sally_hits` and `bill_hits` as potential witnesses.\n", + "In the examples above, we have shown how `SearchForExplanation` can be used to perform but-for analysis and context-sensitive analysis. In this section, we extend how we can combine these queries ina single model and perform more involved queries about probabilities of causation and responsibility.\n", "\n", - "For example, we can sample to estimate quantities such as the fraction of possible causes of the bottle shattering in which Sally and Billy are each responsibile:" + "We take the earlier defined `stones_model` with non-trivial probabilities and the single observation that the bottle was shattered. We do not know who threw the stone and thus it is not obvious what context to hold fixed. We can capture all these different possibilities using the single program transformation performed by `SearchForExplanation` and post-process the samples to answer different queries." ] }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 40, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Degree of responsibility of Sally: tensor(0.7581)\n", - "Degree of responsibility of Billy: tensor(0.6069)\n" + "tensor(0.1543)\n" ] } ], "source": [ "query = SearchForExplanation(\n", " supports=stones_supports,\n", - " antecedents={\"sally_throws\": None, \"bill_throws\": None},\n", + " antecedents={\"sally_throws\": torch.tensor(1.0), \"bill_throws\": torch.tensor(1.0)},\n", " consequents={\"bottle_shatters\": torch.tensor(1.0)},\n", - " witnesses={\"sally_hits\": None, \"bill_hits\": None},\n", + " witnesses={\"bill_hits\": None, \"sally_hits\": None},\n", + " alternatives={\"sally_throws\": torch.tensor(0.0), \"bill_throws\": torch.tensor(0.0)},\n", + " consequent_scale=1e-5\n", ")(condition(\n", " data={\n", " \"prob_sally_throws\": torch.tensor(0.8),\n", @@ -806,30 +1056,129 @@ " }\n", ")(stones_model))\n", "\n", - "logp, trace, mwc = importance_infer(num_samples=20000)(query)()\n", - "\n", - "nodes = trace.nodes[\"_RETURN\"][\"value\"]\n", - "with mwc:\n", - " st_responsible = gather(nodes[\"sally_throws\"], IndexSet(sally_throws={1})) != \\\n", - " gather(nodes[\"sally_throws\"], IndexSet(sally_throws={2}))\n", - " bt_responsible = gather(nodes[\"bill_throws\"], IndexSet(bill_throws={1})) != \\\n", - " gather(nodes[\"bill_throws\"], IndexSet(bill_throws={2}))\n", - "\n", - "print(\"Degree of responsibility of Sally:\", st_responsible.sum() / st_responsible.numel())\n", - "print(\"Degree of responsibility of Billy:\", bt_responsible.sum() / bt_responsible.numel())" + "logp, trace, mwc, log_weights = importance_infer(num_samples=100000)(query)()\n", + "print(torch.exp(logp))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we show how our earlier analysis on the `stones_model` can be carried out through some analysis on the samples we get through this model where we have both `sally_throw` and `bill_throws` as candidate causes and both `bill_hits` and `sally_hits` as context nodes." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We first compute the probability of causation for `sally_throws`. We compute the probability that the set {`sally_throws=1`} is the cause of bottle shattering." + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tensor(0.2195)\n" + ] + } + ], + "source": [ + "mask_intervened = (trace.nodes[\"__cause____antecedent_sally_throws\"][\"value\"] == 0) & (trace.nodes[\"__cause____antecedent_bill_throws\"][\"value\"] == 1)\n", + "print(torch.sum(torch.exp(log_weights) * mask_intervened.float().squeeze())/mask_intervened.float().sum())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Note that we assumed Sally to be more likely to throw, more likely to hit, and more likely to shatter the bottle if she hits. For this reason, we expect her to be more likely to be causally responsible for the outcome. Conceptually, these estimates are impacted by some hyperparameters, such as witness preemption probabilities, so perhaps a bit more clarity on can be gained if we think we have a complete list of potential causes and normalize. " + "We similarly compute this probability for `bill_throws`." + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tensor(0.0667)\n" + ] + } + ], + "source": [ + "mask_intervened = (trace.nodes[\"__cause____antecedent_sally_throws\"][\"value\"] == 1) & (trace.nodes[\"__cause____antecedent_bill_throws\"][\"value\"] == 0)\n", + "print(torch.sum(torch.exp(log_weights) * mask_intervened.float().squeeze())/mask_intervened.float().sum())" ] }, { "cell_type": "markdown", "metadata": {}, - "source": [] + "source": [ + "We can also use the same model as above to compute the degree of responsibility for bill and sally as follows. We interpret the degree of responsibility assigned to sally for bottle shattering as the probability that `sally_throws=1` is part of the cause. Similarly, the degree of responsibility assigned to billy for shattering the bottle is the probability that `billy_throws=1` is a part of the cause." + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tensor(0.2777)\n" + ] + } + ], + "source": [ + "mask_intervened = (trace.nodes[\"__cause____antecedent_sally_throws\"][\"value\"] == 0)\n", + "print(torch.sum(torch.exp(log_weights) * mask_intervened.float().squeeze())/mask_intervened.float().sum())" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tensor(0.2014)\n" + ] + } + ], + "source": [ + "mask_intervened = (trace.nodes[\"__cause____antecedent_bill_throws\"][\"value\"] == 0)\n", + "print(torch.sum(torch.exp(log_weights) * mask_intervened.float().squeeze())/mask_intervened.float().sum())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note that we assumed Sally to be more likely to throw, more likely to hit, and more likely to shatter the bottle if she hits. For this reason, we expect her to be more likely to be causally responsible for the outcome and that is the result we got. Conceptually, these estimates are impacted by some hyperparameters, such as witness preemption probabilities, so perhaps a bit more clarity on can be gained if we think we have a complete list of potential causes and normalize. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Further Discussion\n", + "\n", + "In this notebook, we have shown how `SearchForExplanation` can be used for fine-grained causal queries for discrete causal models. We further elaborate on its application in for different queries. \n", + "\n", + "**Explainable AI**: If the phenomenon we're trying to explain is the behavior of a predictive model, we are dealing with a problem in explainable AI; but the underlying intuition behind the workings of **Explainable Reasoning with ChiRho** is that causally explaining the behavior of an opaque model is not that much different from providing a causal explanation of other real-world phenomena: we need to address such queries in a principled manner employing some approximate but hopefully reliable causal model of how things work (be that events outside of computers, or a predicitive model's behavior). **Explainable Reasoning with ChiRho** package aims to provide a unified general approach to the relevant causal explanation computations. At least a few major approaches to explainable AI (such as [LIME](https://arxiv.org/abs/1602.04938), or [Shapley values](https://papers.nips.cc/paper_files/paper/2017/hash/8a20a8621978632d76c43dfd28b67767-Abstract.html)) are based on the idea that explanations can be obtained by perturbing or shifting the input values and observing the changes in the output. This to a large extent can be thought of as a way of evaluating the but-for condition: if the input value was different, would the output value change? \n", + "\n", + "**Other Applications**: Causal queries, specifically but-for tests are often used in [the law of torts](https://plato.stanford.edu/entries/causation-law/) to determine if a defendant's conduct was the cause of a particular harm. The test is often formulated as follows: \"But for the defendant's conduct, would the harm have occurred?\". A major philosophical position in the analysis of causality is that the definition of causal dependence should be formulated in terms of counterfactual conditionals (Lewis, 1973. “Causation”, Journal of Philosophy, 70: 556–67). On this approach, $e$ causally depends on $c$ if and only if, if $c$ were not to occur $e$ would not occur. (The view does not remain uncontested, see the [SEP entry on counterfactual theories of causation](https://plato.stanford.edu/entries/causation-counterfactual/))." + ] } ], "metadata": { @@ -848,7 +1197,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.9" + "version": "3.10.14" } }, "nbformat": 4, diff --git a/docs/source/explainable_categorical_alternate.ipynb b/docs/source/explainable_categorical_alternate.ipynb deleted file mode 100644 index 516cea41..00000000 --- a/docs/source/explainable_categorical_alternate.ipynb +++ /dev/null @@ -1,1236 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Explainable reasoning with ChiRho (categorical variables)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The **Explainable Reasoning with ChiRho** package aims to provide a systematic, unified approach to causal explanation computations. The package provides a single generic program transformation that can be applied to any arbitrary causal model representable as a Chirho program. This program transformation allows several causal explanation queries to be modeled in terms of probabilistic queries. This approach of reducing causal queries to probabilistic computations on transformed causal models is the foundational idea behind all of ChiRho and in this module, has been leveraged for causal explanations as well.\n", - "\n", - "The goal of this notebook is to illustrate how the package can be used to provide an approximate method of answering a range of causal explanation queries in causal models with only categorical variables. As the key tool will involve sampling-based posterior probability estimation, a lot of what will be said *mutatis mutandis* applies to more general settings where variables are continuous (to which we will devote another tutorial).\n", - "\n", - "In yet [another notebook](https://basisresearch.github.io/chirho/actual_causality.html) we illustrate how the module allows for a faithful reconstruction of a particular notion of local explanation (the so-called Halpern-Pearl modified definition of actual causality [(J. Halpern, MIT Press, 2016)](https://mitpress.mit.edu/9780262537131/actual-causality/)), which inspired some of the conceptual steps underlying the current implementation.\n", - "\n", - "Before proceeding, the readers should go through the introductory tutorials on [causal reasoning in Chirho](https://basisresearch.github.io/chirho/tutorial_i.html). They might also find a notebook on [actual causality](https://basisresearch.github.io/chirho/actual_causality.html) helpful." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Outline**\n", - "\n", - "[Motivation](#motivation)\n", - "\n", - "[Setup](#setup)\n", - "\n", - "[But-for Causal Explanations](#but-for-causal-explanations) \n", - "\n", - "[Context-sensitive Causal Explanations](#context-sensitive-causal-explanations)\n", - "\n", - "[Probability of causation and responsibility](#probability-of-causation-and-responsibility)\n", - "\n", - "[Further Discussion](#further-discussion)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Motivation\n", - "\n", - "Consider the following causality-related queries:\n", - "\n", - "- **Friendly Fire:** On March 24, 2002, A B-52 bomber fired a Joint Direct Attack Munition at a US battalion command post, killing three and injuring twenty special forces soldiers. Out of multiple potential contributing factors, which were actually responsible for the incident?\n", - "\n", - "- **Overshoot:** In dealing with an epidemic, multiple different policies were imposed, leading to the overshoot (the number of those who became infected after the peak of the epidemic) rising from around 15% in the unintervened model to around 25%. Which of the policies caused the overshoot and to what extent?\n", - "\n", - "- **Explainable AI:** Your pre-trial release has been refused based on your [COMPAS score](https://en.wikipedia.org/wiki/COMPAS_(software)). The decision was made using a proprietary predictive model. All you have access to is the questionnaire that was used, and perhaps some demographic information about a class of human beings subjected to this evaluation. But which of these factors resulted in your score being what it is, and what were their contributions?\n", - "\n", - "Questions of this sort are more specific and local as they pertain to actual cases that come with their own contexts, unlike average treatment effects discussed in an earlier [tutorial](https://github.com/BasisResearch/chirho/blob/master/docs/source/tutorial_i.ipynb). Being able to answer such context-sensitive questions is useful for understanding how we can prevent undesirable outcomes and promote desirable ones in contexts similar to the ones in which they had been observed. Moreover, these context-sensitive causality questions are also an essential element of blame and responsibility assignments. \n", - "\n", - "In this notebook, we demonstrate the use of `SearchForExplanation`, a handler that provides a unified approach to answering such questions on a wide range of levels of granularity." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Setup" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "env: CUDA_VISIBLE_DEVICES=-1\n" - ] - } - ], - "source": [ - "%env CUDA_VISIBLE_DEVICES=-1\n", - "from typing import Callable, Dict, List, Optional\n", - "\n", - "import math\n", - "import pyro\n", - "import pyro.distributions as dist\n", - "import pyro.distributions.constraints as constraints\n", - "import torch\n", - "from chirho.counterfactual.handlers.counterfactual import \\\n", - " MultiWorldCounterfactual\n", - "from chirho.explainable.handlers import ExtractSupports, SearchForExplanation\n", - "from chirho.indexed.ops import IndexSet, gather\n", - "from chirho.observational.handlers import condition\n", - "from chirho.observational.handlers.soft_conditioning import soft_eq, KernelSoftConditionReparam\n", - "\n", - "pyro.settings.set(module_local_params=True)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We first setup the essentials for performing probabilistic inference on the transformed causal models. We define a function for performing importance sampling on a model and a few other utility functions." - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "def importance_infer(\n", - " model: Optional[Callable] = None, *, num_samples: int\n", - "):\n", - " \n", - " if model is None:\n", - " return lambda m: importance_infer(m, num_samples=num_samples)\n", - "\n", - " def _wrapped_model(\n", - " *args,\n", - " **kwargs\n", - " ):\n", - "\n", - " guide = pyro.poutine.block(hide_fn=lambda msg: msg[\"is_observed\"])(model)\n", - "\n", - " max_plate_nesting = 9 # TODO guess\n", - "\n", - " with pyro.poutine.block(), MultiWorldCounterfactual() as mwc:\n", - " log_weights, importance_tr, _ = pyro.infer.importance.vectorized_importance_weights(\n", - " model,\n", - " guide,\n", - " *args,\n", - " num_samples=num_samples,\n", - " max_plate_nesting=max_plate_nesting,\n", - " normalized=False,\n", - " **kwargs\n", - " )\n", - "\n", - " return torch.logsumexp(log_weights, dim=0) - math.log(num_samples), importance_tr, mwc, log_weights\n", - "\n", - " return _wrapped_model\n", - "\n", - "# The following functions are needed for conditioning on random variables defined using `pyro.deterministic`\n", - "def _soft_eq(v1: torch.Tensor, v2: torch.Tensor) -> torch.Tensor:\n", - " return soft_eq(constraints.boolean, v1, v2, scale=0.001)\n", - "\n", - "def reparam_config(data):\n", - " return {i: KernelSoftConditionReparam(_soft_eq) for i in data}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## But-for Causal Explanations" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's start with a very simple model, in which a forest fire can be caused by any of the two things: a match being dropped (`match_dropped`), or a lightning strike (`lightning`), and either of these factors alone is already deterministically sufficient for the `forest_fire` to occur. A match being dropped is more likely than a lightning strike (we use fairly large probabilities for the sake of example transparency). For illustration, we also include a causally irrelevant site representing whether a ChiRho developer smiles, `smile`. A but-for analysis assigns causal role to a node if it having a different value would result in a different outcome. We will implement this concept and reflect on it in this section." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "%3\n", - "\n", - "\n", - "\n", - "u_match_dropped\n", - "\n", - "u_match_dropped\n", - "\n", - "\n", - "\n", - "match_dropped\n", - "\n", - "match_dropped\n", - "\n", - "\n", - "\n", - "u_match_dropped->match_dropped\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "forest_fire\n", - "\n", - "forest_fire\n", - "\n", - "\n", - "\n", - "u_match_dropped->forest_fire\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "u_lightning\n", - "\n", - "u_lightning\n", - "\n", - "\n", - "\n", - "lightning\n", - "\n", - "lightning\n", - "\n", - "\n", - "\n", - "u_lightning->lightning\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "u_lightning->forest_fire\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "smile\n", - "\n", - "smile\n", - "\n", - "\n", - "\n", - "smile->forest_fire\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "def forest_fire_model():\n", - " u_match_dropped = pyro.sample(\"u_match_dropped\", dist.Bernoulli(0.7))\n", - " match_dropped = pyro.deterministic(\n", - " \"match_dropped\", u_match_dropped, event_dim=0\n", - " ) # notice uneven probs here\n", - "\n", - " u_lightning = pyro.sample(\"u_lightning\", dist.Bernoulli(0.4))\n", - " lightning = pyro.deterministic(\"lightning\", u_lightning, event_dim=0)\n", - "\n", - " # this is a causally irrelevant site\n", - " smile = pyro.sample(\"smile\", dist.Bernoulli(0.5))\n", - "\n", - " forest_fire = pyro.deterministic(\n", - " \"forest_fire\", torch.max(match_dropped, lightning) + (0 * smile), event_dim=0\n", - " )\n", - "\n", - " return {\n", - " \"match_dropped\": match_dropped,\n", - " \"lightning\": lightning,\n", - " \"forest_fire\": forest_fire,\n", - " }\n", - "\n", - "with ExtractSupports() as extract_supports:\n", - " forest_fire_model()\n", - " forest_fire_supports = {k: constraints.boolean for k in extract_supports.supports}\n", - "\n", - "pyro.render_model(forest_fire_model)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Before we further go into causal queries, let us describe some notation. Let $F$ refer to the `forest_fire`, $f$ stand for $F=1$, $f'$ for $F=0$. The notation $M$ stands for `match_dropped`, with analogous conventions. We also place interventions conditioned on in subscripts. As an example, $f_{m'}$ stands for $F=1$ when $do(M=0)$." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Throughout this tutorial, we consider different kinds of causal queries and compute them using a unified program transformation, which takes place using the handler `SearchForExplanation`. It takes the following inputs:\n", - "1. the distributions for the variables we use (`supports`),\n", - "2. the candidate causes $X_i = x_i$ (`antecedents`),\n", - "3. their alternative values ($X_i = x_i'$) (`alternatives`),\n", - "4. the candidate elements of the current context (`witnesses`), and \n", - "5. the `consequents` of interest $Y=y$. \n", - "\n", - "The `SearchForExplanation` handler then takes these arguments and transforms the original model into another model in which interventions on antecedents and witnesses are applied stochastically. Once the antecedents $A \\subseteq$ `antecedents` and witnesses $W \\subseteq$ `witnesses` are chosen from the candidates via sampling, parallel counterfactual worlds are created to condition on `A` being sufficient and necessary causes for the consequent with the context `W`. For more details on `SearchForExplanation`, please refer to the [documentation](https://basisresearch.github.io/chirho/explainable.html#chirho.explainable.handlers.explanation.SearchForExplanation).\n", - "\n", - "Now we are ready to use `SearchForExplanation` for answering but-for causal questions." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Causal Query 1** What is the probability that dropping a match has a causal impact on the forest fire?\n", - "\n", - "To answer the above question, we compute the probability of both the forest fire not occurring if we intervene on the match to not be dropped (the \"but-for\" part), and the forest fire occurring if we intervene on the match to be dropped, that is, $P(f'_{m'}, f_m)$. This computation can be carried out using `SearchForExplanation`.\n", - "\n", - "The potential cause (`antecedent`) we're considering is `match_dropped=1`. We inspect what would happen if we intervened on it to not happen (`alternatives`), and what happens if we intervene on it to happen, do(`match_dropped=1`). We are interested in whether (and with what probability) an outcome variable `forest_fire` (`consequent`) has both value 0 under the first (this is the \"but-for\" part) and value 1 under the second intervention. Note that these two interventions correspond to `match_dropped=1` being a necessary and sufficient cause for `forest_fire=1`. In this simple case, the notion corresponds to Pearl's notion of probability of necessity and sufficiency - although what `SearchForExplanation` can do goes beyond it, for instance, by allowing for the estimands to be context-sensitive, as we will illustrate later in this notebook." - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "tensor(0.3030)\n" - ] - } - ], - "source": [ - "query = SearchForExplanation(\n", - " supports=forest_fire_supports,\n", - " antecedents={\"match_dropped\": torch.tensor(1.0)},\n", - " consequents={\"forest_fire\": torch.tensor(1.0)},\n", - " witnesses={}, # potential context elements, we leave them empty for now\n", - " alternatives={\"match_dropped\": torch.tensor(0.0)},\n", - " consequent_scale=1e-5,\n", - ")(forest_fire_model)\n", - "\n", - "logp, trace, mwc, log_weights = importance_infer(num_samples=10000)(query)()\n", - "print(torch.exp(logp))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The above, strictly speaking, is not our answer yet. Remember that interventions on antecedents are chosen stochastically (with default probability $0.5$ for each candidate node). Thus the above is rather $P(f'_{m'}, f_m)P(m \\text{ was intervened on})$. To obtain $P(f'_{m'}, f_m)$ we therefore need to multiply the result by 2, obtaining $0.6$. In general, we don't need to keep track of the analytic solutions, and we can reach the similar conclusion by post-processing the samples to reject those where `match_dropped` was not intervened on. So, without knowing or using an analytic form (which in general will not be manageable), to compute $P(f'_{m'}, f_m)$, we can subselect the samples as follows:" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "tensor(0.6017)\n" - ] - } - ], - "source": [ - "mask_intervened = trace.nodes[\"__cause____antecedent_match_dropped\"][\"value\"] == 0\n", - "print(torch.sum(torch.exp(log_weights) * mask_intervened.squeeze())/torch.sum(mask_intervened.float()))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that the result above matches our intuition. `match_dropped` has a causal effect on `forest_fire` only when `lightning` is not there and the probability of that happening is $0.6$." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Causal Query 2** What is the probability that a Chirho developer has a causal impact on the forest fire?\n", - "\n", - "The intuitive answer is obviously zero, and we show that the same conclusion can be drawn using `SearchForExplanation`." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "tensor(1.0011e-05)\n" - ] - } - ], - "source": [ - "query = SearchForExplanation(\n", - " supports=forest_fire_supports,\n", - " antecedents={\"smile\": torch.tensor(1.0)},\n", - " consequents={\"forest_fire\": torch.tensor(1.0)},\n", - " witnesses={}, \n", - " alternatives={\"smile\": torch.tensor(0.0)},\n", - " consequent_scale=1e-5,\n", - ")(forest_fire_model)\n", - "\n", - "logp, trace, mwc, log_weights = importance_infer(num_samples=10000)(query)()\n", - "print(torch.exp(logp))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The above probability is already 0, and the following post-processing does not affect the result. We still provide the following code snippet for the sake of completeness." - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "tensor(1.0011e-05)\n" - ] - } - ], - "source": [ - "mask_intervened = trace.nodes[\"__cause____antecedent_smile\"][\"value\"] == 0\n", - "print(torch.sum(torch.exp(log_weights) * mask_intervened.squeeze())/torch.sum(mask_intervened.float()))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The examples above show how `SearchForExplanation` can be used for but-for analysis. Note, however, that such analysis would not work in a case of overdetermination, where each of the two factors can alone cause the outcome. Consider the case where both `match_dropped` and `lightning` did occur. In this case, if we try to determine the causal role of `match_dropped`, it would come out to be zero (a symmetric reasoning works for lightning as well). This results in $P(f'_{m'}, f_m, m, l) = P(f'_{l'}, f_l, m, l)=0$. This is a canonical example of the limitations of the but-for analysis." - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "tensor(2.8435e-06)\n" - ] - } - ], - "source": [ - "query = SearchForExplanation(\n", - " supports=forest_fire_supports,\n", - " antecedents={\"match_dropped\": torch.tensor(1.0)},\n", - " consequents={\"forest_fire\": torch.tensor(1.0)},\n", - " witnesses={}, \n", - " alternatives={\"match_dropped\": torch.tensor(0.0)},\n", - " consequent_scale=1e-5,\n", - ")( # We need to reparametrize as we are conditioning on deterministic nodes\n", - " pyro.poutine.reparam(config=reparam_config([\"match_dropped\", \"lightning\"]))(\n", - " condition(data={\"match_dropped\": torch.tensor(1.0), \"lightning\": torch.tensor(1.0)})\n", - " (forest_fire_model)\n", - " ))\n", - "\n", - "logp, trace, mwc, log_weights = importance_infer(num_samples=10000)(query)()\n", - "print(torch.exp(logp))" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "tensor(2.8719e-06)\n" - ] - } - ], - "source": [ - "mask_intervened = trace.nodes[\"__cause____antecedent_match_dropped\"][\"value\"] == 0\n", - "print(torch.sum(torch.exp(log_weights) * mask_intervened.squeeze())/torch.sum(mask_intervened.float()))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "One thing we can do, is to consider the set containing both `match_dropped` and `lightning`. Then we can estimate $P(f'_{m',l'}, f_{m,l}, m, l)$ to determine their joint causal role, which comes out to be greater than 0, as follows." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "tensor(0.0701)\n" - ] - } - ], - "source": [ - "query = SearchForExplanation(\n", - " supports=forest_fire_supports,\n", - " antecedents={\"match_dropped\": torch.tensor(1.0), \"lightning\": torch.tensor(1.0)},\n", - " consequents={\"forest_fire\": torch.tensor(1.0)},\n", - " witnesses={},\n", - " alternatives={\"match_dropped\": torch.tensor(0.0), \"lightning\": torch.tensor(0.0)},\n", - " consequent_scale=1e-5,\n", - ")(\n", - " pyro.poutine.reparam(config=reparam_config([\"match_dropped\", \"lightning\"]))(\n", - " condition(data={\"match_dropped\": torch.tensor(1.0), \"lightning\": torch.tensor(1.0)})\n", - " (forest_fire_model)\n", - " ))\n", - "\n", - "logp, trace, mwc, log_weights = importance_infer(num_samples=10000)(query)()\n", - "print(torch.exp(logp))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now to get our estimand of $P(f_{m, l}, f_{m', l'}, m, l)$, we would need to multiply our result by four, as we now have made two stochastic decisions about interventions, each with probability $0.5$. Or, we can post-process the sample:" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "tensor(0.2862)\n" - ] - } - ], - "source": [ - "mask_intervened = (trace.nodes[\"__cause____antecedent_match_dropped\"][\"value\"] == 0) & (trace.nodes[\"__cause____antecedent_lightning\"][\"value\"] == 0)\n", - "print(torch.sum(torch.exp(log_weights) * mask_intervened.squeeze())/torch.sum(mask_intervened.float()))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "This again matches our intuition. Conditioning brings the factivity requirement into the picture, and so now what we are estimating is the probability of `m` and `l` in fact happening *and* having a causal impact on the forest fire. Since in general, the two-element set has deterministically complete control over the forest fire, the only non-trivial probability is the one brought in by the factivity requirement - the probability of both `match_dropped=1` and `lightning=1`, which is $0.28$." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "One might also be interested in computing the causal impact of the set without factoring in the factivity requirement, so that the result mirrors the intuition that the two-element set has complete control over the outcome. To get to this point, one can compute $P(f_{m, l}, f'_{m', l'} | m, l)$ as follows by subselecting the samples with `match_dropped=1` and `lightning=1`. Since {`match_dropped=1`, `lightning=1`} always leads to `forest_fire=1` and {`match_dropped=0`, `lightning=0`} always leads to `forest_fire=0`, we have $P(f_{m, l}, f'_{m', l'} | m, l) = 1$, which we get as a result of the following code snippet." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "tensor(1.0000)\n" - ] - } - ], - "source": [ - "query = SearchForExplanation(\n", - " supports=forest_fire_supports,\n", - " antecedents={\"match_dropped\": torch.tensor(1.0), \"lightning\": torch.tensor(1.0)},\n", - " consequents={\"forest_fire\": torch.tensor(1.0)},\n", - " witnesses={},\n", - " alternatives={\"match_dropped\": torch.tensor(0.0), \"lightning\": torch.tensor(0.0)},\n", - " consequent_scale=1e-5,\n", - ")(forest_fire_model)\n", - "\n", - "logp, trace, mwc, log_weights = importance_infer(num_samples=10000)(query)()\n", - "\n", - "mask_intervened = (trace.nodes[\"__cause____antecedent_match_dropped\"][\"value\"] == 0) & (trace.nodes[\"__cause____antecedent_lightning\"][\"value\"] == 0)\n", - "print(torch.sum(torch.exp(log_weights) * mask_intervened.squeeze())/torch.sum(mask_intervened.float()))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Context-sensitive Causal Explanations" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "As the previous example showed, the but-for analysis is not sufficient for identifying causal roles. This induces the need to pay attention to the membership of variables in larger antecedent sets that would make a difference (that is one reason why we need stochasticity in the antecedent candidate preemption: to search for such sets). But even then, the but-for analysis does not pay sufficient attention to the granularity of a given problem and its causal structure. There are asymmetric cases where the efficiency of one cause prevents the efficiency of another, in which our causal attributions should a be asymmetric, but \"being a member of the same larger antecedent set\" isn't. We illustrate using a simple example.\n", - "\n", - "Consider the example of breaking a bottle. Suppose Sally and Bob throw a rock at a bottle, and Sally does so a little earlier than Bob. Suppose both are perfectly accurate, and the bottle shatters when hit. Sally hits, and the bottle shatters, but Bob doesn't hit it because the bottle is no longer there." - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "prob_sally_throws\n", - "\n", - "prob_sally_throws\n", - "\n", - "\n", - "\n", - "sally_throws\n", - "\n", - "sally_throws\n", - "\n", - "\n", - "\n", - "prob_sally_throws->sally_throws\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "prob_bill_throws\n", - "\n", - "prob_bill_throws\n", - "\n", - "\n", - "\n", - "bill_throws\n", - "\n", - "bill_throws\n", - "\n", - "\n", - "\n", - "prob_bill_throws->bill_throws\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "prob_sally_hits\n", - "\n", - "prob_sally_hits\n", - "\n", - "\n", - "\n", - "sally_hits\n", - "\n", - "sally_hits\n", - "\n", - "\n", - "\n", - "prob_sally_hits->sally_hits\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "prob_bill_hits\n", - "\n", - "prob_bill_hits\n", - "\n", - "\n", - "\n", - "bill_hits\n", - "\n", - "bill_hits\n", - "\n", - "\n", - "\n", - "prob_bill_hits->bill_hits\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "prob_bottle_shatters_if_sally\n", - "\n", - "prob_bottle_shatters_if_sally\n", - "\n", - "\n", - "\n", - "bottle_shatters\n", - "\n", - "bottle_shatters\n", - "\n", - "\n", - "\n", - "prob_bottle_shatters_if_sally->bottle_shatters\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "prob_bottle_shatters_if_bill\n", - "\n", - "prob_bottle_shatters_if_bill\n", - "\n", - "\n", - "\n", - "prob_bottle_shatters_if_bill->bottle_shatters\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "sally_throws->sally_hits\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "bill_throws->bill_hits\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "sally_hits->bill_hits\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "sally_hits->bottle_shatters\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "bill_hits->bottle_shatters\n", - "\n", - "\n", - "\n", - "\n", - "\n" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "def stones_model():\n", - " prob_sally_throws = pyro.sample(\"prob_sally_throws\", dist.Beta(1, 1))\n", - " prob_bill_throws = pyro.sample(\"prob_bill_throws\", dist.Beta(1, 1))\n", - " prob_sally_hits = pyro.sample(\"prob_sally_hits\", dist.Beta(1, 1))\n", - " prob_bill_hits = pyro.sample(\"prob_bill_hits\", dist.Beta(1, 1))\n", - " prob_bottle_shatters_if_sally = pyro.sample(\n", - " \"prob_bottle_shatters_if_sally\", dist.Beta(1, 1)\n", - " )\n", - " prob_bottle_shatters_if_bill = pyro.sample(\n", - " \"prob_bottle_shatters_if_bill\", dist.Beta(1, 1)\n", - " )\n", - "\n", - " sally_throws = pyro.sample(\"sally_throws\", dist.Bernoulli(prob_sally_throws))\n", - " bill_throws = pyro.sample(\"bill_throws\", dist.Bernoulli(prob_bill_throws))\n", - "\n", - " # if Sally throws, she hits with probability prob_sally_hits\n", - " # hits with pr=0 otherwise\n", - " new_shp = torch.where(sally_throws == 1, prob_sally_hits, 0.0)\n", - "\n", - " sally_hits = pyro.sample(\"sally_hits\", dist.Bernoulli(new_shp))\n", - "\n", - " # if Bill throws, he hits with probability prob_bill_hits\n", - " # if sally doesn't hit sooner,\n", - " # misses otherwise\n", - " new_bhp = torch.where(\n", - " bill_throws.bool() & (~sally_hits.bool()),\n", - " prob_bill_hits,\n", - " torch.tensor(0.0),\n", - " )\n", - "\n", - " bill_hits = pyro.sample(\"bill_hits\", dist.Bernoulli(new_bhp))\n", - "\n", - " # you can use a analogous move to model the bottle shattering\n", - " # if being hit by a stone doesn't deterministically\n", - " # shatter the bottle\n", - " new_bsp = torch.where(\n", - " bill_hits.bool(),\n", - " prob_bottle_shatters_if_bill,\n", - " torch.where(\n", - " sally_hits.bool(),\n", - " prob_bottle_shatters_if_sally,\n", - " torch.tensor(0.0),\n", - " ),\n", - " )\n", - "\n", - " bottle_shatters = pyro.sample(\"bottle_shatters\", dist.Bernoulli(new_bsp))\n", - "\n", - " return {\n", - " \"sally_throws\": sally_throws,\n", - " \"bill_throws\": bill_throws,\n", - " \"sally_hits\": sally_hits,\n", - " \"bill_hits\": bill_hits,\n", - " \"bottle_shatters\": bottle_shatters,\n", - " }\n", - "\n", - "\n", - "with ExtractSupports() as extract_supports:\n", - " stones_model()\n", - " stones_supports = {k: constraints.boolean if not k.startswith(\"prob_\") else v for k, v in extract_supports.supports.items()}\n", - "\n", - "pyro.render_model(stones_model)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "For now let us assume that the relevant probabilities are 1 (this forces both Sally and Bill to throw stones, makes them perfectly accurate and makes the bottle always shatter if hit). Let us start with the type of analysis we performed for the forest fire case. " - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "tensor(1.0013e-05)\n" - ] - } - ], - "source": [ - "query = SearchForExplanation(\n", - " supports=stones_supports,\n", - " antecedents={\"sally_throws\": torch.tensor(1.0)},\n", - " consequents={\"bottle_shatters\": torch.tensor(1.0)},\n", - " witnesses={},\n", - " alternatives={\"sally_throws\": torch.tensor(0.0)},\n", - " consequent_scale=1e-5,\n", - ")(condition(\n", - " data={\n", - " \"prob_sally_throws\": torch.tensor(1.0),\n", - " \"prob_bill_throws\": torch.tensor(1.0),\n", - " \"prob_sally_hits\": torch.tensor(1.0),\n", - " \"prob_bill_hits\": torch.tensor(1.0),\n", - " \"prob_bottle_shatters_if_sally\": torch.tensor(1.0),\n", - " \"prob_bottle_shatters_if_bill\": torch.tensor(1.0),\n", - " }\n", - ")(stones_model))\n", - "\n", - "logp, trace, mwc, log_weights = importance_infer(num_samples=10000)(query)()\n", - "print(torch.exp(logp))" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "tensor(1.0013e-05)\n" - ] - } - ], - "source": [ - "mask_intervened = trace.nodes[\"__cause____antecedent_sally_throws\"][\"value\"] == 0\n", - "print(torch.sum(torch.exp(log_weights) * mask_intervened.squeeze())/torch.sum(mask_intervened.float()))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Sally's throw does not satisfy the but-for condition: if she hadn't thrown the rock, the bottle would still have shattered. Of course, the combined event of Sally throwing a rock and Bob throwing a rock is a but-for cause of the bottle shattering. But that doesn't capture the clear asymmetry at work here. Intuitively, Sally's throw is the (actual) cause of the bottle breaking in a way that Bob's throw isn't. Sally's throw actually caused the bottle to shatter and Bob's throw didn't, in part because Bob's stone didn't actually hit the bottle." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "An intuitive solution to the problem, inspired by the Pearl-Halpern definition of actual causality (which we discuss in [another notebook](https://basisresearch.github.io/chirho/actual_causality.html)) is to say that **in answering actual causality queries, we need to consider what happens when part of the actual context is kept fixed.** For instance, in the bottle shattering example, given the observed fact that Bob’s stone didn’t hit, in the counterfactual world in which we keep this observed fact fixed, if Sally had not thrown the stone, the bottle in fact would not have shattered. \n", - "\n", - "\n", - "For this reason, our handler allows not only stochastic preemption of interventions (to approximate the search through possible antecedent sets) but also stochastic witness preemption of those nodes that are considered part of the context (these needn't exclude each other). In a witness preemption, we ensure that the counterfactual value is identical to the factual one (and by applying it randomly to candidate witness nodes, we approximate a search through all possible context sets)." - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "tensor(0.2494)\n" - ] - } - ], - "source": [ - "query = SearchForExplanation(\n", - " supports=stones_supports,\n", - " antecedents={\"sally_throws\": torch.tensor(1.0)},\n", - " consequents={\"bottle_shatters\": torch.tensor(1.0)},\n", - " witnesses={\"bill_hits\": None},\n", - " alternatives={\"sally_throws\": torch.tensor(0.0)},\n", - " consequent_scale=1e-5\n", - ")(condition(\n", - " data={\n", - " \"prob_sally_throws\": torch.tensor(1.0),\n", - " \"prob_bill_throws\": torch.tensor(1.0),\n", - " \"prob_sally_hits\": torch.tensor(1.0),\n", - " \"prob_bill_hits\": torch.tensor(1.0),\n", - " \"prob_bottle_shatters_if_sally\": torch.tensor(1.0),\n", - " \"prob_bottle_shatters_if_bill\": torch.tensor(1.0),\n", - " }\n", - ")(stones_model))\n", - "\n", - "logp, trace, mwc, log_weights = importance_infer(num_samples=100000)(query)()\n", - "print(torch.exp(logp))" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "tensor(0.5014)\n" - ] - } - ], - "source": [ - "mask_intervened = trace.nodes[\"__cause____antecedent_sally_throws\"][\"value\"] == 0\n", - "print(torch.sum(torch.exp(log_weights) * mask_intervened.squeeze())/torch.sum(mask_intervened.float()))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Admittedly, our search through contexts is simple as the only part of the actual context which stochastically is kept fixed at the factual value is `bill_hits`. But already with this search, Sally's throw is diagnosed as having impact on the bottle shattering with non-null probability. In fact, the definition of actual causality in Halpern's book (*Actual causality*) contains an existential quantifier: a variable is an actual cause if there is at least one context in which a change in the outcome variable would result from changing the antecedent to have an alternative value, so our search provides a correct diagnosis here.\n", - "\n", - "Crucially, as intended, an analogous inference for whether `bill_throws` is a cause of the bottle shattering, yields a different result and assigns null causal role to Bill's throw." - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "tensor(1.0013e-05)\n" - ] - } - ], - "source": [ - "query = SearchForExplanation(\n", - " supports=stones_supports,\n", - " antecedents={\"bill_throws\": torch.tensor(1.0)},\n", - " consequents={\"bottle_shatters\": torch.tensor(1.0)},\n", - " witnesses={\"sally_hits\": None},\n", - " alternatives={\"bill_throws\": torch.tensor(0.0)},\n", - " consequent_scale=1e-5,\n", - ")(condition(\n", - " data={\n", - " \"prob_sally_throws\": torch.tensor(1.0),\n", - " \"prob_bill_throws\": torch.tensor(1.0),\n", - " \"prob_sally_hits\": torch.tensor(1.0),\n", - " \"prob_bill_hits\": torch.tensor(1.0),\n", - " \"prob_bottle_shatters_if_sally\": torch.tensor(1.0),\n", - " \"prob_bottle_shatters_if_bill\": torch.tensor(1.0),\n", - " }\n", - ")(stones_model))\n", - "\n", - "logp, trace, mwc, log_weights = importance_infer(num_samples=10000)(query)()\n", - "print(torch.exp(logp))" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "tensor(1.0013e-05)\n" - ] - } - ], - "source": [ - "mask_intervened = trace.nodes[\"__cause____antecedent_bill_throws\"][\"value\"] == 0\n", - "print(torch.sum(torch.exp(log_weights) * mask_intervened.squeeze())/torch.sum(mask_intervened.float()))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Probability of Causation and Responsibility\n", - "\n", - "In the examples above, we have shown how `SearchForExplanation` can be used to perform but-for analysis and context-sensitive analysis. In this section, we extend how we can combine these queries ina single model and perform more involved queries about probabilities of causation and responsibility.\n", - "\n", - "We take the earlier defined `stones_model` with non-trivial probabilities and the single observation that the bottle was shattered. We do not know who threw the stone and thus it is not obvious what context to hold fixed. We can capture all these different possibilities using the single program transformation performed by `SearchForExplanation` and post-process the samples to answer different queries." - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "tensor(0.1553)\n" - ] - } - ], - "source": [ - "query = SearchForExplanation(\n", - " supports=stones_supports,\n", - " antecedents={\"sally_throws\": torch.tensor(1.0), \"bill_throws\": torch.tensor(1.0)},\n", - " consequents={\"bottle_shatters\": torch.tensor(1.0)},\n", - " witnesses={\"bill_hits\": None, \"sally_hits\": None},\n", - " alternatives={\"sally_throws\": torch.tensor(0.0), \"bill_throws\": torch.tensor(0.0)},\n", - " consequent_scale=1e-5\n", - ")(condition(\n", - " data={\n", - " \"prob_sally_throws\": torch.tensor(0.8),\n", - " \"prob_bill_throws\": torch.tensor(0.7),\n", - " \"prob_sally_hits\": torch.tensor(0.9),\n", - " \"prob_bill_hits\": torch.tensor(0.8),\n", - " \"prob_bottle_shatters_if_sally\": torch.tensor(0.9),\n", - " \"prob_bottle_shatters_if_bill\": torch.tensor(0.8),\n", - " \"bottle_shatters\": torch.tensor(1.0),\n", - " }\n", - ")(stones_model))\n", - "\n", - "logp, trace, mwc, log_weights = importance_infer(num_samples=100000)(query)()\n", - "print(torch.exp(logp))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now we show how our earlier analysis on the `stones_model` can be carried out through some analysis on the samples we get through this model where we have both `sally_throw` and `bill_throws` as candidate causes and both `bill_hits` and `sally_hits` as context nodes." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We first compute the probability of causation for `sally_throws`. We compute the probability that the set {`sally_throws=1`} is the cause of bottle shattering." - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "tensor(0.2195)\n" - ] - } - ], - "source": [ - "mask_intervened = (trace.nodes[\"__cause____antecedent_sally_throws\"][\"value\"] == 0) & (trace.nodes[\"__cause____antecedent_bill_throws\"][\"value\"] == 1)\n", - "print(torch.sum(torch.exp(log_weights) * mask_intervened.float().squeeze())/mask_intervened.float().sum())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We similarly compute this probability for `bill_throws`." - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "tensor(0.0667)\n" - ] - } - ], - "source": [ - "mask_intervened = (trace.nodes[\"__cause____antecedent_sally_throws\"][\"value\"] == 1) & (trace.nodes[\"__cause____antecedent_bill_throws\"][\"value\"] == 0)\n", - "print(torch.sum(torch.exp(log_weights) * mask_intervened.float().squeeze())/mask_intervened.float().sum())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "We can also use the same model as above to compute the degree of responsibility for bill and sally as follows. We interpret the degree of responsibility assigned to sally for bottle shattering as the probability that `sally_throws=1` is part of the cause. Similarly, the degree of responsibility assigned to billy for shattering the bottle is the probability that `billy_throws=1` is a part of the cause." - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "tensor(0.2777)\n" - ] - } - ], - "source": [ - "mask_intervened = (trace.nodes[\"__cause____antecedent_sally_throws\"][\"value\"] == 0)\n", - "print(torch.sum(torch.exp(log_weights) * mask_intervened.float().squeeze())/mask_intervened.float().sum())" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "tensor(0.2014)\n" - ] - } - ], - "source": [ - "mask_intervened = (trace.nodes[\"__cause____antecedent_bill_throws\"][\"value\"] == 0)\n", - "print(torch.sum(torch.exp(log_weights) * mask_intervened.float().squeeze())/mask_intervened.float().sum())" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Note that we assumed Sally to be more likely to throw, more likely to hit, and more likely to shatter the bottle if she hits. For this reason, we expect her to be more likely to be causally responsible for the outcome and that is the result we got. Conceptually, these estimates are impacted by some hyperparameters, such as witness preemption probabilities, so perhaps a bit more clarity on can be gained if we think we have a complete list of potential causes and normalize. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Further Discussion\n", - "\n", - "In this notebook, we have shown how `SearchForExplanation` can be used for fine-grained causal queries for discrete causal models. We further elaborate on its application in for different queries. \n", - "\n", - "**Explainable AI**: If the phenomenon we're trying to explain is the behavior of a predictive model, we are dealing with a problem in explainable AI; but the underlying intuition behind the workings of **Explainable Reasoning with ChiRho** is that causally explaining the behavior of an opaque model is not that much different from providing a causal explanation of other real-world phenomena: we need to address such queries in a principled manner employing some approximate but hopefully reliable causal model of how things work (be that events outside of computers, or a predicitive model's behavior). **Explainable Reasoning with ChiRho** package aims to provide a unified general approach to the relevant causal explanation computations. At least a few major approaches to explainable AI (such as [LIME](https://arxiv.org/abs/1602.04938), or [Shapley values](https://papers.nips.cc/paper_files/paper/2017/hash/8a20a8621978632d76c43dfd28b67767-Abstract.html)) are based on the idea that explanations can be obtained by perturbing or shifting the input values and observing the changes in the output. This to a large extent can be thought of as a way of evaluating the but-for condition: if the input value was different, would the output value change? \n", - "\n", - "**Other Applications**: Causal queries, specifically but-for tests are often used in [the law of torts](https://plato.stanford.edu/entries/causation-law/) to determine if a defendant's conduct was the cause of a particular harm. The test is often formulated as follows: \"But for the defendant's conduct, would the harm have occurred?\". A major philosophical position in the analysis of causality is that the definition of causal dependence should be formulated in terms of counterfactual conditionals (Lewis, 1973. “Causation”, Journal of Philosophy, 70: 556–67). On this approach, $e$ causally depends on $c$ if and only if, if $c$ were not to occur $e$ would not occur. (The view does not remain uncontested, see the [SEP entry on counterfactual theories of causation](https://plato.stanford.edu/entries/causation-counterfactual/))." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "pyro1.9", - "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.10.14" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/tests/explainable/test_handlers_components.py b/tests/explainable/test_handlers_components.py index 0613176f..cc3d4ead 100644 --- a/tests/explainable/test_handlers_components.py +++ b/tests/explainable/test_handlers_components.py @@ -382,10 +382,6 @@ def test_consequent_eq_neq(plate_size, event_shape): ) } - w_initial = ( - dist.Normal(0, 0.1).expand(event_shape).to_event(len(event_shape)).sample() - ) - @Factors(factors=factors) @pyro.plate("data", size=plate_size, dim=-4) def model_ce(): From e40e6c1e03cfe1d6ebbf36f80c66d3f5aa5b8368 Mon Sep 17 00:00:00 2001 From: PoorvaGarg Date: Fri, 16 Aug 2024 13:22:44 -0400 Subject: [PATCH 47/53] restored tutorial_i --- docs/source/tutorial_i.ipynb | 44 +++++++++++++----------------------- 1 file changed, 16 insertions(+), 28 deletions(-) diff --git a/docs/source/tutorial_i.ipynb b/docs/source/tutorial_i.ipynb index 34dc10e0..ca704abb 100644 --- a/docs/source/tutorial_i.ipynb +++ b/docs/source/tutorial_i.ipynb @@ -1553,9 +1553,7 @@ " return bayesian_population_intervened_causal_model(n_individuals), context\n", "\n", "\n", - "results, counterfactual_context = bayesian_population_counterfactual_model(\n", - " n_individuals\n", - ")\n", + "results, counterfactual_context = bayesian_population_counterfactual_model(n_individuals)\n", "\n", "with counterfactual_context:\n", " # ChiRho's `MultiWorldCounterfactual` effect handler automatically constructs named index sites\n", @@ -1567,10 +1565,14 @@ " # world given by the specific `IndexSet`. Here, `smokes=0` refers to the counterfactual\n", " # world in which `smokes` was not intervened on.\n", " smokes_factual = gather(results[\"smokes\"], IndexSet(smokes={0})).squeeze()\n", - " smokes_counterfactual = gather(results[\"smokes\"], IndexSet(smokes={1})).squeeze()\n", + " smokes_counterfactual = gather(\n", + " results[\"smokes\"], IndexSet(smokes={1})\n", + " ).squeeze()\n", "\n", " cancer_factual = gather(results[\"cancer\"], IndexSet(smokes={0})).squeeze()\n", - " cancer_counterfactual = gather(results[\"cancer\"], IndexSet(smokes={1})).squeeze()\n", + " cancer_counterfactual = gather(\n", + " results[\"cancer\"], IndexSet(smokes={1})\n", + " ).squeeze()\n", "\n", "print(\"smokes_factual --- \", smokes_factual)\n", "print(\"smokes_counterfactual --- \", smokes_counterfactual)\n", @@ -1645,39 +1647,29 @@ }, "outputs": [], "source": [ - "counterfactual_model_conditioned = condition(\n", - " bayesian_population_counterfactual_model, data\n", - ")\n", + "counterfactual_model_conditioned = condition(bayesian_population_counterfactual_model, data)\n", "\n", - "counterfactual_conditioned_results, counterfactual_conditioned_context = (\n", - " counterfactual_model_conditioned(n_individuals)\n", + "counterfactual_conditioned_results, counterfactual_conditioned_context = counterfactual_model_conditioned(\n", + " n_individuals\n", ")\n", "\n", "with counterfactual_conditioned_context:\n", " # ChiRho's `condition` only conditions the model on the observational part\n", " # of the model, not the counterfactual part.\n", " assert torch.allclose(\n", - " gather(\n", - " counterfactual_conditioned_results[\"smokes\"], IndexSet(smokes={0})\n", - " ).squeeze(),\n", + " gather(counterfactual_conditioned_results[\"smokes\"], IndexSet(smokes={0})).squeeze(),\n", " data[\"smokes\"],\n", " )\n", " assert not torch.allclose(\n", - " gather(\n", - " counterfactual_conditioned_results[\"smokes\"], IndexSet(smokes={1})\n", - " ).squeeze(),\n", + " gather(counterfactual_conditioned_results[\"smokes\"], IndexSet(smokes={1})).squeeze(),\n", " data[\"smokes\"],\n", " )\n", " assert torch.allclose(\n", - " gather(\n", - " counterfactual_conditioned_results[\"cancer\"], IndexSet(smokes={0})\n", - " ).squeeze(),\n", + " gather(counterfactual_conditioned_results[\"cancer\"], IndexSet(smokes={0})).squeeze(),\n", " data[\"cancer\"],\n", " )\n", " assert not torch.allclose(\n", - " gather(\n", - " counterfactual_conditioned_results[\"cancer\"], IndexSet(smokes={1})\n", - " ).squeeze(),\n", + " gather(counterfactual_conditioned_results[\"cancer\"], IndexSet(smokes={1})).squeeze(),\n", " data[\"cancer\"],\n", " )" ] @@ -1779,15 +1771,11 @@ "predictive_counterfactual_posterior = pyro.infer.Predictive(\n", " bayesian_population_counterfactual_model, guide=guide, num_samples=num_samples\n", ")\n", - "predictions_counterfactual_posterior = predictive_counterfactual_posterior(\n", - " n_individuals\n", - ")\n", + "predictions_counterfactual_posterior = predictive_counterfactual_posterior(n_individuals)\n", "\n", "with counterfactual_conditioned_context:\n", " predictions_int_posterior = {\n", - " k: gather(\n", - " predictions_counterfactual_posterior[k], IndexSet(smokes={1})\n", - " ).squeeze()\n", + " k: gather(predictions_counterfactual_posterior[k], IndexSet(smokes={1})).squeeze()\n", " for k in predictions_counterfactual_posterior.keys()\n", " }\n", "\n", From 1c36d312a1d63f012eb77531cbfb6bba6fae31f9 Mon Sep 17 00:00:00 2001 From: PoorvaGarg Date: Mon, 19 Aug 2024 10:33:03 -0400 Subject: [PATCH 48/53] fix for undo_split --- chirho/explainable/handlers/components.py | 39 +- docs/source/counterfactual_sir.png | Bin 127306 -> 126734 bytes docs/source/explainable_sir.ipynb | 581 +++++++++------ docs/source/test_notebook.ipynb | 659 ++++++++++++++++++ tests/explainable/test_handlers_components.py | 2 +- 5 files changed, 1038 insertions(+), 243 deletions(-) create mode 100644 docs/source/test_notebook.ipynb diff --git a/chirho/explainable/handlers/components.py b/chirho/explainable/handlers/components.py index 4db8fb42..589bc1cc 100644 --- a/chirho/explainable/handlers/components.py +++ b/chirho/explainable/handlers/components.py @@ -1,4 +1,3 @@ -import itertools from typing import Callable, Iterable, MutableMapping, Optional, TypeVar import pyro @@ -113,28 +112,36 @@ def undo_split( """ def _undo_split(value: T) -> T: - antecedents_ = [ - a - for a in antecedents - if a in indices_of(value, event_dim=support.event_dim) - ] + antecedents_ = { + a: v + for a, v in indices_of(value, event_dim=support.event_dim).items() + if a in antecedents + } factual_value = gather( value, - IndexSet(**{antecedent: {0} for antecedent in antecedents_}), + IndexSet(**{antecedent: {0} for antecedent in antecedents_.keys()}), event_dim=support.event_dim, ) # TODO exponential in len(antecedents) - add an indexed.ops.expand to do this cheaply - return scatter_n( - { - IndexSet( - **{antecedent: {ind} for antecedent, ind in zip(antecedents_, inds)} - ): factual_value - for inds in itertools.product(*[[0, 1]] * len(antecedents_)) - }, - event_dim=support.event_dim, - ) + + index_keys = [] + for a, v in antecedents_.items(): + if index_keys == []: + for value in v: + index_keys.append({a: {value}}) + else: + temp_index_keys = [] + for i in index_keys: + for value in v: + t = dict(i) + t[a] = {value} + temp_index_keys.append(t) + index_keys = temp_index_keys + index_keys = index_keys if index_keys != [] else [{}] + + return scatter_n({IndexSet(**ind_key): factual_value for ind_key in index_keys}, event_dim=support.event_dim) return _undo_split diff --git a/docs/source/counterfactual_sir.png b/docs/source/counterfactual_sir.png index 43fa84b439d792c2ad4aebd28cb8b74e0afbad69..1fc7f4bb20d0428035a8e15788c1394f7df77b3e 100644 GIT binary patch literal 126734 zcmd431zT3#7Bx%>QVL3oA|(<65)u;9A%aMUfFL2=B^}Z!h=?=@lG31rlys*wNOvRs z&HX&*ocDeI!RK||7XtUa_u6aCHRl*(jz!ROc`1Ax3LF#^6nq(J@fRp47~fD((A2MD z!cS}$sVLwJpS^^-y^@uYz0)gOLzHK)?5)kM?9Jck-*q&!wR>Y_$;ryc`jF+WiM_qG z9X}hJ#sA*GYGrH8HbA~f4Hv<-me#OCLAm}4d7)+tXT3o|MM04f7g2Wpyq@UfMx=5S zki5a&_9cqI^nNOjNMu@yy0gmq$(Y2t4?b=Ro1Pd^vuKH)Rp9-@_MTuI5)77o9kh(N z4a3EwmdVNWFNAlgF*ebUI604|;`ulq|KQx~;#)FRR#AzPrn?a&PV>Jn*OW@bEWG}& zA0WSeaqGp;=>PYPl*7`fPyf%ykayXt(_Ufuzpq7iqwQ4~(YOEi26O@3|3AOjGaMC_ zTjPG{Xe26@CAEyQZtA|nMak59MiaxH{cGTwh=f7Kwe zm8Fy=-}#B#tZrDN(waI#@NiUQ>-2fat42)Ls`=>3@92CU|4dMh!SU|Ggl)$IygLFP z?+CiGyZyDkII6oWdNc6l*P{pF8YM=3UzM`N%Ig+7;_S{3MyQINP(DZte1hqZS56bQsyW2Jst69TqaBS&GEvbWs z@!n$BXZwDcnAq5jk#brhA|mUhL?;ftpC~7X8y%H4e_A^_#+O{5#<4E!cCalWBiNp) zN1n@kx>m5Dr`%$^a-)2ljN|oH_tV3L=%=i&R{ArsUT4iOi%ySXO4CI*Mm)dY)D(16 zqtt{@GQCLTut={SjRV5eEYUdG{lmriDNmpvep{TbM_Vv4^W5sS`M>l?yngM(Wvl-A zUO}iWl3J|tXzHzuf`ajQxkYEPaI#&GU>wY&%`b9euJZV>h6aD!>yHVyo~PW$8Tj(- zPi|rD+=N|EnAwlx#e}NAb0L3LWuHE+f^jZS*9mKAXbf4}!Q5%PEX0;tPJU{k@}!Jt zX;e}WY#vh6?ZTpR^QzYiTr13Bg1fTGXYF}K&NXARed&#Zqw;>IA=ai)gryVY1#y!_#aM*8k7EX{6Ty8Q|Q2>BNI5JQqP zTE%$RM3o%`+0(!C?-itFWKt_DKX$OyQ3f>D*BniSOj;VxHu#6$5&Sfw^EO{bXzl5> z+yCrC6=`W{y~cO=o$;Ijk2fpRMGpIZIBjA6wp5xm5&kDyDFvq8k8X1sbtffx7@)UKK7e6#@vK-ciVHWudHsQ0> zjEpcf&S+thN*j)(tlH8pE_^*grz~x4Z73NT8P*H2YQ^TiiRCJV=-|c5RIeX?q*lK6;O1g6#Yh3mg`)b|aCb=w< zmueEOJ9Iv5VK*OT7y3JcUQo42A#}Da790}dvQ=}`+S-bu2jTtM{qT47e*aULy}@8S z>KJJ{mF50S+@;TU*VtaYhR10-(Pxf>tK3*C8db6;47l&3dG)1jYN8oh5#C~-!Xsh;=wfhUV*>LYy zB?gE+Jg=T5gOmLgyxaUSo0C5{ZRe$hV5F4}^871wM%|y=3?c-7rHJ@0|1Mz|(YC|a zs<6D`7veNu7*N!r&F9C?#ugEDlYzs2`MK-idfOFJ?Vmi;Zb}QEYYv9BCY+|-_qV2# zh1^f9$1N%ppFbzqC~-e^w5;Bd#Ka?eQm9k&cgyqg?dW-?B2qC98rOf9ycsFDZSX7f zYrhdYne%o%R^N(!X9CZ4ufB9CyD66?m6f-9T|6x{krz8HRN5ZL3;U}>A@Ka19%s(M z!NF-8AtVpd%ti`Wv@0X)eX$1WJUt&-PN*-v?LC_I?9nhzl!&+^$h%QG@OQiM`k%2i zTZR2&HzdRfX(fBprLM~h9w_TL&t4&tKo!3_26O$h;N_2Hm`k{B&LL&@C+-k<=Qrma z{ceFhIoJK=`rpRMU66v*t8D3!Z7cZpa2_Hl@5WrI$GNLzT;e*5v< z39=K43|ed_Y+CyAwRpmXFP!gq{C!oeV^yl~a&rrL0w@<}Cu@a6cclDw{jpn;ZHFNhxp)qLgK)lg0}8^4kYtg0IXPHMrx{6;2>A#XMQIGU z9`R0X_(0=uDcN(e|0!Fh)pRW$8N1ixt?Cl_)X8{xs&T9zJ=%BuS{W>x-k^rB!v$a)kFk4Y^2j@xFK;M^V2~4T)ZpavB zc+p2m=PXRU-J<8?i-+i&J32L6=W*G64R86?#*o}u(j(Mi829p5f>mu>7teI{G&aZ9 z_cd0eHbD(&i8oGagVD7@{zu)3OiD`XhB0Ws1b2PnPS4H`L`Lp;c^)V8{@z1_UwA|k zv&9{(xi>i2&4yVDer)o8QAqBtT1tAlHk^+nkhv2iq4QE+dw1=2a86DrIp;g4DVG2! zC!df~g+zbLZ6{?HUT3J+zpGt1kzxajxR~sD@#^gFj+ZrV-HZ<|3gIK?S$|ShzD*w= zG}g))w2Qxgu5VWUxn|V$NdjVmjME5@3NnHAbXJlpj)bD~ZW{xP;_ctfA6w4zQBo*` z9M+BaJTp7aABEic?UuTmXRWOVp79h}jF+FEu>1qWoRyT7n}jdV8X?`Pr;mg-&g%81 zh$!wXLC%|-_Ph-H!2l(F=TC&N?cr}@^ld;foRCdBjW`vA&$*DgR(F1QOHIec@bmHw z9DnEIg}8Wr2d0}0@^p_M|L8tSX?xFrd?3mFPy>o}Jo_s&*o#+I9Tk*SVsBYhN0I8f zML~g%gmH(%KHA3%oA)`EESciKjDwlmh?J4JkWOAX(l2e*#)Ta&|y{CaecI&K2BTo z)hp_|ew7`pKk%Sbr$-32SG(--{t4xD{u9Q7EXN=7?2U_SNMa{pQU9jE_6ce%r{{$m zztg6+SzW7(+j>z8QvD%|W|vvX%E~J9?jF14X;(!-&f@Nx*bj70KV+OxxPtC$ZTBx|0)dfRV)Un{5-%FN6>yExtI zS5hvvQU-(-Gz*YU4bY0Mii*ksY%xVUTiZbxEytM0To6OfpOy$U_zjQwXv*UJe0GoU zrQ5_Kq+D_{Fi4%lmCPm-bF;ogAk2ynH=Hs{r8{Vzfbpon6_D)bQpQLI#cgE^yDr<*-Fz*1!doQz0#gMjgrC7 zpDD|-v+sW|{QUVdMT94mMN@zabKzp}pgFk(FR-rP$$KZ7y38M^Z7ZXljD7Q7Hmsy7 zjAn0l7y0x7?40oOxY*dQ5dyn`-=P4gAcalp8sO+SWC*nYEz1tyLR=3aH_ONncc{`f z1ynhN;KXsjKG}|&6B?5x#t|^^lj+L~HNm}3&Oe)G2|QM+KkQd-Opd^&EJU813Tg&Y zFhrtGX8|}uZM7JGgiNygM%jq6O8&Uu4!l(jSsi5e7W91Pvx7l?UcUGhK~)IB5>%Fy zylU=xalC{K#sOep-*;Ho7hP>_iU1k%VFcl~c;s($nM7*p=-k;*($>y9+!$ALhvCCB z579sUkRA8ZQA3*wzTxZ+mJfs7K8N{Cig`PK_R zc;EV7RW(OeqT?r5;5n*a>-M@I4*~Ko>mFxhVNq59(BRM-Nv%?gMJSpY>Duw2A{!8; zqFTPD%96#?aQO_Z4?s<#;9-JFy7@zpEC>arLiQ92B<6Ga%b(=NpS|U?##p`y>&f~=?kplSYOV4=;2>unXq)? z3f+dSM#sa$b3(eD`7|!A&xDNM-o$)U8|Qgqas}22}VkUe0`?GRms<_#IMs)6&wI zrZ&nZr*8#UOu2@zzWmN^(wlOwY1JOXh~RW&h)7L>Fh*%GTUyCVUaZHWqNApsP1zVP zGb5e+?hx_;6&=$Wwo~+{PwlXM=4{>gD8nlSURYKnG&D3UAE?}PaQQG0b&eEb>8 zl#RP)h2=At&qJ3Qhvi;s*YhXM+`2kCI+?y?%bL|-`W8k1B2RIgMzU3Hpwzgi+rBm=;#~3x>eJ0 z?bm&ihfKrF%m%*TyPxdO0$BPZe0h95+5M0_U#lWq=;w!+n3NpT33Lk<7)u}4QG1XG zt<7bW0Oe^~X=#iq1U00$CoMvO$`ysJeElX|)n~gM2*F^{ss4y$BH#L-2n<8NF7V{V zix-LOh*;7#t1zF*6^)gB4{Eb_mr+RV6S(7VH^>7B9xg5A@_>45lC7zsK^~mOZZ%bH zGL@$;cTZ`;cD=^Ib5o>fO=2@X>aE7h%^)aA@O&-jJ6D;Kqz;dc(X$U1zLz&m)6>(t zL8?))HSoDwfu2U~jZiIEDqxHQCB{8WOGV$^H`d6P^%xl$XGe5B5ioIDV=2DP4>${f z1s{2=?)YNj>(4a>g_1q=0RqwD-@+Iy%1$O;I9;dK11J`t&F|&nJ`*}l&XTbu@`Nsu z3d$->CgDq!FRVSqFalU`vZtDwn%bK~tJ&sa7Ck{x+ICT9_eGx_cbcBEN(5?aopRD- zOj<^~qx>~z&%Z_|UjWk%kw_TV(G1v=i~&;$(2fBRYNYVWec}oN0F&2!C=;&p5B4>s z2fhrcJsHp`)cOe~3ls=H8&5`j3^XEA(iZv?^Q$**+(2;4(S)5s*#-zG!v{#70DvqB z+#1OqNC}%L&sQ~zr6eXCD}7@(^G=Nht_u@-a%2m7tL&CI03RWR*xgmUS)Yp{-KF9%u9f@w?^|Cv zU^j;a))mPd(9SO{jjSDz?9ec?uw;M;(|0l|LIm&Q8>M<&Qc?m!+_Tt|jq!@Dfv2W` zVGz{s=Z7%`N}Opr%HjI&Mnn_>9_|7;5pdy!lJPj56c2~rbDF62_n=S3L&1EH5XMbR z3i8ErTaJBDJVKw}7oVa#pc%ur>m4^E1UwtKsI&cFMQwMS1E)Y3;gwfJF`Z z2L{$yKIE$x`H1*p?!X>M?K44C3a1GhEIvNI`NhTI-#UmC$%X$b{5ITP3*i~LrT(JS zU*zI_M%EU_%nHMX*X;Qv!ztT<;I|-B3hZ{ugSl_x8}=Jxv0Vu~Et9AGj_a*}sZ5{Y zKi54<`95*;^k@szs(Fx}^7^p?g*?~SF5a?>OX{pc2HO{K*qTZN8H}6%)6VWf#|mgN zz&$;btH*vgv8|017M8?0iWQj-F#)T{^)nrAlA>~N5cMtm#+St#k*_R$l{+ z1C_S&*8ylQU12;^(jbZgixerFiyc@AeMeHe+s^!=I(nV79~}ho!62ZMMWA9;)(Jsn z@J7VQcuwQF9cSLdQ3Dt`K4d5(&}k_F8XcI5>Fd+vsueCmK}6DiCZ=@TMeBFe=`vjnxP1q8^q!xe%Ei5KjEyC*yQgaVRbUQ!uy$5(& z8*Fw|yN>y={T0YBIewDb?gv9i5=QO-qQsmvFQSZSl$(;1 zh*bCBK^UYDf51eDEcd@)K|~DDpMUPJ3?R<}izftZ+F+?W5m8>@-RuslgG{vjiHJxB z<-(+Fj49RU&#$mQAZ09dKi--L3K|^#sM2&OXF1zqNb%pGQQ)1$0IBHb<;9UO;QOa= zy3M-w)l8Wol=_XSj10QE95 zF$FI!em@*DI|lw!welsQa`BVd_USpIPC?>+P%-f$w?Y{LZf=ap>PIS>fHOPbUSsW- z^YP|8bIqTv8?YT*KMa|cA&MOkJIOlI=H_N7^$8$xn$~PzBl6ZI^ zu90X6P`!CAz!#}65D&kG6cYJkA?~-K6mdfShbG3aST!9)SJB?`Jf;+M<$^%DifDs~ z+<1O+@F&q}>J^L#DIR~_gvQD(ItITgt*s{^xNy%C79y0AkE1{*cWAc(mu(wz*fzwn zlDfLIq$DPi13>=!&GrKU)j}uBv`ADTx+19ER3nI3b9THJ|Ih#vfCjtw6E8@yoRH7o zU8mAnI{zqlPsiif(5UlcJ=~I!nK>O;uE5_J-_M}PoEnxO?W<4!+yg;AFxh{AA0Uzs z6n4z(cRJxixx|b>{^jK5ufgg7L}V|p0DOtyMP#Y8tZImT>z@ECbcX0RC8k_myQ3WU zHcc{p_IN4Tc(F6S`eZeih?uyq*zhT23Q~r9$gR&{OCc2kJ{}8srMBB~Jp=~62ZF{9 zlrozh!K0KMCdj|AJPf8w_&gI&Y-}EaYz-{AGZmz0L|axo?PzaL^J%aB3rm4uKIHf4 zn0UMK4jVj$$@r zZ?bkEZ+~;z(&6CXKp|t-LqVVqEF8fCuIPr?paSZ~s+GgaX(?g4~QuoFEoNy32qFyz=ld$U=UeM&A2&;yC zC5KuknqiM%KEkQkI8W#ZY;sR7Ned;yrD*fR+ z4M5lMKFD-G{t4FJZ2b7!P*4BYfQ%*s`F7A3CnOg)C&zYJ!x(u;m1FevSy`w&pm!pD zFwj;6G%t~vheg?g)fm>;$9UM<$e8uH0ZImgU;>>K#y=?=+EBi9L^y<3F(}6IWCUT* zhw)+x$o;T>LH!|$OQ}xnHQ}0YKbo9?PeKOG(Gg|4MNy;E12U5{(1uD#6VmeXMzAXc z&i4mCLvQ4iUI!IPfPgPWgVmyGF;~1n&IEjnnwG=#_HaGuTG0bOTOd2oy8sSHF-`>4 zm@jPA&AHuQCN;W=KYs!FP=k{BmCknl`cqhtD} zc8~uqeRC7~IuEGawngmeB!V)&{T~}m($^kD^{6a9`sb(cECShTs2y8Jb|C5@!z44_2XCU0VbI|R!?lwGaH4F5bc-LqI%!f((*Xhk3e)PX;%aSycMdXJIj#2e^lB6AHY&?4j~ zEIrUr>;cI@vtppgKnl^Lp?&ZdD%NVLZd`{1U^|;C?E@P!q*VzM%31q&4i^U(7xg2z z8Ht*<%@q_7dgn6U%jekCfVu>&V?Qx{10_+R$1?v6>`l&Kh}Qu$!5%`Z6%XJR zQ~0`)`)`BNpI}NWR>${)^yJWd(L=AX zXZrHJlzR}b*LI_M46QRh#iCaU>8M9bimD7z>|uW$j5e0eH>l&cWYhP}$q~PlSZ&y2 zV#;Q}%s;L^K1m=VCh02>gQn!^HIPIM3T`#_$39JWr%F0wM>!I-rZQYG6gc^res(;b zoZ{^*hG~2Hcf9DgMRs=e>EaI-&2NGI(J#Iqt#(`7v`lwVwIfoQ&5xU&dw(QczjV-7 z>sil=MsA8Dxj%VsDs<_5@!suSJjRAJ!?iEoL zk0a{T&bnwzs9q@?-$6@-LAX&R*Ibg5nfw;#+U>I zG$P*vOY=qVCFhd}uCx z3$ObbfxTGk6;tWbD;?sg*V6Bq+KV<7m!oN!eJk_!laCxEH@6TmBXG|ls@dNMgT^xo z2^A)c*zMBq-%mcFl^rRnK+9g@>o@v|FZXd!>AiTCn@M+PuOII)dz^^~dp}1>o@=Dq z|8xBq`#vgOu=hpz#eCIn?-hIEQ$?byRc1snIioV%G)i)BD~rZXT7^V4Zw}fFR_EU; z-`#(&V0VgMF~ISIUbps={?8U=PuI~T-p|FkuD)9Nx|?1Wnd8px!)xnPKN4g(83^&N zxHztsbh^>vrGyQ7t_Xpeeole^X)?e)KBi|V`Q3+>KFn;*f!(eZcZ zkIRfV76KQA&$iK_vi&37Lv{PQw!nfE0SRfvzBdVnSF@xV9zyVbdFqR!4x|}0sD}jw zDJgd;9(|085`llQhX75vGBg}oqOr3sFmiBYQHX>w5@(n(bVVd~7DK+)T|M)kVa8!2 z6-yBh)Jb}oM#LI29WYGi_u%bY>2;Ri{IKoOev?L;4~j&IGW#PG4I3xl{;IezSux#c z>kCg~>PyQpJ>xKqEpK-y5>+yPD~(O~LiGN9zd?dvn&F^s+LI<6v7$M}^}4|OH-BHh zDsoR%eD{jGs2t7-vv{Vd>=W!6+>@*KQHv;X#Mfv$Q0bpP4C_?WEXZXbdU8waR?@9A zO3VsW8qW|#75>6XlDEHg@wdMY%em;Y4Ijj-{n@I+#Gk8s*HGhc(i_<);G37n!di3q z;^g`!)j6IV|IJU^j{6ilAN9D^8M~Q(8I?p$^51&j+|(p>&j$zl7e?*n`rGc~Exypd zJy%gIYfe>3YHF_Hk_hQ;^BHVXG}@p?pr@?4zpUEteER#lDRawhwpG@u)f@7+J(wuM zF!v^neob=#JNXgd*foyYE0il3|22Lz%rTUowriuy<|8H9Gs#WQzaG()GI+~;UKY6( zI~_}P*26)@&9^U~veh&piM=(77PS)a$uVT{cwy+vB`muGXb-*p_))=T>43ZeAiF%B znoo>MU%r8=&u_o{6H&L0HYabjy#ODSn!P4|MNNrMm`nGsM+;udy`9~hq(^VeIiavC z%0XNpWega{&$R=|nt~5(y7Ev8(l9oRjT$`is8A?lq~w{8qhB@6WA_wVH5i;%TB|CZeWyt3NE{P8(T$ zV__DiXxx-mk-}}#XToKo+{-Q6TG^~e&A^QnCK=jwgIQhW%fXxc1 zJ~>)ZP!%OX(ZJTQPaH)sjff6v#4`^TreIVcB*9Lk?~P>8_4F>iGt^(8EKg?%%Sxxd zR=@_kiQ?lMVL>15@7ZhKc1*urG9?G~xK*|%*s?-v#L{iQUTT@ih0SWLGzf8YSbmFt za`z{Q&)2p?c?1x<6?Bv4!9Nu|94~io!jcE%6+v)%%=bxA8D5+nPe6YbBvM|>UP>^< zITt_dX{)O;472#9*b_A)<48y8D_&g3wXEa_V$PeXYCeF+^9YImu~qvAu)aR1bSR&J zQzB%fdbI=KV>wI0>hIr+h1QN%;j`& zmD!IaQDR-!Dt~*uKmLi?hgTstWbm_dWTlDkNS8fJPm(p2c1C0L@S&#Wy&{V0W2*id z=Pipw`K>iZm6!6F>ZnhAG4mw@?`ejSSg2P9cAE933@rDWaQD@sK+);gY9O|ry#^BO zBrm%BXAgz~FXl0l#CJ=Rs7|G!uV~>{uUz(r^7X>r}ggnl6q-xK0p91l( zmMm5U?DdJH|CT(>n@?QXUYP?cA0Iohf-XdbP&X)6uev|;y*3Q0`%rHFI~t(+PAhE$ zJ9ML=&D4l=H151e5YViV-nF#%Dl6OW+$9aM7PU$;QMh%#iIIRt`B?J)2|kX8|6J@$ zhi@WPu)efU=&MKx$-(K{$bN#CSIBHwG<{8~ro>9M) z%!;e^Pt8nvmFS}=aiAr+t@A=mMIfF=R9W0P*e~r^>>}GqDNmaC)(6tHd_N`(27HR0 z;@e4*829oeLqv=N%_1yvSDc=!sA!{-8rE{ix@X25x6jE|)oIJQFT|Wm*qnUsJ65+z z6Jj^PSI1Y)!(=9@xe`)OvxrZU=lT%hqwi6OP&H*iM5)B$Gk&Ggt`u&ru2XMGS`R6+ z)bA6j4*3yU;VBqR1&s}gP3X*~FFG4^b1(Fdtvblv&rMDaw>mzK|FRwn%Gz0?@kzb@Rc#13mchE0jrL-^~Du!=L>(gonunDi|NbIxG zUtC0E2%k)I;mXHk#{PmK=X%pMUuf04%xsCZl==Zl$Q3W{%Ysy~(`z61iG66EI66Lh z?6eu$;l%BJVqaWRQU%$;>^zSmhgP53a#d%GEi-OR{DSLm4m}wBvJ$C+^xvT7cl(nV2Rj^BJvI(=ulGT_wzE zT_W0X4#rLxF!95BubLiqGs&LfHfDaR?4?kjq`<`*gBWVw_6)F%|_o|agNO`(kkWF2X_$&hY|U1wvv{c;cO}UGF@vXBo;lQ z=a6X5lufd?+4~gy_0c^_cA9r+HhWPE?c*WD-8brmlRcyILRm1cQMN*>Excu8 zHk8nK`-Hi0@7GhSZD_>B71o{vJD831)xLbof{80}EFo|*l`fa?2p^1=6_-a3poh?$ z&11Vjtj1w6#`WEPRrK_5!)5hrmdWp8dJC-zL$Eq^x*6SDd9zY#HWChf3dH&WNP__X zAOYy%1FiC=*Bm>ogHpU8j1-M;^m*%m0YwT-DX~4jmi8Wk1J1H)fds%sH>haMkRFsW zr-4^jt`~P87BIwa0@QH<>7ju1mAmlXN8(|E+1(UuFE#swEy&G4Caq24GO;3*8Ml?7lZ? z4;AH}1<{c)e{oDt#847d&MT(KQ?!|vW_YyDIVVW^n2K4x`CeRvbDxA?Ml1IXLhdq( zd}-@DmLp~dI{>b`*`I}GD^J>T>nn-5CONE)g@GX(X(@r-j=H$G*crt1m5C}&a1#)K zhDl^qy@Q$c*%k+!667E$q9C2Jn7BAQu-wc#{@?@g-vvH_$_xF|-_Y#1F0hRvpY%s&HD!rDGeylZRK6d zE2%s`9IpbCa1JFnuwQ~dbtWx@l?KdmQg>W3#$GRiTww(H9}MXs;CCAM?qCLrsiI+N zL!>G5)kJYKnLlq6Vf zi?1n-upj^)ax+N8y_b`ri+?Z8MXx_h^-|QvT&Kw7zA<-I3(c$@VFZ7er0=!cnilGL zp`B*-eQs)!H4piz2)PWJyV?h&wSJQ7f$I-ia#X`rG1r{<9aft_!txkhsM~j~f#yzT zpU^aP+K~m)Uqp5xcuk%GoP&U{`PnAEM+RTwD-)hr)a6tBu~1!86;3gQQBr;4bS>W(pDFRw#~Hp7az<_(Mt;CZTf2) zzxzNd!8nbgHT`a)C)K3tJ~m(Pj-<43?JGZ)FnK@1RRc+Z7h{6^FL5RUcjK)MXS?SQktqO~Sd_dQ$LqW!TZoY9ha3v(hVa<*+noQuSRHH;;# zdZi?C-ZkCa{x(t;C)h2x?yy1M6RVa9*>*sNgJZJ{n-Ts*5i$sYT}&&2jn+9N~VhEsJkull0?#^9ip z(8C})l7L3SiV1LDy9rUPtgL`e(NsoEMAQqtL@|>@aa)r&tJoE&?;K>8HV625%E_@L z(j?e~aiJZZEseTnEtZR}#ms(BWQD?di-_9)MDyJ*`Q@vEU!DZq@{26nL%*+k-7_3r zimjC#moY#u1}98DQ0Zh_*ItE~hzetJX5#J#hkJdNmYA4Qy!*ZV+vPH=S0q&Yo)GWP z;s$+waS=&n{4)rE>#cnpZ>G-yOg{3tA>r#rz2x7>SQJxpQWaHV^{pOOEmW=BYzE06 zRUQU@wYzRu`~Cc&E1NUg@)>FK2l-FjVaiXL-VB$T$dqM7zn14W72T(43VtyZJ4$H~ zMR+5`$6;8uiK*OC&0Ppc6ok8jJ-ONS3hgr3$9tPHU#7Z zyO}~W7({wour)p^9=ajZ*gtsFvO=NI-8$ln-x-)cWeljVWmry~Pzz_C34V8WMbta{?yFvkUb6$T zQcQqDm?g83fl7oEs60Q~9gA|^NFR4NMr$Q?6zsm7|F8uA3t^idUwQ=ZBrnI~SSRNy z;ihf8_azFZjG-@PluN4l@l|~(3p}R!O26ZxJNAI4=c0A8TA;S~hbUfo#y@-8u$MgT zoMxmeb-VaIWv%j^GYK?k^3+4gth+pqfbPXNutg)*U8KhrNJ#q;dPsoX7Un|O7NKKR z|7T}A`SL8QsO!VO{e(BqGrSyl)489#AdOPWnb+OkykhsOc7&5ZWkB6zPj_^mX8nv{ z*Yll^VebjevUSbX1v5MvpAXnkJk0Z$p5D^Zh1@t>EKk2k<5}4U+TDFafR_4%i|{*0 zZMUtJ7MUAYoaWTd{`z`|%HC&^2g*4sm{}2NA}27P-otk;Umj;^{C36B@x#Vzso&Qe zV>a}Rf6GIGD=Wwq5&Qliaq)05jgE_<@q@@0K~Bx}U+HY5a^~{I?Q_a>@h)^r>KVYC zC|$8ge6NH|(NwR}OgTJMs!{bE4069ArzBmqZ`_kispp!xS|$*T-@X> zd0z6Bw{edBS7Motf_>Cq&lqP3bKv$%7oSyJ&(;W- zkek~x*sj(mi2&}mF$DS|g^7vtC2w`nza9$7m<#9+!D+hc0RdB7_L_NIwxTHibpk$i_Xs)Djl_Vs>j&JBTJ!DKN29>doHm1k5_EV;!WYxooS%oy6G5R0v$!)0=7ssnEdw-2KP5&eBp{KSM5HzkQF z7Q636C8l>X{L+$?lTxsD~H4X&wJC zX*vcCAgwnSTkbuHpyTH;!T)$*^dkT3DBhz^SG&(oh#94{rda=lZ-{NjJ`zn;sUe1G zSD(1>2DQ@%l2e{fx??u%&O+v%q>qHIXI?h2#o=DhzcvzJr*iwA$pKAN%|jVK3d}@N zXFJPl0pyPg2};66BO+67G%YyI!pdPy#5l{|KZupIQ~jE=oz1cG3`Srsc}p^}NO65a zwKy!S`POgs(x_+638UK8@h=U3hzDwNtM8MH@s9Q0lZhFY$$ztE^0cGrgOuS%-RIah zu3iz}d?+DDTb0G7i7%PI9SN7r&=~N0V#qEf(H_X_z~!3q-`)jXG;KioR#)9u1G#te z-xxj^UsqovlP43&4JeNjU1a>WXft~Hz})5bp&M-j{y?}HLCJNTFjcxT9y*+d%+Iea z+!B9y&zt^fpvF78zN4$O*%&rh6P0JI+8(6MQ~K?0hJD+@T;hV}H$t&9H2Nv%kDeE0 zeRS|&8-?dN@Lxk7tBXG2k0fmuFy!jY?1?_m$Gc74C4s&v;mzx=*eYeqN zQFMC)(wMT9ojb|xF{9;VMxPy;*xJAECQ6j`mi=!FC5p058a04ZYPG-35UxLpx zo)M_1_^T5W=&M9!1-{T_O!C6=Y^CZ_G8|5jDazmqR*TKaS$EttvZ&V_CN3~|S&6Ct*DmLfT6x8H(>vpZ44dpSaH;(y~0V2uWA4*Au?ZW@XF~dN%Wx2Gf z=2($ISptIz<{$Q6_#&CiJInqA6C*Q8A4b%YDN5p;PS+BmuXF)^0C+jTV-Du9TbkwO z8fMdQ9AO(8^s{@%>Tqro7!hxZ`^mWnVrOUlzMO`x=?T7B#25fJ+C#75xPMDW6qm)d zX`Z)jwMDOe`k&1=^)FwaSd+H$Wpx6zZTrY~X6l;f)HRK)5LYq%nopB=O~QziOhia4 z9lh)l2o6~u{On)<#(T}GH)LR|X~pTqGHXVYmJh=WbqYrB8+&y;l6B0t>Her6j@$q8 zZ0TOKT?TmWT^KslubN6-4wxO3Dp)FH4a(cgu8AXGT^Odiia;<+b6AIP(uuL}E9 zZuFUBv782|#TJYQXIm{Jq>Y%rE=D_tNL% zZYYiM1WTzKq~rxwH4!v6UD5 zqE^@0;6WX}W)gnlrio@%W~nQo=^I(^6fA)%Q0%LV^B&YsO5&Q@oUGtm*MC4oR}ofN0y!SNd284dcbe*X1)5f3h1z8O2uZh5#AEzg)m0I z4j2(e!S92dN<*wJD!Hm~3J}{Xx8Qp)P|Uqwx2%wU20~pCg$NvMRnP^g0>vP0`~oo? zf@SA-&08LDv%lJ%Zv)=SX)`B|g76+V=O+g0I3hRhE%mgl9rPFK3g1&mk^>I{3LGU~ z0LL=;%`Wafew>gh7I5d}=083Ms6%|_03o8hByofI2yEX;-7}~5%lDGkd-r`1J($nfydka`fvY(aHAp*uC0NP8w%82DHQ##c0%2cbIy$ zB*?zdKc({!Mp0zU#$eowg*i_D`SM9o7Mat}uwbAtzx2OFn#)U$UrnbaaS2v0GQPrm zlsDfq=~cy|I5#<(nffZ*CJcTpJ0d6>B zGYhBP7QlhK2uF5l>FNDp^1(xT><4#<{P5uym?}F#;(_xrV6ntQ6bAKtRT5V1R*-Hg z;m9X=PzqY!-vhM|*|u+FDKXo9GIV;$slVp7Ud}V~ev87+H6Orxx#<^rb9M`>ftENN zbx$VcGpdkEpqj~(bRUX%H2%c<_s~ZzBBL=#O70uIC#a-oG>}LS*=e`+Hv4h^7tyye z5*>{)zgIaq6wfMk<{4?G6C*mdXtFULu7-|=9ZK$fW3ndw=5}OzF>%h&;lyTa);7%K zUc9cc-@YzUh^Gie^RX#Le4ueGf(ZA;o0&qUM12^&RfF=S*|Ce-O$lgGWDA+vJkoR6 zUta|WP3q*I1^&1}I2~S41Dbbacgq=_OC6%cC8uJH9(L*t&=0y5NRzD*+mqiqbK(P(_(j-afQ!T>A z>{vKcF){tuVWcpRO`B?@KtxR5^jZs-@VnZs(|(4M>oSWOVwT1R1j;^@=#~Pg*FBme zF!ArzU_-pV6ZECCyYa~PnX9S{#hoxoXHo7V0#V;oOLQ$bzk{g9^KI{QEk;Hjz7`D&u*!)^r8-APn!wAjkiGe{~add7G6|HvK4Wbxr4`7==P zme0b>1X{T&jg;z3Y=1o`A@i|o3-Z={H%p*$6OaXO$G>mNV8N*4!v&h#07;pW14IlYes0j0--;q7j*`1Kb z(LSyeykdfyz?~TCXTCqY?|W;(Mp#kVAJDHxxgB|jBdY;aE{quG!ob6}4ZcTf>L-Q= ze?Bg@M4HG7yguY6A>7Id)FXZ&22udb^Gdn>zvRSRl3JZx^5S8eBCyFvS_WEucR^SK z_wICWv0+E{$PnW3hC``ci1`F02O9#K=FusDCV{`~Qyw5cf*oPL0l^mr(B z(>?IFClFt5Yg=0?oK*q$r$kL7I0x;PuPM{;HH>~-nxCF1{`KgOmr1h6>x(2=NQkd5 zqmb!T#R^LF=ZWG`a5fzB@3*DaUf8^nz^zjmJYGv2U4Xt<^!$Xw@9;^V^0(ocFcnh! zv0zG#A`IUdT(1^}bzDa1f%OrPl;1FK5M!YUk8eoQl@!argAF|jyh_Hy*pe0~M-`M# zy&;OZEtaM4&7Vo+=Fm`u`*If)k0~9hse}9IsI^EZg+2w z@xcQ_&^b$?WeAS*9cT}{|MW=~EM!QvhYmCY2q(xP6mN7aTWC;nyy>TdV~cH2sDd`G z5@Y`JmpG8t60)h8TtlQ+b@l@Yit);v7qgkxC(zd_e0s3RS7_Q!YS|ComA-j?;TXy@ zj3Zr*Dfe=1g?B$~R9~Q+CN=N^rBd+KD`pJ8o2|DR((kIiH-5@ZZnG*%becHNzX!8A zi+#+#CPzn>m+|TSTw@29R~xG74Zn$*F(yA2gPg06x%i*h&FIofsHi8_eM)vZ>+E^# zVf5^RLYb+-h{YB6y!gaMyWLe=9MWpbjAMLLkBaNOlS{57d zjAc5-iuYd~-EaiCt%Wv1paIHW*DInf&js*V z7(^SI8?9Q4S7K0H^Y7%=%YG3Aw;PjVIzis+G>4#!3#7pX(S#l-Pm7qLkyqbB z`v!8pF8qc1ZBlJ(RCtNRx&|~VN_c&TGu<$2k8>vFZEZQ=P(*m{t;de$VW+YGAy<^Y zLFkok874V1oSDKIR^34hYr$Qs_<1-P`9Yi8&B_yrDXCO9ROedM9;X>C>>xGos;&Cl zjTid8z9JDLdFl6O^dqL9d3>XE`WeEQL9N&~(3$C9Z2P=j9L>cS6^}oPcghI!y^OO5 zIey;;VfT?wH^z7S=b|(t>MNSFJ4U9Mi(C(*U(r*WtNmvEV6NK`G4A==Wz$yF^!}I; z=O}N%f(@P}_ebvsSioL{V~p1#l{CHu&lj4;4@QGbjno+C^vOOdG#7XoZ!19;ncpT6LD9fCA|$%Vrnr`Yo70NeGK<*Vip)Kn+^qd@`@Ed~?Ar#`BVw!Ial?d+N0iei&hJX^h;DUG zEtg4csyzgCq7Dff*)t~BUP zbeLD8{9Qip$S%5FvnygVj$&`(395So&(x#bw2W?wyiZz4df=w}msFUjfWAlf4)@Ef zzCPv>Qif6?@0(+vpR8pJV|gZBR}z)I3Y>v?rh#hr|D)}#gSy(n{!ye;I;FcyLIDN7 zgtUNkx3ox0cO$7Fh;+Avq_iRk0@8>Af*_%wl!AJn?K$Ute{<*lacAz_nS&lc_GYiW z*0Y}HS)aI}fX>Ef00=c6qyOVo+4ZE}Nxebv$y;TM&@?ngvvdVt?z;n#XgVVr9UHqD z<|ldWV|>in*oi7-`a^S9HkyyOmm2tzIXaI zeZQP*^`_s-&71vMX-V~uB1JPso<8*ndgdaaE|bfBD`?V3fbJT`m;mj=iTJ)p!K!L| zXsvp@?y!w9F*Blc7Njdxfen$8f6L|M`9>bbF<8 z_PP2Em?%D>arP-Q*lZIQeg8Qb5VX}5 z;w>oj(^K-NCvk_TWQ;C#%$n!n24izLb6FRe#yt+5OOKULyV$xuU|k=*V5s4KKAoDD z(OgTLGnIUu)?B0zE1v-Wo7K%a+$J%p-p82AxwtpQX!~ri5;^#tX$My0l_xG;9NTQp z_m8vy@DOyk;OGwEWDDsUF#?fL=Es*QCUrPt6Q%weH;}*9(I9o2MCp*${3JkKbbLVc zn|1Yp5BG#)pOgl>mry8iYY+inR)3X!g9Xles~H~?JJd^w)MYXg39i%!${`)m3{u2c z;iBlyahQ40ig~oPWlt2C*&J{pXcF>h5=Qo^DfWw9*eq#$58QO|Eb{2~=Bg;hP1#0P z_Cmb3m95wk4lZ{YJNcWIesp^jQ?4)do?qa7l;{Mu+=1K#{)HwLZYKPMccyf5)Z?9{ zbCIw3$#!$cY_94OS`*hPFna>V3V<+xqE*rt-Wg-3AqPy{eZ^a>@TC0M>XD1g{}y=g zS9&ouj}-$^W@c}d{)(skXe)_I%#=6@H;w{o;H#z1N5KqDX}`a#M(1M zTsMJa9>Sa3BRq?(^tQq_pN*nk8K@Y4N4;*x%Jw9f{26KV>`PyV&&~7C6Fd9%r7KR4 zlFIezp6pWjOL-4|C=#b}UF*V(q%7^CPe@b}tiz>Si{@{lt&vzAE0xrX;-X6`dJ}?g z29q0LVn6c$eh8pKiQ?pAo;_$|LVh{u(4e1BVfkOT26^xRBI6jNCAi&$hrPZYP zslKqm=Ww%t;^y$p^!F%&;^MxpTGlp&>mj_RZ`RU7PupEFLRwJG&TeWOb~hwrxO~`N zrqfd1c{kR#Tt)jAA zou!`SxdpnVK=`|^gn(R1Y$lAzvwo4~B1VIX5RYK2x)hc+$^@oTv)nN$&CrAvWA>dI zvCHhUDQ@B``snAnt>N|Rza3OR2Lw4YFH(`#YTflNkGxv^h4F@z!1GU)r#a=i0j?VT z0ZM(@mb{p?dx4FvqXSQa;dl*etLwt^imR{bXeA-6(}x~B`sN{kEE7^1H4(w-ZDXlHSoL*JM(p=IVFYlSm5SR%3PO>|veU*7MT3JCHExbu( zz0gWM+Ir2Xb=_v+VJuG%p=}81i*wfW5L3#%IvPU%#n#@pbr1IEo#*KM&Ss<1`&kO< z+$h7M4=hCO^OQ&fVfj%*$3ah6fsKF|1eSMyb9rGJPoO6~*eCuqlJn)rr z$Q?<~)23I{=nIdopmumBHyU1gpbMJs{Az;JB>mN!n+DGXf8^d#H@HRjO>s$-NcHjB z);Q0r<Ejyrt51yY;1p6gqBHw+Ko;6j*9>A0K*Jj5~VF%D?n&;@+=$3D==k zYnOKp=au&x3OJ%_r&`B&hSmB@3BvKIx*v(zl8tFBuy4D;e_Ji$=Y&xx65O~o*zYU% zKSkiD>6TZM)Ex$}xEu3ZHN|(CDceS)Q9a7K*Yw|5q+@U{yR(*5Y&C11wf|JPg8iyc z328o92%Z0u+01I-$kxbCLxa#F@=U3IDGIr|z_v1Mx!)c>DR*9zV5* zM=I{>E9r9+URhY>vwPMPRZz7uVXAr=?@b}IMC<2q>y%ahoU z{73OE`8V>kD7=nX*|pOm`N*oad=tA|!sVieODFZ>OqGl0pNw%v)y2gcZhU@TXZl}; zu+GgfS#+a(#$!pE4~pe?C-|`}3^@z;KCN9(c8e*A2M_@pUOw^fU(~)|DAx4N2igha zt?m$SxVSJr($-ly>9Ja+Zm{uD3eLLdar{cSIrNAn!WvbDvM5M$dyoDNz0`3cz37?E ztU><3t8z{I>L2L7d|c_Ir|~eM$TDl$Pg~a}#cb=XnU#J%smQ511KB8|_uWDI=hQG# zEOVA*ZtByg}c&|?{AHZ+u)FBB!DUrRD+Ge9Ol)v%;AY%>_hH=C%A zZ$|b?z7fi6;GvEKer^OLJ4S$1Kzqf583BPo>0D&{@;(CN1!6B#7*KPeRz$=t8B=0G zX5u^02~rYELV$g|11mZ-X2bm*zXPm+BUHGIU(!)>uat6@fL05^(h|bm5 z_hUdr=!M=9h%sz*eIG{@rBLN>8yzQE-v^(V16dE@a^EV`uwEZddz~kp1%zS%bRlIw zfXX=e_z1!P4(16;jv%)a3eBi75JS7PagKCG6g|2Br(>ePdesi8QTo2d&Qx13Nw8Ra zKKWiOULL-9VMJ0+4g2xUfV~2S2dr(m#G2OB08ND`SZ0J7+ zSp1(ignjfLI+RTCAw0{H9;wH?%X7g@4OhQ-peUSOOst7cb$dEt@JS_&04*wedO^{D z^F{K3{f>c0yJE#>%g~{(y{loqdr{dlbqsd56P-N2g-8EUN@&HpwVC! z@VQiGzZV11$U|7`fYZAV-K=bcV~ud3K^g8FV6;;oJQ&L4xs@$yj}K}NcF zzy(2R4#b=A5a!}vej@_@>prnS4@bj}yZ|jQM3e!96ak6^{OzfBuiJ=bB{X#&$=m}L zZVVt{&>8?)>JBQ5z)-#cMK&nraOMYn!viT#X5jaOq65+``VQ=1D`6T$s1*pJh@c|T zB?%9hC~1!$g9x4Jze(2=E;22cNl4aa9txyBX!*0IkEvcpa(hG)w{PRm?=U~v*luf) zVQ0`AjQXw>oz!e1xp519_bBV>kg1%`M7*&r^V`%Y3ok3x=NOCZzByXApB*UbMutxD zHxOo+sP+EBu#^g2+4Cf?4tnkwTCDtLWsqJ={mXdj;A6UL-P?-7xE7)Fk=&Rj$t0>8 z$|^o_q*R*9!e7~5X1pP`$j|P$ru~U*$vcp_1kD-R%GYR)3MR?)6xtL*-X#$C&<$2h z+Ri=t>^RQ6V8y0$`$d&_e3qd&w{n)ZJLTDQZr^U$a|SE9J8;Alabl$%XOt^BP^L*~ zzo{kSypbQ8K&GynPV#iIm6Ai+G&3nF@+5A`*@e1YPk(;*Byp#^&1l{K7R6-UKOuKt zP+f&&HKB3s;VX9XF?Bi$eSO+*BP1aU2cs--mSGTS?0J;_i>eXP@kF@#fE^tBe;_Aa z2O+FY_?|sz2O_EhXvl1W7CbeCjBh|S5dnfTqP2*I%o0TQ6m+3p<8eI>E8<2pB?)Oo zqd3Sm(!u@~X46DQt-01zxWk_kkyNZ8rVUN!`w?1_$ zH5aq?kwF<8P9<58aBp@_iSrBoj-{+~tH8BJMaG1*@(XGR-;EZ}(#WGW!ujpf79qer zeNtrfA+O+t#jhAjC4a>q{ZFouXohQ6YzEiZ1Z zf5grgAli_=rLXFNE%Gx$dmE>P-XrE(0wHB#+=EHS=$8-P(_J@^jgnbe#OE!z9510D zy5(l`-Y#Z5Pbr>*)zxhoN)?rbMup~DQ!X|89P!B6+K=kh25SMe0(WMA7tI*>8|mM0 z^|!g#zQ2Nx&4(#iVX^*nsrpSHM|T^$c)_Hj5v*EHa+D)}=xtExMR=lcmaApfx!|g7 znONXbwJJ@GAFbWbn2wO!5l&a=pED+q_7DJVhYN}pwQwXUf~Yv{aIv%NErf8hV-q2Q zm&4=Z_jmIDITzBg?RguvYW1gr?cWL?IYI}7%}3JqMBhEBhR24a$GhRr-bWB$CqZGx z2{%^PMX)UQJ!5EQEC{$zEwcrw(`#Q#mhsdS#k@zeFQzd9(yBD9dtdpLRvVjrBj$U& zq+Q`J^4ZB{sPaA|p`SO$aw@J|9bGSjiMq1~M|`2?e5U#Qd8gyXp9oJkQ?l@=_&R{fIG*AHTmtt+6u*_((Qy|Yd_7Mt4;kZDSgB}?!J zcHe91vjV-nB&mib8{zc2%)ol|^RjWgxkUsxpEi&~|Q2*Ntd8+=7 zv<%krqv$3Cjst9@23)St(xiLWs)=g?0+yNSWW%H68!57Db8j7)FW-tY7BG<;eRwcr z&{_T=gj`j^GWUj&538Z#bdoFETCIIcf=v^s9F*Y9>7*zZ_c_#Ty0nGA8XtE6VVP!F zN+y#3OQ2B&;fB4%mcMujMD7OkWcFbTE}q*l2CZL6mSoTX&ky=B0=%L`bYgL!rOQ{} z6|vx2hN#*FfBN(ZVBlnwHHaP-6%^wjjZ;0J{r}>`D#aG0bBMh9|0`Hx>3=+&q2LjU z4gF2J_BK4h(DYfqOMM@;WgN9%n4r1UAt?PdvzDjLp>O2&8sfgltf;s}=G{1I_*yHJ z^h+vn?6@+Y?T9>q;l1CY&jrlKo^kwn+TU_*+X-u8Y%wB(Vfo6?WS&NG@kmG23%SPU zI72@fxAeJq`g&CHY6i=`aOy0eib4r$r*GbMGSN++kDe;I?!V{O>s;xBITTs?)T*?C z*P)xVb5bogN+UhVmn=!5CctZK^JZ}+$y|B{?>2_~zJGMX#zDkeqS6gi0iV~4%~{bG z{w}nK1(y?T3Q!ZeGAq2Kj3$d7Ou-Q}k92S2QQr!(IZ|n}x+1BSIi)-Q+&q&(I;x^2 zxD$8JtKI6vU8ibbm1NG>z+gyBH2=}P{lcd+jY4UBtR6pp9jJb?ol8k7aTLY7JL-@~ z{fzZ2?l7a6N9`iHax&cz$O0?F2{es_D-E&)fwaS0-+fGnhKMh`k@-#t{B4MiqL5k# zoP0@McHabv8idmM7uo?QUZB<;@%ps}h{X_wS=4XBsm%tW!~_2->GwDhY_0I75ixx) zko?uQuoy2<&7cu;B>L~-9xHN40tdpAgCGiX z4^BWEXPz+&{=3wjC=dkF@MvV{pXjHe2ckW)g&I}()dqdJcR(**FY4ye9s!)^VPNYW zNr_5gB$JLv76lyZmON`1ute4MVD^wP8{c6Y%ku zEKuj+MBcZkx~M~(KSjkA`0opt;9QeyE3zT>!I)!V3!H)9LdV1AlZf0{xi&)>AYx-@ zqY+n9Wx$?v@>5BxLX4-|o6CdA6OMgUb3BALX zI&?#3W|?(0^^XG-;&hGAwYbz2x1JjDD&G>L`(Rinq+WlqFX_#g{0ny(ZcDk5Nsm4K`8JNL>#nZE{|V{ zgiYH6Oa&A{6^#MWtw*Ro)aKr#2GtKh(&n8$eE8jf}v-U!4_z3W@HH{LlKQNjAA^tw`Pv3?P8~1HtS5vW3F^Vm2&& z%J+QLhKXI8w6s3NcL}hgt&TqBvfeg`BG)46*S8NZBx4a*3=gE1CNO-u)SZ_)j!F>0 zs{YdJNyAgs?|dQ{!f*QWq|{|$cP!E6D+K@j68FdJTWa5(Womf|3G~_JPH=b!X`1lp z@oc>1npD>t@CnecLs?Wy`BZq#m27_WIL;)Hh)@!_yGYpMncrQM{@CoNIB9%xPX@4t zTw4PSK%4k6S=3h}nPvr0K2^>>#~};Lh?%~Esx=vXMxx2jRMzp~`}YW=(KN5z?RegA zt6q=chN~wVb&e9ooQPH+KRTw-8O1fpsQB=~)>n!}(lClsSOe+?A`kT%}-`A&E@Ht77*yVvPc zKIeL^Px=ckFP15&_e8mBX>9jTl#EY4HaMuTF64deVXn_d=EoI%EpyU0qxWQZ-|UM z(~|;XCH)B}AEP6ODS?Z+W2*B+sD`Ion#sV&S1zs`PJUqYxs)UQ^?N3gwTH6Io<$Ej zqlY)XNAhu_sC1O#3N47G1hyzAI^=gSYk7~0Cu4406N?zXi0u+xKq(*|C*Ui+z8~R_p@@X7D!cIMm|^c5 z`%7>LaE;Gw3Aduqu~XB<#>xgqOJ(L5KC=nj|S7Y}$n$Rpch6KIH#qVEnp& zV8p{JtFcO4Cucf#iv1wccAq*;`?nC@hD$@|to8AR^^xnq_JVTL`4HM^v%v_z+g;P8 zBGuif_mf14*DmEwCg{vX-RPWh=ELkQQDZ4=d}8{$A?x7>rt$U-(g;Ig-1l+4pyQ*v zT%aFSQL5zcK}%#67sZmp_s!WUxj-DKmV~T-41Ct|l`(jDioACWel@n4p9uO~PKC)XGm7OLy4b+^59XIW8-s>5wuGcL&< zqg+jVFjQ-#qhUF4o8{jfD~+BV-hk$8qK4-dfEHF0J`m?h5)hN=Q?fP9P%$>&CJy?^ z6LkD&n2(~+#jtIQ^~y%3iDez7ej&HEavfLx@^kceEJD6{(Nv!tw$?l^IrV0MYar=jMFswb$)z91@BPQj_sg*xG1Xt~?=dfT=GlGqt$E^>O(FTY zZf3=V=tq9ygCk#+Ewtlft2@+B9A0vC-OQ z2}(S3Ld-#xvL8QejEMrrm1HilUF~3HNpfg9{UsdT6Z>GOVMOWE?*E!H9VJmTT$Dty z9H4hQWn`C?C8SnuLo#uvhths1A)$da5libj?YJychhM#qUtK{gdMI9J*F8A@($V(V zB3G>zIH3p|S8NoC-xwD-H$JBx9hH3g%8+JmsAAG9shcR0OiGknBvv8-C&x+!_tMZt zK?SNSE-5u@8!eaP{3&4U^fA^C4`R_zQ6WLAl|@y+Fw!u=aOh6s50tuSi*67}TWvv+ zXTX)7lT`}{@GoADZE2xG04^|nvN^;zmYG!n2(}LMTLp9lXa8p>0aClrKNbDQ_!2ZpZ=;U} z8DR-`Sc1GuZ;528Rm0TClkjE7p(;t+$=rr5O-H^&2GV9_4{vIY02_1w7>;YMyyGw1 z$W@H9pWqp+n{rm3dTZR5j`vBUL5zCn9ihfp@8b)fyjM4TOA2OYzYI~bP*jmTv)PR7 z^Z52dMN9A*Nr%h^$vmxAL|xoFGspfSH6yV}T17#@NIXJ^v=sF_xYQXW9Yw5J78-0m zzMb4>!_?H2oe2qwJc4!H92}HD>J_AVZ(gW9By|?4%(j~lXWZCtU}w@k?|Sgv!RshO zM{&1`uQ2u0EkRTJ>p>j7U0TP8ZM35prH!F${Q80DBVNUZ`PS{(_-3b;WX>@0)kbah z7G_yPyovSiO@up{?+ z=}A<2#4G5v)by%W>NtrE8ml^Qla4a@)O0A}EK-h}dytnyMVLZS$zPAQIY2{-4KnU{ z&P#aMm!KGH(!$k0N^eqg2^*x>vBCS%+l^tiqV`$8h&cRCo|H-o z3CDdPdA5{nZ}|g{L-XP@(|6xl^PASUN_jSKJLQMO-FWvGM^MyWf!Qr zg7UE_C@28-jz+{r(KdJ1gF9irfA~$TdFP;dr54xrTrIhULFgZ%Kj&-~HnxpM1(vcj zS4gyEbdqumh!B`(I}gznp2I9167CnY-WYUb-Ud%!e|DVErs1})^&&8pX?OMBvx;=V z$$cm75#6QV>NG{O<>0O)@!CaoQKK5GCW9zK+T?;;@;>20Oz0a0{_>Y7 zUUgBrjj>G(k>~;ySuX-rfuEIHRUpsytpfQ77- z&(C`W&xWY;C=U%-UWjvS=WNMDkWtmLvKrc5rHCl#VWkb|LJ$OG$edR%Afdda>OEnA-w^U$!9RPDuXWajdx6yIO6^6Uc5+tEMtO!5&}}$40lg zP7+l>ea>6aM?=h}glkh6M^lDQr!8Jk$=>B?gGsGvgxTuYS9c*<6@-B`CJn2}BXR`k z@hhRrn&{MG6LmAokbNO#o$0&3Vjh>-yC)vOC3QLWH|GZgD1N{H`Kw5e>iy28SGiDbOS%vFwR(AAH)z=XAdwR=Pb z1$Wl9=d8X!z}gdHe`Ba9UywAFngNaRek)oIwV8$cfX(jl@Xh`F01v9?1c}z9)8YRz zU-*=ugU9yas@q@_ze5#E&~=it6P##aD%?PnQWnMvQHt(o;)EY^a{g^U`c=<=U6`Ds zu1iUBrmZ|V8xo7Cis@btA_@xsa*1ey-qE3j%yE`~mzL)F@uBsqHWL-S&tmq^Z2MYH z2V?RNW!0Q|y484r$NCq8r=w45@e&~p)49_$d`w8WlyaE3 zTz;L*xf(BaT6vr3K^?K%P)iBRr;dc?p=qVA=eDB@Lc(Z3Yx&+kbT_;F zk|oU>gJDdX8#HwKy(4ela9zDhYpc<}0{XO|aRH7Ip#Lpau%7QrI zW%Sw+iD##_nHDO9iA5kvOtDb6nkfE5lWvk?JuFHV4ay34iu%jjq@`8Pr{*ndMYGP$pycOml9%o5z11uQ^bO@& z(&G1Vz^E&@Trjsi>2frAFH%BurcnR9U!89~ynu^d%1{v1s@JnGr8^+BK@u_4%E43x(>3v6r#IV4aUMdAVR>cO{j!`r{W;lpb#MEz zZudsb(R~~yri~4}I9c|M8Ic1ed)1ffI4Sw#f~=HS)A!dy!NV#mYNf&4mnm1oLkf(}fnDZ> z$4T(#SdMazKr*HRI>_iHE0a^^iO~_64C=AVNP?Ok?;vL$V`Q0)Mfs%CP*t2ZrSuHE zk{`d0GpDwdwoL3Z!$_2;<%}@n1)eu#lToQmr*4(Upp~Nb6a1eHlI7x*ORaUGRUP10 z9F)qonu-hkzPn>ESFarD+;D(4TTSYwbiXFDv~`(Ro)ks>gMLO%+@~+0V=JgaH(14= zQ|V`gnno~*cK=>sf=ki2r&W6VH|jGyWc%AQ^f+Yd2TyePEN!i^w1|eL^`B$UY-bVU za)itbST{6xEP60ohT}>_Y5TSnkWh7yu)1zIRosUy->$Rq?R@J<@Pq8<&f;zl&W2{I zAGB7_PDr*+AH6Gx8Tzc;CWrBr;Q;yyPZXLfWnV|q_x;u6_9^EfKAp^T)VnZhC#p|c z#X9<_9k2KgO3RQ6FEKayinmRwqfD4fI|cx+i81T&ykp5Ptt;(0|9Fu^-)8BbXyxKKWk8t(k;l-klft zq>Vm}qk|{6PD-y&@An%nSGb;;+?MT}eyi3(@@kagj6s&3B3qd`U~I@Ncd{dn+hDB4 zV8f)uhAuGpg?T9HWOa_);G(X}r3Z^Hre!wmFFLY+Y;_C@-EgaTCwWXiTPjdj7}GlP zK}h^lCsWhd$mrc2?n(WR{yCWgv2_e95TpVhy<#n5OXpMjh0m@= zCx;FEl!oQgSMQ_#{@AO+(uWsrZIkAX&2ooUNM+L(#cnU)6}S~q4Sk4G#;a3|QF>fn z7DWGz<|5PmsE=33?q9f{^fC3N$EgQ9{f#BXJ(hcdVUeM}&M@C>8a)uxTfp~xN02*N zSuYVnE}SQBH$NZUK(_)z8X~8%e>#<_l>hYaiQ6$wG9q8G@aE@jk2|a!y^vUAPW$KT zFVj2-J?!XXWnu~fUeI^XyC!F_eYWz98~IPpJb9?^y0myln0=#>KX@A=AIE{_0R4cB z2*c=KhPJ1_r|?z9ji!u$`WIyhufOs9lPgU{#f`DhS%-SY{l$lYO^nj|t^5Bz89A#& z>=syo4*mJ{;m-lMWO#u`f<&v+UvMtSw#O*z=e}+``S(*YMb;CA?9ye9mkD z#Omml{&fmZ$5z1qPh{ZVpGY5|qeXH5o3#D=*VURd#IoZ5{Nj28Ai)2-$v?nG_(>kC z8L+zj2t4XiIG#m7FaUFEZ`5>ty1U$&g%~pcAKnX;*e-)QU(j_++uWJ;_TN8uz{3({ zn>$%@aP|x72_T0=gmBmkeurd_sP=p3fgF!0z#|kot~_rtI8b!9&7EEcV-Um-3<2Cs zc7RAf7#?xMiQ*WzjE#dE-*g<61Vfc{7N23=IxvmlFzWha-$f^Y;WUs6WQvI$9e{Sx z+nZN`(fxU*ni?E23M(oq3dh{Fw?76>0?{5A_!Nd_f`$sY@2&Lww7@@hmG|W-sKw5< zC4=tR17O}iL7Yc{od*^(7o$HDscn201wDD*%@QE*iQf+biz<`SuK)qMxWO`gsipfR zeQggo91VHnLX=I?n5C$CKGb6@| z%g=*5bHJQRAfbr9pRH21N}3Bi5{s3SbzyXVwAp%hF3-4sgte~+(vH<3aE7>DrC&V_ zV_+T(QsNh9Sj2E=^0E+q-}gp<;I)8E!uHxwV)gP1(Ap?G{`x`IJuf06Lg60G5z6hW z$c>#lYHpkBj=wY)=FYxM{?66?0OBy92bcxVkkXdBfH*qB?Yc;7opV5TTn8~*1P{Mr zA3*cPOMx}1a&wgvV%zuxaAMm4UJ$~ni7WtbMZh&w!_)-x1w`)22b_VE9rfQrBC3d7 zVy@Pdx)w-xHC?N-X#o1G08fdBFbjs;sAItVM`>@l^Vzm%dr@#bAk};Tu$pYYZGBU7 z^BcT7gBwXSq;r1Y8MqBxT)F`bRSaFr59Ki4(q9;Jb91YGx2IKMAOi;&k%k?-BEaSZ@6Ob+9w#T%DuVG$8z1Rp8|+uW%VV=!Lz z?aYG+abu?r%*4UiVK&Y{Toa6OsS=~XotG3B6LIK3sIefG;pF-@2NQA11$P#!z6h+l zM}XTxT&ay}XaBi-yXOW=Yr|*lx9v%7-wl=DC*GIY-Z^WAMFCdK)aLG>{tSlmh-I1l zuDi&4f~Mx?;Aiir;M)S$I-PIaK(!NDcWpZ*U}uDheqpxG-1Gw{ z6PdG=P$OdH0u<^zu*R5~zy0w=vX4}3tn~kVv3oZEDHFr|`9fmFgB|Q2*4OR8UADk72wapihP4L3dl83l-g8Jo$Bw{eFz54$S_gmx8wsulxOXEyvxPHiZlR%|X^fDPV;KYD0Ir7kP~Y3kdkG5Z z^Ydlmc!J%BQ_edulbwLOZDtM>Z*WGrO5q@`>MRBJ8?7avS~|JW-;cU}wtLyVedD2m zea|1a&Er+|9C zdxaix!9qki^nX5l@Bq|)*6PT+Em8(n9nvPNdbl%(c%U2n&|>&9eaz_9{JU)0SL^=lhs?$CSFmWONQR#^JMa6;+y#Sf^W(E$ z$<|Y(12B-|;6RT!7}G6fa>fGk8xWQVJfLae-TWu9d!Qe_)av%vObN*EhykbMdw&H^ zCRsVS{U88Qh5;-Hs9`$9%@2|4fgP))^0Ni|R|T9{@M-(ktP9BVJ;`qO*GU?CK5*5~ z1?mO=+5XmzOjdAFeCPdE6ENY_fCYuU_dfT{7a#ysJn85NChS68`{;;29pE2qKnh>~ zXF#__Sn;+L@@7Hw;UnM_Dq21OAsU#>8jr7}K~ztGaEri-QH2vMPn)gdf>Y9Zcp`G% z@7@3OA#?ukp2GAwT%U+DqjE%v%=lq{U-);B#QYB1#{nQ|(lRpM!joThc=JRP01_W5 zLSBUf+6u1!I$IhEX2zFqewX)_Zv!`~qq*(?DJ?KjENCuxjEGpS%60WMH|R>CG(`S~deuAE>2LMq_WfhflyW=e<$ zG?FzWyJ=;tBQ~CYz;So$Z8hySqEA<-=FQ!v$bnf%sPxyo$D>7X(8`M1vM-hPu>u`zo&APMgj{ z25egP+O_UJS69O0%|L5#Q54EywrB;_tXJ>51Bt^+W3i!D4W3Mz00SK7l*v^O@L^l4 z%diqwQB{3K>X)a8sHuR{{D<4J;A?iGk(!f}0PF4PoSF}8d}nvmG{5@Z_Suv0n6u);bjlMyMogTNOy=FeuzuqRdDd6TYAhnia1F@g4Q3)6f%r_ zsB+~EA|LSoNO(~N{A@I=H<-nf9f(^Yo=JMgWR3A~6mD~p&mK=e%R z$c${GK7!SX?6cen{qv2s3+-N9h-3n!cCN@A%7!6Lz^bpSSa5-Zb(BT@4UmE!?WmGuuqA{Y z>vp3+#kX(YJYW=U-aNTxVhrIH)m(l#Fmf&qL) zXUkSrtT1tKiUIZ-US|>wU%rMwETOC!1ik{Imt+l~a^!s?*D8lK1iCzk+nUFx*R+W4 z4!EG-YqYgXErQlrA=m|iBQdMi<168md#oKI0XB-2MiQA^IZfVNff{@G49by>fM#4{_+Oz z<=w66N^%H4Q9zUdXIOF?Nq71xy~+qMfxf7SHz8cJt73ilfI9Uo%B}<17JYmJFVP zEsm2BE#Uc9Yuv;+p`z-?%HT9++>)dU?ueriUc%5?e!;Fjp#3XOFNQnTj?3Y@B zDa5I&TTrdfl6U291QFP2v^dWs_<)lqTq)+ss0#^r%0hlzT>A&=wHnKwkQ%4AWxF7i zX$K}<>S!*8jcu}7AXxS7?D`>uajdq7CHxOQZ92hZ;ujRWpC=n?!M6k(&dz)zo6BSo z)+IpIjSdgDRUQcul>TVn57FB7mCn5uC;=G~gA1fSmqhJw!RuVNw{AoEAS4el=)49o zkDrAl9PtSahSYqq6;|n4P)sn)S|f;JM&Os33lpJfX-~5Di~Xy!dsqGUnG+KeZ7;?S z+_wC>$-&2$s0nh}99&#YV3_d~=Gs&6^~}}%da1GvruoOOnME+okNni`)|3Ct^R&I2 zBto@Cl1zfaWr_OxM{2(|HR^vpBhjtX2~+y-dnBk4ar}n={Y<4@`2y9yKLOcx3(QWS5^>8U?dEicLug(YxkRY!AH{P+4L{MvBm z%8BcL&b@ZucS}#qF#mfs-5BIPdX6*IhA$ynW0$|B-KzTU(mZT`FWih|1S*=ELoi+O zmp8#})gO?Esi2kxc^_=F3IttX6%heobvgoSK}Dbk0T(41?CB##${79tzoZbBBqHhY zB;=B4I{>AT2z)UJVgalSMF=lxd3nKa>(c&x zBzM2RPt=9{t`J&Y0HrRt6@2z?B98}(+oViPDUd8#L1H!EV2yB~E}#{0+rX)Bg<(A- zvJ1d%*8qu&iPi;%nKUr%!22-?YU>rKD1@pE>+get(DJkk`#%quy7cJ!1SNA+>JIp9 z2*Wx)+*_iCWqmjgMGX%`J)G6mRTE=K_L*_fAu8aYRp?ccp-`yiJy_f%nDWvgU*5H6 z%Z5I0U0(HAfvrVgfbYL~v34JwA2lpc2oilrS4J4r-w{u3llE73-xdrhlv3I!9S;|7 zFkq-tD1j$59w>7i%zt6@C;fLy@|aFXr;>P%(n$OA*BDg44Ey4daKHyW;o2rxJs&_3VhcJiSNy)ve;UtA6zVxA121Bs zQT6{8!dgrR2^q?r2jb`pByrprp+x(3Y6SCX2oBy3KzbA)8zJk@W zTtI*nDA^$nonnp?Xs{R*AViPs^ZvKk+CFAWO%VKd3uJYX_^|x@!v0?_w*M}b>X{7h z;J?rQe_rAL-RA%EP2UM8H7r^fI^`|A;pMfq*nkpUr_zY8t}_;DJeZp zDbL{FA`&wz11>%#DmYw~#dh5CH+WYLltwl< zV1o>20E#lTpgM?!h?P28*yG3a$OaE9BCvAXs}_7^k)Nh$e*@bAY_Ta2?J`fhIIePD zzDy2NtRIN7>OmHMus{2Q!TBVt0MNrC1Nl>Wt^Die>mpE69{ljT#dWgDA}&q|EjoEH z?E^|&H1K&pLQv@{3rJr|{2MSZm0{tCz~G>TaVHGFem#hUJO6zva16i#=j|KuZ;&q6 z8sw*KEJurNciAAl(5IMgL6m(IavcZhJ6zc%y^x<_#Df zL^uizL02GkK;j(Zy>(L1q`d^aJF9|fS`yeEdHq-{jHLpP`4RU)F}Fnu;FMy%ybHEu z;y;h~5D)$u!IMIx|{~13uPrKLXS8MxQ37kdp5`6cL%(BbX*)R5`!SB z&4a@z;Nhd7@V7jpZv`DfA^*5hZp=!_m-gq%aOaTu*q(7+5py!^4NX5qP&c&^fsj z@P2q$1tB9sZQ2h(tnaQ_<$b2h4ulsOq>#2QC<3w=b@_|@Jo%ae7VT^@GVi{MBvK2- zy#0L04aS|!P+=xRcN7iH)644slE8k4rd4F7!ABkpEVv`>Q7R zU{*kT)*3c*Y;sNwIWse}%HP6Dyk!uc`yh{oCzjXNCP7=N>->U(aRFOVCS=EI^H@cP zj>R>kB>)y1SZK&Cp%Zfoi0SeCqAfg~yZd`IQeAi{}BGfDWu&cvfj#)jE0Jg!_ z5ZL{Jj@jb1xxT&vjh5~*w9zv!9Y~g{3~Cc#^pP5or!{&Rc1xiA64#Dz=;-ND6crVX ztiOZ14gpLa(araUNiq160XA#o@eFE=!Xf!ZM?*3L=$haFkC_GOq4m5JcYil;dre4) z7~Z!s$j3K_Rzsrp5q9!Za1w!Kj4Kx+U~g}44UL^s5SXpo(0%0=fouz6;A+H~@oG~@ z%rfWzi!u062U%_qU%nGwqOH&c>Y2NM1|e;rKt8g0 zA0G|6>e{7hl#iwTE}}JnP6IfF!!R#>oCod>#nmWzS66@7774OHn9NM9mA z%MbBwW_)>{NtO}mu@!C#)nnzq?dkUNVrgZNWYi$&Ao` zc-ceFdI1eK-II#jI{7~ONP`%-V@dGdpxKKLJvLN)rzjkEU?HNvP@_*Y-M*QUPY}9% zLH5TwIdbB(_!~AoWd8`ZcnQTID*t*gvhiu_q`-Vs0+V&HcPM%Qu?``}oK%q@do08hMCzE%x03-bIQ1JJ zvA88xs64Nm;~|AOi1l6s_G}+WF-E|Si)}MV>y_ScgyW8^9+0y95rk&h=_>#mI8xETo=uDVTFnpLK!Ks{ zcoo{@$%ubbaGmtEYYa%5ikN-D&mkF2g+;d%?AvAH(T3npZko!Dhv;6zA;&%h3|ok2 zXlSbG!qDHFca=cG0W#Q%ikJ`=hiovEki_&Bj6EDF3VA~nFi|H@N=oXu)LKjR8>Aq} zkxb}xIX@#K64`VilB1)YgI_aZ%Z{8f@Ee68LeX$?0fxanH?~+4SPkkelA)t$11*UP z$erRpxWIdjxPXCe1%awUw-g`AaG;-ffqNm4$(9i5=OTwCNY@ZrC|8lF29qC1weY$q zkl3Z6K?p|IaWJzef0|i552A&mSt$$uRje-XlLAH6KFA70z&rZy6`*@ZV@o6MoC$=Y zt6td1+k#B%00hOY;6Ug~=x>=PLElu(x&tV~=m#O6BbLY|Lat{}XBH0<0whS50YUlN zw)XVd743&|l6Qh6txdrMbITCIOP-a?xo+_2}o;ZYr2MrCnMWqiQ zZ^J`6#_t1m1fX$E3X9+rZb?E;Ufi{O@<)@Avor|9{uj z_4!nn&UwF|=YH<-dcB_eX3xesC4zA?0fzkbL^9a;#4b>bNdIW0euf%p>vP-;cui!w z=gWd-xB$v_pb&_ZlI3RPs&_|=+W{(m9iA8jK?;|I^-N0>Q)%4o%*~=Hw8vC;%GuLt;c%?EpXG0P)K`sSZ4TZA**tw<(89;U6YS z4G$}Vp{Mj8Id!eQ>E!i4k=d!K-8jdV!Ymam<7LQ^YmtkOeVp(GY6u7eiQ1m>{*xPY zc1X+k=br9Kaw7VyTY#(Gfd(h=`M?6^A0Wzfuf+AKRZ_d02pW`o`Fvvg(A#SEsp8vw=fyp2zY|g<>h5tXkZVD6)&K#Tp)5y zH6im}kNeJ~I(0_o!P*@%QR{*7^zElVAwR!doGLdHytn@wcHJAIPlxW+HwS=>He4Mo zP#=a5n*qpdj8k&<${WDJZDBnR05VbkW(UUy)@6eC5}q=1U+09TSE*LUsbrsxzX0`85et4Dls zfz12m)XghLyQ~%O+*1Ga^iUPhldnJj01K~&sB;fn6F2#bi+gRUX$!@<8JSqy0S2WTMjMa<%q!}jdsI63RRu~zV{o-pc;&_AXF z!z&F94BVhPl=`CDmvVFrS+>Cp(Z+hvl4K!9fsEzoi#&BE^!?=EN)XN+^Jox~$}8B< zu+rWK(CU7wME{T?9MKf_AUqyfWrwb7SMPuQq6qoURGG=qdwWpKJ%;m@xq*c~{cZr4 zp9g-GcMUv@3-}XPh|pgBDM!6#XJ{@J-)=sQLtCA(9Z; z0(p#NitP{v!nUfLQ3KI9)w{;kn~fEa)I*$zs0)?yovPxZr;KiLF4kp0?VY<~SPY~k z@0L}CWz;Kg>EOSR0~JGLf#m&_ecmUv6ac)q0s5-!?}QE5v)zHY;{fA)o31?d=Q}z0 zyO)3DVbS~puyK$%d9QO&puv%8+S}hgW3d+#Ly^+u_%QnMoNp7W(>@gV&_dfVrOW@Y;=axfB`oM%4S0H%sd()R)mD~dU+SS`i z#V03!`;pIcN0E@K=ygnv0u3Vl>qx&mjp7LHy1sq4UYed&fI zE@6N13KN_Z3RLd%cdXMH^Vcpghids-0Bi=>$*!2sn@;sAYe^)|L!Ys8KCdgUr3M}5 z;rY0KYx?d1Cq1hBGv2c%*~H9z@zQyo{ zKhxyL4Q3s?v2g+9STsii>><2Kk5WNa2MchL3QR}$ z+$|XbDFZZ4)9t$UTWyq~yUgb`WZ}1fe_00nm-oJleoM+-4_QvgCZY|pBz`Q|T#dAH zc6Ltt8;dgdVyC2}bU3Mw`&+mz1L4)Z$OVEH~UG6)ibgy4>- zlCm^0)m2uku@_jw#Y17fM}i}EFE-^cU>FGicd>~jC zU>;~$VMzlKvl}T0piI@LBhIhEa|0TKBx?=z04MT^h)^P81vfW0AcGs)G9JF|1O3^r zrte}n`WBX* zgv1trw5K=d4$DH~G7kmt$#u%5iPn)dJbITw!|=&LN_8oCCo|s`OE~5C@84fi9=%kU z0hHm5UM1pd`!`o2tDf`?OFYca&o}?=I0{anQ1*?6AVuDG3M&B>Ejc<9`W3?3dpHX*s?bTn@Ayboyf~ei0AV+r0Zd zKw5YZzi-d~<6t~eA^g-eKmh>phz4XzfS+IU&dJ|jED-$X~Q^M&z3H1CxUa?u&~V{MhY$?9m4&t` z5DY<{_C3Z1)sStos8sa>I*|dCyVERugfH$s($58KhzQMl;717aFB4akyVjHA+HlWKNlc6y`DQTKO}W$ve}5dDgtZ{0jx9654GYn5K_c{ zfZ(+QKZFKJQQM zeHzaK;jRyAoJ0W4yqhybz+Zd{-WW#%9NG=VW5AaUGo-spxg$v)92fz%bO~UFT$LaZ z(4A}qI)bPZInldnI}=v$!!N?1(wFlb;e@)`qHS&orc0@9AN%l8w__SI@Ex!LU0^Mp z!`IlMl~0jtZ|qF-rK3pQiByk}{Gj-{#vYWFtpMDv0oHB`kg~a2n+`X;HE>$d(A;hb zS|7#?o<{&@q^TzYb`aD!5Ed4ZZNii=GOw`$WWqLi*@WHuPt{P9Ak07POyPLyML-o= zBECw%P$H{)W8r{BBQ~6#k?{ibLI^Gol`wK75Cj*=?Z6yfeLDrD8B*EQkr1*Aw(&5e z;?QAeU%C0k1#NKMW{*A3A~;e(g;Np#zZ0h544iy6WXe zXP}uM(oB*l_uz(rcWR5zG%hACt{9d>_-EA#SUq}PHBRs}YCr(c!upd1%2NZo*{iW$?6!%SZbCp{6;8w%>FeC14HEd!YmfgGErF-ni!9@p<$_8ZgKR z_71q2JUF;oDAyqHM0_z)4&M`kG0{hq{HwAOisB(JJ4ljz;QhKm93e{}aJj-0g9Ai( zVQ8QO6UfcpZwWRZ20op1_BUWFVao}k4IvqWF$mNHr7@>kSgm!DmO+X($A?Ogu`49;m z0GNPKMFX0W-7ID3Vh1@)97d zhWR2{AF>fZXAbf-fwBxMTkt>aT`Vp6p%#fg-vbsN!!z)p_qDFhF3BWT>u%;~DAcwf+mLsBS0^ zZy}EicrVN-*Fdse01s1Y5ZL?~f*V8fL#3ffR|pj>0>JUE*8l_u&h7-N8^|RD&jryl zi==gx27CnM@AL>V_4*GKDo=oL_ylU??2DmwaGlo`rYA#qt5y6qg*4KIY}y5GiF^k! zKGM-GXXCLy{F_?O=SPr}4o)f-&KzPQfM(6_axWu-J7|H5lzlJ)E9t~`3;ExJH-C4# z{{9~GQmal!M5G9C?>FBLxq0FBzkhPouUt+$bqC;sJ}5epLF%B9E`%VybR1H0$OZ%JxF84A zf%yCIi6jbPZ~{OEoLRAUl7Ee>@&AZi@D_-)NmEl(Y0W>45UDf(IOLCxSrE%n5*WrX?`zZ_4i=L)8I#VZ1#&2#S0`fBdQTlaruNswFGan0uT}lW2)GYq76th z+29S+@mk0K_X)K_PLoxEpIkom_XiUwLe|YXAx0tv9YU)jF&3f?V&BL|qg)WO1^gny zry@oMo7x9fQg`W1C#yQnojyD~ob5k)k4)6n%g7_^=^$SKWdT2UJ&3tq#7+foFoUZ_ z(En;ciC94KH`&zezhFP-S!X*AIEmktKoG(pg!->vzqUFl5xqmI1JD2W^8i0^0|9@n ztrYLt#fujqF4v#2D>cXpfLm3peoV@Jgobm3o99qA*C^!wpzy{pjYK1uqV+QJ-Vc{9 z{4)LbndvWb)&~6)xs!B@&*Z(h5HqnU_2L`B@PKA!wr=-hJC|%Mc`S7|mVvVvZE?&c z8AGf>L6iE?{70Fq2`*XdD85;A8&7Q+8R;+ERoo(lZ3SBMIHB;i#szXdDPC$n>f9n! zGL`b(x%sQhXyctG)*ASKB1Jy zRBoI{tSZlpybQ3Z`(T*%KfWd%HTWlH!++ikW0biXj1qmcifNUYF40_LZeJ+#D6BLS z@Hpaf9EeEp#UOf|ws-mnX+lCm!s~BNJFg7c$b@Xti&p~S=HMvbKqch{nLjTY^ zOV_T|uz5ItmE2SjyC4V&DEjNix#>&cH;$glL@b5jZhLy1U=E(l>6U|Y9;Get!R7Xi z5+cU=@sM8r%d`;fCKS!6Zub;*M6iO$Q~~i(K;j>SQp@=+KD=6C^FW3;t;SiEVAd+U zp_Iezd2hpkoL)YQ%=rq*eWBE=6azmE3+8Zx3micySSO< z)=m2aw-ci0Jg2RJkNDWzKKj;~(ZlJAe5O=&?p*KzUDf0|tN#`+f6jiZgQ2|ijCrr( zU9T+#=XH*OA6I;L0!H3^)6!~m%jqE3h7&|k+dgEmXgG-rp&xN4mH%#^W@tx?bZowJ z>SnNf+s`D77@@cz>>lu*a9M=yUt9yPUIf(-a-txxQ=-87C=uGt?y)BlNfGh_UK;Pi zpf&V~z^`3E^hOcSGCr=#K^=H#;0G6|1aFgvWNuw9A-B0sRkMwGxlfiXsqxc4{O6S> ztf$o`rDccBwzuue2oxsVG`!~*h5L=z^G1V1nW?w*$BE5a`!XWFD=o{X6?a6>GK@!R zDTU<8%)AhMx@Yqs*55g3f4g9DO_*ke*5~=ViT58>b1s$Mv(g%3>EjdzR5Xedavsw1n4k0*Ckwim4t zbtTh1#+byJGjw6?*Q_phU>j7{zunA{dslb%gtMLX-#2B|&x_lE zRR^T-zX#tPs0fZ{a9Cn-`Sox3>L)2j4G_Vax$aN{hC`gJe{kgjmta)tYmGnQD&=@j z^t&N^vt~$FYQ&!9^;GO-r$rjaU-Sc~=p5%oOu&KG#%k!1^EGtBAt+Z}-NvuRE-Mc> z9U^y1^I1Jq)8n&XLcPvY`-5S5>H4{QvNh#3WjDl{N*!75=SM`|@5w(1+*Msv&$pPS zquW?&S~yYCmaS1;yY=>0{@4LlSlx?%3r)X0$^7tG#u1K-TQ1DPDzdCXnvBUpG(;f{ zw{+|6YxzHCwtG@Jtix}dAzmm0>)$~`m+K4W(dE$$j@*@i5fSb7ntde8mW4UK16 z3&tOa>f=@|xaP_4_mLyQuf&Y8U5h%&Nqvdh)-7s&0%idu0Mm5t7Mo_(rcRoX8D&v)%ZJ zW3=b-&5Hic8|u8KVR~gT=TExk|73b=wXM_=^tV}3--T+7^k#hY>Ye@0&IN0(6}~7< zGCq0A1hjyVUXo@^zSqz&t5CpRJu63o5z&y9UraicLPRrDs3o_sK`&j#&W$xwS-(Jm zGGTCdZ{jIQ-NAo)GzewU%gu|W+BKkl8bviWJpCj{b$96Nt{M}g+86Aj55qp_)Pp)~ z|M2=+IJ3F6f7_?i5aF1$4C2YE_MUQr1E!F&T0_rQA71rX96NQWADt$>`tXG<-&Sp; zP4B$Lp4!eaJ{3ZK*V^D+@dtb(v^UAMRtQV>llC_)9rJBWgDNS4ZipY_lN2hSXw3zq zofpt&(Hz^v_CTs%#Xe z@mqq6S9$OOB`eAsDvbE5k_O9Vm4K=xWu|TZ{E|+}b}jW3o{r}5IO5Q}==^8Z9FyUb z*ZKLN#h)t2{ezQ>p#&XGmyJip*S2=98t<=n9~}ApalJF8t6!pockxu{wc%f{N>lq= z860l@IQ?IL@cj(hI=uIjhUxKcX3AA8rfMCXA+KodO3$xhh7r-!usX;mE4`7SuEPBIVq*`??3q#wfR6D-)4 z(j8x4Rta_+$~D?^WW23hPR{qxP_19Hf3P|wIG?fI_z{JP8oe0xeYJHZ(v5VJ!u2|q zYp2!O>Qnk>%={02Vkfmlk0l+aNUr%lv_$(z@Coq{`RQ zq-I4bD|8$PrE5qgR}m$&XAmxs*QX3*oNyN=&AA0ghx1wn3dXP{fPjRR zUskg~a^d}aw74d#>tUV%eKIVOj&ZQGF*!YRMVKv#T$suP%PHg+Da=zAJu2<^GEj}a z-C2C4v7UAzqPL9BqubkD?uTE`dR_GTeA}>8;>`3);10lI7Lz?9bvsO?CKrFU~|lWKg;TZ!!?7G6HSu ze^UiGV)BPFLk9L8`}Bmz&C8Bx)YkhJ&V^^p(YYIKJD0_nvs;hhk!B50V znSq5u)spvw^oOPcJO}|O)lR+`c#;N!ArrSdq(b8Mt-4TofU8c3$BdGkmz08oA z{ruQnqN(8>$>Bb|BU>?+)ZUWfDS?Ia*&m6A7zb(Y45Q;Vh}0~^^59SIT0P%QP$yLt6TQBsXs4fjr)<2H=&=r~T3PY~>s)HykJTKor?y|S~ARqywnQ4K) zxMlnTQ@KQNYUmYFZus0!z-88c=y$_ z6$Yl+Ey-&wWvH8_UagHAdf^Uy1le!D_8t-^EwMS_l}jls6noH>E^$@?8m6sZNkTsu zBkiZvlcNhJG{?5?uZN5Wspc~1mVV7lZhik>y}TaElwkFOQ;<-etIge~i z_V2H0TYa3-7U@)~q49W0iMWjzt6IUai_vETx=ZQPx6>)UitP?9e4QM0J2os`9`-){ zU*rZOVCRA5&ypjHH$p+#hUFrNON<|Hy_RpxTf1n^ULIVwbJ?p&?Opa)bItP7ruq6Z zvh+g(e{BkWy@(rHXRKh%t(54=R<+978Q1ftHDi6t{3_LevBH%9O{d)mToQ z!yi^V{rw|X{q9d9`ps_^UyN(^SSDEue)WWCYkgFH@t?8#bm_fPhF0AlPCgPCJNp8! z?ymsm-nKz-GCeK9jd!wMRq?|cN_ePAB$J0F=a5S*5?rFWSR%zjK0$Hu@14!7=62@3 zRqOGXNbJzNsEfwgHv6Pnadu#+t7T07P=^yf);pAk*fBQwiWAgz{CkA$quM9-Ru41f zy06L&j#!}#eS7L#{o~71|KgJ5s@b!g0=h+%Q@0uf`m?CoHeyZ(^azvqnoG!%+R?f^ zH!T1AwOao4w6*>itPGVxwm1HJ`o2u+bw=4(tC{ZA2NQ9q`wXjtM_=IL>@N$?n6G>1 zsatWyoU|$knE4wXRy_Z80xLOoc4+>pye{U0f8u-8dqv@rdOF5c<&26t`25Loz^0uS@bug*&r_oc@+I}AAABx0D0%^%N%q+q5lef@xHM>xOoIeD< zS7a!9bIu|wV5@!(FR`SD!P=}vy?fQOPS?AMvPfbL5DyBXcd3vHwXhuin!VL3q{-S) zI3zKXR!Lz6=NsG|UjmAg-oVsjii^dcKK75|2N8X0k{qWyvk(j8Af}8pad;T_v8H&> zNpE3DsI2KjIz`Iw$&eh&+J)`<<@>Kcj@MZgKFa>LKl6HD&VI2jX-3`uy4v=^PDVWR z-3b#-YrExOgZ&;()Y;!Vf+W-dyN3Y=>pu*~wLm1!(a6$1#0mFP?km4RH@hH}!|PSj zXt1ZUwrCZRN3ka=GKV2A*>ROr6%cRSB7{zVS~$Jw@{-H-B^QgXCOdyKX8(@#Oja8) zLdqwU)@piTn^&S`e(0{jOi3n<)QAOU#;}*=to&UivK-m>Yaqn`-?-t zp27naxaNVO6N1gZUQm(u>Cx8vD=zZ=b)c}4i9D*0%C}h{)*KVwFd)ZX#ODbzF#GMb zIB6BkzpSAaxD;E?6kS4xp17e|#-tO&Pv+VuChN|YTgOUaNI`K`tV4ua{LEzCx-XIZ zvWNd6Y;6L5-??o=Y-77J*<}6lX-u2>c7Q{6GrQCYVH=G{FG>`;ySZIn4rZh&Jt?2) zEm81x%4ASgPZ~N&xoBGJH1{CR%xm%+yVH*gJQHGt)Bibx{%T;DRH_;CU!R*>`M=5t zrK~N;ao9CYwd&lB@QAFMDcV1@$2U8%G|)wnBaITk$93Gcbb#ps3$Q z!qV$Ko=+cg)_NAJ52KuzT@o|fdeZO-au05S&#dPkPK%TB!ujGD8ReiwBSVKB)#Fj> z$IgGq2BXPkW?ch3*p0Ll>1%xboMg`TE)7LF51^?;E*-8%=gTx16LA!{tDF?4%dy^@ zy?o!R;v_7nJ3949%WO`yw3k;&zO}8sm|-H1bq>!D;z2$9|7-!><(W+RJEpQZwzHIH zMed?K@6vE|sO5!-)**JAJ2NDWU9?=YMPtpF~zQm&S3P z)HpEIB?gLyq)Z2N8UY_~yefI_K@j#w%lm=YR~~Ur!CG#t^zFQ!cUkWD@o8@f(E2^& z+ms5}kP67HXqi_j<88)4O`RLaTZzCkXa>0Q*`7~!7t^+E?!E;BAhK< zgQI<|6?4GDAhWX3=ncl(PvZ>PQe|dR*XsqwE}kx^&xaKp^Ellp|Ip(HvDJUyHdJ3L zZ*r_iiC^zhteuxuZ4dp;#U#ECtUN}1n4`mvrf8(L<%aotwh~_(a>>V|6g(zxS^pD? zI?T)iPfTz{E!pFzwdOp+YeO9p9sR4cHK)!B$PIopY-ZSOl3Jy)o}r-9)~6Wz^g8E_ zSdi^(L;6xMGd&CZs%3AM$tXPZ8TM@WeoiWR$IC=R#+KDo!=3cz&8Lw8F8)zA1_>2U zyCr+9sVSVOwVOROA60E>@ohx&OL!1ZawaL5?^+ql^}!3Kt&g0k8BTO8V}~fZm${~P z&*M&$6GJI>`4-RP!72rT85grB!U{wN4hrrO>X#0gAtbc{7tLB{#*#@F3ENA$sXa+9 z9XkFP9nC}kam607th545I9^8!EAQQK+t;}0=lC9`u!}$XRmI!_m#>QX9;o~=l90$N2qmA)| zXo_go#H`q-T$!eloJ5>0O)HVFHD{BUb(N@=%>{#^rOeV(w}#FnTNL2${ul@p4}v!{ zP|jKzIa45?6D<+`TQ{W9qW1xFG=@Kx&riknlDMt4Xon8ngZXBMFYoq#DCi;?1D=~% zn3BijdYFjt88nA@_tx5p)x64q(9Ypg=K{{C-Nnep3@$L~C&=|>)`hHc2yK3of*|D@ zGRrSd6X6`k*TMC+&ouXI^M$Y{n|z#4_&J{#UW;FqqV9OAwhEw@SWgr zT4jt`_<;30mC?u)kNuB7YTV{F*bT?Fm_4a=>P;iTuFdI%0kX@wCk)y@A zTZ%KfEeW^H6AedldZp#g(R5T{G;?#A?q0ZI+~9q%p)IK_yE}q$<{9XuaKG}y5}of* zUOEzfvq@?*)1!JsDo1>a^^*0w2dq@CNpj&X*S&b_v7`a~s(^#t=;e3({b?z_UIpeN zV?p`hwKUTKQU1g)o-s$FSv;w=a>XfJV_jm7tjQWMlumjys!cK{!B&ghtuxv_3HMXL zVM=7fn+L3#Z$>y~ihgw`k~`g)qs7>k1Ykv}tYT%utE6n2SUpQo$(4lF){nhXW~^yt zNzXG%G1iL8I%r7oigKv%HRl=2WIlM@T0y+cdnuHgL8w$l=B^<_gRjANVJaup9@@Jl zBRW2sqze;IWEs=tr*hhV+s_K|oux3(qp`_F+X$(@6ykX)%(y8KV0B*au=aUs0eOnU z@{Wwu(=*a3>&h`)rFY(Wmt5b*jAN$n(md17CUcTa}U9U_@(L zDN1g#zNCnal)i~CJoda>3d>wAnJe*0L)fW@?cubb`6ca=o|u3RNH-L;pznR@vz!tI z&E>Pq;g8#EG85W)S;zQ3;q=-WSTp!Y*u75GL!4fz*H8WP_yGEI6`^is7MSE_35Lov zl(GdYOy;4kmaAR1#`uSqG}R7;tQ}BTzyEG!_D+^FBv!*FYhH*o18lL^>WZQ~k4lU8 znC1gPDz0zX^D~dr-VSI!uzxo|dQcM)VH~ID&Rk@q882_k>>(>)en~^P1O0-MM`BZ1 zxWp~~g?{`y?U-(~bFhZ!Y@_V09PCn|h#OJf4judQox9E{(R`MoQHlg5t>sLWOP0i1 zqDLQh`%vap<>)h9E4NaW1%;Y_b9tdwg4uuW|3j+ag6eCy$5O-8KO8D?Oc&J?vMM{A zg_$v5lO0ZD42U3kWS`_*8rp9$f#-+#GHo|5EDHscA#34EIBk``+4lWRRgam+fv?hT zRVu1v4w();#*&!xEGs^9hp87CxyB!h;~!#+rM3_gIE(y&L#pk0G($FPs7eS~i{*@N zU$@-h;3A&(Bfk2KyF;zU!Gs*_UVRB}STnc%k&}3k#M|7tlOv_-^kex;7_Wx~89qJT z>@kk^-5!Le;`ejvr9M%rNUhKtaC!zvS~LYw>a{!PRUVM4C4<849yJ^*-c9;Xl-2<4 z-@GywnzpZrw|R zOA;-I1fIK6Pu(F`pghta6{t(y&Z04MOI;~r)y0sZMJ<~yPa$M>Ef8DAJC^Uij=$*f zdX1o2784M~N97oC4^>rY^eDzNBE>_0wm;PFk<@VY@Gt)f-p9Kk@1N-Za}54eY%Xap zS#;j$r_;XMKIFcKWg)nvIe4kmuW1;n$)wzQ#*OO0EJ+iL!&Ua$v9W=u?!hfJ(VU0F zs!lzv$vM*@kv(-fwf`wsRz~{SeJG()o1r+N96&8U&S|{{{Z7Jhk}p5n={@$~U&t<% z@{&MXalG`K)ob?Zk(ey6dpU$usoE*)JQtJ|aSxbFS-UkKDn z#NWA2E_hO#Wne5v^bSMq96GMp1#mBFFPzAR(;{=u(v-@lc@Asec96~T9L{W>Rd~w`Guw?^q3ZHW&=3xyD9Yk9 zaArEwpz;Jiiy!$_m47wvDrNB{pXL*Be=;800TY|;)Ji6(n>HN`R#D;mlY zgEkNU`N@kOd#F(ZIXS(!7w)5yZ*vd+VCHm$IX^q@tEY7N{TUMOIzYc)`ED{3No?6F z%&GZ{{rCPQk@rzsm)#$uNhA$p#?%6wj6*g4ySprkgN~U6ool4@$XJ!U@MbC%k*R`_ z`m#pDkY=`|1x*v4_S;&P>2Nh&juT$sOn`txEkFD0z}kn}t-IrSA=FbkMfIZ;>Sg4) zSiEK?N}qxPU3;Qox03MkwIM@Iu$s#;GS3V(Qk=8Mir>Q5XE^0dQwj2iP4p$R@@d{# z>#zhaS#JkoEp02+WO^Vakurk?;Cs!QaKTVnqH@b#mR)~AZSdnw3wsHx)#iYdRCslv z=I&vi6G9r2p>%_MV{e=M8@&WXOK7%fza0NZ!liOokX`>NEbP`i?3#7N*28PqBMAT> zQ)Xsf=T7^>o6q;oCz9DRXao;LWnakJ@fBM=-QXo?6TlZo(<1OXO`PQ7!OF=g)z0Fo zsvyDri{AeECqjYDtmHX!EnM25X3i_h)m3&1Cv4_+qQT8$H_aGHUm{4tIj`}CejV26 zwKm@tw_%NnSw9y4T?PZ3UQp zYcoGtv1pMcuVmq_EB&G5vI`d<|I8Kux-R~hd2g}q)>kc#m?$gzBdJ-!&8==mjCMpK zp8`eJF7b zkA~1$td^w`Td--XZN9>)IXaiLs!CZUAi16S!#boJRspiiTy}wEl1fA&KATzrhk;)9GnDd9 zq}qhbAkTHVi!tkKm5n{JT5EtG2tCgBk&r7IdOCP*K)PI+ap^0{3l*%3QW6td{z1gW zoXl0z>k#{S*~)Tfe1kW5GqbKKIHKDv-64dF98AnxwMH|S%n7ibpvRt+8(Wy|01yXjE(=lc)=o)-nsLUYhk6P z1Sf5+gsMK7@jc2ve;gPsVMk_cRaVOhdl+tfOyv2N`oL#t32HsGQ3OjARqfCxt$AL*lxnj4lv&4q@{sJKJ5 zvuhsva>dHVJ};hyG3M2-$Ped;iZkWhz?P^!4xCN9VR?q5Mit*}`YYE0IYH49{EA`* zcWj!p#kcn4LpJ||ESCII2^VHMgIl9$Ju+Q#ZRBic+cA=`w`LDQ=-??t~{jPHhV#DQLyn zo)&Za>KcDMMsNxnCBY$FPFoWrp_#?(#u(_c_RMDEQ!5hM@jk6qtp*Dc)0))$QCa|m z3nzA;`a57zYJj)tp)IPlw)R|%XTF;H*VtM$yt9uAL6m56CtRn+H;v%P6dA&GQ0{9$b-!x}cxP`MlfLlMX^^bZMHrZ6SRyNJJWYESg>u$twh z`Q6x1-^w4R;gv2LYGnCDQk0Lhs$YvvcXH<7!8oy?rRVW-j1S#T;@a?Q`ZN{hj@~X= z3{*kv4w7`2w5_C56E&*%>8)`-rT`L5AeJ2sUr*RRmx<|b0zOwJ^(NC4^{Fq@Zf%*LNaw}4Dy^R($J zPX0J^gG%ubQlcEzwe^m&SnI(8hvAbGyR2MG_2fSkOB)YIPu0`y6=7{Zq52O?wY|Cj z!UaV?#P==2sVDcG_pofiXZoHn@2~$u;F}M@>ZMoOM0Ncklb0vFe>MC{#r#+{WBjzm&TrYO%WuRdDv2y<(1)_~~N# zimEvABt;g3rYza6UTc`}e3Wrs8{gkByqKTTGkKfW-E_P39h@0C7@7cD%$$&ZxN&ae zpb^Rc_%0DfZt4*3KX)NY) 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
    114jU(#iLZns$M5Jde9T3 z^ZFT=W0Vn_L9ilh15CFTe2`oG{QFe|%noDN&Pt&qa5YFQAgCc$9-cK6T!~F}8jl`@|a&{KS z=jhi^Jkw5Q#%Jcd5OL@s}8@t)i#%2*=u(Z z(3#&{45(gv6()3;ea9!FTfkZ*6e=K9$m?O!Uc<+Ww@FDwVNjm@aOoMXfyJy;qNu+& z_kW+qfp)y=_&q9v=fMJCP))s9%$!@T7Y>tO9G9*q(fE*0^`kyrRU*XJ1TfG@Ri1?u?Zbo{^9{va|k=)(scceRaA zo=wsGGm8$p^F*8gW-I4R6&0Qx_)fT7qM9K*=yGP&XU|5m(@zI|plS%gSOrhvrM0+? z1waLk2e@nN>lJl$bcmhBKOg{~VP@_s*?xQh$Q1NJTxqiP*g8NS{SJi85Y$oCAm&k> zie{X^Lj}K3im+**GO8YS8U!ZgHBi3vG07Jy#6jdEklAmo$>tz)vnsC*k^3!3e0}oz z8H!)K3$yxv;GO7XntXhcu9c)x!z#w9}9yYE38mGXaU;V0DMjVGZ zfl7IUaaIO`3|0Kd<#P>o8;X5`=qlyR}@R z{jS+cx=xyq3Z9@V;r3zwI;wL3q>>}}r?P)W6*Hq@hys)fAtDHiCUt1V2D{E|Uqpv4 z$WG<{ESM8ijM$?_WE=8uMIrnjp=@`-FTj}lA$UnD8W+t2#>5`bFqSaD2>IPC$AIe8 z4yQH5se&bHtBedccTGGP1E5b5Vh}!PPamz${#8g%kUV!;{0j2fdVqu|C;-%XRRNC) zzMgbENk6qRJ!J7@??_L^b(rl;F=v$KX1>KEy)i^~j^o1qM>TS|AyM;}7C;#Z`!*K( zyKZ6arcF12%cu8?3kMdj>cakQyLRpJkw`0odi4$fVP}A3E<#`+li)nqhn?_y5oR>u z@R0do73=k7kKU%8#Sb2E0OBK3M&&~=Y*0}7*haJ}d*Z5&$9+v~gQB%>8v7F`jY$+BoZUg&c+-h=wH8+#rkZouRzl zwy6kAuuDjYu?dYVdF{s4ep~QhMpWDj$}!$!@=-%za|WD>!5cjM&wBB;p+Wec;f~-$ z?_S<#o?SqqB;-kN-W1akBn^lq{s5v5!8E|+>>`woQ+1 zD+Rn31Qg8FTY8s4ybY1R8AhVgMS{AENP|&xj^onxFjGK{E`F|E+c|ML;{pMJx;oygI}W+e2;we+FdS3Ecgon(*M7v@@K|CXbBH})R=hqn~ zviSdPPgyBr3I_%s1CUqxrdMcihu^RqTJix!XaFw3HO_59+kcW?34`0Y{)vhkXO zts?*DYEg}J7Z-Fz}1D6p=!||X9nVX<<-9=S*LJ0s+o-&eo3ZgDq=>PjC2k;4DRbitRr&i-kWf?pVMaZaq6{5)iI*;}=ap z$lP5%vkuis=;Ozz04%M2I}iw`L6Raoz+>v_M=;I^3`Ois-q4}nU$>EvK}rg+lW&9C zmHamAKSk3q%9S@}gq)U;#gJ4CA;*yGj#d{S;{Z!CY*fs^Sycj9C1&-G+b$M7$^p>P zke^fYYsB0Fe&Z9EO*9lM@;_)@$X{x}SOdNcVEBg+G#$GBIWNeHrZv%M9SfMpdnJlN zLQHEaAi)Ng_dwcJ^wZE#3#@k_yb}+dytlU;g*|;M5w=CKwo0KAvy_4&Tu4_Dq}l?U(OTuV#k!^m0#=v=Its9ek>%3DP5D31j_4TZ zi+2!k7+KmZ-#xy8g-B0W5{vm_aKhI;l3cgt7N41)0auSynW*M?yL+iu4g`^s)Z!*F ztJrg5UIw(;%yKlB1BSMMQtWPccv3j5%dGC@ys-TV%{|7fdX0yJh-YVK1U&$dlm@i= zqzOV^=+$QO6bo;m$wt;$_T8o*>WNYXu;jC-XcjQ+vH`Xtw-KabdC-+|M!*@}(s%W* z*M;5^Hr$YE5^_+S5MZ>$m7V|f5{Xo=RwN0Oa8f>i*GUB=nk}gPB%Av4GxqP60|z)* zWM^1WN1RIdDT{g*Or#pDCwF6F?jUJj(H$U}<~04Mk&Aci%B@Z3{%=)I-hLu?!vB&R z_J32w|K|h~-t+&*n!o={-~UPL;Q#e64K-e8zN=Yx%P?!XD1FKUVg~HlfHg^+OaZJZ ziu0TjHXHEG9%$h={q6)MP0`bHX^pJa@l*fEZy-)qmFJDctjch}iq5g;>?-omK^yP6 z)Fiv&Y7(*x-(56mXi`3Y=OF4f(ljCD-e}`+ z3?RhQEnuf1mT<_ri(~j{jb9`%TOhb^lM6+YbvP`8KbYdc^~=dikh7XXPr=kY^JnQ7>HLtz7r7%T@ey}OL&FcH z#Xl*S1oc_u-ov7=gjESwlnAyENzS5VA2`5F#Hz%K0VHW0$nq2<4LAcl9;xra*`0<+ z`V#<>*G#i&U?v!x??Ip=VG;Xs0f;w5ZG~I&k_h_n5@5-?jW=;rgP#b>xocy`dJrqY zn6n-8+d_h_+s{VHivyLEM5cliUpZ!_t_NiH#h>4{6qN+x3fa?O)R@jjlzkULaUBed zEyVjO0wz!l2u8d{vQ7=7pAW$X0$4}znuvVJ9sU)by&mZ|&WBQp=;J`yBGgY{GKne! zasLd6lh70bK>Ms|bKY}kJ>IMC<^#MM==jnvw)};1Bo0Zc0f>6>$LHgo5VOIM;!{(A zyUq)N6d>%rDcqR(T2-EZm**cyI`ERx3kj(0Fn-xe2NNwIbl522JwPrhO=Y0%w2v%7 z_}5cqKbcXrQ&70}y0DXB!Xmdoq5bqk6>6(#R9t2-Ad%dLA`XET9^)zuH4|%}eCQg0 z(mqT4P`7TaqEJ#+jz^Z+`P?c*gMv5;J|V&AaFIRoWGx8UfV87s3o#SfJO$dmpwsa( zic2DT*|o93r7dZfZi?3H5tdTPdcyxDo}Y(SF$yqfsCf1e3tYwDKbyeg=T1|BdTP?) zxRQd-Q4|3b6z~Qp0&F-B!n?Y7Bc*DpCyOOL|B9t#zNE8Ki7a$jR!WA zx8^n;1%Th=*;ifckuVhjt${>kwe{%j0LxAw;XgjkLE=EB>^0M=hiO*l&J6%!sf@th zl6PKv`;Hx?p9Vy+UqKVeMG2M?(~78+F)B4bpYDKb&!1cj`UxVrhO>Zm-$3R@Tzwfv z`S|fN9|BwKMjPoS)TgAWi;Gf3Q9;amL{gq0`1>)WCaaOn5{2f`Vl;xu9-WA>p7kjb zNF7KK3v-Uxg-)?pJKAfMgt3TK8R%aI3J!5=R)RT=^+H2y^n1VzR>2xF(@^GaBXsnd zkfRU`6nNq8knRoHLPh>S#vWRUyS^`eM}9)=Oc{$^D2!waPXEuPT{Ut*7OF<C}Zm~A)5>np&=MH3V?&bT}t8c{l777b#W9)O^Z%q`NJBiMhm zX=LxndM_OaWa9M0^CE^&0&0bcU@E8Se<8zqRa0Y5FsCH1MmLM-)JR%~Mw)EQPjZiY zOFO1qD4cFS!m*6=gKS%_&ZR;dv?4Ag^)H$|L_~0L9HRN)@zD-=jEURW$c;wcHekr{ zfXtjM82){pKh?1AmpA`B6@q|C(OeP*&n_i_Z${YRLX`0fNB>72dME?qB)HHNzwI@{z-fZ^Bp{n2ofX=LEE>F^tb^QjYcT{4x!u=nkgQl%$&uo733;rpcuAai1ir^?HWA6f8>wbkCWm8>~PYJ1r-=& zFV*fB3tJ(J8T+{a)Fz1n_)DN@qZIoE=f^)@0|yu0w*O8)6r$nkkH@|hbWbp!Axe~; z2J@OMA#x+PAi%<#CeHaQOuQwCv(Tf+pqsM8V;%NpdgcgV71?w=nqL702E>;I5Pbf0 zG6Kc{r_a}G7R@0#@Lu|UbOx0-#Wad>0uskkKms*c!~h#5(Tz9$CLSC7kt8WaU7Ub{ zzQg-a40Jvasrg_BJs$pp2V!Pa2q3ibyspW}@D>1p+=G_sE;!&wRR&2{wq5sriXS7_ z*iGFi(SH#oBcBw{q!Wm7m)Asxl293STe5_kU1*b6(PoJ&M+jG2um@pjaHYT zi%$rO3qTN0*KP}mLvjv!_-g3248C5WEY1(-;y%dDjLtACiBV*!MhDq;5xo+I_51@6 z>DIt1aq9EItTr&IDJq|^H4zb6Sl9+))5NBNuX=Jd$lqjx=hd4xRH3oe?591~`f&dt zUO%5DccdBni5H$c2Ixyj+n2CuCw`LHwFg!loeU#3a!q)SXa%Fo)clG0(G(}x>8;Yz zn}`Mx>t-;?5j^^TV|Q^&aKhZtM0C^QF<0CGaL=2s!0JPCz*qR%0&&em4>WCl8=26f z3}0AwLu1&eNHa}OguG2cvF8F!9No$-@Z(`qE&s9|9@Z=D^pV0DC~xXR%QNe}muL0g z#vVFtd#V*HCuCbh-$pV*^xl|}oBWyx{L+X$Po(Zf(ZsKVcVvcuWTd(S=_@k#Psrh{ zKRjCtlO)s4*JOi{1&wEl&rK8n*S?0Q=q5A_L&(v|53Ss|Sd7I_fWKE^Z%&r>K?t_h z(9p@BMey^;GYAO|CR-7AI|du=3(fHe#kg*}jiw}1)K*!cfBXiZc_e60u>29Kub4&s z1`5Hv)$yfhqklsD4)}QC4RGGFZ{poC^ezs*q(OWr({T~Gou@?XDOS)gkm*0TRo_93_6ExmwxSo*BNx&mU z0*4pB_=(X0x8(eYwy_6N6GqH(;Tf)5N462|Da5xFPS#8H!dYZD%(^o>zUBqC8A$KqI3nhQqZqneHarB2x_^IWvtuZa!i3;$C^?xVvjv(6mx;7uMl$d`w_8+?jGgc znJ0%iaa}Us;+WaBooOHD_xx9p6mjx&AD|!PN#}$*+Tj*Sc=BFt`tM4MjU=mDRVPs%f;r=7cQ-xj&BDp>PeUjY0!j9Ta zL`uGG+o}aV{AB)!g9ucQ8udoUPGWIiSFg#4qP!6XI_s6B|hbX}GLx`V=}$ z?K$JFNfI7pXXLNl1_Riq(GH^wHJ;dIkWE42JWMuO#gnN>Q_0D^t}ry$(9YS2hR{nu z^=15?V|0Z~*W2WOLNw_bOA{NleeJO;gXj_wuW-onHCBVrh=?z(+Htr_aCj}Cn?eF( zowYe`Kq7X&|u@R3w@# zgsH=5b`yhl#ZYJlJV~UCKzvg*k#zESvJt(*N0VehLcjguuOAlJ{6KDA+WfQyKU0lX z-ralm{P4c9*-$$~ebYTC8h6qR>vd;|i!iDjvI?PUX?qeLj(i=jEe4$^!S>5c9jb0> zY@{(iu}Co{Dkar5LLD^E7sjpgDSgaU*>8W*X#x~}w4xnpcmT!b5Ko?2q+mS0X^9IUZ5rXO} zDvTschiq~HMYkd{v3xtYxv<4!yCZqDIi8yAbwbayxV$u^zGl;8$(X1N7H5NEryXc_ z-z0ey9y5fy(MKD09)~2yujxSYYfS3z9GgE_izi?`^fqp$qoeakPs^gbn&I7JVP$0- zGOV7}fw#V{xVRX5a8y2uhuHrhE-1?dy7GMJD3daMB<+%ZaB8C#hMLe^Pv0R`q1k-h zC~3t&fByx$^VkX3KX)LdV{8xN7pcq1eZ>yX+Kn3nG0J}}l@en!mT9y|oNtUN)02+! zqe&uK!O$TZpH(z8@d&_x*QYdjqd=7=#Vu*RpgYq3M(hF34I{P4nqbE^95H@i?KyCH zoP+$+bcl)Jrs*=^@aaik2D^V{bRzePmF7#ujHv>jcpxPe+sYvo38!un+CIvwDr9-r z(EwUUB!c}c&k=HtnF;Bp`h!zFKs;}%yURb%hwMcMVnx1$c$tw-qRx#QRamHQ{IiV* zt@Rptg(9NJsc>}_o>aHr;dMw<#m(&iytkh9ZMo=oLYlG-M)(9lcYgz7KAYQV3ndge zkONQ0*XL?$Y{fAbiWAQPV5il|MB2?2k;g`mW+%EtDnLq3RBiq+=sk-k_)Ra=T<4OT8|5B z36UdDPOY4`k3jCkhO|TC1;VqUgRdtN$7A>W!QZzY3>OSGYV|yR&k=t|RM&87($-ug z2?B;i0GyVw3fs+5h2f0Q5Q!$JD^6K!kHS(wZ1k{#CDrtF`Sq7g&s`f8Li)@iFO<9^BU44L9K3+ zaX?W~vAO7?`C~aRE;J3goMEas1ILDPUw*pyRE=^m&K!{BH#Wiou?%NXm~0@w!*W6I zH*iVc+$Gd?)~h5tqFvI@edIMR<9w4gYOL?15rp_g@wuvWleo1H1obCYXK86`UtC(a zSdrn7sgEFlp+SFV2;~iJ>@=g#MtQsb7rjqR${V69BCIKdZS8sqNFrJ znh9qZA|g2i#M`TprH@wHS}v~C@<1JY0HaYNR=fP77IIb<&l6ZOiDmY&%oQzRY1nzl zP6d)7HuoN4Z$mE@=RVF`z*=xbUH#5cRe6d7kV=r#dE*DX{fk!C1Ru8nUpg_gY^P;T zf33VddfJV6#)-wL7DtE>9`j4nkR?Dx!eRNG6Dd?RPWq9m8smozC95*}$;&aWIPFC? zQ}gz4FJYUBiJT_Gtl>qC8PG8N5*Bf6S1tEtmgSLlEM(D75RQ1wFOZ)8jy9Z}BaJ+A z!VLe@_fGQ=lFpIzXa9vxAB-B(L6xIco<}8%E-G!)Pq|Yx_}#b3uRsx{01aM#=^9=s z=VPU|j}CSG@E&hM{{{Oy`DS|e^LduyM)sJlovf_Ns;{vn&XC}YVM5ve=i2!H#( zuazQ3Ks@HIg3wS_NT(>UkxouaST@D1fu577Lm(%54JnB)nhZ9Jv9O+Va&mTcn&9}= zE)sOhkZD7sB!)wSM2rQ28Nz--ZMznR++61uugTo^s2$*z+stb*+M7&DG35Q5h&hyW zuF(%AeP#HBUg6H?pyon<<_QXQ+#%feH>fJ}W661oU8ZFmgM)vY`n+lkHGBVVzS{UU zqnq8peYfiUI~O)A^YLpw>1}%*-?7Jj)-`HVynQVA?`0D_6)7rx< zvi|*3RmhyeB7P3E1)BsLL8vaT)*cbIyJB*(Z5q1`fq=|7C2=JHap8{_lwB14PLx-$%X zMz5e~gh`zl^O2k%ot@Oy(Rp=Svago-f-C;a?#5oAlBVWb3|BK8Sj3%qfF$rcro6QN z>eTe~L|9&W+{ZH3%v~78vqTE<8M5VJwDyM*@2jUiZ{iE$eo0;nSN94b5byBT=0h>1 zlO<{Dd%9%zAb%HEyWgjesWDfNeUus$Ii$)e8p|vd6cI^^i}OKx;RKge$0E%|h=De2 z+^D6e_XaO}uV5m(nt3RvhSwZ^L6gfLEsA>WA-jBsU)N$iFfi-xx;TH)i; zE1oFmzW(|w9IXB*mA<#e{@IW{YS$QhC>Aon>u9aqd;eYw`FS1QXzNRV#OWWXa>a10 zP_%SBH!tnaLsV^yF}4hlaL6prw4(1DiDLO83}8|d zS?TG{RN<$t;9oq%mJC)Xab;y?mx7~DG|4`rk9&}<`U5dvtC%aaKFFCvu~BkB-;-=Z z;+`MhWFv*llN_kUdQFKZL`@Qnm5YH#@qi3P{EKBJ?ZgyrsFqq{TS>h~g9HQAf+cexb9Ot=&-o6tmtX8x} zMPDqO#qZG@*@I&*bqE!%i=MB1)wDf~curzBmv^z|(4Q*w?;CNSn$MW2lfBaGb6=l5 zxzm+qc2O-p?34d`^#Ppjv_uP{@wdUEiVW`vTA+!~o?XZDI5-yTF?rCwbYeezQ$P8G zV$PiUJUDXb@4>9HABm_@g*B?B1P+cUsJ+r9j0Zy5QVDWrhU$0W)I`xi0;Bh7DBFEBRHMw^v!-}z$ zaRuXZ{x@TnV%|nF)p4&@_HD20W&Fw%5&qA&xUX{A8r135;`KNsxB$<0v?J4|`$_>e|N> zNNHUQel2?=q)cAu4?iPTTXb=Vp7xrD7xO>QC))Eed08dn;VyQ%gG0CWjh?DN>lz1~ z9v5Wd@B)qyRD+J`XUg+Jwq!&8;j#7iS=x619mOkbIkz?x7mHjkJy;c3yUHYv?KX#Ez(Gzf? zf21f;WT#QEDax1cs`Ecrsvjj$`NO?DEHW}VK5 zU_(x%tJSH|i(JxQCUgo_zv%T~1vT^*VoojTB%K4iq@2766u!N4+oJ@_G z>u|sI!6m<=qff7Yu8XVW>Wf3M-+OC1T-jG9ua}US5L3CGtI>Jkk>+$tJ)AHlr+Ku5XI)!&)wVX_uOwF?G=iC(L{U&L9!Rv9`4@MWf{fKZ`mj_{5_gsy@im~p%IQXH0mkwS}Kl1 z>1hHKD$?pUKKGptZ8&pv|H-)XQP1UEIMbKK#m5$Adunj06FNpe-p&2)Dzr^=C_Pf| zBs;I#Yuaxvak>Aj!%@&`c}1ViYwtzG|mVW)}o4UWHm9LU^lT+>+aW(i=i}J=9}MAyP2lA zIwMYKBI|8bn`*;keo|?AXv4HX^=|3uA0MI;ts+_JqViai@202^m}ezhdc8amDz^TW zE_bW=aY0+dhrvah0`cq4n}sbex%jn?xRz){$T zA&Ci+Sh7TwVF}-5TyP8Xo7%B{XYw=>8gj@SC##TEUHS(1JXThWlP~d`;;alP?};R{ zu3IboHdxn)PcQxDXn0a_CDY;ABhQQ&*!mTIxw7`2@69w~*mOF7u3-}c&HDH;jSOC6 z6<-yfVB`CoL2lt~KUH6AzZA`Q+7U5HTOFA`7>=P+rpL0o+RBbyF^@yK^Y}CW^&2II z3sO#;wS3DM`gT>0fBpqJmGhKr-xPF5OQa6x+l+|R#U1N#o;eqyajLb|k4su6H*!-~ zR!;E&u^n&yf0pE*Ee|w{Qt@uozV{rAZp+ z=j~lIqSXESlVZ(F<9JWb@g*u1xuEHdf{XQ0-kuyzf$|-(hT2D(-fT8bIakT{{Ha^G z#D@33#`0(bH|3q%)O&E?U4gq3=ZkaM!*>U7D31GS1^cJ|S{MD>LfR!-Hss-+vo{_{ zNSeR;v?opfer{mlj$;Nj;`cADlW+;r`s;DRQa$Rane`E)%EWlHuYnRBOyaU$k9hVc z1*#@^<(#%{Q3|u(sRAA`uj+BgL z4k1;%H2D)}Nr?IJBo-2!tz1cm&~8wT_9H9LEAN~p>U5lbN$j1(Jx0}W;o71`l=ux~ zyc1)VdFoM?v))cthWdiH!VkMiuaZ>E=8!q4S2b_n8`s^UN1#!Es>u?%v@bwx71a~sQ1a|9_DaowVLKN0tW9T zcnSyKq+MxkPnxq_XQ%q|1nY4n`kHE`Pj{n+m0p!Zo3I}@$PyU2{A1Q4%Qa%CC2#hw z(kq6?HX01!*56wDg##@I-k&;uKYr6Y_rn_Rv>j|kHv|vS@^rj!bhvkH`%5-`lPc_5 zN4u!(#DQ~lGc!JtI7YknnIXSg!f+%4TgWvZVn|;4mK5oPefE85IExm4UT1oB*@Yp2 ztmrM761FV6TIkiNHC{+q%;k?-(6lQ$QoBhT$i|B|mbjZ)?*95y*!KEB!TgyqX+4&V z=$q+v_gQ4`1j!{|b70Reu_>&Y>VBBqW96D$eq|~wsNv$bjK4#T z*lj36u{O%ozdZiDNl;Yu3y!30-?r@Jr>GB;N~~kvy7fD~=02l+k9Tt(Nn+N`^-%ms85X|@7cSR0vP#o#@aD9y z;!b7pwL3Ugue(K?ab?#rm%I|ogL=IK=je3aIitgyokhst zapOq$ZqqrAn5gc+j?s*c${usK_xudn#+#)be^+n*Q;8mG^eh~@7C4b}?%anDAGoo@ zg`Vlf0?6R|K7N^BHrGCk$zS}|*`b1XJ5=4@y=XisXeh#Hr>6xjrrL`BH$YN^c* zZY*7rsERP7GvQ?@>dGnN%+gL1h`PS+_ECn{8I@I&ZTFU|E7>D zd2yF8L$=X2SLV+ld46fBn==Lj{$%Q%(RnnPYjeisAXR-tRaf$vMY`-|FWbHe4&mA^ z-KzO7xoJ`+XV$2So5!8i3(2%j(S2+BP-3x@GV*SE&2YUstw|kU==*DFZTrFv9in3# zWyWWo9_Q&AnTb#_T^4n5yIV7TAUKug+DmQE?6WKA4oAvZTdLb@~S#u_7l}TOk zjF0txl@#}z8gvPisZaE7$3NrT5tBWt`O$eMk4wt5kiD=;q&z9=Vaf@r7K-7)A5z-N ziGIP30sD4`gc+OZ7HyrdDimO9+|qDgxj^#K1&#fNG3j|bTcZu9?4%RxXABg=XDruE zgm;W3m6gfZof7AIJ@WHlw{4Jai#7Jh9xt~kt)#dc`6%^lN9ux@hvJ-QbTX(;9~FLl z{)FBk4%tmY?|j2AWu$S~yK(OSyPj74T3keQhHigSM_zEx3C8NIMs%K59e z?TYh7N!9xB&Nq~Ar{yQbY)x}|xGYENdS{oNf+`n+%tj)!k&l`%H%tZG&U)FL7B^JY z*f+EMaatF z>NHt~#J#-_KmYnsJ3D-DMD3l|mCx?BUy9{~({m%2MJtv(1FZSc^gLVTN8?{@mfX>X zZF^2h`^V3{(0hCLC;sGhoMMSVqc`uE$I48cV`s?jV(j%9S4pVCcos_B0#n@%?IMcW09h!{_5J5}+<)SDJ=aZAS6!+Z+0*H76RxMY_sZP05B zT9ajvpL5xp_S#h}+78bZ-kM%~DRQ;fPQ8fD_p3U+gF0u#SM|A`9|p?vy$5$n6plNl zxs;WU^XkSMTt6wJB)BnQtBHa|-g{0)>!_#Ng1xqG-|=M2i`QvQ`1(IQgNy9G*8Oo~ z&zre{%T`y8I@00WohhPx_pXcodhjvkg4BX^^Uf#hdG<-YZ*frLS>pLRFeQKV>d_y| zdS`a{hOyc`GUIsrND^&~?;)h=fD?0K$WqWZVU|ZT{R*;{Vw|ZZM~6^Knc*{a?}fGg zy>Mx}n|s|24tLc@7##j2^GmHFOMpG_lpT#;f3Ia*`|mlu&LtL(KSyiF+b%TPU*cL* zc&{pg^IEedeWr$ebGnb_{Pv*jUwowZ9o&%f%foKR+f_(3kZ!c)*d$M17UbQ!E(Fz- z`pMx-ziOSW?oBn+g#JFQc6R=87gtYxyL@AwNYQOOUpw_4Jp zo}IOVaoR_c^HQ!=P|N9WV|QRx%)5fmI~^b$3AXd9cx;`d5IjYVdj8X8Je-!pzxpZGpY;y-%cLj`Tf{izRk01TS<46jkcvq zc?KiBLsqd-La%MZw4X4$%*St45rf?sBeM2yqT^Df^wbQW-NK@Pv3pGBti|~#-=^XF zyt-RL#N3)TdaqQ=j_0eR_epDq8p=n$6_xmT z?&PqG#K}T6`W8X$hilYvf1Jvkl;u_;=-iPPjRh8*viJGgwS*TOt)}{xUD#)&H@MG$`o^0bCj6G9mnjkP9N;!F5@)iRDbV-A9*AsnUi9(ev`0dZn4e2 zN2&XB$d|PJlIN{YW1f{*UQSZgV=u9ENm8|JEW>|F{gzhA+RtZ`L(RWP#mcbHtXJ;_ zZM9(1hR(m?JDbHDi{1S1+{qkkcdDPb;IRM7i?RqAU2=u=EllVIjqPes8yULV%W%KRJ6OfBjYBOqS>F2ee8uWi~~srrsBYt`DjgnXwhU*^#J zy7|XFjFZ`zv}^4)|3}x~%g+y7v>Nyc$bUnmsZ73Lk|0Z@wu#}1ixzvx_2f8hBUhJW zvn?t9{gJ7xcuhQr`SeNWhRGxIThd8bQsxrwyA zzDoQzE?U}>OmpiaYSW3|kR0;%UQ=})+}~5=B57ZJTh%q*Rw~eb!lA#Z`F7s$2fLD| zsy@3{u9f+?Ph0zWu5+`6?(;f-PVPHlr*WrsQRl0(py#51;4+ooyXTBAT%}gIpYZjo z&KPt!8@soKK8oMh;IX{;iQ`3&Q<1G3a9A9<7(Z<*b&%Fgf<5ZJeDM~&d)#*(7+!Kw zDi!F6DWmOrfI+!QXn*#Lvsh^NXUCtt#%83uVf`(dP2~=ml99Y0Wxw8Sy*Bx=_uJi5 z`=+AW*a|h9rcd&99gx0|%A?d~s`o4^Mx)MD!}TrT<6D0=H%`&YHJRt4MOCYwQLy^YR@USATn0pkyFqU<&fUf`IT*1%Ifk{ef8b$BXdt(?H$~QXA;PFpJzhN zyc5)(@f>MmPWWWmGrA^xtHkx(5&LSjh`RwD!>`TVrc27yDTd#lQeOxwQFlMI5+1J? zDB%gdnpT)}91HdvoER7@o3D90YJ2LTWAp2iB^>+9E!eJPi3aM17-;ti3fGSQ{@Gi> zbyoVE(0%#zs8nl-q(Md%MG4<|LKRB}w_;p2ZeXF#$Gg#46+W%9# zyISE(vFiKdIpMmOl9XgQ?I)^*wP+J4+ru)BKWdN2vM_cuzBXUyXw@uG7$Py;_SR!~ zW@~kHPE!~Es~2a4_K92%e)N6jOsd|NwDVk|BIQ>1o2Ca{u6!>kTVP6a)v=)nmr4rM zTzPPcc~%Jdk})Q=vh?*E59gijr%{QbTl ztK^G=>FM9Yvro1>k$1m-eWL~4Np+6!_r^l@U1p9>5lo3%919eCu$& zfY;{0H~(H0JFe>JA5qrLRKpGF&1R?Rj%VJA;tL$)$sX=+XRS`%Y_=HGe(s!nILB2ktW0xw$ zKU*-b`fN|9_&vMZ#*X~hDBo4Nm-58=PYl;zXILcJ@Rv0YDt&cZr;`1)t+{196fEn_$wim z^9;v%{b;6|C+V4;mG!y#O9lnLn}zph=bqhHp__KR1XJ~(HvzGEipq{=0XwYp2ggRYC;OPAEQSkP&vH0(7Y z=iAW1UDm)9QfcM0%4RzoP%!BoKby1@_)+)Rdsp@Vd;4duIrEFWVj$UVkpoT~cl)~Xv(d&&ZX(&yS6gi>~y)UjBM z8N@s$*Q)J!w0!Z)mFGL(jx`RH$uZTBshOEN{Qlx>D^vS?b#1px!P|`XG3D0xf!ofW z^J|DTiDW7g*SKlQqdC5rVV`Dlq0X+g&jWw#q%l&n+v)MZl$7rpPuHKg!lY3?81~`* zKl@10Os9r^uvb{N&B?1uT7>ZIDe_6X!~6by1)rViBdtmct2G}8;* zyku&7z*-C}|#w^!if=uQH&cy2?_U=@+~? zJ>Eaxqe0MO4g1o?=(e#`kC877x5U}qjvC$%K0ISgf0beIwLHZF_tx0z%eyaZVzN0< zbj0t_=G=XJ0;`wgYNsb$G%_4z6t5%(^Th8h2&$)7N~5g(ajtpClWm!or-zHAHhu}p z&G$TA5;&!rapkaVn!A;&g|+vgz%TRpFH@J~KD$NzI%JOSNav6CUng49u=Swo2I9--B_x0yy(m5l-k5xvk$+o%1#_004Tf@%D z*ELUK_%U6}FzYX>m#2LVX}k8??mg|-O!17D`4QcgY^?y#hYxC4E3Cs_F zBsL*svD4kk#lo6SIGw929`NkNd&6@bmp*L#a3)Jcx7Aj7t$MrL&E%e@Xr@9Ly)2Q) ze#ZQ9Q{#2^6B|qC!+1`9ycF(v>U>m$-hfQUBh^3wbguY$tM6|-as0pzlBDKL9a|Q> zxaFRM6CGpknuCWk;*IX|42&_|ebzQ+v&=6{UvC}HdU#)@bWc=nQ{aMBn!et-J+CBv zi`N-2NDWLfPp*v%R6M@BGq;yfqKr4qR9`(pVrkF8C9zL!J8$abh;SO|DqrJ>Qn({< zpVu(D`-0bFJn$DEi-R3pGrx34r!Bm278z8^d*^*>iHD;-{!q2ljJZM3AEt@stY02_ z5&~+^6$M8*+aF48-?KIl8&&rko|f9UTXS-@I~w(#+Q+RqZ!p+Fxgon#_NmQ$LN2w? zsgCG@y0IVctNMLUXzWmps(w8>%&{V z1lUR6u=_V$87M(vJQ~lg8ZW zw9yRX@NaYb$_`%*bmgd=zO#JrSv7^!ub*>QuNkY1hQ8_wW3Vi{8)Gb5NfWr*`Kn5z zh^u>T+Z%U>k2Eb$Zdkj^2e6&wjPgaVQn}@M`A3XglHQrke2CFmxwM2?>xS7UiI>AV z*V~PCKj`%MBP!3b@Ov|BbG%1kJI|M*5}z^aS{bglHrKtW?^>`LGFs9oy~yR?67Tx- zJx49=RmuISRG;=lk3Ucdu?cvwkHUz;q`Pt`*WKE}g5SgbO65d>Vwqm^qNP=lpT!Pg zL%rO4N%(?z^^8-s`)G$a?U%W;Zb6i{z8(l&8%^6RQ2J=b=lu1jlJ7668dgOF8}sR> zb0ACC~YiQ#G* z$)^7ClE;5c*47!HH#PV^&0VLbFQ3mM^(tQE_M`TFmHOw@>Xlx%uV>gDSS#taZcOa$ z#OFudb#zA();iB7zVD6|dU8miTtMZL!Y+HZ)ZJNr_x6gh6)~l4DeI<@+kEbKhFHT; zCPTqo!WmEV6BfAzPWx0ZFV*Ho3mY2!*tUtfdu%*%tnTc&WM5p|^}9TDd-Dz-+G}jw zn_5uM{LJyNmtm&Lhlz5Fr!#%;oyY!^+)aNT&gEEaGwSqFw&?PoGZ-pE*JA}U;4e_~_syxToWeWzvn4Oc_9Cm_^D?2y*W zPW*f{B0N1&NbkS!_8ve{ZBg4MN)jZAA|Qf-1OWjBQL-YaNR&*IbCf3MEJ;N~BxgZ# zmYlO9AfV)&a}$*yH0ZyM_ulzt{+g<(nyH#9v=HpmeRf!Tt#|M9K1mf}L681SFuYz< z`SRrrF72oVMSV$))D9*(jkZJg)gFmlzyj5Iy0cYf#@6Plh0xnHY6+V(lvH%1t>c|Wsx{WA`jf}MjR|DuS$41>vHo07)0Nx zvtGubnwBWLEaJvB+46`b@(D`hONBYUR@$NpON;Amf9-4jJ)4(tPCGI+iQ~9_wJ$ku z_2o%E>$rA^7XFu8!|#j=18HKb&a8=^q4CP;!&2<-x9yq?xT}~1YJRLz-4@fZ4%AT_ zj)AS+(~ZN#6?M8+N$p9Awb`-(NG~HDJ}j)ZEitNTm@`W-!zY3aWW^+6+Cd8nLZ{33 zowc~jyx)H(%`ep2Bh>DEeO^KG#pi2nX{XY5Zhn`<%aFw(k!!bhwWSj)ne;9Z5i~yh zvE%-8yQXvpnW?4QReaxHFAQFADP@cKrvV<6IZ^7#lct$WC0VWg)T1ofLbF-z1{u|<5fmA*G^KdM z8}uAz9E=TI&#!5iPV zQR+&!c`YsNEYNxKF`~wby2vR=B#U-_&@fr%0)yT7<={^a{<@MwA@MXGl>%up8%zDz z0q+ayM983j8C}YyCho-aAZRnAl#}ov*^_bjHk0P5bM?NI2LZ=SG_;~N|O@afi*`&$pct%#RT(JTK%wGTLLyN}4eElR^2*0|H_5e}C! zDjlr(*6X;v-gh*6okeKmDY`Pd@nXqNVt~|y`^;88gs0&Nd)mI%%&3=aXEU|LRTHym zuNi2H{)0X@zY zdloDE!-8VYa)ub4h%Qw0S)6~;4Mt5Kkl9OLy^1&R-wRZ)c)j`djQAeGw$n$;-(|kJ zt}p06a=f~h5!vp)5-(pkn-y`l)-)^NCBw_KU?ZCF>+Z}!7eha^&zbMwx!)!uI^TW! zJLOP-MH;)*$-AQ4PvgZi#NHCuQ|N@v47$wqOK-2T{Ccf4v5DhWxVTUq<4-3`?rFC0 zQ;#o#yp=UYRlS7eqLeTpX{h*b?$;gbt+DwHuY1d2Y+D$b7SB~7M9nuY!f0mEddmPZtQuHq zNv=EW+p*|-5?!un{nSQ$Z$8(dV|U?vudn21HOe>>W?s)WJ}>5yV`g42_-f-jVdmv) z{?>oxRZyp&Y*W1o4R&Ssz z=mZX)toG?tIZ-oA$~D{#)>be*dfI5LVX{)NTU}n1oqad;eeHRBmZFl_>>yWFdoSti zS0%s0zUlae_my^8?Trl7&-}|9QaYEpkAri3fN%jIF!H6?w_=n-Dh9sdK&kOf_&{BMSRezlU77~s6AaQ z19j)d1KJw?RiTx5{^2GfKb4YD=~Q+TNP=SDN)lvB%fx z^J43iHKy?7P|GGX{1IKC_#KMy2QDgm*o@X!JI`~xvi4KzToaF4e_|4-YNv!zbR)rZ zdLK?*E)k{urLD`B{)3i5B#5rQo{-x)tT6NG%lP*)EJZamq{Ddn9nW{87qDM9M@{03WcjEP)zoV|o6zaFj(6>{ z1o^{}%iL_&s_=cxg{Rh(L>fAb6luTqki+Xixz5Q ziT`@|EK7966Op_AuIP)mux?%5%+V3zBI61-y4Londbc&}Csm|vF6k6OzFZu{ek9V7 zti>)tMLJp2napYONA0RXynOSndCR3uIBGPqmpxH)Hf;9u@{hjJNk7@jD=A&2TWgB+ z=7|)Y{beUnsPpbQReL_tOs99APJWZ=S8}Ia<5zbYAhAO6y=#tPqjh)d4;ITLFwUt= zdgA?`bVUf#72EzG!2xq!N%iqtJ_-)C`{{Th^zYLz4_$1nkt;Uf%b$MM?LQcLCC^CA zarMP$HSS?hXwkhY?dbW_i zylf>XOU*%>STXsO@p!3X!I&!OAWrz^i?s0LJ_f?)L&gN8X@1Y&JDHIYDnjl(&^& zt977OPErqvD6Q)%zd{vztEqjEXDrQ`!-`4$C)bhIY&6y%H0mvMjAcqaB%<+xFXc-{bBa{*#fyB-GY9KUF}1i!0%DzhKZM#} zS)c;S-{9>f2dEMnrrw}b75mCT{z!EImoX@K`{HwZft2mxlb@|iyQN-uis%wn9 z9C}(@+DRlaJVdGW79QU)bnDR75gZbU-e7~T*#m*rn@NmD?xF@UUHA;tt`X`QjzI#N z5+X*il1>q^nJ)|}m3Ig*iYB#uUu?0KRB|r!V_hjR<}8rLChRW^zoYjy$PCcysHXLI zrH~^1d{s0DALEoih^Hq1A|nIOfIV;{DNk^StX|3gwx~&hZm%`br+?NFbB@EMVTQ=a zrn}SkRaNKJ=_aBIv}RYcX3K}KUMfJ@tbF@`bF>#AR-bA^zA`yUoG-F!5UKR4#Pu!L z_l;-7(dVQBI{LgE4;GAWJ8;n{$8|Jy66ZA#=a2LFsYaL!DRQM`CoAAfSPpTX594Sz z+ic2`-j3ssNVtloYAQGlSz5t~=>5l5ufm^5_OhipUCmuqE^xY*yL|5Zj~ABJ`p@%9 zF1ff-s6WJULE*SOY$C4f#I1s_jm1v=f?_MJ4_QVvBw3GR&by9^*4pzG7`zsw4JfUX zoQUra;mD+HdsqMMwp=^n4lL@b&F}+~QBTyb6O`+TcU=QXUC@=H@!(DQ{rx_x!C&ui z?%$XGRZbnrB#NV)9;j6#_NIXi>DoJ#(q2>c;MsVz8M1k7%X!pbc z+x(sqR{plXZ7Ep`=RUM5O+u)2KN)&3=vq&lQ4qzqsXMh(RgPYeiWQBLi48>9YEC0%???bGKk@)eIcU*_N)7Rm~_3f<94VpNXHC$mu?P{aJHNp9-Q zs-=zle%en}*+NLM09UbIA}RGn4e>mm%bcq4P8^GCH*cLKn{MfayMt;?CIlUZ*O>dr z^S-^X7?t#LldM@hw-GL*(seDJilU#8a?t+COrBdk^H*c?LVey5;u-F|+-e;))$_ip zf#2qdM1(na*7GM8*;z%n)7;cXGJZH*y+>Uj!L5lVd!)-ysC{K~;&NHyvlrEjiN5qv z?>m)~*}xZ1owupaiL>p8d;XLTLyT%y*XF5c%`TbYh*rA2c!RJ9=_L}Z-TIY5Vt1Ii zC}ea8zoX=dKAp)}&$~p!I{MT@8Mg$gkpL~tf~Q?kymu`vLj?^`ojdDB>G&pN=&u__ zPkdSbHuHXx+OC}L`o#?WR)SyqT9^>G;lf&<*MoVp9c;7r{(LO7B)sW-L)(?{vZrmq z%^Tx2yawrb545h<(Ub5nPPSLL`tCtEV0%upvQW#r!{2(dIe-^MJN8-KuN)Sr-eEr{ z73K#P*k6u!Kk#|5S!wJU#Ws3ii1VHOa}KlbxIdK(6B>7U5gh7mvYElT48-AvRg&HeZ5<8retP(SUM!6^oM>7N|DA*tn~?`3x#M z8W%p)5$mBS^d7!=-AVEL2LIC@r6tL|%OzS^QO&^plGF`=DI58>KwM@gn4A zwe<2Cc*>g6w$T?26*)(8ZO&wHvMiKXy&a?u8WeM0tBEYW;gqm>O8v8#d&%G9F_Ko_ z?lg{GS)nA-C?)Xzb&8jdk;mp>^Up@5T3Ft}R36IZ3#09no0{(+MGU#NsN&RVj@*z@ z&BJS-nhj5LJPHzyDNGj8#%_0MYO`qQ*2fh+#~gALzhUts#rwMJuI)Y9y7G1Eb=O+g zNPYuJ*UCqQ@o$=O@nLVjhf++gp;cJ9soL^7ce05^Ozk%(3fms?6DX3XK39m+AC4|^ zxPJ9jN_O+Bu<-T^MlJiPfa&YFb`)2DojAc{?Rfn5kr0P&U zXMyjJg$mn&_=@%7OdUJgw=qU?hl2cF5LcXhlt7 zWE3uDR{C?<{CE|Lj-hfNt*<2!Ww|cHZdzo)@26p@z{|Kl&_Hviy0-81O)2tE?^5IV z@_G5CLb7fcZA6T9eI@IYB7INyA;b6?hgTB)GdE%JW=0Q>e^Q7vs&JgV0-`|uLwk)z zh95r}IrA(I_~d@ATytHb%^Rt;{$VWe#}mBhVuGcz@mRjw-wCWJm6&`YclWr220iqTTE|Qr^rrrWgF}BbLa6$@YY1d7g8ln!FOKmBxfOAg{COCrRce_E^os~&(9z4;m_}dEIlM)7;UpVrziK_deBYysn z&Kp)0ImKc!G;l#IZ17FpvoGE9D0!Wj#2+P$tu|ia@}$+2M4Z2J$+X53x4VA-u+}?A zZk1Fxh^HBko^*b2tKQW7!z8vV;!+TchlikO^X~3VS%tXqcFHut!A-Bhc!4c({O|TR zKh#zM6!`@%szrsSWo1}|ij@T>eV4xd-d~uovC^np{^iZKcZ_N`a7>wKO-=L%O>^>? zbi4az2pY%=%`EhBr-SdDS6?-nv?smyfe(B0&S>UuE~9koa9y}4tI>TC8QDBKPbElhW$ zS0dwEVwIA-Czdop(IlUgS~!JgN`i$l35;??TXx;upAV9KA|Yy%q?;$!zd;w&FK$s?i+*ul zfjOV^FwQQLw^_wpdiFtkf#Zbv0tYp8g=}}oV~6=c5|OHHsMsAbX3GH#&IL50s6V5! zXqiHXS{$A>hx~6W3<^Qq9jVTjI-1%{bo9H=_%W2RKJT#2%iT;rtxr%KMDZ}cW1P)!2m9hAnGiT}XX5zm=#;MQ+A~HP|7JIPF&6@Dodl zr2qpB2RRv9=cpg0@}%wS@A?d4lllv@`ZQTNPCX~u{bJq278+tIh^N-ePR5Wig)T)?AsmpkW}QC!$?v3LnjoP~`G zPlc_Lu)su>)RaF~{How>slbAqoY@#2!3>j1%@XR^dxE`q1-Q&26gS^X2Xm0-UckGc z@|p3iZ|8NDPwzPl1NEaAv)^b0lc;F*M{m>~fZF-4SuKdax3jpVU|{hpiIpJddES#D zdsBPf{i`(g&u{WA?&T`21$??h)^-&v_I4?)u3sqiS1fQAFg>^+L)3MNxM|(CpkcVc z!Bg%u??00G7(1K?&$As_dsuE7N_EK*W2(bnP~m#H;h6IGp#oFR-ZYJm?%dnJ$ti0GoCx>3FpsDqBv3KwDrsc z-plaO#D9f} z<@_*Xq3m1@Q{kZOEgiq{`!c$#J&QeUi$CUgK@sJlpY(#%L;~XoqVMoei``QyemsfsSBq?RnRzj;1*PZB>IU;)O?a{+z z4uz~1>A}W11{%r_N(S1q>9-*cBAWL8S?H_;DZC2n(&u@7N-HBD(M35@cw&DpPkB*` z9aC^9*EH;JTJMz|ed5U%LWRDFzvcXhbL0}cfk*mleJ07w*{r-u}m5Gb0(8<*!Fkiimf|7-h4UC5_2E$>SfMoUuaof;GE`P-KP0!?uAK~qH?$P;Qsc|YvGd=1d8w+zxM&?QarGQ|fc7n4AZ z3NrfqJR$~{%dcs^uf!z8(q`RIdty=cygQtd!{`(|Rxlj(kWE21>4bA$JeqLmqe$_a zEALVVGo>cSRJps~-z>d*t%Oihx#xb3$5~5KLfMN1E)Bjl%>&{G{>g+p#j4+gE>>8Y zf5KG@$4IsurRC5L#YlAH)2MwhA?KGqNi#El?_v20Mfa#AD2#K%(l(QTh<@(6RiSKN z<%L%Pg*P`6Io-&(y8~tJ=0D;4V(+#?2j>CpG29a!PdS_{YbBTxpf!4}YtSdX3)XXX ziA|ik=S?&AV@r#eXu`B4uC(6b#0mLqY3cs(Ji9ubY&v0*^R{a3w%f*-!v0f1u4Ix5 zL-teZostFP90a2sf*<3ZIO6N*Wvb~Fs*@(}UG%psW&I}ors0`wvXCn7?1DY-*-Rm{ z9QGBV)k@}FlU%Ryv#$Kx<}>}x2|~0T)tn}14TrGs_2wL-424JCCDD|uqm}(FB?~2` zatc8xP5Webtzb#}(W&GLn}X`TcYd0kLR@Yl@P*arIWiW$jr~)$P*Rxntlz3f{ch8u zJW>+ z2!FI{P}s*J=s;CrXAS;B4o*fkLSo{X;4Ar>YF*LIpqroybg6V|G*Sn{AGc&HhLY_N zv$Uvu_FsRkR?MRG;40cntDBd1WfSu{bv3rr*vM5l?>U_Y?G00t;#ev_r@bImocj7C z+NG^-@!w)32YZ>{`ss^I2S`5VJ-shYdR6$WZG*~SZm>~RQv`0|8-6D{N77xqp^<#o zAC}gPR}BL3V%ZN|B5rCkJ0=BeGNrDz`2~~^r?#s;53tZY_;jfy(<1)7G;Pfr8NM&K z>s)ov$3d!Qof&lU6pPYC8QL|B%_>#~KC~{iO^pc$<+z2CX_@UY_0NK}=) z9GB#ROkT#jX$JGsa~A9j`wZU4R>&xjlQ>t7R7>ygDs}jF5!K9<53wm#u(8dlJ-z($ z{!LUD=Y@|;gXhkCx_Uvb$B5#UgaBD8^jCmwOMI~Gi|c3d;+GlYM)_x%v!8r-_7@g( z``A)4)|IRoQ5)_ifzjTZm>L|{vuY6|{g^^r{HJzI*!gYrP`0sD*5H(yRc<{zSUYUB ze``0=gzNC8`;m7~q9!(zdss8ZdAz}9V?TUKj4Bx2E*|p)JJSI;M~KM<4?_qw5L+BT zk#HffA}}Rbinl66pum?MzQWVjWlQHmP~xhP0O_2)_uD*BU90ke-AC2p`l>3^FA3e4 zK)d<(*=M|eoClN2=43TRzDHMe`SpP?%<@ljvRRw-R77-btkx@w88y6CiiYB zcUhEEctOC|qehc`TNmROjnopy^)%6=F$T0=@Ce7yuCM)Rw#nT7s3GBuoQT=PFnGpR z8lDeuS~g9TWO~4K?m^rwOh_edpd_B?xn?Qm;v+M5k|rA(SEswWm4qprXDesR*W_0> zBTd4}Z=??RvGE^|>AaM5|7CJ8C7m8%Xxa&c;5(S0GyC3N?ZoK=wnJEo$( z2WNuAt6pYM_R*Sk#Db44KlakzSJJ*#J}&-q<8tL&6~V!yTe;HuBUD_INDbkFoVi>4 zSwfL!QfBU}s-x50#nbrpLzq}6IQtx0Lge|>*vs7?|Le=0v#(Z zn^8l2HDQ;bfiP1}B<_Z$Q&)b#FDr0HcE|4qIla}PT({bX`ja(S}94$p8oMsZ) zjvM(Y_xelq5ka#eF0FDI8+qi@fRm`u3jH{1Vwp9t!-F`%pt< z@;=F45TSh#$MGgdcJ8Hs=|r0f>#NAAOYwtzolQ;ONF8$b{IYv~x)0WS&05|JJjn|dhw{`SsiWqN?pLGx4wcc0ep`a+oEn2uEd?tiB zI5e{`?6YO&!1%|74UM(^g(H<)CUU9u!cnFXLIGn@ytMA!B2J@m820hq_;@?+Yl0%< zQ*5-cV-7lbwYm!OL23?qW+;b8wwlVFzvFX93p3U~Wb|wdXXg^F-^RfYr*I`l`?0~p ze`EI~hO3T06`{(3RxLMb^q7QuCig>dnIj)KGQ59?n-2z~=fm3J!K>G$XfPf_tg2!& zUrt@JMBmUu4`$>RR%Gf^oIaIDt*RQu9~Ff%P(h)(Ra7gp-Mr>dw30`=={0%^4^G@E z*G2=^Hu3TJCh#a3Pk+3+_|YWN>)=+#4oBylD$?bwrz6`q+3)7%NU12tWwTDTePpGt zb93xndz3OEw%d)7X(Yp4i5QMy5ET6u(MqJ8)oHw9Oemi-t0Lhj_juTmGoa6rq&wc@ z^+MF1V_5k!*Tn6PZ=_a*v=)^cPS|{xNF_B_lT4Bi_R;4%7V(&w_-AA219Bwo(bOvy zt*7`h1RQY__lGZ8`s=z>$!(;HDfU{e|yQ(=`iTDxL1N zGj2?%`}e}vsZ4|6AuCfoDRCB_^tahWUzE;f3gZuT?~d!&%O|Z1&?d7>`S6TN^jYFt z?Vl(Yy^pOZNcJipFv_?bHijJq|o_|*TMsnXzZnb`F&r~lN z(*~BAk{@IAF+Mf_;}}NC;|GgU;d)$4!u`Ky93)dX?-unyZyuCv$3y+ zeQtQ%TW*-S(Dvl)m#>jd1NkodiUV|~2R2QHR$Q-IQ;%;^F3tX{3po57hn+H3FX0G@JAYLuu;A(>P`@z*JN zxnBttp^;unnF9OxfRaQ?W_7@I}ryqzZm!pNZK18->C1cYI9So?H4{C9I`ls&1 z57};w4{SKw4t>KXSF#!38>b|Ckr&UH>pVlFKzh|GFx#LBn0mRw#rKCa|JI2Ja) z%T%_N!V9~25%=hpUH88ByI*IGp^G@G8kcd|kub-SRZ)^43#GtJxw$VDabRByXHzwO z=$)K3o6@5jA0lhX$HzYmTp*pMs@(jXupYJG0LQ`eJC=Wh&vsnxPx|+a+UV3Xc%*c} z-J#>>V)$~`hYyX{Xg5h5C)ai&FTn#i@$1QodvfI-GNYLFaiuG-B2%Ax+ZVv|p^WI8`l)=Ulp_W{7QAd1kB!AKY;{9T4 zHdE=(QF$c>eIjsMPC_D&uTmoYXy~Q$=Ry`{%}4&T^5jn#m^`PU${^G;6;6Z z+F#e5>ztg|7{cc5QF5bzO%Y28gD04Eru10u6%(B9R+rq~ZRt-f9wpOj<<3zFk^YS< zwH|@VISYxDM=p`XbFEebxqSDi?i+l3r4N6P*9V$|y!W?9gB zL1gr=x)u#P-m!pf9D^@VDEJK9Ua+3*-J~Ho4ernBrq)?Vfh}nb{=}@DoK|2MJ{76| zwpaea3(>ucwq`PS4Xy=P6+HG32;*<68pSSu+}|%%4k6I+ZcK@g7kUZo zhB(AU1$>^tX(f!$!?{1X9-tCG!2zxe5Yb3sU^mnG^;sMzYD12Q;9n=H=#t8mB+c7R zrxD!F-Dyw0TxVcZTHzNV;Z zys;+x`ErQeiOl|Mx&Jy z%E5;c-12x?Wn-IwK+yw^>MtdkxF+-OY^8;8&w9BBR6t9KD>y9B^~5Aoy#!`<6pv}=F1qWENlx@a7_CL-lz-R$)xe#DkcSyOXt zqI=2;JI8+qZU7uS6Yt>rH!q=&81l9fZE80vgqF9#t>cdCYs3~1F~S4n5^}%ihy(W@ z_a8`a{A}1Cv%)0)1e-d#I%0Eh9!l~GdG%_4nf*4(C}ni~C${F}Pjv4V=5tSNeM2Rk z(DMFq0|9~zq1LuN1rHj}zPR>ghR5eHq_m*BzA`F%7_7~5-`xA{x(8nTxqqPBEP)-e zmh$Hq260~ZEji_rHT6a%FosM$0*lK*KpdocLv@-5qo6b+VJNfya48|TxcI4#LpMLy zWaOQVAUgEZ$MjB-nl+9&M+*@ODvFBX?%;)}S%b3fEArms+yfGVZh=m%T0Iy8g4Mj@ z+Py!A3dp+w0o)Qi+K|h^2sD#s$NcGqk*2F-_lXL?52|b6nGPm^p-Mm%TCDSVczEmGb)MQd^s3L>GT+##pBxda96l&ll4hYKf_eNn zhqJKi!QZ9=2Ce1#$j3Ffs!ha}HBs@}IT8ZoKKs1Ifr_V|28y9|LJrJjz*Mmchg zoVq$~s*4wM!IVel7Z4epb=PJ^lzja_$art)F@=Y#v~ zw>q}s;Qc|Xbuc+hi5IXlEUk3WGha!JQd$ETuKE@5HjH?KxRj*VlOb#ge*1+l1dSIe z%RcuA4+5N~s1RVH1Ytji8-J@NIgeR%4}SH^{Mfq=tvWg4R=IqzSJ?2Oy!~K*)04-V zXUi%h670hhYQVlv6;k+8Gz_@4%mlP0v?}cbjj;bM|3|o|{kOG>O{^8f#ZUPhcImA^ zJ~?)D|LV5~T$WhGm0VtAM-ohoNBZO}`hf!>3j}fKXxkwj$L|jTS6>T_f9KFs?AZIB z4|aSStU&Wor9ohT{R%v*D;)dB0v?83R0P{hu;GrZ@P?sELU-r&>(?Y^lVJS^Zc-iI zXajhl(7}TIe72l7^+vVVUJVc}*%7Niv7}Blb%f0O0mf<2Bsu7KU}}JZX|kE_j4S0$}GkSSjAA z>IMIx_}$CpWuL`Lp$VOgmM4>^heMNGJiKh~?s-^vxa;9MZcfAzGPwHY=ii7_x&a=o z$g6?LQr2-$Vbv(AL{|d7gaCs>{9$XrH~HL4$?H5kSzvw3HBwW-!p0U15pJT|I-V7= z+P!z!p`cl;YCVj&hJx*Q2Ov+H!A5hUuiK&@thH9Ze;`D_0EiVWd~(DlwRZZ1Oef}< zkBe))F1l{#(eK@?dpqDm8zIFUE9At{c)ZA?Rbye@LTi?&xOD_jiErRmR^|lX7z2|N z`vGOGB++XEW(;8BmgV39Hp2+P23bV0c@`TzFj~>m4fS&MJqLqU&wyqb@PM&L2y+8` zw!45^UJZS(xfnAY)Z+%fGmrlaZoe&HizWp;XaJTlKnS-_^5W#=gq6tRo>ffOLtS0n z1S~2`6X-zjOJ1K-VWb0er^n?^bjOmX zhRf;Q7Qzt=EbyOp*!}+40o=vPst+nWW%3?hzaV|K2xr;(_9g3=tmSkNyT}nnpU zE1EUz*7D4hvoPA{ATqQq|15WO7^_=bvm7eY>jiN67g#r|L6CA?iZe_9^@~9hm_@(= zS;~mfH3aS&68Pqj0JLgaZb5p&{cc*qgY7aIV#3u2HI}^aMp-mkzP7ZsXxvs{VpDfn z&MmY6#`>#Q#E3KLE%21}6uSb{DRjabRh4P?rQ31{Vi++R)cgG-2C-2?_$yBPq`|E? z8*64du;>Ex;WNrCX%PHghVmIH&LDWF&Bj08fJN^CM=M#T@DT;BNxqzvQS$TyCy8m* zF)UVSuZ}$Oz}f2_X8(7C_eyH8>q7Wr@Y}c&E9&8#;Ata6p6~8jKP7Yz4_kpp=&_mX zu{oQQl{^Pt##zP1#Tg0xV1~^X48i;Q1`nZOZ?!h}X+IoTV0eHrhNBOhwK{M*MT|eW zCTc1cfm{Kuw7Rp9Rx~aDyk*#S1}5BRWCfKMm<@n1GjxwG@|C}>fKK3Y8ZrVDnS zh_fI-N8TXz+KtoGeR7sA&IeB8-^>atj!G@otk%I`_}ayg@VGdlravdse-O)JgkugX z^{v9*O6TNVXsyYrtZ^okiW z?{Tg@dX1C+<{TKOvScONODAzYs@OlM*lo&vjF@Hq&EkbI&ft9AyL^p}Eel_3$oXVd z!3V5}lV_0D1$SKZ>QdPgoBF+r2ssdOJb^R=u?NA7`tIxT6a4Rm=DbrgD*b^XHKZZ8f+~}=o=v^ml!Pca1 zacrD;=}fy-9vnCuP0NhWV{6jW0{~&bW<3cO=`TMSUbt`pnVonV2(0lscMNBN>nLLP zbIUMb;PWUhI4;k^P+n-jZq5T{(Fz(0g&^T<>UIc_h==?^@>1jve6J~Uw?OU^;7Gyt z7VtPi7>E}U7tLR0u7VXdX1GWJ8}b!AeEZfOy_mcU05Q0%aF&OdMq>#0@((^QuuPEc zHwG&`0E>i!|8o!k?aCb^#tJ6ACf`7w3dN3aWhG?9km`?3U_4!PjilMV_e)cDDjQF_ zQD)>;Thl8o={KIvps> zGmud@L1T9df(B?;JE`q+vIpFtXb|vYpf8ML_HZTVq2jn-iT=wyg#^hM?3@s@P-O+t za!8Js5X?D(2c2*pw_aFS5NHgxB!79%!$!Sm9ITJu&Ak=tK;1gNC{&GDC)`Fif zjQ;wQ0!#t;vTg`xz>LOQ;Icfn&IK|kc`HO!Oy{KAEmO#lcbQ`6mOmH(Sc!)33&Othh>`O+N# z$lC(TRtSu{K0$Xki5^U}!snW}Gd(UnkXKWqsRJJz$sE_f9a9-ByCtF6l8XmSCC7~$ z`7V?m%djJ&IIIn4N$!4-%gfJKQP**bx+LmeCbaNYVgPc6eA#|@7P|Zil99q{Qg}(& zIsa(1*E=)Wb&kl5``|ug@<&idC5}T_RBk-%wiys7q)&e%yeY8P_~)buUu(D`T`UG- zuXlZ8aF58(uNToK*ka+LaY#gDk<52)&d_WUu*rkKejR|CZx9BGs)fa>xAmXov7}** zjh|#ts=$(H2@pG^gs~hev#^APfy&w^Z`BW?5s`y`CVCR4aU(< zVp~YAO>h5&(Gv7!OPIYJm&vv&E4D(%mg|i>C{;ByvYEoAlDw=^T-@BMYoOp$g%au# zDAF}BoK)T14!tc7Hb(}{_Vich9UHdqQ;@|TEe-GuzodzfJ|9<~H_lfV{y8WLYY4Q^l z{~y0&l+0s21zzHR#R2%seDHrO?f)NYc_PNKd;l;xe4dN>5()`a3BD%tzweMH zCSeFpv^fPPub_H!sUbVEXT6asRx`8!XdHK^9=} zSpP_HFbaevNGb&(F@Fzo$2hvSo2c&her2QG5Xx)^7DOZg|Ftt82cuq^efc+}vP?+4 zMJnd}(jG%Vj&*zM{&%mI|GWiYZ(B@abdbdF0U&adHb7s1LMZs@^)|jc zfco25{|R|hDUf<}U1#ypRkH-i-bWT>@C#X)Kq#K;^HyG-CH97Bqb1>X2|zmG83z03b>MN`b(U$R^! z0C(CcUJ`#qrQ+)m@c+A}jYDKbFpj`a>Zt*=CS_RrDA4C|AggBPv@Lx}^T|-9Fc82;ZhR({B25R$>`_230iA*{|40L3#Jqyf(fP)s!6KleEr5_@2Hh_wGzA%- z%#$ZX2)-S185}|9bq0LbD1AIk0dq_SbjoCv98=a0EvJP&{7C} z!PF9kv4vW|exrQ20@?9KT+6__&yb(Jxhy1sC z(mfH;%X-Wtu*>7$%FMr~v0iCxFajjb>$Ef`usQAl$KwRge2`%i0boe!3xow^{2}xx z)@dIbZBS+|L(LbuiQH8v++C^N{AboHmFx%XoSaBz@V=_5s-sWzC zUGSf|pl%vnJV8b>!g~Q|s=#`2YZX*^U~>Ot+zj$CZIIW1=-~&m*&ecJgx|ZaDE!Iq z(_kOzzhi4X4*%>$WI7{-gB>W6icg<50lLTyggt@7g$N{WLJ_JhbGP&%LPjXyZnKhy zWOVr}U+= zoLbLBq(#`0T@hU&z2MIxk532mNOA@D#gLugd&hpypPzp8=5qD;@-FnDVAo5@=YY|6 z0P4xlgz4iTSR6tCQV#C-?t7L?y(zswJ0oi%zjxdO%drc@p2$hGj02Kvxk3%QGEx0g zOcd?yEe1&iHxhRcY)X9Q#?VPo)f_Q!#X42hbsmDegJkTGUo1gI#dP;>GlDd(h3&5>z7`_M!3iRJO znAc{IK;g(H3WWdoVUG}70h{uvUc~BqatFl&AdLKkWG@U^xL~dz>pS8s4pmLxKET{a z0STiIje6O0yID5jPC;|y8;%TQJLTHrHw%!tIS(}g_X%O!yuK{>4u)t146NbmEx7lp z^^z`RfK2JVLId=L z+93s`v!T(0cQV|w0Isn``@r=QK|Mw`DPWe_cJmKE)zn;j_Gf(h_h%@&UE%j}aJ!H? z>4UiZY^2x^q@q}eTToAavdBvM3|aoui*)LcZ>!T~`*&FY|(htyp#aN>^ z2Efupwx$riXaDU}Rx3kDvIE?mOI!-uFzX>lZr_F=!3Rj&N3Us`5p)aE;jp{%3z_v_ z!mq`_7)yb)Y0L|DeICP0KSMQ63!63o4l3f)wmST=2%3UFGX6=fh$SN1Cy?ib0>fgx zKe88R|Lw=moh(ShKqE{O72yEh8$dUl0D8fh0ekso%$_|kpfV>9fQN$=TIlT&{Xj(| zh=Dj{2uBA(H_r||EkSB#*z5tmeXq{uvjEnLm&fBP{ z#r&?WF5LXyY5l!dUESSIEu30F;{qI=Q_`}|i@yx7{g(jx3Ppw!!kmJI;T8yU4Zn}9 zKn1)FASEJ=`AG%%7B*Jeks2MUz&C zEh2m)i&Pn=@EHiq%WyeF2;RjEhXDi>_W!EjGa-rwP&$t{T^eOPM0`OZ4~M;;AUSF1tX9_1aL9xj0=c}oVctH8_S8_N2}`-)e(SH3jsc5 z5){ndCm2296c0q0MHYt#sT9cd!o-fQLt=0l5wu`Ab=0JD-lJ_|FumjXYnz}K@I^f{ zEoXUTwJN<&+ySq*y4!?>9$5hrhMwmRJ|dF?TW}e;@UnEd!*5~PK0pc;Bx=`AQ0J#2 zxWR=)haQW*-*V+pUg2Z~lQ#h%{1CLMD(FiDeg>5aA~J#sCs1F7pxR)%ozW-~$CmSg zB5m4}*Z~#38_2}5VqQW>*cHU&mnNnhAc;Q^?W}N+r3C?aA^XIDPH5;d$OXK!0cbti z0FM?q-fo3~2^q{%oxCNi&BIktvLkT`$@QT|TY^x_7%nw1dH`VaB~bW`;FW--3WCHi z7*Un2Q;gmS1_85l$ZZNfUqjbH8&YHeStiIJyd)b%2T&MNgR~**1S!UyD$#JMY^ZB;VZz?C zK7qt-5Kb}<>bOj1L@KR;BBTP#o(hyGF8csV4iSQkXaGvrBG`99wna6oY*UXK|6uR& zgSN8=Is zbjJW-!Y+BDHyf~M_p2JzXmgV0@=GOt1qNs;$h-UsgZ zApfxThe)N|k`krR%YsUxfDrE4M`jG7zHnS1<{x2zifyA6L_`(1Rd?8TrkmVCngsbw zuoH^!FOFP{AF%OeSkUP5fm)mfC1ozOTv@-oGT_M+cU&h%&AQ|HEn$`DG2+s$dWxt> z5Fxuq&43_^Y{=HbuLpJax72#hb=kxnTu`r2(b@(ufGjEkmW>+ok~q z@ZXoh7P|!&rl2}pRVd5_R%n67b~+`!1juQNkk`YnhlO3ca4 zmG*+n@o(oM@F+2bF|0TIz@l9M3gW>n$o0ycKnX^TnSF-r&FPysVGd-djMj~a^s;f{ z1WR!)aNzE2cqu9>rh?4+9x|sA2pNbv2wj7m2k5DRvl^1fn?tC1%&z*=yX2k^gI(J> zM2@p)|EL!M=os1BUKsUT>&iMh1u(k`VK%=h!>XyN<+iju*aNI0|47dmfwf2o4uPBcAq!LZ`S#FUxY+5b_+W4-#jnxis4VbqV3_@z~LMc>zBVZPInR zGa8J7AEdg6B|xIB_?SLwD5Pr>-N43=Jf&C0CC%P+iDQJOmM~E173@m?-3oyGrFHZ- zFgNYKFb01EECWP)grWkA`1Onz?elH(b^s;*1jxK!5VB*O*9Q!YlZ2cMXPW$wT|R9% zD}sdN*vt-)+}8%CFWvL5D}6@J1!^x|{Jw_+EQf$Kd?UCN3o=mqhz>wWNHSymQlemj2u zSM5*Q_w29>0W!}#h+4Byn%gD!YTS5)LeW-E*q=qDVgV4D5#6lKAejDhqM*b6uN_MW z)XVVn)QA338wJuUViR!)t`Aw{(!O7ZgfB@geJnQ!m^ z@R%HkfRav5{D}6}`0Eo-pF8v7!op3r9}7ASQ?NTudsE-nVH~Xtu`pcc&6lkO7CrF0K)1#>=DM2`Zy`k5T2uDU-J?27YMgW*$_Qg(K?;^N}uaU5Vn@y8LSsMPb& z9uTo@px|$ksKTIWyDf(>FtgBV97V$k&cfwG@4P+<*Xr*=N)$A{v1E1+i*&Hem}-~O zRu*Pxx_@KZMeeX3rKl+G?d_d3E4RPwcl6v(=gG;3n1cPSMHLVd5!RH{SzK#pakPij z3?y2Qp&JpF1)L;uN^U=5uu@Msb*U6`L8KOe8CDJP`tX0T_SR8ResA=sNGXyEh@=J5 zBHaiGNaxTsNOw0#gQQA#Nev7=bV*2u(w)+XG=ktguYSJwch_C({&&}+bS;>9&wJh{ z_TJCgfQMMO?jIOGt&Q?FHXUn`og^O+o5meX1S6 z96Kb;+wy=~%o)Ur1s@I$j!|3eoBon-LzIrDE3=2Az}8TM!Ls8loio3DYFWspyHUA= z%B!>*92f2m@uidZnFnUQH~nAc?#Y3&4Q59*VaTRwhxT?BY+o`UO9T0!waOL%T$BI{ z7X%4V5Zos}k{{sl_~Rmm(r@Sg zAT|Qqx6xn0;C?1LfoIGKL@EcUFhA^n{)Q~XDQ$)e-EwlcZ*b72oJHxLpFFTIgCr$@ zQr`ra<;6hznQM3CFG@m1lZgwDzyv^R>zq&jt zJG!q6?55T4LhxD+AgiAm#L<2DTPgOqv@|_JzBM52$RUX757spO7 ze*rbNj$KTQUN9PfCYGV%3u-h#oA_7A02(S<5s}3ro@yqr6OvO?WkD2xRD+$60<22W z2|RM^Ab%py+8J0APe`ml)g}m_t~tkk7O0aQy8mYebL=b+sH7n7neg2!h=AM~E8Ygh zs|d zmBB|t0tE7-kQekeOO5SW6L77r{Wj4Gt^kD3x`hn$Mk}y6K(d2i%*pN<3Lr5lbmH2b zX+8z;N^tjT(b0obP~I7XW+IYGAOU1x$gU0I8}dn1$`FVZ05Oy~aWyx8MOkS8>-W8; z5NlA~zCArpA|W9GlBEW>{e`tlO4lhkMxdzh#pV+;Jqrs41K(e?;67OY^aT&v2IzHV zb}&iby@G)4v~o)zg@QnEi$9qlBn3h+D#XoweH1SC8Wzjeoizx11-jn$J=Y`fqlzv7 zi#?Vh+-I|42(&Hx-sd!6NDHJ4NR|eO}!4j$Zvb7lYn{-5X7+|stUO54uISbq27?52;$)Yul9Q8 z3eo^V;I^|~8HbuZsJwN7_-|<6>C!R~)J5Mx2WU~w0^FWE!1DxfoBv6sAO;Zn+e4sn zqRUiO^|iZh1sY8#Qi3M}!sa2{aG(!70Bhq2zzzV#O;xuPaHnoFCxRCs20%dxNydPH z0%%sG$B{|5SHGYAI+aK(Q<_BVz|n$i7l09)rA@E{D?PtM>ApBsXR z)CR!(E(p*EdOc7nvw_GvG*0%p;n0nf+@;S4DqH|4ln$P~GzgCcF9*JL0cjTm%%kyc zW(7imaY%g+)_^Mn{<968z>o|JI6H6IW@hr1|K*530*Z$X_?7eTfN@VX=t%*#-ZG}9 zbYS_-07Y+XV&VXH5{J{eTmhW~5R$lq2Bh;Ae-|qd zjDPbq1gbVrH5=HWoe4o?4v6_}kZHS3?Yty2=^J2r4}oV89p>fpn^muY4csMAbG-tB zuhR>6z&Oq%K#vpvq<;b~)B#Wk%G%m80FD4rWeuQLZtZDm;vu-%z;L~?k{w_L@2hP> zsa(logigsI{-m;>wPVkf19VY9wee1}1Gj9l9|X=J=skd_s$gP5>vMSu=Cte}i&c5y zOc0aDIHLfFc?6R30RRnD!0QcX2qp75na;d#fdrvoYJ$z@!Wn|t!G_AAt9_#Zn)P<@ z$ajM%ISka_Q7YjeVu78uQ|$zLM2Kbpf>Fpm6v}Dse9ur%#{0@=Joz0CwooL8oX}g@0cFFd~rs7f{(a;T#fx+8x}_pP(T<0Hw(RC|CIX zcdCYk`++X_71*QQluo!%kD0#k4)Ec(Ag_CfE9Nj8>Rdfw1Nj^1QA_#nGfe3~nQ(l3 zTo8c6%(`{&fxzpaTjcr!#38tBTX1zjKqSD^(;GZMuS*3YAUD9WZI7Gz0K@@71W?2S z8Zi+11;M7a5SfLBCgfAOA&%(gPtY61LF^5Loed<3g1rn;CQun0;0!Vy*v$|b$g|-7 zKI8&jcMjeK z_`f6$Gkhp%fITFCSzH9sn6Io(0B3X$j8a@!hRXk?521O7Mp!5^4?<^t13AcdfDJA| z=@uw;pnw867kF(ulOKRPK7e)Hi`D-lR*m&{*kvXQ=nSCB59)ux%CyX1zkC8+%-6fz zHZ!jzCBOLAYd_W02-JntarXtxqx$;#pxE&X&>ajcEP1L03J|{p!K}unrrf`H^YZc_ zjt}UOIJ{iGK76Eo@BbyYfr_{Pas97~YZTE-KvV+A*!l0H;dB>J%%y=&HIiB=1pp@r zAW-n`31@mA-UbL29B7mvfSLII{r!Hrzs^G-$$^@R+cpzZ6DSD*8ea)e4YPC=Xi^1g zI!Re|A-K8+AeCv4J;9{9DTr4PA`gM-_*DG%y|jrBbIJeDI|{M^{`Mfwu4uGgkN{TY zway;^?kfYJ5>$nK01JRrCxA3F1#5c)B8e$MxeBRhp|%y|iznE5Z%If z`tzR|$j$$To@y+?p9h^KG_C}KEQ8GzfIJ>>Ta!I_@L;F`0D=`jJY{wXL_Fy>0099I zj=-!NEg3F5U@QYZFX?B31GvB@@OqY+{`W4a*PnKY0x~+%b8;UPIbiCl0J$?&@kFQA z*5;e*|5O~{S5AR-*n1`Vpzc*^os9$cFv(o`nS~WGouypWN9t&$%vO$O;6$!DkEMzN z{3Vtf259aA{$+RS*j*j$|Ic6fN(?NuJ(~6V`uj&GByyF#g)^&~T{Qs=+S}V}F=Wc6 zXD<}zU1@gaViMTOblwoqN@08&JmC9&oS^bT=TV}qpXrSTu1V*SY9EjPTfGuw4!msP zn>LqT-a34trg-I$A_*w>zfHu)#qoAvH9BvJNlQzo?*Yxd4fGlXnQabCS;tOc38E!; zS46GC)n7J!OX+5OsBUW$1M>q%cao^VM92FsV)pv{2ZYtj-f9fU$yf|$EN5Vy|GO1#oR6xXyfk1<|l zdr8ysdndv=KuXGpYRl}iJgHB^MLFN+5^B)R+UfPt5`Xtp_(aHc&*judZuDtA=_u!m7gnd@{x?;VhpyyIZWX8`n-J{{JzT_mSm!d4|sLc59H@ z@MJ*-;}L1Or)hAlwv&nWXO(K=fSrfsU$*mL2kGNp#fM&2Gv^2r-tW}LRK z7E`5g)yUs^WI5#@Q6$G?Ese!;+VI78vKD#jnMZt^!~fk@kl^k3@&wpCL-t)fYj4Q2>^<{P%yvot=Y@%hUe*S zFK7e?K;`~R1&c79J=dI$Wj~fID}g#TlJc3^Fo#FV{-{2 zBKtQ5y#bcMeOfzUK?Xbeyx1|*x-(qDR?HWI$4%y&+6YoPQDcy?*e>!SAbmc0_XY!;4!C~Z zWfX0fd#`kRg)!P9WoWPZC&ToUp4-7HUU+#JDy~_%aR`cA<5g+oyPrb18uBM8evD=8 zq%156MTa#Gq6G{AkJx6)Z})fVC$7F}Y$guU@#n8&HWeARE-4=?^jwF!!{+#W*rQ0=jNJJ(ymi z)BM>Y&G5qIuG6-f!Dgv2Y|J$TIbR#9^Q5sH$Q3DE&Gg6+OzBHiaz7dBP$$#b|FExs)*{Rxq!~Zi*4AS&i%Vh8p<;g0?I$T9OF1~KUshZ;( zPyD^(;DAnC7Qj(@vlUJC4+eH^`&talWnwfll*+9mWwPUfr=tz?J;m0RtN?3@q?P6J z-SGC@AY(Mbmz#c>7{~7CyQ9Yc!HCqYEm}gu}_oB5Tf(*WVxHO@v9MvWZ zMu;)sr$vulWXIfhch3%`s5{S&p{To)-{Mj;ZJFmBPL4EWXf)|~BF-`5jNGaJ^v~(+ z)}!b|49(_G76?y99^9@IrRm#I=!T@9sci|K4Fsg{*PSjR*mjoA;QMZdKW>v)Qq3Vs zt3tE9YZ`Lli+l){%)EStjM4s{HDVbntqCVsD0Ozzf{Y5ph$Xf->p!J12)M8!?Qy)*+CJmyHnnvCWfDvN z4H6aFOJyvaFv><1QBTcjbjS=lJme>F=*+G{_Q?wVv9x!NcOlYm+<435O1 zF0fyEmfB0n43kKFP z^=ExK%vUa06_%EQGjK{Cw~~lSptS{T7jW8ti*jCMXFk*x-b>u3`5&XKl*VG8QSKw$iZ| zQDw+aWyWo+M2ZH5&`7w${V1@&m-|IZeR#U$zT%jw4)pPQC4%WWp*Wx9<~zp*IsGc} z8d=i*C;4@7?0Hu5U4~~&O{5sNsx|0Bn7%~hdP#ItO=5D2KC&4xPQ$4~q8(oVzh)T6 zl25wSK;;d?#TKU-2V`nmoD}z6P_G(eslxNd4dxM@q?!B=f*yZNbR9M=1Hoc4--d+IDjp>ya(t$WJOu-@u0b&e1FH zrjcinVkgdp@1hb)-&m3+#6O9NF4{TxcCM_8mk?wM`^mIKW#N60{;VouXQy|bel?4! z`N)`EuX6Ud&)VQnce+u&FHY>gYV!RJE822w!%Y*mqp4oJ3VsW$IG*Ato}w1|fOXNN z%Xl2rx^Lc1*0XZN65>a|)nZiUON|(LapavbavjqH5X?$sl!=!^s1=r0u!O-E3|5y` z>2VwIe&~@z2Buc!ZP+z205ywA~7D>!SL*-`2{{nt-`on zCygWwGd|}gqfRZGOJGh>JA>-}a==Ckby={>-GxBqG2cY#8v*KXH^s+3k%XA+b57e> zN2rD7`A->*!+WcHY~$flw|YAfq>_)K%Wmd{EM{%-j3STfoMfpJ@jj)9Qp%YGB3@ES zMOua&1wX}P@1;0_|=4%6#d{3kn z24XoJ!H+fYVs#B0$EZA=E#IL5BFRT(vrotWxdjzRf$NLXQh78X$K9z-M{{wQ`~EFU zWNXd%hTP}5Shhd?tG7_BVY5dj7t8GTC6vikxX^i!pHj{ci1xm-pJFjjKUKQinJw?3 z;6`_q{xMcdtl;XR$$jHV#^YoxBeYiv`2oA;_@LGUplQQtV071dt#sDRy@$imC_PH;faxr^8$oCZf3^@2?hgR zAI2i}+-mmir$UPXTOX;=v^LSZiNZwBa9%{4h+ahtNV^te?cDt+@v_5C$$?RAo)K1t zm~k(z=Nk7!9rNBUKF|E#}=facZHHtnJkU$UlK_;%=SSi9N!F`H8^#bcHVsEKbWmnKYOh&}aL z|JI1-V_EJYI8`5&iub)yBh9=Fb8WfH0-V3;@D||<$QL{678l@=y(>vX2=96X`#Qj3 zehl9(FqG%6s7ycJ`Y5F(5_wCk7A7tEiWt$TK6HtPunqJmQ|Pi%aoAD&O-E8D3Vu9E zMJ!q=ousHW^TR-Fu_Ekrs}+1;-H~q`Pp>T@qyFwA@-%ie2c|osQI4}`b5~OfvqF#AM?2_nC-}kYu=PrgYLW3qebPS@15BbbFoPKVm`E!jWO4sm&x5_5$MRH z?B}*lx&3CI-`V5TVB^hnQEl1V6Ui7jC%QhaQd3^RfL636~Hbnp03 z)sO9mkl;N#=%`NeB9L`l>+}4gi1D&$htPc&3mOm7^F_1ca;n?-aTtFw{)A`D?N!pSpt&`T^XZ3u^EW&n;v>DTOa z<_Oe|RX&%l(3CZ(oja}cM=$;WG4PRy)2vNxh1+S~bt`*<6b5zwc4aJIrGCzMkYq#V@Zl>J9=Q$P{*z3OvM=3!!` z8d!>DfwA9ME@i!71->9hex_LBJS57ueIHYd2ywh3yV$zF{Vs1gRFv`+EXiRVY%>QP zINgs-uzH*u$x-4=`k8F+bEZ*m$S&2*L~$GeKIX^DEVW| zXG-z@L}=_q>wM{F%_-k!eIr(>V)aWyu@TW){Ut1*=9Ud$$%SzxP(HiV>nMM7yQk8? z?qsIk=^4+QJ-YJPb;mi-Wwir+Jfu2cAdP^~J?OAH2t(C%n|JXB6A){8&wUsmcH#z@ zpA~4m-f0~ITKm!JfWL!OMqD7@a*a5{^wcy7P|Zq8rdjTqCiR#gH%D z9SG7^EMCpRuZk&R$rIm_Be6b7$G&n%rO+Xw$x3U>TjwhDz+0auA04c(tL&qV6l0zT zS_M~sqBk!|jYzv`!yhy1r*{nU;qz?p?GA8^ejVaJqO?V{Sq>pvvdZ4y~& zIr-pDnV`P&&kXoZGiEF-@2FtDd4Icm3aBa>zCu3g(vR7*T&Pyu?=Rn@Awq%`S;<& z^0@v~oAE9_hsSR+-pJa1Ii9v!&JjaHy_lj* zPL5vB4lT>74gF*$b-|VEUCnq!8;LmH22M(y9Iky*B(?0tM~U-B*n8SLXU`Ak6i9$! zBFB%|O{#r&smbf!Ugq zzIIoD!aa67;<0`HDh{$>Rmmz;`{_ces+)&k6U))l6m6;E=lE40YurOTuVV-B1YOQJ z%0A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 B#LEBx literal 127306 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 QS{IS5y^) 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

    }v+; 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 ty!C%QK!1+JjahI0|DwYG$w|A|dPG+o diff --git a/docs/source/explainable_sir.ipynb b/docs/source/explainable_sir.ipynb index 35038d0f..a4a49c28 100644 --- a/docs/source/explainable_sir.ipynb +++ b/docs/source/explainable_sir.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 42, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -50,7 +50,7 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -86,7 +86,7 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -127,7 +127,7 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -150,7 +150,7 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ @@ -169,9 +169,19 @@ }, { "cell_type": "code", - "execution_count": 58, + "execution_count": 15, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mask tensor(0.)\n", + "lockdown tensor(0.)\n", + "mask_eff tensor(0.)\n" + ] + } + ], "source": [ "overshoot_threshold = 20\n", "lockdown_time = torch.tensor(1.0)\n", @@ -231,7 +241,7 @@ }, { "cell_type": "code", - "execution_count": 59, + "execution_count": 16, "metadata": {}, "outputs": [ { @@ -248,7 +258,7 @@ }, { "cell_type": "code", - "execution_count": 60, + "execution_count": 17, "metadata": {}, "outputs": [], "source": [ @@ -293,14 +303,14 @@ }, { "cell_type": "code", - "execution_count": 61, + "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor(997362.)\n" + "tensor(0.)\n" ] } ], @@ -310,9 +320,52 @@ }, { "cell_type": "code", - "execution_count": 62, + "execution_count": 19, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mask tensor(0.)\n", + "lockdown tensor(0.)\n", + "mask_eff tensor(0.)\n", + "mask tensor(0.)\n", + "lockdown tensor(0.)\n", + "mask_eff tensor(0.)\n", + "mask tensor(0.)\n", + "lockdown tensor(0.)\n", + "mask_eff tensor(0.)\n", + "mask tensor(1.)\n", + "lockdown tensor(1.)\n", + "mask_eff tensor(0.1000)\n", + "mask tensor(1.)\n", + "lockdown tensor(1.)\n", + "mask_eff tensor(0.1000)\n", + "mask tensor(1.)\n", + "lockdown tensor(1.)\n", + "mask_eff tensor(0.1000)\n", + "mask tensor(1.)\n", + "lockdown tensor(0.)\n", + "mask_eff tensor(0.4500)\n", + "mask tensor(1.)\n", + "lockdown tensor(0.)\n", + "mask_eff tensor(0.4500)\n", + "mask tensor(1.)\n", + "lockdown tensor(0.)\n", + "mask_eff tensor(0.4500)\n", + "mask tensor(0.)\n", + "lockdown tensor(1.)\n", + "mask_eff tensor(0.)\n", + "mask tensor(0.)\n", + "lockdown tensor(1.)\n", + "mask_eff tensor(0.)\n", + "mask tensor(0.)\n", + "lockdown tensor(1.)\n", + "mask_eff tensor(0.)\n" + ] + } + ], "source": [ "# conditioning (as opposed to intervening) is sufficient for\n", "# propagating the changes, as the decisions are upstream from ds\n", @@ -352,12 +405,12 @@ }, { "cell_type": "code", - "execution_count": 63, + "execution_count": 20, "metadata": {}, "outputs": [ { "data": { - "image/png": "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nc369et5/vnnycnJCSjmvGXLFgYNGkROTo7/3G3ZsoWBAwdStWrVk7bvRBMnTuT9999Hp9PRqlUrIiMj2bBhAx9++CE///wzn3zyCdWrVycsLIyuXbuyePFifvvtN3r37l2q/Tt37qRBgwYkJCQAZ3ZtAbz77rukpqbSoUMHjhw5Qt26dSksLKR///7s2rWLGjVq0LFjR+x2O2vWrGH9+vVs3ryZN954o9S+nnzySZKTk2nTpg21a9dmzZo1fPrpp2zatIm5c+ei0+kA9fV/7rnn+O677zAajbRp04agoCDWrFnDO++8w6JFi5g1axaRkZH+fZ/ONdyjRw/++ecfdu3ahdVq9QePTmXYsGF8++23BAUF0a5dOwoLC/n4449ZunRphV7f0zlvvXr1YsOGDRw6dIjmzZtTvXr1UtmVL774IpmZmXTq1Ik9e/ac8hgKCgq44447sNlstG3blry8PFauXMk///zDqFGj6N+/f4WO40Snen8py5m+57zwwgv8+uuvNG3alKuvvpo1a9awcOFC/v77b3744QdCQ0MBWLlyJffffz8ej4eWLVvSpEkTDh065P+bmT59Oh06dDij4xVCCCFQhBBCiHNo5cqVitVqVbp27VruOnfddZditVqVzp07K1lZWYqiKIrH41EURVEWL16sWK1W5ZZbblHy8/MDtvvggw8Uq9WqXHPNNQHzu3btqlitVuXAgQP+ecOGDVOsVqsydOhQpaCgwD9///79/vX/+usv//wlS5YoVqtV6dSpk7Jnzx7//IyMDOX6669XrFarsnjxYkVRFOXQoUP+dUs6fvy40rx5cyUhIUFZuHBhwLL58+crCQkJSosWLZSjR49W6Fz4zmW/fv3862dmZipJSUlKw4YNlZ9++ingOb744gvFarUq3bt3VxwOh6IoirJmzRrFarUqd911l+J0OgOOq3v37orValVWrlypnMpDDz2kWK1WZcaMGQHzc3NzlVtuuUWxWq3KtGnT/PN9bbdarcpTTz0V8BrMnj1bsVqtSrt27RSv1+s/5ptuukmxWq3KBx984F/X6XQqw4cP9+9rwYIFp2zrb7/9plitVuWqq65SNm/e7J/vcDiUkSNHKlarVenTp4//uX/99VfFarUqDz74YKl9vf3224rValVmzpzpn3e619akSZMUq9WqJCQkKBs3bvTP93g8ytdff61YrVbl6aef9rdHURQlOTlZadOmjWK1WpWDBw/65/v2365dO2X79u3++QcOHFCaNWumWK1WZdWqVaXO9TXXXBOwn7y8POXBBx9UrFar8vjjj/vnn8k17Du+t99+u9T5K8uiRYsUq9Wq9OjRQ0lNTfXP37x5s9K6desy3z98r7/L5VIURTnt8+Z7zb788suA/frmN2/e3L++1+tVvF5vmX/nvnlWq1W58cYblbS0NP+y5cuXK40bN1aaNGmiHDp0yD+/rPenk5278t5fypp/Nu85zZs3D/jbz8rKUq655hrFarUqc+bM8c8fMGCAYrValeXLlwfs/+OPP/a/twghhBBnSrrvCSGEuGh69epFREQEAFqt+pHkcrno1q0bzzzzDMHBwQHr+7qxpaSknHS/x44d47vvviM2NpZXX301YMS/WrVqMXz4cABmzpzpn//5558DaneeknVboqKiePrpp6lTp06Z3VpKmjdvHjabjT59+tCnT5+AZbfccgt9+vShoKCAuXPnVuhclGX+/PlkZ2dz55138n//938By26//Xa6du3KoUOH+OWXXwA4fvw4ALGxsQEFkqOionj11VcZO3Ys1atXP+lxAVSuXJkePXpw7733BswPDQ2lZ8+eQNmvi16vZ/To0QGvwe23347RaCQjI4OMjAwA/v33X3bs2EGjRo148MEH/esaDAZeeukloqOjT9lGn1mzZgHw3HPP+TPGAIxGIy+99BK1atVi69atrFy5EoCrr76ayMhI/vrrr4CufQA//vgjOp3Of4xncm35NGvWjKZNm/ofa7Va0tLSAPX8lsxWq1GjBq+//jrjx48v9XcA8OCDD9KgQQP/45o1a/q7fZXsZug7F6+99lrA6xwSEsJbb71FaGgoS5Ys8XctO5truKJ82w4fPpxKlSr55zdp0oRHH320Qvs40/NWnq5du/rPj0ajOWXmIKjZVTExMf7HHTt2pF+/fjidznK7p55rZ/N63XbbbbRt29b/OCIigptuugmAXbt2+ef7zvWJA0nceeedjBgxgvvvv/+cHY8QQoj/HglKCSGEuGhK/qj2ufHGG3nvvfcCfiwVFhaybds2vvvuOwA8Hg8ej6fc/a5duxaPx0NiYmJA0MCnQ4cOaLVa1q1bh8fjQVEU1qxZg1arLbObS48ePfj5558ZOHDgSY9nzZo1AFx33XVlLr/hhhsA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7kyVKlXK3GdWVhZ33XUX+/bt4/nnn2fixInExMQwaNAgVq9e7V9v1KhRzJ07l3vuuYcpU6ZQqVIl7r//fjZu3HhGx1KynZ9++ikvvPAC27dvp3///qSlpZ1y+7179/LBBx/w7LPPArB9+3a+/fZbvF7vGbXnfOjSpQvz5s0jLi7unO43MjKSgQMH8vzzz59RZtjTTz/NokWLePrppxk3bhzHjh1jwIAB5OTklLtNcnIyd911F4WFhYwZM4axY8fidDq58847/QEtm83GwIED2b59Oy+99BJvvfUWx44d46677rosv++Lc0t/sRsghLi4QkND2b17N1OnTmXIkCHn5TmaN29+XvZ7ufivH78QQohzZ+nSpUyYMIHBgwfz+OOP++cnJSVx88038/TTTzN8+HCsViv169e/iC0VF8qOHTt47bXX2Lx5M2azudTyGjVqUKNGjYB5gwcPJjw8nLfeeguNRlPmfr/55huysrL46quviI+PB6BDhw707t2bmTNnkpSURGFhIT/99BMPPvgg99xzDwBt27ale/fufPHFFzRr1uy0j+fE702tWrWicuXK9O/fn6+//vqUmXBvvvkmPXv29Lf5UhQVFUVUVNR52fedd97Je++9xy+//MK1115b4e3Wr1/P0qVLmT59Op07dwagdevWdO/enc8//5xHHnmkzO0+/fRTLBYLH3zwAUFBQQBcddVVdOvWjTlz5jBq1CgWL17M/v37+eGHH/zvS1arle7du7No0SL69et3lkctLmeSKSXEf1zDhg25+eab+fDDD9myZctJ1/V4PHz22Wf06tWLpk2b0qVLF9566y0cDsdJtyvZfW3VqlUkJCTwzz//MGjQIJo1a0aHDh1488038Xg8gNpt8PDhw3z99dcBacpHjhxh6NChJCUl0axZM+655x62bdvmf56UlBQSEhL4+OOPuf7662nWrBnvvfceCQkJLF26NKBN27dvJyEhgV9++QUAh8PB+PHj6dy5M02aNKFXr1789NNPAdt069aNSZMmMW7cONq3b0/Tpk257777/KnHkydPZsqUKaWO+cTue8ePH2fEiBF07tyZpk2bcsstt/Dbb7+VOmefffYZI0eOJCkpiRYtWvDkk0+Snp7uX+fgwYM8/PDDtG3blmbNmnH77bfzxx9/nPS1EEIIcXmbMmUKderU4bHHHiu1zGAw8Morr6DT6ZgxYwYAgwYNom/fvqXWffTRR7npppv8j9euXctdd91Fs2bNSEpKYtiwYWRmZvqXL1y4kEaNGjF//nw6dOhAUlISe/bsqfBn0bJly7jppptITEzkuuuu45tvvglYXpHPRofDwdSpU7n++utJTEzk2muvZfr06f4MmOHDh/P1119z+PBhEhISWLhwYZnncPLkyVx//fX88ssv9OzZk8TERHr37s369evZsGEDt956K02bNqVnz56luqHt2rWLhx56iJYtW/q7IJ3YVWrHjh08/vjjXHXVVTRu3JhOnTrx2muvUVhY6F+nIp/zvu5aq1atKvM4fIYNG4bH42HevHlER0efdF2AP/74gyVLljBixAjCwsLKXS8+Pp6BAwcGBHd0Oh01a9bk4MGDALhcLrxeLyEhIf519Ho9oaGhZGVlnbItFdWkSRMAf1fDyZMnc8011zBlyhSSkpLo2LEjOTk57Nq1i2XLltGzZ09A/d45YMAAAAYMGMDdd9/t3+dPP/1E3759adGiBR06dGDUqFGlMoI2b97MfffdR9u2bWnZsiUPP/xwhbsRLly4kOuuu47ExERuuummgL+Lsrriff3119xwww3+9f/55x8aNWpU6jreuHEj/fr1IzExkS5duvDhhx8GLDcajVx33XV88MEH/nm+79/l/U0ArFixgqCgIDp27OifFxUVRZs2bU76/bJOnToMGjTIH5ACCAoKolKlSv7rpEePHsydOzcgUG4wGABO+TtCXPkkKCWE4PnnnycyMvKU3fhGjRrF2LFj6dGjB++99x79+/dnzpw5PProo6edIvzMM8/QqlUr3n//fXr27MmHH37I/PnzAfULd2xsLJ07d/anNmdmZtKvXz+2bt3Kiy++yIQJE/B6vfTv379Umv7kyZN54IEHGD9+PH369KFGjRqlujL88MMPRERE0LlzZxRF4bHHHuOLL77g3nvv5b333qNFixYMGTKk1Jfm2bNns2/fPsaOHctrr73Gli1bGDZsGAC33nort9xyC1B+l7309HRuueUW1q5dy5AhQ5g8eTJVq1blscce47vvvgtYd+LEiXi9Xt5++22ee+45li5dyuuvvw6oafoPPfQQdrud8ePHM23aNCIiInjkkUdITk4+rddCCCHE5SEzM5MtW7bQtWvXcrNbIiIiaN++vT+gc9NNN7F169aAz4bc3Fz+/PNPevfuDcCaNWsYOHAgZrOZd955h+eff57Vq1czYMCAgECKx+Pho48+YsyYMYwYMYLatWtX+LNo1KhRDBw4kPfee49KlSoxfPhwduzYAVTss1FRFB5++GE+/PBDbr31Vt5//32uv/563nnnHUaPHg2ogbbOnTsTGxvLvHnz6NKlS7nn8ujRo7zxxhs8/PDDvPvuu+Tm5vLEE08wdOhQbr31VqZOnYqiKAwZMsR/Dvbv30+/fv3IyMhg3LhxjBkzhkOHDnHHHXeQkZEBqME1X9fKN954gxkzZnDjjTfy6aefMnv27IA2nOxzHoq7eDVu3Ljc4wAYP348c+fOpUGDBiddz3cex40bR1JSEtdff/1J173hhhv8dZl8cnJyWLNmjT+4EBoaSp8+fZg9ezbr168nNzeXjz76iN27dwcEPc/W/v37AQIyvo4cOcIff/zBxIkTGTFiBOHh4Xz//ffExsb6s60aN27MqFGjAPUa9F0r06ZNY+jQoTRv3pxJkybx2GOPsXjxYu6++27/671y5Up/ndDXX3+d1157jdTUVPr163fKLqKpqalMnz6dJ598ksmTJ6PRaHjiiSf818mJvvnmG4YPH07Lli2ZNm0a1113HY8++qj/H2xLeumll7jxxhuZPn06LVq04M033yz1j6/XX389W7Zs8Z+3xo0bn/JvYu/evVSrVg2dThcwv0aNGv79lOXOO+/k/vvvD5iXnJzM7t27A66Tli1bAuB0OtmxYwfDhw8nMjKS//u//yt33+I/QhFC/Gfdddddyl133aUoiqL89ttvitVqVd5++23/8q5duyrDhg1TFEVRdu/erVitVuWDDz4I2Mc333yjWK1WZdmyZeU+j9VqVSZNmqQoiqKsXLlSsVqtysSJEwPW6datm/LQQw+V+dyKoihvv/22kpiYqKSkpPjnORwOpXv37srgwYMVRVGUQ4cOKVarVXn++ecD9j1p0iSlefPmit1uVxRFUbxer9KlSxdl1KhRiqIoyooVKxSr1ar8+OOPAds988wzSocOHRSXy+VvU9euXRW32+1fZ/LkyYrValUyMzP9z2W1Wss9/vHjxyuNGzcOOA5FUZR77rlH6dChg+LxePzb3HHHHQHrDB8+XGnevLmiKIpy/PhxxWq1Kt99951/eW5urvL6668ru3btUoQQQlx5Nm3apFitVmXOnDknXe+N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Bg0iMjKSn376iS+//JIRI0accn++kfY+//xzWrRoERD86dy5M23atOHRRx/l0UcfpW7dumzatIlJkybRqVMnf0p+RdsN6uh+zZo1K9Ud4d577+W7775j4MCBPP7440RERPDNN9+wcuVKXn/99Qp/mW7UqBFms5nnnnuOwYMHExMTw99//8327dv9Qx8LIYS48nTq1Inhw4czfvx4tm/fzv/+9z/i4uJISUlh7ty5bN++nTFjxpQaia1379589NFHaLXaUt30hg4dyoMPPsjTTz/NTTfd5B9lb+PGjTz66KPltuVcfRZV5LPx6quvpm3btrzwwgscO3aMBg0asHr1ambMmEGfPn2oV68eoH4Op6en88cff9CwYUPi4uJO4+ye3KOPPkq/fv146KGHuOOOOzCZTMybN49ff/2VSZMmAdC0aVOmTZvG9OnTad68OcnJyXzwwQc4nc7TrheVmZnJwYMHqVevXpldDU/Xzp07/eepLAcPHiQzM9Nf62rSpEkcOHCAwYMHo9fr2bBhg39do9FIo0aNuOWWW5gzZw4PPPAAgwcPJj4+nr///puPPvqI/v37+7tXHj16lKNHj9KoUaNTZrefjQ4dOvD555+jKIq/y5wvOLhs2TLCw8Np0KABDz74IFOnTsVgMNC1a1dSUlJ49913/d93AZ5++mnuu+8+HnzwQe68805cLhfTp0/H6XTy2GOPnbM2+0bme+aZZxg9ejTXXHMNO3bsYOrUqcCZBVrXrVsHqIEmUAOMe/bsoUaNGuV+r23Tpg1JSUk8++yzPPvss0RERDB58mRCQ0MDehjs2bMHp9NJo0aNAHjttdfIyMjg5ZdfJj8/P+A6CQkJoV69evTr148vvviChx56iMcffxyDwcDnn3/Orl27mDlz5mkfn7iySFBKCFFKREQEL730Eo8//njA/DFjxlCzZk0WLFjAjBkziIuLY8CAATz66KPn/F8mBw0axOuvv859993Hxx9/TOvWrfniiy+YMGECL730Eg6Hg1q1ajFmzJgKp8T37t2bX3/9lV69egXM12q1TJ8+nXfffZcPPviAjIwM4uPjuffee0/7S8e1117Lt99+y/Dhw7nlllt46aWXApbHxsYyd+5cJkyYwGuvvYbL5aJBgwZMmzaN7t27V/h5TCYTH330ERMmTGDMmDHk5uZSq1YtXnnlFfr27XtabRZC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SHReamtrY87Hd999x0aMGME++OCDhNv45ptvWFFRUcw65eXlHXkYbUZT7xHd+R7T1HnpzveY5t47u+v9panz0pnvL91elPL7/WzkyJExX5JLlixhf/nLX5I4qtRky5YtrKCggJWVlVl1b775Jps0aVISR5XaVFVVsSOPPJKddtppJErtB1VVVWzYsGHsyy+/tOoee+wxdsMNNyRxVKlJdXU1KygoYL/88otVd8UVV6Tsl3cy2Lx5MzvxxBPZCSecEPMy8sUXX7AxY8Ywv99v9b3gggvYQw89lKyhdnoaO5cvvPACmz59ekzfm266iV1zzTXJGGaXoa2u3b///e8x32nFxcVsyJAhbOfOne17AO1EW12Hn3/+OZs4cWK7j7cjaezcMMbY5MmT2aefftqi7Zxzzjkx19PXX3/NRo0a1ehLZmenqfNiZ9asWey6665rdDv//ve/2Zlnntlew+xQmnqP6M73mKbOS3e+xzT33tld7y+teR/vTPeXbu++t2nTJqiqisLCQqtu7Nix2LBhA3RdT+LIUo+8vDw88cQTyM3Njamvr69P0ohSn3vuuQcnnXQSBg0alOyhpDTr1q2Dz+dDUVGRVTd79mwsXLgwiaNKTdxuNzweD1599VVEIhFs27YN3377LYYOHZrsoaUMX331FcaPH4+XX345pn7Dhg0YNmwYvF6vVTd27FisX7++g0eYOjR2Lk1z9Xjo+2j/aKtrd8OGDRg3bpy13Lt3b/Tp0wcbNmxol3G3N211HW7ZsgUHHnhgu4wxWTR2burr67F3714MHDiw2W1omobvv/8+5poZM2YMIpEINm3a1NZD7hAaOy921qxZg6+//hrXXHNNo322bNnSonOYCjT1HtGd7zFNnZfufI9p6rx05/tLS9/HO9v9Re6QvXRiysrKkJ2dDafTadXl5uYiHA6juroaOTk5SRxdapGRkYHJkydby7quY8WKFTj88MOTOKrUZc2aNfjmm2/w5ptvYsGCBckeTkqza9cu9O3bF6+//joeffRRRCIRnHrqqfjrX/8KUez22nyrcLlcuPnmm3H77bfj2WefhaZpOPXUU3HGGWcke2gpwznnnJOwvqysDD179oyp69GjB/bs2dMRw0pJGjuX/fr1Q79+/azliooKvP3227jyyis7amhdkra6dktLS7vUtd5W1+HWrVsRDAZx3nnnYfv2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9RSdy32koKCArV271lr+7bff2LnnnstGjBjB/vSnP7HPP/88iaNLLeznctasWQm/i/7yl78keZRdh9Zcu2vXrmUFBQVs165dVt2qVavYlClT2JgxY9icOXNYZWVlh46/vWjNdRh/XkKhEFu4cCGbOHEiGz16NLv00ktZcXFx0o6lrYm/Zj744AN2wgknsJEjR7Lp06ez9957z2pbtWpVg+fHxx57jE2YMIGNHTuWzZ8/n4VCoQ4be3sSf17Wr1/PCgoKWDgcbtA3/rxUV1ezG264gY0fP54VFhay6667jlVXV3fIuNua5t4juus9pqnz0p3vMc1dL931/tLceems9xeBMcbaXuoiCIIgCIIgCIIgCIIgiMbp9u57BEEQBEEQBEEQBEEQRMdDohRBEARBEARBEARBEATR4ZAoRRAEQRAEQRAEQRAEQXQ4JEoRBEEQBEEQBEEQBEEQHQ6JUgRBEARBEARBEARBEESHQ6IUQRAEQRAEQRAEQRAE0eGQKEUQBEEQBEEQBEEQBEF0OCRKEQSRMgwZMgTXXnttg/pXX30V06ZNS8KICIIgCIIgCIIgiH2FRCmCIFKKt956C2vWrEn2MAiCIAiCIAiCIIj9hEQpgiBSir59++K2226DoijJHgpBEARBEARBEASxH5AoRRBESvG3v/0Ne/fuxZNPPtlonz179uCqq65CUVERxo8fjzvuuMMSsV599VWcd955eOihhzB+/HiMGzcOCxcuBGPMWv+ll17CtGnTUFhYiPPOOw+//PJLux8XQRAEQRAEQRBEd4NEKYIgUor8/HzMnTsXjz76KHbt2tWgXVEUXHDBBQgGg3juuefwr3/9Cx999BEWLVpk9fnuu++wfft2vPjii7jpppvw7LPP4osvvgAA/O9//8PixYtx00034bXXXsPYsWNx/vnno6ampsOOkSAIgiAIgiAIojtAohRBECnHeeedhwEDBuDOO+9s0Pbpp59i7969uPfeezFkyBBMmDABN998M1588UX4/X4AgKZpuP3223HQQQfhpJNOwiGHHILvv/8eAPDEE0/g0ksvxdSpUzFw4ED87W9/Q9++ffHGG2906DESBEEQBEEQBEF0deRkD4AgCKK1SJKEBQsW4JxzzsHq1atj2rZu3YqBAwciMzPTqjv00EOhqip27twJAOjRowd8Pp/V7vP5oKqqtf69996L+++/32oPh8P47bff2vGICIIgCIIgCIIguh8kShEEkZIceuihOO2003DnnXfi4osvtupdLleDvpqmxeROp7NBHzOmlKZpuPHGGzFhwoSYdruIRRAEQRAEQRAEQew/5L5HEETKct111yEQCMQEPT/wwAPx22+/obq62qpbv349ZFlG//79m93mgQceiD179mDAgAFWevTRR7F+/fp2OAKCIAiCIAiCIIjuC4lSBEGkLNnZ2bjuuuuwe/duq27ixIk44IADcP311+OXX37B2rVrcfvtt2PGjBnIyMhodpsXXnghnnnmGbz++uvYuXMn7r33Xvzf//0fDj744PY8FIIgCIIgCIIgiG4Hue8RBJHSnH766Vi1ahVKS0sB8HhTS5cuxe23344///nPSEtLwwknnIBrrrmmRds7/vjjUV5ejoceegjl5eUYNGgQHnnkEQwcOLAdj4IgCIIgCIIgCKL7ITAzkApBEARBEARBEARBEARBdBDkvkcQBEEQBEEQBEEQBEF0OCRKEQRBEARBEARBEARBEB0OiVIEQRAEQRAEQRAEQRBEh0OiFEEQBEEQBEEQBEEQBNHhkChFEARBEARBEARBEARBdDgkShEEQRAEQRAEQRAEQRAdDolSBEEQBEEQBEEQBEEQRIdDohRBEARBEARBEARBEATR4ZAoRRAEQRAEQRAEQRAEQXQ4JEoRBEEQBEEQBEEQBEEQHQ6JUgRBEARBEARBEARBEESHQ6IUQRAEQRAEQRAEQRAE0eGQKEUQBEEQBEEQBEEQBEF0OCRKEQRBEARBEARBEARBEB0OiVIEQRAEQRAEQRAEQRBEh0OiFEEQBEEQBEEQBEEQBNHhkChFEMQ+wxjrlvveH1J13ARBEASRCtD3LJEIui4IovNCohRBdAPOO+88DBkyJCaNGzcO559/Pr766qtWb2/Pnj2YPXs2du/ebdVNmzYNN9xwQ6u3NWTIEDz88MOtWmflypW45557Wr2vZLN582acffbZMXX7cvwEQRBE92bdunW48sorMXHiRIwcORJHH300/vnPf2Lr1q3JHloMDz/8MIYMGdJh+1u3bh1mz57dYfvrDPz444+45JJLcPjhh2P8+PGYNWsWfvzxx5g+jDE8+eSTOPbYYzFy5Egcd9xxeP7555vdtqIouP/++3HUUUdh1KhROPHEE/HOO+/E9AkEArjnnnswbdo0FBYW4swzz8SaNWtafRzmtWJPw4YNw/jx4zFnzhxs3ry5xdtavnw5rrvuOgBAbW0trr/+enzzzTetHtO+cMMNN2DatGlN9nn11VcxZMgQ/P777y3ebkvWqaqqwlFHHYVdu3a1eLt2/H4/br31VkycOBGFhYW45JJLsG3btmbX++WXX3DxxRejqKgIkyZNwrx581BeXh7Tp6ysDP/85z8xdepUFBYW4tRTT21wLRHdFznZAyAIomMYNmwYbrnlFgCApmmoqqrCiy++iIsuugivvvoqBg8e3OJtffHFF/j444/bZFwvv/wyevXq1ap1HnnkERQVFbXJ/juSd999F999911M3b4cP0EQBNF9WbZsGe6//35MmjQJN954I/Ly8rBjxw68+OKLOOWUU7Bw4UL86U9/SvYwk8LKlSs7nTDXnuzYsQN/+ctfMGLECNx5550QBAHLly/HOeecg9deew0HHXQQAGDRokV47rnnMHfuXIwcORKffPIJbrvtNsiyjDPPPLPR7V933XX4/PPPce2112LgwIH4z3/+g2uuuQY+nw9HHnkkAODmm2/G6tWrcfXVV2PQoEH497//jYsvvhgvvPACRo8e3epjevnll62ypmkoLi7GAw88gHPPPRdvv/028vLymlx/69ateOyxx/DGG28AAH7++Wf85z//wWmnndbqsbQXRx11FF5++WX07NmzTbebnZ2NmTNn4sYbb8Szzz4LQRBatf61116LDRs24O9//zt8Ph8WL16M888/H2+//TYyMzMTrlNeXo4LLrgAvXv3xsKFCxEOh/H//t//wyWXXIJ///vfcDgcUBQFF198Merq6jB37lz07NkT7733Hq6++mooioKTTz65DY6eSGVIlCKIboLP58OYMWNi6o444ghMmDABr776KubNm5eUccWPqbvR3Y+fIAiCaDkffvgh7rvvPlx55ZW44oorrPqioiKcfPLJuPbaa3HDDTegoKCgVT82EanJc889B4/Hg8ceewxerxcAcPjhh2PatGlYsWIFbr75Zvz+++94+umncdNNN+Gcc84BAEyYMAElJSX47LPPGhWlvvnmG7z33ntYtmwZpkyZYq23Y8cOfPLJJzjyyCMRCoXwzjvvYPbs2bjgggsAAOPHj8fRRx+Nl156aZ9EqfjnorFjx6J3794499xz8dprrzVrCXfvvfdixowZyM/Pb/W+O4qcnBzk5OS0y7bPOeccPPLII/jggw9w7LHHtni97777Dh9++GHM5z1u3DgcffTReOGFF/DXv/414Xr//e9/UVVVhX//+9/o378/ACA9PR0XX3wxvvvuOxQVFeGjjz7Cpk2bsHLlSowaNQoAMHHiRBQXF+OJJ54gUYog9z2C6M54PB64XK4Gv6S88847OPXUU1FYWIiJEyfi5ptvRk1NDQBuPjx//nwAwNFHHx3jsheJRLBo0SJMnDgRY8aMwaxZs7Bjx44mx2B3X/vyyy8xZMgQrFmzBrNmzcLo0aMxceJE3HvvvdA0DQB3E9y9ezdee+21GDPm4uJiXHPNNSgqKsLo0aNxwQUX4KeffrL28/vvv2PIkCF46qmnMH36dIwePRqPPPIIhgwZgg8//DBmTD///DOGDBmCDz74AAAQDoexaNEiTJkyBSNGjMAJJ5zQwOR42rRpeOihh3DPPffgiCOOwKhRo3DRRRfht99+A8DN0hcvXtzgmOPd90pLSzF//nxMmTIFo0aNwumnn47//ve/Dc7Z888/j3/84x8oKipCYWEhrrrqqhhT6Z07d+Kyyy7D+PHjMXr0aJx55pltZt1GEARBJIfFixfjoIMOwpw5cxq0ORwO3HbbbZAkCY8//jgAYNasWTj11FMb9L388stx4oknWsvffPMN/vKXv2D06NEoKirCvHnzUFlZabW/+uqrGDZsGFauXImJEyeiqKgIW7ZsafF3zUcffYQTTzzRch17/fXXY9pb8t0XDoexZMkSTJ8+HSNHjsSxxx6LZcuWQdd1ANxt6rXXXsPu3bsxZMgQvPrqqwnP4cMPP4zp06fjgw8+wIwZMzBy5EicdNJJ+O6777B+/XqcccYZGDVqFGbMmNHADe3XX3/FpZdeikMPPRSHHnoo5syZ08BVatOmTbjiiitw+OGHY/jw4Zg8eTLuuOMOhEIhq09LvsdNd60vv/wy4XEAwEEHHYRZs2ZZghQAeL1e9OrVCzt37gQArF69Gi6XC6effnrMuv/617+aDB/w7rvvon///pZAAQCCIOCll17CP//5TwD8uU/Xdfh8PquPLMtIT09HVVVVo9tuLSNGjAAAK2zEww8/jD/84Q9YvHix5TJWU1ODX3/9FR999BFmzJgBgD9Xnn/++QCA888/H+edd561zaaedU2+//57XHTRRRg/fjwOPfRQXHbZZS12I3z11Vdx3HHHYeTIkTjxxBNj/i4SueK99tprOP74463+a9aswbBhwxpcxxs2bMBZZ52FkSNH4qijjsITTzwR0+50OnHcccfhscces+rM5+vG/iYA4LPPPoPX68WkSZOsupycHBx22GFNPj+Gw2EAiLkGsrKyAADV1dVW25lnnomRI0fGrHvQQQdZ1ynRvSFRiiC6CYwxqKoKVVURiURQVlaG++67D4qixJg0L126FNdccw3GjBmDhx56CHPmzMF7772H8847D6FQCEcddZT1a8nixYtx+eWXW+u+88472Lx5M+6++27ccsst+OGHH3D11Ve3eqzXXXcdxo4di0cffRQzZszAE088gZUrV1r7zMvLw5QpUyzT58rKSpx11ln48ccfcdNNN+G+++6Drus499xzG5jxP/zww7jkkkuwaNEinHLKKejfvz/efvvtmD5vvfUWsrKyMGXKFDDGMGfOHLz00ku48MIL8cgjj6CwsBBXX311g4fqZ599Ftu2bcPChQtxxx134IcffrAs0M444wzrgfDll1/GGWec0eC4y8vLcfrpp+Obb77B1VdfjYcffhh9+/bFnDlzLDN0kwceeAC6ruP+++/H9ddfjw8//BB33XUXAEDXdVx66aUIBoNYtGgRli5diqysLPz1r39tViQkCIIgOieVlZX44YcfMHXq1EbdcrKysnDEEUdYgs6JJ56IH3/8MebeX1tbi08++QQnnXQSAODrr7/GzJkz4Xa78a9//Qs33ngjvvrqK5x//vkxQoqmaVi+fDnuvPNOzJ8/HwceeGCLv2tuvvlmzJw5E4888gh69eqFG264AZs2bQLQsu8+xhguu+wyPPHEEzjjjDPw6KOPYvr06fjXv/5lhSa4/PLLMWXKFOTl5eHll1/GUUcd1ei53LNnD+6++25cdtllePDBB1FbW4u5c+fimmuuwRlnnIElS5aAMYarr77aOgfbt2/HWWedhYqKCtxzzz248847sWvXLpx99tmoqKgAwMW1c889F8FgEHfffTcef/xx/OlPf8Jzzz2HZ599NmYMTX2PA1EXr+HDhzd6HOeccw4uvvjimLodO3Zg8+bNlqXczz//jAEDBuDrr7/GKaecguHDh2PatGkxbnKJ2LRpEwYPHow333wTf/zjHzFs2DD88Y9/xOrVq60+6enpOOWUU/Dss8/i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vPjii/j5559x55134pBDDolZ76STTsLy5cshimIDN71rrrkGs2fPxrXXXosTTzzRmmVvw4YNMTPsxtNW3zUt+e478sgjMX78ePzzn//E3r17ccghh+Crr77C448/jlNOOcWawSsjIwPl5eX4+OOPMXToUPTs2bMVZ7dpLr/8cpx11lm49NJLcfbZZ8PlcuHll1/G6tWrLRelUaNGYenSpVi2bBnGjBmDHTt24LHHHoOiKK2OF1VZWYmdO3di0KBBjQpHd9xxByoqKnDrrbc2eM7z+XwYNGgQxo8fj6lTp2LhwoUIBoMYPHgwXn/9dXz77bdWbCgA2LlzJyorK61YVyeccAJWrFiB6667Dtdeey3y8/Px7LPPYs+ePXjwwQcBcAuwFStW4JJLLsGVV16J/Px8fPHFF1i+fDnOPfdcy71yz5492LNnD4YNG9as9fr+MHHiRLzwwgsx1l2mOPjRRx8hMzMThxxySIueda+99lpcdNFFmD17Ns455xxEIhEsW7YMiqJgzpw5bTZmc2a+6667Drfccgv+8Ic/YNOmTViyZAmAfRNa161bB4ALTQB/B9iyZQv69+/f6HPrYYcdhqKiIvz973/H3//+d2RlZeHhhx9Genp6jAfBli1boCgKhg0bBgC46qqrMGfOHFx11VU4/fTToSgKnnnmGezduxf33XcfAOD555/HN998gzPPPBO9evWKuU6BhvHViO4HiVIE0U346aefcOaZZ1rLLpcL/fv3x9VXX42LLrrIqjcfLFesWIGXX34ZWVlZmD59Ov72t79Zv6yOHz8eRxxxBO677z6sWbMGy5Yt69BjmTVrFu666y5cdNFFeOqppzBu3Di89NJLuO+++7BgwQKEw2EMHDgQd955Z4tN5k866SSsXr0aJ5xwQky9KIpYtmwZHnzwQTz22GOoqKhAfn4+LrzwwlY/lBx77LH4z3/+gxtuuAGnn346FixYENOel5eHF198Effddx/uuOMORCIRHHLIIVi6dCmOPvroFu/H5XJh+fLluO+++3DnnXeitrYWAwcOxG233YZTTz21VWMmCIIgOhcXXnghCgsL8cwzz+Cee+5BZWUl8vLyMHHiRNx5550Jp1g/5JBDUFBQgKqqKkyYMCGmbdKkSXjyySexePFizJ07Fw6HA8OHD8dTTz3V5MtiW33XtOS7TxAEPPbYY3jooYfw9NNPo7KyEv369cM111wT40536qmn4uOPP8acOXMwd+5czJ49u8XjaI5DDjkEzz//PB544AFcf/31YIyhoKAAS5YsscZ56aWXoqqqCs8++yyWLFmC3r1746STTrLGX1tba/1A1RwfffQR5s+fj2effRbjx49v0K4oCj766CMASOgqWVRUhOeeew4A8OCDD2Lx4sV46qmnUFlZiUGDBmHx4sUxbp5Lly7Fa6+9hl9++QUAj+f01FNP4f7778cDDzwAv9+PYcOG4emnn7biTPl8Przwwgu47777cPfddyMUCmHAgAG45ZZbcMYZZ1jbXrlyJRYvXoz//ve/zQYi3x+OPfZYLFmyBBs3brSC1g8ePBgzZszA888/j08//RRvvfVWi551J0yYgKeeegoPPfQQrrnmGjidTowbNw733HNPm08ac8IJJyAQCODJJ5/EqlWrMHjwYPzjH//AP/7xjwbxqVrCJ598glGjRllx6H788Uecf/75WLhwYZN/m4sXL8bdd9+NRYsWQdd1HHroofjXv/4VEx/u1ltvxe7du/G///0PAHD00Udj2bJlWLp0Ka644gqkpaVh1KhReOWVVyxx3LT6evnll614ZHbMa47ovghsXyPqEQRBEARBEARBEEQznHvuufjXv/7VYAa9tuayyy5DdnY2Fi5c2K77aUveeustDBs2LCbG1UcffYRLL70U//nPfxpYPjZFIBDA5MmTcc899zSI9UQQnRWKKUUQBEEQBEEQBEG0C19++SWCwWCjM8q1JVdffTXef//9lIqh+cYbb+CSSy7Bm2++iW+++QarVq3CLbfcgqKiolYJUgDw0ksvYfDgwa2ysCeIZEOWUgRBEARBEARBEES7sHv3bni93g6ZJRHgsyBu2rQp4YQAnZGqqircd999+OSTT1BZWYnc3Fwcd9xxmDt3LtLS0lq8ncrKSpx88sl47rnn2nR2aIJob0iUIgiCIAiCIAiCIAiCIDocct8jCIIgCIIgCIIgCIIgOhwSpQiCIAiCIAiCIAiCIIgOZ59FKUVRMGPGDHz55ZdW3a5duzBz5kyMGTMGxx9/PD777LOYdb744gvMmDEDo0ePxvnnn49du3bt+8gJgiAIgiAIgiAIgiCIlGWfRKlwOIxrrrkGmzdvtuoYY5gzZw5yc3OxatUqnHTSSbjiiiusmQ+Ki4sxZ84cnHrqqXjl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8lcUse8cDgeBQIBHHnmETp06AeZJ1BtvvCGhVAMtWbKEv/3tb3z22Wd4PB4GDRrErl27eOaZZySU2k9ut5vi4uKUdZFIRH4X7Yfy8nKuuuoqNm3axOuvv47X623qJh2SOnXqxNKlS8nMzERRFPr164eu6/zlL39h+vTpaJrW1E1sseTfhQPvjDPOYOzYsWRlZQHQt29fNm3axBtvvCEn/fVQ9Tu+vEf3T9XXs3fv3vL+3E/WWLzhcJibbrqJs846i1AolLKPvEfrr+rr+cMPPxzw9+hh32+lXbt2FBUVEYvF7HX5+fl4PB4yMjKasGUt14wZM3jxxReZNWsW48ePb+rmtEgffPABixcvZujQoQwdOpT333+f999/P2XsM1F/OTk5uN1uO5AC6N69Ozt27GjCVrVMv/zyC7m5uSm/yPv3709eXl4TturQ0K5dOwoKClLWFRQUVCs5F/UTCASYPHkya9eu5eWXX5bxOQ6yrKwsFEWxb/fs2ZNwOExJSUkTtqrlk38XDjxFUeyTKUuPHj3YtWtX0zSoBanpO768R/ddTa+nvD/3TUFBAYsXL05Z16tXL6LRKDk5OfIebaC6Xs9AIHDA36OHfSjVr18/HA5HykBny5YtY9CgQTLWzD6YM2cOb775Jo8++iinnHJKUzenxVqwYAHvv/8+ixYtYtGiRYwbN45x48axaNGipm5aizRkyBDC4TAbN260123YsCElpBL107ZtWzZv3pxSYbphw4aU8XvEvhkyZAgrV66koqLCXrds2TKGDBnShK1qmXRdZ9q0aWzbto0FCxbQu3fvpm7SIe2LL75g1KhRKX+JXrVqFVlZWTI2536SfxcOvCeeeIKLL744Zd3q1avp0aNH0zSohajtO768R/dNba+nvD/3zbZt25g2bVpKMPLLL7/QqlUrhg8fLu/RBqrr9VywYMEBf48e9qmL1+vljDPO4O6772bFihUsXryY+fPnc9FFFzV101qc9evX8/TTT3P55ZczfPhw8vPz7Uk0TKdOncjNzbWntLQ00tLSyM3NbeqmtUg9evTghBNOYPr06axevZovvviCuXPncv755zd101qccePG4XQ6uf3229m4cSMff/wxzz77LJMmTWrqprV4I0eOpEOHDkyfPp21a9cyd+5cVqxYwdlnn93UTWtx/va3v7F06VLuu+8+MjIy7N9FVbuY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wIGMHDmSqVOnppQrb9myhSuvvJJRo0YxZMgQzj33XD777LNa25GXl8cJJ5zAhAkTKC0trXW/n3/+mcmTJzNq1CiGDRvGlVdemVIuvnTpUvr06cOSJUu49NJLGTJkCGPGjGHWrFnE4/FqxysuLmbQoEE8+uijKetDoRDDhw/nmWeeqbUtQgghRFVz5syhR48eTJ06tdo2p9PJvffei6ZpPP/88wBceumlTJgwodq+V111Faeddpp9+/vvv+fCCy9kyJAhjBw5kltuuYXCwkJ7+8KFC+nfvz9vv/02Y8aMYeTIkaxbt67ev48//fRTTjvtNLvr2KJFi1K27969m+nTp3P88cczePBgzj77bP773/+m7BMOh3nqqac46aSTGDRoECeeeCJz585F13XA7Db17rvvsn379jq70T/55JOcdNJJfPTRR5x66qkMGjSI008/nR9//JHly5dzzjnnMHjwYE499dRq3dB+/fVXpkyZwrBhwxg2bBhTp06t1lVq9erVTJs2jaOPPpoBAwZw3HHHcd9991FRUWHv06dPH1577TX++te/MnLkSIYOHcq1116b0uXJ6q61dOnSGp8HQI8ePbj00kvtQArM717t27dny5YtACxevBi3283ZZ5+dct/HH3+cJ598stZjf/nll/h8Po499lh7XatWrTjqqKPsn3E0GkXXdfx+v72Pw+EgPT2doqKiWo/dUAMHDgRg+/btgPkz/P3vf8+cOXMYOXIkxx57LCUlJfz66698+umnnHrqqYD5ve2iiy4C4KKLLmLSpEn2MT/88EMmTJjA0KFDGTNmDHfeeSclJSUpj7u374V1WbhwIePHj2fQoEGcdtppKZ+Lmrrivfvuu5x88sn2/kuWLKF///7V3sc//fQT5513HoMGDeKEE07ghRdeSNnucrkYP348zz33nL3O+v5a19AS9fl512TDhg0MHz48pZLK6/UyePBgPv30U3vd6tWr6devX63HEYc3CaWEEAfVySefbHfhswQCAT7//HP7S4PFMAymTJnCV199xU033cS8efOYNm0aS5Ys4a677gJA13WmTJlCKBTi4Ycf5umnnyYrK4v/+7//Y/PmzdUePz8/n4svvpisrCxefPHFWiuzvvnmG84//3wAHnjgAe677z527NjBeeedV60rwE033cTw4cN59tlnOfXUU3nhhRd4++23qx0zKyuL3/3ud7z//vspA2x+9NFHBINBzjjjjPq9iEIIIQ57hYWF/PLLL4wdO7bWbjlZWVkcc8wxdqBz2mmnsXLlypTfj6WlpXz++eecfvrpAHz33XdcfPHFeDweHn/8cW677Ta+/fZbLrroopQgJR6PM3/+fO6//36mT59O9+7d6/37+M477+Tiiy/mmWeeoX379tx6662sXr0agIKCAs4++2y+//57rr/+ep588kk6derE1KlT7S5YhmFw5ZVX8sILL3DOOefw7LPPctJJJ/H444/b3w+uuuoqjj/+eHJycnjrrbc44YQTan0td+7cyYMPPsiVV17JE088QWlpKddccw033HAD55xzDk899RSGYXD99dfbr8HGjRs577zz2LNnDw899BD3338/W7du5fzzz2fPnj2AGa5dcMEFhEIhHnzwQZ5//nlOOeUUFixYwCuvvJLShsceewxd13n00Ue5+eab+eSTT3jggQfs7VYXrwEDBtT6PCZOnMhll12Wsm7z5s2sXbvWrpRbtWoVubm5fPfdd5x55pkMGDCAcePGpXSTq8n69evp3LkzmqalrO/atSsbN24EID09nTPPPJNXXnmFH3/8kdLSUubPn8/atWtTQs/9ZT1e165d7XV5eXl89tlnPPbYY0yfPp3MzEzef/99cnJy7GqcAQMGcOeddwLme9B6rzz99NPccMMNHHnkkcyePZupU6fy73//m0mTJtk/74Z8L6xqx44dzJ07l2uvvZYnn3wSRVG45ppr7PdJVYsWLeLWW29l2LBhPP3004wfP56rrrqqxj943n333ZxyyinMnTuXoUOHMmvWrGrDYZx00kn88ssv9us2YMCAvX4m6vPzrkl2djZ5eXnV1m/dutUObMPhMBs3bmT79u2cfvrpDBw4kLFjxzJv3jwZgF4A0n1PCHGQnXDCCXi93pQufB999BGtW7dm+PDhKfvu3r0br9fLLbfcwogRIwCzDHzLli32l6c9e/awYcMG+8snwODBg5kzZw6RSCTleEVFRVxyySV4PB5efPHFWvvDAzzyyCPk5uYyd+5c+xfysccey+9//3tmz57NE088Ye97zjnn2H+lHj16NIsXL+bTTz+tcVD3s846iw8//JClS5dy9NFHA+aXj2OOOYYOHTrU+3UUQghxeLOqRDp16lTnfrm5ufz3v/+lpKSEE088kXvuuYd//OMf9u+t//znP8TjcfsPQ4888gjdu3fnueees3//DRkyhFNOOYV33nmHCy64wD72lVdeaZ/Y5ufn1/v38X333cdvfvMbwDzJ/f3vf8+3335L3759efHFFyksLOTf//63/dyOP/54Lr74Yh5++GFOPfVUvvjiC77++mseffRRe7ysMWPG4PF4eOKJJ7jooovo3bs3rVq1wuVy7bWLUCgU4q677rLbtG7dOh555BHuv/9+u6IoGAxyzTXXsHHjRvr168ecOXPwer289NJLdmXQ6NGj+d3vfscLL7zALbfcwq+//kq/fv144okn7H2OOeYYvvrqK5YuXZrS9eyII45g5syZ9u0VK1akVJbvSxeviooKbrnlFlwuFxdeeCFghpm7du3ipptuYtq0afTo0YMPP/zQDmtq675XVlaWUgFlSUtLo7y83L59ww03sGbNmpTvQNdccw0nn3xyg9puicViKc9n9erVPPDAA6Snp6cEXbFYLOX7IphB0qBBg+zQ1u/306tXLwB69epFr169KCkp4ZlnnuFPf/qT/RqA+fO44IIL7Pd8Q74XVqXrOk899RQ9e/YEwO12c/HFF7N8+XJ++9vfVtv/iSeeYOzYsdx3330AHHfccTidTh555JFq+95www12WHbkkUfy0Ucf8c033zB27Fh7n0GDBgGwZMkSunfvjt/v3+tnor4/76rOOussbr/9du6//34uu+wyVFXlpZdeYt26dfbP8tdffyUWi7Fx40auv/56MjMz+e9//8usWbMoLS21u/iJw5eEUkKIg8rj8TBu3LiUUOqDDz7gD3/4Q7W/9LZr145XXnkFwzDYtm0bmzdvZsOGDfzwww/2F9w2bdrQq1cv7rjjDr788kuOPfZYfvOb3zB9+vRqj33ZZZexdu1aXn75ZbKzs2ttYzAY5Oeff2batGkpfyHKyMhg7Nix1cqWhw4dmnK7ffv2BIPBGo99zDHH0LFjR/7+979z9NFHs3PnTpYsWcKsWbNqf9GEEEKIKqyKAqfTWed+1u8xwzDw+Xz87ne/48MPP7RDqQ8++IDRo0fTrl07QqEQP/30E5MnT8YwDPskskuXLvTs2ZOvvvoqJZRK7n7TkN/HycFB586dAezu9N9++y1Dhw6tFraddtppTJ8+nQ0bNvDtt9/icDg46aSTqu3zxBNP8O233zZ4DK1hw4alPBcgZQyk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tXbF3q+//so999xT7WqWH374IZ06dbK7N4rDl1RKCSEaxcknn8yUKVNQVZXbb7+9xn0GDx4MwL333stZZ51FSUkJr732mn2FnmAwSP/+/fF4PNx8881cffXVtGnThq+//ppVq1bZl/2t6rbbbuOLL77grrvuYt68eTXuc+ONNzJ58mSuuOIKJk6cSDQaZe7cuUQikRovvd1QZ599NjfccAM9e/ZMGbNCCCGEqK/jjjuOW2+9lYcffphVq1Zx1lln0bZtW7Zt28Ybb7zBqlWruP/+++nbt2/K/U4//XTmz5+PqqrVuundcMMNXHHFFdx4442cdtpp9lX2fvrpJ6666qpa27Ivv49rcskll/Dee+9x8cUXM23aNLKysli0aBHffPMNDzzwAKqq8pvf/IZRo0Zx++23s2vXLvr27cu3337L888/z5lnnmkPZp2RkUFBQQGfffYZ/fr1o23btg14det21VVXcd555zFlyhTOP/983G43b731FosXL2b27NmA+T3m6aefZu7cuRx55JFs3ryZ5557jkgk0uDxogoLC9myZQu9evWqNTi677772LNnD/fccw+BQIDly5fb26xBvkeNGsXYsWOZOXMmoVCI3r17s2jRIn744Qeefvppe/8tW7ZQWFhod6M66qijGDlyJH/5y1/4y1/+QlZWFk8++STp6en2QNtnn302r776Kpdffrn9B8Wvv/6a+fPnc8EFF9jdK3fu3MnOnTvp378/LperQa9DQ4wZM4bXX38dwzDsLnNWOPjpp5+SmZlJ3759ueKKK3jqqadwOp2MHTuWbdu28cQTT9CrVy/OPPNM4OB/L7RYV+a76aabuOuuu/j973/P6tWreeqpp4B9C1qt3gXHHnssYFZQrlu3jq5du9ZalVSfnzeYFwWIRCJ2FdRpp53G3Llzue6665g8eTJ5eXk8+OCDDBs2zB6Yfvz48fbFAK677jratm3LP/7xDz7++GNmz559UMNk0TJIKCWEaBTHHHMMGRkZdOjQodYy4FGjRnHnnXfy4osv8q9//Ys2bdowatQo5syZw9SpU1m2bBnHH3888+fPt6+SU1paSrdu3bj33ntrrUBq27YtN9xwA/feey+LFi3ijDPOqLbP6NGjefHFF5k9ezY33HADLpeLESNG8NBDDzV48NSaHH/88SiKIlVSQggh9ssll1zC0KFDefnll3nooYcoLCwkJyeHMWPGcP/999sBTbK+fftyxBFHUFRUxOjRo1O2HXvsscybN485c+ZwzTXX4HQ6GTBgAC+++GKd47y43e4G/z6uSU5ODm+88QaPPPII9913H9FolL59+/L000/bVypTFIXnnnuO2bNn89JLL1FYWEjnzp254YYbUrrTTZgwgc8++4ypU6dyzTXXpFztbn/17duX1157jccee4ybb74ZwzA44ogjeOqpp+x2TpkyhaKiIl555RWeeuopOnTowOmnn263v7S0lIyMjHo93qeffsr06dN55ZVXGDVqVLXtkUiETz/9FKDGrpIjR45kwYIFgHl1tzlz5thXOuzVqxdz5sxJ6eb59NNP8+6777JmzRp73Zw5c3jwwQd5+OGH0XWdYcOG8fjjj9td4Px+P6+//jqPPPIIDz74IBUVFeTm5nLXXXdxzjnn2Md5++23mTNnDv/9738PalXMiSeeyFNPPcWKFSvsPwD27t2bU089lddee40vvviCf/zjH3aI+uqrr/LWW2+RlZXFSSedxHXXXWdXER7s74XJ/vjHPxIMBpk3bx7vvPMOvXv35q9//St//etfq41PVR+ff/45gwcPtsehW7lyJRdddBEzZ86s87O5t583wD333MP27dv5+OOPAfPzO2/ePB588EGmTZtGRkYGEyZM4Nprr7Wr1LxeLy+++CKPPfYYs2fPpqioyB68Pnn8M3H4Uox9HVFPCCFEvX344YfcfPPNfPbZZ7UO2CmEEEIIcSi64IILePzxx6tdQe9Au/LKK8nOzmbmzJkH9XEOpH/84x/0798/ZYyrTz/9lClTpvD3v/+9WuVjXYLBIMcddxwPPfSQBD6ixZBKKSGEOIgWL17Mzz//zJtvvsmECRMkkBJCCCHEYWXp0qWEQqFaryh3IF1//fVMnDiRq6++utHHtNpX7733Ho899hjXXXcdHTp0YPPmzcyePZuRI0c2KJACePPNN+ndu7ddvSdESyCVUkIIcRC99NJLPP744wwfPpzHH398r5fVFUIIIYQ4lGzfvh2fz9coV0kE8yqIq1evrvGCAM1RUVERjzzyCJ9//jmFhYW0adOG8ePHc80115CWllbv4xQWFnLGGWewYMECcnNzD2KLhTiwJJQSQgghhBBCCCGEEI1OhroXQgghhBBCCCGEEI1un0OpSCTCqaeeytKlS+11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EEIIIRqdhFJCCCGEEEKIQ4ZhGE3dBNHMyHtCiOZLQikhRIpJkyYxadKkg/4427Zto0+fPixcuLBB91u6dCl9+vRh6dKlB6llzcO4ceO49dZbm7oZQgghmqlly5Zx9dVXM2bMGAYNGsRvf/tbbr/9dtavX9/UTUvx5JNP0qdPn0Z7vGXLlnHFFVc02uM1BytXruTyyy/n6KOPZtSoUVx66aWsXLkyZR/DMJg3bx4nnngigwYNYvz48bz22mt7PfZjjz1Gnz59qk3z5s2z93n77bdr3Ofee+9t0POYNGlStWMMHDiQE044gXvuuYeSkpJ6H+vKK6/k7bffBmDt2rWcf/75DWrL/qjPd7hbb72VcePGNei49bnPkiVLOP3004lGow06tmXz5s1ceeWVjBgxglGjRnHXXXcRCAT2er+FCxdy6qmn2v8WzZkzh1gsVuv+Dz74YKOcb4iWwdHUDRBCCCGEEELU39y5c3n00Uc59thjue2228jJyWHz5s288cYbnHnmmcycOZNTTjmlqZvZJN5+++1mF8wdTJs3b+bCCy9k4MCB3H///SiKwvz585k4cSLvvvsuPXr0AODhhx9mwYIFXHPNNQwaNIjPP/+ce++9F4fDwbnnnlvr8VevXs3IkSO58cYbU9Z37NjRXl61ahXdu3fnwQcfTNmnTZs2DX4+/fv356677rJvR6NRVq5cyaOPPsqqVat44403UBSlzmMsXLiQXbt2cdZZZwHwr3/9ix9//LHBbTmYrrrqKi666KIDftzRo0fTqVMnnn76aa699toG3be0tJQ///nPtGnThgcffJDCwkJmzZrFtm3bUkLIql5++WUeeOABxo8fz1/+8heKioqYPXs2a9as4cknn6y2//z583nxxRcZOXJkg5+fODRJKCWEEEIIIUQL8cknn/DII49w9dVXM23aNHv9yJEjOeOMM7jxxhu59dZbOeKII+jdu3cTtlQ0hgULFuD1ennuuefw+XwAHH300YwbN45XX32VO++8k23btvHSSy9xxx13MHHiRMAML3bs2MGXX35ZZyi1atUqJkyYwJFHHlnnPoMGDapzn/ry+/3VjnPUUUdRXl7O7Nmz+emnn+p8nIqKCv6//+//46677kJVm2+noK5dux60Y//f//0fEydO5Pzzz6dt27b1vt8bb7xBcXExCxcupFWrVgC0a9eOK664gmXLljF8+PBq94nH4zz99NOMGTOG2bNn2+v79+/PH//4R7766ivGjBkDwNatW3nooYf4+OOPSU9P389nKQ4lzfeTKoRo1r766ismTpzI8OHDGTVqFDfeeCM7duxI2WfDhg1MmzaNkSNHctRRRzFlypRa/3ppGAbTp09n8ODBfPnll/b6N998k/HjxzN48GAuvPBC8vLyqt1306ZNXHPNNYwZM4YjjzySSZMmsWzZMgCKi4vp378/L730kr3/jh076NOnD3/5y1/sdbquM2rUKJ577jm7a+E///lPrrnmGoYOHcrIkSO5/fbbCQaDdb4uu3fvZvr06Rx//PEMHjyYs88+m//+978p+/Tp04fXXnuNv/71r4wcOZKhQ4dy7bXXUlBQUOMxzzrrLM4777xq6y+++GIuueSSOtsjhBDi0DJnzhx69OjB1KlTq21zOp3ce++9aJrG888/D8Cll17KhAkTqu171VVXcdppp9m3v//+ey688EKGDBnCyJEjueWWWygsLLS3L1y4kP79+/P2228zZswYRo4cybp169iyZQtXXnklo0aNYsiQIZx77rl89tln1R7v008/5bTTTrO7ji1atChle31+f4bDYZ566ilOOukkBg0axIknnsjcuXPRdR0wuze9++67bN++vc4hAp588klOOukkPvroI7vL0emnn86PP/7I8uXLOeeccxg8eDCnnnoqS5YsSbnvr7/+ypQpUxg2bBjDhg1j6tSpbN26NWWf1atX///t3XeYFFW+PvC3UofpnsTMMOTsCAICorCKLuLdq97VNaBeXbPgyq5iQq+Ka8BVwLBmwZxx1Z9huaZ1V9a0rijKFbNIzkxOnaq6qs7vj1NVXdXTMwwDTE/PfD889VTVqaru6qZ7pvud7zmF2bNn4xe/+AVGjx6NI444ArfddhsSiYSzT3s+C7z++uu7HLJg2LBhmDFjhhNIAUBeXh769OmDzZs3AwCWLVsGv9+PU0891XPsfffdl7GSxVZXV4fKykqMGjWq1X0YY1i9enWb++wNY8aMAQDnc+A555yDq6++GpdddhnGjx/vfB567bXXoKoqpk2bBoD/Xz/00EMA+HNuP95dvZZs77zzDqZPn44JEyZgypQpuOmmm9rVjTCZTOLOO+90PpvOmDEDmzZtcrand8VLJpP485//jF/+8pc48MADMXPmTCxduhT7778/tm7d6rnt119/HccccwzGjh2LE044ocX7bezYsejXrx+efvppp83uRpt+W26ffPIJJk6c6ARSAHD44YcjFArh448/znhMTU0NGhoacOSRR3raKyoqUFxcjA8//NBpW7hwITZt2oRnn312n79eSG6hUIoQstuWLl2KGTNmoG/fvrjnnnswd+5cfPXVVzj99NNRW1sLAKisrMTpp5+OjRs3Yt68ebjrrrtQU1OD8847Dw0NDS1u87bbbsNbb72Fhx56CIcffjgAYMmSJbj55psxdepULF68GOPGjcONN97oOW7t2rWYPn06tm7dihtuuAF//vOfIQgCzjvvPKxYsQJFRUUYP348Pv30U+cY+wPml19+6bR9/fXXLX6p3nzzzU4J9MyZM/Hqq6/i4YcfbvV5qampwamnnoovv/wSV155JR588EH0798fl1xyCd544w3Pvvfeey9M08Q999yDa665Bh988AEWLFiQ8XZPPfVUfPXVV54PMzt27MDnn3+e8YsGIYSQ7qmurg7fffcdpk2b1moXpqKiIhx22GFOoHPCCSfg+++/9/wOaWpqwscff4wTTzwRAPDFF1/g/PPPRyAQwH333Yfrr78eK1aswLnnnusJUgzDwFNPPYX58+dj7ty5GDp0KGbNmoV4PI4777wTixcvRlFREf7whz947g8AbrrpJpx//vl4+OGH0adPH1x33XX46aefALTv9ydjDL///e/xxBNP4LTTTsMjjzyCY489Fvfdd5/T3eviiy/G1KlTUVZWhpdffrnFF2W3nTt34vbbb8fvf/973H///WhqasJll12GOXPm4LTTTsOiRYvAGMOVV17pPAcbNmzAGWecgdraWtxxxx2YP38+tmzZgt/+9rfO55+qqiqcddZZiMfjuP322/H444/juOOOw/PPP4/nnnvOcw67+ixw5JFH4uWXX8bo0aNbfRxnnnkmLrzwQk/bpk2bsGbNGqdS7scff8TgwYPxxRdf4OSTT8bo0aNx1FFH4eWXX271dgE4/z8ffvghpk2bhtGjR+Okk07yhCCbN29GNBrFt99+i2OOOQajR4/OGDruqQ0bNgAABg4c6LT97W9/QygUwsMPP+w8B2+88QaOPPJI+Hw+AMBpp53mhHEvv/wyTjvttHa9lgBg8eLFmDNnDsaPH48HHngAl1xyCf7+97/jnHPO8bwvMnnnnXewZs0a3H777bj55pvx3Xff4corr2x1/5tuugnPPvsszj77bCxatAilpaUtPvMC/PPfY489hssvvxwPPvggBEHAZZdd5rz+bMceeyzeeustZ/20007Dyy+/3Gbl1Lp16zB06FBPmyRJGDBggPP8pysoKIAsyy3+aNzY2IimpiZPYHvFFVfgjTfewCGHHNLqOZAeihFCiMvZZ5/Nzj777Fa3G4bBpkyZwmbMmOFp37RpExs9ejS74447GGOM3X777ezAAw9kVVVVzj47duxgRx55JPvwww/Zli1bWEVFBXvttdfYn//8ZzZ69Gj2wQcfOPuapskOPfRQdsUVV3ju56abbmIVFRXss88+Y4wxdvnll7PJkyez5uZmZ59kMsmOOeYYdsoppzDGGHv00UfZ+PHjmaZpjDHGrr76anbyySeziooKtmXLFsYYY/fffz+bNm0aY4w553b11Vd77vucc85hxx9/fKvPzZ133slGjx7Ntm7d6mk/77zz2JQpU5hhGIwxxioqKthvf/tbzz7XXXcdGz9+vLM+bdo0du211zLGGGtqamIHHnggu//++53tDz/8MJs4cSKLx+Otng8hhJDu5ZtvvmEVFRVsyZIlbe53++23s4qKCtbQ0MCi0SgbP348e+ihh5ztr7zyChs5ciTbuXMnY4yx008/nR1//PFM13Vnn/Xr17NRo0Y59/Xaa6+xiooKtnTpUmefqqoqVlFRwd544w2nrampiS1YsID9/PPPjDHGHnjgAVZRUcE++ugjZ59NmzaxiooK9uyzzzLG2vf788MPP2QVFRXsrbfe8uyzaNEiVlFR4dzftdde6/w+b02mc3r00UdZRUUFe+WVV5y2d999l1VUVLAffviBMcbYnDlz2GGHHeb5zFFfX88mTpzIbr/9dsYYY//617/YWWed5dmHMcaOP/54z2en9nwW6Ih4PM5OP/10Nn78eOf5vPDCC9nkyZPZL37xC7ZkyRL26aefshtuuIFVVFSwl156qdXbeuKJJ1hFRQWbOXMm++STT9j777/PZsyYwUaOHMk+/vhjxhhjf/vb31hFRQU79dRT2fvvv88+/vhjNmfOHFZRUcFefvnl3Tr3s88+m5111lksmUw6U01NDXvnnXfYpEmT2Omnn85M03T2HTduHFNV1Tm+ubmZjRo1ij399NOe27X/v23teS01NDSwMWPGsBtvvNGzzxdffLHL9+C0adPY1KlTnc+djDF27733soqKCud14X6dbtq0ie2///7sqaee8tzOjBkzPJ9Vr732WlZRUcHWrl3r7PPpp5+yiooKtmzZMs+x7733Xot9d2XMmDHsnnvuadF+xhlnsAsuuKDV46666io2evRo9sorr7CGhga2bt06NmPGDDZmzBh27rnnZjxmV983SM9ClVKEkN2yYcMGVFdX4/jjj/e0Dxo0CBMmTMCKFSsA8KvfjB8/HmVlZc4+ffr0wQcffICpU6c6bS+88AIee+wxHHfccZ6/aK5fvx61tbVO+bXtv/7rvzzrK1aswLRp0xAOh502WZZx3HHH4bvvvkM0GsXUqVMRi8Xw9ddfAwA+++wznHfeeQgGg/jiiy8AAB9//HGLv6imj1nQp0+fNrvvrVixAhMmTED//v097SeccAKqq6uxfv36Nm87Ho9nvN38/HwcffTRnmqrv/71r/j1r3+NQCDQ6vkQQgjpXph1WXtFUdrcT5IkZ/+8vDz86le/wjvvvONsf/vtt3HooYeivLwc8XgcX3/9NaZOnQrGGHRdh67rGDhwIIYPH45///vfntt2d7spLS3FiBEjcOONN+Laa6/Fm2++CdM0MXfu3BbjWR188MHO8oABAwDwii2gfb8/V6xYAVmWceyxx7bYx76N3XXQQQd5HgsAjBs3zmkrKirynOdnn32GSZMmIRAIOM9TOBzGwQcf7FRkH3744ViyZAn8fj/Wrl2Lf/7zn3j44YdRV1cHTdM89787nwXaIxKJYNasWfj2229x1113Oc9nMplEfX09brnlFpx11lk49NBDceutt+Lwww93urZl8l//9V945JFH8Oijj2LKlCmYNm0aHnnkEQwdOtQZP+iQQw7BI488gmeffRbTpk3DEUccgbvvvhuHHXYYHnjgAec1215ffPEFRo8e7UyHHXYY5syZgzFjxuDuu+/2VAgOGzbMqYgCeBWRYRjO66s17XktrVq1Cpqmtfi8e/DBB6N///67fL0deOCBnvdp+mve7fPPPwdjrMX5pN83ABQXF2P48OEtbre5udmzn93eVne9dG39X7U1uPwtt9yCE044ATfccAMmTZqEk08+GRMmTMDo0aMRDAbbff+k56KBzgkhu8XuepfpiiqlpaX44YcfnP129aEA4KXhhx9+ON566y2cd955OOCAAwDA6a9fXFzs2d8dctn7tXYujDFEIhHsv//+6Nu3Lz799FMUFxejqqoKhx12GA466CCsWLECU6dOxffff9/iKiXpv0hFUWzzF3ZjY6OnrNx9LoD3g8ju3vapp56KN954A19++SUkScLGjRtxxx13tLo/IYSQ7scOGbZt29bmflu2bEEoFHJClRNPPBFvvPEGfvrpJ5SWluLzzz93uok1NTXBNE08/vjjzjhUbn6/37PuHrvIvtLbww8/jPfeew9Lly6Foij41a9+hVtuuQWFhYUZj7MHoLZ/77Xn92djYyOKi4udwM1mfy5I/1LeHu4/aNna+hLd0NCAd955xxPw2exxeOzueC+88AJisRj69u2LAw88sMXzmOm+dvVZoC07duzArFmzsGHDBtx777341a9+5WwLhUIQBMHzR0EAOOKII/DJJ5+gpqYm42epfv36ea6yB/BAdMqUKXjppZcAACUlJS3+gAgAU6dOxaeffoqampoWn93aMnr0aNxyyy0A+OvL7/ejb9++Gf+vQqGQZ91+Dbhfa5m057Vkfw5t7TPmrl5v6edgv+bTx6wC4IzdVlJS4mlPX890u3ZYlH679mtrd94X4XAY0Wi0RXskEkF5eXmrx4VCISxYsAB//OMfsX37dvTr1w+hUAivvvoqBg8e3O77Jz0XhVKEkN1if8DNNCh3dXW1EyLl5+d7Bki1LV++HAMGDHB+iV5++eU499xzcdxxx+GGG27AK6+8AkmSnNtJ7yOfPh5VYWFhq+cCpEKtqVOnYvny5SgpKcHQoUNRVlaGyZMn4//9v/+HTz75BIFAAJMnT96NZ6KlwsJC537bOpeOmDRpEgYNGoR3330Xoihi2LBhe+UqN4QQQnJHSUkJxo8fj7///e+4/PLLM15dLBKJ4N///rdnEOVDDz0UZWVl+Nvf/oaysjL4/X4cffTRAFKBxfnnn4/jjjuuxe3tqtKhvLwc8+bNw80334yffvoJ7777Lh5//HEUFxd7xudpS3t+fxYWFqK+vh6GYXjChKqqKmeffS0/Px+HHXZYxouMyDL/WvXYY4/hmWeewS233IKjjz7aucpY+iDje9Pq1asxc+ZMqKqKp556qsWYPYMHDwZjDMlk0hOO6boOAK1WXX/00UdIJBI45phjPO2qqjoh3JdffoktW7bg5JNPbrGPJEmeYLI9QqEQxo4du1vH2OzXQKZqJLf2vJbs866pqcGwYcM8x1dXV2cMUTvKDnxqamo8IWCmz9Ht1dofd9sydOhQZ3B8m2EY2Lp1q/PzIpMPPvgABQUFmDhxolMhWVtbi507dzp/bCakLdR9jxCyW+xAxz14IsD/Krtq1SqnFP7ggw/G119/7fmFWltbiwsvvNAzQGZpaSkCgQBuuukmfP/9986VQoYMGYK+ffvi3Xff9dzPBx984Fk/5JBD8MEHHyASiThthmHg7bffxtixY52y7iOPPBLffvstPv74Y0yaNAkAv2Ty1q1b8dJLL2HKlCmeEvCOOOSQQ/DVV1+1+Av2G2+8gbKysj36a5EgCJg+fTqWLVuG999/v8WHP0IIIT3D7NmzsWHDBtxzzz0tthmGgZtvvhmJRMIz+LUkSfjNb36DDz74AO+++y5+9atfORUX4XAYBxxwANavX4+xY8c603777YcHH3ywzSu/ffXVVzjssMPwzTffQBAEjBo1CldeeSUqKioyXi23Ne35/Tlp0iTout7ic4Hdtd2+XH2moG5vsa84OGrUKOd5GjNmDJ555hm89957APjwBSNGjMApp5ziBFKVlZX4+eefM1bJ7KkdO3bgggsugCAIePHFFzMOIm1XSL399tue9vfffx/7779/xiokAHj33Xcxd+5czx8EY7EYPvzwQ+cPeZ999hmuu+46z0DYpmni73//OyZMmLDHn612R3l5OSRJws6dOz3t6a+J9ryWxo0bB5/P1+Lz7pdffont27d7un7uqYkTJ0KSJOc1ZPvHP/7R4dusrKwEgBaVbm2ZMmUKvvjiC89n908++QSxWAxTpkxp9biXXnoJd955p6ft2WefhSRJGavoCElHlVKEkBZ27tyJZ555pkV7RUWF07d/7ty5uOqqq3DCCSegvr4eDz30EAoLC52/Hp5//vlYunQpLrzwQsyaNQuKojhX3PnNb37Topx46tSpOPbYY/Hggw/imGOOwcCBA3H11Vfjqquuwg033IBjjz0Wq1atwosvvug5bvbs2fj4449x7rnn4qKLLoKiKFiyZAm2bNmCJ554wtnvF7/4BURRxIcffuh8kB89ejRCoRBWrlyJ+fPn7/HzdsEFF+CNN97A+eefj9mzZ6OoqAhLly7FZ599hgULFuzxB+Xp06c7lzK2r5hECCGkZzniiCNw3XXX4c4778SPP/6IU045Bb1798bWrVvx4osv4scff8T8+fMxcuRIz3EnnnginnrqKYii2KKb3pw5c3DRRRc5v9ftq+x9/fXXuPjii1s9lwMOOACBQADXXHMNLr30UpSWluLTTz/Fjz/+iHPPPbfdj6k9vz9/+ctfYvLkybjhhhtQWVmJkSNHYsWKFXj88cdx8sknY8SIEQD41cBqamrw0UcfYdSoUW1ebWx3XXzxxTjjjDMwa9Ys/Pa3v4Xf78fLL7+MZcuWOWMsHXjggVi8eDEee+wxjB8/Hps2bcKjjz4KTdN2e7youro6bN68GSNGjGg1OLrttttQW1uLW265BZFIBKtWrXK2hcNhjBgxApMnT8a0adOwcOFCxONx7Lfffli6dCn+7//+D4sXL3b237x5M+rq6pxK7AsvvBDvvvsufve732HWrFlON894PI5LL70UAHDGGWfgpZdewu9//3tcfvnlCAaD+Mtf/oKff/4ZL7zwgnPba9euhaZp+7RyJi8vDwcddBBWrlyJ888/32kvKCgAALz11lsYN25cu19LF110ERYtWgRFUTBt2jRs3boV999/P0aMGLFX/zg4cOBAnHLKKbjnnnuQTCYxcuRIvPfee84fYjvy+XHlypUYMGCAczW9nTt3OpVLrQWFZ555JpYsWYILLrgAs2fPRkNDA+666y788pe/9IRwq1atQq9evTBo0CAAwDnnnIOZM2diwYIFOOqoo7B8+XI8+uij+N3vfufsQ0hbKJQihLSwefNmLFy4sEX7qaeeisMOOwzTp09HKBTCo48+iksuuQThcBhHHHEE5syZ4/TH79u3L/7yl7/grrvuwnXXXQefz4fJkyfj3nvvRWFhYcY+7tdffz0++eQT3HjjjXjmmWdw/PHHQxRFLF68GP/7v/+LiooK/OlPf8KcOXOcY/bbbz/85S9/wT333IO5c+dCEAQceOCBeO655zyDqgaDQUyePNlTKSXLMg4++OCMg5x3RFlZGV588UXcfffduO2225wPFosXL8Z//Md/7PHtl5eXY+TIkSgtLW2zbz8hhJDu7YILLsCECRPw7LPP4o477kBdXR3KysowZcoUzJ8/3/lS7TZy5EhUVFSgvr4ehx56qGfb4YcfjieffBIPPfQQLrvsMiiKgtGjR+Ppp59us6u43+/HU089hbvvvhvz589HU1MThgwZgj/96U+YPn16ux9Pe35/CoKARx99FA888ACeeeYZ1NXVYcCAAZgzZ46nO9306dPx0Ucf4ZJLLsFll12Giy66qN3nsSsjR47ECy+8gHvvvRfXXHMNGGOoqKjAokWLnPOcNWsW6uvr8dxzz2HRokXo27cvTjzxROf8m5qanJBkVz788EPMnTsXzz33XMYhBjRNw4cffggAGbtKTpo0Cc8//zwA4P7778dDDz2Ep59+GnV1dRgxYgQeeughTzfPxYsX469//StWr14NABg+fDiWLFmCe+65B3/84x+haRoOOeQQzJ8/3+m+VlpaihdeeMH5v4tGoxg7diyeeeYZz6Dxt9xyC7Zt24b333+/XY+9o4455hg8+OCDUFXV6ap49NFH43//939x3XXX4dRTT8W8efPa9Vqyg9YlS5bg5ZdfRlFREY499lhcccUVuxy3anfdeOONyMvLw1NPPYVIJIJDDz0Uf/jDH7Bo0aIO3de//vUvz8Dpr7zyCh566CH885//bHXM1169euG5557DggULcPXVVyMUCuHYY4/FNddc49nv9NNPx8knn4zbb78dAP/5cffdd+Phhx/Gyy+/jH79+uGGG27AOeecs9vnTXomgXV0ND1CCCGdqrKyEtOmTcMDDzzgGcCUEEIIIaQr0zQN06dPb9Edbm+Lx+P41a9+hf/5n//BSSedtE/va29paGjAxx9/jCOOOMIzBtQdd9yB119/vc0utJl8+eWXmDFjBpYtW7ZXKwUJ2VeoUooQQrq4H3/8Ef/85z/x97//HUOGDPH8VZMQQgghpKt74okn9viCMu0RDAZx6aWX4sknn8RvfvObFlfY64qCwSDmz5+PUaNG4bzzzkNeXh5WrVqFJUuWYNasWbt9e0888QTOO+88CqRIzqBKKUII6eJWrVqFmTNnory8HPfcc0+LcUIIIYQQQrqy1atXY/jw4c5VCve13/3ud/iP//gPnHHGGZ1yf3vqxx9/xH333YdVq1YhHo9j0KBBOOOMM3DWWWc5V6xuj+XLl2PhwoV49dVXO3WQeUL2BIVShBBCCCGEEEIIIaTT7btrphJCCCGEEEIIIYQQ0ooOh1KapuH444/3DLy2ZcsWnH/++Rg/fjx+/etf45NPPvEc8+mnn+L444/HuHHjcO6552LLli0dP3NCCCGEEEIIIYQQkrM6FEqpqoo5c+ZgzZo1ThtjDJdccglKS0vx2muv4cQTT8Ts2bOxfft2AMD27dtxySWXYPr06Xj11VfRq1cvXHzxxWhv70HGGCKRSLv3J4QQQgjp6ejzEyGEEEK6st0OpdauXYv//u//xubNmz3tn332GbZs2YI//elPGD58OGbNmoXx48fjtddeAwC88sorGDNmDGbMmIH99tsPCxcuxLZt27BixYp23W80GsXEiRMRjUZ395QJIYQQQnok+vxECCGEkK5st0OpFStWYPLkyXj55Zc97V9//TUOOOAA5OXlOW0TJ07EqlWrnO0HH3ywsy0YDGL06NHOdkIIIYQQQgghhBDSc+z2NTnPPPPMjO3V1dXo3bu3p62kpAQ7d+5s1/asU2uBj0/mcyUfkMOAEgbkAsBXBCiFfO4rBvylqSnQm2/bjUt1EkIIIYQQQgghhPR0ux1KtSYej8Pn83nafD4fNE1r1/asi28Hqj8B0IExF0Q/EOjDA6pgXyBvEBAeAoSGAOGhQHgEIPkBQbImCrAIIYQQQgghhJBcZJgMkpjb3+u7ymPYa6GU3+9HQ0ODp03TNAQCAWd7egClaRoKCgr21insmaKxwPFrgNrlgFYPJJsAPQoYMUBrtNabAK0JSDYAyUYg2cy3myoQ28SnTAQJCPYHQoOA0FAgv4LfX94gHlZJPkCQAVG2Qit7WQZEJbVOCCGEEEIIIYSQrJJEAZe/9BXWVkWyfSodMqJ3GPefMSHbpwFgL4ZS5eXlWLt2raetpqbG6bJXXl6OmpqaFttHjRq1t05hzxUM51NrGAOYDhgqYCR4GKU1AM3rgOhGILEDSFQCiWpArQHUal6BZcSB2GY+VX+Suj2lkFdRFewPFI4B8vezwicBEERAlABIqYBKCgBSkE+izPeByOfpy8661MZ2QgghPYl9BTYGBsYYmFUdbC+nb29tOf24TLdtL7e1395aDypB9An32QvPECGEEEJI+6ytiuD77U3ZPo2ct9dCqXHjxuGxxx5DIpFwqqNWrlyJiRMnOttXrlzp7B+Px/HDDz9g9uzZe+sU9j1BAASFVy8pYd6W1x8oGg2YOq+a0mO8iipRySupdNWqsKoD4tuAyDqg6SegeS3fr34lnwAeNhWPB0omA2VTAH8/gBnWlAS0OMBqeDDmvrSzILRcdwIoaxlCquugO7CyK7EEmYdgTnWWfbwEb5glZQ68PPtlvwSQEEL2NndwYzIz43JbbQxWe1pbe+emacKEmZpbt5V+LiZMMJM5+9r3C2QOldyPzdnH7srO2g6WMh3rzJ2bSC3D/vXAAEEQwMAgQABjrMPruqmjX34/CqUIIYQQQnLQXgulJk2ahL59+2Lu3Lm4+OKL8cEHH+Cbb77BwoULAQCnnHIKnnzySTz22GOYNm0aFi1ahAEDBmDy5Ml76xSyS5QBsQBQCoBgH171pEd417/ETl45FRoK9D2GV0gxA2heAzR+B9R9BdSt5N0Ca5bzafV9QHgY0PtIoPwoXk3V3rCHMQCmVdllgH+rMF1tJoAkr/TS7X1N7z6CYH2JSB9jS7CCLckVeKVVYNlhFyRA9PGwywm/pDbCLfc8fT9CSE/nDmHckx26pG/P1O4OhuxtBjNgmAYMZsA0rXVr2YQJwzRaHOucjx3gMHjCIYCHNSZMZ7sTzghw5gK8P9d3tY8AAYIgOG2C9XvB3S4ImffP2G5vE1O3Y99upvtobVt7tu8rtbFaT0hGCCGEEEJyx14LpSRJwuLFi/HHP/4R06dPx+DBg7Fo0SL069cPADBgwAA8+OCDWLBgARYtWoQJEyZg0aJFnfKBNSsEkQdUSgGQNwDQm3m3vthWIL6Th1gFI4GiMcDgM3ggFFkP1K7gXfzqVvL1yHpg/VM8oOr/G6DvfwGB0l3ctwBAsv4ivZfHomot8HICLQMwk7xqjGUIu+zzY+nfutxBlwRvZZcdatkhl5yqWMsYYqUv21Vcdns3fc0RkmUmSwU47sDHs5623T3ppg7DNJBkSR4SWZNu6p7bcSqH4AqbGEuFQK7KHQBOtp6p0gZIBTSiFYCLgtgizHHPRUF09rXXWwuHWguFCCGEEEIIIXuYWKxevdqzPnjwYCxZsqTV/adOnYqpU6fuyV3mJkFIBVShIYBaBUQ2psIpfymf54/g05Az+cDq1f8GKj/g88h6YPX9wM8PAb0OAQpH8aAqPIzfpuTvvMeyLwIvZqQFXa51pvNukE64ZYVfdiWXp/ui9aUv49hadtBldVG0JyfgaiXQ8kzubfQFk+Q+u0LIPW9RPWSFSfaypmvQmY6kkYTOdOiG7gRHGSuZGIMBo0U1i11N4w6I7MDHHfa4QyJRECGK3u2tLRNCCCGEEEK6NrqkW2cTJSDYF/D3doVTOwA5BPiKU0GHUgD0+y8+JZuBne8B294CGr4Baj/jU+pGeTVW/nAgbE35I4C8gblz1T5hLwZdLcKttDDL1Kxui0bLgMt7Ui0ruDxja9nhllW9JfpcXRTTJrGNkIuQPeCuJEpfNpjhVB8ZzICma0iaSWiGBs3gy4ZpOKGRaXqrmwB4upDZ4ZEAAZIoZZ4LEhRR8QRK7okQQgghhBBCbDmSWHRD7nAqvh1o+hmIbQEC5S2rnpR8YOB0PkU2AjWfAdH1qe59yabU1f0qP0gdJyhAeCgPq/L3A/IreFjlK+neVT6CwMMhAICyZ7fF3JVZJjxBlpkE9Ki3LeO4JgJaDggvAaI996WqtUSfq6tiKwFXi6kb/1/2IO4QKX2yw6akkYRqqE6opBkadFP3dH9zVyfZPWTTq5AkQeJzUXIqjwJCAIIgeLYRQgghhBBCyL5EoVS2iRIQGsirpCJrgcgmQA60HhyFh/DJxhig1vKr+kXW8ZCqeS1fNuJA8898wt9Sx/iKXSHVfnwQ9dCQ3Kmq6kxOF8A9eG6ccbhc4ZazrPH/J9bOYEuUkLliy5eaJJ8rsHIFW2LaOoVa+5RhGkiaSSdYShquZataSdVVJIwEVF31VDS5B9222cGSJEhOmCSLsjO3l+1QibqvEUIIIYQQQro6SiG6CiUMFB0I+MuApp+A2DYgr69VWdMGQeADnwdKgVLXlQyZySuwmtfysKt5Lb/aX3QzoNXzAdVrV7huR7EqqiqAggogf3+gYD9ADu+bx9uTOF3/JHS4csvpkmgHWnpad8RIWlfFTF0R06q1RCkt1PLzKi0pQzdET9VWWtDVg7iDpqSRRNJMeuZxPY6EnkBCTyBpJD3d5+zucPa4SoIgQBZlJ2SSBAk+yedpo+5uhBBCCCGEkO6MQqmuRBCBvP68u17D90B0Kw+mRF8Hb2sAn8qPTLUbCSugWpuqompew7uhNf3Ep22u28kbYAVUI3lFVcFIwN9rTx8p2V2eLokd0KJay2g91GJGphOwQiwRTsBmB1ySP9X9UAq4Aiw5Q6iVXqnVNap5TGYiaSSdcZbsoEkzNCSSCcT1OOLJODRT83Src4+7ZHd9k0UZksjniqhAVlLrhBBCCCGEEEJS6FtSV6QUAL0mAE1BoHkDEOi19yqWpABQNIZPNsasqqqf+dhWzauBptVAohKIbeVT5T9T+/t7pwKqwpFWUNW7ywQMJIM9rdZyroSYPrZWEkgm0sIuoMWg8e6rFrqrtOzxtCRXpVamqqyMoVb7Xm/uwCl9iiVjiCfjiOtxp1tdetjk7h4nizICUgCyIjvhEyGEEEIIIYSQjqFQqquSAkDhWEAK8oDI1AFf0b65L0HgFVp5/YHyaal2rYHfd/NqoPEnPo9u5lcNrK4Cqv+V2tdXzCuqCkdZgdUoINiPgqruwqnU6uCPDM+YWa7l9AotZqYd6L4CYuZAy4AEFQI0BmjMhMZMqIaBqK4ipquIGxqSpoEkY9CZCWbdpgDBEzb5JT9CSojCJkL2IsM0nC6tqqHyua561u1lVeeD+LvX3XN7HDbN0JAwEjxc1jWohopzDjwHUwZNyfbDJYQQQgghu4lCqa5MlPgYT1IAaPgW0LDvgqlMfEV8nCr3WFV6zKqo+okHVk0/8cHVtXqg9jM+2ZQCq9ufPY3i3QEpqOp5hI5XaZlmEpquQtUTUPW49cU0gWgyiogWRUJXkTQ1awwnEwwMAgRIgghFUiBLPgQEBfmSAllSIIqKVXElA4IPMK11QwJMu1ui7K3ucndXJKSbYIxBNVSnWtCeJ/QE4klrrsc9Y6XZk73dmYxUmzts0k29Ux7L99Xfd8r9EEIIIYSQvYtCqa5OEIDQYAAC0PBN5wdT6eQ8oHg8n2yGyselskOqpp/4mFXJppYDqsthb1BVOArIG2iNVUR6KpOZSOgaVMOekojrCTQnY4gm49BMHUmDd6/jBCiiBFn0wxcIIyRKUKyKJw/7aoaeQeINwEzyeZJZg8ZnOCnnyouSq1pLTI2f5UwyWoyz1WJZotc42SMmMxFPxhFLxlKTHkNMs+ZWm71PXI972uzQKaZ711nGF/++4Zf8CMgBBOSAs+yX/fBLfj63lu3tftkPn+Rz2nySL7W/5IdP5ttUXcWY3mN2fQKEEEIIIaTLoVAqV4QG8XnDt7xbXTaDqXSSv+U4VWYSiKzj3f6afuRT81reXavuSz45x4dcY1SN4vPQIKpK6WZ4VYaGhBU8JXQN0WQczckYYskENDMJzUzCMA0AAgRBgF9SoIgyApIPBUoIsihB2J1KO0ECBGC3f9R5Boa3x9CyAixTA3QDAHONoZV+v+5Ay1oWpVSg5VzxUIITaGUaSF6UAYgUaOUouxIpokUQ0SKIJqOIanyKJCN82W5LRhFLxvhc43O7zZ72JTv4CSpBBGU+BRQeIDnrVqAUVIKecMk+xg6ZgnLQEzoF5SB8km/33ru7oTZWS11uCSGEEEJyFIVSucQdTMV38qvgdeTKfJ1BVFLVUDiJt5k67+rX9COvpmr8kVdYGVGg/v/4ZJOCvOuiHVIVjARCQ6wv6aQrM0wDCUNDQlcRN1QkdA1NWgTNyThUQ4NmXdlOgAhREOCzgqeQEkCRmA+5K3y59AwMv5sYc13FkAEwANPkQa2pwhkkHmbLQEuAdZ/2/YupsErwWQO++wBJ8QZYTqAlu0IwCrT2lKqraNaaEdEiaFabneWIFvEsu6eoFnUCqIgWgZHxapYdJwoi8pQ8hJQQgkoQeUoe8uS81LJrCsgB5Cl5CMpBZ27vZy/bYRKFOoQQQgghJBvoG36uCQ3iQVRkA5CoBsD4IONyKNtntmuiDBRU8Akn8jZTB6IbUyFV0498zCojDjR8zSfneD+Qv5/3qn/h4TwAI53OMA3EneBJRTQZR6MW5d3tjCRUU4PJGEQIkCUZflFBQPKh0Bdq2c2uO7G7+sH1Jb+93/c9gZarUsvUAOYKtFoMCA9XoCXySZAAUUwLtKwrHbaoyJLQahfEHMYYQzQZRZPahCa1Cc1qMxrVRjRrzU7I1Kw2o0lrQkSNoEnj+9ihk2Zoe+U87CAp7AsjpIQQ8oUQUkII+8JOwGS3hXwhp80Ol+zlkC8Ev+TfZxVHhBBCCCGEdLZu/M2wGwv2AQK9AbUWiG/jVVNqLR9YXCnMrYHERRnIH8Gn/sfzNmYA0U1WSGUPqL6aV1Q1fsenLdbxggzkD+dX/isYybsB5lcAcjBrD6m7scd7iusJxA0VsWQC9Wozoq7KJwZmdbfzwScqyPfloUQqhJjjoUanyxRotRczM4yflSHQam+FlrvLoSC7xtCS4KnIElpZtsfi2gsYY4hoETSqjWhINKBJbUKj2ojGRCMa1UYndHKWE01OwLSnlUoCBIR9YeT78hH2hxH2hVPrvrB3UsIt2kK+EIJykIIkQgghhBBCMqBQKlcJIhAo41O4iQdT0S1AdDOvmvIV5W5XN0ECwsP41P843sZMILYlNZC6Pah6sikVWm17w74BXlGWv781VpU1+Yqz9pByRdLQEdMTiOsJxPQEGrUImrQoErqGhKGCMQZBEOETZfglHwp8Yfglhb5wdwWCaI2ftRe6HDIrwHJ3OUwfQ0uAa9kO00RXQGWHVK5xtCQfGAREknHUqxE0aBE0aM1oSDSjQW1ypka1CY2JJjSoDWhM8KBpT8Iln+RDgb8ABb4C5PvzUeAvQL4v37Nc4C/gYZM/37Oep+RRuEoIIYQQQsg+kqOpBfFQCvgUGgQkqniVUXwnD6V8xXwg8lwniPwqhKHBQN9jeBtjQGKnN6RqWg2o1fw5iG4Cdv4jdRv+3rzrYL7VhTB/fyCvf853UeqohK4iZoVP0WQc9YlmRPU4ErrmXOVOEWUEZD9CSgDF/gJIYs98rrq9PajQMpmJJrUJ9fEm1CUaUK82oT7RiHq1GfWJJjRoEdSrEdSrzWjQomjQojAydT9sh4DkR6E/H4X+Amde4C9EYaAQhf5CFPgLURCw5v4iFAaKkO/PR0AOdOj+CCGEEEIIIfsWhVLdiRTgwVSwnxXMbAHUKsA0AH+OjDu1OwQBCPblU/m0VLtam6qeal4NNP0MxDbz56K6Cqj+JLWvlGd1H9wvFVaFR3Sr7n/2Ve+iyThiegLNWgx1aiNiOh8LymS8611A8sEvKSgJFEKR6EdDT6YZSdSpTahLNKIu0YTaRCNfVptQn2iytjWhXm1Cg9rcoZApTw6g2J+PQl8YRf58FPlDKPKFUejLQ6EvhCJfHoqUPBQqAd6mBOBvrfrT6TJoTSIDhEZAiwJJ2RpPS3Z1P8w0dpar26LTJuZWd2iSEzRNw/Tp03HjjTdi8uTJAIAtW7bgxhtvxKpVq9CvXz9cf/31OPzww51jPv30UyxYsABbtmzBuHHjMH/+fAwcODBbD4EQQgghZK+hb57dkSjzoCbQB9DqgNhWIL7DGneqkFdVdecvWv4SoOwwPtn0KNC81gqq1vCwqnkdYMSAhm/45BCAvAGusGo/HlTlSFWVO4BqUqOeAMpgJkRBREDyISD7UegLd42r3ZF9zjBNNGjNqI03oCbRiNpEA2oTjaiNN6LGXrbCp+ZkbLdvv8AXQpE/H738BSj2F6DIn4/iQD6K/QUo9ufzdau9yB+GX9pLVw61ux7a42h5xtNK8O1tjacFZBhTS0jrgrirYEvMEGyJ3i6NhABQVRVXXXUV1qxZ47QxxnDJJZegoqICr732GpYtW4bZs2fjnXfeQb9+/bB9+3ZccskluPTSS3HEEUdg0aJFuPjii/HGG29Q12lCCCGE5DwKpbozQeABjb8ECA/lwVR0C58Ua9ypjlzyPhfJIaB4HJ9sps4rqJp+toKqNfzKf2oNH78qtgWo/CC1vxTk41zlj+AhlT1AexbHqtJN3ep+l0BEi6E20YjmZBQJQ4NuGk4AFZT9KPLlU/e7bkg3ddQmmlAdr0dNvB41iQZUxxtQE29ATYLPaxONqFMbYbJMiUxmkiChJFCAXoFC9AoUoJffXi60lnnAVBIoRJEvP3vVdXsyOLzNM0i8HWIxV7CVHnq1di5pFVuCyK+ACMEaMF5yja+leAeE94RbmSq2xJ7z87qbWrt2La666iqwtPfhZ599hi1btuCll15CXl4ehg8fjuXLl+O1117DpZdeildeeQVjxozBjBkzAAALFy7ElClTsGLFCqfSihBCCCEkV1Eo1VPY407lDQISlXy8pdg2QPTx0EpUsn2GnU+UUwOq49hUu1afCqma1gCRtUBkPWDEgcbv+eTmK7HCquFAeLh1m8MBJbxXT5cxhoShIpKM8zGg1CbUJ5oR11UkTR0AEJB9CEp+FFAFVM5jjKFBbUZVvB7VLaYGHkIlGlCXaAJrNSXxEiCg2J+P0mARegUKURooREmgCCVW2FQSKEBJoAi9AgUo8IV6zgDfezJIvC1jxZbdZlhXQTTBB4zfnXBLaFl95VRuWVdHFOW08ErMHHDBDr9cFWGk09gh0pVXXonx48c77V9//TUOOOAA5OXlOW0TJ07EqlWrnO0HH3ywsy0YDGL06NFYtWoVhVKEEEIIyXkUSvU0chAID+Fd0RLVvFIoUcW3+Xp1q7GUOsxXDJRM4pPN1Hk3yOafgcg63hWweS0Q3wZotUBdLVD3hfd2/L1ToVd4GK9WCw8DlPx2nYZhGojqcUS0OJqTUdTGebeqhKHBNE34JBlBOYBegQL4pB4YKuYwwzRRm2hAVbwOlbF6VMZqUR2vR2W8DlWxOlTH61EVr3fCxl2RBAmlwSKUBgpRFixGaaDIWk/NS4KFKPYXUFi5r+yNii3AFWS5K7dclVxmMtUl0Q642qqAc8IpAc4YWZ7gSuHtolW5JSoZKrTSAq6M4Zf9+ElrzjzzzIzt1dXV6N27t6etpKQEO3fubNd2QgghhJBcRqFUTyUqQF4/INiHjzUV3QqoO/gA6b4iQM6nv6K7iTIP88JDvO16DIhu4ONTRdbxiqrmdXxQdXuq/cx7jL+MB1ShIdZ8KBAegqRUiIgeRyQZQ32iGbWJRsSNBDRDhwAgIPsRlP3oFSjoORUsOchkJuoSTaiM1WFnrBaVsVpUxupQGa9FVawOlbE61CQa2j04eLE/H72DvVAWLEZZsBi984pRFihGabAIva22Qn+YXhPdheAOd/bwV3SLgAvwdk3UAahtV3AJSFt3j5FlV1/ZYZeQGoPLGUReclV1uQaPF9zHugeVzxB2dfMB5+PxOHw+7xhrPp8Pmqa1azshhBBCSC6jUKqnE0QgUMYnbRgfdyq2BYhu5t3PetK4Ux0h5wGFo/nklmzmAZUzbeDhVaKSB39qNVC7wnuMGAR8ZTCVMij+cpQE+8PIGwQW6g/WE7tXdlEJXcXOWC2forXYEatx1u0Aqj0VTpIg8pAp2Au984pRHixBWV4xervaSgNFVAVHOm5vBlyAVZFlhVbpVVxwj8FltbenqyJgdZ1MC6FahF1Wt0WIfKB5QeKPSZKBRCPAeu3548sSv9+PhoYGT5umaQgEAs729ABK0zQUFBR01ikSQgghhOwzFEqRFF8hn0KDeJe+6CYgtp1XVfmKAcmf7TPMHUp+i4HVVUNDJFYNtXE11KY1EKIb4U9sQ75WhVCyFooZR3FiM4oTm4Hm1E0xCFD9ZVD9fZAI9EXC3weqvy8SgXIklV50Za+9rFmLYnu0BjtiNdgRtaZYjRNANajNu7wNAQLKgkUozytBeV4vlAetub2e1wu9/IU08DzJLc5YVMAed1N0Y2nBlqfLoumq6soUeDEgVg+EB+y98+lk5eXlWLt2raetpqbG6bJXXl6OmpqaFttHjRrVaedICCGEELKvUChFWpLzUuNOqTX8an1qFWAavHJqLw/g3V1pRhLNWhRNWhQ1iQY0qM2I6QmYpgB/3hiECg5GQPZDFiUIpga/WolAYgcCie18ru5AILEDkplAQK1CQK1CYdM3nvswBQWqv5wHVYFya7kcqr8PkkoRBVYZRJJxbI9UYXusBtsj1dgRrcH2mDWP1iCSjO3yNkJyAH1CpeibV4o+VtDUN1SK8rwS9MkrQVmwCLJIP14JaRdnoPkOyvFubOPGjcNjjz2GRCLhVEetXLkSEydOdLavXLnS2T8ej+OHH37A7Nmzs3K+hBBCCCF7E31rIq0TFSDYFwj0AbQ6XjUV384H9papa1+6pKGjORlFsxZDTbwB9VoTosk4TJPBL/sQkgMozMvPWB3DRB8SwYFIBAembWBQkg3wqzutkGon/IkdCKg74VerIbIkgomtCCa2Ao3eQ3lg1Ruqv9ya94bq43PNV9ptuwRqRhI7rMBpW7QK2yLV2BatxnZratKiu7yNYn8++uaVom+IT33s5bwS9A2VIt8X6oRHQgjpCSZNmoS+ffti7ty5uPjii/HBBx/gm2++wcKFCwEAp5xyCp588kk89thjmDZtGhYtWoQBAwbQlfcIIYQQ0i1QKEV2TRAAfwmf8odZXfs2A7EdfGwPXzEgBbJ9lp3OZCaatRiatAjqEs2oSdQjpidgmCYUSebVNHmle3a1M0FA0leMpK8Ykfy0rhrMgE+r4UGVuhMBtRJ+Z7IDq20IJra1uFkGAUmll9UtsDdUXxk0fxmf+8qQVAq7bJUVYwwNajO2RauwNcKnbdFqbLPmVbE6sDYHsAGK/Pnol1eKfuEy9A2Von+oDH1DZehnVT8FZOqqSgjpHJIkYfHixfjjH/+I6dOnY/DgwVi0aBH69esHABgwYAAefPBBLFiwAIsWLcKECROwaNEiCN148HdCCCGE9BwUSpHdI4f4FePyBvCufbHtgFrJgyqlgE9dNMzYU4wxxPQEmrQo6hNNqE7UI6LFoZlJKKKMPDmA3sHizuu2JUjQ/OXQ/OUAxnm3MR0+rRZ+tYp3C1Sr4FOr+LpWCcnU4EvWwpesRX7kpxY3bQoKNF+JFVaVQvOVQvXxueYr3eddAw3TRGW81gqdKrElUsnDJ2uK6ok2jw/KfvQLlaF/qDf6h8rQL1xmrfMQKqQE99m5E0LIrqxevdqzPnjwYCxZsqTV/adOnYqpU6fu69MihBBCCOl0FEqRjnF37Us28qvKxbYCsW3WwOhF3aJ6SjOSaNKiaFSbURWvR5MWRVxPQBBEhOQAegUKuubV0QTZCayaMda7jTHIeiP8ajV8WrUVVFU76z6tFiJLIqDuREDd6Rl03bkJSNB8vaD5SryTklo2pbaDH93UsT1agy2RSmxprnTCpy2RSmyPVkM3jVaPFSCgd7AY/cNl6B8uR/9QGQaEyzHACp+K/QVURUAIIYQQQgghXRyFUmTPCAIPoHxFQGgor56KbwPUaqt6Kt+qnsqNsafcXfJqE42oTTQikoyDMRNBOYCQEkBJoDC3Aw9BgK4UQVeKEMV+LbczHT6tDn4roPKpNTy80mrg02rg0+ohwOBBllbd6t0YYhBRpRhrWRirdT/W6gLWqjo2JGLYGGvC9ngDDGa2erwiyugXKsPAcDkGhHtbE1/uGyqFX/LtjWeDEEIIIYQQQkiWUChF9h7JB+T14xVUyUYgUc0DqtgOK7wqBKSQdVnx3cCYdw6kbmMvhEMJXUWjFkGD2oydsTpEtJjTJS+kBNE3rzTj4OTdliBD8/eG5u+deTszoSTrrYCqFrJag+rINmxursTGaC02xCNYq+pYk4xjQzKO1uudgKAADPfJGBoIYnAwH4NCvTAwvxwD8gegOL8/TF8JkkoRmEgBFCGkJZOZuxxDjhBCCCGEdF0USpG9z109FRwIRCqB5q1A9Q5AWw9AAYQ8gMmAYQLJJKAbQFIHDIO3GQYPoUyrksb5zsHgXDvczqNEkd+nKPJJEgFZAiSJz/0+QJEBWQYUGaYkokmPo8mMoyrRiHo9gqihQRAF5MkBFAfyqQonjT24+KbmHdjUvBObrWlT8w5sjVRBM5OtHhsQJQwNhjDM78MIRUCFrGOklMD+Uhz9JEAQdPA+gs0AtgPR74AogJ2p29ClPCSVIj7J1lwpRFIpgq4UWm2FMDoSehJCOhVjDAYzYTITJmPW3Ey1gXnXGQNjDPYvAgGCFUQJEAUBoqnDL9HHGUIIIYSQXESf4sieSSYBVU1NmgYkEkA0CsTjvM0wAF0HVBNQDUCrAvQIYCQB2Q8oIV5lZYdKAniwYE82Z5l5q6Z0K8BiSAVZjHmWE4aGRjOBehZHJYsjAhUaGHySjLAUQJEUgChJPLiSJSBgBVmStW4HXaKUWpdyo0vi7kjoKg+cIjuxsWmHEzxtbt6J5mSs1eNkUcKAUDkG5ffBoHxrHu6Dgfl9UBYsgphhUPRKU0W91gAlWccrr5L1ULR6KMkGa53PRZaEbMQgGzEEE9vbPH9TkKDLhUgqhdDlAh5cyQXOsu4sF0CX83OmWykhXYEdJnlDpVR4lB4qmda+/Ic6n9s/xkVBhAgRkiBCFEUeLkGEIsp8kvhcFiX4RAWyKEESJIiCAEmQIIliaj3ZiIC/KHtPDCGEEEII6TAKpciuMcbDpXicB06JBNDcDDQ1pYIoTUsFRYIAKAqfZBnw+fhcKuVBDmOAHgW0Bj72lB4BTB2Qg/zqfsKevyxNZqLZSKBRj6Em2YxaPYKYqQGmiTwhgF5CPnzMOhdmAgbjwZmmASbjQZqZ1iVEFPj5S1Y1liQDfgXwKfwxKnKqOsuqyuJBVtfq+mcyE1WxOmy0qp42Ne2wKqB2YGesttXjBAjoGyrBoPy+GBS2w6e+GJTfB33ySiCLuxfwMNEPNVAONVDexk4MkhGzgipr0hugJBshO+uNfN2IQmQGfMk6+JJ1u75/CDCkkBNQ8cAq3wqx8jNMYepGSHLWLoMk13bDCZPsn4E8VBIEoUWYJAkiBAhQJAV5ggRFkuETFSiiDJ+k8P0E0QmRJIEfI4lSapsgOkFTpgB7lwSd/2GDEEIIIYTkHAqliJdhALEYn+JxHjw1NPAgyq56AlJhk88HFBTweXvDF0EAlDCf8voByWZAawLUKkCtB5hhBVR5gND+K9tppo5GPYYGPYadyUY0GXGoZhJ+waqGUvI69oUHAMB4SGUagG51L9Q0IJ5oGWAJSHUflKzugwG/VX2l8LDKDqxkeZ9VXMX1BDY184onO3Ti1U87kDC0Vo8r8IUwOL8vBuf3weD8vhhkLQ8IlyMgd/IXP0GAIYdgyCEkgv3b3tVMQtYboSSboOiNkJM8rFL0Rsh6E+RkExS9iS/rEQhgkI0IZCPS7tMxRD8PqKQwDDnshFW6FIYuh2HIIeiS1SaHYEhhGFIQ6PDrjpCOBEom3NVJdqDkrjQSrYBJEkT4JQWKqMBnVSe5K5PcYZITIHkCpj0IkwghhBBCSI9HoVRP5g6golGgvh5obOQBlGaFFrIM+P1AIAAUFvL1vUkQ+QDovkIeUOkRHlBpNYDWCJhJQArwgEr0ew5ljCFqqk41VE0ygoiRAANDnuhHsZQHv9L+UGsXJ8orpURx1+8aZvJxsXSDT5EY0NjMn2/Bui3JqqCygym/Dwj6UtVlspTqPqjIvDIrw1hJjDFUx+udwGlj83ZrvgOVbVQ9SYKEgeFyDC7og0FW+DQkvy8G5/dFkT8/J68uyEQFSV8pkr7SduxsQtabrakJit4MOWkHVs3OpDjLEQgwIJkqJE2FHzXtPy+rIkuXwzCkPGsegi7lWSFWCIYUci3nWfuFYIoBCrS6ATtM0s22giUTejsqlGSxY4GSuzoptY0v5+L7nRBCCCG5yTAZJJE+e5AUCqV6kkQCiER4ANXQANTVpSqgAF7tFAgARUV8ubO/qIhSKqBi/XlAlWwG1FpAbwaMOuiChCYmoBEmdiYb0ajHETc1yJAQlgLo6yuClO0v8YIIyGIbAR5LVVu5K65qdN6dUBD43BVcaSLDFrMZG416bNTrsFGtwaZ4NTbGqhAz1FZPpcif71Q9DSnox4Ongr7oHyqDLPbgt78gQlcKoSuF7dufMYhm3AmqJD0CWY84gZVsRHibYbdHIBlRSKbaoYos524hwJCCVlBlB1ZBHmg5UzBtObVuigGYop8Gf99DhpkpQDLaXaUkCqK3OknkAZMiKQiJ7u5uMhSry5sdGMl2kESBEiGEEEK6AUkUcPlLX2Ft1e5/Nu4qjty/DP9zzMhsn0a30YO/lXZzpsnDp0iETzU1fByoeJxvUxQgGORd7/xd8EurIAJKAaAUIObrhcZENeriO1AV3YZmrRaGkUBQUBD2hVHmKwCEXBpPRLAqpFp222vQY9iYqOahU6zaWd6WbIDZymXPJQjoLxdhsK8XhvhLMSRQhsHhcgwp6IeivEJebeW+IqEoAkkDkIRWK7BIGkGAKeVBk/Kg+dsYAyv9MFODZMR4eGXEIOlRK8CKQjaiPLhylmOQ9JizLLKkFWjxQd6xG9VZbu5gyxQDqeBKDMCUgjCkAAwxCNOaG1LA2Y+32et2wJV7lVsmM2GY7QmVjLSBuQH7Cm9O1zd7LCSI8MkKfNbYSZmqlGRB8oZJgujZTl3eCCGEENITra2K4PvtTdk+jQ4bXhbK9il0KxRKdReGwcOn5mbeBa+mhnfLU1UeOgQCPIQqKuryV40zmYkmPYrGZARVah3qkk2IGXGIgoRwaADKw0MgM40Plp5sBow4YDTzxykG+BX90HUfo8FM7NAasFGtwcZENTapNdiYqMFGtQb1erTV40KiH0MCpRjiL8PgQAmG+sswJFCGAUohFCZaXQZ1Pk+aQGUzgObUd2swHkhJ1lUO7SsJ+qzB2v0+71hYma442MUGbe/qmOiDLvqgK0W7fawdaElWKCXpVnBlxJ12z7oZd63zZQEsLdjac4bot0IqP0wxCFP0W8sBa5sfphVgGValFm/zp7Z7Jh8Myd/mBQ7cXd7Sq5aMtOX0SiV+Mc/2h0qKKLuCJF6hJLfoCkehEiGEEEIIIXsDhVK5KplMVUHV1QG1tbwKStN4oJCX13WroDJQDQ2NegT1ySbsVOsQ0WN8kHJRQVjKQ4lSmNZNJQgohUDQBAyVB1PJKJBs4kGVaVohlR+QfcjGSz1mqNis1jrh00YrfNqi1kJleqvH9VEKMThQaoVOpRjiL8XgQClK5V2M9SSDB0ttMU0+GaY1aLsOJNRUG5jr+7w19pUgeK846JN5pZ0dYoli6qqDkhV2SWIq2MqB119X5A60Wu+g2dYNMIimCtFMuIKsBCQzDtGznuDr1n58/wREe19ThWTEIVjppmSqkEwVSusv4Q4xIcEQFeiCD4bogyEorrniBFim6AcTfWCiH0z0Q5ACEKQARDkPkhyEIPFJlAJ8kvmyJAf5PlIQkqhQqEQIIYQQQkgXQKFUrtE0YO1aYMcOHkIlk6mueL168bGgcgBjDM16FI16BLVaI2q0BkSNOAAgTwygl1IAn9ieQcpFQAryydeLX7nPSPBJjwDJCA+rTN0KqXzWpMAadXyPH0eN3uxUOrnDp8pkY6vH+QQZg/wlGBIoxWB/KYYGyjDEX4pB/hLkSf5Wj9tjoti+wdoBa8B264qDJvOOf2WHW/YYWJ7bF1KVWKIVbDlXG5T461VybbcHfLfPzR1oUWVWxwkCr1iSAh2q1PJgDMxI8OpEIwHBiEEw4nwyeYAlmipEg4dYsqlBZhoka1liGmQzCZlpzrpkas6YWwAgwoBoGlCQAIw9f/htEhRA8vHKStEHSH7r54Lfave72qx1Zz/F1Z42SZnalbS5tSx03WpOQgghhBBCOguFUrkkGgV++AHYsoV3wysr2/tXw9uHNDOJxmQEDclmVGq1aEpGoZpJKIKMsBxEP3/ZnlcuCBIgh/jkL7FCKhUwE4Ae5wOmmwkeVgE8GBEUQFL4HABME0LSgJjUIegGhKQOTbOqnrQabNTrsdFowHrWgI2sEVGh9ZKREtOHYXoYI5JhDNdDGJ4MYbiWh4F6EJL7IluwutphQ9rjAQ99BAHMmkMQwETXXBTBRAFMFAGJz5kV7jD3JEt8myyl1tOWTYXPIYrWgO1A+7tCMh5emYYVZlnVV4aWqsaygyxn3B7rOPuxSdb9Sna45Q60XFciFF2TfZwdiDnHu+ZUrZWh25vhGmOJucZYMl3jKgF2Nzh7cG5JCEHy5TtXf5NFCX7JB5+oQBRlyJKSGpzbNaaSKEoQBBEQJAjWsiCIAEtaQXKcv0eNBH+PGq7Js65m2K5aFZOuZWduHeOuTmRJQE8CaL277L4ntgyq3JNgt8muIEv2hlzOums5fe7ZLqdtl/nPPbvdOSZtP0Gi9xAhhBBCCNkncifR6Onq6oBvvwXq64H+/XMijDKZiYgeQ5MeRY3WgNpkIyJ6HGAMAcmPQjkfAamDlV2GASkahxSLQ4wlIMXikGIJiPE4pLgKMZ6AFE9ATKh8iquQEipEVYWYSPBJ5dsETYOo6YCWxPaggTVFJlaXAKtL4cw3FwIs03cyAZBMYHgdsH8tMLIG2L8GGGXNS+IagDpryh1MELxBlSJbyzKYYs9lvs2n8HWfDFORYfqsba656bf3UVLrPhlMUaxlfj+mKMGUrQoqw+CVgKrGQywn1AKcIMu9DHiDKffcrtayJ1lOhV4tqrXsdni3Z/lLefuvANf2YN08IBKdcZX8sgJFVPiV30QZftHHQyUxbWBu66pxsiDv3au/CVYooxTs4TO0C8zgAalph1daWoBlrZua1aal7aO1PjnHJtO2Jb1zz8UKTOuYDnXO7HyC5Aqu0uaC5A22nHXrGFFqY5u97J7S98u0zdVmJIDSQ7P9DBFCCCGEkA7o+slGT8cYsH078P33fNDyAQOy/uW4LQlDdQYpT6+GCslB9PWXQhJEwDR5qNRcD7kpCrk5Aqk5CikShRyJQYpEITXHIEVjkKN8LkXjkKIxiLE4pITW4XOsDwA/lgA/lwA/D+Lz1aXAml5ArI2MrDgBVNSL2K9RQkWjgv0iCiqaFQyNKVAE2alIgiiAlYpAbwENdtWSaFU6ie6qJwCw52ncg5MzQLCri0zGdzdNCCYPagTGAIOvC1Z1kmBtFwxr3TAg6CYEe9kweRWYzpdF3dtfSmAMQlIHkjqkeIef6g4zZYmHXH4Fps8KrtKXA760NhmGHXrZk2IHZRJMmbcZihV8ySLSq4EgIDWOlvV/5Qmq2t0NMS3wEgUYAEwwa2BuIy1gaj1UEgQBjKHVK8Apkgy/PVC3pLR7sG47bNrjUClXCBIgBwEEs3P/jPFgzBNYWWEVS6a12e16WlvS2te9rqe16959mG616d79W2yzj9MBmBnO3+AT1H3fvbIjeh8J9D0622dBCCGEEEJ2E4VSXZmq8vGj1q3jV8/r1y/bZ9SCbupoTjQjUrsDjTVbkajbCbO+Hr6mKMqbVQyLaPA3xyA3NUNu4sGT3MTDJ4GxXd/BLph+H4xgAEZeAGYwCCPoh5kXQGNIwdoihnWFSawLaVgfTGC9L4oNcjPqxNYrE2SIGOArw+BgOQYHyjEoj4/1NFgpQJEACM4XOf6tjAnAelEGIPNBwAUZvMQmxzDmBFROWJXUISbdyzrv1qhbc01PtWv2dj4XVR2CluTLmrVdS0K05unrosrnNlE3AN2AFNt3VSSmLPFAK+AKuPwKDL8Ppl92BWEyDEWG7pOg+2Q+KSJ0n4SkIiEZkPncJyHpl6D6ZZgBu8IDVigFHihJMiRFgSgrkGQZoizDJ/vhk338CnCyHz7JB8XaLkkSJEnhAZPEu8bxNplPigJRpLGJcoIgpCqDkJfts2kbMzMEVq65s2y0stzKNmakrVs/S5lu3aeR4Tj3dvdtuPY3NaDPf2b7WSOEEEIIIR1AoVRXVVMD/PQTUFUF9O7NBzLvLLoONDTwroJ1dZ45q6+HXl8Ds7YWaKiH2NCE4kgMxQAGduCujIAfRn4Yen4ejHAIen4IRjgEIz8EPZwHI5QHw56Hgnw5LwgjlIdmP7A1WYvNiUpsjVdiS6ISW+I7sTmxGTVaQ5v329tXjEHBPhgY7IPBwb4YEuyLQcE+6OcvhSy28bZghqubjm517YkBut3FJ+LtUmYHVqLVhQXu6pwuRBB4F732jC2/rzCWCqtUK7BKaN51VeMBlpqEqGkQE9Y2Ncm3JZJ8f/dxCXubBklN8goz8OBL1A0gltj7D0UUwHw+sIAC5vfzKxX6fYBfAfx+CH4fn3x8jtamgI8H0gE/n/KCvE2SvONnOVc/tMfespbdA8bbV1N0VW+lqsJcY3J55jkYsJI9J4ipbpW5QK3l4wgSQgghhJCcQ6FUV6NpwKZNwJo1fPycgQP3/IshY3yQ9Lo6b8iUvm7PG1u/apwAIFNuwQQBekEYemE+9IIwDNeyXmDPw6lt+SEY+WEwpfWXIGMMDXoztiWqsDVeha2JzdiSqMTW6ips3VyJ2jaubgcARXI+BgbLMSjYh0+BPs56nhRo55OX/gRIgJTXcuxv56/3dlhld8dJuMasMZ0KK35bVhcvyKmBxXO10mpvEAQwvwLDr8DI501OlzYw3s0NDCZjMGHCcM+tbQwtq+8ECLyrmyBCAiAnTciqAV9Sh0814VMN+JMmfKoOn2pAVnVIapJPiaQTZokJDYIVbgkJDUJChZCwBnGPq3ye5NVegskgJKw2RPb+c+VTeEjlBFh+Hlb5FD75fbx7oSsIg1/hV+d0rwf8VuhlhV95AX68M+aWfbVG12DzshWCiaIrHHONuyWkB1tpAZc7AHPvay8TQgghhBBCegwKpboKwwB27uTd9WprgZISIBxuff9kklczpYdM6cu1tXyu7d4YTEwUYRTmQysIIV4YQrwgD1pRGGZREYTiXkBxMfSifB48FeZDzw/ziozdpJoadiRqsV2txrZEFbYnqrE1UYVtCb4eNdoe0KhQDmNQsA8GBMoxMNjbCp54+FTQmX85F6yqFPgzbDStoMru1mIHV/YgyaoVVmlWVxZXsCJYty2IAKS08EpAV6y6YoxZ4VHbYZJp7Wcw04qS3IESf1yiAEjggZIoCHwZAmRBQlCSoECGIopQBBk+QYbsXCHOmqxAii+72q31vT6ekmEAdlCVUIFEwhtapU/p7Zn2U+1l13tYS/JpX7GDLb8vFWTZbT4f4JOtueKafK7j3OsK4LMqvQJplWDOFRThGpxeSFV+2VdQdFeCtRWE2d0l08cEc125MuM2CsUIIYQQQgjJCgqlso0x3lVv/XoeSvn9maujqquBjz/m07ffAk1Nu39fwSDQqxefiouBkhKw4mJohWHEC/PQXBhATUhEfb6M5iCviAiIfoSkAAKiv0Nf4DUziUq1DtvVauxI1GCHWoPtiWpst+bVWv0ub6Pc1wv9A73RP9AbA4PlGBgox4BgbwwI9EZ+TnTZEOFc9j0j5hpXJcNYK4YGMM0KsqzwillXonOzv9gLIqxLx6XWBYGHW60EWelBEmMMhis4ai1Y8t69AAYGwbrSmyjwAMkdJkmCiIAoQxZE+EQZiiBZk2xVMwne8MhZFpyBve1tXZIkAaEgn/Y20+RXImwr3HK2ay0DLU/I5V7XUnObHXo1R/f+43Bzgq60EEtxB12ytS4DsjVX7DZ7uw/wW1dVdB/nc4dgijXumyuYAryhmB1q2SGYIKQNZu/q8mjPBaSFXwDQSuDlDs0EoeVxrQVqhBBCCCGEdFMUSmWLrvOgaetWoLKSh1Pl5fyLFsC/OH77LfDll8CnnwI//NDyNkSRh0tFRbyyqrg4FTjZ4ZN7PRiEbuqIGglE9Bga9QhqtAbEjAQShgpBEBAQ/ciTAujfjhCKMYZGPYJKtQ6Vai12qrXYodZgp2t5V2M7AUCeFEA/fxn6BcrQP1CG/gEeOPUP8DZ/roxr0mGusafaZAVRzIBpJmEyHczUYSAJZugwmA5maDBYEoxpMAwdjJkwmA4T/GpvzOk+mIqQ+BXeRIiCxCdRgAgJEiQIgghJlOETRCiiD4ogQxZkPhi3IPGwyKpkclcmia2ESSKEnnO1t71NFIFggE/7gh16pQdbmsaX3QGXaoVYcdd2zRVuqa5j1GRq/4TGq8ls+7riK50opoVermUn+LJDL1fIld5mX4VRUfj4XbI7KLO7OvoAn1XZpVjBmU+yAq5MARZaVnPBFVY53SWt6jH7Co9S2hUiM91WprCstX3Sw7D0SrRMFWdUZUYIIYQQQjqIQqnOFo3yyqiNG3n3O0nioVEiAaxYAXz3HfDVV8A333i73AkCMGYMMHUq8ItfAH36AAUFbX4RYIwhbqqI6nFEjXrUN2xCvd6MuKEiaeoQBAF5oh/5Uh5KlSJPWMAYQ32yCVVqPaq1elSqdajS6lCl1vEQSuNBVMLcdbdAv+hDP38p+gZK0c9f5pn3D5ShSM7vtkGFXYHEmAkDpqsiye7CZqbGQ7Kqk5irexsPjAQwxgArQAIAQRAg2t3a4IeoBF3VSTwAUiBBFgQoEDxziTFe8MEYJAgQYUJiJkTTgAQTEuxl6/suAwSB8eosWJe1Z84DtCq7rAb7NPk3af66ZdaXVma1C6K1n+CaW+32bboHhHe6MzLPLHWfaeNIpbc7m1377eo2bPYXcftc7JepIHiP8RzeSrtn/1buLz0csKf0c8kYKqRts2/PHWy0ZV+HXjbDSAVU7kBLbWPSktZcs0Iu1zF2sOXsa+9vtSddoZdp8iAtvu+u6rhLTkjlCrKUDGGYO/hyBrGX0sb3klKT3bXR3W7fhiTzIEuRAEnxHufeX3JXVmZ6XbkqzDyv1fSuk6IrSHMHZkJqXRCRsUos0322VpFmb9MiQB59nCGEENI6w2SQ7N9hOay7PA5C3Dr1U5yqqrjlllvwj3/8A4FAADNmzMCMGTM68xQ6H2NAJMIDqB07eCC1bh2/ql5lJbBhA/Djj8C2bS2PLSkBDj4YOOQQ4PDDgdLSNu8qYaiIGQlEjTia9RhqtUZeBWWqYAAUSAiIfkgQETE11GgNqNEaUZNsQK3WgGqtHlVqPWq0elRrDUgyvV0PsZdSgHJ/Cfp4plL08ZegX6C0y4dO7lDIhMHnzIRpmjwcMhkY+Lq1BNM0eLhkmmAwIUAEY6Zz5T0BPJASBIEPtA0+FyFAAFzrIg+LwMdF4v+sLm2iDJG5ur8x8GojltYlzl5n/PadsZIY84YnrS1nIghW90HTCqOsOWN8GSZg2svMNbn3NXgb0+GEWfwZt+b2Ma21WXP3l2D7qoa8wXu+zpfYtHGGPF9uXWMYebo32lUgSIVmDPwxmtaKHQzaV1e0Aza4zs8dIrUIh6xzTm9zvzcM67kz7Ko4Zs2t+zSZdV7W88Xc62lhGGOpCSwtOPM+xRDs7a7wzQlC7VlauOWe72qcJmfdWs4L8qkzmGYquHImd9BlzZO6d3vStb+a9K5raevOsp5aTlrLSVdoC/BQzjCsQfC7IDsUyxSASWkhmCcMc13t0TP+l5gKvJyrQdrrrjZnLnu3ydaYevbtitY+sr0uAWICGD4cGHRUtp89QgghXZQkCrj8pa+wtmofXICmkxwypBg3Hj8626dByF7XqaHUnXfeie+++w7PPvsstm/fjmuvvRb9+vXDscce25mnsW8lEnyw8rVreeC0bh2vitq2jQdRVVW8614mgwcDo0cDY8fyIGrwYO8XVgtjDAmTB1AxI4H6ZDM2xXZgu1qNKrUODclmNOhRRPU4mvUoGvUI6pNNqNUaUZtshM6MDHeeWS85H2W+YvRWilDuK0ZvXzHKlWKUW/PeShH8opL6EszP0PV8MIA1taxMsfdzV6qkVZXwsMgEYyaYaVUcWRVEzKk2Si3zrfZy6mpszA5n7PtxAhsAVkgkwh7/iI9rJMCa2+MiiSJkgY+FJAsSZMEHSeThkSzKVtc3KygSJWc8JUmUIYrWbUCEJEp8OwS+LEg8QPJUALiWgQxXNbPCAHeXmUxXN7P3SQ9K3O27Wu7I9ra22QGJXXklIFWBlR5wsbT9PNvS2pwQzA7ErHV3oAa7zXWME9a4gyf369jdjpbLnuNtQtq6+7G3V1oAx1yBlBM4IXXf7vdfi4fAACZ4H2/6bbjfh6brcZppczsAs0Mz3QonDQMwdMCwQjQnzEMqXEsP+ezzc/+Ma/E8MesKlWhlcHP+7nW6ujndydLGiRIEPuZUQEmtu/d3nvPW/i8yNbczaGcM0I1UQOWEWK7QyrPNta7rqf103dqmu7Ylvbdtt7vn9rJu8P0Nw9uWzj4m10z/FXDM77J9FoQQQrqwtVURfL+9A+PydhHDy0I5H64duX8Z/ueYkdk+DdLFdFooFYvF8Morr+Dxxx/H6NGjMXr0aKxZswYvvPBC1wmlTBOIxbxTc7N3amryXuGupoaPDVVdzZcj7fgBEQwCQ4cCw4YBQ4eCDR8Odb+hiAZERJJRNGsRNCW3onbNd6hLNqE22YjqZANqko2o1ptQozeh3oiiwYiiyYwhYiZ2+6EWinkokQtQphSiVC5AqVyAMrkApUohypQip90n+sDswEeAHfPAtL7YGUYSEUMDIPAQKW0fHjUwMEEAExk89RyiYBVnpFWpWF8WBcgQJR7wCAIPewRBgGCNeyQIkhMYSaIMWZQhCRJkSebrggRZVCBJ1lhJgujsay+n2qVUmJS+bi0DaKUapo3l9gY7pHM5wVR68NSB5fQgq0PrSN2u+/yAVMhmL7cIy+xgzL1P+n1luv8M21sEy66AKD0sarFoB1ima2Jpy0YqlDJd+zPrvD3bXIGXafDAyzB4IGYYqdvVXSGY+/kwjbTwzbpNz7q9vx0kMjgVYZ6rYAqp45w2uN7nVoNnGZnXIQASgDx7mwwIcoYKO/fPCVd7eojmPo/dZQdm9pS0giojrc1+zpOGFWaZqbl7X3sfu83IsJ9hZDjO5HPTTO1jt2XaZh/vVBSCX92REEII6QFyOVwbXpYLF6kina3TQqmffvoJuq5jwoQJTtvEiRPxyCOPwDRNiFkeJJVt2oS/nTYeW8wGmAJgiIAp8MlwrRsCoIt83V7Wi4FkKV9OikBSFqDl+aEFFGgBBWpAhuqXkfCJUGUBcdFAnFUhbm5FnC1DrEGF+QXb9Um2QYSAAl8+ivyFKPQVOPNifyEK/YUo9hfytkAhCpR8yJIC+0ppzPkuk/pSZQCotL5ICRAgiJJVmMC7OomCYAU1ghPw8JAIEEXJCYkEUeAVRqIMSZQgCdbkDoAE3t3Mve60I3N7+rGE7Banu1+2T6SLazGeVyvBVHvCq3btk2G9RYVZG7fpDsScwMu9zLyTu81sZb9Mx7m7WHruzwpNnFDNHcwZacFZhrDMfkh2O9LPN+3/wQnKXPvYPFVnrhe6XSXqDhNtijW5gzlPEOa6bXdg5iywzNsyBWmedmTe7t6nrSC/OQKU9mnZ3s30yCEQCCGEENLtdVooVV1djeLiYvh8qSuplZaWQlVVNDQ0oFevXp11Khl9WfkVjjuuYS/dGgOQsKY0u+gV4RMVBOQg8nx5yFP4FFJCyPflI9/PpwJfAYoCRSgMFKLIX4SiQBEK/AWQJdkJcpzgR7Suo2YvC95gyA6D3OHP7ralB0gUEhHSTbQWJpA90yLkamPa1f7p29tab++2to7JGNLtxcfj3sf9fGWa20pKgeLsfoboDD1iCARCSJdEg2sTQvalTgul4vG4J5AC4Kxr2q6v4LavjZ5wNH63fQbWVP4IQZKsbmN2Fy7J6urFu3vJ1jhBktX1S7aqguxqIFmUoYgKn0sKFFGBX/YjKAcRkAMIKkGEfWGElTDyfDx0CvvCCCkhyJLsCXcECM7c3ZZp2Q6GKBQihJAurKPd7Xqi9Aqw1kIrSerc8+pkOTEEAiF7WXcIQrrDYwByf5BwGseIkK6t00Ipv9/fInyy1wOBfXwJ8nbIU/Lw2ElPZvs0CCGEEGKjAA9A1x8CgZB9obsEIbn8GIDU46BxjAgh+0qnhVLl5eWor6+HruuQZX631dXVCAQCKCgo2OXxzPqraKQ9A4kTQgghhOxloVAoK9XIezIEQmd9fuouFSHd4XF0h8dg0xMxmFo826fRIVo8hkgkktOPAUg9jiEFIkxNyfbpdEh5EDn/GIDu8Ti6w2MAusfjGFIgdlq2sqvPT50WSo0aNQqyLGPVqlU4+OCDAQArV67E2LFj2/UXvmg0CgCYOnXqPj1PQgghhJBMVq5ciXA43On3uydDINDnJ0KyYz2A57J9EntBd3gc3eExAN3jcXSHxwB0j8exHsDEhZ1zX7v6/NRpoVQwGMRJJ52EefPmYcGCBaiqqsJTTz2FhQvb90z07t0bH330Udb+SkkIIYSQni0Uyk4XkD0ZAoE+PxFCCCEkm3b1+anTQikAmDt3LubNm4fzzjsP4XAYl156KY4++uh2HSuKIvr06f6XfCaEEEIIcduTIRDo8xMhhBBCujKBsfRrKxNCCCGEkK4iHo9j8uTJeOqpp5whEBYtWoTly5djyZIlWT47QgghhJCOo8u1EEIIIYR0Ye4hEL755hssW7YMTz31FM4999xsnxohhBBCyB6hSilCCCGEkC4uHo9j3rx5+Mc//oFwOIyZM2fi/PPPz/ZpEUIIIYTsEQqlCCGEEEIIIYQQQkino+57hBBCCCGEEEIIIaTTUShFCCGEEEIIIYQQQjodhVKEEEIIIYQQQgghpNNRKAVAVVVcf/31OPjgg3H44YfjqaeeyvYp5azKykpcdtllmDRpEo444ggsXLgQqqpm+7Ry3kUXXYTrrrsu26eR0zRNwy233IJDDjkEhx12GO655x7QkHods2PHDsyaNQsHHXQQjjrqKDzzzDPZPqWcpGkajj/+eHz++edO25YtW3D++edj/Pjx+PWvf41PPvkki2eYOzI9l6tWrcIZZ5yBCRMm4JhjjsErr7ySxTPs/t577z3sv//+numyyy7L9mn1CPSzJPsy/R/cdtttLd4TS5YsyeJZdj9tfe+g90DnaOv/gN4DnWPTpk2YOXMmJkyYgCOPPBJPPPGEsy1X3gdytk+gK7jzzjvx3Xff4dlnn8X27dtx7bXXol+/fjj22GOzfWo5hTGGyy67DAUFBXjhhRfQ2NiI66+/HqIo4tprr8326eWst99+Gx999BFOPvnkbJ9KTrvtttvw+eef48knn0Q0GsWVV16Jfv364Ywzzsj2qeWcK664Av369cPrr7+OtWvX4uqrr0b//v3xn//5n9k+tZyhqiquuuoqrFmzxmljjOGSSy5BRUUFXnvtNSxbtgyzZ8/GO++8g379+mXxbLu2TM9ldXU1fve73+G3v/0tbr/9dnz//feYO3cuysrKcOSRR2bvZLuxtWvXYtq0abj11ludNr/fn8Uz6hnoZ0n2Zfo/AIB169bhqquu8nx+C4fDnX163VZb3zuuueYaeg90gl1996P3wL5nmiYuuugijB07Fn/961+xadMmzJkzB+Xl5Tj++ONz5n3Q40OpWCyGV155BY8//jhGjx6N0aNHY82aNXjhhRcolNpN69evx6pVq/Dvf/8bpaWlAIDLLrsMd9xxB4VSHdTQ0IA777wTY8eOzfap5LSGhga89tprePrpp3HggQcCAGbMmIGvv/6aQqnd1NjYiFWrVuHWW2/FkCFDMGTIEBxxxBFYvnw5hVLttHbtWlx11VUtKvU+++wzbNmyBS+99BLy8vIwfPhwLF++HK+99houvfTSLJ1t19bac7ls2TKUlpZizpw5AIAhQ4bg888/x8mwOn4AAA0LSURBVJtvvkmh1D6ybt06VFRUoKysLNun0mPQz5Lsa+3/AODviZkzZ9J7Yh9p63vHL3/5S3oPdIJdffej98C+V1NTg1GjRmHevHkIh8MYMmQIDj30UKxcuRKlpaU58z7o8d33fvrpJ+i6jgkTJjhtEydOxNdffw3TNLN4ZrmnrKwMTzzxhPNDyRaJRLJ0RrnvjjvuwIknnogRI0Zk+1Ry2sqVKxEOhzFp0iSn7aKLLsLChQuzeFa5KRAIIBgM4vXXX0cymcT69evxf//3fxg1alS2Ty1nrFixApMnT8bLL7/saf/6669xwAEHIC8vz2mbOHEiVq1a1clnmDtaey7tLgTp6PfRvrNu3ToMGTIk26fRo9DPkuxr7f8gEomgsrKS3hP7UFvfO+g90Dna+j+g90Dn6N27N+677z6Ew2EwxrBy5Up88cUXmDRpUk69D3p8pVR1dTWKi4vh8/mcttLSUqiqioaGBvTq1SuLZ5dbCgoKcMQRRzjrpmliyZIl+MUvfpHFs8pdy5cvx5dffok333wT8+bNy/bp5LQtW7agf//+WLp0KR555BEkk0lMnz4df/jDHyCKPT6b3y1+vx833XQTbr31Vjz33HMwDAPTp0/Haaedlu1Tyxlnnnlmxvbq6mr07t3b01ZSUoKdO3d2xmnlpNaeywEDBmDAgAHOem1tLd5+++0u95fB7oIxhg0bNuCTTz7Bo48+CsMwcOyxx+Kyyy7zfL4iexf9LMm+1v4P1q1bB0EQ8Mgjj+Djjz9GUVERLrjgAhqKYS9q63sHvQc6R1v/B/Qe6HxHHXUUtm/fjmnTpuGYY47BggULcuZ90ONDqXg83uIDk72uaVo2TqnbuOuuu/DDDz/g1Vdfzfap5BxVVXHzzTfjpptuQiAQyPbp5LxYLIZNmzbhpZdewsKFC1FdXY2bbroJwWAQM2bMyPbp5Zx169Zh2rRpuOCCC7BmzRrceuutOPTQQ3HCCSdk+9RyWmu/j+h30Z5JJBK49NJLUVpaitNPPz3bp9Mtbd++3Xn93nfffdi6dStuu+02JBIJ3HDDDdk+vR6HfpZk3/r16yEIAoYNG4azzz4bX3zxBW688UaEw2Hq6r6PuL93PPPMM/QeyAL3/8H3339P74FO9sADD6Cmpgbz5s3DwoULc+p3QY8Ppfx+f4v/GHudwoCOu+uuu/Dss8/i3nvvRUVFRbZPJ+c89NBDGDNmjOevD6TjZFlGJBLB3Xffjf79+wPgX6JefPFFCqV20/Lly/Hqq6/io48+QiAQwNixY1FZWYmHH36YQqk95Pf70dDQ4GnTNI1+F+2BaDSKiy++GBs3bsRf/vIXBIPBbJ9St9S/f398/vnnKCwshCAIGDVqFEzTxP/8z/9g7ty5kCQp26fYo9DPkuw76aSTMG3aNBQVFQEARo4ciY0bN+LFF1+kL+T7QPr3DnoPdL70/4P99tuP3gOdzB6DWFVVXH311TjllFMQj8c9+3TV90GP77dSXl6O+vp66LrutFVXVyMQCKCgoCCLZ5a7br31Vjz99NO46667cMwxx2T7dHLS22+/jWXLlmHChAmYMGEC3nzzTbz55puesc9I+5WVlcHv9zuBFAAMHToUO3bsyOJZ5abvvvsOgwcP9vxCO+CAA7B9+/YsnlX3UF5ejpqaGk9bTU1Ni9Jr0j6RSAQzZ87EmjVr8Oyzz9K4FvtYUVERBEFw1ocPHw5VVdHY2JjFs+qZ6GdJ9gmC4HwZtw0bNgyVlZXZOaFuLNP3DnoPdK5M/wf0HugcNTU1WLZsmadtxIgRSCaTKCsry5n3QY8PpUaNGgVZlj0Dfq1cuRJjx46lsWY64KGHHsJLL72Ee+65B8cdd1y2TydnPf/883jzzTexdOlSLF26FEcddRSOOuooLF26NNunlpPGjRsHVVWxYcMGp239+vWekIq0T+/evbFp0yZPhen69es94/eQjhk3bhy+//57JBIJp23lypUYN25cFs8qN5mmidmzZ2Pr1q14/vnnsd9++2X7lLq1f/3rX5g8ebLnL7I//vgjioqKaGzOLKCfJdl3//334/zzz/e0/fTTTxg2bFh2Tqibau17B70HOk9r/wf0HugcW7duxezZsz1h33fffYdevXph4sSJOfM+6PGpSzAYxEknnYR58+bhm2++wbJly/DUU0/h3HPPzfap5Zx169Zh8eLF+N3vfoeJEyeiurramcju6d+/PwYPHuxMoVAIoVAIgwcPzvap5aRhw4bhyCOPxNy5c/HTTz/hX//6Fx577DH89re/zfap5ZyjjjoKiqLghhtuwIYNG/D+++/jkUcewTnnnJPtU8t5kyZNQt++fTF37lysWbMGjz32GL755huceuqp2T61nPPqq6/i888/x2233YaCggLnd1F6dw6yd0yYMAF+vx833HAD1q9fj48++gh33nknLrzwwmyfWo9EP0uyb9q0afjiiy/w5JNPYvPmzfjLX/6CpUuX0pABe1Fb3zvoPdA52vo/oPdA5xg7dixGjx6N66+/HmvXrsVHH32Eu+66C7///e9z6n0gMMZYtk8i2+LxOObNm4d//OMfCIfDmDlzZotkl+zaY489hrvvvjvjttWrV3fy2XQv1113HQDg9ttvz/KZ5K7m5mbceuuteO+99xAMBnHmmWfikksu8XQ3Ie2zdu1azJ8/H9988w169eqFs846C+eddx49lx2w//7747nnnsPkyZMBAJs2bcIf//hHfP311xg8eDCuv/56HHbYYVk+y9zgfi5nzpyJTz75pMU+kyZNwvPPP5+Fs+v+1qxZgwULFmDVqlUIhUI444wz6GdsJ6KfJdmX/n+wbNkyPPDAA9i4cSP69++PK6+8EkcffXSWz7L72NX3DnoP7Hu7+j+g90DnqKysxK233orly5cjGAzi7LPPxqxZsyAIQs68DyiUIoQQQgghhBBCCCGdrsd33yOEEEIIIYQQQgghnY9CKUIIIYQQQgghhBDS6SiUIoQQQgghhBBCCCGdjkIpQgghhBBCCCGEENLpKJQihBBCCCGEEEIIIZ2OQilCCCGEEEIIIYQQ0ukolCKEEEIIIYQQQgghnY5CKUIIIYQQQgghhBDS6SiUIoTkjP333x9XXXVVi/bXX38dRx11VBbOiBBCCCGEEEJIR1EoRQjJKW+99RaWL1+e7dMghBBCCCGEELKHKJQihOSU/v37409/+hM0Tcv2qRBCCCGEEEII2QMUShFCcsoVV1yByspKPPnkk63us3PnTlx++eWYNGkSJk+ejNtuu80JsV5//XWcc845eOCBBzB58mQcfPDBWLhwIRhjzvEvvfQSjjrqKEyYMAHnnHMOVq9evc8fFyGEEEIIIYT0NBRKEUJySnl5OS677DI88sgj2LJlS4vtmqbhvPPOQzwex/PPP4/77rsPH374Ie68805nn6+++gobNmzAiy++iBtvvBHPPfccPv30UwDA+++/j4ceegg33ngj/vrXv2LixIk499xz0djY2GmPkRBCCCGEEEJ6AgqlCCE555xzzsHgwYMxf/78Ftv+9a9/obKyEnfddRf2339/HHroobjpppvw4osvIhqNAgAMw8Ctt96KYcOG4cQTT8TIkSPx7bffAgCeeOIJzJo1C9OmTcOQIUNwxRVXoH///njjjTc69TESQgghhBBCSHcnZ/sECCFkd0mShHnz5uHMM8/EsmXLPNvWrVuHIUOGoLCw0Gk76KCDoOs6Nm/eDAAoKSlBOBx2tofDYei67hx/11134Z577nG2q6qKjRs37sNHRAghhBBCCCE9D4VShJCcdNBBB+GUU07B/PnzceGFFzrtfr+/xb6GYXjmPp+vxT72mFKGYeD666/HoYce6tnuDrEIIYQQQgghhOw56r5HCMlZV199NWKxmGfQ86FDh2Ljxo1oaGhw2latWgVZljFo0KBd3ubQoUOxc+dODB482JkeeeQRrFq1ah88AkIIIYQQQgjpuSiUIoTkrOLiYlx99dXYtm2b0zZlyhQMHDgQ11xzDVavXo3PPvsMt956K44//ngUFBTs8jYvuOACPPvss1i6dCk2b96Mu+66C3/7298wfPjwfflQCCGEEEIIIaTHoe57hJCcduqpp+K1115DVVUVAD7e1OLFi3Hrrbfiv//7vxEKhfCb3/wGc+bMadft/frXv0ZNTQ0eeOAB1NTUYMSIEXj44YcxZMiQffgoCCGEEEIIIaTnEZg9kAohhBBCCCGEEEIIIZ2Euu8RQgghhBBCCCGEkE5HoRQhhBBCCCGEEEII6XQUShFCCCGEEEIIIYSQTkehFCGEEEIIIYQQQgjpdBRKEUIIIYQQQgghhJBOR6EUIYQQQgghhBBCCOl0FEoRQgghhBBCCCGEkE5HoRQhhBBCCCGEEEII6XQUShFCCCGEEEIIIYSQTkehFCGEEEIIIYQQQgjpdBRKEUIIIYQQQgghhJBO9/8BNt9YQxiOoXEAAAAASUVORK5CYII=", + "image/png": "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8USgPYqiKAcPHlRat26t2O125dChQ4H5/v23a9dO2bFjR2D+gQMHlKZNmyp2u11ZtWpViXN99dVXB+0nJydHue+++xS73a4MGzYsMP9MrmH/83vjjTdKnL/SLFiwQLHb7UrPnj2Vo0ePBuZv2bJFadWqVanvH/7X3+12K4qilPu8+V+zb775Jmi//vnNmjULrO/z+RSfz1fq37l/nt1uV2644QYlJSUlsGzZsmVKw4YNlUaNGimJiYmB+aW9P53q3J3s/aW0+WfzntOsWbOgv/2MjAzl6quvVux2u/L5558H5g8cOFCx2+3KsmXLgvb/8ccfB95bhBBCiDMhXfaEEEJcNH369CEiIgIArVb9SHK73XTv3p0nn3wSm80WtL6/61pSUtIp93v8+HF++OEHYmJiGDduXNDIfrVq1WLUqFEAfPjhh4H5X375JaB24SlepyUqKoonnniC2rVrl9qVpbjZs2eTn59P//796d+/f9Cym2++mf79+5OXl8dXX31VpnNRmjlz5pCZmcn//d//cd111wUtu+222+jWrRuJiYksWrQIgOTkZABiYmKCiiFHRUUxbtw4JkyYQPXq1U/5vAAqV65Mz549GTx4cND80NBQevfuDZT+uuj1esaOHRv0Gtx2220YjUbS0tJIS0sDYP369ezcuZOrrrqK++67L7CuwWDghRdeIDo6+rRt9Js1axYATz/9dCBTDMBoNPLCCy9Qq1Yttm3bxsqVKwHo3LkzkZGRLF++PKg7H8DPP/+MTqcLPMczubb8mjZtSpMmTQKPtVotKSkpgHp+i2ep1ahRg1deeYWJEyeW+DsAuO+++6hfv37gcc2aNQNdvYp3LfSfi5dffjnodQ4JCWHSpEmEhoby22+/BbqTnc01XFb+bUeNGkWlSpUC8xs1asRDDz1Upn2c6Xk7mW7dugXOj0ajOW3GIKhZVRUqVAg87tixIwMGDMDlcp20S+q5djav16233kqbNm0CjyMiIujbty8Au3btCsz3n+sTB434v//7P0aPHs0999xzzp6PEEKI/xYJSAkhhLhoiv+g9rvhhht45513gn4oFRQUsH37dn744QcAvF4vXq/3pPtdu3YtXq+Xxo0bBwUM/Dp06IBWq2XdunV4vV4URWHNmjVotdpSu7b07NmTX3/9lUGDBp3y+axZswaAa665ptTl119/PQCrV68u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yJEjSU9PDyyfN28eV111FXPmzKFDhw4kJCSwZ8+eMn8G/fHHH/Tt25fGjRtzzTXX8N133wUtL8tnotPpZPr06Vx77bU0btyYXr168f777+Pz+QC1y9f8+fM5fPgw8fHxzJs3r9RzOG3aNK699loWLVpE7969ady4Mf369WPDhg1s3LiRW265hSZNmtC7d+8SXYp27drF/fffT4sWLWjRogUPP/wwiYmJQevs3LmTYcOG0bZtWxo2bEinTp14+eWXKSgoCKxTls/3efPmER8fz6pVq0p9Hn4jR47E6/Uye/ZsoqOjT7kuwJ9//slvv/3G6NGjCQsLO+l6//d//8eXX34ZCEYBgSyZE7/zJSYmMmnSJMaNG3fa45+Jxo0bAwS63Y0aNYq7776bsWPH0qJFC66//nq8Xi9//PEHu3btCgSt5s2bx+jRowHo0aNHoDtjWb/LLl++nP/7v/+jZcuWtGnThieeeKJMXQcVRWHmzJl07dqVJk2acNttt7F58+bA8tK633344Yf06NGDJk2aMGDAAJYsWVLq63+6v6WYmBjatm3Le++9F5hXlmvp77//Ji4uLhCMAqhbty516tQ55fdK/3dxfzAKIDY2ltDQ0EC3vdjYWAYNGhQIRgHodDpq1qxZomuf+G+SgJQQgmeeeYbIyEhGjx6Ny+U66XrPP/88EyZMoGfPnrzzzjvccccdfP755zz00EPlLhj55JNP0rJlS95991169+7NBx98wJw5cwD1S3dMTAxdunRh9uzZVKxYkfT0dAYMGMC2bdsYM2YMkydPxufzcccdd5RI0Z82bRr33nsvEydOpH///tSoUYOff/45aJ2ffvqJiIgIunTpgqIoPPzww3z99dcMHjyYd955h+bNm/P444+X+LD/9NNP2bdvHxMmTODll19m69atjBw5ElDTsG+++WZA7aZ3yy23lHjeqamp3Hzzzaxdu5bHH3+cadOmUbVqVR5++GF++OGHoHWnTJmCz+fjjTfe4Omnn2bp0qW88sorgJqif//99+NwOJg4cSIzZswgIiKCBx98kIMHD5brtRBCCHFpS09PZ+vWrXTr1u2kWS0RERG0b98+EMzp27cv27ZtC/pMyM7O5q+//qJfv34ArFmzhkGDBmE2m3nzzTd55plnWL16NQMHDgwKoni9Xj766CPGjx/P6NGjiYuLK/Nn0PPPP8+gQYN45513qFSpEqNGjWLnzp1A2T4TFUXhgQce4IMPPuCWW27h3Xff5dprr+XNN99k7NixgBpk69KlCzExMcyePZuuXbue9FweO3aMV199lQceeIC33nqL7OxsHnnkEUaMGMEtt9zC9OnTURSFxx9/PHAO9u/fz4ABA0hLS+O1115j/PjxJCYmcvvtt5OWlgaogbU77rgDh8PBq6++ysyZM7nhhhv47LPP+PTTT4PacKrPd4CuXbsye/bs02a5TJw4ka+++or69eufcj3/eXzttddISEjg2muvPeW6UVFRgUCQ0+lk48aNvPTSS9SoUYOOHTsG1vP5fIwaNYrrrruOzp07n7YNZ2L//v0AQZlea9eu5ejRo0yfPp0nnngCnU7HDz/8QLNmzQKBj65du/Lggw8C6vfKhx56CCjbd9nvvvuOIUOGULlyZd544w1Gjx7Nhg0buO222wKv98msW7eORYsWMWbMGF5//XWSk5N58MEH8Xg8pa7/9ttvM2nSJK677jpmzJhB06ZNeeyxx0pd91R/S37XXnstS5YsIS8vL3AeTnct7d27l1q1apWYX6NGjcD5L82DDz4Y+N7rt3r1arKysgJZmtdffz1PPvlk0DpZWVmsWbNGMjmFShFC/Gfdeeedyp133qkoiqIsXrxYsdvtyhtvvBFY3q1bN2XkyJGKoijK7t27Fbvdrrz33ntB+/juu+8Uu92u/PHHHyc9jt1uV6ZOnaooiqKsXLlSsdvtypQpU4LW6d69u3L//feXemxFUZQ33nhDady4sZKUlBSY53Q6lR49eijDhw9XFEVREhMTFbvdrjzzzDNB+546darSrFkzxeFwKIqiKD6fT+natavy/PPPK4qiKH///bdit9uVn3/+OWi7J598UunQoYPidrsDberWrZvi8XgC60ybNk2x2+1Kenp64Fh2u/2kz3/ixIlKw4YNg56HoijK3XffrXTo0EHxer2BbW6//fagdUaNGqU0a9ZMURRFSU5OVux2u/LDDz8ElmdnZyuvvPKKsmvXLkUIIcSVY/PmzYrdblc+//zzU6736quvKna7XcnMzFTy8vKUZs2aKW+//XZg+Zw5c5T69esrx44dUxRFUW677Tald+/eQZ9r+/btUxo0aBA41ty5cxW73a589913gXXK8hnk/zz8888/A+scPHhQsdvtyieffKIoStk+E//4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NmfMmMGMGTNYvHjxaTOWijMajYG6VeXlvwZOzBY6UVm+y/qDucWLzPulpKSc0+vNn+WVlpZG7dq1A/OLDypQXv5zUJ52xsXFsWPHjhLzDx06dNosppUrV/Lwww8TGhrKF198UWqW/rFjxxg8eDBJSUm88cYbXHfddWVum7jySZc9IUSQnj170rt3b95///2gD0T/sKwnFgf/+eef8Xq9tGzZ8py248Qv2wkJCezfv5+4uDgaN24cmL7//nu+/fbbEv9yeqLrr78eRVF46623SEtLCxphKCEhgfz8fBRFCdr3rl27mD59+kkLUZal3Sdq3bo1GzZsKPGv3D/88AMxMTFlDn5t2LCB9u3bs3nzZjQaDQ0aNODxxx/Hbrdz5MiRMrdXCCHE5WHYsGHs37+fN954o8Qyr9fL2LFjKSgo4J577gnM1+l09OnTh6VLl7JgwQJ69uwZyLIICQnhqquuYt++fUGfffXq1WPatGmn7Ip/rj6DyvKZmJCQgMfjYcGCBSXWAQLfP073+Xs2/CMLNmjQIHCeGjVqxKxZswKj9a5bt466devyv//9LxCMOn78OLt27SpzFvX5smnTJipVqlSia+TJfP/99zz99NNBWTa5ubls2LCB+Ph4KlasyLfffltiArj11lv59ttvqVix4nl5LqUxGo3ExMSUGAWvtO+ScOrvsnFxccTExPDTTz8FrZOYmMjGjRtPmk1/JurXr09oaGjgGvL77bffznifx44dA6BKlSpl3qZjx47s3buXPXv2BObt2bOHvXv30qFDh5Nut337dh544AEqV67M7NmzSw1G5ebmBrryffzxxxKMEiVIhpQQooQxY8awcuXKoH8dqlu3Lv3792fq1Kk4HA5at27Njh07ePvtt2nTpg2dOnU6p20ICwtj+/btrF69miZNmjBo0CC+//57Bg0axJAhQ4iMjOSXX37hm2++CQzreyr+EfW+/PJLmjdvHhT46dKlC61bt+ahhx7ioYceok6dOmzevJmpU6fSqVOnEqnUp2s3qKP4NW3atERXhMGDB/PDDz8waNAghg0bRkREBN999x0rV67klVdeKfMX6quuugqz2czTTz/N8OHDqVChAv/88w87duxg4MCBZW6vEEKIy0OnTp0YNWoUEydOZMeOHfzvf/+jYsWKJCUl8dVXX7Fjxw7Gjx9fYsS1fv368dFHH6HV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szBy5EisW7cOs2bNikm9IuvU3rT3508IIaTuPv/8cyxevBjTp0/H7bffbpbn5ubi0ksvxV133YX77rsP2dnZ9fqHJhKfVq9eDZfLheeffx4JCQkAgDPPPBPjx4/H66+/jgceeABHjhzBK6+8grlz5+K6664DAIwcORLHjh3D119/XW0gtX79epSUlODdd99FVlYWAGDUqFG45JJL8NJLLyE3NxcejweLFy/GlClTcM8995jnLi8vx7ffftugQCrye9GwYcPQpUsXXH/99XjvvfdqbQG3aNEiTJgwwaxza5Seno709PRmOfd1112H5557Dp9++inOO++8Oh/3448/4vPPP8fKlSsxZswYAMDw4cNxzjnn4M0338Tf/va3qMf1798/bL2yshIzZ87E2LFjzf9Wa9euxdGjR/Hmm29i2LBhAPhrqbS0FI899hjefvvthjxV0oZQlz1C2imXywWHw1HlX1A++ugjXH755cjJycGoUaPwwAMPoKysDABvMjx79mwAwDnnnBPWTS8YDGLhwoUYNWoUhgwZgsmTJ+PgwYM11sHaZW3z5s3o06cPNm3ahMmTJ2Pw4MEYNWoUFi1aZDb9Hj9+PI4ePYr33nsvrOlyXl4eZs6cidzcXAwePBg33XQTfvnlF/Nxjhw5gj59+uDll1/GBRdcgMGDB+O5555Dnz598Pnnn4fV6ddff0WfPn3w6aefAgD8fj8WLlyIMWPGYODAgbjooovw0UcfhR0zfvx4LFmyBE888QTOOussnH766ZgyZQoOHDgAgDdFX7ZsWZXnHNllr6CgALNnz8aYMWNw+umn48orr8S///3vKtfsjTfewD/+8Q/k5uYiJycHd9xxB4qKisx9Dh06hL/+9a8YMWIEBg8ejKuvvrrJWrURQgiJjWXLlqFXr16YNm1alW02mw0PP/wwJEnCCy+8AACYPHkyLr/88ir73nbbbbj44ovN9R9++AE33HADBg8ejNzcXMyaNQvFxcXm9nXr1qF///5Ys2YNRo0ahdzcXOzZs6fOnzVffPEFLr74YrO72Pr168O21+Wzz+/3Y/ny5bjgggswaNAgnHfeeVi5ciU0TQPAu0q99957OHr0KPr06YN169ZFvYZLly7FBRdcgE8//RQTJkzAoEGDcMkll+DHH3/Etm3bcNVVV+H000/HhAkTqnRP+/333zF16lQMHToU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jnpvvvkmcnJywoKfMWPG4IwzzsBtt92G2267Daeeeip27NiBJUuW4OyzzzavW13rDfC7+A0ePLhKi7Obb74Z77//PiZNmoTbb78dqampWL9+Pb777js89thjdf6i3b9/fzidTtx7772YPn06MjIy8O233+LXX381b39MCCEk/px99tm47777sHDhQvz666+44oor0KlTJxw5cgRvvfUWfv31Vzz66KPo27dv2HGXXHIJVq1aBVEUq3TNmzlzJm699VbcdddduPjii8276W3fvj3sTrqRmuqzpi6ffX/4wx8wYsQI3H///cjPz0ffvn3x/fff44UXXsBll12G3r17A+Cfs0VFRfjyyy/Rr18/dOrUqR5Xt2a33XYbrrnmGkydOhXXXnstHA4H3nnnHWzcuBFLliwBwMfSfPbZZ7Fy5UoMGTIEBw8exPPPP49AIFDv8aGKi4tx6NAh9O7du9rQ6JFHHsGJEyfw0EMPVfmel5SUhN69e2PEiBEYN24cFixYAK/Xi9NOOw3r16/Hf//7Xzz77LPm/ocOHUJxcbE5ttWSJUtw4MABTJ8+HbIsh53bbrejf//+OOmkk3DDDTfgxRdfhCzLOOOMM/D555/j/fffx9y5c83xzo4fP47jx4+jf//+tbZab4xRo0bhzTffBGPMDDmMYPCLL75Ahw4d0Ldv3zp9173rrrswZcoU3HrrrbjuuusQDAaxcuVKBAIBTJs2rcnqbNyB7+6778aDDz6IP/7xj9i1axeWL18OoGEh69atWwHwkAngvwH27NmDk08+udrvrWeccQZyc3Nxzz334J577kFqaiqWLl2K5OTksJ4De/bsQSAQQP/+/c0yVVWxb9++KuNyGQYOHIihQ4di3rx5uPfeeyFJEp5++mlIkoTp06fX+/mRtocCKULagV9++QVXX321ue5wOHDyySfjzjvvxJQpU8xy40vl66+/jnfeeQepqam44IIL8Pe//938F9URI0bgrLPOwuLFi7Fp0yasXLmyRZ/L5MmT8dhjj2HKlCl4+eWXMXz4cLz99ttYvHgx5s2bB7/fj549e+LRRx+tczP5Sy65BBs3bqzS910URaxcuRLPPPMMnn/+eZw4cQJZWVm4+eab6/2F5LzzzsM///lP3Hfffbjyyisxb968sO2ZmZl46623sHjxYjzyyCMIBoPo27cvnn32WZxzzjl1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t99+S9rHMAwee+wxDjvsMAYPHszhhx/Oc889t8Nzr1y5kmnTprH//vuTm5vL1VdfTV5eXq37b9myhZEjR/LAAw80+DquueYa+vfvnzQNGjSIsWPH8o9//IMtW7bU+1y33HIL9957LwBbt27lggsuYNOmTQ1u084466yzOOuss+rcZ2feF/U5ZvXq1UycOJHS0tIGnduSn5/PzJkzyc3NZeTIkVxxxRVs3759h8d99tlnnHzyyQwePJi//OUv3H777ZSXl9vba/rdJk5N9bsRey5HczdACNE6qarK4sWL2bp1Kx07dkzaVlFRwWeffdZMLRNCCCFapvnz53PPPfcwduxYrr32WrKzs1m3bh0vvPACJ554IrNnz+boo49u7mY2i5dffnmPC+Ua07p16zjzzDPZb7/9uO2221AUhccff5zJkyfz+uuv07t3bwDuuOMOnnnmGS699FIGDx7Ml19+yc0334zD4eC0006r8dzbtm3j7LPPpnv37tx5550EAgHuvfdezjnnHF5//XWcTmfS/oZhcO211+L3+3f6erKzs5kzZ479OBqNsmbNGu666y4WLVrE22+/jcfjqfMc3333HR999BEffPABAN9++y1ffPHFTrepMZxyyimMGzdut5+3d+/eHHzwwdx6663ccccdDTo2Go1y/vnn4/f7ufHGG4lGo9x9992ce+65vPbaa9V+35aPPvqISy65hJycHO677z4ikQjz5s1j0aJFvPDCCzgcDi6++OJq/0BdUlLCZZddRk5ODp07d97paxatgwRSQohGMXDgQFauXMn777/PlClTkrZ99tlneL1e0tPTm6dxQgghRAvz2Wefcffdd3PJJZcwY8YMe31OTg4nnHACM2fO5JprrqFfv37ss88+zdhS0RSeeeYZvF4vDz/8MD6fD4ADDjiAiRMn8uyzz3L99dezceNGnnzySa677jomT54MwOjRo9myZQtff/11rYHUyy+/TFlZGQ8++CBZWVkAtGnThrPPPpvvv/++WqDy/PPPs3r16l26HpfLxbBhw5LWjRo1CqfTydVXX80nn3yyw7B19uzZTJkyBa/Xu0ttaUwdO3as9g+1u8sFF1zAhAkT+Nvf/sagQYPqfdz777/P77//zjvvvEPfvn0BGDBgAMcccwzvvfcexx13XI3HPfDAA/Tp04dHH30Ul8sFmL+zQw89lNdee41TTz2V7t27071796TjLrnkEjIyMrjrrrtQFGUnr1a0FjJkTwjRKHw+H+PHj+f999+vtu3dd9/l8MMPx+FIzsQLCwu56aabOOigg9hvv/3Iyclh+vTpbNy40d5n/fr1XHjhheTm5jJ06FBOO+20Ov/1a/PmzUyYMIFJkybV2Y35l19+4dxzzyU3N5cRI0Zw4YUXsmLFCnv7ggUL6N+/P9999x1Tp05l6NChjBkzhjvvvJNYLFbtfMXFxQwePJh77rknaX0gEGDkyJE8+OCDtbZFCCGEqGrOnDn07t2b6dOnV9vmdDq5+eab0TSNRx55BICpU6cyadKkavtefPHFSV8wf/rpJ84880yGDh1KTk4OV199NYWFhfb21157jYEDB/Lyyy8zZswYcnJyWLlyZb3/Hn/++eccd9xx9nCxN954I2n79u3bmTVrFuPHj2fIkCGcfPLJfPLJJ0n7hEIh5s6dyxFHHMHgwYM57LDDmD9/PrquA+awoNdff51NmzbVOXT+gQce4IgjjuCjjz7imGOOYfDgwRx//PEsWrSIxYsXc8oppzBkyBCOOeYYvvvuu6Rjly9fzrRp0xgxYgQjRoxg+vTpbNiwIWmfZcuWMWPGDA444AAGDRrEuHHjuPXWWwkGg/Y+/fv357nnnuP//u//yMnJYfjw4Vx22WXk5+cn/cz79+/PggULarwOMHvETJ061Q6jwPzs1bFjR9avXw/Axx9/jNvt5uSTT0469r777qtzaN3kyZN5/vnn7TAKsHvJhEKhpH03bNjAXXfdxS233FLr+XbF4MGDAeyhXddccw1/+9vfuOGGGxgxYgRHHXUUsViMzz//nOXLl9uh1WuvvcasWbMAOPjgg+0SEbFYjOeee45jjz2WIUOGMGHCBO66665q1/XNN98wefJkRo4cSW5uLjNnzqzX0EHDMHjkkUeYMGECQ4YM4bTTTmPp0qX29pqG3z322GMcfPDBDBkyhNNPP51PP/20xt//jt5L2dnZHHDAATz88MP2uvq8lr7++mt69eplh1EAffv2pU+fPnV+xl69ejVjx461wyiAdu3a0bt3bz7//PMaj/niiy/48MMPmTVrlvzDtAAkkBJCNKKjjjrKHrZn8fv9fPnllxxzzDFJ+xqGwbRp0/jmm2+48soreeyxx5gxYwbfffcdN9xwAwC6rjNt2jQCgQB33HEH8+bNIzMzk4suuoh169ZVe/68vDymTJlCZmYmTzzxRK1/+L7//nv++te/AnD77bdz6623smXLFk4//fRq3f+vvPJKRo4cyUMPPcQxxxzDo48+yssvv1ztnJmZmRxyyCG89dZbScU0P/roIyoqKjjhhBPq90MUQgix1yssLOTXX3/loIMOqrVHQWZmJgceeKAd5hx33HH89ttvSX8fS0tL+fLLLzn++OMB+PHHH5kyZQoej4f77ruPa6+9lh9++IGzzz47KUSJxWI8/vjj3HbbbcyaNYtevXrV++/x9ddfz5QpU3jwwQfp2LEj11xzDcuWLQPMujUnn3wyP/30E5dffjkPPPAAXbp0Yfr06bz55puA+fngwgsv5NFHH+WUU07hoYce4ogjjuC+++6zPx9cfPHFjB8/nuzsbF566SUmTJhQ689y69at/Otf/+LCCy/kP//5D6WlpVx66aVcccUVnHLKKcydOxfDMLj88svtn8GaNWs4/fTTKSgo4N///je33XYbGzZs4K9//SsFBQWAGaydccYZBAIB/vWvf/HII49w9NFH88wzz/D0008nteHee+9F13XuuecerrrqKj777DNuv/12e/uECRN46aWX6uzlMnnyZM4777ykdevWrWPFihV2D7k//viDHj168OOPP3LiiScyaNAgJk6cyEsvvVTrecHsDWUFQaFQiMWLF3PzzTfTvXt3xo4da++n6zrXXHMNRx55JH/5y1/qPOfOWrNmDUBSL5uffvqJLVu2MHfuXGbOnImmabz55psMGzaMDh06AObP8KKLLgLMMPfiiy8GzNfj7NmzOeSQQ3jwwQc544wzePbZZ7n44ovtz2tvvPEGU6dOpVOnTtxzzz3MmjWLRYsWcdppp9m/79osXLiQjz76iOuuu44777yT7du3c9FFFxGNRmvcf86cOdx1110ceeSRzJs3j6FDh/L3v/+9xn3rei9ZjjjiCD799FO7jlN9XkurVq2iZ8+e1dZ3797d/vnXJDMzk82bNyeti0QibNmypVpYC+Z7+d///jc5OTkcccQRtZ5X7F1kyJ4QotFMmDABr9ebNGzvo48+om3btowcOTJp3+3bt+P1ern66qsZNWoUALm5uaxfv97+4FRQUMDq1avtD54AQ4YMYc6cOYTD4aTzFRUVcc455+DxeHjiiSfIyMiotZ133303PXr0YP78+WiaBsDYsWM59NBDuf/++/nPf/5j73vKKafY/zo9evRoPv74Yz7//PMaC7ifdNJJvPvuuyxYsIADDjgAMD/kHHjggXTq1KneP0chhBB7N6t3SJcuXercr0ePHnzyySeUlJRw2GGHcdNNN/H222/bf7c+/PBDYrGY/Y9Cd999N7169eLhhx+2//4NHTqUo48+mldffZUzzjjDPveFF15oBz15eXn1/nt866232mFF9+7dOfTQQ/nhhx/Yd999eeKJJygsLOSDDz6wr238+PFMmTKFO+64g2OOOYavvvqKb7/9lnvuucfu/TJmzBg8Hg//+c9/OPvss9lnn31o06ZNjcO+qgoEAtxwww12m1auXMndd9/NbbfdZvckqqio4NJLL2XNmjUMGDCAOXPm4PV6efLJJ0lNTQXMzwCHHHIIjz76KFdffTXLly9nwIAB/Oc//7H3OfDAA/nmm29YsGBBUsH1fv36MXv2bPvx0qVLk3qUt2nThjZt2tR5HVUFg0GuvvpqXC4XZ555JmAGmdu2bePKK69kxowZ9O7dm3fffZfrr78eoNYhe4mOO+441q5di8fjYc6cOUl1nJ566ik2btzIQw891KC21iYxtPH7/fzyyy/Mnj2brl27JoWM0WiUm2++OWno2/fff580pK9NmzZ2iDVgwAC6du3KypUreeWVV5g5c6b9+xgzZgzt27fnqquu4ssvv2TcuHHcddddjB07lrvvvts+n9Ub67HHHuOqq66q9RpcLhfz588nMzMTMEPgf/7zn6xcuZJ99903ad+KigoeeeQRzjjjDK688krA/PwZCARqDA3rei9ZBg8eTCQS4aeffmL8+PH1ei2VlZXRo0ePautTUlKSCpRXddJJJ/HQQw8xf/58Tj75ZILBIPfddx9lZWVJPfcsn376KatWreKf//xnne0RexfpISWEaDQej4eJEycmfch65513OPLII6v9C2+HDh14+umnGTlyJBs3buSbb77hmWee4eeff7Y/3LZr146+ffty3XXXcfXVV/PWW2+h6zqzZs2qVi/jvPPOY8WKFVx77bVJXc6rqqio4JdffuHII4+0P4wDpKenc9BBB/HDDz8k7T98+PCkxx07dqSioqLGcx944IF07tyZ//3vf4D5r7LfffcdJ554Yq3tEUIIIaqyem7UVlzYYv0dMwwDn8/HIYccwrvvvmtvf+eddxg9ejQdOnQgEAiwZMkSxo8fj2EYRKNRotEo3bp1o0+fPnzzzTdJ5x4wYIC93JC/x9Y/MgF07doVwB5C/8MPPzB8+PBqQdtxxx1nh14//PADDoejWo8Ka9hh1b/T9TFixIikawEziLMkhglghh05OTl4PB7755SamsqoUaP49ttvATNIePbZZ3G73axcuZJPPvmEBx98kMLCwmohXdXQrGPHjgQCgQZfh8Xv9zNt2jR++eUX7rzzTvvnGYlEKCoq4qabbuKMM85g9OjR3HLLLYwdOzapgHhdbrjhBh577DFGjx7NhRdeyFdffQWYvWruu+8+br75ZtLS0na67ZZNmzYxaNAge8rNzeW8886jbdu2zJ07NykIy8zMTAqjKioqKCgosF9ftbFeK1VrUR199NFomsaCBQtYs2YNeXl51Xryd+/eneHDh+/w9da3b1/79QOVr/mysrJq+y5evJhgMFjttV31uS11vZcs1u8+sdzFjiT25K+qrhpPl1xyCeeffz73338/o0eP5rDDDiMlJYWDDz64xjpezz33HAMGDODAAw+sd9tE6yc9pIQQjerII49kxowZbN26FbfbzXfffVdrV+Q333yTe+65hy1btpCZmcmAAQOSPoBYd5B58MEH+eijj3jjjTdwOp0ccsgh3HTTTUm9oAKBAF27duXuu+/mpZdeQlVrzt/LysowDMP+QJqoXbt21T5AVL3Di6qqtf4hV1WVSZMm8cQTT3DDDTfwv//9j9TUVA499NAa9xdCCCFqYn3J3NEt0jds2EBKSor9hfj444/nzTffZNmyZbRr144FCxbYQ8NKS0vRdZ1HHnnErjuVyO12Jz1O7PHQkL/HicdZf4utv5slJSV069at2nNbf5NLS0spKSkhKysr6R+NwKyXAzV/0d8RqwdToroKYRcXF/Puu+8mhXsWq/eJNQTvueeeo6Kigk6dOjFkyJBqP8eanquuzxI7smXLFqZNm8aaNWu49957OeSQQ+xtKSkpKIpi92KzjBs3jq+//pr8/PwaP/8kssKDAw44gKOPPppHHnmEAw88kFmzZnHEEUcwZsyYpJ5Nuq4TjUar1Qndkezs7KT6mi6Xi44dO9bYwz0lJSXpsfUaqKlXTqKSkhL7uRI5HA6ysrIoKyujuLgYoNbPhb///nudz1G1DdZr3qp3lsiq1Va1B1Pbtm13eO6q7yWL9dpqyB0PU1NTa+wJ5ff76wwbHQ4HV155JZdccgkbNmygffv2pKenc8YZZ1T7vRUXF7NgwQKuuOKKerdL7B0kkBJCNKq//OUvpKSk8P777+Pz+ejatSv77bdftf1++uknrr76as466yzOPfdcuwbAHXfcwcKFC+39OnTowI033sgNN9zAsmXLeP/993nkkUfIysqya0mA2Y38jz/+4Pzzz+fpp5+udqc/S1paGoqiJBUTteTl5SX9K9fOmDRpEnPnzuXLL7/kvffe46ijjqrxw6kQQghRm7Zt2zJs2DA++OADLrvsshr/kcXv9/PNN98wceJEe93o0aPJzs7mvffeIzs7G7fbzWGHHQZUhhVTpkyp8e5lO7pTWX3/HtclIyODvLy8auutdVlZWWRkZFBUVEQsFksKpbZv327v09jS0tI48MADOeecc6pts4KX+fPn8+STT3LTTTdx2GGH2V/kqxYU353+/PNPzj33XEKhEI8//jj7779/0vYePXpgGAaRSCTps4cVIFX9RzbL999/TygUSgqyHA4H/fv3Z/ny5WzZsoUlS5awZMmSaoW1582bx7x58/jkk0922GMpkcvlsutWNZT1Gqjr5jWAHZLk5eUl9cqzepJlZWXZn/tq+1y4O19vVi+vgoICevfuba9PvKlAQ1k/g4a0s1evXvzxxx/V1q9fv54hQ4bUetyCBQsIh8OMGzfOLogejUZZvnx5tdEAX331FdFoVGpHiWpkyJ4QolG5XC4OOeQQPvjgA957771ab9m7aNEidF3nkksuscOoWCxmd4XXdZ1FixZx4IEHsnTpUhRFYcCAAVx++eX069evWlHF7Oxs/vKXv3DkkUfyn//8p9auyz6fj/3224/33nsv6W55ZWVlfP7559VqXTVUly5dGD16NE8//TR//PFHjXc8EkIIIXZkxowZrFmzptrdW8H8e3nDDTcQDAaTCl1rmsaxxx7LZ599xvvvv88hhxxi97JITU1l4MCBrF69msGDB9vTPvvswwMPPFDnXbka8ve4Lvvvvz+LFi2q1vPrzTffJDs7mx49epCTk0M0Gq12116r6Ln1d7q2ntC7g3VnwQEDBtg/p/32248nn3ySjz76CDCLWfft25eTTjrJDqO2bdvG8uXLa+wds6u2bNnCOeecg6IovPDCC9XCKMAOlN55552k9dZd3GrqKQbwv//9j6uuuiqpl43f72fRokX079+f9u3b88orr1SbAE499VReeeUV2rdvv7sudYdcLhfZ2dnV7oJX9TWRk5MDVP95vPPOO8RiMUaOHEmvXr3Izs7m7bffTtpnw4YNLF68OGm4567ad999SUtLs19Dlg8//HCnz2ndSKhz5871Pmbs2LGsWrWKlStX2utWrlzJqlWrGDNmTK3HffDBB1x33XVEIhF73auvvkppaWlSTz2AJUuW0LFjxx3WwRN7H+khJYRodEcddRTTpk1DVdVaCxla/wJz8803c9JJJ1FSUsJzzz1n3z2koqKCgQMH4vF4uOqqq7jkkkto164d3377LX/88Qdnn312jee99tpr+eqrr+waCDWZOXMm5557LhdccAGTJ08mEokwf/58wuFwjbfXbqiTTz6ZK664gj59+iTVqBBCCCHqa9y4cVxzzTXccccd/PHHH5x00km0b9+ejRs38sILL/DHH39w2223VSucfPzxx/P444+jqmq1oXlXXHEFF1xwATNnzuS4446z76a3ZMkS+65kNdmZv8c1Oeecc3jzzTeZMmUKM2bMIDMzkzfeeIPvv/+e22+/HVVV+ctf/kJubi7//Oc/2bZtG/vuuy8//PADjzzyCCeeeKLdMyM9PZ38/Hy++OILBgwYsFsDkYsvvpjTTz+dadOm8de//hW3281LL73Exx9/zP333w+Yn2PmzZvH/PnzGTZsGOvWrePhhx8mHA43uD5UYWEh69evp2/fvrWGRrfeeisFBQXcdNNN+P1+Fi9ebG9LTU2lb9++5ObmctBBBzF79mwCgQD77LMPb7zxBj///DPz5s2z91+/fj2FhYV2bavzzjuP999/n4suuohzzz2XcDjMI488Qnl5OZdcckmdvZnat2+ftK3quRvLmDFj+Pnnn5PWWXdX/uijj/jLX/5C3759OfHEE7n//vsJBALsv//+/PHHH8yZM4fc3FzGjRuHqqpcccUVzJo1y35fFBUVMWfOHDIyMmrsJbezUlNTOe+887j//vvxer3k5OTwww8/8MILLwA7F7IuXLgQr9dr15uqz2vpqKOO4qGHHuL8889n5syZgHnDg379+nHkkUfa+/3++++4XC77PXf66afz3//+l2uuuYaTTz6ZZcuWcffdd3PUUUfZ4Z/lzz//tI8TIpEEUkKIRnfggQeSnp5Op06d6NOnT4375Obmcv311/PEE0/w/vvv065dO3Jzc5kzZw7Tp09n4cKFjB8/nscff9y+G05paSk9e/bk5ptvrrXnUfv27bniiiu4+eabeeONNzjhhBOq7TN69GieeOIJ7r//fq644gpcLhejRo3i3//+d7XirDtj/PjxKIoivaOEEELsknPOOYfhw4fz1FNP8e9//5vCwkKys7MZM2YMt912W41f+Pbdd1/69etHUVERo0ePTto2duxYHnvsMebMmcOll16K0+lk0KBBPPHEE3UGCG63u8F/j2uSnZ3NCy+8wN13382tt95KJBJh3333Zd68eRx88MGAWa/q4Ycf5v777+fJJ5+ksLCQrl27csUVVySFA5MmTeKLL75g+vTpXHrppUl3tdtV++67L8899xz33nsvV111FYZh0K9fP+bOnWu3c9q0aRQVFfH0008zd+5cOnXqxPHHH2+3v7S01A5IduTzzz9n1qxZPP300+Tm5lbbHg6H+fzzzwFqHB6Zk5PDM888A8B//vMf5syZY9/RsG/fvsyZMydpaOe8efN4/fXX+fPPPwHo06cPzz33HHfffTdXXXUV0WiUnJycWl9jdal67sZy+OGH89Zbb7Ft2za7p31ubi4HHnggd999N9999x3z58/ntttuo0ePHrz66qs88sgjtG/fnrPPPpuLL77YDoAmTZpESkoKDz/8MNOnTyc1NZVx48ZxxRVXVKs/taumTZuGYRi89NJLPPbYYwwdOpQrr7yS2bNn77AmVk2+/PJLJkyYYA/H3NFrCcweZk888QS33XYb1113HU6nkzFjxjBr1qykWmAzZsygS5cu9murX79+PPzww9x9991ceOGFtGvXjgsvvJBp06ZVe46CggL69+/f4OsRrZ9i7GwFPSGEEPXy7rvvctVVV/HFF1/UWqhSCCGEEKI1Ouyww3ZpGFp9GIbBcccdx+GHH86MGTMa9bl2l2g0yttvv01ubi6dOnWy1z/33HPceuutLFiwoN4hJpg3PTj00EN55ZVXGDhwYGM0WYjdTnpICSFEI/n444/55ZdfePHFF5k0aZKEUUIIIYTYq/zvf/9LKtjdWBRF4R//+AfXXnstU6ZMqXV42p7E4XDwyCOP8NRTT3HRRReRlZXF8uXLue+++zjhhBMaFEYBPP744xxxxBESRokWRXpICSFEI3nyySe57777GDly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9NMZPnw4hx9+OC+//HIztrD12B2v27fffptDDjmEoUOHMn36dAoLCxu72btsd7zGRo0aRf/+/ZOm8vLyxm76Tqvpmm+99dZq1/Dss8/Weo4nn3yScePGMXz4cK699loCgUBTNH2XVL3ua665pto19+/fv9a7XJaUlFTbNzc3tykvod7q+szemt/XdV13a35f13XdrfW9Xds1t+b3NcC6des499xzGT58OBMmTODRRx+1t+2R721DGDfffLNx7LHHGr/++qvx4YcfGsOHDzfee++95m5Wi6PrunHqqaca5513nrF8+XLjxx9/NA499FDjX//6V3M3rUV7++23jX79+hlXX311czelRbvuuuuMww47zFiyZInx7bffGrm5ucYLL7zQ3M1qkU499VTj73//u7FmzRrjo48+MoYOHWp8+OGHzd2sFiMYDBrTp083+vXrZ3z//feGYZj//zz22GONmTNnGitXrjQeeughY+jQocamTZuaubV7tpp+ltu3bzdGjRpl3H333caaNWuMt99+2xg8eLDx2WefNW9jW7jd8bpdsmSJMWTIEOP11183/vjjD+PMM880Lrjggqa8jAbbHa+xrVu3Gv369TPWr19vbN++3Z50XW/CK6m/mq7ZMAxjypQpxsMPP5x0DRUVFTWe4/333zdGjhxpfPrpp8aSJUuMo446yrjpppua6hJ2Sk3XXVpamnS9ixYtMvbbbz/jo48+qvEcP/30k5GTk5N0TH5+flNeRr3U9Zm9Nb+v67ru1vy+3tF3tNb43q7rmlvr+9owDCMWixmHHXaYMXPmTGPNmjXG559/bowYMcJ4880399j39l4fSJWXlxuDBw9O+oM7d+5c48wzz2zGVrVMK1euNPr162fk5eXZ69566y1j7Nixzdiqlq2oqMj4y1/+Ypx00kkSSO2CoqIiY+DAgcaCBQvsdQ8//LBxzTXXNGOrWqbi4mKjX79+xp9//mmvmzFjxh75YWRPtGLFCuO4444zjj322KQvPd9++60xbNgwo7y83N73b3/7m3H//fc3V1P3eLX9LJ9//nnjiCOOSNr3uuuuM6644ormaGarsLtet//4xz+S/pZt3rzZ6N+/v7F+/frGvYCdtLteY998840xZsyYRm/v7lDbNRuGYYwbN8746quv6nWeyZMnJ70OfvzxR2PIkCG1fsltbnVdd6KpU6caV155Za3n+e9//2ucdtppjdXM3aauz+yt+X1d13W35vf1jr6jtcb3dkO+l7aW97VhGMa2bduMyy67zCgrK7PXTZ8+3bjhhhv22Pf2Xj9kb9myZUSjUYYPH26vGzlyJEuWLEHX9WZsWcuTnZ3No48+Srt27ZLW+/3+ZmpRy/fvf/+b448/nr59+zZ3U1q0hQsXkpqaSk5Ojr3uggsuYPbs2c3YqpbJ4/Hg9Xp57bXXiEQirF69mp9//pkBAwY0d9NahB9++IHc3FxeeumlpPVLlixh4MCB+Hw+e93IkSNZvHhxE7ew5ajtZ2l1y69K/hbtvN31ul2yZAmjRo2yH3fq1InOnTuzZMmSRmn3rtpdr7GVK1fSq1evRmnj7lbbNfv9frZt20bPnj13eI5YLMYvv/yS9LseNmwYkUiEZcuW7e4m7xa1XXei7777jh9//JErrrii1n1WrlxZr59Rc6vrM3trfl/Xdd2t+X1d13W31vd2fb+Xtqb3NUD79u257777SE1NxTAMFi5cyI8//khOTs4e+9527NaztUB5eXlkZWXhcrnsde3atSMUClFcXEybNm2asXUtS3p6OuPGjbMf67rOs88+ywEHHNCMrWq5vvvuO3766SfeeustbrzxxuZuTou2YcMGunTpwhtvvMFDDz1EJBJh0qRJXHTRRajqXp/LN4jb7eb666/nlltu4emnnyYWizFp0iROOeWU5m5aizB58uQa1+fl5dG+ffukdW3btmXr1q1N0awWqbafZdeuXenatav9uKCggHfeeYdLLrmkqZrW6uyu1+327dtb1Ot8d73GVq1aRSAQ4KyzzmLNmjUMGDCAa6+9do/8MlvbNa9atQpFUXjooYf48ssvyczM5JxzzuHEE0+stm9paSmhUCjpd+1wOMjMzGxxv+tE8+fP58QTT6RTp0617rNq1Sqi0Sgnn3wy27ZtY9SoUcyaNava67651fWZvTW/r+u67tb8vq7rulvre7u+30tb0/u6qokTJ7J582YOOuggDj/8cG6//fY98r29138TCwQCSWEUYD8Oh8PN0aRW48477+T333/n8ssvb+6mtDihUIgbbriB66+/Ho/H09zNafEqKipYt24dL774IrNnz+bqq6/mmWeekWLcO2nVqlUcdNBBvPTSS8yePZv333+fN998s7mb1aLV9rdI/g7tmmAwyCWXXEK7du047bTTmrs5rU5DX7fBYLDVvc7r8xpbvXo1JSUlXHTRRcybNw+Px8OUKVNaVK+91atXoygKvXv3Zv78+Zxyyilcd911fPTRR9X2DQaDAK3qd71hwwa+//57zjrrrDr3W716NX6/n1mzZnHvvfeyfft2LrzwQmKxWBO1dOckfmbfm97XtX1Xae3v68Tr3lve2zX9rlv7+/r+++/noYce4o8//mD27Nl77Ht7r+8h5Xa7q/1QrccSBOy8O++8k6eeeop7772Xfv36NXdzWpw5c+aw3377JSX7Yuc5HA78fj933303Xbp0AWDz5s288MILTJ06tZlb17J89913vPLKK3zxxRd4PB4GDx7Mtm3bePDBBznuuOOau3ktltvtpri4OGldOByWv0O7oLy8nIsvvpi1a9fy/PPP4/V6m7tJrU5DX7e1feZqqb+b+r7GHnvsMSKRCCkpKQDcddddjB8/ns8++4xjjz22KZu800444QQOOuggMjMzAdh3331Zu3YtL7zwAoceemjSvm63G6j+D7st+Xf9wQcfMGDAgB2WUHjnnXdQFMV+D9x///2MHTuWJUuWMGLEiKZoaoNV/cy+t7yva/uu0trf11Wve5999mn17+3aftet+X0NMHjwYMDs6HDllVdy0kknVbsj4p7w3t7re0h16NCBoqIiotGovS4vLw+Px0N6enoztqzluuWWW3jiiSe48847Ofzww5u7OS3SO++8w8cff8zw4cMZPnw4b731Fm+99VZSrTNRf9nZ2bjdbjuMAujVqxdbtmxpxla1TL/++is9evRI+uM1cOBANm/e3Iytavk6dOhAfn5+0rr8/Pw9vjv4nsrv93PuueeyYsUKnnrqqRZT+6Glaejrtrb9s7OzG62NjaUhrzGXy2V/aQXzQ37Xrl3Ztm1bE7R091AUxf7Caundu3eN15CZmYnb7U76XUejUYqLi1vk7xrgq6++4uCDD97hfl6vN+nvY9u2bcnMzNxjf9c1fWbfG97XtX1Xae3v65quu7W/t+v6Xtoa39f5+fl8/PHHSev69u1LJBIhOzt7j3xv7/WB1IABA3A4HEnFvBYuXMjgwYOltsxOmDNnDi+++CL33HMPRx99dHM3p8V65plneOutt3jjjTd44403mDhxIhMnTuSNN95o7qa1SEOHDiUUCrFmzRp73erVq5MCKlE/7du3Z926dUn/YrJ69eqkugui4YYOHcpvv/1md4cH82/R0KFDm7FVLZOu68yYMYONGzfyzDPPsM8++zR3k1qthr5uhw4dysKFC+3HW7ZsYcuWLS3udd6Q15hhGBxyyCG89tpr9jprGHnv3r2borm7xX/+8x+mTJmStG7ZsmU1XoOqqgwePDjpd7148WIcDgf77rtvYzd1tzMMg19++WWHPSH8fj/7778/33//vb1u27ZtFBUV7ZG/69o+s7f293Vt193a39e1XXdrfm/X9b20tb6vN27cyIwZM5LCsl9//ZU2bdowcuTIPfK9vdcnLl6vlxNOOIEbb7yRpUuX8vHHH/P4449z9tlnN3fTWpxVq1Yxb948zj//fEaOHEleXp49iYbp0qULPXr0sKeUlBRSUlLo0aNHczetRerduzcTJkxg1qxZLFu2jK+++or58+fz17/+tbmb1uJMnDgRp9PJP//5T9asWcOnn37KQw89tMPx96JuOTk5dOrUiVmzZrFixQrmz5/P0qVLOfnkk5u7aS3OK6+8woIFC7j11ltJT0+3/w5VHYIidt2OXrfhcJi8vDy7zsZf//pX/ve///Hyyy+zbNkyrrrqKiZMmEC3bt2a8zIabEevscTrVhSFCRMm8MADD7BgwQJWrFjBVVddRceOHRk/fnzzXkgDHHTQQfz444889thjrF+/nueff5433njDHvYeDAaTPu9NnjyZxx57jI8//pilS5dy4403cuqpp+7Rw3pqs2nTJsrLy2sc1pN43ampqYwcOZLZs2ezdOlSfvvtNy6//HLGjRtH//79m7rZdarrM3trfl/Xdd2t+X1d13W31vf2jr6Xtsb3NZjD9AYNGsS1117LypUr+eKLL7jzzju58MIL99z3tiGMiooK46qrrjKGDRtmjB071njiiSeau0kt0sMPP2z069evxknsmquvvtq4+uqrm7sZLVppaanxj3/8wxg2bJgxevRo44EHHjB0XW/uZrVIK1asMKZMmWKMGDHCOOSQQ4wnnnhCfpY7oV+/fsb3339vP167dq1xxhlnGPvtt59x9NFHG998800ztq5lSfxZTp06tca/Q2eeeWYzt7J1aMjr9vvvvzf69etnbNiwwV736quvGuPHjzeGDRtmTJ8+3SgsLGzS9u+shrzGql53MBg0Zs+ebYwZM8YYOnSoMW3aNGPz5s3Ndi31VfV3/dFHHxnHHnusMXjwYOOII44wPvjgA3vbq6++Wu3z3sMPP2yMHj3aGDlypDFr1iwjGAw2Wdt3RdXrXrx4sdGvXz8jFApV27fqdRcXFxvXXHONkZubawwfPty48sorjeLi4iZpd0Ps6DN7a31f13Xdrfl9vaPfd2t8b+/omlvj+9qydetWY/r06caIESOMMWPGGA8++KD9OX1PfG8rhmEYuzfiEkIIIYQQQgghhBCidnv9kD0hhBBCCCGEEEII0bQkkBJCCCGEEEIIIYQQTUoCKSGEEEIIIYQQQgjRpCSQEkIIIYQQQgghhBBNSgIpIYQQQgghhBBCCNGkJJASQgghhBBCCCGEEE1KAikhhBBCCCGEEEII0aQkkBJCCCGEEEIIIYQQTUoCKSFEi9C/f39mzpxZbf1rr73GxIkTm6FFQgghhBBCCCF2lgRSQogW4+233+a7775r7mYIIYQQQgghhNhFEkgJIVqMLl26cPPNNxMOh5u7KUIIIYQQQgghdoEEUkKIFuPvf/8727Zt47HHHqt1n61bt3LZZZeRk5NDbm4ut956qx1gvfbaa5x11lncf//95ObmMmrUKGbPno1hGPbxL774IhMnTmT48OGcddZZ/Pnnn41+XUIIIYQQQgixt5FASgjRYnTo0IFLL72Uhx56iA0bNlTbHg6H+dvf/kYgEOCZZ57hvvvu4/PPP+eOO+6w91m0aBFr1qzhhRde4LrrruPpp5/m22+/BeDTTz9lzpw5XHfddbz++uuMHDmSs88+m5KSkia7RiGEEEIIIYTYG0ggJYRoUc466yx69OjBbbfdVm3bV199xbZt27jzzjvp378/o0eP5vrrr+eFF16gvLwcgFgsxi233ELv3r05/vjj2Xffffnll18AePTRR5k2bRoHHXQQPXv25O9//ztdunThzTffbNJrFEIIIYQQQojWztHcDRBCiIbQNI0bb7yRyZMn8/HHHydtW7VqFT179iQjI8NeN2LECKLRKOvXrwegbdu2pKam2ttTU1OJRqP28XfeeSf33HOPvT0UCrF27dpGvCIhhBBCCCGE2PtIICWEaHFGjBjBSSedxG233cZ5551nr3e73dX2jcViSXOXy1VtH6uGVCwW49prr2X06NFJ2xMDLCGEEEIIIYQQu06G7AkhWqQrr7ySioqKpALnvXr1Yu3atRQXF9vrFi9ejMPhoHv37js8Z69evdi6dSs9evSwp4ceeojFixc3whUIIYQQQgghxN5LAikhRIuUlZXFlVdeyaZNm+x1Y8aMoVu3blx11VX8+eeffP/999xyyy0cc8wxpKen7/Cc55xzDk899RRvvPEG69ev58477+S9996jT58+jXkpQgghhBBCCLHXkSF7QogW6+STT+bVV19l+/btgFlfat68edxyyy2ceuqppKSkcOyxx3LFFVfU63xHHXUU+fn53H///eTn59O3b18efPBBevbs2YhXIYQQQgghhBB7H8WwiqcIIYQQQgghhBBCCNEEZMieEEIIIYQQQgghhGhSEkgJIYQQQgghhBBCiCYlgZQQQgghhBBCCCGEaFISSAkhhBBCCCGEEEKIJiWBlBBCCCGEEEIIIYRoUhJICSGEEEIIIYQQQogmJYGUEEIIIYQQQgghhGhSEkgJIYQQQgghhBBCiCYlgZQQQgghhBBCCCGEaFISSAkhhBBCCCGEEEKIJiWBlBBCCCGEEEIIIYRoUhJICSGEEEIIIYQQQogmJYGUEEIIIYQQQgghhGhSEkgJIYQQQgghhBBCiCYlgZQQQgghhBBCCCGEaFISSAkhhBBCCCGEEEKIJiWBlBBCCCGEEKLFMwyjuZsg9kDyuhBizyWBlBAiyVlnncVZZ53V6M+zceNG+vfvz2uvvdag4xYsWED//v1ZsGBBI7VszzBx4kSuueaa5m6GEEKIPczChQu55JJLGDNmDIMHD+bggw/mn//8J6tWrWrupiV54IEH6N+/f5M938KFC7ngggua7Pn2BL/99hvnn38+BxxwALm5uUydOpXffvstaR/DMHjsscc47LDDGDx4MIcffjjPPfdcg57nX//6V7XPhtbvt7bphx9+qPf5azrXwIEDyc3NZfr06axYsaLe53r88ce58sorASgtLeWqq67ip59+qvfxu+Kaa65h4sSJde7z2muv0b9/fzZu3Fjv89bnmKKiIiZMmMCGDRvqfd5E5eXl3HTTTYwZM4bhw4dz/vnns3r16h0e9+eff3LeeeeRk5PD2LFjufrqq8nPz0/aZ9u2bcycOZOcnBxGjBjBueeeyy+//LJT7RStj6O5GyCEEEIIIYTYsfnz53PPPfcwduxYrr32WrKzs1m3bh0vvPACJ554IrNnz+boo49u7mY2i5dffnmPC+Ua07p16zjzzDPZb7/9uO2221AUhccff5zJkyfz+uuv07t3bwDuuOMOnnnmGS699FIGDx7Ml19+yc0334zD4eC0007b4fM8/vjjPPHEE+Tk5CStP+WUUxg3blzSukgkwuWXX052djZDhgxp8DW99NJL9nIsFmPz5s3ce++9nHHGGbzzzjtkZ2fXefyqVat4+OGHefPNNwH4448/+N///sdJJ53U4LY0lgkTJvDSSy/Rvn373XrerKwspkyZwrXXXsvTTz+NoigNOn7mzJksWbKEf/zjH6SmpjJnzhzOPvts3nnnHTIyMmo8Jj8/n7/97W906tSJ2bNnEwqFuOuuuzj//PP573//i9PppKysjL/+9a8EAgEuu+wyevbsyQcffMCZZ57JM888s1OvE9G6SCAlhBBCCCHEHu6zzz7j7rvv5pJLLmHGjBn2+pycHE444QRmzpzJNddcQ79+/dhnn32asaWiKTzzzDN4vV4efvhhfD4fAAcccAATJ07k2Wef5frrr2fjxo08+eSTXHfddUyePBmA0aNHs2XLFr7++us6A6kNGzbw73//m08//ZS0tLRq2zt27EjHjh2T1s2ePZvy8nJefPFFPB5Pg69p2LBhSY9HjhxJp06dOOOMM3j99dd32APuzjvv5JhjjqFDhw4Nfu6m0qZNG9q0adMo5548eTIPPvggH330EYcddli9j1u0aBGfffYZ8+fPZ/z48QCMGjWKgw8+mOeff56LLrqoxuM++eQTioqK+O9//0v37t0BSEtL47zzzmPRokXk5OTw6quvsmnTJp5//nlGjhwJwJgxYyguLub222/nxRdf3MWrFi2dDNkTQuyUb775hsmTJzNy5Ehyc3OZOXMmW7ZsSdpn9erVzJgxg5ycHPbff3+mTZtW679eGobBrFmzGDJkCF9//bW9/sUXX+Twww9nyJAhnHnmmWzevLnasWvXruXSSy9lzJgxDBs2jLPOOouFCxcCUFxczMCBA3nyySft/bds2UL//v35xz/+Ya/TdZ3c3Fwefvhhezjhe++9x6WXXsrw4cPJycnhn//8JxUVFXX+XLZv386sWbMYP348Q4YM4eSTT+aTTz5J2qd///4899xz/N///R85OTkMHz6cyy67rFoXZ8tJJ53E6aefXm39lClTOOecc+psjxBCiNZhzpw59O7dm+nTp1fb5nQ6ufnmm9E0jUceeQSAqVOnMmnSpGr7XnzxxRx33HH2459++okzzzyToUOHkpOTw9VXX01hYaG9/bXXXmPgwIG8/PLLjBkzhpycHFauXMn69eu58MILyc3NZejQoZx22ml88cUX1Z7v888/57jjjrOHi73xxhtJ2+vzdzMUCjF37lyOOOIIBg8ezGGHHcb8+fPRdR0wh0q9/vrrbNq0qc5yAA888ABHHHEEH330EccccwyDBw/m+OOPZ9GiRSxevJhTTjmFIUOGcMwxx/Ddd98lHbt8+XKmTZvGiBEjGDFiBNOnT682PGrZsmXMmDGDAw44gEGDBjFu3DhuvfVWgsGgvU99PgNYQ7TqKk/Qu3dvpk6daodRAD6fj44dO7J+/XoAPv74Y9xuNyeffHLSsffddx8PPPBArecGM1xat24dTz31FAMGDKhzXzCHbj3zzDPMmDGDrl277nD/+tpvv/0A2LRpE2D+Dg899FDmzJljDxMrKSlh+fLlfP755xxzzDGAWeLh7LPPBuDss89OGnL47rvvMmnSJIYPH86YMWO4/vrrKSkpSXreX375hXPPPZfc3FxGjBjBhRdeWO+hg6+99hqHH344gwcP5rjjjkt6X9Q0/O7111/nqKOOsvf/7rvvGDhwYLXX8ZIlSzj99NMZPHgwEyZM4NFHH03a7nK5OPzww3n44YftdVapi7pKZHz99df4fD7Gjh1rr2vTpg37779/je9pSygUAiA1NdVel5mZCZifv8HstZaRkWGHUZbc3FwWLVpU7ecu9j4SSAkhGuyNN95g6tSpdOrUiXvuuYdZs2axaNEiTjvtNAoKCgBzvPhpp53G2rVrufHGG7nzzjvtrr3WH6lEt956K2+//TZz5syx/yA+++yz3HDDDYwfP5558+YxdOhQrrvuuqTjVq5cyaRJk9i4cSP//Oc/ueuuu1AUhb/97W/88MMPZGZmMmzYML799lv7GOtDZmJNgSVLllBcXMyECRPsdTfccANdunRh3rx5nHvuubzyyis8+OCDtf5c8vPzOfnkk/npp5+4/PLLeeCBB+jSpQvTp0+3u49b7r33XnRd55577uGqq67is88+4/bbb6/xvCeffDKLFi1i3bp19rotW7awYMGCGr9sCCGEaF0KCwv59ddfOeigg2odipOZmcmBBx5ohznHHXccv/32W9LfjtLSUr788kuOP/54AH788UemTJmCx+Ph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sIPBd955B0VFRRg/fjwuvvhiLF26FIqiYNasWdi+fTsefPBBjB071vlj39VXX40LL7wQF198Mc4880xomobly5dDVVVcdtllPXbO9hX4rrnmGtx88834r//6L6xfvx5Lly4FsHch65o1awDAuWJ1JBLBxo0bMWLECKd7aaYjjjgC06ZNwy9/+Uv88pe/RHFxMR5++GEUFBQ4VxsE+JWtVVV1hte44oorcNlll+GKK67AaaedBlVV8fTTT6O2thb33nsvAODggw/G4YcfjkWLFuFXv/oVJEnCAw88AEmScPnll3f78ZGBhwIpQkg73333HRYvXtyu/bTTTsORRx6JuXPnIhgM4tFHH8Vll12GUCiEY445BgsWLHDGdBg8eDBeeOEF3HPPPbjuuuvg8Xgwffp03H///SgqKspaVn399dfjgw8+wI033oinnnoKc+bMgSiKWLZsGf70pz+huroav/nNb7BgwQLnNuPGjcMLL7yA++67DwsXLoQgCDj00EPxzDPPtBv8cfr06WkVUrIsY+rUqVkHNN8bFRUVePHFF3Hvvffitttug6ZpGD9+PJYtW4b//M//3OfjV1VVYfz48SgvL0dVVdU+H48QQkh+Of/88zF58mQ8/fTTuOuuu9DU1ISKigocddRRuP32251wxm38+PGorq5Gc3MzZsyYkbbt6KOPxuOPP44lS5Zg/vz5UBQFEydOxJNPPtlpOOH1evHEE0/g3nvvxe233462tjaMGjUKv/nNbzB37twuP56u/L8pCAIeffRRPPTQQ3jqqafQ1NSEYcOGYcGCBWld6ObOnYt3330Xl112GebPn4+LL764y+exJ+PHj8fzzz+P+++/H7/61a/AGEN1dTWWLl3qnOcll1yC5uZmPPPMM1i6dCkGDx6Mk08+2Tn/trY2FBYWdun+3nnnHSxcuBDPPPNM1uEEVFXFO++8AwBZu0dOmzYNzz77LADgwQcfxJIlS/Dkk0+iqakJY8eOxZIlS9K6di5btgx//OMf8c0333T3qUFDQ0On4wC9/PLLWLJkCf7+97/3aves4447DkuXLsXnn3/uDFA/btw4zJkzB88//zzef/99vP76606A+txzz+H3v/89iouLccIJJ+DKK690qgdnzJiBJ598Eg899BAWLFgAj8eDqVOn4q677mo3aP+++uEPf4hYLIbHH38cK1aswLhx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", "text/plain": [ "

    " ] @@ -468,13 +521,16 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ + "mask tensor(0.)\n", + "lockdown tensor(1.)\n", + "mask_eff tensor(0.)\n", "dict_keys(['lockdown', 'mask', 'lockdown_efficiency', 'mask_efficiency', 'joint_efficiency', 'beta', 'gamma', 'S', 'I', 'R', 'l', 'overshoot', 'os_too_high'])\n" ] } @@ -509,7 +565,7 @@ }, { "cell_type": "code", - "execution_count": 73, + "execution_count": 22, "metadata": {}, "outputs": [], "source": [ @@ -517,8 +573,8 @@ " supports=supports,\n", " alternatives=alternatives,\n", " antecedents=antecedents,\n", - " antecedent_bias=-0.5,\n", - " # witnesses=witnesses,\n", + " antecedent_bias=0.5,\n", + " witnesses={},\n", " consequents=consequents,\n", " consequent_scale=1e-8,\n", " # witness_bias=0.2,\n", @@ -529,225 +585,298 @@ }, { "cell_type": "code", - "execution_count": 74, + "execution_count": 23, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mask tensor([[1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.]])\n", + "lockdown tensor([[1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.]])\n", + "mask_eff tensor([[[0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000]],\n", + "\n", + " [[0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000]],\n", + "\n", + " [[0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000]],\n", + "\n", + " [[0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000]],\n", + "\n", + " [[0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000]],\n", + "\n", + " [[0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000]],\n", + "\n", + " [[0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000]],\n", + "\n", + " [[0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000]],\n", + "\n", + " [[0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000]],\n", + "\n", + " [[0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000]],\n", + "\n", + " [[0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000]],\n", + "\n", + " [[0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000]],\n", + "\n", + " [[0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000]],\n", + "\n", + " [[0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000]],\n", + "\n", + " [[0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000]],\n", + "\n", + " [[0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000]],\n", + "\n", + " [[0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000]],\n", + "\n", + " [[0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000]],\n", + "\n", + " [[0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000]],\n", + "\n", + " [[0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000]]])\n", + "mask tensor([[1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.]])\n", + "lockdown tensor([[1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.],\n", + " [1., 1., 1.]])\n", + "mask_eff tensor([[[0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000]],\n", + "\n", + " [[0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000]],\n", + "\n", + " [[0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000]],\n", + "\n", + " [[0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000]],\n", + "\n", + " [[0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000]],\n", + "\n", + " [[0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000]],\n", + "\n", + " [[0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000]],\n", + "\n", + " [[0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000]],\n", + "\n", + " [[0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000]],\n", + "\n", + " [[0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000]],\n", + "\n", + " [[0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000]],\n", + "\n", + " [[0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000]],\n", + "\n", + " [[0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000]],\n", + "\n", + " [[0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000]],\n", + "\n", + " [[0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000]],\n", + "\n", + " [[0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000]],\n", + "\n", + " [[0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000]],\n", + "\n", + " [[0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000]],\n", + "\n", + " [[0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000]],\n", + "\n", + " [[0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000],\n", + " [0.1000, 0.1000, 0.1000]]])\n" + ] + } + ], "source": [ - "logp, tr, mwc, lw = importance_infer(num_samples=1000)(query)()" + "logp, tr, mwc, lw = importance_infer(num_samples=20)(query)()" ] }, { "cell_type": "code", - "execution_count": 76, + "execution_count": 25, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "tensor([ 1.6115e+01, -inf, -inf, -inf, -inf,\n", - " -inf, 1.6115e+01, -inf, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " 1.6115e+01, 1.6115e+01, -inf, -inf, -inf,\n", - " -inf, -inf, -inf, 1.6115e+01, -5.0000e+15,\n", - " -inf, -5.0000e+15, -inf, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " -inf, -5.0000e+15, -inf, -inf, -inf,\n", - " -5.0000e+15, -inf, -5.0000e+15, -inf, -inf,\n", - " -inf, -inf, -5.0000e+15, -inf, 1.6115e+01,\n", - " -inf, -inf, -5.0000e+15, -inf, 1.6115e+01,\n", - " -5.0000e+15, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, 1.6115e+01, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, 1.6115e+01,\n", - " 1.6115e+01, -inf, -inf, -inf, -5.0000e+15,\n", - " -inf, -inf, -inf, -inf, -5.0000e+15,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " 1.6115e+01, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, -inf, -5.0000e+15, -inf,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, -5.0000e+15,\n", - " -inf, -inf, -inf, 1.6115e+01, 1.6115e+01,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " -inf, 1.6115e+01, -inf, 1.6115e+01, -inf,\n", - " -inf, -inf, -inf, -inf, -5.0000e+15,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, -5.0000e+15,\n", - " -inf, 1.6115e+01, -inf, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " -5.0000e+15, 1.6115e+01, -inf, 1.6115e+01, -inf,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, -5.0000e+15, -inf, -inf,\n", - " -inf, -inf, -inf, 1.6115e+01, -inf,\n", - " -5.0000e+15, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " -inf, -5.0000e+15, -inf, -inf, -inf,\n", - " -inf, 1.6115e+01, -inf, -5.0000e+15, -inf,\n", - " 1.6115e+01, -inf, -inf, -inf, -inf,\n", - " -inf, -5.0000e+15, -inf, -inf, -5.0000e+15,\n", - " -5.0000e+15, -inf, -inf, -inf, -inf,\n", - " -5.0000e+15, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " -inf, 1.6115e+01, -inf, -inf, -inf,\n", - " -inf, -inf, -5.0000e+15, 1.6115e+01, -inf,\n", - " -inf, -5.0000e+15, -inf, -5.0000e+15, -inf,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, -5.0000e+15,\n", - " -inf, -5.0000e+15, 1.6115e+01, -5.0000e+15, -inf,\n", - " -inf, -inf, -inf, -inf, 1.6115e+01,\n", - " -inf, -inf, -5.0000e+15, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, 1.6115e+01,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " -inf, -5.0000e+15, -inf, -inf, -inf,\n", - " 1.6115e+01, -5.0000e+15, -inf, 1.6115e+01, -inf,\n", - " 1.6115e+01, -inf, -5.0000e+15, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, -5.0000e+15,\n", - " -inf, -inf, -5.0000e+15, -5.0000e+15, -inf,\n", - " -inf, -inf, -inf, -inf, -5.0000e+15,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " -inf, 1.6115e+01, 1.6115e+01, -inf, 1.6115e+01,\n", - " 1.6115e+01, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, 1.6115e+01, -inf, -inf,\n", - " -inf, 1.6115e+01, -5.0000e+15, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " 1.6115e+01, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " 1.6115e+01, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, 1.6115e+01, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, 1.6115e+01,\n", - " -inf, -inf, -5.0000e+15, -inf, 1.6115e+01,\n", - " -inf, -inf, 1.6115e+01, -inf, -inf,\n", - " -inf, 1.6115e+01, -inf, -inf, -inf,\n", - " -inf, -inf, -5.0000e+15, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, -5.0000e+15, -inf, -inf,\n", - " -inf, -inf, -inf, -5.0000e+15, -inf,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, -inf, 1.6115e+01, -inf,\n", - " -5.0000e+15, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, -inf, -5.0000e+15, -inf,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " -5.0000e+15, -inf, 1.6115e+01, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " 1.6115e+01, -inf, -5.0000e+15, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, 1.6115e+01,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " -5.0000e+15, -inf, -5.0000e+15, -5.0000e+15, -inf,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, -5.0000e+15, 1.6115e+01, -inf,\n", - " -inf, -5.0000e+15, 1.6115e+01, -inf, -inf,\n", - " 1.6115e+01, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, 1.6115e+01, -inf, -inf,\n", - " 1.6115e+01, -5.0000e+15, -5.0000e+15, 1.6115e+01, -inf,\n", - " -inf, 1.6115e+01, -inf, -inf, -inf,\n", - " -5.0000e+15, -5.0000e+15, -inf, -inf, -inf,\n", - " 1.6115e+01, 1.6115e+01, -inf, -5.0000e+15, -inf,\n", - " -inf, -inf, -inf, -inf, -5.0000e+15,\n", - " -5.0000e+15, -5.0000e+15, -inf, -inf, -inf,\n", - " -inf, 1.6115e+01, -inf, -inf, -inf,\n", - " -inf, 1.6115e+01, -inf, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, -5.0000e+15, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " 1.6115e+01, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, 1.6115e+01, -inf, -inf,\n", - " -inf, -inf, -inf, 1.6115e+01, -inf,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, 1.6115e+01,\n", - " -inf, -inf, -inf, -inf, -5.0000e+15,\n", - " -inf, -inf, -5.0000e+15, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " -5.0000e+15, -inf, -inf, -inf, -inf,\n", - " -inf, -5.0000e+15, -inf, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " 1.6115e+01, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " -inf, 1.6115e+01, -inf, -inf, -inf,\n", - " -inf, -5.0000e+15, -inf, -5.0000e+15, -inf,\n", - " 1.6115e+01, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, 1.6115e+01, -inf, -inf,\n", - " -inf, -5.0000e+15, -5.0000e+15, -inf, -inf,\n", - " -inf, -5.0000e+15, -inf, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, -inf, 1.6115e+01, -inf,\n", - " 1.6115e+01, -inf, -inf, -inf, -5.0000e+15,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, -5.0000e+15, -inf, -inf,\n", - " -inf, -inf, -inf, -5.0000e+15, -inf,\n", - " -inf, -inf, -5.0000e+15, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " -inf, -5.0000e+15, -inf, -inf, -inf,\n", - " -inf, -inf, -inf, 1.6115e+01, -inf,\n", - " -inf, 1.6115e+01, -inf, -5.0000e+15, -inf,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " -inf, -5.0000e+15, -inf, -inf, -inf,\n", - " -5.0000e+15, -5.0000e+15, -inf, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " -inf, -5.0000e+15, -inf, -inf, -inf,\n", - " -inf, -inf, -5.0000e+15, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, -inf, -5.0000e+15, -inf,\n", - " -inf, 1.6115e+01, 1.6115e+01, -5.0000e+15, 1.6115e+01,\n", - " -inf, -inf, -inf, 1.6115e+01, -inf,\n", - " -inf, 1.6115e+01, -inf, 1.6115e+01, -inf,\n", - " -5.0000e+15, -inf, -inf, 1.6115e+01, -5.0000e+15,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, 1.6115e+01,\n", - " -5.0000e+15, -inf, -inf, -inf, -inf,\n", - " 1.6115e+01, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, 1.6115e+01, -inf, -inf,\n", - " -inf, -5.0000e+15, -inf, -inf, -5.0000e+15,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, -5.0000e+15, -inf, -inf,\n", - " -inf, -5.0000e+15, 1.6115e+01, -inf, -inf,\n", - " -inf, -5.0000e+15, -inf, 1.6115e+01, -inf,\n", - " -inf, 1.6115e+01, -inf, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, 1.6115e+01,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, 1.6115e+01, -inf, -5.0000e+15,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, 1.6115e+01, -inf, -inf,\n", - " -inf, -inf, -inf, 1.6115e+01, -inf,\n", - " -inf, -inf, -inf, -inf, 1.6115e+01,\n", - " -inf, 1.6115e+01, -inf, 1.6115e+01, -inf,\n", - " -5.0000e+15, -inf, -5.0000e+15, -inf, -5.0000e+15,\n", - " -5.0000e+15, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, -5.0000e+15,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, -inf,\n", - " 1.6115e+01, -inf, -inf, -inf, -inf,\n", - " -inf, -5.0000e+15, -inf, -inf, -inf,\n", - " -5.0000e+15, -inf, -5.0000e+15, -inf, -inf,\n", - " -inf, -inf, -5.0000e+15, -inf, -inf,\n", - " 1.6115e+01, -inf, -inf, -inf, -inf,\n", - " -inf, -inf, -inf, -inf, -inf])\n", - "tensor(1000)\n", - "torch.Size([1000, 1, 1, 1, 1, 1, 1, 1, 1, 1])\n", - "tensor(907599.)\n" + "tensor([-4.0500e+15, -4.0500e+15, -4.0500e+15, -4.0500e+15, -4.0500e+15,\n", + " -4.0500e+15, -4.0500e+15, -4.0500e+15, -4.0500e+15, -4.0500e+15,\n", + " -4.0500e+15, -4.0500e+15, -4.0500e+15, -4.0500e+15, -4.0500e+15,\n", + " -4.0500e+15, -4.0500e+15, -4.0500e+15, -4.0500e+15, -4.0500e+15])\n", + "tensor(20)\n", + "torch.Size([])\n", + "tensor(0.)\n", + "tensor([0.0266, 0.0287, 0.0337, 0.0285, 0.0349, 0.0267, 0.0318, 0.0271, 0.0300,\n", + " 0.0428, 0.0509, 0.0490, 0.0360, 0.0190, 0.0333, 0.0356, 0.0369, 0.0274,\n", + " 0.0296, 0.0280])\n", + "tensor([0.0266, 0.0287, 0.0337, 0.0285, 0.0349, 0.0267, 0.0318, 0.0271, 0.0300,\n", + " 0.0428, 0.0509, 0.0490, 0.0360, 0.0190, 0.0333, 0.0356, 0.0369, 0.0274,\n", + " 0.0296, 0.0280])\n", + "tensor([0.0266, 0.0287, 0.0337, 0.0285, 0.0349, 0.0267, 0.0318, 0.0271, 0.0300,\n", + " 0.0428, 0.0509, 0.0490, 0.0360, 0.0190, 0.0333, 0.0356, 0.0369, 0.0274,\n", + " 0.0296, 0.0280])\n", + "tensor([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 0., 1., 1., 1., 1.,\n", + " 1., 1.])\n", + "tensor([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 0., 1., 1., 1., 1.,\n", + " 1., 1.])\n", + "tensor([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 0., 1., 1., 1., 1.,\n", + " 1., 1.])\n", + "tensor([0.1000, 0.1000, 0.1000, 0.1000, 0.1000, 0.1000, 0.1000, 0.1000, 0.1000,\n", + " 0.1000, 0.1000, 0.1000, 0.1000, 0.1000, 0.1000, 0.1000, 0.1000, 0.1000,\n", + " 0.1000, 0.1000])\n", + "tensor([0.1000, 0.1000, 0.1000, 0.1000, 0.1000, 0.1000, 0.1000, 0.1000, 0.1000,\n", + " 0.1000, 0.1000, 0.1000, 0.1000, 0.1000, 0.1000, 0.1000, 0.1000, 0.1000,\n", + " 0.1000, 0.1000])\n", + "tensor([0.1000, 0.1000, 0.1000, 0.1000, 0.1000, 0.1000, 0.1000, 0.1000, 0.1000,\n", + " 0.1000, 0.1000, 0.1000, 0.1000, 0.1000, 0.1000, 0.1000, 0.1000, 0.1000,\n", + " 0.1000, 0.1000])\n" ] } ], diff --git a/docs/source/test_notebook.ipynb b/docs/source/test_notebook.ipynb new file mode 100644 index 00000000..69421fc0 --- /dev/null +++ b/docs/source/test_notebook.ipynb @@ -0,0 +1,659 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from typing import Callable, Dict, List, Optional\n", + "\n", + "import math\n", + "import pyro\n", + "import pyro.distributions as dist\n", + "import pyro.distributions.constraints as constraints\n", + "import torch\n", + "from chirho.counterfactual.handlers.counterfactual import \\\n", + " MultiWorldCounterfactual\n", + "from chirho.explainable.handlers import ExtractSupports, SearchForExplanation\n", + "from chirho.indexed.ops import IndexSet, gather, indices_of\n", + "from chirho.observational.handlers import condition\n", + "from chirho.observational.handlers.soft_conditioning import soft_eq, KernelSoftConditionReparam\n", + "\n", + "pyro.settings.set(module_local_params=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "match_dropped tensor(1.)\n", + "match_dropped Provenance:\n", + "frozenset({'u_match_dropped'})\n", + "Tensor:\n", + "0.0\n" + ] + }, + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "u_match_dropped\n", + "\n", + "u_match_dropped\n", + "\n", + "\n", + "\n", + "match_dropped\n", + "\n", + "match_dropped\n", + "\n", + "\n", + "\n", + "u_lightning\n", + "\n", + "u_lightning\n", + "\n", + "\n", + "\n", + "lightning\n", + "\n", + "lightning\n", + "\n", + "\n", + "\n", + "smile\n", + "\n", + "smile\n", + "\n", + "\n", + "\n", + "forest_fire\n", + "\n", + "forest_fire\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def forest_fire_model():\n", + " u_match_dropped = pyro.sample(\"u_match_dropped\", dist.Bernoulli(0.7))\n", + " match_dropped = pyro.deterministic(\n", + " \"match_dropped\", u_match_dropped, event_dim=0\n", + " ) # notice uneven probs here\n", + "\n", + " print(\"match_dropped\", match_dropped.squeeze())\n", + "\n", + " u_lightning = pyro.sample(\"u_lightning\", dist.Bernoulli(0.4))\n", + " lightning = pyro.deterministic(\"lightning\", u_lightning, event_dim=0)\n", + "\n", + " # this is a causally irrelevant site\n", + " smile = pyro.sample(\"smile\", dist.Bernoulli(0.5))\n", + "\n", + " forest_fire = pyro.deterministic(\n", + " \"forest_fire\", torch.max(match_dropped, lightning) + (0 * smile), event_dim=0\n", + " )\n", + "\n", + " return {\n", + " \"match_dropped\": match_dropped,\n", + " \"lightning\": lightning,\n", + " \"forest_fire\": forest_fire,\n", + " }\n", + "\n", + "with ExtractSupports() as extract_supports:\n", + " forest_fire_model()\n", + " forest_fire_supports = {k: constraints.boolean for k in extract_supports.supports}\n", + "\n", + "pyro.render_model(forest_fire_model)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "def importance_infer(\n", + " model: Optional[Callable] = None, *, num_samples: int\n", + "):\n", + " \n", + " if model is None:\n", + " return lambda m: importance_infer(m, num_samples=num_samples)\n", + "\n", + " def _wrapped_model(\n", + " *args,\n", + " **kwargs\n", + " ):\n", + "\n", + " guide = pyro.poutine.block(hide_fn=lambda msg: msg[\"is_observed\"])(model)\n", + "\n", + " max_plate_nesting = 9 # TODO guess\n", + "\n", + " with pyro.poutine.block(), MultiWorldCounterfactual() as mwc:\n", + " log_weights, importance_tr, _ = pyro.infer.importance.vectorized_importance_weights(\n", + " model,\n", + " guide,\n", + " *args,\n", + " num_samples=num_samples,\n", + " max_plate_nesting=max_plate_nesting,\n", + " normalized=False,\n", + " **kwargs\n", + " )\n", + "\n", + " return torch.logsumexp(log_weights, dim=0) - math.log(num_samples), importance_tr, mwc, log_weights\n", + "\n", + " return _wrapped_model" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "query = SearchForExplanation(\n", + " supports=forest_fire_supports,\n", + " antecedents={\"match_dropped\": torch.tensor(1.0), \"lightning\": torch.tensor(1.0)},\n", + " consequents={\"forest_fire\": torch.tensor(1.0)},\n", + " witnesses={}, # potential context elements, we leave them empty for now\n", + " alternatives={\"match_dropped\": torch.tensor(0.0), \"lightning\": torch.tensor(0.0)},\n", + " consequent_scale=1e-5,\n", + " antecedent_bias=0.5\n", + ")(forest_fire_model)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "match_dropped tensor([[0., 0., 0.],\n", + " [1., 1., 0.],\n", + " [1., 1., 0.],\n", + " [1., 1., 0.],\n", + " [0., 0., 0.],\n", + " [1., 1., 0.],\n", + " [0., 0., 0.],\n", + " [0., 0., 0.],\n", + " [1., 1., 0.],\n", + " [0., 0., 0.]])\n", + "match_dropped tensor([[0., 0., 0.],\n", + " [1., 1., 0.],\n", + " [1., 1., 0.],\n", + " [1., 1., 0.],\n", + " [0., 0., 0.],\n", + " [1., 1., 0.],\n", + " [0., 0., 0.],\n", + " [0., 0., 0.],\n", + " [1., 1., 0.],\n", + " [0., 0., 0.]])\n" + ] + } + ], + "source": [ + "logp, trace, mwc, log_weights = importance_infer(num_samples=10)(query)()" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "IndexSet({})\n" + ] + } + ], + "source": [ + "with mwc:\n", + " print(indices_of(trace.nodes[\"match_dropped\"][\"value\"]))" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pyro\n", + "import pyro.distributions as dist\n", + "import pyro.distributions.constraints as constraints\n", + "import pytest\n", + "import torch\n", + "\n", + "from chirho.counterfactual.handlers.counterfactual import MultiWorldCounterfactual\n", + "from chirho.counterfactual.ops import split\n", + "from chirho.explainable.handlers import random_intervention, sufficiency_intervention\n", + "from chirho.explainable.handlers.components import ( # consequent_eq_neq,\n", + " ExtractSupports,\n", + " consequent_eq,\n", + " consequent_eq_neq,\n", + " consequent_neq,\n", + " undo_split,\n", + ")\n", + "from chirho.explainable.internals import uniform_proposal\n", + "from chirho.explainable.ops import preempt\n", + "from chirho.indexed.ops import IndexSet, gather, indices_of\n", + "from chirho.interventional.handlers import do\n", + "from chirho.interventional.ops import intervene\n", + "from chirho.observational.handlers.condition import Factors" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "tensor([[[[[[[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.]]]]],\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[2., 2., 2., 2., 2., 2., 2., 2., 2., 2.]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[6., 6., 6., 6., 6., 6., 6., 6., 6., 6.]]]]],\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[6., 6., 6., 6., 6., 6., 6., 6., 6., 6.]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[2., 2., 2., 2., 2., 2., 2., 2., 2., 2.]]]]],\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[2., 2., 2., 2., 2., 2., 2., 2., 2., 2.]]]]]]])\n", + "IndexSet({'split1': {0, 1}, 'split2': {0, 1, 2}})\n", + "IndexSet({'split1': {0, 1}, 'split2': {0, 1, 2}})\n", + "tensor([[[[[[[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.]]]]],\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[2., 2., 2., 2., 2., 2., 2., 2., 2., 2.]]]]]]])\n", + "tensor([[[[[[[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.]]]]],\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[2., 2., 2., 2., 2., 2., 2., 2., 2., 2.]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.]]]]],\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[2., 2., 2., 2., 2., 2., 2., 2., 2., 2.]]]]]],\n", + "\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.]]]]],\n", + "\n", + "\n", + "\n", + "\n", + " [[[[[2., 2., 2., 2., 2., 2., 2., 2., 2., 2.]]]]]]])\n" + ] + } + ], + "source": [ + "import pyro.distributions.constraints as constraints\n", + "import torch\n", + "from chirho.counterfactual.handlers.counterfactual import MultiWorldCounterfactual\n", + "from chirho.counterfactual.ops import split\n", + "from chirho.explainable.handlers.components import undo_split\n", + "from chirho.indexed.ops import IndexSet, gather, indices_of\n", + "\n", + "with MultiWorldCounterfactual():\n", + " x_obs = torch.ones(10)\n", + " x_cf_1 = 2 * x_obs\n", + " x_cf_2 = 3 * x_cf_1\n", + " x_split = split(x_obs, (x_cf_1,), name=\"split1\", event_dim=1)\n", + " x_split = split(x_split, (x_cf_2, x_cf_1), name=\"split2\", event_dim=1)\n", + "\n", + " print(x_split)\n", + "\n", + " undo_split2 = undo_split(\n", + " support=constraints.independent(constraints.real, 1), antecedents=[\"split2\"]\n", + " )\n", + " x_undone = undo_split2(x_split)\n", + "\n", + " print(indices_of(x_split, event_dim=1))\n", + " print(indices_of(x_undone, event_dim=1))\n", + "\n", + " print(gather(x_split, IndexSet(split2={0}), event_dim=1))\n", + " print(x_undone)\n", + "\n", + " assert indices_of(x_split, event_dim=1) == indices_of(x_undone, event_dim=1)\n", + " assert torch.all(gather(x_split, IndexSet(split2={0}), event_dim=1) == x_undone)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'split1': {0}}\n", + "{'split1': {0}}\n", + "{'split1': {1}}\n", + "{'split1': {1}}\n", + "{'split1': {2}}\n", + "{'split1': {2}}\n", + "{'split1': {0}, 'split2': {1}}\n", + "{'split1': {0}, 'split2': {1}}\n", + "{'split1': {0}, 'split2': {2}}\n", + "{'split1': {0}, 'split2': {2}}\n", + "{'split1': {1}, 'split2': {1}}\n", + "{'split1': {1}, 'split2': {1}}\n", + "{'split1': {1}, 'split2': {2}}\n", + "{'split1': {1}, 'split2': {2}}\n", + "{'split1': {2}, 'split2': {1}}\n", + "{'split1': {2}, 'split2': {1}}\n", + "{'split1': {2}, 'split2': {2}}\n", + "{'split1': {2}, 'split2': {2}}\n", + "[{'split1': {0}, 'split2': {1}, 'split3': {2}}, {'split1': {0}, 'split2': {1}, 'split3': {3}}, {'split1': {0}, 'split2': {2}, 'split3': {2}}, {'split1': {0}, 'split2': {2}, 'split3': {3}}, {'split1': {1}, 'split2': {1}, 'split3': {2}}, {'split1': {1}, 'split2': {1}, 'split3': {3}}, {'split1': {1}, 'split2': {2}, 'split3': {2}}, {'split1': {1}, 'split2': {2}, 'split3': {3}}, {'split1': {2}, 'split2': {1}, 'split3': {2}}, {'split1': {2}, 'split2': {1}, 'split3': {3}}, {'split1': {2}, 'split2': {2}, 'split3': {2}}, {'split1': {2}, 'split2': {2}, 'split3': {3}}]\n" + ] + } + ], + "source": [ + "index_keys = []\n", + "antecedents = {\"split1\": {0, 1, 2}, \"split2\": {1, 2}, \"split3\": {2, 3}}\n", + "for a, v in antecedents.items():\n", + " if index_keys == []:\n", + " for value in v:\n", + " index_keys.append({a: {value}})\n", + " else:\n", + " temp_index_keys = []\n", + " for i in index_keys:\n", + " for value in v:\n", + " print(i)\n", + " t = dict(i)\n", + " t[a] = {value}\n", + " temp_index_keys.append(t)\n", + " index_keys = temp_index_keys\n", + "\n", + "print(index_keys)\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "ename": "SyntaxError", + "evalue": "invalid syntax (448003560.py, line 4)", + "output_type": "error", + "traceback": [ + "\u001b[0;36m Cell \u001b[0;32mIn[28], line 4\u001b[0;36m\u001b[0m\n\u001b[0;31m if a, v in indices_of(value, event_dim=0)\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n" + ] + } + ], + "source": [ + "\n", + "antecedents_ = {\n", + " a\n", + " for a in antecedents\n", + " if a in indices_of(value, event_dim=0)\n", + "}\n", + "\n", + "factual_value = gather(\n", + " value,\n", + " IndexSet(**{antecedent: {0} for antecedent in antecedents_}),\n", + " event_dim=support.event_dim,\n", + ")\n", + "\n", + "# TODO exponential in len(antecedents) - add an indexed.ops.expand to do this cheaply\n", + "\n", + "\n", + "\n", + "scatter_n(\n", + " {\n", + " IndexSet(\n", + " **{antecedent: {ind} for antecedent, ind in zip(antecedents_, inds)}\n", + " ): factual_value\n", + " for inds in itertools.product(*[[0, 1]] * len(antecedents_))\n", + " },\n", + " event_dim=support.event_dim,\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [], + "source": [ + "with MultiWorldCounterfactual():\n", + " for a in indices_of(value, event_dim=0):\n", + " print(a)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ + "import pyro\n", + "import pyro.distributions as dist\n", + "import pyro.distributions.constraints as constraints\n", + "import pytest\n", + "import torch\n", + "\n", + "from chirho.counterfactual.handlers.counterfactual import MultiWorldCounterfactual\n", + "from chirho.counterfactual.ops import split\n", + "from chirho.explainable.handlers import random_intervention, sufficiency_intervention\n", + "from chirho.explainable.handlers.components import ( # consequent_eq_neq,\n", + " ExtractSupports,\n", + " consequent_eq,\n", + " consequent_eq_neq,\n", + " consequent_neq,\n", + " undo_split,\n", + ")\n", + "from chirho.explainable.internals import uniform_proposal\n", + "from chirho.explainable.ops import preempt\n", + "from chirho.indexed.ops import IndexSet, gather, indices_of\n", + "from chirho.interventional.handlers import do\n", + "from chirho.interventional.ops import intervene\n", + "from chirho.observational.handlers.condition import Factors\n", + "\n", + "SUPPORT_CASES = [\n", + " pyro.distributions.constraints.real,\n", + " pyro.distributions.constraints.boolean,\n", + " pyro.distributions.constraints.positive,\n", + " pyro.distributions.constraints.interval(0, 10),\n", + " pyro.distributions.constraints.interval(-5, 5),\n", + " pyro.distributions.constraints.integer_interval(0, 2),\n", + " pyro.distributions.constraints.integer_interval(0, 100),\n", + "]" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "import pyro\n", + "import pyro.distributions as dist\n", + "\n", + "def model():\n", + " x = pyro.sample(\"x\", dist.Delta(torch.tensor(1.0)))\n", + "\n", + " x_split = pyro.deterministic(\n", + " \"x_split\",\n", + " split(x, (torch.tensor(0.5),), name=\"x_split\", event_dim=0),\n", + " event_dim=0,\n", + " )\n", + "\n", + " x_undone = pyro.deterministic(\n", + " \"x_undone\",\n", + " undo_split(support=constraints.real, antecedents=[\"x_split\"])(x_split),\n", + " event_dim=0,\n", + " )\n", + "\n", + " x_case = torch.tensor(1)\n", + " x_preempted = pyro.deterministic(\n", + " \"x_preempted\",\n", + " preempt(\n", + " x_undone, (torch.tensor(5.0),), x_case, name=\"x_preempted\", event_dim=0\n", + " ),\n", + " event_dim=0,\n", + " )\n", + "\n", + " x_undone_2 = pyro.deterministic(\n", + " \"x_undone_2\",\n", + " undo_split(support=constraints.real, antecedents=[\"x\"])(x_preempted),\n", + " event_dim=0,\n", + " )\n", + "\n", + " x_split2 = pyro.deterministic(\n", + " \"x_split2\",\n", + " split(x_undone_2, (torch.tensor(2.0),), name=\"x_split2\", event_dim=0),\n", + " event_dim=0,\n", + " )\n", + "\n", + " x_undone_3 = pyro.deterministic(\n", + " \"x_undone_3\",\n", + " undo_split(support=constraints.real, antecedents=[\"x_split\", \"x_split2\"])(\n", + " x_split2\n", + " ),\n", + " event_dim=0,\n", + " )\n", + "\n", + " return x_undone_3\n", + "\n", + "with MultiWorldCounterfactual() as mwc:\n", + " with pyro.poutine.trace() as tr:\n", + " model()\n", + "\n", + "nd = tr.trace.nodes\n", + "\n", + "with mwc:\n", + " x_split_2 = nd[\"x_split2\"][\"value\"]\n", + " x_00 = gather(\n", + " x_split_2, IndexSet(x_split={0}, x_split2={0}), event_dim=0\n", + " ) # 5.0\n", + " x_10 = gather(\n", + " x_split_2, IndexSet(x_split={1}, x_split2={0}), event_dim=0\n", + " ) # 5.0\n", + " x_01 = gather(\n", + " x_split_2, IndexSet(x_split={0}, x_split2={1}), event_dim=0\n", + " ) # 2.0\n", + " x_11 = gather(\n", + " x_split_2, IndexSet(x_split={1}, x_split2={1}), event_dim=0\n", + " ) # 2.0\n", + "\n", + " assert (\n", + " nd[\"x_split\"][\"value\"][0].item() == 1.0\n", + " and nd[\"x_split\"][\"value\"][1].item() == 0.5\n", + " )\n", + "\n", + " assert (\n", + " nd[\"x_undone\"][\"value\"][0].item() == 1.0\n", + " and nd[\"x_undone\"][\"value\"][1].item() == 1.0\n", + " )\n", + "\n", + " assert (\n", + " nd[\"x_preempted\"][\"value\"][0].item() == 5.0\n", + " and nd[\"x_preempted\"][\"value\"][1].item() == 5.0\n", + " )\n", + "\n", + " assert (\n", + " nd[\"x_undone_2\"][\"value\"][0].item() == 5.0\n", + " and nd[\"x_undone_2\"][\"value\"][1].item() == 5.0\n", + " )\n", + "\n", + " assert torch.all(nd[\"x_undone_3\"][\"value\"] == 5.0)\n", + "\n", + " assert (x_00, x_10, x_01, x_11) == (5.0, 5.0, 2.0, 2.0)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "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.10.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/tests/explainable/test_handlers_components.py b/tests/explainable/test_handlers_components.py index 4b0916cf..66b1aefd 100644 --- a/tests/explainable/test_handlers_components.py +++ b/tests/explainable/test_handlers_components.py @@ -89,7 +89,7 @@ def test_undo_split(): x_cf_1 = torch.ones(10) x_cf_2 = 2 * x_cf_1 x_split = split(x_obs, (x_cf_1,), name="split1", event_dim=1) - x_split = split(x_split, (x_cf_2,), name="split2", event_dim=1) + x_split = split(x_split, (x_cf_2), name="split2", event_dim=1) undo_split2 = undo_split( support=constraints.independent(constraints.real, 1), antecedents=["split2"] From a5f20aa2de04f84978c65f887cc698f166787f6f Mon Sep 17 00:00:00 2001 From: PoorvaGarg Date: Mon, 19 Aug 2024 11:24:45 -0400 Subject: [PATCH 49/53] tests for undo_split added --- tests/explainable/test_handlers_components.py | 34 +++++++++++++++---- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/tests/explainable/test_handlers_components.py b/tests/explainable/test_handlers_components.py index 66b1aefd..883ce8ca 100644 --- a/tests/explainable/test_handlers_components.py +++ b/tests/explainable/test_handlers_components.py @@ -83,13 +83,14 @@ def test_random_intervention(support, event_shape): assert torch.all(support.check(samples)) -def test_undo_split(): +@pytest.mark.parametrize("num_splits", [1, 2, 5]) +def test_undo_split(num_splits): with MultiWorldCounterfactual(): x_obs = torch.zeros(10) x_cf_1 = torch.ones(10) x_cf_2 = 2 * x_cf_1 - x_split = split(x_obs, (x_cf_1,), name="split1", event_dim=1) - x_split = split(x_split, (x_cf_2), name="split2", event_dim=1) + x_split = split(x_obs, (x_cf_1,)*num_splits, name="split1", event_dim=1) + x_split = split(x_split, (x_cf_2,)*(num_splits+1), name="split2", event_dim=1) undo_split2 = undo_split( support=constraints.independent(constraints.real, 1), antecedents=["split2"] @@ -100,9 +101,28 @@ def test_undo_split(): assert torch.all(gather(x_split, IndexSet(split2={0}), event_dim=1) == x_undone) +def test_undo_split_multi_dim(): + with MultiWorldCounterfactual(): + x_obs = torch.ones(10) + x_cf_1 = 2 * x_obs + x_cf_2 = 3 * x_cf_1 + x_split = split(x_obs, (x_cf_1,), name="split1", event_dim=1) + x_split = split(x_split, (x_cf_2, x_cf_1, x_cf_2), name="split2", event_dim=1) + x_split = split(x_split, (x_cf_2, x_cf_1), name="split3", event_dim=1) + + undo_split23 = undo_split( + support=constraints.independent(constraints.real, 1), antecedents=["split2", "split3"] + ) + x_undone = undo_split23(x_split) + + assert indices_of(x_split, event_dim=1) == indices_of(x_undone, event_dim=1) + assert torch.all(gather(x_split, IndexSet(split2={0}, split3={0}), event_dim=1) == x_undone) + + @pytest.mark.parametrize("plate_size", [4, 50, 200]) @pytest.mark.parametrize("event_shape", [(), (3,), (3, 2)]) -def test_undo_split_parametrized(event_shape, plate_size): +@pytest.mark.parametrize("num_splits", [1, 2, 5]) +def test_undo_split_parametrized(event_shape, plate_size, num_splits): joint_dims = torch.Size([plate_size, *event_shape]) replace1 = torch.ones(joint_dims) @@ -114,7 +134,7 @@ def model(): w = pyro.sample( "w", dist.Normal(0, 1).expand(event_shape).to_event(len(event_shape)) ) - w = split(w, (replace1,), name="split1", event_dim=len(event_shape)) + w = split(w, (replace1,)*num_splits, name="split1", event_dim=len(event_shape)) w = pyro.deterministic( "w_preempted", @@ -146,11 +166,11 @@ def model(): with mwc: assert indices_of( nd["w_undone"]["value"], event_dim=len(event_shape) - ) == IndexSet(split1={0, 1}) + ) == IndexSet(split1=set(range(num_splits+1))) w_undone_shape = list(nd["w_undone"]["value"].shape) desired_shape = list( - (2,) + (num_splits+1,) + (1,) * (len(w_undone_shape) - len(event_shape) - 2) + (plate_size,) + event_shape From 97b5ffac38e4752e0589ce45da0591ed892919d9 Mon Sep 17 00:00:00 2001 From: PoorvaGarg Date: Mon, 19 Aug 2024 12:44:46 -0400 Subject: [PATCH 50/53] cleanup --- docs/source/counterfactual_sir.png | Bin 126734 -> 0 bytes docs/source/counterfactual_sir_search.png | Bin 42433 -> 0 bytes docs/source/explainable_sir.ipynb | 1875 --------------------- docs/source/test_notebook.ipynb | 659 -------- 4 files changed, 2534 deletions(-) delete mode 100644 docs/source/counterfactual_sir.png delete mode 100644 docs/source/counterfactual_sir_search.png delete mode 100644 docs/source/explainable_sir.ipynb delete mode 100644 docs/source/test_notebook.ipynb diff --git a/docs/source/counterfactual_sir.png b/docs/source/counterfactual_sir.png deleted file mode 100644 index 1fc7f4bb20d0428035a8e15788c1394f7df77b3e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 126734 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%0DfZt4*3KX)NY) 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
      114jU(#iLZns$M5Jde9T3 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 z%0A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 B#LEBx diff --git a/docs/source/counterfactual_sir_search.png b/docs/source/counterfactual_sir_search.png deleted file mode 100644 index cf748a2edde99acb9b1d06df4f31539b53c83a55..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42433 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 D;2Cj6 diff --git a/docs/source/explainable_sir.ipynb b/docs/source/explainable_sir.ipynb deleted file mode 100644 index a4a49c28..00000000 --- a/docs/source/explainable_sir.ipynb +++ /dev/null @@ -1,1875 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import numbers\n", - "import os\n", - "from typing import Tuple, TypeVar, Union\n", - "from typing import Callable, Dict, List, Optional\n", - "import math\n", - "\n", - "import matplotlib.pyplot as plt\n", - "import pandas as pd\n", - "import pyro.distributions as dist\n", - "import seaborn as sns\n", - "import torch\n", - "from pyro.infer import Predictive\n", - "\n", - "import pyro\n", - "from chirho.counterfactual.handlers.counterfactual import \\\n", - " MultiWorldCounterfactual\n", - "from chirho.dynamical.handlers.interruption import StaticEvent\n", - "from chirho.dynamical.handlers.solver import TorchDiffEq\n", - "from chirho.dynamical.handlers.trajectory import LogTrajectory\n", - "from chirho.dynamical.ops import Dynamics, State, on, simulate\n", - "from chirho.explainable.handlers import SearchForExplanation\n", - "from chirho.explainable.handlers.components import ExtractSupports\n", - "from chirho.indexed.ops import IndexSet, gather, indices_of\n", - "from chirho.interventional.ops import Intervention, intervene\n", - "from chirho.observational.handlers import condition\n", - "\n", - "R = Union[numbers.Real, torch.Tensor]\n", - "S = TypeVar(\"S\")\n", - "T = TypeVar(\"T\")\n", - "\n", - "\n", - "sns.set_style(\"white\")\n", - "\n", - "seed = 123\n", - "pyro.clear_param_store()\n", - "pyro.set_rng_seed(seed)\n", - "\n", - "smoke_test = \"CI\" in os.environ\n", - "num_samples = 10 if smoke_test else 300\n", - "exp_plate_size = 10 if smoke_test else 2000" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "class SIRDynamics(pyro.nn.PyroModule):\n", - " def __init__(self, beta, gamma):\n", - " super().__init__()\n", - " self.beta = beta\n", - " self.gamma = gamma\n", - "\n", - " def forward(self, X: State[torch.Tensor]):\n", - " dX: State[torch.Tensor] = dict()\n", - " dX[\"S\"] = -self.beta * X[\"S\"] * X[\"I\"]\n", - " dX[\"I\"] = self.beta * X[\"S\"] * X[\"I\"] - self.gamma * X[\"I\"]\n", - " dX[\"R\"] = self.gamma * X[\"I\"]\n", - "\n", - " return dX\n", - "\n", - "\n", - "# TODO add running overshoot to states?\n", - "\n", - "\n", - "class SIRDynamicsLockdown(SIRDynamics):\n", - " def __init__(self, beta0, gamma):\n", - " super().__init__(beta0, gamma)\n", - " self.beta0 = beta0\n", - "\n", - " def forward(self, X: State[torch.Tensor]):\n", - " self.beta = (1 - X[\"l\"]) * self.beta0\n", - " dX = super().forward(X)\n", - " dX[\"l\"] = torch.zeros_like(X[\"l\"])\n", - " return dX" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.15116800367832184\n" - ] - } - ], - "source": [ - "init_state = dict(S=torch.tensor(99.0), I=torch.tensor(1.0), R=torch.tensor(0.0))\n", - "start_time = torch.tensor(0.0)\n", - "end_time = torch.tensor(12.0)\n", - "step_size = torch.tensor(0.1)\n", - "logging_times = torch.arange(start_time, end_time, step_size)\n", - "init_state_lockdown = dict(**init_state, l=torch.tensor(0.0))\n", - "\n", - "# We now simulate from the SIR model\n", - "beta_true = torch.tensor([0.03])\n", - "gamma_true = torch.tensor([0.5])\n", - "sir_true = SIRDynamics(beta_true, gamma_true)\n", - "with TorchDiffEq(), LogTrajectory(logging_times) as lt:\n", - " simulate(sir_true, init_state, start_time, end_time)\n", - "\n", - "sir_true_traj = lt.trajectory\n", - "\n", - "\n", - "def get_overshoot(trajectory):\n", - " t_max = torch.argmax(trajectory[\"I\"].squeeze())\n", - " S_peak = torch.max(trajectory[\"S\"].squeeze()[t_max]) / 100\n", - " S_final = trajectory[\"S\"].squeeze()[-1] / 100\n", - " return (S_peak - S_final).item()\n", - "\n", - "\n", - "print(get_overshoot(sir_true_traj))" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "def bayesian_sir(base_model=SIRDynamics) -> Dynamics[torch.Tensor]:\n", - " beta = pyro.sample(\"beta\", dist.Beta(18, 600))\n", - " gamma = pyro.sample(\"gamma\", dist.Beta(1600, 1600))\n", - " sir = base_model(beta, gamma)\n", - " return sir\n", - "\n", - "\n", - "def simulated_bayesian_sir(\n", - " init_state, start_time, logging_times, base_model=SIRDynamics\n", - ") -> State[torch.Tensor]:\n", - " sir = bayesian_sir(base_model)\n", - "\n", - " with TorchDiffEq(), LogTrajectory(logging_times, is_traced=True) as lt:\n", - " simulate(sir, init_state, start_time, logging_times[-1])\n", - " return lt.trajectory" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "def MaskedStaticIntervention(time: R, intervention: Intervention[State[T]]):\n", - "\n", - " @on(StaticEvent(time))\n", - " def callback(\n", - " dynamics: Dynamics[T], state: State[T]\n", - " ) -> Tuple[Dynamics[T], State[T]]:\n", - "\n", - " with pyro.poutine.block():\n", - " return dynamics, intervene(state, intervention)\n", - "\n", - " return callback" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "mask tensor(0.)\n", - "lockdown tensor(0.)\n", - "mask_eff tensor(0.)\n" - ] - } - ], - "source": [ - "overshoot_threshold = 20\n", - "lockdown_time = torch.tensor(1.0)\n", - "mask_time = torch.tensor(1.5)\n", - "\n", - "\n", - "def policy_model():\n", - "\n", - " lockdown = pyro.sample(\"lockdown\", dist.Bernoulli(torch.tensor(0.5)))\n", - " mask = pyro.sample(\"mask\", dist.Bernoulli(torch.tensor(0.5)))\n", - "\n", - " lockdown_efficiency = pyro.deterministic(\n", - " \"lockdown_efficiency\", torch.tensor(0.6) * lockdown, event_dim=0\n", - " )\n", - "\n", - " mask_efficiency = pyro.deterministic(\n", - " \"mask_efficiency\", (0.1 * lockdown + 0.45 * (1 - lockdown)) * mask, event_dim=0\n", - " )\n", - "\n", - " joint_efficiency = pyro.deterministic(\n", - " \"joint_efficiency\",\n", - " torch.clamp(lockdown_efficiency + mask_efficiency, 0, 0.95),\n", - " event_dim=0,\n", - " )\n", - "\n", - " lockdown_sir = bayesian_sir(SIRDynamicsLockdown)\n", - " with LogTrajectory(logging_times, is_traced=True) as lt:\n", - " with TorchDiffEq():\n", - " with MaskedStaticIntervention(lockdown_time, dict(l=lockdown_efficiency)):\n", - " with MaskedStaticIntervention(mask_time, dict(l=joint_efficiency)):\n", - " simulate(\n", - " lockdown_sir, init_state_lockdown, start_time, logging_times[-1]\n", - " )\n", - "\n", - " trajectory = lt.trajectory\n", - "\n", - " t_max = torch.max(trajectory[\"I\"], dim=-1).indices\n", - " S_peaks = pyro.ops.indexing.Vindex(trajectory[\"S\"])[..., t_max]\n", - " overshoot = pyro.deterministic(\n", - " \"overshoot\", S_peaks - trajectory[\"S\"][..., -1], event_dim=0\n", - " )\n", - " os_too_high = pyro.deterministic(\n", - " \"os_too_high\",\n", - " (overshoot > overshoot_threshold).clone().detach().float(),\n", - " event_dim=0,\n", - " )\n", - "\n", - " return overshoot, os_too_high\n", - "\n", - "\n", - "with ExtractSupports() as s:\n", - " one_run = policy_model()\n", - "\n", - "import pyro.distributions.constraints as constraints\n", - "s.supports[\"os_too_high\"] = constraints.independent(base_constraint=constraints.boolean, reinterpreted_batch_ndims=0)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'lockdown': Boolean(), 'mask': Boolean(), 'lockdown_efficiency': IndependentConstraint(Real(), 0), 'mask_efficiency': IndependentConstraint(Real(), 0), 'joint_efficiency': IndependentConstraint(Real(), 0), 'beta': Interval(lower_bound=0.0, upper_bound=1.0), 'gamma': Interval(lower_bound=0.0, upper_bound=1.0), 'S': IndependentConstraint(Real(), 1), 'I': IndependentConstraint(Real(), 1), 'R': IndependentConstraint(Real(), 1), 'l': IndependentConstraint(Real(), 1), 'overshoot': IndependentConstraint(Real(), 0), 'os_too_high': IndependentConstraint(Boolean(), 0)}\n" - ] - } - ], - "source": [ - "print(s.supports)" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [], - "source": [ - "def importance_infer(\n", - " model: Optional[Callable] = None, *, num_samples: int\n", - "):\n", - " \n", - " if model is None:\n", - " return lambda m: importance_infer(m, num_samples=num_samples)\n", - "\n", - " def _wrapped_model(\n", - " *args,\n", - " **kwargs\n", - " ):\n", - "\n", - " guide = pyro.poutine.block(hide_fn=lambda msg: msg[\"is_observed\"])(model)\n", - "\n", - " max_plate_nesting = 9 # TODO guess\n", - "\n", - " with pyro.poutine.block(), MultiWorldCounterfactual() as mwc:\n", - " log_weights, importance_tr, _ = pyro.infer.importance.vectorized_importance_weights(\n", - " model,\n", - " guide,\n", - " *args,\n", - " num_samples=num_samples,\n", - " max_plate_nesting=max_plate_nesting,\n", - " normalized=False,\n", - " **kwargs\n", - " )\n", - "\n", - " return torch.logsumexp(log_weights, dim=0) - math.log(num_samples), importance_tr, mwc, log_weights\n", - "\n", - " return _wrapped_model" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "tensor(0.)\n" - ] - } - ], - "source": [ - "print(torch.exp(logp))" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "mask tensor(0.)\n", - "lockdown tensor(0.)\n", - "mask_eff tensor(0.)\n", - "mask tensor(0.)\n", - "lockdown tensor(0.)\n", - "mask_eff tensor(0.)\n", - "mask tensor(0.)\n", - "lockdown tensor(0.)\n", - "mask_eff tensor(0.)\n", - "mask tensor(1.)\n", - "lockdown tensor(1.)\n", - "mask_eff tensor(0.1000)\n", - "mask tensor(1.)\n", - "lockdown tensor(1.)\n", - "mask_eff tensor(0.1000)\n", - "mask tensor(1.)\n", - "lockdown tensor(1.)\n", - "mask_eff tensor(0.1000)\n", - "mask tensor(1.)\n", - "lockdown tensor(0.)\n", - "mask_eff tensor(0.4500)\n", - "mask tensor(1.)\n", - "lockdown tensor(0.)\n", - "mask_eff tensor(0.4500)\n", - "mask tensor(1.)\n", - "lockdown tensor(0.)\n", - "mask_eff tensor(0.4500)\n", - "mask tensor(0.)\n", - "lockdown tensor(1.)\n", - "mask_eff tensor(0.)\n", - "mask tensor(0.)\n", - "lockdown tensor(1.)\n", - "mask_eff tensor(0.)\n", - "mask tensor(0.)\n", - "lockdown tensor(1.)\n", - "mask_eff tensor(0.)\n" - ] - } - ], - "source": [ - "# conditioning (as opposed to intervening) is sufficient for\n", - "# propagating the changes, as the decisions are upstream from ds\n", - "\n", - "# no interventions\n", - "policy_model_none = condition(\n", - " policy_model, {\"lockdown\": torch.tensor(0.0), \"mask\": torch.tensor(0.0)}\n", - ")\n", - "unintervened_predictive = Predictive(\n", - " policy_model_none, num_samples=num_samples, parallel=True\n", - ")\n", - "unintervened_samples = unintervened_predictive()\n", - "\n", - "# both interventions\n", - "policy_model_all = condition(\n", - " policy_model, {\"lockdown\": torch.tensor(1.0), \"mask\": torch.tensor(1.0)}\n", - ")\n", - "intervened_predictive = Predictive(\n", - " policy_model_all, num_samples=num_samples, parallel=True\n", - ")\n", - "intervened_samples = intervened_predictive()\n", - "\n", - "policy_model_mask = condition(\n", - " policy_model, {\"lockdown\": torch.tensor(0.0), \"mask\": torch.tensor(1.0)}\n", - ")\n", - "mask_predictive = Predictive(policy_model_mask, num_samples=num_samples, parallel=True)\n", - "mask_samples = mask_predictive()\n", - "\n", - "policy_model_lockdown = condition(\n", - " policy_model, {\"lockdown\": torch.tensor(1.0), \"mask\": torch.tensor(0.0)}\n", - ")\n", - "lockdown_predictive = Predictive(\n", - " policy_model_lockdown, num_samples=num_samples, parallel=True\n", - ")\n", - "lockdown_samples = lockdown_predictive()" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAABKQAAAJ6CAYAAAAWx5q1AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd3xT5ffA8U/26i6lbCgjBdmr7I24GOLXgT8VGW7BgQNQERURRRAFwYEDt4iAWxABFZG9p2xoWd07zby/P26TNrRAywbPW+8ryZ1Pbm4zDuc5j0ZRFAUhhBBCCCGEEEIIIS4Q7cVugBBCCCGEEEIIIYT4b5GAlBBCCCGEEEIIIYS4oCQgJYQQQgghhBBCCCEuKAlICSGEEEIIIYQQQogLSgJSQgghhBBCCCGEEOKCkoCUEEIIIYQQQgghhLigJCAlhBBCCCGEEEIIIS4oCUgJIYQQQgghhBBCiAtKAlJCCCHEGVIU5WI3QYhLxuXw93A5tNHvcmqrEEIIcSYkICWEEOKMTZs2jfj4+HJNSUlJ57wd3bt3Jz4+noMHD57zfZ/M33//zZAhQ87rMVatWkV8fDy33377eT3O5eDJJ58kPj6eefPmXeymXFQX41o/HafTydtvv81777131vs6ePAg8fHxdO/ePWi+//3D4/Gc0X6zs7N5+eWX+e6778q8TVJSEvHx8XTu3PmU886H0t5fLtSxhRBCiAtFf7EbIIQQ4vIVHx9Pnz59gualpaXxzz//YLVa6dGjR4ltrFbrhWreeXPkyBGGDh1KbGzsxW6KEBfdzJkzmTZtGg888MDFbspJTZgwgXnz5vHyyy9f7Kaclry/CCGE+K+QgJQQQogz1qtXL3r16hU0b9WqVfzzzz9ERkYyadKkC9KOWbNm4Xa7qVKlygU5ns/nuyDHadKkCb/88gsWi+WCHE+IM3Ehupb98ssvAOj1Z/bV9UzaGBsbyy+//ILBYDijY56pk72/XKz2CCGEEOeLBKSEEEJc9mrUqHGxm3BeWCwW6tSpc7GbIcRFdzH+DgwGwyX193eptUcIIYQ4W1JDSgghxAV31113ER8fz65duxg4cCCNGzemY8eOgSwIj8fDnDlzuPvuu2nTpg0NGzYkISGBu+66i59//rnE/k5WV8fpdDJz5kz69u1L06ZNadmyJQMHDmTJkiUnbduiRYsYPHgwbdu2pUWLFtx000188cUXuN1uQK2b5e+KePz48VLr3ezZs4enn36aTp060ahRIzp27MhTTz3Fnj17ynUuTlVD6sCBA4waNYrOnTvTqFEjOnfuzLPPPsvhw4dLrOt0Opk+fTr9+/enRYsWNG/enP79+/Puu+/icDhOei5OdPz4cV577TX69OlD8+bNadSoEV27dmXkyJHs27cvaF1/28ePH8++fft45JFHaNOmDU2aNOGmm25i7ty5pR7jwIEDPPXUU3Ts2JFmzZpx5513snbt2jK3sbg///yToUOHkpCQQOPGjbnmmmt4/fXXyczMDKyTnZ1N48aNadq0Kbm5uaXup2/fvsTHx/Pvv/8G5pXn2vLXWvvll18YM2YMzZs3p3Xr1rz22muBNvjPa7NmzWjZsiUDBgzgiy++OGnNJH/dpquvvjrwOrz88ssnfQ4//vgjd9xxBy1atKBJkyb06dOHd95556Svf1mv4e7du/P2228D8O677xIfH8+0adNK3WdxiqLw9ddf079/f5o1a0bnzp2ZNGkSBQUFpa5fWg2psp63+Ph45s+fD8Bzzz0XVIts1KhRxMfHs3r1aoYPH06TJk1o27Yts2bNOm3NpqSkJB599FFatWpFixYtGDRoEH///XeJ9U5V98t/bUyZMiXw+GTvL6dqz5m852RmZvLpp5/Su3dvmjRpQvv27Rk9ejRHjhwpsc3GjRt5+OGH6d69e2D/jzzyCBs3biz13AghhBBlIRlSQgghLprhw4eTl5dHly5d2Lp1K40aNUJRFIYPH86SJUsIDw+nadOmmEwm9uzZw+rVq1m9ejVpaWkMHDjwlPvOzc1l8ODBbN68maioKNq2bYvL5WLNmjWsWrWKYcOGMXz48KBtxo0bx+eff47BYKBVq1ZYLBbWrl3LSy+9xJo1a5gyZQrx8fH07NmT33//HYvFQs+ePYmKigrsY8mSJTz22GM4nU7i4+Np0aIF+/fv54cffuC3337jzTffpFu3bmU6F0ePHi31ua1YsYKHHnqI/Px87HY7zZo1Y//+/Xz77bf8/vvvfPjhhzRq1AhQf/g/+OCDLF++nNjYWNq0aYOiKKxdu5YpU6awfPlyPv30UzQazSnP5759+7jjjjtIT0+nbt26dOzYkfz8fDZv3sx3333H4sWL+fHHH6lcuXLQdnv27OGWW27BZDLRvHlzMjMz2bBhA8888wxZWVlBhZu3bt3KkCFDyMrKCpy7rVu3MmjQIKpWrXrK9p1oypQpvPvuu+h0Olq2bElkZCQbN27kgw8+4Ndff+WTTz6hevXqhIWF0a1bNxYuXMjixYvp169fifb/+++/1K9fn/j4eODMri2At956i6NHj9KhQweOHDlCnTp1KCgo4I477mDXrl3UqFGDjh074nA4WLNmDRs2bGDLli28+uqrJfb16KOPcvDgQVq3bk1cXBxr1qzhs88+Y/PmzXz11VfodDpAff2ffvppfvjhB4xGI61bt8ZqtbJmzRrefPNNFixYwKxZs4iMjAzsuzzXcM+ePVmxYgW7du3CbrcHAkenM3LkSL7//nusVivt2rWjoKCAjz/+mKVLl5bp9S3PeevTpw8bN24kMTGRZs2aUb169RJZlWPGjCE9PZ1OnTqxZ8+e0z6HvLw8br/9dvLz82nTpg05OTmsXLmSFStW8Pzzz3PHHXeU6Xmc6HTvL6U50/ec5557jt9//50mTZrQuXNn1qxZw7x58/jnn3/46aefCA0NBWDlypXcc889eL1eWrRoQaNGjUhMTAz8zbz//vt06NDhjJ6vEEKI/zhFCCGEOIdWrlyp2O12pVu3bidd584771TsdrvSpUsXJSMjQ1EURfF6vYqiKMrChQsVu92u3HzzzUpubm7Qdu+9955it9uVq6++Omh+t27dFLvdrhw4cCAwb+TIkYrdbldGjBih5OXlBebv378/sP7y5csD83/77TfFbrcrnTp1Uvbs2ROYn5aWplx77bWK3W5XFi5cqCiKoiQmJgbWLS45OVlp1qyZEh8fr8ybNy9o2Zw5c5T4+HilefPmyrFjx8p0LvzncsCAAYH109PTlYSEBKVBgwbKL7/8EnSMr7/+WrHb7UqPHj0Up9OpKIqirFmzRrHb7cqdd96puFyuoOfVo0cPxW63KytXrlRO5/7771fsdrsyc+bMoPnZ2dnKzTffrNjtdmXGjBmB+f622+125bHHHgt6DT799FPFbrcr7dq1U3w+X+A59+3bV7Hb7cp7770XWNflcimjRo0K7Gvu3LmnbevixYsVu92utG3bVtmyZUtgvtPpVJ599lnFbrcr/fv3Dxz7999/V+x2u3LfffeV2Ncbb7yh2O125cMPPwzMK++1NXXqVMVutyvx8fHKpk2bAvO9Xq8yf/58xW63K0888USgPYqiKAcPHlRat26t2O125dChQ4H5/v23a9dO2bFjR2D+gQMHlKZNmyp2u11ZtWpViXN99dVXB+0nJydHue+++xS73a4MGzYsMP9MrmH/83vjjTdKnL/SLFiwQLHb7UrPnj2Vo0ePBuZv2bJFadWqVanvH/7X3+12K4qilPu8+V+zb775Jmi//vnNmjULrO/z+RSfz1fq37l/nt1uV2644QYlJSUlsGzZsmVKw4YNlUaNGimJiYmB+aW9P53q3J3s/aW0+WfzntOsWbOgv/2MjAzl6quvVux2u/L5558H5g8cOFCx2+3KsmXLgvb/8ccfB95bhBBCiDMhXfaEEEJcNH369CEiIgIArVb9SHK73XTv3p0nn3wSm80WtL6/61pSUtIp93v8+HF++OEHYmJiGDduXNDIfrVq1WLUqFEAfPjhh4H5X375JaB24SlepyUqKoonnniC2rVrl9qVpbjZs2eTn59P//796d+/f9Cym2++mf79+5OXl8dXX31VpnNRmjlz5pCZmcn//d//cd111wUtu+222+jWrRuJiYksWrQIgOTkZABiYmKCiiFHRUUxbtw4JkyYQPXq1U/5vAAqV65Mz549GTx4cND80NBQevfuDZT+uuj1esaOHRv0Gtx2220YjUbS0tJIS0sDYP369ezcuZOrrrqK++67L7CuwWDghRdeIDo6+rRt9Js1axYATz/9dCBTDMBoNPLCCy9Qq1Yttm3bxsqVKwHo3LkzkZGRLF++PKg7H8DPP/+MTqcLPMczubb8mjZtSpMmTQKPtVotKSkpgHp+i2ep1ahRg1deeYWJEyeW+DsAuO+++6hfv37gcc2aNQNdvYp3LfSfi5dffjnodQ4JCWHSpEmEhoby22+/BbqTnc01XFb+bUeNGkWlSpUC8xs1asRDDz1Upn2c6Xk7mW7dugXOj0ajOW3GIKhZVRUqVAg87tixIwMGDMDlcp20S+q5djav16233kqbNm0CjyMiIujbty8Au3btCsz3n+sTB434v//7P0aPHs0999xzzp6PEEKI/xYJSAkhhLhoiv+g9rvhhht45513gn4oFRQUsH37dn744QcAvF4vXq/3pPtdu3YtXq+Xxo0bBwUM/Dp06IBWq2XdunV4vV4URWHNmjVotdpSu7b07NmTX3/9lUGDBp3y+axZswaAa665ptTl119/PQCrV68usay0c1GaVatWAQSdn+I6deoUtF7z5s0xGAz8/PPP3HfffcyZM4djx44B0K5dO2666aYyjU44duxYpk+fHugKBpCWlsY///zDunXrAHC5XCW2q1mzZiDQ5mc0GgNdxPw1jPznrrT6OCaTiY4dO562jaDWH1u/fj1arZarr766xHK9Xh8YGdJ/jgwGAzfccANut5vffvstsO6mTZtITEykXbt2VKxYESj/tVVcad3AWrduDcAHH3zAY489xo8//kh6ejqgXnf9+vUrtctWixYtSszzd5fMzs4G4OjRoyQlJREVFUVCQkKJ9UNDQwPn239Nns01XBY+n4+1a9ei0+lK7ebVs2fPMu3nTM/byZT178+vYsWKpf4N+us9nen5Ka+zeb2aNm1aYl5sbCxAUG2xVq1aAWrtqUmTJrF69WrcbjdGo5FBgwbRpUuXs3sSQggh/rOkhpQQQoiLJjw8vNT5ubm5zJ49m2XLlrF3715SUlJQFCUoa0E5xTDu/kymJUuWnLIWjMPhICsrC1Azs6KiorBYLGfyVICibKST1TuqVq0aUJRxUNzJzsWJ/HWlhg0bdsr1/EGnypUrM3HiRMaMGcOff/7Jn3/+CUC9evW4+uqrGTBgQOBH6On8+++/fPXVV2zevJkDBw6Ql5cHEHhdSntNwsLCSt2XXq9+BfEPce8/d/7Az4n85+50MjMzcbvdREZGEhIScsp9FX8d+vXrx+eff85PP/3ErbfeCqiFwIFA1giU/9oqHhQ5MTAH0KxZM0aPHs3kyZP59ddf+fXXX9FoNDRs2JBrrrmG2267rdRrw1/fpzh/sPDEc3qqgOOJ5+JsruGy8L8+UVFRmM3mEsvLWivsTM/byZRn3VO105/xdfz48XLt70yd6/ecE68hgKeeeoqkpCSWL1/OzJkzmTlzJlarlY4dO9KvX78yBxGFEEKIE0lASgghxEVTWte03bt3c/fdd5OWlkZkZCRNmjShd+/exMfH06ZNG7p27Xra/fp/TNWtW5cGDRqcdv1TZVuVx6mCZMXbZTQaSyw7VTe94vxt7dat20kDLqA+d7/rr7+eTp06sXjxYv766y9WrVrF7t272b17N7NmzeLjjz+mWbNmpzzuBx98wOuvvw5AnTp16NatG3Xq1KFx48YcOnSIl156qdTtytL1qSzrFc/MOpXTvQZQdA6Lvw5NmjShdu3arFmzhuTkZCpUqMCCBQuwWq1BmVblvbaKO9lzHDRoEH369GHRokX89ddfrFmzhq1bt7J161Y++eQTvvzyS2rWrBm0TVmulzM5F2dzDZ8LWq22zK/1mZy3Ux23PEwm0ymX+wOup3O27z1n83qV9W8zNDSUjz76iC1btvD777+zYsUKtm7dym+//cZvv/3GNddcw9SpU8vfeCGEEP95EpASQghxSXnppZdIS0vjnnvuYcSIEUE/Tv3ZTKcTExMDQIMGDZg0adJp13e73RgMBrKysigoKCiRueF0Ovn222+pXbs27dq1O+l+KlasyP79+zl8+DD16tUrsTwxMRGgXPWQSjvGgQMHGDhwIO3bty/zdqGhodx4443ceOONAGzbto033niDv//+mzfffDNQa6g0iYmJTJ48mdDQUN59991AFx6/U21bVv4srZPV6fJngpxORERE4LXMzc0tNWh3stehX79+TJkyhd9++406deqQkpJCv379grrmlffaKqvo6GgGDBjAgAED8Pl8rF+/ngkTJrB161bef/99xo8fX+59+rPNDh8+fNJ1/OfCXwvpfF/DkZGRmEwmMjMzycvLK1HnKTU1tVxBmvNx3sriZNej/1wXz0rzB35Ke145OTln1Y4L8Z7j17hxYxo3bszjjz9OTk4Ov/76K+PHj2fhwoWsXbu2xPuCEEIIcTpSQ0oIIcQlZePGjQA88MADJTIlli9fHrhfvEvJifz1ZdasWRNUC8Vvy5Yt9OrVi+HDh6MoCgaDgcaNG+P1evn7779LrL9q1SpeeuklPvvsM+DkmQX+4y5cuLDU5b/++itAqfV8ysp/DH/XuxNNnDiRG2+8kW+++QZQi2t369aN7777Lmi9hg0b8tRTTwFF3QBPZvPmzfh8Ptq0aVPqj07/OStLRs7J+AN9ixcvLvHD/WSvS2kMBgPNmzfH5/MFCrsX5/F4+P3334GSdbj69u2LRqNh6dKlgdeqX79+QeuU99o6nQkTJtCxY8dALSBQs3VatWrFgw8+CBR1vyyvKlWqULVqVTIyMkqtIZSTkxP4m/I/rzO5hsuaaeNft23btvh8PhYvXlxi+R9//FGm/ZT3vJWnjWWxf//+Uov4+2uQFT8//oCmv8ZVcf73u+LK09bz/Z6TkZHBTTfdRJ8+fYLmh4aGcuuttwZqu53pNSqEEOK/TQJSQgghLin+mjsn/lhds2YN48aNCzwurYC2X/Xq1enRowfHjh3j2WefJTc3N7AsLS2NZ599loMHDwaN0HXnnXcC6g/d4j8009PTmThxIlBUS8jfXSc/Pz8oMHbrrbditVqZP38+8+fPD2rT3Llz+f7777FarSVGwyqP2267DavVyueff87PP/8ctGzJkiV8+umn7Ny5k8aNGwNqUfEjR47wzjvvBNWRURQlUCS++MhvpfG/Jps2bQqMigdqZtmbb77JsmXLADWT7Ew1adKEli1bsn//fiZOnBg4rz6fj9dee+20IysWd/fddwNqcG7btm1B7X3xxRc5dOgQ9evXp2XLlkHbValShYSEBFatWsXvv/9OxYoVS2TEncm1dSqVK1cmJSWFN954I2hfHo8nEEzwv5Znwn8unnvuuUC2DEBeXh5PPfUUubm5dOvWLVCD6EyuYX93sOLtL0ubJk6cyN69ewPz9+7dy5QpU8q0j/KeN38bzzYjyU9RFEaNGhV07IULFzJ37lxCQ0O55ZZbAvP9BdM//fTToCDlrFmz2Lp1a4l9n+z9pTTn+z0nMjISr9fLrl27SmRCJiUlBQYQKD6apRBCCFFW0mVPCCHEJWXw4MFMmDCBkSNHMnv2bGJiYjh06BA7duwgIiKCmJgYUlJSSElJOWUNpXHjxnHw4EF+/vlnli9fTuPGjdFoNKxdu5b8/HxatGjB448/Hlj/hhtuYMWKFcyZM4frr7+ehIQEdDod69atIycnh//9739ce+21gBqgCQsLIzs7mwEDBlCjRg0mTZpEbGwsr732GiNGjGDUqFHMmjWLuLg49u/fz86dO7FYLEycOLHMhZtLU/wYI0aMYPr06dSuXZujR48Gftw+88wzgfpGPXr04Oqrr2bRokVcffXVtGjRApvNxq5duzhw4AAVKlTg0UcfPeUxExISuOqqq9i+fTvXXHNNIEtq8+bNpKWlUa9ePXbv3k1qauoZPy9Qg4EDBw5k1qxZ/PHHH9SvX5+dO3dy8OBBmjZtyqZNm8q0n549ezJkyBA++ugjbrnlFlq2bElkZCSbNm3i2LFjVK1alSlTppRaN6hfv36sWrWKtLQ0hgwZUuo65b22TuX222/nl19+Yf369XTv3p2mTZtiNBrZvn07R44coXbt2gwePLhM+yrNXXfdxYYNG/j1118D17XFYmHt2rVkZGQQHx8f1K3tTK7hWrVqAQRGcOzatWtQQOZEHTp04L777uP999/nxhtvpG3btgCsXLmShg0bluk6Ku9587dxxowZbNiw4ayLccfFxbF7926uvvpqWrVqRUpKChs2bMBgMDBx4sSgLnIDBw5kwYIFLFy4kGuvvZb4+Hh2797N/v376devH99//33Qvk/2/lKaC/Ge8+KLL3LXXXcxYcIEvvnmG+rUqUNubi7r1q3D6XRy7733Bs6vEEIIUR6SISWEEOKSMmjQICZPnkzjxo3ZtWsXS5cuxeFwcNddd/HDDz8EgkJLly495X6io6P55ptvePTRR6lYsSJr1qxh48aNxMXF8cwzz/Dxxx+XGFHv5Zdf5vXXX6dhw4asW7eOf/75h6pVq/L888/z8ssvB9bTarVMmjSJOnXqsH37dpYvXx6ob9WrVy++/fZbevfuTVpaGr///jvZ2dncfPPNzJ07N6hA9pnq1asXc+fOpW/fvuTk5PDHH3+QmppKt27d+PTTTwMZKKB2/3njjTd44oknqFWrFuvXr+ePP/7A5/Nx11138d133512BDudTsesWbMYNGgQUVFR/P3336xdu5bq1avz4osvMn/+fMLCwti8efNZBaVq1qzJnDlzuP322ykoKGDp0qXYbDZmzJhBp06dyrWvkSNHMmPGDNq0acPOnTv5448/sNlsPPjgg8yfP5/atWuXut0111wTuC5O7K7ndybX1smYTCY+/PBD7rvvPqKjo1m1ahV///03VquVBx54gDlz5pR7BLjitFotU6ZMYcKECTRq1Ij169ezfPlyKlWqxFNPPcWcOXNK1Bcq7zXcs2dPBg0ahNVq5a+//mLdunWnbdcTTzzBm2++ScOGDVm7di1bt26lf//+zJw5s0zPq7zn7fbbbw/UT/vrr79KzUwqj0qVKvHll1/SqFEj/v77b3bv3k23bt2YPXs23bt3D1q3cePGfP7553Tq1InU1FSWLVtGhQoV+Pjjj+ndu3eJfZ/q/aU05/s9p1mzZnz55Zdcc801ZGdns2TJErZt20aLFi146623ePLJJ89q/0IIIf67NMrZFHwQQgghLgGdOnUiOTmZJUuWnFUmgBBCCCGEEOLCkAwpIYQQl7WsrCzS09PRaDSBWkdCCCGEEEKIS5vUkBJCCHFZSk9PZ8iQIaSnp+PxeGjRokWZu0kJIYQQQgghLi7JkBJCCHFZOnjwIKmpqWRkZJCQkMBrr712sZskhBBCCCGEKCOpISWEEEIIIYQQQgghLijJkBJCCCGEEEIIIYQQF5QEpIQQQgghhBBCCCHEBSUBKSGEEEIIIYQQQghxQUlASgghhBBCCCGEEEJcUBKQEkIIIYQQQgghhBAXlASkhBBCCCGEEEIIIcQFJQEpIYQQQgghhBBCCHFBSUBKCCGEEEIIIYQQQlxQEpASQgghhBBCCCGEEBeUBKSEEEIIIYQQQgghxAUlASkhhBBCCCGEEEIIcUFJQEoIIYQQQgghhBBCXFASkBJCCCGEEEIIIYQQF5QEpIQQQgghhBBCCCHEBSUBKSGEEEIIIYQQQghxQUlASgghhBBCCCGEEEJcUBKQEkIIIYQQQgghhBAXlASkhBBCCCGEEEIIIcQFJQEpIYQQQgghhBBCCHFBSUBKCCGEEEIIIYQQQlxQEpASQgghhBBCCCGEEBeUBKSEEEIIIYQQQgghxAUlASkhhBBCCCGEEEIIcUFJQEoIcclSFOViN+GMXK7tFkIIIS5n8vkrSiPXhRCXLglICfEfdtddd3HVVVexZcuWUpd3796dUaNGnfVx4uPjmTZtWrm2mTNnDq+99tpZH/tC2717N7fffnvQvDN5/kIIIURp1q1bx/Dhw+nQoQONGzemR48ePPfcc+zdu/diNy3ItGnTiI+Pv2DHW7duHffdd98FO96l5pFHHinxnW3UqFHEx8efdDp8+PBJ97dnzx7uv/9+WrduTZs2bRg5ciQpKSknXf/o0aO0bNnyjL7vlNbOhg0b0rFjR5566imOHj1a5n2NGzeOKVOmAHDs2DHuu+++Uz7Pc+muu+7irrvuOuU6Z/J3UZZt9u3bR/fu3cnOzi7Xvv1SU1N54oknaNOmDS1btmTEiBEkJyefdrsVK1Zw55130rp1azp06MDw4cM5dOhQ0DoHDx7k0UcfpWPHjrRs2ZLbb7+dFStWnFE7xZVHf7EbIIS4uLxeL6NHj2bevHkYjcbzcozZs2dTqVKlcm3zzjvvkJCQcF7acz4tWLCADRs2BM07k+cvhBBCnOj999/njTfeoGPHjjzzzDPExMRw8OBBvvrqK/r378+ECRO44YYbLnYzL4o5c+ZcckG5C8Hn8zFhwgQWLlxI//79g5Y99NBDDBgwIGheVlYWjz76KAkJCVSpUqXUfR4/fpyBAwdSo0YNXn/9dRwOB1OmTGHw4MHMnz8fg8EQtL6iKDzzzDPk5uae8fOIiYnh7bffDjz2eDzs37+fSZMmsWHDBn766SfMZvMp97FixQoWLVrEwoULAfjnn3/4888/z7hN58Mtt9xCp06dzvl+a9euTY8ePXj55ZeZOHFiubb1eDzce++95Obm8sILL+DxeJg8eTJDhw5l3rx5JV5vv3Xr1jF06FB69OjBpEmTyM/PZ8aMGdx+++38+OOPREVFkZGRwZ133klERATPPPMMISEhzJkzhyFDhvDJJ59clt/1xbklASkh/uNCQ0PZvXs306dP5/HHHz8vx2jWrNl52e/l4r/+/IUQQpy9pUuXMnnyZIYPH86wYcMC8xMSErjxxht54oknGDVqFHa7nXr16l3ElooLZefOnbz88sts2bKl1GBNjRo1qFGjRtC84cOHEx4ezqRJk9BoNKXud86cOeTk5PDOO+8QGRkJQFRUFAMHDmTlypUlAipffvkl+/btO6vnYjQaS3xfatWqFQaDgZEjR7J48eLTBlsnTJjAoEGDsFgsZ9WW86lSpUrn7R8p77vvPrp27crdd99Nw4YNy7zdggUL2L59Oz///DN169YFoEGDBvTu3Ztff/2Vvn37lrrdzJkzqVOnDm+99RZardrxqkWLFnTt2pX58+czdOhQvvvuOzIyMvj222+JjY0FoEOHDvTr148PP/xQAlJCuuwJ8V/XoEEDbrzxRj744AO2bt16ynW9Xi9ffPEFffr0oUmTJnTt2pVJkybhdDpPuV3xLmurVq0iPj6eFStWMGTIEJo2bUqHDh14/fXX8Xq9gNpV8PDhw8yfP5/4+HiSkpIAOHLkCCNGjCAhIYGmTZty9913s3379sBxkpKSiI+P5+OPP+baa6+ladOmvPPOO8THx7N06dKgNu3YsYP4+HgWLVoEgNPpZOLEiXTp0oVGjRrRp08ffvnll6BtunfvztSpU3nttddo3749TZo0YejQoRw4cABQU6r9/7pX/Dmf2GUvOTmZ0aNH06VLF5o0acLNN9/M4sWLS5yzL774gmeffZaEhASaN2/Oo48+SmpqamCdQ4cO8cADD9CmTRuaNm3Kbbfddsn9S6AQQohz4+2336Z27do8/PDDJZYZDAZeeukldDodM2fOBGDIkCHcdNNNJdZ96KGHgn5grl27ljvvvJOmTZuSkJDAyJEjSU9PDyyfN28eV111FXPmzKFDhw4kJCSwZ8+eMn8G/fHHH/Tt25fGjRtzzTXX8N133wUtL8tnotPpZPr06Vx77bU0btyYXr168f777+Pz+QC1y9f8+fM5fPgw8fHxzJs3r9RzOG3aNK699loWLVpE7969ady4Mf369WPDhg1s3LiRW265hSZNmtC7d+8SXYp27drF/fffT4sWLWjRogUPP/wwiYmJQevs3LmTYcOG0bZtWxo2bEinTp14+eWXKSgoCKxTls/3efPmER8fz6pVq0p9Hn4jR47E6/Uye/ZsoqOjT7kuwJ9//slvv/3G6NGjCQsLO+l6//d//8eXX34ZCEYBgSyZE7/zJSYmMmnSJMaNG3fa45+Jxo0bAwS63Y0aNYq7776bsWPH0qJFC66//nq8Xi9//PEHu3btCgSt5s2bx+jRowHo0aNHoDtjWb/LLl++nP/7v/+jZcuWtGnThieeeKJMXQcVRWHmzJl07dqVJk2acNttt7F58+bA8tK633344Yf06NGDJk2aMGDAAJYsWVLq63+6v6WYmBjatm3Le++9F5hXlmvp77//Ji4uLhCMAqhbty516tQ55fdK/3dxfzAKIDY2ltDQ0EC3vdjYWAYNGhQIRgHodDpq1qxZomuf+G+SgJQQgmeeeYbIyEhGjx6Ny+U66XrPP/88EyZMoGfPnrzzzjvccccdfP755zz00EPlLhj55JNP0rJlS95991169+7NBx98wJw5cwD1S3dMTAxdunRh9uzZVKxYkfT0dAYMGMC2bdsYM2YMkydPxufzcccdd5RI0Z82bRr33nsvEydOpH///tSoUYOff/45aJ2ffvqJiIgIunTpgqIoPPzww3z99dcMHjyYd955h+bNm/P444+X+LD/9NNP2bdvHxMmTODll19m69atjBw5ElDTsG+++WZA7aZ3yy23lHjeqamp3Hzzzaxdu5bHH3+cadOmUbVqVR5++GF++OGHoHWnTJmCz+fjjTfe4Omnn2bp0qW88sorgJqif//99+NwOJg4cSIzZswgIiKCBx98kIMHD5brtRBCCHFpS09PZ+vWrXTr1u2kWS0RERG0b98+EMzp27cv27ZtC/pMyM7O5q+//qJfv34ArFmzhkGDBmE2m3nzzTd55plnWL16NQMHDgwKoni9Xj766CPGjx/P6NGjiYuLK/Nn0PPPP8+gQYN45513qFSpEqNGjWLnzp1A2T4TFUXhgQce4IMPPuCWW27h3Xff5dprr+XNN99k7NixgBpk69KlCzExMcyePZuuXbue9FweO3aMV199lQceeIC33nqL7OxsHnnkEUaMGMEtt9zC9OnTURSFxx9/PHAO9u/fz4ABA0hLS+O1115j/PjxJCYmcvvtt5OWlgaogbU77rgDh8PBq6++ysyZM7nhhhv47LPP+PTTT4PacKrPd4CuXbsye/bs02a5TJw4ka+++or69eufcj3/eXzttddISEjg2muvPeW6UVFRgUCQ0+lk48aNvPTSS9SoUYOOHTsG1vP5fIwaNYrrrruOzp07n7YNZ2L//v0AQZlea9eu5ejRo0yfPp0nnngCnU7HDz/8QLNmzQKBj65du/Lggw8C6vfKhx56CCjbd9nvvvuOIUOGULlyZd544w1Gjx7Nhg0buO222wKv98msW7eORYsWMWbMGF5//XWSk5N58MEH8Xg8pa7/9ttvM2nSJK677jpmzJhB06ZNeeyxx0pd91R/S37XXnstS5YsIS8vL3AeTnct7d27l1q1apWYX6NGjcD5L82DDz4Y+N7rt3r1arKysgJZmtdffz1PPvlk0DpZWVmsWbNGMjmFShFC/Gfdeeedyp133qkoiqIsXrxYsdvtyhtvvBFY3q1bN2XkyJGKoijK7t27Fbvdrrz33ntB+/juu+8Uu92u/PHHHyc9jt1uV6ZOnaooiqKsXLlSsdvtypQpU4LW6d69u3L//feXemxFUZQ33nhDady4sZKUlBSY53Q6lR49eijDhw9XFEVREhMTFbvdrjzzzDNB+546darSrFkzxeFwKIqiKD6fT+natavy/PPPK4qiKH///bdit9uVn3/+OWi7J598UunQoYPidrsDberWrZvi8XgC60ybNk2x2+1Kenp64Fh2u/2kz3/ixIlKw4YNg56HoijK3XffrXTo0EHxer2BbW6//fagdUaNGqU0a9ZMURRFSU5OVux2u/LDDz8ElmdnZyuvvPKKsmvXLkUIIcSVY/PmzYrdblc+//zzU6736quvKna7XcnMzFTy8vKUZs2aKW+//XZg+Zw5c5T69esrx44dUxRFUW677Tald+/eQZ9r+/btUxo0aBA41ty5cxW73a589913gXXK8hnk/zz8888/A+scPHhQsdvtyieffKIoStk+E//4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NmfMmMGMGTNYvHjxaTOWijMajYG6VeXlvwZOzBY6UVm+y/qDucWLzPulpKSc0+vNn+WVlpZG7dq1A/OLDypQXv5zUJ52xsXFsWPHjhLzDx06dNosppUrV/Lwww8TGhrKF198UWqW/rFjxxg8eDBJSUm88cYbXHfddWVum7jySZc9IUSQnj170rt3b95///2gD0T/sKwnFgf/+eef8Xq9tGzZ8py248Qv2wkJCezfv5+4uDgaN24cmL7//nu+/fbbEv9yeqLrr78eRVF46623SEtLCxphKCEhgfz8fBRFCdr3rl27mD59+kkLUZal3Sdq3bo1GzZsKPGv3D/88AMxMTFlDn5t2LCB9u3bs3nzZjQaDQ0aNODxxx/Hbrdz5MiRMrdXCCHE5WHYsGHs37+fN954o8Qyr9fL2LFjKSgo4J577gnM1+l09OnTh6VLl7JgwQJ69uwZyLIICQnhqquuYt++fUGfffXq1WPatGmn7Ip/rj6DyvKZmJCQgMfjYcGCBSXWAQLfP073+Xs2/CMLNmjQIHCeGjVqxKxZswKj9a5bt466devyv//9LxCMOn78OLt27SpzFvX5smnTJipVqlSia+TJfP/99zz99NNBWTa5ubls2LCB+Ph4KlasyLfffltiArj11lv59ttvqVix4nl5LqUxGo3ExMSUGAWvtO+ScOrvsnFxccTExPDTTz8FrZOYmMjGjRtPmk1/JurXr09oaGjgGvL77bffznifx44dA6BKlSpl3qZjx47s3buXPXv2BObt2bOHvXv30qFDh5Nut337dh544AEqV67M7NmzSw1G5ebmBrryffzxxxKMEiVIhpQQooQxY8awcuXKoH8dqlu3Lv3792fq1Kk4HA5at27Njh07ePvtt2nTpg2dOnU6p20ICwtj+/btrF69miZNmjBo0CC+//57Bg0axJAhQ4iMjOSXX37hm2++CQzreyr+EfW+/PJLmjdvHhT46dKlC61bt+ahhx7ioYceok6dOmzevJmpU6fSqVOnEqnUp2s3qKP4NW3atERXhMGDB/PDDz8waNAghg0bRkREBN999x0rV67klVdeKfMX6quuugqz2czTTz/N8OHDqVChAv/88w87duxg4MCBZW6vEEKIy0OnTp0YNWoUEydOZMeOHfzvf/+jYsWKJCUl8dVXX7Fjxw7Gjx9fYsS1fv368dFHH6HV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szBy5EisW7cOs2bNikm9IuvU3rT3508IIaTuPv/8cyxevBjTp0/H7bffbpbn5ubi0ksvxV133YX77rsP2dnZ9fqHJhKfVq9eDZfLheeffx4JCQkAgDPPPBPjx4/H66+/jgceeABHjhzBK6+8grlz5+K6664DAIwcORLHjh3D119/XW0gtX79epSUlODdd99FVlYWAGDUqFG45JJL8NJLLyE3NxcejweLFy/GlClTcM8995jnLi8vx7ffftugQCrye9GwYcPQpUsXXH/99XjvvfdqbQG3aNEiTJgwwaxza5Seno709PRmOfd1112H5557Dp9++inOO++8Oh/3448/4vPPP8fKlSsxZswYAMDw4cNxzjnn4M0338Tf/va3qMf1798/bL2yshIzZ87E2LFjzf9Wa9euxdGjR/Hmm29i2LBhAPhrqbS0FI899hjefvvthjxV0oZQlz1C2imXywWHw1HlX1A++ugjXH755cjJycGoUaPwwAMPoKysDABvMjx79mwAwDnnnBPWTS8YDGLhwoUYNWoUhgwZgsmTJ+PgwYM11sHaZW3z5s3o06cPNm3ahMmTJ2Pw4MEYNWoUFi1aZDb9Hj9+PI4ePYr33nsvrOlyXl4eZs6cidzcXAwePBg33XQTfvnlF/Nxjhw5gj59+uDll1/GBRdcgMGDB+O5555Dnz598Pnnn4fV6ddff0WfPn3w6aefAgD8fj8WLlyIMWPGYODAgbjooovw0UcfhR0zfvx4LFmyBE888QTOOussnH766ZgyZQoOHDgAgDdFX7ZsWZXnHNllr6CgALNnz8aYMWNw+umn48orr8S///3vKtfsjTfewD/+8Q/k5uYiJycHd9xxB4qKisx9Dh06hL/+9a8YMWIEBg8ejKuvvrrJWrURQgiJjWXLlqFXr16YNm1alW02mw0PP/wwJEnCCy+8AACYPHkyLr/88ir73nbbbbj44ovN9R9++AE33HADBg8ejNzcXMyaNQvFxcXm9nXr1qF///5Ys2YNRo0ahdzcXOzZs6fOnzVffPEFLr74YrO72Pr168O21+Wzz+/3Y/ny5bjgggswaNAgnHfeeVi5ciU0TQPAu0q99957OHr0KPr06YN169ZFvYZLly7FBRdcgE8//RQTJkzAoEGDcMkll+DHH3/Etm3bcNVVV+H000/HhAkTqnRP+/333zF16lQMHToU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jnpvvvkmcnJywoKfMWPG4IwzzsBtt92G2267Daeeeip27NiBJUuW4OyzzzavW13rDfC7+A0ePLhKi7Obb74Z77//PiZNmoTbb78dqampWL9+Pb777js89thjdf6i3b9/fzidTtx7772YPn06MjIy8O233+LXX381b39MCCEk/px99tm47777sHDhQvz666+44oor0KlTJxw5cgRvvfUWfv31Vzz66KPo27dv2HGXXHIJVq1aBVEUq3TNmzlzJm699VbcdddduPjii8276W3fvj3sTrqRmuqzpi6ffX/4wx8wYsQI3H///cjPz0ffvn3x/fff44UXXsBll12G3r17A+Cfs0VFRfjyyy/Rr18/dOrUqR5Xt2a33XYbrrnmGkydOhXXXnstHA4H3nnnHWzcuBFLliwBwMfSfPbZZ7Fy5UoMGTIEBw8exPPPP49AIFDv8aGKi4tx6NAh9O7du9rQ6JFHHsGJEyfw0EMPVfmel5SUhN69e2PEiBEYN24cFixYAK/Xi9NOOw3r16/Hf//7Xzz77LPm/ocOHUJxcbE5ttWSJUtw4MABTJ8+HbIsh53bbrejf//+OOmkk3DDDTfgxRdfhCzLOOOMM/D555/j/fffx9y5c83xzo4fP47jx4+jf//+tbZab4xRo0bhzTffBGPMDDmMYPCLL75Ahw4d0Ldv3zp9173rrrswZcoU3HrrrbjuuusQDAaxcuVKBAIBTJs2rcnqbNyB7+6778aDDz6IP/7xj9i1axeWL18OoGEh69atWwHwkAngvwH27NmDk08+udrvrWeccQZyc3Nxzz334J577kFqaiqWLl2K5OTksJ4De/bsQSAQQP/+/c0yVVWxb9++KuNyGQYOHIihQ4di3rx5uPfeeyFJEp5++mlIkoTp06fX+/mRtocCKULagV9++QVXX321ue5wOHDyySfjzjvvxJQpU8xy40vl66+/jnfeeQepqam44IIL8Pe//938F9URI0bgrLPOwuLFi7Fp0yasXLmyRZ/L5MmT8dhjj2HKlCl4+eWXMXz4cLz99ttYvHgx5s2bB7/fj549e+LRRx+tczP5Sy65BBs3bqzS910URaxcuRLPPPMMnn/+eZw4cQJZWVm4+eab6/2F5LzzzsM///lP3Hfffbjyyisxb968sO2ZmZl46623sHjxYjzyyCMIBoPo27cvnn32WZxzzjl1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t99+S9rHMAwee+wxDjvsMAYPHszhhx/Oc889t8Nzr1y5kmnTprH//vuTm5vL1VdfTV5eXq37b9myhZEjR/LAAw80+DquueYa+vfvnzQNGjSIsWPH8o9//IMtW7bU+1y33HIL9957LwBbt27lggsuYNOmTQ1u084466yzOOuss+rcZ2feF/U5ZvXq1UycOJHS0tIGnduSn5/PzJkzyc3NZeTIkVxxxRVs3759h8d99tlnnHzyyQwePJi//OUv3H777ZSXl9vba/rdJk5N9bsRey5HczdACNE6qarK4sWL2bp1Kx07dkzaVlFRwWeffdZMLRNCCCFapvnz53PPPfcwduxYrr32WrKzs1m3bh0vvPACJ554IrNnz+boo49u7mY2i5dffnmPC+Ua07p16zjzzDPZb7/9uO2221AUhccff5zJkyfz+uuv07t3bwDuuOMOnnnmGS699FIGDx7Ml19+yc0334zD4eC0006r8dzbtm3j7LPPpnv37tx5550EAgHuvfdezjnnHF5//XWcTmfS/oZhcO211+L3+3f6erKzs5kzZ479OBqNsmbNGu666y4WLVrE22+/jcfjqfMc3333HR999BEffPABAN9++y1ffPHFTrepMZxyyimMGzdut5+3d+/eHHzwwdx6663ccccdDTo2Go1y/vnn4/f7ufHGG4lGo9x9992ce+65vPbaa9V+35aPPvqISy65hJycHO677z4ikQjz5s1j0aJFvPDCCzgcDi6++OJq/0BdUlLCZZddRk5ODp07d97paxatgwRSQohGMXDgQFauXMn777/PlClTkrZ99tlneL1e0tPTm6dxQgghRAvz2Wefcffdd3PJJZcwY8YMe31OTg4nnHACM2fO5JprrqFfv37ss88+zdhS0RSeeeYZvF4vDz/8MD6fD4ADDjiAiRMn8uyzz3L99dezceNGnnzySa677jomT54MwOjRo9myZQtff/11rYHUyy+/TFlZGQ8++CBZWVkAtGnThrPPPpvvv/++WqDy/PPPs3r16l26HpfLxbBhw5LWjRo1CqfTydVXX80nn3yyw7B19uzZTJkyBa/Xu0ttaUwdO3as9g+1u8sFF1zAhAkT+Nvf/sagQYPqfdz777/P77//zjvvvEPfvn0BGDBgAMcccwzvvfcexx13XI3HPfDAA/Tp04dHH30Ul8sFmL+zQw89lNdee41TTz2V7t27071796TjLrnkEjIyMrjrrrtQFGUnr1a0FjJkTwjRKHw+H+PHj+f999+vtu3dd9/l8MMPx+FIzsQLCwu56aabOOigg9hvv/3Iyclh+vTpbNy40d5n/fr1XHjhheTm5jJ06FBOO+20Ov/1a/PmzUyYMIFJkybV2Y35l19+4dxzzyU3N5cRI0Zw4YUXsmLFCnv7ggUL6N+/P9999x1Tp05l6NChjBkzhjvvvJNYLFbtfMXFxQwePJh77rknaX0gEGDkyJE8+OCDtbZFCCGEqGrOnDn07t2b6dOnV9vmdDq5+eab0TSNRx55BICpU6cyadKkavtefPHFSV8wf/rpJ84880yGDh1KTk4OV199NYWFhfb21157jYEDB/Lyyy8zZswYcnJyWLlyZb3/Hn/++eccd9xx9nCxN954I2n79u3bmTVrFuPHj2fIkCGcfPLJfPLJJ0n7hEIh5s6dyxFHHMHgwYM57LDDmD9/PrquA+awoNdff51NmzbVOXT+gQce4IgjjuCjjz7imGOOYfDgwRx//PEsWrSIxYsXc8oppzBkyBCOOeYYvvvuu6Rjly9fzrRp0xgxYgQjRoxg+vTpbNiwIWmfZcuWMWPGDA444AAGDRrEuHHjuPXWWwkGg/Y+/fv357nnnuP//u//yMnJYfjw4Vx22WXk5+cn/cz79+/PggULarwOMHvETJ061Q6jwPzs1bFjR9avXw/Axx9/jNvt5uSTT0469r777qtzaN3kyZN5/vnn7TAKsHvJhEKhpH03bNjAXXfdxS233FLr+XbF4MGDAeyhXddccw1/+9vfuOGGGxgxYgRHHXUUsViMzz//nOXLl9uh1WuvvcasWbMAOPjgg+0SEbFYjOeee45jjz2WIUOGMGHCBO66665q1/XNN98wefJkRo4cSW5uLjNnzqzX0EHDMHjkkUeYMGECQ4YM4bTTTmPp0qX29pqG3z322GMcfPDBDBkyhNNPP51PP/20xt//jt5L2dnZHHDAATz88MP2uvq8lr7++mt69eplh1EAffv2pU+fPnV+xl69ejVjx461wyiAdu3a0bt3bz7//PMaj/niiy/48MMPmTVrlvzDtAAkkBJCNKKjjjrKHrZn8fv9fPnllxxzzDFJ+xqGwbRp0/jmm2+48soreeyxx5gxYwbfffcdN9xwAwC6rjNt2jQCgQB33HEH8+bNIzMzk4suuoh169ZVe/68vDymTJlCZmYmTzzxRK1/+L7//nv++te/AnD77bdz6623smXLFk4//fRq3f+vvPJKRo4cyUMPPcQxxxzDo48+yssvv1ztnJmZmRxyyCG89dZbScU0P/roIyoqKjjhhBPq90MUQgix1yssLOTXX3/loIMOqrVHQWZmJgceeKAd5hx33HH89ttvSX8fS0tL+fLLLzn++OMB+PHHH5kyZQoej4f77ruPa6+9lh9++IGzzz47KUSJxWI8/vjj3HbbbcyaNYtevXrV++/x9ddfz5QpU3jwwQfp2LEj11xzDcuWLQPMujUnn3wyP/30E5dffjkPPPAAXbp0Yfr06bz55puA+fngwgsv5NFHH+WUU07hoYce4ogjjuC+++6zPx9cfPHFjB8/nuzsbF566SUmTJhQ689y69at/Otf/+LCCy/kP//5D6WlpVx66aVcccUVnHLKKcydOxfDMLj88svtn8GaNWs4/fTTKSgo4N///je33XYbGzZs4K9//SsFBQWAGaydccYZBAIB/vWvf/HII49w9NFH88wzz/D0008nteHee+9F13XuuecerrrqKj777DNuv/12e/uECRN46aWX6uzlMnnyZM4777ykdevWrWPFihV2D7k//viDHj168OOPP3LiiScyaNAgJk6cyEsvvVTrecHsDWUFQaFQiMWLF3PzzTfTvXt3xo4da++n6zrXXHMNRx55JH/5y1/qPOfOWrNmDUBSL5uffvqJLVu2MHfuXGbOnImmabz55psMGzaMDh06AObP8KKLLgLMMPfiiy8GzNfj7NmzOeSQQ3jwwQc544wzePbZZ7n44ovtz2tvvPEGU6dOpVOnTtxzzz3MmjWLRYsWcdppp9m/79osXLiQjz76iOuuu44777yT7du3c9FFFxGNRmvcf86cOdx1110ceeSRzJs3j6FDh/L3v/+9xn3rei9ZjjjiCD799FO7jlN9XkurVq2iZ8+e1dZ3797d/vnXJDMzk82bNyeti0QibNmypVpYC+Z7+d///jc5OTkcccQRtZ5X7F1kyJ4QotFMmDABr9ebNGzvo48+om3btowcOTJp3+3bt+P1ern66qsZNWoUALm5uaxfv97+4FRQUMDq1avtD54AQ4YMYc6cOYTD4aTzFRUVcc455+DxeHjiiSfIyMiotZ133303PXr0YP78+WiaBsDYsWM59NBDuf/++/nPf/5j73vKKafY/zo9evRoPv74Yz7//PMaC7ifdNJJvPvuuyxYsIADDjgAMD/kHHjggXTq1KneP0chhBB7N6t3SJcuXercr0ePHnzyySeUlJRw2GGHcdNNN/H222/bf7c+/PBDYrGY/Y9Cd999N7169eLhhx+2//4NHTqUo48+mldffZUzzjjDPveFF15oBz15eXn1/nt866232mFF9+7dOfTQQ/nhhx/Yd999eeKJJygsLOSDDz6wr238+PFMmTKFO+64g2OOOYavvvqKb7/9lnvuucfu/TJmzBg8Hg//+c9/OPvss9lnn31o06ZNjcO+qgoEAtxwww12m1auXMndd9/NbbfdZvckqqio4NJLL2XNmjUMGDCAOXPm4PV6efLJJ0lNTQXMzwCHHHIIjz76KFdffTXLly9nwIAB/Oc//7H3OfDAA/nmm29YsGBBUsH1fv36MXv2bPvx0qVLk3qUt2nThjZt2tR5HVUFg0GuvvpqXC4XZ555JmAGmdu2bePKK69kxowZ9O7dm3fffZfrr78eoNYhe4mOO+441q5di8fjYc6cOUl1nJ566ik2btzIQw891KC21iYxtPH7/fzyyy/Mnj2brl27JoWM0WiUm2++OWno2/fff580pK9NmzZ2iDVgwAC6du3KypUreeWVV5g5c6b9+xgzZgzt27fnqquu4ssvv2TcuHHcddddjB07lrvvvts+n9Ub67HHHuOqq66q9RpcLhfz588nMzMTMEPgf/7zn6xcuZJ99903ad+KigoeeeQRzjjjDK688krA/PwZCARqDA3rei9ZBg8eTCQS4aeffmL8+PH1ei2VlZXRo0ePautTUlKSCpRXddJJJ/HQQw8xf/58Tj75ZILBIPfddx9lZWVJPfcsn376KatWreKf//xnne0RexfpISWEaDQej4eJEycmfch65513OPLII6v9C2+HDh14+umnGTlyJBs3buSbb77hmWee4eeff7Y/3LZr146+ffty3XXXcfXVV/PWW2+h6zqzZs2qVi/jvPPOY8WKFVx77bVJXc6rqqio4JdffuHII4+0P4wDpKenc9BBB/HDDz8k7T98+PCkxx07dqSioqLGcx944IF07tyZ//3vf4D5r7LfffcdJ554Yq3tEUIIIaqyem7UVlzYYv0dMwwDn8/HIYccwrvvvmtvf+eddxg9ejQdOnQgEAiwZMkSxo8fj2EYRKNRotEo3bp1o0+fPnzzzTdJ5x4wYIC93JC/x9Y/MgF07doVwB5C/8MPPzB8+PBqQdtxxx1nh14//PADDoejWo8Ka9hh1b/T9TFixIikawEziLMkhglghh05OTl4PB7755SamsqoUaP49ttvATNIePbZZ3G73axcuZJPPvmEBx98kMLCwmohXdXQrGPHjgQCgQZfh8Xv9zNt2jR++eUX7rzzTvvnGYlEKCoq4qabbuKMM85g9OjR3HLLLYwdOzapgHhdbrjhBh577DFGjx7NhRdeyFdffQWYvWruu+8+br75ZtLS0na67ZZNmzYxaNAge8rNzeW8886jbdu2zJ07NykIy8zMTAqjKioqKCgosF9ftbFeK1VrUR199NFomsaCBQtYs2YNeXl51Xryd+/eneHDh+/w9da3b1/79QOVr/mysrJq+y5evJhgMFjttV31uS11vZcs1u8+sdzFjiT25K+qrhpPl1xyCeeffz73338/o0eP5rDDDiMlJYWDDz64xjpezz33HAMGDODAAw+sd9tE6yc9pIQQjerII49kxowZbN26FbfbzXfffVdrV+Q333yTe+65hy1btpCZmcmAAQOSPoBYd5B58MEH+eijj3jjjTdwOp0ccsgh3HTTTUm9oAKBAF27duXuu+/mpZdeQlVrzt/LysowDMP+QJqoXbt21T5AVL3Di6qqtf4hV1WVSZMm8cQTT3DDDTfwv//9j9TUVA499NAa9xdCCCFqYn3J3NEt0jds2EBKSor9hfj444/nzTffZNmyZbRr144FCxbYQ8NKS0vRdZ1HHnnErjuVyO12Jz1O7PHQkL/HicdZf4utv5slJSV069at2nNbf5NLS0spKSkhKysr6R+NwKyXAzV/0d8RqwdToroKYRcXF/Puu+8mhXsWq/eJNQTvueeeo6Kigk6dOjFkyJBqP8eanquuzxI7smXLFqZNm8aaNWu49957OeSQQ+xtKSkpKIpi92KzjBs3jq+//pr8/PwaP/8kssKDAw44gKOPPppHHnmEAw88kFmzZnHEEUcwZsyYpJ5Nuq4TjUar1Qndkezs7KT6mi6Xi44dO9bYwz0lJSXpsfUaqKlXTqKSkhL7uRI5HA6ysrIoKyujuLgYoNbPhb///nudz1G1DdZr3qp3lsiq1Va1B1Pbtm13eO6q7yWL9dpqyB0PU1NTa+wJ5ff76wwbHQ4HV155JZdccgkbNmygffv2pKenc8YZZ1T7vRUXF7NgwQKuuOKKerdL7B0kkBJCNKq//OUvpKSk8P777+Pz+ejatSv77bdftf1++uknrr76as466yzOPfdcuwbAHXfcwcKFC+39OnTowI033sgNN9zAsmXLeP/993nkkUfIysqya0mA2Y38jz/+4Pzzz+fpp5+udqc/S1paGoqiJBUTteTl5SX9K9fOmDRpEnPnzuXLL7/kvffe46ijjqrxw6kQQghRm7Zt2zJs2DA++OADLrvsshr/kcXv9/PNN98wceJEe93o0aPJzs7mvffeIzs7G7fbzWGHHQZUhhVTpkyp8e5lO7pTWX3/HtclIyODvLy8auutdVlZWWRkZFBUVEQsFksKpbZv327v09jS0tI48MADOeecc6pts4KX+fPn8+STT3LTTTdx2GGH2V/kqxYU353+/PNPzj33XEKhEI8//jj7779/0vYePXpgGAaRSCTps4cVIFX9RzbL999/TygUSgqyHA4H/fv3Z/ny5WzZsoUlS5awZMmSaoW1582bx7x58/jkk0922GMpkcvlsutWNZT1Gqjr5jWAHZLk5eUl9cqzepJlZWXZn/tq+1y4O19vVi+vgoICevfuba9PvKlAQ1k/g4a0s1evXvzxxx/V1q9fv54hQ4bUetyCBQsIh8OMGzfOLogejUZZvnx5tdEAX331FdFoVGpHiWpkyJ4QolG5XC4OOeQQPvjgA957771ab9m7aNEidF3nkksuscOoWCxmd4XXdZ1FixZx4IEHsnTpUhRFYcCAAVx++eX069evWlHF7Oxs/vKXv3DkkUfyn//8p9auyz6fj/3224/33nsv6W55ZWVlfP7559VqXTVUly5dGD16NE8//TR//PFHjXc8EkIIIXZkxowZrFmzptrdW8H8e3nDDTcQDAaTCl1rmsaxxx7LZ599xvvvv88hhxxi97JITU1l4MCBrF69msGDB9vTPvvswwMPPFDnXbka8ve4Lvvvvz+LFi2q1vPrzTffJDs7mx49epCTk0M0Gq12116r6Ln1d7q2ntC7g3VnwQEDBtg/p/32248nn3ySjz76CDCLWfft25eTTjrJDqO2bdvG8uXLa+wds6u2bNnCOeecg6IovPDCC9XCKMAOlN55552k9dZd3GrqKQbwv//9j6uuuiqpl43f72fRokX079+f9u3b88orr1SbAE499VReeeUV2rdvv7sudYdcLhfZ2dnV7oJX9TWRk5MDVP95vPPOO8RiMUaOHEmvXr3Izs7m7bffTtpnw4YNLF68OGm4567ad999SUtLs19Dlg8//HCnz2ndSKhz5871Pmbs2LGsWrWKlStX2utWrlzJqlWrGDNmTK3HffDBB1x33XVEIhF73auvvkppaWlSTz2AJUuW0LFjxx3WwRN7H+khJYRodEcddRTTpk1DVdVaCxla/wJz8803c9JJJ1FSUsJzzz1n3z2koqKCgQMH4vF4uOqqq7jkkkto164d3377LX/88Qdnn312jee99tpr+eqrr+waCDWZOXMm5557LhdccAGTJ08mEokwf/58wuFwjbfXbqiTTz6ZK664gj59+iTVqBBCCCHqa9y4cVxzzTXccccd/PHHH5x00km0b9+ejRs38sILL/DHH39w2223VSucfPzxx/P444+jqmq1oXlXXHEFF1xwATNnzuS4446z76a3ZMkS+65kNdmZv8c1Oeecc3jzzTeZMmUKM2bMIDMzkzfeeIPvv/+e22+/HVVV+ctf/kJubi7//Oc/2bZtG/vuuy8//PADjzzyCCeeeKLdMyM9PZ38/Hy++OILBgwYsFsDkYsvvpjTTz+dadOm8de//hW3281LL73Exx9/zP333w+Yn2PmzZvH/PnzGTZsGOvWrePhhx8mHA43uD5UYWEh69evp2/fvrWGRrfeeisFBQXcdNNN+P1+Fi9ebG9LTU2lb9++5ObmctBBBzF79mwCgQD77LMPb7zxBj///DPz5s2z91+/fj2FhYV2bavzzjuP999/n4suuohzzz2XcDjMI488Qnl5OZdcckmdvZnat2+ftK3quRvLmDFj+Pnnn5PWWXdX/uijj/jLX/5C3759OfHEE7n//vsJBALsv//+/PHHH8yZM4fc3FzGjRuHqqpcccUVzJo1y35fFBUVMWfOHDIyMmrsJbezUlNTOe+887j//vvxer3k5OTwww8/8MILLwA7F7IuXLgQr9dr15uqz2vpqKOO4qGHHuL8889n5syZgHnDg379+nHkkUfa+/3++++4XC77PXf66afz3//+l2uuuYaTTz6ZZcuWcffdd3PUUUfZ4Z/lzz//tI8TIpEEUkKIRnfggQeSnp5Op06d6NOnT4375Obmcv311/PEE0/w/vvv065dO3Jzc5kzZw7Tp09n4cKFjB8/nscff9y+G05paSk9e/bk5ptvrrXnUfv27bniiiu4+eabeeONNzjhhBOq7TN69GieeOIJ7r//fq644gpcLhejRo3i3//+d7XirDtj/PjxKIoivaOEEELsknPOOYfhw4fz1FNP8e9//5vCwkKys7MZM2YMt912W41f+Pbdd1/69etHUVERo0ePTto2duxYHnvsMebMmcOll16K0+lk0KBBPPHEE3UGCG63u8F/j2uSnZ3NCy+8wN13382tt95KJBJh3333Zd68eRx88MGAWa/q4Ycf5v777+fJJ5+ksLCQrl27csUVVySFA5MmTeKLL75g+vTpXHrppUl3tdtV++67L8899xz33nsvV111FYZh0K9fP+bOnWu3c9q0aRQVFfH0008zd+5cOnXqxPHHH2+3v7S01A5IduTzzz9n1qxZPP300+Tm5lbbHg6H+fzzzwFqHB6Zk5PDM888A8B//vMf5syZY9/RsG/fvsyZMydpaOe8efN4/fXX+fPPPwHo06cPzz33HHfffTdXXXUV0WiUnJycWl9jdal67sZy+OGH89Zbb7Ft2za7p31ubi4HHnggd999N9999x3z58/ntttuo0ePHrz66qs88sgjtG/fnrPPPpuLL77YDoAmTZpESkoKDz/8MNOnTyc1NZVx48ZxxRVXVKs/taumTZuGYRi89NJLPPbYYwwdOpQrr7yS2bNn77AmVk2+/PJLJkyYYA/H3NFrCcweZk888QS33XYb1113HU6nkzFjxjBr1qykWmAzZsygS5cu9murX79+PPzww9x9991ceOGFtGvXjgsvvJBp06ZVe46CggL69+/f4OsRrZ9i7GwFPSGEEPXy7rvvctVVV/HFF1/UWqhSCCGEEKI1Ouyww3ZpGFp9GIbBcccdx+GHH86MGTMa9bl2l2g0yttvv01ubi6dOnWy1z/33HPceuutLFiwoN4hJpg3PTj00EN55ZVXGDhwYGM0WYjdTnpICSFEI/n444/55ZdfePHFF5k0aZKEUUIIIYTYq/zvf/9LKtjdWBRF4R//+AfXXnstU6ZMqXV42p7E4XDwyCOP8NRTT3HRRReRlZXF8uXLue+++zjhhBMaFEYBPP744xxxxBESRokWRXpICSFEI3nyySe57777GDlyJPfdd1+dt84VQgghhGhtVq9eTceOHXdq+NnOuOGGG0hPT7drIe3pNmzYwD333MOCBQsoLS2lc+fOHHfccUybNg2n01nv86xatYrzzjuP119/fZfvEC1EU5JASgghhBBCCCGEEEI0qca7P6oQQgghhBBCCCGEEDXY6UAqHA5zzDHHsGDBAnvdhg0bmDJlCsOGDeOoo47i66+/Tjrm22+/5ZhjjmHo0KGcffbZbNiwYedbLoQQQgghhBBCCCFapJ0KpEKhEFdccQUrVqyw1xmGwfTp02nXrh2vvvoqxx9/PDNmzGDz5s0AbN68menTpzNp0iReeeUV2rRpw8UXX0x9RwwahoHf76/3/kIIIYQQezP57CSEEEKIPVmDA6mVK1dy6qmnsn79+qT133//PRs2bODmm2+mT58+TJs2jWHDhvHqq68C8PLLL7PffvsxdepU9tlnH2bPns2mTZv44Ycf6vW85eXljBw5kvLy8oY2WQghhBBiryOfnYQQQgixJ2twIPXDDz+Qm5vLSy+9lLR+yZIlDBw4MOkOCiNHjmTx4sX29lGjRtnbvF4vgwYNsrfvEaIVEC4BPdbcLRFCCCGEEEIIIYRotRwNPWDy5Mk1rs/Ly6N9+/ZJ69q2bcvWrVvrtb3ZFf8CH+RALGg+1rzgSAVnOrgywZkJrixwtwF3dnxqB94O4O0M3i7mvorSnFchhBBC7HESh4wZGLVu25ntmqKhqdruaKYQQgghhGhCDQ6kahMIBHC5XEnrXC4X4XC4XtubneYFZ0ZlIBULmFMor2Hn8HSElG7g6wEpPSG1J6QPgNQ+oLlBUUHRQHGYc/kQLYQQTcYwDAwMO+SwlhuyLvE8dZ2zIcs1nbPqttr21XXdnKMnPTYwamx3tedKaItuJB+LkRwIWc9hGDW0v8pzJK6rur7qtpq2V1Xb8VneLEZ1HlXTIUIIIYQQu1VMN9DUlt0JZU+6ht0WSLndboqLi5PWhcNhPB6Pvb1q+BQOh0lPT99dTdg1aX3hxC0QzINwIYSLIVIM4SIIFUCkyFwXLjYfh4sSthdCrNwMsMrXmFNVigN8Xc2QKm0fSB8I6f3B4QPVZU6aG1Q3qE5QHfHQymEuq05QrPU7fXNEIYTYrXRDxzAMc45hP65rOXH/2rbXtk3XdXT0ynnC89sTOoZu2PvZ56gtQEoMiRKCGHtdDYFO0nkSA5mE4zAA62+9AYqi2OsTl8HcT0Exz1/DMda2mh4nUuIHW+urPq6qpu0KCcs1HJe4vabnquvYOo9v4HkA/GE/5WGpjySEEEKIpqGpCpe9uIiV2/3N3ZSd0rd9Kv85fXhzN8O22wKpDh06sHLlyqR1+fn59jC9Dh06kJ+fX237gAEDdlcTdp2igLe9OdVFj4EeMntTxYIQ9UPFJqhYDxUbILDVDK1C+RDYDOWrzf3K15rT9s/jz6dBam/I2A+yhkLGIDN4SvpXYMXsRWX1qlIdZmileeNhlhVguapM0vNKiL1NUihTx1QtwLHWU7k+pseI6TGiRhRd14kZ5rKhG0T1KDEjlhQuWc9fNVCye9wYZkCUFMLE16Nghy9V11WdJ4YWqqImPVYUxZ5balpvr7PWq9XDm9rOU3W56nNYx4umEdWjzd0EIYQQQuxlVm7389vm0uZuRquw2wKpoUOHMn/+fILBoN0rauHChYwcOdLevnDhQnv/QCDA77//zowZM3ZXE5qOqoHqMwMhS3o/iIXMcCpSaoZSkRKz15TiAD0IFRuhbAWU/AbFv0G4wHxctgI2vm7ulzkEssdAx4PNHlWGAUYMjKg56VGIlpk9s4xoQnilVPaqUp2geeI1sFLjoZXb7IGlecztQohmYwU1MSNmhz/1eawbOhE9YgZCeoxIzFy2AqKkwInk4ClxXbWhUVXzk3jwoyoqarxHpqqoScGLFQZZy7XtV9dc7J1iesx+3Vqv3aTH8e2J661lKyi1HvvDfkZ2GtnclySEEEIIIXbCbgukcnJy6NSpE7NmzeLiiy/ms88+Y+nSpcyePRuAk046iccee4z58+dz0EEHMXfuXLp27Upubu7uakLz0+Khj7utOTQvWm4O66vYbNaiSulpBk69zwEUCG6F4qVQ8CPkL4DgFij62ZyWPwDp+0LHQ8zJ17Xu5zaMeGAVMadomTn00P7XYwU0JyjxNjrTwZlm9rTSPPGgyiXDAYXYAcMwiBmVX4oTvzwnrrPmET1CJBYx53qESDRi9joyzOFkMWLmOfX4nFhl3Z7EzCaeISmKgqZoSYGRgoKmauZc0VDU5G1WeJQYFonWxXqthWNhwrEwkZi5bL3+wrq5LmnZ2hYLE9WjSa/VqB5N2sfanrg+cV1UjxKNVYZKSeurTFVrR+2q/TvvzwkDTtit5xRCCCGEEI1vtwVSmqYxb948/u///o9JkybRo0cP5s6dS+fOnQHo2rUrDzzwALfffjtz585l+PDhzJ07t/V+MVIUs3eSM9W8A1+kGILboXwjlG8AV7pZAL1TJ+h0uBkoVWyE/O9g22dQuBBKl5nT8jnQNge6nggdJtTcw0lR4jWmaun9ZBigh80pVmG2xwqrVAcoLjOwUl3xkMoXr2nlrDyv6orPnRJciRbP6nlUW08Na1tEjxCKhiq/6OsRO3Cq2nspqW5QfG6FRKqioqmaHRSpiopTc+JW3EnrEnsbiZYlpscIxUIEo0FC0VDlcixkPo6vC8XM15P9OP76stbby9Fw0vpQLGQHSFWnmBFr7svfJZqi4VAdSZOmavZ6TY3PEx8rDgwMjt7n6OZufr2Fw2EmTZrEddddZ/+D3IYNG7juuutYvHgxnTt35tprr2Xs2LH2Md9++y233347GzZsYOjQodx2221069atuS5BCCGEEGK32aVA6s8//0x63KNHD5599tla9x8/fjzjx4/fladsmRQFXFnmlNLTrDflXwPl68HdxuyppCjm3flSukGPU80heds+g60fmz2oCn4wJ1cWdDkWepwOnh3UuqraBqsHV1V61KyJpUfjvbpKzGVDp7JwixoPrpwJdaxSwOGN3z3QCrPiNawUp9SxEk1KN/RqPTms3hzWPBgL2sGAHSwRSxoGRNUSbqj2F2MrVNIUDafqTAqYrF5LYs8ViUWoiFQQiAYIRAJURCsIRAIEo0ECkYC5Pmo+tiZre9IUC1ZfFw3uMfWMFBRcmgun5sSpOu1ll+rCoTnMx6ozabtDdSTta4VCifvZ6xIe2/OEYxo67cp7pzhYjEPdbf+21qhCoRAzZ85kxYoV9jrDMJg+fTr9+vXj1Vdf5eOPP2bGjBm8++67dO7cmc2bNzN9+nQuueQSxo0bx9y5c7n44ot588035f83QgghhGjxWsanuNZEc0Nab/B2NAug+9ead+7zdjCDHIsrC7pNMqeKzbDpf7Dxf2ah9DVPw9rnofOR0OtsSO21a21S48XS62LE4iFVNGFIYD3qWGk+cKRUBlX2ZPW+kg/Uona6oVcbOpQ4hMgKFkLREGE9XDl8Lh4uJQ4NsnoqWYGSpmo4NScexWMHSy3li+3ewDAMwrEw5ZFyysPl5jxSTkW4onI5UlHrZAVO9nKkokl7Ebk0Fx6HB7fmxu1wm/P4sktzJa1LfGwtuzRX5WPNbfamq2Xu0lxJk4Sje56VK1cyc+bMavXbvv/+ezZs2MCLL76Iz+ejT58+fPfdd7z66qtccsklvPzyy+y3335MnToVgNmzZzNmzBh++OGH1lXyQAghhBB7Jfn21VwcPkjvD95OULoKKtaZPaVcmdX39XWGfS6CPudD3tdmGFX0M2x6y5zaT4B9pkHaPo3XXkUDTQNq6GFlqbGOVZXQSlGShwFqPrP4usNbGVRpVmDlksCqFYvq0Wq1bsKxMOFomEDUDBCsXieJw+gSb3tvBUtWLwu35sbn9O1yrwuxawzDIBgNUhYuoyxUhj/iN+dhf42TFTpZy9a8sXocuTQXXocXj8OD1+nF6zAnj9NTuRzfZoVK1rLX4cXtcONxeOzJrSU/dmkuGXYpklgB0uWXX86wYcPs9UuWLGHgwIH4fJU3SRk5ciSLFy+2t48aNcre5vV6GTRoEIsXL5ZASgghhBAtngRSzc2ZDllDzCCqbLk5nM/b0QyAqlIdZg2pDhOgaCmseQq2fwHbPzfnnY4wg6kdFUBvLDuqYwXmMEA9AkbE7HEVLjSLu8dvDQ9UBlZavJ6VIy0eWMWHHEoPqz2ebug11rkJRoN2b5fEoXR2b6b43d0Sh/O4NJcdMkkPpqZjhUoloRJKQ6WUhkopCZVQFiqz56WhUsrClfOyUJk93529kXxOHynOFHPuSrGXE6cUZwpep7faY6/Dm7Sfx+GR15FocpMnT65xfV5eHu3bJw+/b9u2LVu3bq3XdiGEEEKIlkw+le8JVA3SeoE7E0qWmYXPvR3MIW+1yRoCWXebtahWzoetH8GW92Drh+Ywvz7nm/Wp9jSKGq9jVUtPK8OIh1XxKVwEwW0JgZV1t8B4vSpHWnxIoCchsIrPpYdCozEMo8ZizP6wn4qwWaMnrIeJxsx6ThYVNakGjdvpxulxSm+mRqYbOv6wn+JgcbWpJFRCSbDEnheHis3wKViS9LvbGZqikepKJc2dRporjVRXatKU4kyp8bEVOqW4zOBJehuJ1ioQCOByuZLWuVwuwuFwvbYLIYQQQrRkEkjtSVxZ0GYklP4JZSvB09YMW+qS2guGzYaSv8GKueZd+ta/DJvfg77ToPspO64PtSdRFDNsUl01b7d6WOkR846BwS3xHlfxIYFW4XXNFR8OmGYOj9Q8lWGV6paC6/Vg3TEs8U5ggWiAslAZ5ZFye7hdVI/adVESixv7HD6cLnNZwqbdyzAMSkOlFAWLKAwUUhgopChYRFGgKHkeLDJDp2DJTvdYcqgOMtwZpLvT7SnNlZb0ONWVaq9Pc6fZyx6HR373QtTB7XZTXFyctC4cDuPxeOztVcOncDhMenp6UzVRCCGEEKLRtKCkYi+huSBjoDkvWWYOa3Nl7Pi4jH1h1ANQ8BP8eR+ULoNld8PG12HAP6Dt/o3e9CZh9bCq6W6BEL9jYNicEntXGUa8eLvLHOrnSKkhrPLsdT2rEns6WXcKKw+XUxYpozxcbtd3iunmkDpVUe3CyR7NQ7orXQKn3cQwDPxhP/kV+RQECsivyKcwUEhBoICCigJ72QqgdiZgSnGmkOnJJMOTQaY7PvdkkuGunGd4zPDJWvY6vPL7FaKRdOjQgZUrVyaty8/Pt4fpdejQgfz8/GrbBwwY0GRtFEIIIYRoLBJI7YlUDdL6mT2FSn+HUBTcbet3bNtRMPop8458y+eCfzX8eBF0PAwGzKz/eVoq+46Bvurb9Ghlz6pwcc1hleYCLdUsMO/wxYf/eeJDAltukXXd0Kvdyt6qCxSKhQhHw0QNs4C0SmXoZAUYUnNn51m9mfIq8sivyCevIo+88jz7sTUVBAoIxxo2DCfNlUaWN4ssTxZtvG3I8mTZj615pieTLE8WGZ4MXFotPQ+FEM1i6NChzJ8/n2AwaPeKWrhwISNHjrS3L1y40N4/EAjw+++/M2PGjGZprxBCCCHE7iTfMvdUimLWldJcUPwrhPLB3a6ex2pmHakOB8PKh2H9K2ZtqYLvof/focuxLTZY2SV2WOWtvs0Oq0IQLoDg5oRhgM54zyqXWYTemZ5Qs8oKq/aMt5LV4ykQCRCIBghEApQESygNl9pD73RdtwuHuzU3Hs1DhjtDQqedENNjFAQK2F6+nW3l29hevt1ezivPY3v5dvIr8gnFQvU+Z5orjTbeNrTztaOtry1tvebUxtuGNt42tPW2JctrBlASMAnRsuXk5NCpUydmzZrFxRdfzGeffcbSpUuZPXs2ACeddBKPPfYY8+fP56CDDmLu3Ll07dpV7rAnhBBCiFZBvoHu6XxdzCFkRYvNIWiurPof68qAgVeZAdRvt5q1qX69GTa/C4P+D1K6NVqzW5w6w6p4UKVHILAZytfFNyhmYKi64kMA08GZEh/61/i9qmJ6jEA0QEWkgopIhV2IOhANEIqGiOkxO3jyODykOFPI8mShSf2serF6Nm0t38pWf+W0rXwb2/zb7NCpvkPnMtwZZKdk097Xnra+tmT7smnna5c0tfG2weOo42YGQohWRdM05s2bx//93/8xadIkevTowdy5c+ncuTMAXbt25YEHHuD2229n7ty5DB8+nLlz58owWiGEEEK0ChJItQTeTmDE4qFUSf1qSiXKGAAHPAXrnocVD0PhT/DN6dBvOvQ4fa+qmbRTVKc5VWXoCfWqSiC4vfJugFavKs0NjgxwpSUHVZqnQT/3qB61g6eKSAVFgSJKQ6UEo0FC0ZCZjSkaHodHejzVk2EYFAYK2eLfwpayLWz2b7bnVvhUEanY4Xk0RaOdrx0dUjrQPqU92SnZdEjpUDmPB09uRy11z4QQddINvdapIlJBurtlFfj+888/kx736NGDZ599ttb9x48fz/jx4xu7WUIIIYQQTU6+sbYUvq7xUGqJGWQ40xp2vOqAXmdDh4nw2+1Q8AMsuwe2fQr73SC9pXaGolaGS1XzKqtXVSwEkY1QHqk8RnVX1qpyZcRrVVUGVbqiUh4upyJSQXmknKJAESWhEgKRAJFYBBRwqk48Dg/p7nTcPrf8a3ktKiIVbCrdxKayTWws3cjmss1sKtvE5rLNbC7bXK+hdG28beiY0pEOqR3omNqRDimV8w6pHWjrbSu9zoSowgqMrBsixPSY+diI1RouGYYB1v/KDFAUxb6ZgoqKqqrmcsLjNHcamZ7M5rxUIYQQQgixkySQakl83c1aR8W/msGGI2UnztEVRs2FDa/Cn/ebva6+OR36nAtdj6t/nSpRN6tXVdV3mBGDWDheqyofgpsJRkL4oyHK9RjFkTBFsQgBnIQMBVQXLqcPjyuDLE+W9LKpwjAMioPFbCjdwIbSDWws3cjG0o1sKt3ExrKNFAYK6zxeQSE7JZvOqZ3plNaJzmmd6ZTaiY6pHemU2okOqR1kCJ3Y6xiGQcyI1RgiJa6zlqsG4oZhoKgKGhqqqqIpWmWQpKg4NScu1YVDdeDUnDhVJ07NiUN1oCoqmmrubx2nqVrScuI2VVElkBdCCCGEaKEkkGpJFAVSe5u9b0r/qBwWtjPn6X4ytDsQfr0FCn+EFfPMAujtRkOXYyB7nDncTOxWOgrluo4/EsUfDpIfLKYsUkEgEsTQwzgw8Coq6Rq4FQeKoYDhgEh+fPhfSuXd/6yeVjvzGmhhSkOlrC9Zz7qSdawvWc/6kvVmCFWygfJIeZ3HZrgz6JLWhS7pXeic1pkuaZXzjqkdcWo1DMcUooWzwqOqwVLVZQOjsmdSvFcSCtXCJE3VcKgOvE4vTtWJS3OZc4cLTdHs0KjqPDFQsuYSIAkhhBBCCJBAquVRFEjrC9EAlK+BlK7mXfV2hq8z7D/XLHK+/lUo+QXyvjYnRxp0Ogw6Hw2Zg/fOu/LtBjE9hj8SoCxSTknIT36whIpIgFAsjKIoeDQ3XoebTFcamlpDTSnDACNq1qmKVUCkxOxlhWIOw1Qc5lC/moIqpfEKqjeGSCzCxtKNrCtZx9ritawrWWcHUMXB4jqP7ZDSgW7p3eia3jVp6pLWhTR3A4e3CrEHSQyWonq0WtBkza2hbgoKhmHYYVJijyJNNevMuTRX0mSFTYmhkUN11BgyCSGEEEIIsbtIINUSqQ7IHAB6AAJbzGF4O0tRzR5RXY4B/1rY/I4ZUAW3mcP6NrwKvm5mMNX5SPOuf6JWMT1GWaSCsnA5RcEyCoIlVESDhPUImqLic3hId6XicdSzV5OigFJLUXU9CkYYYkGIloEeMwMszQE4wRGvU+X0geI2e1ipLjOwasagqjxcztqStawpWsPa4rWsKTbnG0s31nnHuvYp7emW3o3uGd3pntGdbund6JbejS7pXWRYnWgRqoZLVYOlqB41eyslSAyWrLlTc5KqpeJ2uHFpLtwOtx0oOVSHHSYlrpPeSUIIIYQQYk8jgVRLpXkgY5B5x7zgdvC03/VzpvY077y3z4VQuBA2vWMWPa/YACsfMqfMoWYw1fHQht/trxXSDR1/pIKycAWFwRLyA5UBlEPV8Dk8tPGk42qMYWGqA3BA1U4LeiweVIUhuh0CUXO9oprhluaK96hKrbwToBoPq3bjHRf9YT+ri1YnTWuK17CtfFutx/icPnpk9DCnzMp5t/Ru+Jy+3dY2IXYH3dCTgqWoHk0OmqoErIqi4FCSex55NA9uhxu3w41HM3svJQZKiVNiuCSEEEIIIURLJ4FUS+bKgIz9oGghhEt2X0CkaNA2x5yiV5uh1Ob3oOBHKF5iTn/cBdkHQqcjof04MyDbS1REgpSG/RSHytgWKKI8UkEoZvaASnF6Gy+Aqi9VA7ygeZPX6zEwImYNslA+BLaa6xXiPaicoHrNOzgmhlSayxwaWItQNMSa4jWsLFzJqqJV5lS4qs7gqa23LT0ze9I7qzc9M3vSM7MnvTJ7ke3Llh4collZgZIdLiX0ZorqVrgbn8UDpsReSV6nF4/DYwdN1jaraHfVSd2NIbAQQgghhBAtiQRSLZ23A0T3heKlZoiwu4Mhh69ySF8wD7Z8YA7pK1sO2780J80HHSZAp8OhbW68507rEdWjlIbNGlDbKgopCfsJRIMoKPicHjJcafUfgtecVA3Qqr9GjJg5/E8PQ6QYQnkJx8SHC2peDC2VLcFSVpRsZEXxOlYWr2Vl0WrWl6xHN/QanzLbl02vrF70yepDr8xe9M7qTa/MXmR4pHedaDpWT6aqk9WTycCA+Eg5e6hbfO7RPGbAFJ+sHkyJAZNTrVyWQFUIIYQQQoj6aV3Jwd4qtSdE/VC2cteKnAPoOkRjEImay4ZROeGGNsdD2xOgYg3kfwr5H0NwixlSbX4XnBnQYaIZTrUZvmttaUYVkSAlYT8FwWK2VxRRHg0Q03XcmpMUp5e2nozW88VT0UDTku6qGIyGWVWynhVFa1hetJ7lJetZUbKZ8miwxlNkuNLok9WTvll96dO2L32y+tG7TR/S3elNdRViL5TYkymiR5LCJjtkUkBV1MqQSXHgdrjJdGTidXrxOrx2wGQFS4nLMjxOCCGEEEKIxiGBVGugqJDe3wylAlsbXni8qAQ2bgV/hRlGRaMQ08HQzS90diBFvMi2Eh+yMgrU/cG1DvSfIPazeRe4ja+bkyML2vwF2k+E7JHg3nOH9emGTlm4Ij4Mr4CiYBmBaBBV0UhxemjvzcLRynp+WUrD5SwvWseyorX8WbyeP4vWsq5sC7Eaej05VI3e6V3om9GFfdI70zetA33T2tPOlWIGdKoGOEHTIbQZoiXxnnvxYuqqs87hf0JAco+mSCySFDpVDZoSeyeludPwOrx4nV7cmtsOlqrOJWQSQgghhGhaMd1AU1vJP+iL3Ua+GbYWmhsyBpp1nkIF4G6742MiUdiwBVZvgHAEPG5waOBygaaCqlaGT3adE6vHFGYPKl2HWD+I9QFlEsT+hNhCYClEi2D7/8yJdHCNMAOq7P0hNRV8XnA230swqkcpCfkpCpWxpSKf0lA5YT2CW3OR2tp6QcUVBUv5o2gty+LTn0Vr2VSeV+O+me40+mV2p39mD/bJ7E6/zO70TO9UdzBnFVS36lTpW83Xi6IkDf9DSwGHN74uHlgprma9+59oGjE9Vq03UyQWMYfOGQYolbWZrGFxPqePFFeKHTS5NFeNYZPUYxJCCCGE2DNpqsJlLy5i5XZ/czdlp03on80/Dt+3uZvRqkgg1Zq4MiFjABT+DNEKs/5TbYpLYeU62JIHmenQLms3NWK0ORlRCP8GgQUQWghGKYQ/h62fwxYfKIPBPRIyRkCbdmY45fOC120OH2sk4ViE4lAZ+YFitlUUUhYpRzd0fE4vWZ403FoLqAVVT8WhMpYVreW3wtX8UbiGP4rWsq2ioMZ9u6Rk0y+rB/0ze7BvVk/6ZXYn25vV8ECutoLqhm6GVEYUIn4IF8Z73RnxmmNOs6i65jPvAKjFC6rbUzMWiRf1lhg2WT2bInqEmB6zC4Fbd4pzqk4cmoNUdypeh5cUZwpOzWmGTaozKXSSHk1CCCGEEC3fyu1+fttc2tzN2Gl9slOauwmtjgRSrY23C6SVQckf5tC9qr1ZDMMcnrd8rdkrqnP7xgmAFAe4h5qTEYXwrxD8CYILAT+wAEILYLsbtvUHYxA4hoA3C9JSID0VvB7weXa5J1UwGqI4VEZeoIjtgSL84QoAUl0+Ovja4mgFX3YrIkH+KFrD74Wr+b3QnNfW86l7WkcGZPViQFZPM3zK6kG6q5H/56qo8RpV7ur/10nsVRUugGDC3flUByjO+LA/Hzh9Zk8qq0fVDu4AKHYfwzCI6BEisUhy6GTE7zxngKqaQ+isHktpnjRSnCn4nL5qQZP1uLX1QhRCCCGEEELUj3yTa20UBdL6mvWkKjaBr2vlMKhYDFavh5XrzZCnbWYTtckB7mHmlH4OhJdB6EcI/gx6EShLzUl/CQJ9oGIQbO4PejtwOcHtMkOqNhnxkMprBlV1BGnBaIiiUBnbK4rICxbiD1egKhppLh+dUrLR1JY7tCeqx1hdspFfC1fxa8EqfitczZrSTehWna8E3VM7MqCNGT4NaNOL/lk9SXV6azhrM6q1V5VR2asqFozXSIsmHOeMh1Uus1eVw2uGVFavKgmrGsTq3WQFTtbciL+uFEVJKvid4c7A5/KR4kzBpbmSgiYJm4QQQgghdh+pvyRaK/m21hqpTkgfYA6NCuWBpz2EwmavqHWbzGDH10yhhKKBe5A5pZ0N0bVmr6nQQohuAn0FsAJUwNkZnIPBGAD53WDLdjOkcLvMelfpqeZww/hwv5BbpShUxrZ4CFUWLkdTNNJdKXRJbd9i68vkBYr4pWAlvxas4teClfxeuIZgLFxtvw7eNgxs05uBbXoxsE1vBrTp1fg9nxqTopihEjUMo0wcAhgLQrTM7GllUR2VPag0nzl8VXVWDv9TXWaYtRcFJlaPpqq9nKzASVVVO0hyO9y08bYhxZWCx+GxQyaX5rKLhbfU95MQQgghREvT0usvSe0lURsJpForZ6pZ5LzwJyjeDiu3wdY8aB/vdbQnUFRw9jantFMgug1CiyG0yOxFFdtsTnwAigd8A8E9BJR9IeKGbQVE1m+iyAiQp0XYqlVQ5tVQfV7SfRl09WWgehq3JtXuFo5F+LNoHUsLVvBrwSqWFqysse5TitPLoDa9GdSmD4Pa9ma/Nn1o581s+gY3l8QhgFUZOujROnpWOQAHaA5QvQk1q5zJoVUL611lFQgPx8LJgRNm4KQpGi7NZRcJT3On4XP6cDvcdqHwxJ5OQgghhBBiz9GS6y9J7SVRm5b1jUs0jLcD0AUWvQt+FTp32rPDGUcHcBwOKYeDXgHhXyC0FEJLQC+B0M/mBMTU9pRqfVnv7cRGI5toRCUtotGlwkAt8IPiB8c2cDnMHlSpKfGeVS5wOs1Qbg/oHVMQLGFp/gqW5q9gSf4KlhWtJaxHkvZRFYW+Gd0Y1KYPg9v2ZXC7PvRI6yQ9VGqjqHX0rDLMoMqImqFVpBjCeWCNdlSUeM8pR7x3lcfsYWX3rLICK0eTB1aJQ+rCsbC9bLY7OXBKcaWQ6kolxZmC22GGTdbc2kcIIYQQQgghmpN8K2nNSkthVQlUeKBNFFrSuGPVB55cczJ0jMg6QsGFEPoFV2wtmr6dLH07WcAQFModXSl196ZM60252hVDcUAkahZuLy6D/CLQDXBoZoF0pwM8HkjxmuGUy1kZVO1CAfW66IbOmtLNLM5bztKCFSzJX85G//Zq+2W4UhnSri+D2+7DkLZ9GdCmFyl7Wt2nlsoKnHBCTdmsEaveu0pP6F2lqObxqhavU5UYWDkq61pZPawaEHpaRcPDsbDd0ykcC5tD6hRQFdUuCu5z+uzQKbGHkxU6SeAkhBBCCCGE2NPJt5bWqrgYliwx5333B/9yCOWb9aRakKAepiDiZ3NYJz+6DwGlB+lO6KZsJUtfQ3psNR6jgFR9A6n6Boh8gY4Dv9qNMq0Xfk9Pyn3xgArMwu6RKERjUFwK+YVmrxlFMcMqh8MMplLihdNdrnhgFV/fgGLooViY3wvXsDjvTxbnL2dp/grKIhVJ+ygo9M7owtB2/RjSti9D2u1Dt9QOUgy6uShavBdhDUMBIX5HwLoCKyUeRDniAZXHLNbucIPiJIpK1ICwoRM2DCK6TjR+vFU03Boy187djjR3Gl6H1w6brOBJhtQJIYQQQgghWjoJpFqjoiIzjCothS5d4nfe6wMlv0O4GFyZzd3COsUMnaJoOdvCJWwJF1MWC+JSNDI0H+2d6QD4aYef/QBw6cWkxVaTHltFmr4Gp+EnXV9Dur4GIqDjoFztgl/rSZnag3J3V3SPr8qzGmZIFYmaBeDLK8zwyuyaEg+qHOB1m0GV222ucznjcwelsSBL8pezOG85i/L+5I+iNUQSwwrAo7kY3LYvQ9v1Y2i7fdivbR/SWnLh8b2NqmF2rao5sDL0KNFYiHA0RCTsJxwNEo6FMAwdAE1RcWounJqHNKeXVFc6qZ4s3O5M3M40XE4fbmcqLmcKiha/W2ADe1oJIYQQQgghREsggVRrY/WMKiuDzp0rv8g60yC1D5Qug2i5Wch5D+OPBcmPlLExVEhh1I8BpKteurna1NljKKxmUqCOoMA5AgwDt5FPWmyNOenrcBp+0vR1pOnr6AQYKATUDvjV7vi17pSr3QgrmWaw5HBA1dFxum4GVZEolPihoBgMyI+Vsyi8iUWRLSwKbWRlOM8uRWRp685gWLt9GNZ+X4a224d+md1lOFULpxs64VjUHF5n37kuhvnKMns5OTUHLlcG7VI6kub04XV4cGtO3JoLt6LiUgwcCvE7BUZAL4ZQEYTiT2LVqFLiwwA1j3mnQM1XWctKcZp1rqwhgvK6EkIIIYQQQrQg8g2mNSkuhsWLzZ5RiWGUxdMOYj2hbGV8OFEtw5KaUNSIURDxsyVczLZICRWxED7VTXtHOs6d+YKtKISUbEJqNvnOnHhAVUBqbB1p+lpSY+txG0X49K349K20j/4AQERJpVztil/tRrnWhQq1M7riMc+pquB2sZlyfg6vY1HFWhaVr2N9qPrd77o7Mhnm6sxwVxeGe7rQxd0WxeWEsBOKHBAsqOxZZdWscmjSA2YPE40XEDeDpyhhPUJMN3vMKQq4VCcuzYnP4SbN24ZUl68ycIrPXapz54de6gmF140IhAMQyjOHDFZWYK8SXDniNa28ZniVWM/KqmllL0tBfCGEEEIIIUTzkkCqtSgpqRymV1MYZfF1hlgAKtaDp4NZM6cZlEUD5EXK2BAqpDhajqqoZGhe2rnTKneK6aihMGowghYKo4YiKOEoaiSKEo2hhqMQ01F0HSVmTug6igGJX9oNBQxFo1TtS4naD1UN4VYL8Cj5eNR8PFohTqefTMcyMp3LwAm6C37TsvhET+HLoM73FaVsifiTrkFBYR9vB4an9GB4ak+GpXSnnTOh/YZeOQwwEISycrO3FQaQULPK4QCPG7wus2aVNTzQoVXusyffHbGFMguHm2FTRI8SikXQdR1FAU3VcKlOnKqDDFcqqS4vKQ5vUuDk1lw4tUb6X6jqABw1F163WHcMtMIrK7gyqgZXmO9zO7yyCrJ7QXObc9URD68cCQXZrWUJTIUQQgghhBC7nwRSrUFpqdkzqri4smZUbRQVUnqCHobgNrPIeWOHUroOpX5ihcWU5m2lpGArgcIClBI/vcoj+MojOP0BHOVBtPIgWiCEWhFCC0Uat10JDGBZO/iiJ3zRw5xvSSsCiux9HDEYlQ9j8xyMKfEysiKDFFcWUR/EfFuJpRQR83mIpniIpXqJpXiIpXiIpniJpaSApiY/YzQWD6wiEAxBftQMGVBAwQyhNNWcOxxm7Sqvp/IugU5HZXglgVU15l3rovawurBuDrMz4oGlQ3XgVB24VCdZ7nQyXCnJQ+vi4ZOm7qE/W+uOgWo9CpzboVX8LoKxCoiWxdcnhKQY5v8jVAegJfS8cps9KlU3ODzJvbIS5/ay9MASQgghhBBC1E0CqZautBQWLapfGGXRnJDWF9AhmA+e7J3/AmkYUOqHLXmwvQC258fnBZBfBAXFGIXFKNEYGpAVnxr0FIqC7naak8uJ4dTQXQ4MpwNDU81JVUFVzLkCdqhjxNtoGCiGYfaiiukQi/Fnapivs4N83T7EV50ibPclV4ByRSF3E4xfC+PXwegNkBIBiAJl8Wljva/DCqqiaV6iqV5iaT6iaT6i6QlTmo9oegrRDC9RjxdDxSyubhda10ExzOvStMrJoZm9rDyuykLrib2rrN5WDbhLYEtgGIbZwyne08kMn6Ik1nNyaead67Lc6aS5fHgcbjt08mguXJoTtbUHKFaPq/owYpXBlRG/q2A4WBloxQu0m+LvM6vnlTVZQ4JVTzzMciaHVnaPLa3K41b+exBCCCGEEELYJJBqyUpK6t8zqirNDal9zaE9wbx4T6lajjcMKCqBjVthw1bYtBU2bYMt282pIljnU1lnDad5iWammlNGih3AxFLjAU28R1HM5yHmcxPzutE9Tgznrt9lzDAMVgfzWOhfw0L/Wn4uX0tRtDxpH7fiYHBKN0ak9mSErzuDnR3x9QMtGEENhNgcLMZXvgVvYDvuikJcFUU4AwEIABXxKQCUg1EBRrmKUgFK0PwC7ygP4igP4t5WVLV5tYr53ETSU4hm+IhmpBKxfm4ZKUTSfUTTvERSzV5ZUZ/b7I1mJPR2UdUqPa00c1igxxXvWZUwNFBTzbvIORL23wPEdN0uIB6OmcPronoUq56TU3Xg0px4HG7aO9uQ4vTicbh2Xz2nvY0dKrnqt7+hV4ZYRtT8f0osBNFA9RBLURJ6AaqVdy1UNHNZ0eJBliseYrmThxomBl6Jj+1JfsdCCCGEEEK0FBJItVTW3fR2JoyyOLyQ3hdK/oRQPrjaQH4xrNkAazfB+s2wbrM5L6+o+1xts6BDW/T2bahol0ZBpou8TCf+LC+utu1wt21rBiBNpH4BlJOh8QBqZGpPBvm64qpSSD3mhVi6uRykA6X0T9quGQG8+rb4ZBZK9+h5aIRRiH8JjwLl5qSXa4T9aUTLU4iVu9H9LihTwG/gKA3iKKvAUVKOoyyAoutoFSG0ihBsLdzxNasK0TQfkXjgZ859RDJSiKT5iKZ7iaR6zWWf0wyrEjuFaWo8wFIrwylXvPC62xUPqrSE+lbx3leqssvhVVSPEY5F7HpO4VgE3dABBVVRzHpOmoM0p49Up49UlzdpWJ073tNJNANFjfdsasDP3zASQqyEQEtPDLJ0wApY7SdLfk47iLKWrcLtroR5lfAKNTkAQ60SaqkSbAkhhBBCCNEEJJBqiRLvprezYZR9riA8/wUsXGCGUOW19HZSFeiQDV07QtcO0KUjdG4PndpDx3aUazrbI6WsDxZQFC3HqWhkOlJIq099m92gagC10L+G4lhyiGYFUCNTe8UDqC47dye/BDHFi1/riV/rmdAYHZdRYgdVHi0PrysPT0YeKlE8FAPF1c4VUVIJKm0pV7sSNNoQCaQSK/Ogl7nQysJmUFVcjrOkHEdpOc5iP46ScpzF5Wj+AIpu4Cwxt+/w56UoRNN9RLJSzZ5XWalEMuO9rtLNeSTNSyTNS8zrsoc92kO01BrCK4cDXA5wx+8gaA8pNIdURtAJqzoRxSCMTsSI1lrPKc3pw+f0VCki7sSxi78vsYdQFDM82pk/QVaYhZ4QZsXnegSi5UBi0AXJySuYr2OlMoCyQyklIdhKKPRu362waoiVGIypCdvUGh5LyCWEEEIIIUQi+XbX0uTnwy+/QFlZ3XfT25GtW+Hpp+GNNyAcrlyvqdAlG3p1hR7doWcX6N7ZDKBcyeGSYRgURcvZEt7OpvIi/LEgqaqHzq4stEauBaMbejyAMsOnn/1rmySAqhdFJaxkEVazKGHfyvWGjssoxqPn4THy8eiVk5NynIYfp+EnTV9n7u8C2ppThBRCahYhpQ1hNYsKpRNhNZOQkklYyQAdHKUVOIvLcZT4cRb5cZb4zQCr2I+j2I/TWi4trxJebavzcnSHZve4sgMsq+dVRoo5bDDdRzDVTcip2L2cIkaMSLyXmKKoOBwOXKoLl8NFltNLqicVrzcVt9eL2+PDrXlxOz2oznhvLLVKjSz5Qi8gIczaBYZBcqBlkBRi6RGI6sn7YNQSboE9BNEOnrQq66yp6t0LHQk9uKyeZlVCrsTzJIZd1ZYVqcElhBBCCCFaFAmkWpItW8wwKhLZ+TBq40Z46il46y2IRs11Q4bApEnQv7/ZAypWDMHNZk8DRwo4UpO+6ESNGHmRMjaGCtgeLiVixMhypNDG1bbR6vTohs6q4PZ4ALWWRTUEUB7VyRBfMwRQ9aWohJU2hNU21Yb+qUYQj16A2yjAo+fj1otwGwW49UKcVJiBlV5OKhshlnxaA4WIkkbYk0moUybhLhmElUwCSjYRtS9hJYMYnsrXS0yP97AqjwdVfpxFZZWPi8oqA62yAGo0hqugFFdB6Q4vMeZyEM40wysjKx2yMlDaZKBkpKNlZuLI8ODMSEdJT4OIE4IxyCsFozjh56Qk9L6KB1KqaoZSbpfZ+8rlMGthWT20EmthqWp8OKFaOcxQiERWaKRoNGioYW2SAq74XQvt5YSQi0DCvkYtwxJra29i4BUPquywSqkSUjkS5lplrS47/Eo4n3WOpOBLacDcOpcEYkIIIYQQomH2oG/rolaGAevXw6+/ml+0O3Zs+DlWrYInn4QPPzTv2gYwYgScdx7sv3+VcCvNvPNeKB8CWyC4HTQ3AdXDtqifdcECimPlaKhkOVLwNMKwvJihsyKwjZ/9a/i5fB2L/GspiQWS9vGoToaldI/XgOrFQG/nPSuAagBd8VChdaGCLtW2qUYwHlAV2nOXUYxbL8ZlFKMSxWWU4jJKSWV9tcAKIIaLiJJOWEkjomYQTkkjkppOpFsaQaUdZUovIkoqUSCixwgbZg+naCSMVlyGp6gcT0kAX2kAb3EAX3EF3pIgnpIKnMV+tCI/aiCIFo7i3V6Cd3sJsKnui/a4ICsDMjMgHl6Zj9PMKT0V0lLNuccNkSiUB8zC7bFY5Zf4xKGEihLvTZUwnFDT4iGW06x/ZdXDcjgqg67Ewu+t+K6EopEkBVyNwB6mCJXBV0KwRUL4pSeGXEZyQIZRQ/hl3Y40fh32ditsSgialIQgLCmUokpQVdOQRUdCaGXV8Kop3Kp67sR1CeFX4jbVBQ7fbvphCyGEEEKIptIyv73vTWIxWL0a/vgDUlIgM7Nhx//6q9kj6rPPKteNHg3nnGMGUrVxeMDRFcOdTUnFBraWLmdD+Qb8RgSfM4OOrkwcu/HLV9SIsaxiMz+Xr+Nn/1oW+9fj15PrWXlVF8NSujMytScjUnsy0Ndlt7ZhT6UrHgJaJwJ0qr7R0HEY5biNYlxGCS49Prcfl+KgAo0wmpGPx8jHqrVe7VRAGC9hJZUwqcTUNHBkoHXIgs6ZaGoHHFoWTkcWLjUTRa3ysw+GzLsxFpbE58VQVFq5rrAEiuPbgmFz2pJnTjvi0CAz3Zyy0iuXq05pKeDxmMFTLP7lPBKFULjyccz68m6FsEZyryw1XqjdCqrc8TsSOh1miGX1vtLUhOArobi7olQGXIk9vYTYWbtjmGJDJQVakBxyxUMwexhjYjAWTVjG3CexF5gVjJEYKNdFScjMjOR1VlDlbgfZo3f1ioUQQgghRBOTQGpPFgjAsmWwbh1kZUFqav2O03X46it45hmz+LnloINg6lQYMGCHp4gZMfLDxWwKbGdrqICw6iEjfR+6xUIo0VIIF4HmNu/UtxMvo6Ae4dfyjSyOB1BLKzYQ1CNJ+6SobobGA6iRqT3Z19d5rwigGkRRiSppREmjnG5EjRgRPWbWb4pPhhHEbZThNcpJUfz4qMBnlOPFnFyGH4dRioKOmwBuIwDkmT2tYkCkxicGNR3UtPiUbk5pqZCRDr3TQO0Maj9QU81JcVUeHgiawVRRSWVolbQcnxeXmr2iojHILzKn+vC4zHZkpkFGWsJy4rr4lJkGPq/5xTgxtIrFzCCrImhus8Ms68u0dcc3zHWqUhlQKar52A651MqhhFbvLFdiuBXvjWX31FKTwy01YW6dS4jGVLV31J7Efg8aEC4GPbyDA4QQQuzNYrqBpkotUiH2RBJI7any8+G336Cw0Byi53Lt+Jjycnj3XXjxRTPEAvML75FHwllnQe/eOzxFMBYiL1zEusAWCsKlKEAbZzped9vKnWJBiMRDqYgf9Fg8nPJh1japriRawZLy9SwqX8cS/3p+D2wmaiSPLcvQvAxL6cGIeA+ofbwdJIBKYBhGUtAUtedWjwNwKBpOVcOBhk91kqam4VOcuBUHbkXFZWi40XCh4UABPd7bQY8B5aD4QS0DpRTwg1EKeolZV0wvNSfDbz6fXmJO9aW4QYmHU2oKeFMgJRW6p4CSAmoWqF3jy774PAUiGpSUm+FUUQkUlyUsl1Y+tqZINN4DKx+25devbaoaD6jiQwQz4kMG0625tT5hXaovuedT1dAqcTkaryGkB831esI+9pBDA4x4V5DEcAslHnIlhFFWYGUNLUwMuhJ7bKk19NSqGnJpEnCJFsYexkfjDZMUQgjRamiqwmUvLmLldn9zN2WnTOifzT8O33fHOwrRAkkgtaeJxcww6c8/zS+rXbvu+Mvi2rXw3//CO++YoRSYvalOOglOOw3at9/h05ZG/GwNFbAhuI2SiB+f6qGjqw2OmmoyaR5z8rSDaIUZSoWLzH+pNgwM1cmmWAWLK7aypHwdS8rXszpYfVhWtjON4Sk9GZHag2EpPejtyUbdE/81vtEZGDGdmB4jYkSIxKJEYzHzTnV6FMPQQTdQDAMHKk5DxYlChuHApzpJUdy4FCduRcOFA5eq4UI1f3d2iGHVWlHj9ZD1+Lb4OqcDcEM03QxRotF4iBIf2qYQD0Ac5g3EtACo5eZEeTysKqs+GX7Q/ZhDdkLmpBc0/EekeCAzBdr4QPHGAysvKD4zyFK88ckDQQ1KDSiNQWkESsJQEoTSAJSUQYkfSkor5xXxkMjqpdUQqb7KOlfpKZV1r9JS4utTIDUl/jg+ZaRVu2NlNXZgZVQGWHp8+JRuQDhi9gpJDLbscAtzrigJw5wSfteJYZf12O695QBnfKiiy2EWi0/slaUmHFPTMMXE55CeXEIIIYTYQ6zc7ue3zaXN3Yyd0ic7pbmbIESjkUBqT1JYCCtXwqZNkJFhTrUpL4dPPoG334aff65c3707nHIKHHvsDof4RfUoBZESNgfz2BosIGiESddS6ObpUM9gSAVHKiHVxbJwMUv961hauoKl/jUURMur7d3d3ZbhKT0YHg+guriyGu2ufI0vISyoGhwYVC4DRixGVI8SNXQiRpQoBhEjSsQwMIwYKAqKoqJpGk7FgUN14NWctNNS8bncuDUXLs2Fy+XG5fTgcrhwuVyoLnf1UKBqGGAtKzWsS9xm34EvZvYwisbMUCocMe/qGI5CRcAMb0IhiKoQdEMsI14kP96zxw4m1Mqi4IaBeXcxvzmnHIz4pASAivj2cnPZqAC9AvRyID4UxwiaU33DLE98SspilXgvLW98ngJKG4i5wK9BmQplCpQZ4DegNAr+GJSGoSwCZSEz1CoNQEXIPKW/wpy2bG/Yy8ftigdVPnOe6jPDqsTlFJ+5nJoCKV5zOSU+aTsR9NjBlp7wejUS6mxFag+4IJ5rJfTiqi3ksoJOpWrYZfXkSgi/agu0rLCsptetfX5FAi8hhBBCCCFaMAmk9gTBoNnLafVqMwTo1Mm8K1hV0Sj89BO8954ZRgXjRb9VFcaOhVNPhZycHX5J80cryA8XsyGwjcJICaqikulIo73WZodNNQyDzaE8fi1bxa9lq1hauoI/y9dVG37nUDQG+LoyzNeNod72DPFk00bzxG877gSHi8qi0k3IqNLTxFqOWbdpryFcsr9/J3wZj4c4URWihk5UNYgqlVNENcCpocTv5OZwpuBwuHFoGl6Hm7ZOLz6nB4/Tg9PhwuV0mUGTw43T4cThdCV/MW8q1l3m6mIYZoARjpivyUh8spaDIbP2UihceUdHUsFIDEgTevLEdDMAMwyIRSt79RgAMdAioAZBDcfnIVCCgDUPghEAPWCGWXZ4FTDXG0HsejPWtqp88alDPX9OUSDeOYwyoFyFcs0MtvwqlCvx7YYZcJXHKieDyp9PQT1rYlXldVeGU6k+M7BK8Zm1sFLiky++LvGxtd3rMaddDYSrBlyGkfz+iuoQi8R/H/Ht1u/cLo6dMFzReq+pJA9ZVFXsuyjay/G5VXvLvluilhx6JYZb9Qm9Ep+jamArhBBCCCGE2G0kkGpOoRBs22YGUYWF0LZt9V5NoRAsWACffgpffgmlCV1Nu3c3e0IdeaRZZ6oOYT1CQbiEraF8toeKKI8FSNG8dHS3q7NOU3GkjN/9a/i9bDW/lq3iN/8qiiJl1fZr40xnSNo+DEk3pwGpPXGr8bpXRgxigXjtqXKI+s25HsWsjxMPqTQX5niwGlhferHCo4QeHnbIlBAkQeWXXagsPJ3Yi0ipMled4HBgaCpRDaKaQkxTiCo6UYjPDQxFsb/MOjQHDs1pzh1OUpxufK4UvA43Ls2JS3PiVB24NIc5V51oVe9O19IoijnkbEfDzhIlDiVLZNVZisbM8MoaKmj10IpEIRw2e+8EQ+bjWMwMOvT4fnqVIuPmE5m/V4fVgywaD7Qi5qSEQInPjXA8qApVBlbW8MJqU9icO8OQEYIM63r0+FRjBfiE68XuJFZtqqhhXnXZqt0cCJlTfYu810QFPA7wxiefE7yJkzthHp987niY5Y2v81Y+9njiQbNmTkotc9QdBzw1hVuJjw0qH0dj5vDFqj27rGOoEnrZvbtIDr2q9ryyAjBFSQ6tHFaPLrWyRpdVn6vqsEWU5KCr6rkTA7HEIbRVe4QJIYQQQgjRCkkg1RwqKmDrVrNXVHExpKRAt26Vw5tWrYLvvzeDqJ9/NkMpS5s25t3yjj4aBg+u88tKRI9SFCmlMFzC5lA+pRE/mqKR4UilnSuz2v6l0XKW+deyzL+WP+Ih1KZQ9dpPDkWjX0p3Bqf1Naf0vnR2Z1cZfhcvlG1/oXSCroLqBTUTokGzwHMkaNagivrNos+xmPnFUdHML3uKA9DM0Moa2pP4xU1TQHVVFnfWtHgNHEfS3c50BWIqRDHMuaGbvZkwiKkGupVbxa/BoThwqJo5KRqpDjdezW0HTU7VgTMeMiVOLXcIYiNTlOS5RVXN/wu563keO8CKVoZTiT3arLvkRaPmUMNgxAy0wpHKmljhWMLd9GLJwaUVZFUtBF61dpI1NE2JxoOqSEJglTBR5bERgbT4nEjlOiMcfxxJeBxNeBzfPxKBCr0yoIqPdqx1njhVAMH4cjzbpSJqTruLC3OopDthqvrYDbgVcCngUcGdOGnxuSNhrplzlxbvYalipkla5bKSEA5Zj5PCr/iyvU2Nh1NKfJ74WIVYfNnanrRvlbmhxAOyhHVK/HxK/HzWuez18XYo1v/T4suqmrBNrbxeVQOHMyH0sup9OUBzVh5n/QwUq/cXtfT+SgzZalkWQgghhBCikUkg1VSiUTN8yssza0SVlkJ6OmRnwx9/mLWgli6FX36Boiq9Hjp0MEOoiRNh6NA6h1QFYkFKo+UUhEvYEsrHHzW/faZqPjp72qMpKrqhszG4nZXl61lRvoEV5Rv407+2xvAJoLu7PQO93dnP24NBnu70c3XGrWiVQ9pKDCChho713d7+klSlnozmAFc6ONpW1pVRFVBjmGOhovG7kQWAmPmlHz3heCcxzUFMVYmpDmKKShSIGWZh8KgRI6br5rGYQ8YURbFDJk1VcSgaKZobt8OJVzPrNDlUzQ6WHAkhk0PVJGjaU1hfrp0O8DbwWCuwisUqe2RZy1ZYZffKiiTM47WVwuF4+BWrnCd1+FIx0xdvzXfFsx471OQAoKHFv414TywjHljZwVW0yvpYwvb4RNQMfkMhKI/XwgqEzHlFCAIRCITj8wgEohCMQiAWX9YhGDPnAR1CBgSNyp9DPIOrx0VQmYo1gDM+uTHDr6rLriqTs455bescNTze0dtfqcc+tbF+FGD972rXWMFYUqPioZtSdVuVqep2RU1er1jnUBOWlfjTqMn72XOq7Ju4XGVd0mPr2KrtI7l9RhQ6HQ0dxu+GH54QQgghhGhKTRpIhUIhbrrpJj788EM8Hg9Tp05l6tSpTdmEphWJmMFTYSGsWQPLl5th1NatsGGDWcB8w4bKIWYWtxtGjoTcXDjgAOjdu9aeUGE9gj9aQWm0nO2hQoqjfgLRoPl53VAojfrZHNjOuopNrK3YzNrAVtaGthLQa/7W2MXZln293djX242BKT0Z6OtJmiulsoeSHSCpZp2rpN4j9Z00+3oMwyBmxIjpsepzPUosFiIWC2DoEfOLtB6GWAg1FkKLxTD7TxlogFfTcKtO3E4XHkcqTs1t1m1SnQnLLnNZQqa9T2KY1VCxWHKYZfWuiiWEXHrC9kg80IpYwxCjCYFXvIaSXccsFs9lrKFllYumhB6BiT1cNNXsQag6QUlJ6N1Sj94uqUDbnfsxVmPE7/pXETCHVQbjIVcgaE7BIAQD5jwQ3yeUsF8oHH8cNqdQpHIKhs2foSXeUYyK3dT2+nIq4FDMubXsstZROXcq5l9Va53DMB9b6zTAaSSvdxiVk5b4WCf+P7jKfbUa5hrJYZiSmHA1UNXDdvI0Ta4sHwbObO5WCCFEqxPTDTRVPi8LIRpPkwZSd9xxB7/++itPPfUUmzdv5uqrr6Zz584cccQRTdmM3S8YhO3bYeNGWLfODJ/WrDGXt2wxA6iCgur1cyzt25vD76xpwABwuartFtGjBKIBKsLlbKrYxgr/ejYFtrEllE9euIjiqJ+iSBn50VI2Rwop0Wv/1uZUHPRO684+Gb3om9mHfm37sW+7/qR7MiqHLCX2bqojvInpMXRDJ2bE5/FQSTei6IZONBZFj+roho5BQm8Kxey5pKGhqRqqquJQHGiqhsfhwaW5cDvceDQPTs2JI95zyZ4AjVi8E4OOYiSEVtF4ketYMN6TJQqEIVphBgKJjYD4v87H69xYw2dQEh4nDPVJ/Nd7sXewi703oG5WVYk9tHSjcrigFWxZNdGscMt6bAVaUSvwivfiSrpbnnUuvbLGUmIRcailgHhCCFa1XhIkDO+iyjqwi4pbx1iF1a1QjCrH7crPLRQfdplYMD9sBVjxbVawFYoP00xcH45UTomPI/HHkcTt8fWJIoY5BXbtUhpN4pBlR8KkqZXzxGV7riZsUytrrjm0+HBoa594AGrNVaX6ejU+aUrlsfayYo+YNKeE/RWjcruSsI+SOLdeo0ZlAKcAGBAKgHv/ZvihCyFE66epCpe9uIiV2/3N3ZSdNqF/Nv84fN/mboYQohZNFkhVVFTw8ssv88gjjzBo0CAGDRrEihUreO655/acQGrZMrOuU0WFOZWXg99v9nIqKzOnoiIzXCoqqpzKqhf5rkk01UeoR1cqenUl0Ksrga4dqOicTbnPiT8WwB8ppziylKLfvqYwWkZRtIziqJ/CmJ/8aCnFegUlsQpKYxVE6zm2o407k86pneiR0YOemT3p1aYPPTJ70iW9C2p8+F7iVBoPkawAKTFsqo2qqKiKaoZKioqmmHOXFr9znOoylzWXHSZpqmbOFS3psbVut/VeMgwzjNIThi3Zy7H4cgxiocowywq2jFh8bhWstr7s6wnFkmtht7/K0BbU6sNbqg6VqW2IStJwGmrZT+yxdqWHVm2q3uUu6Q6RNa2LH2MkrLcKgMfiBeVj8V5bVnhmh2XWjQWM+I0FYpWBV2IBcbvguJ78GMzXqZ0Fx8MwA5LfS9YQsCpBmXV84h0Ck7bVsK+SeK6E81F13yr7GPFi6ZEYRMLV7yRphVnhaGWYFYkm9IyLVPaOs/azgkXrmFiscn0kUjl0NFJ1XWJPu1jCnSsTWMfuTazgVFPhBANOau4GCSFE67Ryu5/fNpc2dzN2Wp/slOZughCiDk0WSC1btoxoNMrw4cPtdSNHjuShhx5C13XUZi6iWv7Vp9x888FsSTPr2erxKabG5/HlmAdi3SDaw1wXVSGimfOoUyPiUAk7VcIOiGgKIdUgpOqEiKJTASyPT5j/2r5q59uc6kwh05NJlrcNbb1taetra887+DrQPqU9XmdyoR1FUTAw2F6xHQ0z+NHiw9cSH7sVN06HE6dq9kxyaS6c8TvEaYpWr7m6J/QiUhRQnOawpoYy9PiX7ljCcsLcDqhimF+89eT1VthlRGs+l7WffSzYBWWSAi89YR2V6+19DGr8Ul+1F1id42+UHWy3dqsafCnJ86TttYRkte5T27lrOlUd+9b4PDtoU63qcw07+xw72K8hTbV6lST9PqwuJrvrSagMmhJDKGtu3/2OKuGXtZ3KMDdpGwn7JEyJPcYguVeZbiQHana7Eh+T3DvMqPLYfh8lPD81HJO4zoFZXNzrALz1e9soSu29YxO3W0FYbTcASHxs1T+LxSBqVA4JtQLEaGKgWCVcTFqXMOkJd6+sut3alth7z3oeu5efdXzCZA9vjf9u7PPVME/qQRhfrkvi824v3MEvoeXb60oeCCGEEGKv0GSBVF5eHllZWbgShqK1a9eOUChEcXExbdq0aaqm1Oh7XyF3jN3Vs1QW0d4Rp+rEHe815HF68TrMyePw4HP5SHGmkOpKJcWZQpo7jXR3OhnuDDI9mWR6MmnrbYvP6UNVzR5JiWGQ1ePI6rlU01S1N5O1znos9ZVIGJq3C8O06iOpx5WREFIlrtvBclJYVTXQqmE7VN+nznWJ57HW61WOqek5E77U17i96nLV/UhertYzreqxNR1PDftQfZ9a19VwfLX21qEeOV8Dd2zgvtQdiOzsc1lZV433WFCrzJtQ4nuixsCL5NdRrdup/piEfUg4LvE8Na2v+l5KbEPSfvH1up68vxXw2c+dsB4qa8Pb9QgT9rPPsYPnrunnktiGxHVV19f1eqzt+GrnqLrdSO7hlxhqWbXXYvH29htQ+/O3Eq225IEQQggh9mpNFkgFAoGkMAqwH4fD9botU6MaP/wEHlEe4dftv6IQ7zWEUmuAo6lmAORQHDg1Z+WQNMVh1j1KqIHkc/jwOX14reDJ6cWhmj96RVFQUKrNrVCopnWilbFq8YjmUWtYU89wqiHH1nt7Q56rgedstOPZxeCr3k/SBM+xI3tCG5pA4g03koKlBi7v7H41Pa5pndtXfZ9WpEWUPBBCVCMFwYUQYseaLJByu93Vgifrscfj2eHxRvwDqN/feEX1Tu93OvRrtNNXskoSVWHE/wOI7Zb7fwshhBA7qx5DcPeE0+qY9R4bWUpKSrP8o9CulDxois9OrUlrCBBawzW0Jg99vorNJXvqHTHqNrhrBqeM7EbPdBU93MijBRpRB6/5/8CWfB1yDXuO1nAdPdPVJvtcUJ/PTk0WSHXo0IGioiKi0SgOh/m0eXl5eDwe0tPTd3h8eXk5AOPHj2/UdgohhBBCVLVw4UJSU1Ob/Hl3peSBfHYSQuysd4B/NXcjdoPVwNPN3YhdJNew52gN17EaGDm7aZ6rPp+dmiyQGjBgAA6Hg8WLFzNq1CjAbODgwYPrVdC8ffv2fPHFF832L5RCCCGE2HulpDTPnZp2peSBfHYSQgghRHOpz2enJgukvF4vJ5xwAjfeeCO3334727dv5/HHH2f27PrFc6qq0rFjx0ZupRBCCCHEnmNXSh7IZychhBBC7MmaLJACmDVrFjfeeCN/+9vfSE1N5ZJLLuGwww5ryiYIIYQQQrQYu1ryQAghhBBiT6UYRpPcFkkIIYQQQjRQIBAgNzeXxx9/3C55MHfuXL777jueffbZZm6dEEIIIcTO23HxJiGEEEII0SwSSx4sXbqUjz/+mMcff5yzzz67uZsmhBBCCLFLpIeUEEIIIcQeLBAIcOONN/Lhhx+SmprKueeey5QpU5q7WUIIIYQQu0QCKSGEEEIIIYQQQgjRpGTInhBCCCGEEEIIIYRoUhJICSGEEEIIIYQQQogmJYGUEEIIIYQQQgghhGhSEkgBoVCIa6+9llGjRjF27Fgef/zx5m5Si7Vt2zYuvfRScnJyGDduHLNnzyYUCjV3s1q8Cy64gGuuuaa5m9GihcNhbrrpJvbff38OPPBA7rnnHqSE3s7ZsmUL06ZNY8SIEUycOJEnn3yyuZvU4oTDYY455hgWLFhgr9uwYQNTpkxh2LBhHHXUUXz99dfN2MKWo6af5eLFizn99NMZPnw4hx9+OC+//HIztrD12B2v27fffptDDjmEoUOHMn36dAoLCxu72btsd7zGRo0aRf/+/ZOm8vLyxm76Tqvpmm+99dZq1/Dss8/Weo4nn3yScePGMXz4cK699loCgUBTNH2XVL3ua665pto19+/fv9a7XJaUlFTbNzc3tykvod7q+szemt/XdV13a35f13XdrfW9Xds1t+b3NcC6des499xzGT58OBMmTODRRx+1t+2R721DGDfffLNx7LHHGr/++qvx4YcfGsOHDzfee++95m5Wi6PrunHqqaca5513nrF8+XLjxx9/NA499FDjX//6V3M3rUV7++23jX79+hlXX311czelRbvuuuuMww47zFiyZInx7bffGrm5ucYLL7zQ3M1qkU499VTj73//u7FmzRrjo48+MoYOHWp8+OGHzd2sFiMYDBrTp083+vXrZ3z//feGYZj//zz22GONmTNnGitXrjQeeughY+jQocamTZuaubV7tpp+ltu3bzdGjRpl3H333caaNWuMt99+2xg8eLDx2WefNW9jW7jd8bpdsmSJMWTIEOP11183/vjjD+PMM880Lrjggqa8jAbbHa+xrVu3Gv369TPWr19vbN++3Z50XW/CK6m/mq7ZMAxjypQpxsMPP5x0DRUVFTWe4/333zdGjhxpfPrpp8aSJUuMo446yrjpppua6hJ2Sk3XXVpamnS9ixYtMvbbbz/jo48+qvEcP/30k5GTk5N0TH5+flNeRr3U9Zm9Nb+v67ru1vy+3tF3tNb43q7rmlvr+9owDCMWixmHHXaYMXPmTGPNmjXG559/bowYMcJ4880399j39l4fSJWXlxuDBw9O+oM7d+5c48wzz2zGVrVMK1euNPr162fk5eXZ69566y1j7Nixzdiqlq2oqMj4y1/+Ypx00kkSSO2CoqIiY+DAgcaCBQvsdQ8//LBxzTXXNGOrWqbi4mKjX79+xp9//mmvmzFjxh75YWRPtGLFCuO4444zjj322KQvPd9++60xbNgwo7y83N73b3/7m3H//fc3V1P3eLX9LJ9//nnjiCOOSNr3uuuuM6644ormaGarsLtet//4xz+S/pZt3rzZ6N+/v7F+/frGvYCdtLteY998840xZsyYRm/v7lDbNRuGYYwbN8746quv6nWeyZMnJ70OfvzxR2PIkCG1fsltbnVdd6KpU6caV155Za3n+e9//2ucdtppjdXM3aauz+yt+X1d13W35vf1jr6jtcb3dkO+l7aW97VhGMa2bduMyy67zCgrK7PXTZ8+3bjhhhv22Pf2Xj9kb9myZUSjUYYPH26vGzlyJEuWLEHX9WZsWcuTnZ3No48+Srt27ZLW+/3+ZmpRy/fvf/+b448/nr59+zZ3U1q0hQsXkpqaSk5Ojr3uggsuYPbs2c3YqpbJ4/Hg9Xp57bXXiEQirF69mp9//pkBAwY0d9NahB9++IHc3FxeeumlpPVLlixh4MCB+Hw+e93IkSNZvHhxE7ew5ajtZ2l1y69K/hbtvN31ul2yZAmjRo2yH3fq1InOnTuzZMmSRmn3rtpdr7GVK1fSq1evRmnj7lbbNfv9frZt20bPnj13eI5YLMYvv/yS9LseNmwYkUiEZcuW7e4m7xa1XXei7777jh9//JErrrii1n1WrlxZr59Rc6vrM3trfl/Xdd2t+X1d13W31vd2fb+Xtqb3NUD79u257777SE1NxTAMFi5cyI8//khOTs4e+9527NaztUB5eXlkZWXhcrnsde3atSMUClFcXEybNm2asXUtS3p6OuPGjbMf67rOs88+ywEHHNCMrWq5vvvuO3766SfeeustbrzxxuZuTou2YcMGunTpwhtvvMFDDz1EJBJh0qRJXHTRRajqXp/LN4jb7eb666/nlltu4emnnyYWizFp0iROOeWU5m5aizB58uQa1+fl5dG+ffukdW3btmXr1q1N0awWqbafZdeuXenatav9uKCggHfeeYdLLrmkqZrW6uyu1+327dtb1Ot8d73GVq1aRSAQ4KyzzmLNmjUMGDCAa6+9do/8MlvbNa9atQpFUXjooYf48ssvyczM5JxzzuHEE0+stm9paSmhUCjpd+1wOMjMzGxxv+tE8+fP58QTT6RTp0617rNq1Sqi0Sgnn3wy27ZtY9SoUcyaNava67651fWZvTW/r+u67tb8vq7rulvre7u+30tb0/u6qokTJ7J582YOOuggDj/8cG6//fY98r29138TCwQCSWEUYD8Oh8PN0aRW48477+T333/n8ssvb+6mtDihUIgbbriB66+/Ho/H09zNafEqKipYt24dL774IrNnz+bqq6/mmWeekWLcO2nVqlUcdNBBvPTSS8yePZv333+fN998s7mb1aLV9rdI/g7tmmAwyCWXXEK7du047bTTmrs5rU5DX7fBYLDVvc7r8xpbvXo1JSUlXHTRRcybNw+Px8OUKVNaVK+91atXoygKvXv3Zv78+Zxyyilcd911fPTRR9X2DQaDAK3qd71hwwa+//57zjrrrDr3W716NX6/n1mzZnHvvfeyfft2LrzwQmKxWBO1dOckfmbfm97XtX1Xae3v68Tr3lve2zX9rlv7+/r+++/noYce4o8//mD27Nl77Ht7r+8h5Xa7q/1QrccSBOy8O++8k6eeeop7772Xfv36NXdzWpw5c+aw3377JSX7Yuc5HA78fj933303Xbp0AWDz5s288MILTJ06tZlb17J89913vPLKK3zxxRd4PB4GDx7Mtm3bePDBBznuuOOau3ktltvtpri4OGldOByWv0O7oLy8nIsvvpi1a9fy/PPP4/V6m7tJrU5DX7e1feZqqb+b+r7GHnvsMSKRCCkpKQDcddddjB8/ns8++4xjjz22KZu800444QQOOuggMjMzAdh3331Zu3YtL7zwAoceemjSvm63G6j+D7st+Xf9wQcfMGDAgB2WUHjnnXdQFMV+D9x///2MHTuWJUuWMGLEiKZoaoNV/cy+t7yva/uu0trf11Wve5999mn17+3aftet+X0NMHjwYMDs6HDllVdy0kknVbsj4p7w3t7re0h16NCBoqIiotGovS4vLw+Px0N6enoztqzluuWWW3jiiSe48847Ofzww5u7OS3SO++8w8cff8zw4cMZPnw4b731Fm+99VZSrTNRf9nZ2bjdbjuMAujVqxdbtmxpxla1TL/++is9evRI+uM1cOBANm/e3Iytavk6dOhAfn5+0rr8/Pw9vjv4nsrv93PuueeyYsUKnnrqqRZT+6Glaejrtrb9s7OzG62NjaUhrzGXy2V/aQXzQ37Xrl3Ztm1bE7R091AUxf7Caundu3eN15CZmYnb7U76XUejUYqLi1vk7xrgq6++4uCDD97hfl6vN+nvY9u2bcnMzNxjf9c1fWbfG97XtX1Xae3v65quu7W/t+v6Xtoa39f5+fl8/PHHSev69u1LJBIhOzt7j3xv7/WB1IABA3A4HEnFvBYuXMjgwYOltsxOmDNnDi+++CL33HMPRx99dHM3p8V65plneOutt3jjjTd44403mDhxIhMnTuSNN95o7qa1SEOHDiUUCrFmzRp73erVq5MCKlE/7du3Z926dUn/YrJ69eqkugui4YYOHcpvv/1md4cH82/R0KFDm7FVLZOu68yYMYONGzfyzDPPsM8++zR3k1qthr5uhw4dysKFC+3HW7ZsYcuWLS3udd6Q15hhGBxyyCG89tpr9jprGHnv3r2borm7xX/+8x+mTJmStG7ZsmU1XoOqqgwePDjpd7148WIcDgf77rtvYzd1tzMMg19++WWHPSH8fj/7778/33//vb1u27ZtFBUV7ZG/69o+s7f293Vt193a39e1XXdrfm/X9b20tb6vN27cyIwZM5LCsl9//ZU2bdowcuTIPfK9vdcnLl6vlxNOOIEbb7yRpUuX8vHHH/P4449z9tlnN3fTWpxVq1Yxb948zj//fEaOHEleXp49iYbp0qULPXr0sKeUlBRSUlLo0aNHczetRerduzcTJkxg1qxZLFu2jK+++or58+fz17/+tbmb1uJMnDgRp9PJP//5T9asWcOnn37KQw89tMPx96JuOTk5dOrUiVmzZrFixQrmz5/P0qVLOfnkk5u7aS3OK6+8woIFC7j11ltJT0+3/w5VHYIidt2OXrfhcJi8vDy7zsZf//pX/ve///Hyyy+zbNkyrrrqKiZMmEC3bt2a8zIabEevscTrVhSFCRMm8MADD7BgwQJWrFjBVVddRceOHRk/fnzzXkgDHHTQQfz444889thjrF+/nueff5433njDHvYeDAaTPu9NnjyZxx57jI8//pilS5dy4403cuqpp+7Rw3pqs2nTJsrLy2sc1pN43ampqYwcOZLZs2ezdOlSfvvtNy6//HLGjRtH//79m7rZdarrM3trfl/Xdd2t+X1d13W31vf2jr6Xtsb3NZjD9AYNGsS1117LypUr+eKLL7jzzju58MIL99z3tiGMiooK46qrrjKGDRtmjB071njiiSeau0kt0sMPP2z069evxknsmquvvtq4+uqrm7sZLVppaanxj3/8wxg2bJgxevRo44EHHjB0XW/uZrVIK1asMKZMmWKMGDHCOOSQQ4wnnnhCfpY7oV+/fsb3339vP167dq1xxhlnGPvtt59x9NFHG998800ztq5lSfxZTp06tca/Q2eeeWYzt7J1aMjr9vvvvzf69etnbNiwwV736quvGuPHjzeGDRtmTJ8+3SgsLGzS9u+shrzGql53MBg0Zs+ebYwZM8YYOnSoMW3aNGPz5s3Ndi31VfV3/dFHHxnHHnusMXjwYOOII44wPvjgA3vbq6++Wu3z3sMPP2yMHj3aGDlypDFr1iwjGAw2Wdt3RdXrXrx4sdGvXz8jFApV27fqdRcXFxvXXHONkZubawwfPty48sorjeLi4iZpd0Ps6DN7a31f13Xdrfl9vaPfd2t8b+/omlvj+9qydetWY/r06caIESOMMWPGGA8++KD9OX1PfG8rhmEYuzfiEkIIIYQQQgghhBCidnv9kD0hhBBCCCGEEEII0bQkkBJCCCGEEEIIIYQQTUoCKSGEEEIIIYQQQgjRpCSQEkIIIYQQQgghhBBNSgIpIYQQQgghhBBCCNGkJJASQgghhBBCCCGEEE1KAikhhBBCCCGEEEII0aQkkBJCCCGEEEIIIYQQTUoCKSFEi9C/f39mzpxZbf1rr73GxIkTm6FFQgghhBBCCCF2lgRSQogW4+233+a7775r7mYIIYQQQgghhNhFEkgJIVqMLl26cPPNNxMOh5u7KUIIIYQQQgghdoEEUkKIFuPvf/8727Zt47HHHqt1n61bt3LZZZeRk5NDbm4ut956qx1gvfbaa5x11lncf//95ObmMmrUKGbPno1hGPbxL774IhMnTmT48OGcddZZ/Pnnn41+XUIIIYQQQgixt5FASgjRYnTo0IFLL72Uhx56iA0bNlTbHg6H+dvf/kYgEOCZZ57hvvvu4/PPP+eOO+6w91m0aBFr1qzhhRde4LrrruPpp5/m22+/BeDTTz9lzpw5XHfddbz++uuMHDmSs88+m5KSkia7RiGEEEIIIYTYG0ggJYRoUc466yx69OjBbbfdVm3bV199xbZt27jzzjvp378/o0eP5vrrr+eFF16gvLwcgFgsxi233ELv3r05/vjj2Xffffnll18AePTRR5k2bRoHHXQQPXv25O9//ztdunThzTffbNJrFEIIIYQQQojWztHcDRBCiIbQNI0bb7yRyZMn8/HHHydtW7VqFT179iQjI8NeN2LECKLRKOvXrwegbdu2pKam2ttTU1OJRqP28XfeeSf33HOPvT0UCrF27dpGvCIhhBBCCCGE2PtIICWEaHFGjBjBSSedxG233cZ5551nr3e73dX2jcViSXOXy1VtH6uGVCwW49prr2X06NFJ2xMDLCGEEEIIIYQQu06G7AkhWqQrr7ySioqKpALnvXr1Yu3atRQXF9vrFi9ejMPhoHv37js8Z69evdi6dSs9evSwp4ceeojFixc3whUIIYQQQgghxN5LAikhRIuUlZXFlVdeyaZNm+x1Y8aMoVu3blx11VX8+eeffP/999xyyy0cc8wxpKen7/Cc55xzDk899RRvvPEG69ev58477+S9996jT58+jXkpQgghhBBCCLHXkSF7QogW6+STT+bVV19l+/btgFlfat68edxyyy2ceuqppKSkcOyxx3LFFVfU63xHHXUU+fn53H///eTn59O3b18efPBBevbs2YhXIYQQQgghhBB7H8WwiqcIIYQQQgghhBBCCNEEZMieEEIIIYQQQgghhGhSEkgJIYQQQgghhBBCiCYlgZQQQgghhBBCCCGEaFISSAkhhBBCCCGEEEKIJiWBlBBCCCGEEEIIIYRoUhJICSGEEEIIIYQQQogmJYGUEEIIIYQQQgghhGhSEkgJIYQQQgghhBBCiCYlgZQQQgghhBBCCCGEaFISSAkhhBBCCCGEEEKIJiWBlBBCCCGEEEIIIYRoUhJICSGEEEIIIYQQQogmJYGUEEIIIYQQQgghhGhSEkgJIYQQQgghhBBCiCYlgZQQQgghhBBCCCGEaFISSAkhhBBCCCGEEEKIJiWBlBBCCCGEEKLFMwyjuZsg9kDyuhBizyWBlBAiyVlnncVZZ53V6M+zceNG+vfvz2uvvdag4xYsWED//v1ZsGBBI7VszzBx4kSuueaa5m6GEEKIPczChQu55JJLGDNmDIMHD+bggw/mn//8J6tWrWrupiV54IEH6N+/f5M938KFC7ngggua7Pn2BL/99hvnn38+BxxwALm5uUydOpXffvstaR/DMHjsscc47LDDGDx4MIcffjjPPfdcg57nX//6V7XPhtbvt7bphx9+qPf5azrXwIEDyc3NZfr06axYsaLe53r88ce58sorASgtLeWqq67ip59+qvfxu+Kaa65h4sSJde7z2muv0b9/fzZu3Fjv89bnmKKiIiZMmMCGDRvqfd5E5eXl3HTTTYwZM4bhw4dz/vnns3r16h0e9+eff3LeeeeRk5PD2LFjufrqq8nPz0/aZ9u2bcycOZOcnBxGjBjBueeeyy+//LJT7RStj6O5GyCEEEIIIYTYsfnz53PPPfcwduxYrr32WrKzs1m3bh0vvPACJ554IrNnz+boo49u7mY2i5dffnmPC+Ua07p16zjzzDPZb7/9uO2221AUhccff5zJkyfz+uuv07t3bwDuuOMOnnnmGS699FIGDx7Ml19+yc0334zD4eC0007b4fM8/vjjPPHEE+Tk5CStP+WUUxg3blzSukgkwuWXX052djZDhgxp8DW99NJL9nIsFmPz5s3ce++9nHHGGbzzzjtkZ2fXefyqVat4+OGHefPNNwH4448/+N///sdJJ53U4LY0lgkTJvDSSy/Rvn373XrerKwspkyZwrXXXsvTTz+NoigNOn7mzJksWbKEf/zjH6SmpjJnzhzOPvts3nnnHTIyMmo8Jj8/n7/97W906tSJ2bNnEwqFuOuuuzj//PP573//i9PppKysjL/+9a8EAgEuu+wyevbsyQcffMCZZ57JM888s1OvE9G6SCAlhBBCCCHEHu6zzz7j7rvv5pJLLmHGjBn2+pycHE444QRmzpzJNddcQ79+/dhnn32asaWiKTzzzDN4vV4efvhhfD4fAAcccAATJ07k2Wef5frrr2fjxo08+eSTXHfddUyePBmA0aNHs2XLFr7++us6A6kNGzbw73//m08//ZS0tLRq2zt27EjHjh2T1s2ePZvy8nJefPFFPB5Pg69p2LBhSY9HjhxJp06dOOOMM3j99dd32APuzjvv5JhjjqFDhw4Nfu6m0qZNG9q0adMo5548eTIPPvggH330EYcddli9j1u0aBGfffYZ8+fPZ/z48QCMGjWKgw8+mOeff56LLrqoxuM++eQTioqK+O9//0v37t0BSEtL47zzzmPRokXk5OTw6quvsmnTJp5//nlGjhwJwJgxYyguLub222/nxRdf3MWrFi2dDNkTQuyUb775hsmTJzNy5Ehyc3OZOXMmW7ZsSdpn9erVzJgxg5ycHPbff3+mTZtW679eGobBrFmzGDJkCF9//bW9/sUXX+Twww9nyJAhnHnmmWzevLnasWvXruXSSy9lzJgxDBs2jLPOOouFCxcCUFxczMCBA3nyySft/bds2UL//v35xz/+Ya/TdZ3c3Fwefvhhezjhe++9x6WXXsrw4cPJycnhn//8JxUVFXX+XLZv386sWbMYP348Q4YM4eSTT+aTTz5J2qd///4899xz/N///R85OTkMHz6cyy67rFoXZ8tJJ53E6aefXm39lClTOOecc+psjxBCiNZhzpw59O7dm+nTp1fb5nQ6ufnmm9E0jUceeQSAqVOnMmnSpGr7XnzxxRx33HH2459++okzzzyToUOHkpOTw9VXX01hYaG9/bXXXmPgwIG8/PLLjBkzhpycHFauXMn69eu58MILyc3NZejQoZx22ml88cUX1Z7v888/57jjjrOHi73xxhtJ2+vzdzMUCjF37lyOOOIIBg8ezGGHHcb8+fPRdR0wh0q9/vrrbNq0qc5yAA888ABHHHEEH330EccccwyDBw/m+OOPZ9GiRSxevJhTTjmFIUOGcMwxx/Ddd98lHbt8+XKmTZvGiBEjGDFiBNOnT682PGrZsmXMmDGDAw44gEGDBjFu3DhuvfVWgsGgvU99PgNYQ7TqKk/Qu3dvpk6daodRAD6fj44dO7J+/XoAPv74Y9xuNyeffHLSsffddx8PPPBArecGM1xat24dTz31FAMGDKhzXzCHbj3zzDPMmDGDrl277nD/+tpvv/0A2LRpE2D+Dg899FDmzJljDxMrKSlh+fLlfP755xxzzDGAWeLh7LPPBuDss89OGnL47rvvMmnSJIYPH86YMWO4/vrrKSkpSXreX375hXPPPZfc3FxGjBjBhRdeWO+hg6+99hqHH344gwcP5rjjjkt6X9Q0/O7111/nqKOOsvf/7rvvGDhwYLXX8ZIlSzj99NMZPHgwEyZM4NFHH03a7nK5OPzww3n44YftdVapi7pKZHz99df4fD7Gjh1rr2vTpg37779/je9pSygUAiA1NdVel5mZCZifv8HstZaRkWGHUZbc3FwWLVpU7ecu9j4SSAkhGuyNN95g6tSpdOrUiXvuuYdZs2axaNEiTjvtNAoKCgBzvPhpp53G2rVrufHGG7nzzjvtrr3WH6lEt956K2+//TZz5syx/yA+++yz3HDDDYwfP5558+YxdOhQrrvuuqTjVq5cyaRJk9i4cSP//Oc/ueuuu1AUhb/97W/88MMPZGZmMmzYML799lv7GOtDZmJNgSVLllBcXMyECRPsdTfccANdunRh3rx5nHvuubzyyis8+OCDtf5c8vPzOfnkk/npp5+4/PLLeeCBB+jSpQvTp0+3u49b7r33XnRd55577uGqq67is88+4/bbb6/xvCeffDKLFi1i3bp19rotW7awYMGCGr9sCCGEaF0KCwv59ddfOeigg2odipOZmcmBBx5ohznHHXccv/32W9LfjtLSUr788kuOP/54AH788UemTJmCx+Ph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sIPBd955B0VFRRg/fjwuvvhiLF26FIqiYNasWdi+fTsefPBBjB071vlj39VXX40LL7wQF198Mc4880xomobly5dDVVVcdtllPXbO9hX4rrnmGtx88834r//6L6xfvx5Lly4FsHch65o1awDAuWJ1JBLBxo0bMWLECKd7aaYjjjgC06ZNwy9/+Uv88pe/RHFxMR5++GEUFBQ4VxsE+JWtVVV1hte44oorcNlll+GKK67AaaedBlVV8fTTT6O2thb33nsvAODggw/G4YcfjkWLFuFXv/oVJEnCAw88AEmScPnll3f78ZGBhwIpQkg73333HRYvXtyu/bTTTsORRx6JuXPnIhgM4tFHH8Vll12GUCiEY445BgsWLHDGdBg8eDBeeOEF3HPPPbjuuuvg8Xgwffp03H///SgqKspaVn399dfjgw8+wI033oinnnoKc+bMgSiKWLZsGf70pz+huroav/nNb7BgwQLnNuPGjcMLL7yA++67DwsXLoQgCDj00EPxzDPPtBv8cfr06WkVUrIsY+rUqVkHNN8bFRUVePHFF3Hvvffitttug6ZpGD9+PJYtW4b//M//3OfjV1VVYfz48SgvL0dVVdU+H48QQkh+Of/88zF58mQ8/fTTuOuuu9DU1ISKigocddRRuP32251wxm38+PGorq5Gc3MzZsyYkbbt6KOPxuOPP44lS5Zg/vz5UBQFEydOxJNPPtlpOOH1evHEE0/g3nvvxe233462tjaMGjUKv/nNbzB37twuP56u/L8pCAIeffRRPPTQQ3jqqafQ1NSEYcOGYcGCBWld6ObOnYt3330Xl112GebPn4+LL764y+exJ+PHj8fzzz+P+++/H7/61a/AGEN1dTWWLl3qnOcll1yC5uZmPPPMM1i6dCkGDx6Mk08+2Tn/trY2FBYWdun+3nnnHSxcuBDPPPNM1uEEVFXFO++8AwBZu0dOmzYNzz77LADgwQcfxJIlS/Dkk0+iqakJY8eOxZIlS9K6di5btgx//OMf8c0333T3qUFDQ0On4wC9/PLLWLJkCf7+97/3aves4447DkuXLsXnn3/uDFA/btw4zJkzB88//zzef/99vP76606A+txzz+H3v/89iouLccIJJ+DKK690qgdnzJiBJ598Eg899BAWLFgAj8eDqVOn4q677mo3aP+++uEPf4hYLIbHH38cK1aswLhx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", - "text/plain": [ - "
      " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "def add_pred_to_plot(preds, axs, coords, color, label):\n", - " sns.lineplot(\n", - " x=logging_times,\n", - " y=preds.mean(dim=0).squeeze().tolist(),\n", - " ax=axs[coords],\n", - " label=label,\n", - " color=color,\n", - " )\n", - " axs[coords].fill_between(\n", - " logging_times,\n", - " torch.quantile(preds, 0.025, dim=0).squeeze(),\n", - " torch.quantile(preds, 0.975, dim=0).squeeze(),\n", - " alpha=0.2,\n", - " color=color,\n", - " )\n", - "\n", - "\n", - "fig, axs = plt.subplots(4, 2, figsize=(12, 6))\n", - "\n", - "colors = [\"orange\", \"red\", \"green\"]\n", - "\n", - "add_pred_to_plot(\n", - " unintervened_samples[\"S\"], axs, coords=(0, 0), color=colors[0], label=\"susceptible\"\n", - ")\n", - "add_pred_to_plot(\n", - " unintervened_samples[\"I\"], axs, coords=(0, 0), color=colors[1], label=\"infected\"\n", - ")\n", - "add_pred_to_plot(\n", - " unintervened_samples[\"R\"], axs, coords=(0, 0), color=colors[2], label=\"recovered\"\n", - ")\n", - "\n", - "axs[0, 1].hist(unintervened_samples[\"overshoot\"].squeeze())\n", - "axs[0, 0].set_title(\"No interventions\")\n", - "axs[0, 1].set_title(\n", - " f\"Overshoot mean: {unintervened_samples['overshoot'].squeeze().mean().item():.2f}, Pr(too high): {unintervened_samples['os_too_high'].squeeze().float().mean().item():.2f} \"\n", - ")\n", - "\n", - "\n", - "add_pred_to_plot(\n", - " intervened_samples[\"S\"], axs, coords=(1, 0), color=colors[0], label=\"susceptible\"\n", - ")\n", - "add_pred_to_plot(\n", - " intervened_samples[\"I\"], axs, coords=(1, 0), color=colors[1], label=\"infected\"\n", - ")\n", - "add_pred_to_plot(\n", - " intervened_samples[\"R\"], axs, coords=(1, 0), color=colors[2], label=\"recovered\"\n", - ")\n", - "axs[1, 0].set_title(\"Both interventions\")\n", - "axs[1, 0].legend_.remove()\n", - "\n", - "\n", - "axs[1, 1].hist(intervened_samples[\"overshoot\"].squeeze())\n", - "axs[1, 1].set_title(\n", - " f\"Overshoot mean: {intervened_samples['overshoot'].squeeze().mean().item():.2f}, Pr(too high): {intervened_samples['os_too_high'].squeeze().float().mean().item():.2f} \"\n", - ")\n", - "\n", - "\n", - "add_pred_to_plot(\n", - " mask_samples[\"S\"], axs, coords=(2, 0), color=colors[0], label=\"susceptible\"\n", - ")\n", - "add_pred_to_plot(\n", - " mask_samples[\"I\"], axs, coords=(2, 0), color=colors[1], label=\"infected\"\n", - ")\n", - "add_pred_to_plot(\n", - " mask_samples[\"R\"], axs, coords=(2, 0), color=colors[2], label=\"recovered\"\n", - ")\n", - "axs[2, 0].set_title(\"Mask only\")\n", - "axs[2, 0].legend_.remove()\n", - "\n", - "axs[2, 1].hist(mask_samples[\"overshoot\"].squeeze())\n", - "axs[2, 1].set_title(\n", - " f\"Overshoot mean: {mask_samples['overshoot'].squeeze().mean().item():.2f}, Pr(too high): {mask_samples['os_too_high'].squeeze().float().mean().item():.2f} \"\n", - ")\n", - "\n", - "add_pred_to_plot(\n", - " lockdown_samples[\"S\"], axs, coords=(3, 0), color=colors[0], label=\"susceptible\"\n", - ")\n", - "add_pred_to_plot(\n", - " lockdown_samples[\"I\"], axs, coords=(3, 0), color=colors[1], label=\"infected\"\n", - ")\n", - "add_pred_to_plot(\n", - " lockdown_samples[\"R\"], axs, coords=(3, 0), color=colors[2], label=\"recovered\"\n", - ")\n", - "axs[3, 0].set_title(\"Lockdown only\")\n", - "axs[3, 0].legend_.remove()\n", - "\n", - "axs[3, 1].hist(lockdown_samples[\"overshoot\"].squeeze())\n", - "axs[3, 1].set_title(\n", - " f\"Overshoot mean: {lockdown_samples['overshoot'].squeeze().mean().item():.2f}, Pr(too high): {lockdown_samples['os_too_high'].squeeze().float().mean().item():.2f} \"\n", - ")\n", - "\n", - "\n", - "fig.tight_layout()\n", - "fig.suptitle(\"Trajectories and overshoot distributions\", fontsize=16, y=1.05)\n", - "sns.despine()\n", - "\n", - "plt.savefig(\"counterfactual_sir.png\")" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "mask tensor(0.)\n", - "lockdown tensor(1.)\n", - "mask_eff tensor(0.)\n", - "dict_keys(['lockdown', 'mask', 'lockdown_efficiency', 'mask_efficiency', 'joint_efficiency', 'beta', 'gamma', 'S', 'I', 'R', 'l', 'overshoot', 'os_too_high'])\n" - ] - } - ], - "source": [ - "with ExtractSupports() as s:\n", - " policy_model()\n", - "\n", - "supports = s.supports\n", - "print(supports.keys())\n", - "\n", - "antecedents = {\"lockdown\": torch.tensor(1.0), \"mask\": torch.tensor(1.0)}\n", - "alternatives = {\"lockdown\": torch.tensor(0.0), \"mask\": torch.tensor(0.0)}\n", - "witnesses = {key: s.supports[key] for key in [\"lockdown_efficiency\", \"mask_efficiency\"]}\n", - "consequents = {\"os_too_high\": torch.tensor(1.0)}\n", - "\n", - "with MultiWorldCounterfactual() as mwc:\n", - " with SearchForExplanation(\n", - " supports=supports,\n", - " alternatives=alternatives,\n", - " antecedents=antecedents,\n", - " antecedent_bias=0.0,\n", - " witnesses=witnesses,\n", - " consequents=consequents,\n", - " consequent_scale=1e-8,\n", - " witness_bias=0.2,\n", - " ):\n", - " with pyro.plate(\"sample\", exp_plate_size):\n", - " with pyro.poutine.trace() as tr:\n", - " policy_model_all()" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "metadata": {}, - "outputs": [], - "source": [ - "query = SearchForExplanation(\n", - " supports=supports,\n", - " alternatives=alternatives,\n", - " antecedents=antecedents,\n", - " antecedent_bias=0.5,\n", - " witnesses={},\n", - " consequents=consequents,\n", - " consequent_scale=1e-8,\n", - " # witness_bias=0.2,\n", - " )(policy_model_all)\n", - "\n", - "# $P(…) [0.25 X 1(o | do(l, m)) 1(o’ | do (l’, m’)) + 0.25 X 1(o | do(l)) 1(o’ | do (l’)) + 0.25 X 1(o | do(m)) 1(o’ | do (m’)) + 0.25 X 1(o)1(o’)]" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "mask tensor([[1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.]])\n", - "lockdown tensor([[1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.]])\n", - "mask_eff tensor([[[0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000]],\n", - "\n", - " [[0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000]],\n", - "\n", - " [[0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000]],\n", - "\n", - " [[0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000]],\n", - "\n", - " [[0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000]],\n", - "\n", - " [[0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000]],\n", - "\n", - " [[0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000]],\n", - "\n", - " [[0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000]],\n", - "\n", - " [[0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000]],\n", - "\n", - " [[0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000]],\n", - "\n", - " [[0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000]],\n", - "\n", - " [[0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000]],\n", - "\n", - " [[0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000]],\n", - "\n", - " [[0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000]],\n", - "\n", - " [[0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000]],\n", - "\n", - " [[0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000]],\n", - "\n", - " [[0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000]],\n", - "\n", - " [[0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000]],\n", - "\n", - " [[0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000]],\n", - "\n", - " [[0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000]]])\n", - "mask tensor([[1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.]])\n", - "lockdown tensor([[1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.],\n", - " [1., 1., 1.]])\n", - "mask_eff tensor([[[0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000]],\n", - "\n", - " [[0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000]],\n", - "\n", - " [[0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000]],\n", - "\n", - " [[0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000]],\n", - "\n", - " [[0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000]],\n", - "\n", - " [[0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000]],\n", - "\n", - " [[0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000]],\n", - "\n", - " [[0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000]],\n", - "\n", - " [[0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000]],\n", - "\n", - " [[0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000]],\n", - "\n", - " [[0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000]],\n", - "\n", - " [[0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000]],\n", - "\n", - " [[0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000]],\n", - "\n", - " [[0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000]],\n", - "\n", - " [[0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000]],\n", - "\n", - " [[0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000]],\n", - "\n", - " [[0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000]],\n", - "\n", - " [[0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000]],\n", - "\n", - " [[0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000]],\n", - "\n", - " [[0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000],\n", - " [0.1000, 0.1000, 0.1000]]])\n" - ] - } - ], - "source": [ - "logp, tr, mwc, lw = importance_infer(num_samples=20)(query)()" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "tensor([-4.0500e+15, -4.0500e+15, -4.0500e+15, -4.0500e+15, -4.0500e+15,\n", - " -4.0500e+15, -4.0500e+15, -4.0500e+15, -4.0500e+15, -4.0500e+15,\n", - " -4.0500e+15, -4.0500e+15, -4.0500e+15, -4.0500e+15, -4.0500e+15,\n", - " -4.0500e+15, -4.0500e+15, -4.0500e+15, -4.0500e+15, -4.0500e+15])\n", - "tensor(20)\n", - "torch.Size([])\n", - "tensor(0.)\n", - "tensor([0.0266, 0.0287, 0.0337, 0.0285, 0.0349, 0.0267, 0.0318, 0.0271, 0.0300,\n", - " 0.0428, 0.0509, 0.0490, 0.0360, 0.0190, 0.0333, 0.0356, 0.0369, 0.0274,\n", - " 0.0296, 0.0280])\n", - "tensor([0.0266, 0.0287, 0.0337, 0.0285, 0.0349, 0.0267, 0.0318, 0.0271, 0.0300,\n", - " 0.0428, 0.0509, 0.0490, 0.0360, 0.0190, 0.0333, 0.0356, 0.0369, 0.0274,\n", - " 0.0296, 0.0280])\n", - "tensor([0.0266, 0.0287, 0.0337, 0.0285, 0.0349, 0.0267, 0.0318, 0.0271, 0.0300,\n", - " 0.0428, 0.0509, 0.0490, 0.0360, 0.0190, 0.0333, 0.0356, 0.0369, 0.0274,\n", - " 0.0296, 0.0280])\n", - "tensor([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 0., 1., 1., 1., 1.,\n", - " 1., 1.])\n", - "tensor([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 0., 1., 1., 1., 1.,\n", - " 1., 1.])\n", - "tensor([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 0., 1., 1., 1., 1.,\n", - " 1., 1.])\n", - "tensor([0.1000, 0.1000, 0.1000, 0.1000, 0.1000, 0.1000, 0.1000, 0.1000, 0.1000,\n", - " 0.1000, 0.1000, 0.1000, 0.1000, 0.1000, 0.1000, 0.1000, 0.1000, 0.1000,\n", - " 0.1000, 0.1000])\n", - "tensor([0.1000, 0.1000, 0.1000, 0.1000, 0.1000, 0.1000, 0.1000, 0.1000, 0.1000,\n", - " 0.1000, 0.1000, 0.1000, 0.1000, 0.1000, 0.1000, 0.1000, 0.1000, 0.1000,\n", - " 0.1000, 0.1000])\n", - "tensor([0.1000, 0.1000, 0.1000, 0.1000, 0.1000, 0.1000, 0.1000, 0.1000, 0.1000,\n", - " 0.1000, 0.1000, 0.1000, 0.1000, 0.1000, 0.1000, 0.1000, 0.1000, 0.1000,\n", - " 0.1000, 0.1000])\n" - ] - } - ], - "source": [ - "print(lw.squeeze())\n", - "\n", - "mask_intervened = (tr.nodes[\"__cause____antecedent_lockdown\"][\"value\"] == 0) & (tr.nodes[\"__cause____antecedent_mask\"][\"value\"] == 0)\n", - "print(mask_intervened.sum())\n", - "\n", - "with mwc:\n", - " oth = gather(tr.nodes[\"os_too_high\"][\"value\"], IndexSet(**{\"lockdown\": {2}, \"mask\": {2}}))\n", - " print(oth.shape)\n", - " os = gather(tr.nodes[\"overshoot\"][\"value\"], IndexSet(**{\"lockdown\": {2}, \"mask\": {2}}))\n", - "\n", - "denom = torch.sum(torch.exp(lw.squeeze()) * mask_intervened.squeeze().float())/torch.sum(mask_intervened.squeeze()).float()\n", - "print(denom)\n", - "# print(denom/torch.sum(torch.exp(lw.squeeze())))\n" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "tensor([[ 0.0000e+00, 0.0000e+00, 0.0000e+00],\n", - " [ 0.0000e+00, -inf, 0.0000e+00],\n", - " [ 0.0000e+00, 0.0000e+00, -5.0000e+15]])" - ] - }, - "execution_count": 33, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "tr.trace.nodes[\"__cause____consequent_os_too_high\"][\"fn\"].log_factor[:, :, :, :, :, 6].squeeze()" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [], - "source": [ - "def get_table(\n", - " trace, mwc, antecedents, witnesses, consequents, others=None, world: int = 1\n", - "):\n", - "\n", - " values_table = {}\n", - " nodes = trace.trace.nodes\n", - " witnesses = [key for key, _ in witnesses.items()]\n", - "\n", - " with mwc:\n", - "\n", - " for antecedent_str in antecedents.keys():\n", - "\n", - " obs_indices = IndexSet(\n", - " **{\n", - " name: {0}\n", - " for name, ind in indices_of(nodes[antecedent_str][\"value\"]).items()\n", - " }\n", - " )\n", - " obs_ant = gather(\n", - " nodes[antecedent_str][\"value\"],\n", - " obs_indices,\n", - " event_dim=0,\n", - " )\n", - "\n", - " int_indices = IndexSet(\n", - " **{\n", - " name: {world}\n", - " for name, ind in indices_of(nodes[antecedent_str][\"value\"]).items()\n", - " }\n", - " )\n", - " int_ant = gather(\n", - " nodes[antecedent_str][\"value\"],\n", - " int_indices,\n", - " event_dim=0,\n", - " )\n", - "\n", - " values_table[f\"{antecedent_str}_obs\"] = obs_ant.squeeze().tolist()\n", - " values_table[f\"{antecedent_str}_int\"] = int_ant.squeeze().tolist()\n", - "\n", - " apr_ant = nodes[f\"__cause____antecedent_{antecedent_str}\"][\"value\"]\n", - " values_table[f\"apr_{antecedent_str}\"] = apr_ant.squeeze().tolist()\n", - "\n", - " if witnesses:\n", - " for candidate in witnesses:\n", - " obs_indices = IndexSet(\n", - " **{\n", - " name: {world}\n", - " for name, ind in indices_of(nodes[candidate][\"value\"]).items()\n", - " }\n", - " )\n", - " obs_candidate = gather(\n", - " nodes[candidate][\"value\"],\n", - " obs_indices,\n", - " event_dim=0,\n", - " )\n", - "\n", - " int_indices = IndexSet(\n", - " **{\n", - " name: {world}\n", - " for name, ind in indices_of(nodes[candidate][\"value\"]).items()\n", - " }\n", - " )\n", - " int_candidate = gather(\n", - " nodes[candidate][\"value\"],\n", - " int_indices,\n", - " event_dim=0,\n", - " )\n", - "\n", - " values_table[f\"{candidate}_obs\"] = obs_candidate.squeeze().tolist()\n", - " values_table[f\"{candidate}_int\"] = int_candidate.squeeze().tolist()\n", - "\n", - " wpr_con = nodes[f\"__cause____witness_{candidate}\"][\"value\"]\n", - " values_table[f\"wpr_{candidate}\"] = wpr_con.squeeze().tolist()\n", - "\n", - " if others:\n", - " for other in others:\n", - " obs_indices = IndexSet(\n", - " **{\n", - " name: {0}\n", - " for name, ind in indices_of(nodes[other][\"value\"]).items()\n", - " }\n", - " )\n", - "\n", - " obs_other = gather(\n", - " nodes[other][\"value\"],\n", - " obs_indices,\n", - " event_dim=0,\n", - " )\n", - "\n", - " int_indices = IndexSet(\n", - " **{\n", - " name: {world}\n", - " for name, ind in indices_of(nodes[other][\"value\"]).items()\n", - " }\n", - " )\n", - "\n", - " int_other = gather(\n", - " nodes[other][\"value\"],\n", - " int_indices,\n", - " event_dim=0,\n", - " )\n", - "\n", - " values_table[f\"{other}_obs\"] = obs_other.squeeze().tolist()\n", - " values_table[f\"{other}_int\"] = int_other.squeeze().tolist()\n", - "\n", - " for consequent in consequents.keys():\n", - "\n", - " obs_indices = IndexSet(\n", - " **{\n", - " name: {0}\n", - " for name, ind in indices_of(nodes[consequent][\"value\"]).items()\n", - " }\n", - " )\n", - " obs_consequent = gather(\n", - " nodes[consequent][\"value\"],\n", - " obs_indices,\n", - " event_dim=0,\n", - " )\n", - "\n", - " int_indices = IndexSet(\n", - " **{\n", - " name: {world}\n", - " for name, ind in indices_of(nodes[consequent][\"value\"]).items()\n", - " }\n", - " )\n", - " int_consequent = gather(\n", - " nodes[consequent][\"value\"],\n", - " int_indices,\n", - " event_dim=0,\n", - " )\n", - "\n", - " values_table[f\"{consequent}_obs\"] = obs_consequent.squeeze().tolist()\n", - " values_table[f\"{consequent}_int\"] = int_consequent.squeeze().tolist()\n", - "\n", - " values_df = pd.DataFrame(values_table)\n", - "\n", - " return values_df\n", - "\n", - "\n", - "table = get_table(\n", - " tr,\n", - " mwc,\n", - " antecedents,\n", - " witnesses,\n", - " consequents,\n", - " others=[\"joint_efficiency\", \"overshoot\"],\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
      \n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
      lockdown_obslockdown_intapr_lockdownmask_obsmask_intapr_masklockdown_efficiency_obslockdown_efficiency_intwpr_lockdown_efficiencymask_efficiency_obsmask_efficiency_intwpr_mask_efficiencyjoint_efficiency_obsjoint_efficiency_intovershoot_obsovershoot_intos_too_high_obsos_too_high_int
      71.00.001.01.010.00.000.100.1010.70.1027.41394820.0812401.01.0
      121.00.001.01.010.00.000.100.1010.70.1028.14365418.1764261.00.0
      171.00.001.01.010.00.000.450.4500.70.4523.87853229.1183361.01.0
      441.00.001.01.010.00.000.450.4500.70.4532.59492925.2029081.01.0
      681.00.001.01.010.00.000.100.1010.70.1030.27199018.7337441.00.0
      .........................................................
      19321.00.001.01.010.00.000.100.1010.70.1033.91317716.3358461.00.0
      19401.00.001.01.010.00.000.100.1010.70.1018.85662823.3308110.01.0
      19491.00.001.01.010.00.000.450.4500.70.4532.29933926.9598581.01.0
      19841.00.001.01.010.00.000.450.4500.70.4521.07369629.3471391.01.0
      19861.00.001.01.010.00.000.100.1010.70.1032.65984715.7352281.00.0
      \n", - "

      153 rows × 18 columns

      \n", - "
      " - ], - "text/plain": [ - " lockdown_obs lockdown_int apr_lockdown mask_obs mask_int apr_mask \\\n", - "7 1.0 0.0 0 1.0 1.0 1 \n", - "12 1.0 0.0 0 1.0 1.0 1 \n", - "17 1.0 0.0 0 1.0 1.0 1 \n", - "44 1.0 0.0 0 1.0 1.0 1 \n", - "68 1.0 0.0 0 1.0 1.0 1 \n", - "... ... ... ... ... ... ... \n", - "1932 1.0 0.0 0 1.0 1.0 1 \n", - "1940 1.0 0.0 0 1.0 1.0 1 \n", - "1949 1.0 0.0 0 1.0 1.0 1 \n", - "1984 1.0 0.0 0 1.0 1.0 1 \n", - "1986 1.0 0.0 0 1.0 1.0 1 \n", - "\n", - " lockdown_efficiency_obs lockdown_efficiency_int \\\n", - "7 0.0 0.0 \n", - "12 0.0 0.0 \n", - "17 0.0 0.0 \n", - "44 0.0 0.0 \n", - "68 0.0 0.0 \n", - "... ... ... \n", - "1932 0.0 0.0 \n", - "1940 0.0 0.0 \n", - "1949 0.0 0.0 \n", - "1984 0.0 0.0 \n", - "1986 0.0 0.0 \n", - "\n", - " wpr_lockdown_efficiency mask_efficiency_obs mask_efficiency_int \\\n", - "7 0 0.10 0.10 \n", - "12 0 0.10 0.10 \n", - "17 0 0.45 0.45 \n", - "44 0 0.45 0.45 \n", - "68 0 0.10 0.10 \n", - "... ... ... ... \n", - "1932 0 0.10 0.10 \n", - "1940 0 0.10 0.10 \n", - "1949 0 0.45 0.45 \n", - "1984 0 0.45 0.45 \n", - "1986 0 0.10 0.10 \n", - "\n", - " wpr_mask_efficiency joint_efficiency_obs joint_efficiency_int \\\n", - "7 1 0.7 0.10 \n", - "12 1 0.7 0.10 \n", - "17 0 0.7 0.45 \n", - "44 0 0.7 0.45 \n", - "68 1 0.7 0.10 \n", - "... ... ... ... \n", - "1932 1 0.7 0.10 \n", - "1940 1 0.7 0.10 \n", - "1949 0 0.7 0.45 \n", - "1984 0 0.7 0.45 \n", - "1986 1 0.7 0.10 \n", - "\n", - " overshoot_obs overshoot_int os_too_high_obs os_too_high_int \n", - "7 27.413948 20.081240 1.0 1.0 \n", - "12 28.143654 18.176426 1.0 0.0 \n", - "17 23.878532 29.118336 1.0 1.0 \n", - "44 32.594929 25.202908 1.0 1.0 \n", - "68 30.271990 18.733744 1.0 0.0 \n", - "... ... ... ... ... \n", - "1932 33.913177 16.335846 1.0 0.0 \n", - "1940 18.856628 23.330811 0.0 1.0 \n", - "1949 32.299339 26.959858 1.0 1.0 \n", - "1984 21.073696 29.347139 1.0 1.0 \n", - "1986 32.659847 15.735228 1.0 0.0 \n", - "\n", - "[153 rows x 18 columns]" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAABacAAAIfCAYAAABkR2CfAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAA9hAAAPYQGoP6dpAACdM0lEQVR4nOzdd3gUVfv/8c8mIQkhNCFUFSmGEkghkIC0gChFVIjw0ERRICBFlCYRBREQpSgdaVZQUCmiKDyggqCA1NCRAA9FWiIlAiFt5/cHv8yXJQESTHZYeL+uK9c1e/bs2Xt2J3v23HvmjM0wDEMAAAAAAAAAADiRm9UBAAAAAAAAAADuPSSnAQAAAAAAAABOR3IaAAAAAAAAAOB0JKcBAAAAAAAAAE5HchoAAAAAAAAA4HQkpwEAAAAAAAAATkdyGgAAAAAAAADgdCSnAQAAAAAAAABOR3IauEsYhmF1CAAA5BhX6ddcJU4AAO40rtKHukqcgKsiOQ3kksGDB6tixYo3/Fu+fHmOPE9ycrLeeecdfffddznS3rU2btyoihUrauPGjTneNgDgzrBz504NHDhQERERCgwMVOPGjfXmm2/q2LFjlsU0bdo0zZkzJ0faSk1N1eDBgxUSEqLq1atrw4YNOdLuqVOnFBUVpb/++itH2rvW5MmTVbFixWw9ZvDgwWrUqFGOxrFo0SJVrFhRx48fz9bjbid+AEDuoa+/PXdaX2+1ihUravLkyVaHgbuQh9UBAHczPz8/TZkyJdP7HnrooRx5jjNnzujTTz/V6NGjc6Q9AMC9Y968eXrnnXcUHh6u/v37q1ixYjpy5IjmzJmj//73v/r0009VqVIlp8c1ceJE9e7dO0faWrt2rRYvXqyePXvqkUceUZUqVXKk3d9//11r1qzJkbYAAMgt9PW3j74ecA6S00Au8vT0VHBwsNVhAACQwZYtWzRq1Ch17NhRQ4YMMcvDw8PVuHFjtWzZUq+//roWLVpkYZT/3vnz5yVJkZGReuCBB6wNBgAAJ6KvB+AKWNYDsFBaWppmzpypFi1aKDAwUMHBwWrXrl2G05C2b9+uF198UdWrV1etWrXUr18/nT59WsePH9ejjz4qSYqOjjZP5+3UqZM6derk0EZmS3Rs2rRJXbp0Uc2aNVW1alU1atRIkydPlt1uz+U9BwBYbc6cOcqfP7/69euX4b777rtPgwcP1qOPPqrLly8rLS1N8+bN05NPPqnAwEBFRERo3LhxSkpKMh+Tlb5n0aJFqlKlimJiYtS2bVtVq1ZNDRs2dDitN/0U1ylTpjic7vrnn3+qe/fuql69uqpXr65evXo5nI6c/lzz589Xw4YNVb16ddWrV0+DBw+WJDVu3NiM7+zZsxo+fLgaNmyoqlWrKiwsTL169cqwfMWSJUvUqlUrBQUFKSIiQuPHj1dycrIWLVqk6OhoSdKjjz5qPkdmp7tmdtru119/rcjISAUHByswMFBPP/20fvzxxxu+V7cjK++ZJK1Zs0bt2rVTcHCw6tatq6FDhyohISHTNhMSEvT000+rUaNGOnHihCQpKSlJo0ePVp06dRQSEqLo6OgMzyFJv/32mzp06KDQ0FBz9t7JkyclST/99JMqVqyoPXv2mPWXLFmiihUr6uuvvzbL9u7dq4oVK2rbtm1ZOpYA4F5HX3939fWTJ09W06ZNtXLlSrVo0ULVqlXT008/rW3btmn79u1q06aNAgMD1aJFC61fv97hsatWrVKHDh0UEhKiqlWrqmnTppo3b55DnU8//VRNmzZVtWrVVK9ePb311lu6ePHiDeOZNGmSKleurMWLF/+r/QJITgO5LDU1NcNf+gUVxo0bp2nTpqlt27aaPXu2RowYofPnz6tv375KTEyUJO3Zs0fPPvuskpKSNGbMGA0fPly7du1Sly5dVKxYMXPZkJdeeumGS4hkZt++fercubMKFSqkDz74QNOnT1eNGjU0ZcqUHB8gAwDuLIZhaN26dapdu7by5s2baZ3mzZurV69e8vHx0dChQzV69Gg1btxY06dPV8eOHTV37lz17Nkz2xcJstvteuWVV9S8eXPNnDlT1atX15gxY7R27VpJ0oIFCyRJrVu3NrcPHz6sdu3a6e+//9Z7772nUaNG6dixY2rfvr3+/vtvh/anTJmi1157TUOHDtVHH32kl156ySwfNmyYDMNQ9+7d9dtvv2nAgAGaM2eOevfurfXr12vYsGFmO/PmzdNrr72mgIAATZkyRVFRUfr88881cuRIRUREOLTbs2fPLO//vHnzNHToUDVu3FgzZszQuHHj5OnpqQEDBujUqVPZei1vJivv2S+//KLu3burSJEimjBhggYMGKBVq1bp1VdfzdDepUuX1K1bNyUkJOizzz5TqVKlJEkDBw7UV199pe7du2vChAm6cOGCPvnkE4fHLlmyRC+++KJKliyp999/X9HR0dq2bZvatm2rv//+W7Vr15anp6d+//138zHpP9Rv3rzZLPv111913333KSgoSNKtjyUAuJfR19+dff2pU6f07rvvqkePHpo4caISEhL08ssvq1+/fmrTpo2mTp0qwzD06quv6sqVK5Kk1atXq1evXgoICNC0adM0efJkPfDAA3r77bcVExMjSfr+++81duxYdezYUXPmzFGvXr307bffasSIEZnGMWfOHE2bNk0jRoxQq1at/tU+ASzrAeSiv/76SwEBARnK+/fvr6ioKJ05c0avvvqqw6/PXl5e6tOnj/bv36/g4GB9+OGHKlSokD766CN5eXlJkooVK6b+/fvr4MGDqly5siTpwQcfzNbaWvv27dMjjzyisWPHys3t6u9UderU0c8//6yNGzfqiSee+De7DgC4g507d05JSUm6//77b1k3NjZW33zzjdl3SVf7i2LFimnQoEH69ddf1aBBgyw/t2EY6tmzp9q0aSNJCg0N1cqVK7V69WrVq1fPXA6rRIkS5vaUKVOUN29effLJJ/L19ZUk1a5dW40bN9bs2bP12muvme136NBBTZs2NW8/+OCDkqTKlSvr/vvv1+nTp5U3b1699tprqlGjhqSrpzcfPXrUHCDb7XZNnTpVjRs31siRI822EhMTtWzZMuXPnz9Du1l17NgxdenSxWGQW7p0aUVGRmrLli050v9m9T2bPHmyKleurClTpshms0m6uiTZxIkTFR8fb7aXlJSkl156SadPn9bnn39u7u+BAwe0YsUKvfXWW2rfvr0kqV69enryyScVGxsr6eprOW7cONWtW1fjx48326xevbqaN2+uOXPmaNCgQQoLC9P69evVtWtXSdL69esVEBCgTZs2mY9Zu3atGjRoYH5vudWxBAD3Mvr6u7OvT0xM1LBhw1S/fn1JV9+78ePHa9SoUWrdurUk6fLly3r55Zd1+PBhVa5cWbGxsWrVqpXD0i4hISEKDw/Xxo0bFRQUpD/++EP333+/OnbsKDc3N4WFhcnHx0cXLlzIEMOXX36psWPH6u233zafE/g3SE4DucjPz0/Tp0/PUF6iRAlJMgdpZ8+e1aFDh3TkyBH98ssvkqTk5GRJV9cJa9CggZmYlq52JD///LMkZTgtKatatmypli1bKikpSYcPH9aRI0e0d+9epaWlKSUl5bbaBAC4Bnd3d0lXl364lT/++EOSMgyknnjiCUVHR2vjxo3ZGrBKV/uxdJ6enrrvvvt0+fLlG9bfsGGDwsLC5O3trdTUVEmSr6+vatSo4TDbVpL5o+2NFC9eXJ999pkMw9Dx48d15MgRHTp0SFu3bjX73sOHD+vvv//WY4895vDYLl26qEuXLtna1+ulnxackJBg9v3pp0KnP/+/lZX3LDw8XHv27FGfPn3MxLR0dRZd8+bNHR43aNAg7dq1S++8847DWp7ps5rTlxWTJDc3NzVp0sRMTh8+fFhxcXHq37+/Q5sPPvigQkJCzFivPZX6r7/+0qlTpzRkyBD16dNHf/31lwoWLKht27bp2WefdWgnu8cSANwr6Ovv3r6+evXq5nbRokUlyTyrSJIKFSpkPr8k84ffS5cu6fDhwzp69Kh27tzpEE+tWrW0YMECRUZGqnHjxmrQoIGefPJJh+8I0tWzrvbs2aMaNWroP//5z7/eF0AiOQ3kKk9PT1WrVu2G9+/cuVPDhw/Xzp07lTdvXlWoUME8TTb91Knz58+rSJEiOR7blStXNGLECH377bdKTU3V/fffr5CQEHl4eGT7tC0AgGspWLCg8uXLZ64bnJnLly8rJSXFnDHj5+fncL+Hh4cKFy6sf/75J9vP7+3t7XDbzc3tpn3P+fPn9cMPP+iHH37IcN99993ncNvHx+eWz7906VK9//77OnnypAoVKqTKlSs7xJR+YaXc6H+PHj2qoUOHav369cqTJ4/KlSunSpUqSVKO9b9Zec8uXLggwzCytI+nT59WQECApk6dqqZNmypfvnwOz1O4cGGH+tc+b/prmT54vlbRokXNdaYjIiI0cuRIbd26VYcOHVLZsmXVsGFD+fj4aNOmTfLx8ZHNZlPdunUd2sjusQQA9wr6+ru3r0+fWX6tGy3dIl2dDDds2DCtWrVKNptNZcqUMWeUp8fTvHlz2e12ffHFF+bSH6VLl9aAAQMcfrTevXu3IiIitHr1av38888OP1ADt4vkNGCRixcvqmvXrqpYsaKWLVumcuXKyc3NTWvWrNGKFSvMevnz59fZs2czPH7NmjU3/cX4+l/Ir/+VetSoUVqxYoUmTJigRx55xOzga9eu/W92CwDgIurWrauNGzcqKSnJ4eycdF999ZXee+89vfzyy5KkuLg4lS5d2rw/JSVF586dc0hM3qrvuV358+fXI488ohdeeCHDfR4e2fs6u3nzZr322mvq1KmTunTpouLFi0uSxowZoy1btkiSChQoIEkZ+t9z585pz549DrPBrnez18ButysqKkp58uTRN998o8qVK8vDw0OxsbH69ttvs7UfN1OwYEFJN3/PfH19ZbPZMuxjUlKSNmzY4DADK/1U68jISH3wwQd64403JP1fUjo+Pt78cV36vwG/9H+zt65dJiRdXFyc2cYDDzygcuXKaf369Tp8+LDCwsKUJ08eVa9eXRs3bpS7u7tq1qyZ6YAcAJA5+vq7t6/PjgEDBujQoUP65JNPFBISIk9PTyUmJuqrr75yqNeiRQu1aNFC//zzj9atW6dZs2Zp4MCBCg0NNV/Dtm3bavjw4Wrfvr2GDx+usLAw+mb8a1wQEbDIoUOHdP78eT333HOqUKGCuX7ir7/+KulqpyZJNWrU0G+//eZw+s+ePXsUFRWl3bt3m6drXcvX1zfDhRbSO+Frb4eHh6tx48ZmYnrXrl06e/as+dwAgLvXiy++qPPnz2vChAkZ7ouLi9NHH32kChUqmKe7Llu2zKHOsmXLlJaWptDQUElZ63uyKr1PTBcWFqbY2FhVrlxZ1apVU7Vq1VS1alV98sknWrlyZbba3rZtm+x2u/r06WMOtNLS0sxThu12u8qVK6fChQubS22l+/bbbxUVFaWUlJQMMUpXX4PTp087lG3dutXcPnfunA4fPqzWrVurWrVq5mD7+r7/3woLC5N08/csX758qly5coZ9/PXXX83rYqQrWrSoKlasqM6dO2vevHnmxZNq1aolSVq+fLlDG9e2WbZsWfn5+en77793qHPs2DFt377d4dTkiIgIbdy40fyOIslcD3Pt2rVq2LDhbb0eAHCvoq+/e/v67NiyZYsef/xxhYeHy9PTM9N4XnnlFfXq1UvS1R8KmjVrpp49eyo1NdXhO4Gfn59sNpveeustxcfHO1xPArhdzJwGLFK2bFn5+vrqww8/lIeHhzw8PLRixQp98803kq5e6ECSevbsqbZt26p79+567rnndOXKFU2YMEGBgYGqU6eOmbRev369ypcvr6CgIDVs2FA///yzRo8erUaNGmnz5s1asmSJw/MHBgbqxx9/1Jdffqny5ctr3759mj59umw2m/ncAIC7V3BwsPr27asJEybo4MGDatmypQoXLqwDBw5ozpw5SkpK0oQJE1S+fHm1atVKkyZNUmJiomrWrKm9e/dqypQpCg8PNy88l5W+J6sKFCigrVu3atOmTapRo4Z69uypdu3aqXv37mrfvr28vLy0YMECrVq1SpMmTcpW24GBgZKkt99+W88884wuXLigefPmad++fZKuzn7y9fVVnz599Pbbb6tIkSJq1KiRDh8+rEmTJqljx44qWLCgOeNq5cqVql+/vsqXL6+IiAgtW7ZMQUFBKlOmjBYtWqQjR46Yz12kSBGVLl1a8+bNU4kSJVSgQAGtXbtWn332mSTlWP9boUKFLL1nL7/8sl566SX169dPLVu2VHx8vN5//301btxY/v7+2rVrl0O7vXv31o8//qg33nhDixYtUpkyZdS2bVt98MEHSk1NVeXKlfXtt99q//795mPc3NzUr18/RUdHq3///nrqqad07tw5TZkyRQULFnSYIdegQQN99NFHkv4vwV6rVi1z4EtyGgCyh77+7u3rsyMwMFDfffedAgICVKJECW3dulUzZ850GPvXqlVLw4YN03vvvaf69esrISFBU6ZM0UMPPWQuSXKtSpUq6fnnn9dHH32kJ5980uHHZiC7SE4DFsmfP7+mTZumMWPGqG/fvuYMprlz56pbt27avHmzGjVqpCpVqujzzz/X+PHj9corr8jX11cNGjTQgAED5OnpKU9PT73wwgtasGCB1qxZo99++03PPPOMjh49qsWLF2v+/PmqWbOmJk2apPbt25vPP3jwYKWkpGjChAlKTk7W/fffr5deekmxsbH6+eefs3ThDACAa3vppZdUpUoVzZs3T++8844uXLigkiVLKiIiQj169FDJkiUlXV0KqkyZMlq4cKFmzZqlYsWK6bnnnlPPnj3NWUVZ6XuyqkePHpo2bZq6deumH374QZUqVdK8efP0wQcfaNCgQTIMQ/7+/po6daoeffTRbLUdHh6uoUOH6uOPP9by5ctVtGhRhYeHa8qUKerVq5d5IeKOHTvKx8dHc+bM0YIFC1SiRAl169ZN3bp1M9t55JFHNH78eK1fv14zZ85UdHS0UlNT9d5778nDw0PNmzdX//79zWUwJGnatGkaNWqUBg8eLE9PT1WoUEHTp0/XO++8o82bN6tTp07Zfr0yk5X3rGHDhvrwww/Nfb/vvvv05JNPqk+fPpm2mTdvXg0dOlTdu3fXzJkz1atXLw0bNkxFixbV3LlzdeHCBdWrV089evRwmKUXGRmpfPnyacaMGerVq5d8fX1Vr1499evXz2F909DQUOXPn19FixY1ywMCAuTr66vixYs7XIwRAJA19PV3b1+fVe+++65GjBihESNGSJIeeughDR8+XEuXLjUvbtyuXTulpKRo/vz5+uKLL+Tt7a3atWtr4MCBypMnT6bt9unTR8uXL9cbb7yhJUuWmLOygeyyGVwxBAAAAAAAAADgZMycBgAAAO5Qqampt6zj5uaW6bqYAADgzkdfj3sdyWkAAADgDnT8+PEsncrcu3fvGy7FAQAA7lz09QDLegAAAAB3pOTkZIeLC95IsWLFVLx4cSdEBAAAchJ9PUByGgAAAAAAAABgARasgWX4XQSZ4bgAgDsLn8vIDMcFANx5+GxGZjgucKcjOQ1J0uTJk1WxYkWnPd+WLVsUFRXltOe7E+zevVvdunVTrVq1FB4erhdffFG7d+92qGMYhubMmaPHH39c1apVU5MmTTRv3rxbtp2cnKz3339fERERCgwM1FNPPaUffvghQ71FixbpySefVLVq1dSoUSNNmTJFaWlp2dqP9GPl2r8qVaooPDxcvXr10oEDB7Lc1kcffaQBAwZIkhISEjRo0CBt3rw5W/HcrsGDB6tRo0Y3rbNo0SJVrFhRx48fz3K7WXnMuXPnFBERoWPHjmW53WtdunRJw4cPV506dRQSEqJu3brp0KFDt3zc/v371bVrV4WFhalu3bp67bXXFB8ff8P6n3/++S1fIwDORX+d+7LSX18rO5+VH3zwQYY+tGLFipozZ45Z5+zZs3rjjTdUr1491ahRQ507d9aePXuyvR+DBw/O8DwBAQGqW7euBg4cqJMnT2a5rREjRuiDDz6QJJ06dUpRUVH666+/sh3T7ejUqZM6dep00zq383+RlcccOnRIjRo1UkJCQrbaThcfH6/+/fsrPDxcoaGh6tevn86cOXPLx50+fdp8XPXq1W95DLz77ru3fI0AOB99du67E8bYn376qR577DEFBgaqVatWWrNmTbb3gzH2zd3JY+xt27apU6dOCgoKUu3atRUdHZ3pGDsnjpO7GclpWOLrr7/WwYMHrQ7DaY4cOaJnn31WV65c0ahRozR69GglJyerQ4cODh94Y8aM0QcffKDWrVtr5syZatSokd5++20tWLDgpu0PGDBA8+bNU1RUlD788ENVrlxZ/fr106+//mrWmTdvnl5//XXVq1dPM2fOVJs2bfThhx9q4sSJt7VPCxYsMP8+//xzvfHGG9q7d686duyouLi4Wz7+4MGDmjFjhgYOHChJ2rt3r7799lvZ7fbbiic3REREaMGCBSpWrFiOtlu4cGF17txZr7/++m39it2/f38tX75c/fv313vvvafTp0/rueee04ULF274mPj4eD3//PP6+++/NXr0aL3++uvatGmTunXrppSUlAz1ly1bpnfffTfbsQG4u9BfZ95fp8vuZ+W+ffsUFhbm0IcuWLBATz75pKSrA+g+ffpo1apV6tu3r95//33Z7XY9++yztzXY8vPzc3ieTz/9VH379tWvv/6qTp066cqVK7dsY/369Vq5cqV69OghSfr999/vuAFVmzZtbvld6XaUK1dOjz76qEaOHJntx6ampqpbt27asWOH3nrrLb311lvaunWrunTpkmm/m+7ixYvq2LGj9u7dq+HDh2v8+PG6dOmSXnjhhUwT2x999JE+/vjjbMcH4O5Dn+38MfbHH3+s9957Ty1bttTkyZP1wAMP6KWXXrrtZDBj7NtnxRh7x44d6tSpkxISEvTuu+/qnXfe0fHjx9W2bVv9888/Zr2cPk7uRh5WBwDcCz7//HPlzZtXM2bMkI+PjySpVq1aatSokebOnauhQ4fq+PHj+uSTT/Tmm2+qQ4cOkqTatWvr5MmTWrdundq2bZtp25s3b9aKFSs0c+ZMNWjQwHzckSNH9Ouvv6p+/fq6fPmyxo8fry5dupgdVe3atZWQkKDff/9d/fr1y/Y+BQcHO9wODQ1VyZIl1bFjRy1evPiWv9qPHTtWLVq0uKMv6nDffffpvvvuy5W2O3TooOnTp2vlypV6/PHHs/y4bdu26ZdffnF4v2vUqKFHH31UX3zxhV566aVMH/fTTz/p3Llz+uqrr/Tggw9KkvLnz6+uXbtq27ZtCgsLkyT9/fffmjhxohYsWKBChQr9u50EABeTlf5auv3Pyr179yoyMjJDH5ruf//7nzZv3qyRI0eqdevWkqTq1aurVq1a+vbbb9W7d+9s7Y+np2eG56pRo4by5Mmj1157TT/99JOeeOKJm7YxevRode7cWXnz5s3WcztTiRIlVKJEiVxpOyoqShEREXr++ecVEBCQ5cctX75ce/bs0bJly1ShQgVJUuXKldWiRQv9+OOPeuqppzJ93Keffqrz58/rhx9+MAfuVatWVWRkpP744w+1aNFCknTs2DG99957+vnnn5U/f/5/uZcA4HqsHmNfuXJF06ZN0wsvvKBevXpJkurXr6927dpp6tSpt/XDIWPsf8fZY+zp06crf/78+uyzz1SwYEFJV4/BZs2aafbs2Xr11Vdz5Ti5GzFz2knOnDmj6OhoNWjQQIGBgWrdurV++ukn8/4XX3xRkZGRGR7Xs2dPhy+vmzdv1rPPPqugoCCFhYXptdde09mzZ837Fy1apCpVqujrr79WnTp1FBYWptjYWB09elQ9evRQeHi4goKC1LZt20xnvaxevVpPPfWUebrLkiVLsrUfkpSUlKSpU6eqadOmqlatmh5//HHNnDnT/LVu8ODBWrx4sf766y9VrFhRixYtyvQ1mzx5spo2baqVK1eqRYsWqlatmp5++mlt27ZN27dvV5s2bRQYGKgWLVpo/fr1Do/9888/1b17d1WvXl3Vq1dXr169Msw42rdvn3r37q1atWopICBA9erV08iRIx1mEVWsWFHz5s3TkCFDFBYWppCQEPXt29fhNI30U0w2btyY6X5IV2fevPjii2anKUk+Pj4qUaKEjh49KklatWqVvLy8zMFougkTJmjy5Mk3bHv58uV68MEHzQ9RSbLZbJo/f77eeOMNSdJvv/2mS5cuZTjl87XXXtM333xzw7azq2rVqpJknuo7efJkPfbYY5oyZYq5lMSFCxf0559/avXq1eYAa+PGjXruueckSc8995xDnD/88IMiIyMVEhKiOnXqaOjQoRl+vdy5c6e6dOlinv7ao0ePLJ/6tGjRIjVp0kTVqlXTU0895fB/kdnpQ4sXL1bz5s3N+uvXr1eVKlUyHMcxMTFq166dqlWrpoiICM2ePdvhfk9PTzVp0kQzZswwyzZu3HjT/wlJWrdunXx8fFS3bl2z7L777lPNmjVvOpMtKSlJkuTr62uWpSdUzp8/b5Z9+OGHWrdunSZPnqyGDRvesD3gbkV/TX99q/5aur3PyrNnz+r06dOqXLnyDetk9lnt4+MjLy8vh8/qf6tatWqS/q+/Hjx4sJ5//nkNGzZM1atXV/PmzZWWlqbVq1frzz//NBPYixYtUnR0tCTp0Ucf1eDBgyVJaWlpmjdvnp588kkFBgYqIiJC48aNM/cn3W+//aYOHTooNDRU4eHh6t+/f5aWFzEMQ7NmzTJPrW7btq127Nhh3p/ZqfNz5szRo48+qsDAQLVr104///xzpu//rf6X/Pz8VKtWLYf+OivH0rp161S2bFkzMS1JFSpUUPny5W/aX69YsUJNmjRxmFHm5+entWvXmt+bpKs/Ghw5ckSffvrpTY8p4G5Gn02fbeUYOyYmRgkJCXrssccc6jz22GPauHFjls5OygrG2P/nThtjHzp0SKGhoWZiWpLy5s2rwMBArV692ozZGceJqyM57QTx8fFq3bq1Nm/erFdffVWTJ09W6dKl1atXLy1dulSS9NRTT2n37t06cuSI+biEhAT9+uuvevrppyVJmzZtUufOneXt7a0JEybo9ddf1x9//KHnnnvO4YBOS0vTRx99pFGjRik6Olply5ZV9+7dlZiYqDFjxmjatGkqVKiQXnrpJYfnk6ShQ4eqc+fOmj59ukqUKKHBgwdr3759Wd4PwzDUo0cPzZ4921w2omnTppowYYKGDRsm6eqXgQYNGpinmkZERNzwtTt16pTeffdd9ejRQxMnTlRCQoJefvll9evXT23atNHUqVNlGIb5i5QkHT58WO3atdPff/+t9957T6NGjdKxY8fUvn17/f3335KufgHo2LGjEhMT9e6772rWrFl64okn9Pnnn+uzzz5ziOGDDz6Q3W7X+++/r0GDBumXX37RO++8Y96fflrKzWbTdOjQQV27dnUoO3LkiA4cOKCHH35Y0tXZVGXKlNGmTZvUqlUrBQQEqFGjRrc83Wjfvn16+OGH9d1336lZs2aqUqWKmjVrplWrVpl19u7dq/z58ys+Pl4dO3ZU1apVVadOHU2bNi1HL45w+PBhSTJn5krSiRMntGbNGn3wwQeKjo5WwYIF9d1338nPz8/8ZTggIMCcjTZ06FDzWJk2bZr69eun4OBgTZo0Sb169dKKFSscTkXesGGD2rdvL0l65513NHLkSJ08eVLt2rW75WltJ0+e1MyZM9W3b19NnjxZNptNL7/8snmcXG/JkiUaPHiwqlevrmnTpqlJkybq2bNnput2v/XWW3riiSc0c+ZMhYSEaOzYsfrll18c6jRt2lS7du0yX7eAgIBb/k8cPHhQ999/v9zd3R3KH3zwQbOdzDRr1kx+fn56++23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stauXWu+3vXr15fNZsu07UKFCt30Azc3lC5dWidPnnQou34mQFBQkDw9PfX99987lG/evFknTpxQ9erV5ePjo6pVq+rHH390uGDCP//8o9WrV5v7nxNKlCihBx980DyG0v33v/+97TYvXLigxMTEDDPpbqZu3bq6dOmS1q5da5adPXtWmzdvVp06dW74uHLlymnr1q0OvywnJSVp9+7ddIjA/0d/TX+dlf76di1fvlzR0dHmLGLp6tIZq1evVnh4uKSrA5jY2FiHOpK0detW5c+fP0cHhLfi6ekpPz+/DP319cdEWFiYpIzfX5YtW6a0tDSFhoaqbNmy8vPzy9CnHzt2TNu3b3c4vfzfqlSpkvLnz5+j/fWpU6ckKdv99cGDBxUbG2uWxcbG6uDBgzftrxs0aKDff//dIZl+6NAhHT582OF0ZuBeR59Nn231GDskJEQ+Pj5asWKFWccwDK1cuVJhYWHy9PT81/uYHYyxr3LmGPuPP/7QgAEDHH7I/+2333TgwAFzYtiddpzcqZg57QQvvPCCli5dqs6dO6t3794qVKiQlixZog0bNuidd95x6ESefvppffTRR3Jzc8twalG/fv0UFRWl/v3766mnnjJP+4yJiTGvlp6ZKlWqyNvbW4MGDVKfPn1UtGhR/f7779q7d6+ee+65HN2P+vXrKzw8XG+88YZOnz6tSpUq6Y8//tCsWbPUqlUrVahQQdLV9Yri4+O1Zs0aVa5cWcWKFcvmq3pjPXv2VLt27dS9e3e1b99eXl5eWrBggVatWmUuXRAYGKhp06Zp5syZCg4O1pEjRzRjxgwlJydne62rs2fP6ujRo6pQocINO7eRI0fq77//1vDhw3Xx4kVt377dvM/X11cVKlRQeHi4GjZsqNGjRysxMVEPP/ywlixZoq1bt5rrWklXZ9ycPXvWXKfrySef1Ny5czVgwAD1799fxYsX12effaZTp05p4sSJkqQHHnhAzz77rGbPni0PDw/VrFlTv/zyi5YuXao333xTefLkkXR18HXq1ClVqVIlVz8k69Spoy+++MLhl+j0LzCrV69WwYIFValSJUVFRWnq1KnKkyePGjZsqOPHj2vixImqUKGCWrVqJUnq37+/unTpoqioKHXo0EEpKSmaOXOmkpOT1atXrxyLOf0qwwMGDNCwYcP02GOPad++fZo6daqk2/syuGXL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f16zZs3SyJEj5enpmeH+2NhYlSxZksQ08C/QhwEAgDuJu7u7nn76aXMbcCUkpwFYwpCbYtOKWh0GcNf58ssvVaxYMTVt2jTT+w8ePKg8efKoe/fu2rVrl8qWLatBgwYpMDDQyZECros+DAAA3Enc3d0VHBxsdRjAbXGzOgAAAJAzDMPQ119/rWefffaGdQ4fPqwLFy6oTZs2mjlzpsqXL6/nn39eJ0+edGKkAAAAAACQnAZgEZsM3e92Xve7nZdNhtXhAHeFnTt36vTp03riiSduWGfEiBFatWqVGjdurICAAL311lu6//779e233zoxUsC10YcByClHjhxRly5dFBISooiICM2ePdu879ixY+rcubOCg4PVvHlzrVu3zsJIAdzJ7Ha7/vzzT/3555+y2+1WhwNkC8lpAJZwl12PecXqMa9YuYvOE8gJa9euVY0aNVSwYMEb1vHw8JCvr69522azqVy5cjp9+rQzQgTuCvRhAHKC3W5XVFSUChcurMWLF2v48OGaPn26vvvuOxmGoV69eqlo0aJauHChnn76afXu3VsnTpywOmwAd6DU1FR9+eWX+vLLL5Wammp1OEC2kJwGAOAusWPHDlWvXv2mdTp16qQpU6aYt+12u/bv369y5crldngAAOAa8fHxqly5st566y099NBDatCggWrXrq0tW7Zow4YNOnbsmN5++22VL19e3bt3V3BwsBYuXGh12AAA5CiS0wAA3CUOHDigChUqOJSlpaUpLi5OycnJkqRGjRrpk08+0U8//aRDhw7p7bff1j///KNWrVpZETIAAPesYsWKacKECfL19ZVhGNqyZYs2bdqksLAwxcTEqEqVKvLx8THrh4aGavv27dYFDABALiA5DQDAXSI+Pl4FChRwKDt58qTq1q2rbdu2SZI6d+6srl27auTIkXr66acVGxurjz/+2GGpDwAA4FyNGjVShw4dFBISoiZNmiguLk7FihVzqFOkSBGdOnXKoggBAMgdHlYHAAAAcsaOHTsylN1///3av3+/edtms6lHjx7q0aOHM0MDAAA3MWnSJMXHx+utt97S6NGjlZiYKE9PT4c6np6e5plQAADcLUhOAwAAAABgoWrVqkmSkpKSNGDAAD3zzDNKTEx0qJOcnCxvb28rwgMAINewrAdwF0mzG1aHAAAAACAL4uPjtWrVKoeyChUqKCUl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e3PaGKNPPvlE27ZtU3Z2tq699lo9/fTT8vv9dpdmicmTJ2vevHnq2LFjs/Hq6molJyc3G+vWrZuOHDkSzvIsc679rKiokMfj0fPPP6+rrrpKN954o1577TWbqmy7xMREZWVlhe4Hg0GtWbNGw4cPd9WctrSfbpvTU40ePVqTJ09Wenq6srOzXTWnpzt9X902rzt27NA///lPTZs2rdm4m+e0vZHX33H670w0ZHa05LVEZrs9s8nr77hhPsPFzZlNXpPXTp1T8trdeS2R2adq7ZzavuZ0VVWV6urqFBMTo8WLF+uzzz7TY489pvr6ej300EN2l9dumvb5VDExMa44YTjVoUOH5PF41KdPH9166616//339fDDDyshIUHXXXed3eW1WX5+vvbv36+//vWveumll1w7p6fuZ2lpqWvn9Nlnn1VNTY0eeeQR5eXlufr/6en7OmjQINfMa0NDgxYsWKDf/va3iouLa/Y9N89peyOvv+PW3xk3Z3a05LVEZp/KDfNKXn/HDfMZLtGY2dH0O0Neu2NOyevvuGVeyezvtHZObW9OX3LJJdq1a5c6d+4sj8ejAQMGKBgMavbs2Zo7d658Pp/dJbaL2NhYffnll83G/H7/GZPsdDfffLOuueYadenSRZLUv39/ffrpp1q3bp3j/jOeLj8/X6tXr9aiRYuUmprq2jk9fT8vv/xy187pkCFDJJ088N5///2aOHGi6urqmj3GDXMqnbmve/bscc28Ll26VIMHD252ZUKT2NjYM0LSLXPa3sjr77j1d8atmR0teS2R2W7MbPL6O26Yz3CJxsx287H9dOS18+eUvHZfXktk9qlaO6e2L+shSV26dAmtTSJJKSkpamho0PHjx22sqn316NFDNTU1zcZqamrOuBTe6TweT+g/YpM+ffro6NGj9hRkkYULF+rFF19Ufn6+srOzJblzTs+2n26b05qaGm3evLnZWN++fXXixAklJSW5ak5b2tfa2lrXzOsbb7yhzZs3Kz09Xenp6dqwYYM2bNig9PR0V/4/DSfy+iS3/s647fguRU9eS2S2mzKbvCavrRBtmR1NvzNuO7ZL5LXb5jRa8lois63KbNub0++++64yMzObvXNy4MABdenSRV27drWxsvaVlpam0tJS1dfXh8aKioqUlpZmY1XWW7JkiaZMmdJs7KOPPlKfPn3sKcgCS5cuVUFBgZ555hndcMMNoXG3zem59tNtc/rZZ59pxowZzQLiww8/VNeuXZWRkeGqOW1pX19++WXXzOvLL7+sDRs2aP369Vq/fr1Gjx6t0aNHa/369UpLS9PevXtljJF0ck3GPXv2OHZOw4m8dsdxoCVuO75HS15LZLbbMpu8Jq/bKhoz243H9nNx27GdvHbfnEZLXktktmWZbWz29ddfm6ysLHPfffeZiooK884775iRI0ealStX2l2a5VJTU83OnTuNMcY0NjaasWPHmt/85jfm448/Ni+88IIZOnSo+de//mVzlW136n6WlJSYgQMHmlWrVpnDhw+btWvXmsGDB5s9e/bYXOWFKS8vNwMGDDCLFi0yx44da/blpjltaT/dNqeNjY1mwoQJZurUqaasrMy888475sc//rF56aWXXDWnxrS8r26b11PNmTPHzJkzxxhzMnOGDx9uFi5caMrKyszChQvNiBEjzDfffGNzlZGPvHbHceB0bs3saMlrY8hsN2Y2eU1et1W0ZDZ57fzjAHlNXjt9XslsazLb9ua0McZ8/PHHZsqUKWbo0KFmxIgR5rnnnjPBYNDusix3aqAYY8ynn35qfvGLX5jBgwebG264wWzfvt3G6qxz+n5u2rTJjB8/3gwZMsSMGTPGvPnmmzZW1zYvvPCCSU1NPeuXMe6Z0+/bTzfNqTHGHDlyxEyfPt1cccUVZsSIEWbFihWhY5Bb5rRJS/vqtnltcmpwGnPyhP7mm282Q4YMMbfccospLS21sTpnIa/dcRw4lVszO1ry2hgy262ZTV6T120VDZlNXjv/OEBek9dOn1djyGxj2p7ZHmP+c901AAAAAAAAAABhYvua0wAAAAAAAACA6ENzGgAAAAAAAAAQdjSnAQAAAAAAAABhR3MaAAAAAAAAABB2NKcBAAAAAAAAAGFHcxoAAAAAAAAAEHY0pwEAAAAAAAAAYUdzGgAAAAAAAAAQdjSnAQAAAAAAAABhR3MaAAAAAAAAABB2NKcBAAAAAAAAAGH3/wGnmnSwofx6gwAAAABJRU5ErkJggg==", - "text/plain": [ - "
      " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "factual = table[\n", - " (table[\"lockdown_int\"] == 1)\n", - " & (table[\"mask_int\"] == 1)\n", - " & (table[\"wpr_lockdown_efficiency\"] == 0 & (table[\"wpr_mask_efficiency\"] == 0))\n", - "]\n", - "\n", - "\n", - "counterfactual_lockdown = table[\n", - " (table[\"lockdown_int\"] == 0)\n", - " & (table[\"mask_int\"] == 1)\n", - " & (table[\"wpr_lockdown_efficiency\"] == 0)\n", - "]\n", - "\n", - "display(counterfactual_lockdown)\n", - "\n", - "counterfactual_mask = table[\n", - " (table[\"lockdown_int\"] == 1)\n", - " & (table[\"mask_int\"] == 0)\n", - " & (table[\"wpr_mask_efficiency\"] == 0)\n", - "]\n", - "\n", - "\n", - "fig, axs = plt.subplots(1, 3, figsize=(18, 6))\n", - "\n", - "factual_mean = factual[\"overshoot_int\"].mean().item()\n", - "axs[0].hist(factual[\"overshoot_int\"])\n", - "axs[0].set_title(\n", - " f\"Factual\\n overshoot mean: {factual_mean:.2f}, Pr(too high): {factual['os_too_high_int'].mean().item():.2f}\"\n", - ")\n", - "axs[0].axvline(x=factual_mean, color=\"grey\", linestyle=\"--\")\n", - "\n", - "counterfactual_lockdown_mean = counterfactual_lockdown[\"overshoot_int\"].mean()\n", - "axs[1].hist(counterfactual_lockdown[\"overshoot_int\"])\n", - "axs[1].set_title(\n", - " f\"Counterfactual_lockdown\\n overshoot mean: {counterfactual_lockdown_mean:.2f}, Pr(too high): {counterfactual_lockdown['os_too_high_int'].mean():.2f}\"\n", - ")\n", - "axs[1].axvline(x=counterfactual_lockdown_mean, color=\"grey\", linestyle=\"--\")\n", - "\n", - "counterfactual_mask_mean = counterfactual_mask[\"overshoot_int\"].mean()\n", - "axs[2].hist(counterfactual_mask[\"overshoot_int\"])\n", - "axs[2].set_title(\n", - " f\"Counterfactual_mask\\n overshoot mean: {counterfactual_mask_mean:.2f}, Pr(too high): {counterfactual_mask['os_too_high_int'].mean():.2f}\"\n", - ")\n", - "axs[2].axvline(x=counterfactual_mask_mean, color=\"grey\", linestyle=\"--\")\n", - "\n", - "for i in range(3):\n", - " axs[i].set_xlim(5, 40)\n", - " axs[i].axvline(x=overshoot_threshold, color=\"red\", linestyle=\"-\")\n", - "\n", - "plt.savefig(\"counterfactual_sir_search.png\")\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAAJdCAYAAADjrMQFAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAACXGUlEQVR4nOzdd3yN5//H8ffJkJixErs1T4zYq1EVexS1WmpXqdEqNVp0aatF0ZotaraoUfOrVo2WKjVKqwi1R2JESImQde7fH345dSRBSO6TyOv5eHg457rX5z7jvq58znVdt8UwDEMAAAAAAACAiVycHQAAAAAAAADSH5JSAAAAAAAAMB1JKQAAAAAAAJiOpBQAAAAAAABMR1IKAAAAAAAApiMpBQAAAAAAANORlAIAAAAAAIDpSEoBAAAAAADAdCSlAAAAAAAAYDqSUgDSnN9++03Dhg1To0aNVKlSJfn5+almzZrq1q2b5s6dq6tXrzo7xDRry5Yt6tChgypVqiRfX1/5+vpq165dzg7LqYYOHSpfX18tX778obfZtWuXfH191blz5xSMzNzjO/uczHT+/Hn5+vqqbt26zg4lTatbt658fX11/vx5p8ZhGIZmzpypZs2aqVy5cvZrW5yoqCh9+eWXatiwofz8/Bze++XLl8vX11dDhw597DhSy+sBAEBq4ubsAADgYV29elWDBg3Sjh07JEkFChRQ9erVlSlTJoWEhGj//v3asWOHJk6cqLlz56p8+fJOjjhpJk+erClTpqhv37568803TT9+YGCg+vXrJ5vNpmeeeUbe3t6yWCzKnTu3aTGcP39e9erVU4ECBbRlyxbTjgvgyfX9999r7Nixypo1q2rVqqUsWbI4LJ8wYYJmzZql3Llzq169esqYMaNy5MjhpGjhbMuXL9ewYcPUqlUrjR492qmx7Nq1S126dFG1atU0b948p8YCACmFpBSANOHGjRvq0KGDTp06paJFi2rEiBGqUqWKwzpRUVFasWKFJk+erJCQECdFmnZt2rRJ0dHR6t27twYMGODscAAgWaxfv16SNHHiRD377LOJLl+wYIEKFy7ssKxBgwYqX768smbN+thxzJ07V9HR0cqTJ89j7wsAgCcFSSkAacKIESN06tQpFShQQAsXLlT27NnjrZMhQwa1a9dO9erV0/Xr180PMo0LDg6WJD399NNOjgQAks+Drm1xy+9NSElS1qxZkyUhJUlPPfVUsuwHAIAnCXNKAUj1zp07px9//FGSNGzYsAQTUnfLnTu3ihYtGq98zZo16tq1q6pVqyY/Pz/VqVNHw4YN06lTpxLcz73zjtyrc+fOCc65dHd5YGCg+vbtq+rVq8vPz0/PP/+8Zs+eLcMw4h1rypQpkqQpU6bYj53QXCYxMTH64Ycf1LlzZ/u51K1bV8OHD9eFCxfixXn3XEC3bt3SxIkT1aRJE5UvX15169bV5MmTHeZMGjZsmP3Yd88ftGPHDo0YMUItWrSwn0+tWrX01ltv6cCBA4m+TpJ08OBBDRkyRHXr1lXZsmVVrVo1vfDCC/r8888VFBQk6c7cTfXq1ZMkBQUFObwGd78PD5rjKbE5YKKjo7Vq1SoNGjRIjRs3VqVKlVSuXDk1atRIn376qS5dunTfc0hOJ06c0LBhw1SnTh35+fmpWrVq6tq1q9auXXvf7R7mdXyQq1ev6uWXX5avr6/eeustRUVFOSxfuXKl2rRpo/Lly6tatWrq3r279u7d+8D9HjhwQP3791fNmjXl5+cnf39/9e7dW7/99lu8dUeNGiVfX1/NmTMn3rLnn39evr6+evHFF+Mti/tuTJw40V529/sdERGhL774Qg0aNJCfn5+effZZDRky5LHe25iYGM2YMUNNmzZVuXLlVL16dfXv318nTpxwWO/s2bMqVaqUqlatqlu3biW6v6ZNm8rX11dbt259qOPffT35888/1bNnT1WvXl0VK1ZUp06dHN6bbdu2qWvXrqpataoqVqyobt266dChQwnu91G+zzabTYsXL9bLL7+sKlWqqEyZMvL399cLL7ygESNGJGmupK+//lq+vr4KCAjQ0aNHH3q7pFz/4l67uLjq1atnv55MnjzZPsdT3PX47utN3PXlQXNKXbp0SZ9//rmaN2+uihUrqkKFCmrUqJGGDh2qffv2Oaz7oDml1q9fr+7du+uZZ56Rn5+fnnvuOQ0ePFjHjx+Pt+7d854ZhqHFixerdevWqlChgipXrqxXX31V+/fvT/R1vHXrlubOnav27duratWq9jqxd+/eWr16taQ773fca3a/fX300Ufy9fXVmDFjEl0nIUm9niXlGiM51hXnzp3T22+/rWeffVZ+fn6qX7++xo8fH+/6V7duXQ0bNkyStGLFCofPRELz6T3se3bu3DlVqVJFJUuWTPC7f+nSJfn7+8vX19deD3Tu3FldunSRJO3evdshlrvnu4uKitLMmTPVunVrVaxY0X7ta9OmjcaMGaOwsLD7vAsA4Hz0lAKQ6v3888+KjY1VtmzZHmniYcMwNHToUK1cuVJubm6qUqWKcuXKpUOHDmn58uVat26dJk2apFq1aiVr3Nu3b9ecOXP01FNP6dlnn1VISIj++OMPff7557pw4YLee+89+7qtWrVSYGCgjhw5opIlS6pUqVL2ZZUrV7Y/Dg8PV58+fbR7925lypRJfn5+ypEjh/755x8tWrRI69ev15w5c1S6dOl48URGRqpz5846ceKEvXEcFhamUqVKqVWrVvrjjz909uxZVapUyd6j4O7kXtwffSVKlFClSpXk5uamkydPat26ddq4caO+/PJLNWrUKN5xZ86cqS+++EI2m02FCxdWvXr1dPv2bZ09e1azZ89WiRIl1Lp1a1WuXFkRERHasGGDMmXKlOC+HkdoaKjeeecdZc2aVcWKFZOvr69u3bqlwMBAzZs3T2vWrNGiRYtSvKfYL7/8on79+ikyMlJFihRRw4YNFRoaqj179uj333/X9u3bNXLkyHjbPezreD+nTp1Sz549dfbsWfXo0UODBw+WxWKxL//00081b948ubi4qHLlyvLx8dHRo0fVuXNnderUKdH9LlmyRMOHD5fNZlPp0qVVvXp1BQUF6eeff9bPP/+sN998U3379rWvX6NGDc2dO1c7duxQt27d7OWXLl2yJ3sOHTqk69evK1u2bPblO3futG9/rxs3bujll1/WhQsXVLlyZZUoUUJ//vmnVq5cqT179mjVqlWP1ONlwIAB+vnnn1W1alX5+vrqwIEDWr9+vbZt26bZs2erYsWKku70ggkICNDPP/+s1atXq23btvH29fvvv+v48eN66qmnkny9+eWXX/Tdd9/JarWqRo0aOnXqlPbs2aNu3brp22+/VWBgoD799FOVL19ezz77rAIDA7Vjxw516tRJK1eujPe5fpTv83vvvafly5fLw8NDlStXVs6cORUWFqbz589r/vz58vf3V8GCBe97HtHR0frwww+1fPlylSpVStOnT3/o4WxJvf4999xzKlCggDZs2KCIiAg1atRImTJlkiSVKlVKERERunbtmlasWCHpznU4zsP0atq5c6f69eun69evK1euXPL3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8uTJ2rlzp9566y0dP35cly9fVvv27SXdSVqtWrVKQUFBKlCggD0pdXdvoLs96Pt274TGDyNbtmyJJpDizvfixYsO5S+88IK++OILbdy4UZcvX5aPj4+ioqL0ww8/SLrTE+1RJHZ+mTNnVlhYWIK9lO537kn9PmfJkkWjRo3SsGHDNGHCBE2YMEHe3t6qUKGCnnvuOTVr1izRJMeAAQMUExOjt956y95zLake9/qX3OLu2JfQTTWSIu68du7ced8ba0gJn5e3t3eCPQelO+/Zv//+61DXPErcRYsW1bPPPqvt27dr06ZNaty4saT/Eq8dOnRIMOmTkEe5nj3qNSZOcl8bHvc9K1CggN5//30NHjxY4eHhat++/SPPofjUU09p2LBhGjNmjD755BN98sknKlCggCpUqKDatWurcePGSe59BQBmIykFINUrU6aMVq1apcOHDys2NjbJv7CnFJvNdt/lLi7J2xk17nilSpVyGE6UkHsntpUkT0/PRz72Tz/9pMmTJytTpkz64IMP9Mwzz8jHx0eenp6yWCz68ssvNX369Hh3FXSGxN6XL7/8Uhs3blTRokU1aNAg+7CGuAb7yy+/rP3796eKc0guxYsXl5ubmw4ePKgRI0Zo8uTJj/U5SE7lypVTlixZ9Pfff+vGjRv2pFNcj4saNWpo1apV2rFjh+rWratjx44pV65cif4RmNzft4d17+clY8aMeumllzRz5kwtWbJEffv21U8//aQrV67YbzDwKB50fg+bFJAe/fvcqFEj1ahRQ5s3b9Yff/yhffv2aePGjdq4caMmTZqk2bNnJ/j+tGzZUkuXLtXcuXP13HPPyc/P76FjjfO417/UKu68nn766QdOip5QIsmsz32XLl20fft2LViwQI0bN9aFCxe0ZcsWZcqU6YE3WHC2lKqLH/U9MwzDfodD6U5Pwujo6ESTiw/SuXNnNWnSRFu2bNEff/yhP/74Q2vWrNGaNWs0efJkLViwIMFepACQWpCUApDq1alTR6NHj9b169e1ZcsWNWjQ4KG3jetaHxYWpvDw8AR7S8X96nlvN3x3d3dFR0cnul3cL85mifu1t1KlSvrwww9NPfa6desk3enxkNBwldOnT8cri4s3JCREN27cSLbeUnEN95s3bya4PLH3Je4cxo8fn+AftQmdQ3LLkyePTp48mejQpxs3btiH2sR9Hh/ndcyWLZumTp2qXr16adu2bXrttdcSnMsne/bsypAhg6KiohQUFKQSJUrE21dit7HPkyePzp49q3PnzslqtSa6nYeHh8McRm5ubqpatap+/vln7dq1Szt27JCrq6uqV68uyXF4n6enpwzDkL+/f5KSL4/r+vXr8e4AGCfulvVxd9C6W8eOHTVnzhwtXrxYvXr10vz58+3lqcGjfJ/jxM0xFDec88KFCxoxYoQ2b96sESNG2M/1bn369FHx4sU1evRode3aVdOnT0/yUGJnXv8Ski9fPp06dUonT558rDt2xp1XkSJFNHr06OQK74HHO3nyZJK2q1WrlgoXLqzdu3fr2LFj+vHHHxUbG6sWLVok2gv5fsdPyvXsUa8xKeVx37MZM2Zo69atKlasmLJly6b9+/dr3LhxGjZs2CPHlDt3brVt29Z+188TJ07ovffe0/79+/XFF1/o888/f+R9A0BKY04pAKneU089paZNm0qSRo8e7TA/RkJCQ0PtDe68efPahywtX7483rqGYdhvBx73x3CcuF8WE2q8HzlyxD4MIbnEJVvunrPjbnG3lt6yZUuSh/49rn///VeSEhwiFBoamuBEsd7e3ipZsqRsNpuWLVv2UMd50Gsg/ZesOXHiRLxlhmEkOslx3DkkNIzx119/1bVr1x4qxscRN8/IypUrE1we9zoVLlzYfp6P8jreLUuWLJo5c6Zq1qyp3bt3q1u3bvbXIo6bm5v9F/+7f8G/W2KTLMedU9z36F5xQ62qVKkiNzfH38Li5ofatm2b9uzZIz8/P3sCKE+ePCpWrJh27tz5wKF7KWnVqlXxyqKiorR27VpJ/53/3fLnz6/69evr8uXLmjRpkvbv3y8fHx81bNgwxeN9GI/yfU5Mvnz51K9fP0lSYGBgout169ZNI0aMUEREhHr06OEwif3DcOb1LyFx8zg97g0y/P395e7urt27dz/SEPWkinsdf/zxR0VERDz0dhaLxT5f2pw5c+zDUZMywbn0aNezx7nGPIoH1UOP857t3btXEyZMUMaMGTVx4kT7/FJz587Vpk2bkhxLYooVK6YePXpIuv/3EgBSA5JSANKEDz74QE8//bTOnz+vDh06xLuzlXTnD8WlS5eqZcuWDomkV199VZL09ddf68iRI/ZywzD09ddfKzAwUNmyZbP/whgn7g/mKVOmOMw5cf78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va+++kp79+5VQECAChQoYF8vb968qly5coL77tSpk8LDwzV+/HhlzZpVvXv3TjSOFi1aaN26dRo+fLh27dqlSpUqKTY2VidPntT69es1c+ZMlS1bNukvwmOKmw9i7ty5ypIli0qWLKk33nhDEyZMUOPGjRUQEKBq1aqpXbt2mj59ugIDA/Xss8/K3d1dp0+f1vr16/Xee++pcePGypkzp1599VVNnz5dvXr1UkBAgA4fPqxt27YpR44c8Y79sLctzps3r7p06aJZs2YpJiZGZcuW1aZNm7R3716NGzfOofs/AAB4dLStHl9aaFtJ0sqVKxUcHGy/YcyePXvsSbIWLVqoQIECyfeiAIiHpBSQTvj7++uzzz7TjBkzNHLkSBUsWFCDBw9WUFCQQ8Opbt26CgoK0rJly3Tt2jXlyJFD1apV05tvvmnvap2Q3r1768aNG/bGU8eOHRNcz8XFRV999ZXmzp2rVatWaePGjcqYMaMKFiyozp07228RbKZDhw5p+vTp6tSpk/1ONZLUs2dPbd68We+//77WrFmjbNmy6ZNPPpGfn58WLVqk8ePHy9XVVQUKFNALL7ygSpUq2bd96623lCFDBi1atEi7du1SuXLlNHv2bPXq1euxYh08eLC8vLy0ePFiLV++XIULF9bYsWPve2cgAACQ/GhbJS4tta2WLVum3bt325/v2rXLfte/ypUrk5QCUpjFuLv/IwAAAAAAAGAC5pQCAAAAAACA6UhKAQAAAAAAwHQkpQAAAAAAAGA6klIAAAAAAAAwHUkpAAAAAAAAmI6kFAAAAAAAAExHUgpPhM6dO6tZs2bODgN4ZAcOHJCfn5+CgoKcHYpd3bp11atXrweut2vXLvn6+mrXrl1JPkbctuvXr3/gugMGDFD//v2TfAwAQNLRtkJaR9uKthXSBjdnB4DU49ixY5o+fbp27dqla9euKXv27Kpevbp69+6tEiVKODu8VGvatGkqXry46tev7+xQUo1r165p2bJl+vnnn3XixAnFxMSoaNGieuWVV/T8888nuM2hQ4c0efJk7du3T5GRkSpUqJDatm2rLl263PdYP/30k9auXau///5bV65cUd68eVWnTh29/vrrypYtW6LbnT17Vk2bNlVUVJSWLl2qsmXLPtK51q1b16GxkzNnThUpUkTdunVTgwYNHno/48ePV9OmTVWgQAF7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DRvG+67EXQOSKqlDRHr27GnUq1cvXnlERIRhtVqNcePGGYZhGAcOHIh3TYrz+eefG1ar1eF8ATw5aFvRtjKjbfWgYWhfffWVUa5cOcNqtdr/ffnll0k6RqNGjezbVqhQwRg/frzDVAszZ840rFarERwcHG/bNm3aGG3btk3S8eLQtkpbbauPP/7YKFWqVILLnnnmmYduz3/wwQf2z1vJkiWNN998M97Qv3Hjxhljx4411qxZY/z444/278/LL7/s8LogbWH4Xjp38+ZNSXpgZjluedz6TZo0UWhoqEM38w0bNshms9nvrhYWFqbff/9dTZo0UXh4uK5evaqrV6/q2rVrqlmzpk6fPq1Lly45HKdt27ZydXV1KMuWLZv++uuveOveK1OmTA5Z+AwZMqhs2bIOQ8W2bdsmb29vh7tkubu7q3PnzoqIiNCePXvs67m6usbrCvvqq6/KMIzH7uXQokULh67T5cqVk2EYatOmjcN65cqV04ULFxQTEyPpzt1QbDabmjRpYn89r169qty5c+vpp5926OJ79wTfERERunr1qipWrCjDMOy/aNzt3kkjK1eurPPnzzuUjR49WkePHk3yL3k2m02DBw/W9evX9cEHHzgsi4iI0K1bt9SiRQu9//77atiwod5//321a9dOa9as0enTp5N0rNWrV2vp0qXq1q2bChcu7LBs3LhxKlSokF566aUk7fNBtm/fLn9/f/n7+6tFixZav369WrRoocGDBzus17Bhw3jDOK5duyZJ971T4L22bt2qcuXKOfwCnzlzZrVr105BQUE6fvy4pIf/vN9P8eLFHY4Tdwecu79X9zp48KDCwsLidedv3ry5vLy8EtymdevWDhN/xx0zoeN4eXnZX7c48+bNS/FeUtKdX0gTmqA8rkdf3BCOyMhISXqodQE8WWhb0baKk5JtqweJ66k3YsQITZ48WW3atNH06dM1f/78h97HqFGjNHPmTA0fPlzFihVTZGSkw/DDuHossbruceo52laOUnPb6vbt24kOCU3K56Br166aM2eOPv/8c9WqVUs2my3esNZBgwZp8ODBev7559W0aVONHj1aAwYM0L59+5J1uCjMxfC9dO7eBlFi7m1g1apVS1mzZtXatWvt3XjXrl2rUqVKqUiRIpKks2fPyjAMTZw4URMnTkxwv6GhocqTJ4/9eUIV8uDBgzV0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DA0NjbfP8+fPa+fOnQ53WCtRooSKFi2qJUuWOMw1tXDhQlksFqfVdbStkuZx21bPPPOMsmfProULFzqUL1y4UBkzZlTt2rXtZVevXtWJEyd069Yte1lCn7fo6GitWrXKPnRTujMUMKEE1ddffy3DMBLtPYrUj55SUOHChTV69Gi9/fbbat68uV588UUVLFhQQUFBWrp0qa5du6Yvv/wyXndwd3d3NWjQQGvWrNGtW7fsXXnvNnz4cHXo0EHNmzdX27ZtVahQIV25ckV//vmnLl68qP/973/3je3mzZsKCAhQo0aNVLJkSWXKlEk7duzQ33//raFDhyb5XNu1a6fFixdr6NChOnTokAoUKKANGzZo3759evfdd+2/3NWtW1fVq1fX+PHj7b8+/Pbbb9q8ebO6du3q8FqUKVNGO3fu1Jw5c+Tj46OCBQsmOCY9OTz11FN666239MUXXygoKEj169dX5syZdf78eW3atElt27ZV9+7dVbRoUT311FP6/PPPdenSJWXJkkUbNmx47Abew962+MCBA3rnnXeUPXt2+fv7x3ufK1WqZG9kly5dWm3atNGyZcsUGxurqlWravfu3Vq/fr169erlMC9GQrem7dGjh86dO6cePXrojz/+0B9//GFfljt3bj377LOSpJo1a8aLM+71qFq1qsPtjM+fP6969eqpVatWGj16dFJeokdSr149bdy4Md6QsDJlymjhwoX6+uuv9fTTTytnzpzy9/dXz549tWbNGr322mvq3LmzvLy8tHLlSp0/f16TJ0+2N5wf9vOe3DJkyKA333xTI0aMUNeuXdWkSRMFBQVp+fLlD3Vb7/vZsWOHMmbMGK+HwMPetliStmzZoiNHjki60+g5evSovv76a0l3vvtxv+ht3LhRw4YN06hRo9S6dWtJd+ZX6dKli2bNmqWYmBiVLVtWmzZt0t69ezVu3DiHLvm9e/fW+vXr1aVLF3Xp0kURERGaNWuWrFZrvIl3ATxZaFvRtnpYD9u2kqQ9e/bYJ9K+evWqIiIi7PVX1apV7QmR7t27a9u2bfaecNmzZ9cvv/yibdu26aWXXnpg26p58+by9/dXyZIl5eXlpdOnT2vZsmWKiYnRoEGDHGJ655131KdPH7366qtq2rSp/vnnHy1YsEAvvfSSPZkg0bZ6XKm5beXp6al+/frpk08+Ub9+/fTcc89p7969+t///qcBAwYoe/bs9nUXLFigKVOm6LvvvlP16tUlSR9++KHCw8NVtWpV5cmTRyEhIVq9erVOnjypoUOH2kdAhISEqFWrVmratKm9N9z27du1detWPffccwmOhkDaQFIKku70VilatKi++eYbLV26VGFhYcqePbuqV6+uXr16yWq1Jrjd888/b5987u7u5XGKFy+uZcuWacqUKVqxYoXCwsKUM2dOlS5dWm+88cYD4/L09FT79u3122+/6aeffpJhGHrqqafsDbKk8vT01Lx58zRu3DitWLFC4eHhKlKkiMMfndKdX8OmTp2qSZMmae3atVq+fLkKFCigd955R6+++qrDPocOHaoPP/xQEyZM0O3bt9WqVasUazhJUs+ePVW4cGHNnTtXX331laQ7fyg/++yz9m637u7umjZtmj799FNNnz5dHh4eatCggTp27OhwF52Ucvz4cUVHR+vq1at699134y0fNWqUwy+/H3/8sfLnz6/ly5dr06ZNyp8/v4YNG6ZXXnnlgceKSy7MnDkz3rJq1arZk1JJERERIem/uRJSWps2bTR//nz98ccfDsM83njjDQUHB2vmzJm6efOmqlWrJn9/f+XOnVuLFi3S2LFjNX/+fEVGRsrX11fTpk1z+DXqYT/vKaFTp04yDMN+F5WSJUtq6tSp+vTTTxOc3+RhrV+/Xg0aNHisRt9PP/2kFStW2J8fPnzYftekvHnzPrCb+eDBg+Xl5aXFixdr+fLlKly4sMaOHavmzZs7rJcvXz7Nnz9fo0eP1hdffCF3d3cFBARo6NChzCcFpAO0rWhbJbfff/9dU6ZMcSiLm/C+b9++9qRU1apVtWjRIk2ePFkLFy5UWFiYChQooAEDBsTrnZeQ9u3b65dfftGvv/6qmzdvKmfOnHr22WfVq1eveMPE6tSpoylTpmjKlCkaMWKEcubMqV69esX7LNK2enypuW3VsWNHubu7a/bs2dqyZYvy5cunYcOGqWvXrg/c9vnnn9fSpUvtn9XMmTOrTJkyGjx4sEOiKVu2bKpdu7Z27NihlStXKjY2Vk8//bQGDhyoV199NdlvZATzWIyk3JYAANKBBQsWaNy4cdq4caNy585tyjG7du0qHx8fjR071pTjOYPNZpO/v78aNGigTz/9NMnbBwYGqlWrVlqxYoV9/gIAAJD60bZKGbSt8CQgnQgA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", - "text/plain": [ - "
      " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAAJdCAYAAADjrMQFAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAACaXUlEQVR4nOzdd3hT5f//8VcXe0MB2TNhFGgpUAoVZIuAsgTZKiCobJHl5wMiUwRZIgIyBJky9CN7KSh7KSJDGbIt0AqlFLpyfn/wS76EpKWFkhbzfFwX1xXus94nOU3eeee+7+NhGIYhAAAAAAAAwIU8UzsAAAAAAAAAuB+KUgAAAAAAAHA5ilIAAAAAAABwOYpSAAAAAAAAcDmKUgAAAAAAAHA5ilIAAAAAAABwOYpSAAAAAAAAcDmKUgAAAAAAAHA5ilIAAAAAAABwOYpSAJ45u3bt0tChQ9WoUSNVrlxZfn5+CgkJ0RtvvKEFCxYoPDw8tUN8Zm3fvl3t27dX5cqVZTabZTabtW/fvtQOK1UNGTJEZrNZq1evTu1QXGL69Okym82aPn16mtzfk7Be0/+m46f2OT0LDMPQl19+qaZNm6pixYoOz1lMTIw+/fRTNWzYUH5+fjKbzapbt64kafXq1TKbzRoyZMgTx1G3bl2ZzWZdunTpifcFAMC/hXdqBwAASRUeHq733ntPu3fvliQVLFhQQUFBypQpk65fv64jR45o9+7dmjp1qhYsWKBKlSqlcsTJM336dH322Wfq1auXevfu7fLjnzhxQn369JHFYlH16tXl6+srDw8P5cmTx2UxXLp0SfXq1VPBggW1fft2lx0XwL/XkiVL9Mknnyhr1qyqVauWsmTJYrd8ypQpmjt3rvLkyaN69eopY8aMypkzZypFi9S2evVqDR06VC1atND48eNTNZZ9+/apc+fOqlatmhYtWpSqsQDA00JRCsAz4fbt22rfvr3OnTunEiVKaNSoUapSpYrdOjExMVqzZo2mT5+u69evp1Kkz66tW7cqNjZWPXv2VP/+/VM7HABIERs3bpQkTZ06VTVr1kxw+eLFi1WsWDG7ZQ0aNFClSpWUNWvWJ45jwYIFio2NVb58+Z54XwAA/FtQlALwTBg1apTOnTunggULaunSpcqRI4fDOunSpVPbtm1Vr149RUREuD7IZ9yVK1ckSUWLFk3lSAAg5Tzqvc26/OGClCRlzZo1RQpSklSkSJEU2Q8AAP8mzCkFIM27ePGi1q5dK0kaOnSo04LUg/LkyaMSJUo4tK9bt05dunRRtWrV5Ofnpzp16mjo0KE6d+6c0/08aq6WTp06OZ1z6cH2EydOqFevXgoKCpKfn59eeuklzZs3T4ZhOBzrs88+kyR99tlntmM7m8skLi5O33zzjTp16mQ7l7p162rEiBG6evWqQ5z79u2T2WxWp06ddPfuXU2dOlWNGzdWpUqVVLduXducP9Y5k4YOHWo7dqdOnWz72b17t0aNGqVXXnnFdj61atVSv379dPTo0QSfJ0k6duyYBg8erLp166pChQqqVq2aXn75ZX388ce6fPmypPtzN9WrV0+SdPnyZbvn4MHX4VFzPCU0B0xsbKy+++47vffee3rxxRdVuXJlVaxYUY0aNdLo0aMVGhqa6Dkkx4Mx3L59W+PGjbOde8OGDTV79mxZLBZJUmhoqIYPH67atWvLz89PjRo1SnCYxuXLlzV79mx17txZL7zwgvz8/FSlShW1a9dOy5Yts+3zYceOHVO/fv1Uq1Yt+fn5qXLlyqpXr5569+6trVu3Jvm8fvvtN4WEhKhs2bKaN29esp+Xy5cva9CgQQoJCVGFChXUqFEjTZ8+Xffu3bNbb9q0aTKbzRo+fHiC+zp69KjMZrOef/55xcXFJTuWh928eVOffvqpmjRpokqVKikgIEAtW7bUnDlzHOJ7UGhoqD7++GM1a9ZMAQEB8vf3V6NGjTRkyBAdPnw4SceOj4/XiBEjZDab1axZM4e/4yNHjqhbt26qUqWKLa6VK1c+cr9///23Ro0apYYNG6pChQoKDAzUa6+9pmXLlik+Pt5u3W3btslsNqtnz54O+/nwww9lNptVvnx5RUZG2i07cOCAzGazOnToYGu7dOmSbV4mwzC0fPlytWzZUv7+/goMDNSbb76pI0eOJOm5eVhy3v+s78XWOZzq1atnez+ZPn26bY4n6/vxg+831veXR80plZzX/1FzSm3cuFFdu3ZV9erV5efnp+eff14DBw7U6dOnHdZ90uf47t27WrBggdq1a6eqVavaPhN79uyp77//XpJksVhsz1li+7JeHxMmTEhwHWeS8rnwoKNHj6pv374KCQmRn5+fgoOD1bNnT+3atcvp/h/8rLh48aLef/991axZU35+fqpfv74mT56smJgYu23q1q2roUOHSpLWrFljd008+HloldTX7OLFi6pSpYrKlCmjHTt2OOwnNDRUwcHBMpvNWr9+vaT712/nzp0lSfv377eLxTrnmXS/l/iXX36pli1bKiAgQH5+fqpZs6ZatWqlCRMm6ObNm4m8CgCQ+ugpBSDN++GHHxQfH69s2bLZJWJJZRiGhgwZom+//Vbe3t6qUqWKcufOrd9//12rV6/Whg0bNG3aNNWqVStF4/755581f/58FSlSRDVr1tT169d16NAhffzxx7p69ao++OAD27otWrTQiRMndPLkSZUpU0Zly5a1LQsMDLQ9joyM1Ntvv639+/crU6ZM8vPzU86cOfXHH39o2bJl2rhxo+bPn69y5co5xBMdHa1OnTrpzJkztuT45s2bKlu2rFq0aKFDhw7pwoULqly5sq1HwYPFPeuXvtKlS6ty5cry9vbW2bNntWHDBm3ZskWffvqpGjVq5HDcL7/8UpMmTZLFYlGxYsVUr1493bt3TxcuXNC8efNUunRptWzZUoGBgYqKitKmTZuUKVMmp/t6EmFhYRo0aJCyZs2qkiVLymw26+7duzpx4oQWLVqkdevWadmyZSnaUywiIkJt27bVzZs3VaVKFd25c0cHDx7UpEmTFBoaqi5duqh9+/by9vZWQECAwsPDdfDgQY0ePVp3797VW2+9Zbe/7777TlOnTlWhQoVUrFgxVa5c2Taf2uHDh7Vr1y5NmzZNHh4etm327Nmj7t27KzY2VmXKlJG/v78sFotCQ0P1448/Kj4+XvXr13/kuWzbtk3vvfeeDMPQ1KlT1bBhw2Q9F5cuXVLLli1tf4PR0dHat2+fPvvsM+3evVsLFixQ+vTpJUnt2rXT7Nmz9f3332vgwIHKli2bw/4WL14sSWrbtq28vZ8snbl48aK6dOmiy5cvK1euXKpdu7ZiY2O1b98+TZw4URs2bND8+fOVPXt2u+327NmjPn36KCIiQrlz51ZwcLB8fHx0+fJlWyG9cuXKiR77zp076tevn3bu3KmaNWtq2rRpdnMebdiwQe+9957i4+NlMplkMpl09epV/ec//3FarLA6evSounfvrps3b6pAgQKqX7++bt++rf379+vIkSPasmWLZs6cqXTp0kmSgoKC5O3trQMHDiguLs7uOd2zZ4+k+wWhffv22YrHkmxz/AUHBzuNY+jQoVq7dq0CAwP1wgsv6MSJE9q1a5cOHDigr7/+Ollz/yX3/e/5559XwYIFtWnTJkVFRalRo0bKlCmTJKls2bKKiorSP//8ozVr1ki6/z5slZReTSnx+kv3n9eBAwdqw4YNSpcuncqXL698+fLpr7/+0vfff68tW7Zo+vTpCX5GJfc5vnr1qrp166bTp08rY8aMqly5snLkyKHQ0FAdPHhQf/zxh5o1ayZPT0917NhR48eP19dff62AgACnr8l3330nT09PtW/f/pHnapXUzwWrFStWaMSIEbJYLCpXrpyCgoJ0+fJl/fDDD/rhhx/Uu3dv9erVy+mxTpw4oTFjxih79uyqWrWqbt26pcOHD+uLL77Q6dOnNWPGDNu6jRo10i+//KLDhw+rSJEidp+/D34eJvc1K1y4sMaOHavevXtr8ODB+vbbb5U/f35J94vSAwYMUHh4uNq3b6+XXnpJ0v3rN126dPr555+VJ08ePf/887bjW+c8s1gseuutt7Rnzx5lyZJFVapUUbZs2RQeHq7z589r7ty5atas2SN/zAOAVGUAQBr3/vvvGyaTyejcufNjbb9kyRLDZDIZQUFBxvHjx23tFovFmDZtmmEymYwqVaoYYWFhdtuZTCbDZDIluN+OHTsaJpPJ2Lt3r9N2k8lkLF261G7Z7t27DbPZbJQtW9a4evWq3TJrLNOmTUvwmAMGDDBMJpPRo0cP48aNG3bL5s+fb5hMJqNhw4ZGXFycrX3v3r22eJo1a2Zcu3bN6b4HDx5smEwmY9WqVU6Xb9myxbh586bT9nLlyhnVqlUz7t69a7ds69athslkMipUqGCsW7fOYds///zTOH36tO3/Fy9eNEwmk1GnTp0En4NHxblq1SrDZDIZgwcPtmu/ffu2sXXrViM6OtquPSYmxpg0aZJhMpmM7t27J/t4icVgfa2ioqJsy44dO2aUK1fOKFOmjPHSSy8Zw4cPN2JjY23Lt2zZYphMJqNy5cp22xmGYfz666/GqVOnHI73999/Gy+//LJhMpmM9evX2y3r1KmTYTKZjO+++85hu4iICOPIkSN2bc6uw4ULFxplypQxqlev7rD+o1j3ZzKZjLffftvuGrl69arRsGFDw2QyGRMnTrTb7r333jNMJpMxf/58h32GhYUZfn5+Rvny5RO8np1J6G/61VdfNUwmk9GzZ0/jzp07dsdp0aKFYTKZjAEDBthtc+XKFSMwMNAW+8PX1Y0bN4wDBw4kevy///7beOWVVwyTyWQMGTLEiImJsVv/2rVrRkBAgNPnYffu3UaFChWcnlN0dLRRp04dw2QyGcOHD7fb74ULF2zLPv30U7vt2rZta5hMJuPQoUO2tsuXL9veO0wmkzFq1KhHbmP9O7b+LZ89e9a2LC4uzhg6dKhhMpmMN99800iOx3n/MwzDdr4XL150ut/E3usTej95nNc/oTg+/fRTw2QyGa+++qpx4cIFu2UbNmwwypYta1StWtW4deuWrf1xn+P4+HijZcuWtmUPf+7du3fP+PHHH23/j4iIMPz9/Y3y5csb169fd3h+Fi1aZHtNkiq5nwsnT540ypUrZ5jNZmPNmjV26/74449G+fLlDZPJZPz88892y6zv3dZr/cHr4tSpU4a/v79hMpmMw4cP222X0Gv+oMd5zQzDMEaPHm2YTCbjtddes73vf/LJJ4bJZDJatGjhcB1ZP787duzoNI79+/cbJpPJaN68uXH79m2H5UePHjXCw8MTPA8ASAsYvgcgzQsPD5ck5c6d+7G2tw4zevfdd+16IHl4eKhXr14ym82KiIjQihUrnjzYBzRs2FCvvfaaXVtwcLBCQkIUHx+vvXv3Jmt/Z86c0bp165Q3b15NnDjR4fl4/fXXVbt2bf3111/auXOn030MHz5cvr6+yTuR/69+/foOPUWs7S+++KJu3rzpMJRx+vTpkqT+/fvbfv19UKlSpVSyZMnHiie5smTJonr16tl6hlj5+PhowIAByps3r3766SeH4UlPIlOmTBozZowyZsxoaytfvrxq1aoli8WiqKgoDRs2zK5XSv369WUymRQZGaljx47Z7a9ixYoymUwOx8mXL5/ef/99Sf83abNVWFiYJKl27doO22XNmlX+/v4Jxm+xWDR27FiNHj1aRYoU0fLlyxNdPzEZMmTQyJEjlSFDBltb/vz5bcOilixZoujoaNsy67CVpUuXOgx3XblypWJiYtSoUaPHvp6tDh48qF9//VUZM2bUqFGjbD1pJClXrlz66KOPJEnr16/X33//bVs2f/583b59W3Xq1NF7773ncF3lzp3b4WYMDzp58qTatGlju+vluHHj5OPj43Ced+7ckb+/v15//XW7ZcHBwWrbtq3TfW/YsEGXL19W3rx59cEHH9jtt3Dh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tWnTJvXt21etWrVS+fLldevWLW3fvl0jR45UmTJlHPbfsWNHRUZGavLkycqaNat69uwpSerdu7d++ukndejQQe3atbN9QJcqVUqnTp2ybV+mTBm1aNFCy5cvV0REhKpWrarffvtNa9asUf369VW9enW741WpUkXr1q2TyWRS9uzZJUnlypVTpkyZ9Ndff6lZs2Yp8nxavffee9q3b5/atGmjV199VaVKldKtW7f0+++/a8+ePdq/f3+KHi8pDMPQsGHDlCFDBn344YeSpNdee02bN2/WmDFjFBwcrHz58qlr167avn27evbsqRYtWqh8+fK6e/eu/vjjD23atEnbtm1Trly5VLduXVWuXFmTJk3S5cuXVapUKW3evFm3b992OHZybmfcqFEj+fv7a+jQoTp9+rRy5syppUuXKj4+Xr17934aTw0AAMlGDkUOldZyKEn6/PPPJUmnT5+WJH333Xc6dOiQJDnMgQXAHkUpIBU8+AvNg1q2bKnSpUtr8eLFmjRpkmbNmiXDMFSxYkV98sknqlSpkm3dzJkza/HixZo+fbq2bNmiNWvWKHfu3LYP6IT07NlTt2/ftiVVHTp0UJkyZTR37lyNGzdO06ZNU/78+dW7d29dv37dLqGSpNGjR6tQoUJas2aNtm7dqjx58qhHjx7q1auXw7ECAwO1bt06Wzd0SfL29pa/v792795t154S8uTJo2+++UYzZszQli1btHTpUuXIkUOlSpXSwIEDU/RYSbVo0SLt379f06dPV65cuWztY8aMUdOmTfXf//5Xs2fPVsaMGbVo0SLNmjVLGzdu1LfffqssWbKoWLFi6t27t7JmzSrp/lwRM2fO1NixY/W///1PHh4eqlu3roYMGaLmzZs/dpxeXl62+TIWLVqk6OhoVahQQePGjVOJEiWe9GkAACBFkEORQ6W1HEqSpk6davf/VatW2R5TlAIS52EkNusdAAAAAAAA8BQwpxQAAAAAAABcjqIUAAAAAAAAXI6iFAAAAAAAAFyOohQAAAAAAABcjqIUAAAAAAAAXI6iFAAAAAAAAFyOohT+lTp16qSmTZumdhjAYzt69Kj8/Px0+fLl1A7Fpm7duurRo8cj19u3b5/MZrP27duX7GNYt924ceMj1+3fv7/69u2b7GMAAJwjf8Kzbv369apWrZru3LmT2qHYmM1mffTRR49cb/Xq1TKbzbp06VKyj2Hd9rfffnvkum3atNGECROSfQzgafFO7QCQdv3555+aNWuW9u3bp3/++Uc5cuRQUFCQevbsqdKlS6d2eGnWF198oVKlSql+/fqpHUqa8c8//2jVqlX64YcfdObMGcXFxalEiRJ6/fXX9dJLLyW67cyZMzVlyhSVLl1aa9euTdLxQkNDNXbsWO3atUsWi0VBQUEaNmyYChcubLfekiVLtHfvXh09elRXr15VixYtNH78+Mc+T+l+4ebBQlKuXLlUvHhxvfHGG2rQoEGS9zN58mQ1adJEBQsWtLUtXrxYGTNmVMuWLZ8oxn+L7t27q1WrVjp58qTKlCnzRPv65ptvNG/ePF26dEnPPfecOnXqpE6dOj1yuyFDhmjNmjUJLt+5c6fy5cvn0B4REaFGjRopPDxcU6dO1YsvvvhE8QNIO8ifHg/5k6Pk5E/79u1T586dne5n+fLl8vf3T/RYD+cvDypatKg2b95s+7/ZbHa63nvvvae33nor0eMk5MF9enh4KE+ePDKZTOrRo4eCgoKStI/4+HhNnz5dHTt2VObMmW3tXFv2unfvrvfff19vvPGGfH19H3s/FotFc+fO1dKlS3X9+nUVK1ZMPXr0SHJh+9ixY5o+fbqOHTumqKgoFSpUSK+++qo6dOggLy8v23p37tzRlClTtGnTJoWHh6tw4cLq1KmT2rdv/9ixI22hKAWnNm/erAEDBihHjhxq1aqVChUqpMuXL2vlypXatGmTJk+enKwv2O5k1qxZatSoER98D/jll180ZcoU1apVS2+//ba8vb21adMm9e/fX6dPn1afPn2cbvf3339r1qxZypQpU5KPdefOHXXu3Fm3b99Wjx495OPjowULFqhjx4769ttvlTNnTtu6X375pe7cuaMKFSro+vXrT3yeVmXLltUbb7whSbp27ZqWL1+uXr166cMPP1S7du0euf2JEye0e/duLVu2zK596dKlypkzZ5ovSlWtWlVHjx6Vj4/PUz1OuXLl5Ofnp3nz5j3RL37Lli3TiBEj1KhRI73xxhs6ePCgRo8erbt37z4yuW7btq2Cg4Pt2gzD0IcffqiCBQs6LUhJ0rRp03Tv3r3HjhlA2kT+9PjInxw9Tv7UqVMnVahQwa6tSJEijzzWsGHDHHoXXblyRVOmTFHNmjUd1q9Zs6ZeeeUVu7Zy5col5bQSZN2nYRi6dOmSli5dqi5dumjWrFmqXbv2I7f/4YcfdO7cObVt29au/Vm5tl555RU1adJE6dKle6rHqVevnrJkyaIlS5Y8UY/zyZMna/bs2WrTpo0qVKigbdu26b333pOHh4eaNGmS6LbHjh3Ta6+9pmLFiql79+7KkCGDdu7cqTFjxujChQv6z3/+I+l+obFr1646duyYOnTooKJFi+rnn3/WyJEjFRERoZ49ez52/Eg7KErBwYULFzRo0CAVLlxYixcvVq5cuWzLOnfurA4dOmjQoEH63//+59Dz5GmKiopKVnECaUepUqW0adMmu14/7du31+uvv645c+aoW7duTl/bjz/+WJUqVZLFYtE///yTpGMtWbJEf/31l7755htVrFhRkvT888+rWbNmmj9/vgYMGGBbd9GiRSpQoIA8PDwUEBDwhGf5f/Lly2eXqDVv3lwNGzbUggULEixKxcXFyWKxKF26dFq1apUKFCjwyF810ypPT0+lT5/eJcdq3Lixpk+frjt37tj9KppU9+7d0+TJk/XCCy9o2rRpku53a7dYLJo5c6batm2r7NmzJ7h9QECAw7Vz8OBB3b17V82aNXO6zR9//KGlS5fqnXfesR0TwLOP/Akp7XHypypVqjxW71tnBZvPP/9ckpx+nhUrVsyhKPWkHt5ngwYN9PLLL2vhwoUJFqWio6Pl4+MjT09PrVq1SpUrV07wB6G0zsvLy66H0NPi6empRo0a6bvvvlOfPn3k4eGR7H2EhoZq/vz56tChg4YPHy5JevXVV9WxY0dNmDBBL774YqLnsnz5cknS119/rRw5ckiSXnvtNXXs2FFr1qyxFaU2b96sI0eOaMyYMWrdurWk+38Dffr00eeff65XX31VuXPnTnb8SFuYUwoOvvzyS929e1ejRo2yS6ik+0ORPvroI0VFRWnOnDmSpI0bN8psNmv//v0O+1q2bJnMZrP++OMPW9uZM2fUp08fVatWTRUqVFDLli21bds2u+2s46L379+vDz/8UMHBwbYPo8jISI0ZM0Z169aVn5+fgoOD9cYbb+j33393OP7p06fVqVMnVapUSc8//7wt5geFhYVp2LBhqlGjhipUqKCXX37Z6XCcqKgojR8/XrVr15afn58aNWqkuXPnyjAM2zpms1lRUVFas2aNzGazzGazhgwZkuBzbZ0/Z/369frss8/0/PPPKyAgQH369NHt27cVExOjMWPGKDg4WAEBARo6dKhiYmIc9vPdd9+pZcuWqlixoqpVq6b+/fvr6tWrduscPHhQffr00QsvvCA/Pz/Vrl1bY8eOdeitMWTIEAUEBCg0NFTvvPOOAgICVL16dX388ceKj4+3W/fatWs6c+aMYmNjEzxHSSpcuLBdQiXd75pdv359xcTE6OLFiw7bHDhwQJs2bdKwYcMS3ffDNm3apAoVKtgKUpJUsmRJBQcHa8OGDXbrFixY8LE+iJPL19dXJUqUsHWLv3Tpksxms+bOnasFCxaofv36qlChgs6cOSNJ2rZtm6pXr24XW926dfXnn39q//79tmvrweFlFy9etP1dVapUSW3atNGPP/7oEEtSr/fEHDx4UK1bt1aFChVUr149ffvtt3bLE5pTavHixapXr54qVqyo1q1b6+DBgwkOk7MWhWrVqqUKFSqoS5cuOn/+vMN6NWrUUFRUlHbv3m3XfuXKFdvzmZh9+/bp5s2bDl3AO3TooKioKKfP4aOsXbtWHh4eCXZfHzNmjOrXr68qVaoke98A0i7yJ/KntJA/Sfdf67i4uET3nRRr165VoUKFVLlyZafL7927p+jo6Cc+TkLMZrNy5sxpm2PJ+rqvW7dOkydP1vPPP69KlSopMjJS0dHR+umnn1SjRg2HfSR2bR0/flzdunVT5cqVFRAQoC5duuiXX35xiCWpeVZitm7dqqZNm8rPz09NmjTRzp077ZY7m1PKYrFo+vTpCgkJUaVKldSpUyedPn1adevWdfo3EhMTo3Hjxql69ery9/fXu+++q/DwcIf1atSoocuXL+vEiRN27RcuXNCFCxeSdC6xsbF2+ZOHh4fatWunv//+W0eOHEl0+8jISKVPn17ZsmWza/f19VWGDBls/z906JAkOfS8eumllxQdHe3wHohnEz2l4OCHH35QwYIFE/zCVLVqVRUsWFA7duyQJL3wwgvKlCmTNmzYoGrVqtmtu379epUuXVomk0nS/XkW2rVrp3z58ql79+627d59911Nnz7doUv7yJEjlStXLr377ruKioqSJI0YMUKbNm1Sx44dVbJkSd28eVOHDh3SmTNnVL58edu2t27dUrdu3dSgQQM1btxYmzZt0sSJE2UymWwJ2r1799SpUydduHBBHTp0UKFChbRx40YNGTJEERER6tKli6T7w3Hefvtt7du3T61bt1bZsmX1008/acKECQoNDbUVTiZMmKD//Oc/qlixotq0aSMpaV2mZ8+erQwZMuitt97S+fPn9fXXX8vb21seHh6KiIhQr1699Ouvv2r16tUqWLCgevXqZdt25syZmjp1qho3bqzWrVsrPDxcX3/9tTp06KBvv/3W9ma/ceNG3bt3T+3atVOOHDl09OhRff311/r7778demtYu8pWrFhRgwYN0p49ezRv3jwVLlzY7sPn008/1Zo1a7Rt2zYVKlTokef5sBs3bkiS3ZA66/FHjRql1q1bJzhvgTMWi0WnTp1Sq1atHJZVqFBBP//8syIjI5UlS5Zkx/okYmNj9ffff9t+CbJavXq1oqOj1aZNG6VLl07Zs2dXaGiorly54tAFftiwYRo1apQyZcpk66qcJ08eSfefx9dee013795Vp06dlDNnTq1Zs0Zvv/22pk2bZvu7Sur1npjz58+rb9++at26tVq0aKFVq1ZpyJAhKl++fKJzpSxZskQfffSRqlSpotdff12XL1/Wu+++q2zZsil//vwO68+ZM0ceHh568803FRkZqS+//FIDBw7UN998Y7deqVKllCFDBh0+fNju/WPw4MHav3+/Tp06lej5HD9+XJLk5+dn116+fHl5enrqxIkTyfolODY2Vhs2bFBAQIDTv4kNGzboyJEjWr9+fZqaxB7AkyN/In9K7fxJkoYOHaqoqCh5eXkpMDBQgwYNchjOlxTHjx/XmTNnEhwetWbNGi1ZskSGYahkyZJ6++23E+wh/Lhu3bqliIgIFS1a1K79888/l4+Pj7p27aqYmBj5+Pjo2LFjio2NdcifEru2/vzzT3Xo0EGZM2dWt27d5O3treXLl6tTp076+uuvValSJUlJz7MSc+jQIW3evFnt27dX5syZtWjRIvXp00c//PCD09fRatKkSfryyy9Vp04dPf/88zp58qS6du2aYDFw9OjRypYtm3r16qXLly/rq6++0kcffaQpU6bYrWfNew4fPmz3nL3++uuSpO3btyd6PidOnFCmTJlUsmRJu3brj8InTpxI9Me3atWqaf369Ro+fLjeeOMN2/C9LVu26P3337etFxMTIy8vL4cpITJmzCjp/jBA6+uKZ5gBPCAiIsIwmUzG22+/neh6PXv2NEwmk3H79m3DMAxjwIABRnBwsBEXF2db59q1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9uzZowYNGtjuCPOgvn37OlzXffv2lSR169ZNM2bMcLodgGcH+RP5U1KldP4kOb8OTp48qe3bt6tmzZp2xcPEPiN37NihiIiIBO+k5+w4kZGR+uqrr5QzZ067Ozm6kp+fn+0ufA9zdm15eXmpZs2a2rZtm90PgTdu3NDatWsVGBhoK6QmNc9KacHBwfL29nbIUR7+e3oc1ufp4fzpwoULunDhwiO3r1evnnx8fGxzO0n3/zaWLVumfPny2e3X2fVevHhx7d692+69Mj4+Xhs2bFDmzJkTvftmeHi4vvzyS5nNZopS/xL0lIKDYsWKafz48Xr//ffVrFkztW7dWoUKFdLly5e1cuVK/fPPP/r0008d3ix8fHzUoEEDrVu3Tnfv3tXgwYMd9j1ixAi1b99ezZo1U5s2bVS4cGHduHFDv/zyi/7++2/973//SzS2O3fuqHbt2mrUqJHKlCmjTJkyaffu3frtt980ZMiQZJ9r27ZttXz5cg0ZMkS///67ChYsqE2bNunw4cMaNmyY7cOobt26CgoK0uTJk209O3bt2qVt27apS5cuds9F+fLltWfPHs2fP1958+ZVoUKFnI5DTwlFihRRv379NGnSJF2+fFn169dX5syZdenSJW3dulVt2rRR165dVaJECRUpUkQff/yxQkNDlSVLFm3atOmJk7+k3tL46NGjGjRokHLkyKHg4GCH17ly5coqXLiwcuXK5bQnyVdffSVJDssGDx6s/fv32w2XaN++vb755hv16NFDb775pry9vbVgwQLlzp3bNhbdavv27Tp58qSk+7/MnDp1Sp9//rmk+6+5tZfMpUuXVK9ePbVo0ULjx49P6tPz2OrVq6ctW7Y4dIkuX768li5dqs8//1xFixZVrly5FBwcrLfeekvr1q1T9+7d1alTJ2XPnl3ffvutLl26pOnTp9sS0aRe7yktXbp06t27t0aNGqUuXbqocePGunz5slavXp2kW34nZvfu3cqYMaNDUuLs2nAmQ4YM6tOnjz766CP16dNHzz//vA4ePKj//e9/6t+/v91Q0cWLF+uzzz7TwoULFRQUZLef9evXKy4uLsEk3lmvCevcJxUqVHB63QN4tpA/kT8lVUrnT5LUr18/ZciQQQEBAcqdO7dOnz6tFStWKEOGDA43WknsM/L7779XunTp1KhRI6cxLV68WFu3blWdOnVUoEABXbt2TatXr9aVK1c0YcIEu8mv9+3bp86dO6tXr17q3bt3kp+fx5E+fXqFhIRoz549th99rBK6tvr166fdu3erffv2at++vby8vLR8+XLFxMTo/ffft22f1DwrpeXJk0edO3fWvHnz1LNnTz3//PM6deqUdu7cqZw5cz72fFDS/fypQIECKleunF27dR6xR012nj9/fnXu3Flz585VXFycKlSooK1bt+rgwYOaOHGi3XBFZ9d79+7d9f7776tNmzZq06aNMmTIoHXr1un3339Xv3797G5g0LFjR/n7+6to0aK6fv26VqxYoaioKH3xxRdMe/AvQVEKTjVu3FglSpTQ7NmztXLlSt28eVM5cuRQUFCQevTokeBkfi+99JK++eYbeXh4OL37VKlSpbRq1Sp99tlnWrNmjW7evKlcuXKpXLlyevfddx8ZV4YMGdSuXTvt2rVLmzdvlmEYKlKkiC1ZS64MGTJo0aJFmjhxotasWaPIyEgVL15c48aNU8uWLW3reXp6aubMmZo2bZrWr1+v1atXq2DBgnaT7lkNGTJEw4cP15QpU3Tv3j21aNHiqSVV0v0PymLFimnBggWaMWOGpPsfFDVr1rQNI/Lx8dEXX3yh0aNHa9asWUqfPr0aNGigDh062N1h52k5ffq0YmNjFR4ermHDhjksHzdunMNEq48rS5YsWrRokcaOHauZM2fKYrEoKChIQ4cOdehSvnnzZq1Zs8b2/+PHj9vupJM/f35bUSoqKkrS/fHzrtCqVSt9/fXXOnTokF0x491339WVK1f05Zdf6s6dO6pWrZqCg4OVJ08eLVu2TJ988om+/vprRUdHy2w264svvrDr6ZPU6/1p6NixowzD0Pz5820TtM6cOVOjR49+osnnN27cqAYNGjxRQa1Dhw7y8fHRvHnztH37dj333HMaOnSow91+EvP9998rd+7c/GIHuDnyJ/KnlJSc/Kl+/fr6/vvvtWDBAkVGRipnzpxq0KCBevXqleR5FyMjI/Xjjz/qhRdesP1w8rDKlSvryJEjtus7Y8aMqlixosaMGWObrN8qNfKn3r176+rVq3YTiyd0bZUuXVqLFy/WpEmTNGvWLBmGoYoVK+qTTz6xu/aSmmc9DQMHDlSGDBn0zTffaM+ePfL399fcuXPVvn17p3e/SwqLxaJNmzapdevWT1TYGjhwoLJnz67l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88159NFH87d/+7fp6enJZz7zmXzsYx/L+vXrS07fXsYy10nygQ98IH/+53/e+Hrq1KllxG1bxxxzTD75yU9m7ty5qdfrue+++3Lttdfm3nvvzcknn2w9N8nB5jlp/7Wshmo+NVQx1E/FUEMVQ/1UDPVTcQqpoerjxK233lr/gz/4g7JjTGjz5s2rP/TQQ42va7Va/bzzzquvXbu2cWz37t310047rb5hw4YyIk4YvzrX9Xq9fv3119c/8pGPlJRoYhoYGKjPmzevvnHjxnq9/ov1e+qpp9YffPDBxvds3769Pm/evPrmzZtLSjkx/Opc1+v1+p/8yZ/Ub7rpphJTTUxnn312/Z577rGeW+zVea7X238tq6FaTw1VDPVTcdRQxVA/FUf9VJxm11DjZvtekvz4xz/O4sWL87u/+7v5xCc+keeff77sSBPac889l127dmXRokWNYz09PVmwYEE2b95cYrKJa+PGjTn33HNz0UUX5YYbbsjPfvazsiO1tT179iRJZsyYkSR58sknMzw8fMCaPvHEEzN79ux8//vfLyPihPGrc/2q+++/P+ecc04uueSSfP7zn8/LL79cRrwJYXR0NA888ED27duXhQsXWs8t8qvz/Kp2X8tqqGKpoYqlfmo+NVQx1E+tp34qTqtqqHGzfe+MM85If39/TjjhhOzatStf/vKXc8UVV+T+++/P9OnTy443Ie3atStJMnPmzAOOz5w5057bFjj//PPznve8J3PmzMmzzz6bL3zhC7nmmmvyD//wD7ZZ/BpqtVpuvvnmnHnmmZk3b16S5MUXX8xhhx2WI4444oDvnTlzZmO989a93lwnySWXXJLZs2dn1qxZ2bZtW2655Zb86Ec/ype+9KUS07afbdu25fLLL8/+/ftz+OGH58tf/nJOOumkbN261Xpuojea56T917IaqnhqqOKon5pPDVUM9VNrqZ+K0+oaatw0pZYsWdIYz58/PwsWLMiFF16YBx98MMuXLy8xGTTHxRdf3Bi/ehO4pUuXNt79461ZtWpVnnrqqdx9991lR5nw3miuP/jBDzbGfX196e3tzdVXX50dO3bk+OOPLzpm2zrhhBNy3333Zc+ePfmnf/qnXH/99bnrrrvKjjXhvNE8n3TSSW2/ltVQTGTqp+ZTQxVD/dRa6qfitLqGGlfb9/67I444Im9729uyY8eOsqNMWL29vUmSgYGBA44PDAzk6KOPLiNSRznuuONy1FFH5cc//nHZUdrOjTfemEceeSTr1q3LMccc0zh+9NFHZ3h4OLt37z7g+wcGBhrrnbfmjeb69SxYsCBJrOm3aNKkSZk7d25OO+20fOITn8j8+fPzjW98w3pusjea59fT7mtZDdV6aqjyqJ8OjRqqGOqn1lM/FafVNdS4bUrt3bs3zz77rIXTQnPmzElvb28ee+yxxrHBwcE8/vjjB+wRpTV+8pOf5KWXXrLG34J6vZ4bb7wxDz30UNatW5fjjjvugMdPO+20HHbYYQes6aeffjrPP/983vnOdxactr0dbK5fz9atW5PEmj5EtVotQ0ND1nOLvTrPr6fd17IaqvXUUOVRP/161FDFUD+VR/1UnGbXUONm+95f//Vf58ILL8zs2bOzc+fOfPGLX0ylUskll1xSdrS2tnfv3gPeKX3uueeydevWzJgxI7Nnz85VV12V22+/PXPnzm18nPGsWbOydOnSElO3pzeb6xkzZuRLX/pSLrroohx99NF59tln8zd/8zeZO3duzj///BJTt5dVq1Zlw4YNue222zJt2rTGvvCenp5MmTIlPT09ueyyy7J69erMmDEj06dPz0033ZSFCxf6R+gtOthc79ixI/fff3+WLFmSI488Mtu2bUt/f3/OPvvszJ8/v+T07ePzn/983v3ud+fYY4/N3r17s2HDhmzcuDFf+9rXrOcmerN5nghrWQ3VGmqoYqifiqGGKob6qRjqp+IUUUN11ev1egtfw5h9/OMfz6ZNm/LSSy/lN37jN3LWWWfl4x//uH21h+hf//Vfc9VVV73m+KWXXprVq1enXq/n1ltvzT333JPdu3fnrLPOyg033JATTjihhLTt7c3m+tOf/nSuvfba/PCHP8yePXsya9asnHfeeVm5cqXL/N+Cvr6+1z3e39+fZcuWJUn279+f1atX54EHHsjQ0FAWL16cG264wbtPb9HB5vqFF17Iddddl6eeeir79u3Lsccem6VLl+ajH/2oGyu/BX/1V3+V733ve9m5c2d6enrS19eXa665Juedd14S67lZ3myeJ8JaVkO1hhqqGOqnYqihiqF+Kob6qThF1FDjpikFAAAAQOcYt/eUAgAAAGDi0pQCAAAAoHCaUgAAAAAUTlMKAAAAgMJpSgEAAABQOE0pAAAAAAqnKQUAAABA4TSlAAAAACicphQAAAAAhdOUAgAAAKBwmlIAAAAAFE5TCgAAAIDC/X+ijSa/SK2rLwAAAABJRU5ErkJggg==", - "text/plain": [ - "
      " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "def plot_counterfactual_by_context(data, name, other):\n", - "\n", - " grouped_data = data.groupby([\"wpr_lockdown_efficiency\", \"wpr_mask_efficiency\"])\n", - "\n", - " fig, axs = plt.subplots(1, 2, figsize=(12, 6))\n", - "\n", - " for (lockdown_efficiency, mask_efficiency), ax in zip(\n", - " grouped_data.groups.keys(), axs.flatten()\n", - " ):\n", - " data_subset = grouped_data.get_group((lockdown_efficiency, mask_efficiency))\n", - " mean_overshoot = data_subset[\"overshoot_int\"].mean().item()\n", - "\n", - " fixed = mask_efficiency if name == \"lockdown\" else lockdown_efficiency\n", - " ax.hist(data_subset[\"overshoot_int\"])\n", - " ax.set_title(\n", - " f\"{other} eff fixed: {fixed}\\nOvershoot mean: {mean_overshoot:.2f}, Pr(too high): {data_subset['os_too_high_int'].mean().item():.2f}\"\n", - " )\n", - " ax.set_xlim(5, 35)\n", - " ax.axvline(x=mean_overshoot, color=\"grey\", linestyle=\"--\")\n", - " ax.axvline(x=overshoot_threshold, color=\"red\", linestyle=\"-\")\n", - "\n", - " plt.suptitle(\n", - " f\"Counterfactual {name} by {other.lower()} efficiency contexts\",\n", - " fontsize=16,\n", - " y=1,\n", - " )\n", - " plt.tight_layout()\n", - " plt.show()\n", - "\n", - "\n", - "plot_counterfactual_by_context(counterfactual_lockdown, \"lockdown\", \"Mask\")\n", - "\n", - "plot_counterfactual_by_context(counterfactual_mask, \"mask\", \"Lockdown\")" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [], - "source": [ - "sufficiency_table = get_table(\n", - " tr,\n", - " mwc,\n", - " antecedents,\n", - " witnesses,\n", - " consequents,\n", - " world=2,\n", - " others=[\"joint_efficiency\", \"overshoot\"],\n", - ")\n", - "\n", - "\n", - "factual_sufficiency = sufficiency_table[\n", - " (sufficiency_table[\"lockdown_int\"] == 1)\n", - " & (sufficiency_table[\"mask_int\"] == 1)\n", - " & (\n", - " sufficiency_table[\"wpr_lockdown_efficiency\"]\n", - " == 0 & (sufficiency_table[\"wpr_mask_efficiency\"] == 0)\n", - " )\n", - "]\n", - "\n", - "counterfactual_sufficiency_lockdown = sufficiency_table[\n", - " (sufficiency_table[\"lockdown_int\"] == 0)\n", - " & (sufficiency_table[\"mask_int\"] == 1)\n", - " & (sufficiency_table[\"wpr_lockdown_efficiency\"] == 0)\n", - "]\n", - "\n", - "counterfactual_sufficiency_mask = sufficiency_table[\n", - " (sufficiency_table[\"lockdown_int\"] == 1)\n", - " & (sufficiency_table[\"mask_int\"] == 0)\n", - " & (sufficiency_table[\"wpr_mask_efficiency\"] == 0)\n", - "]\n" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAABasAAAIlCAYAAADbmqTaAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAACaXklEQVR4nOzdZ3gUZfv38d/ukoQeWpDe3VACJFQTkK5IUwGlSlFARSnqH6V43yKIBBCVKiIgvUqTIkUUEBVFEQQUkd6iEIKQhEDazvOCJ3OzJpRAkgmb7+c4OJi9dnbmnM3snjvnXHONzTAMQwAAAAAAAAAAWMhudQAAAAAAAAAAAFCsBgAAAAAAAABYjmI1AAAAAAAAAMByFKsBAAAAAAAAAJajWA0AAAAAAAAAsBzFagAAAAAAAACA5ShWAwAAAAAAAAAsR7EaAAAAAAAAAGA5itUAAAAAAAAAAMtRrAaQKv7+/po8ebLVYQAAcFsXLlzQgAEDVLduXfn7+2vOnDlWh3RPmjRpoiFDhqT7a+7UmTNn5O/vr1mzZt3V61euXCl/f3+dOXMmjSMDAGQ15PzMpUmTJnrhhResDgP3qWxWBwB4qpUrV2ro0KEpPtenTx8NGjQoTdZz7tw5LVu2TM2aNVOlSpXSZJkAAM9w6tQpzZw5U999953Onz8vLy8vOZ1OtWjRQh07dlT27NktjW/hwoXKkSOH2rVrly7LDw0N1Y4dO9SvXz8VKlRIAQEBabr8q1evaubMmapTp47q1q2bpssGACA1yPnkfMBTUKwG0tmAAQNUokQJtzan05lmyz9//rymTJmi4sWLU6wGAJi2bdumgQMHytvbW0888YScTqfi4+O1e/duvffeezpy5IjeeecdS2NcvHix8ufPn24Hrj/88IOaNm2qXr16pcvyr169qilTpqhfv34cuAIALEPOJ+cDnoRiNZDOGjRooKpVq1odBgAgCzl9+rReffVVFStWTHPnzlXhwoXN57p27aqTJ09q27Zt1gWYjhISEuRyueTt7a2IiAjlzZvX6pAAAEg35HxyPuBpGLMasMDZs2f19ttvq3nz5qpWrZrq1q2rAQMGpDhmY2RkpEaPHq0mTZooICBADRo00BtvvKGLFy/qxx9/1FNPPSVJGjp0qPz9/eXv76+VK1dKuvk4V926dVO3bt3Mx3FxcZo4caLatWunmjVrKjAwUF26dNEPP/yQTu8AACA9zZw5UzExMXr33XfdDlqTlC5dWj169JB0/UBv6tSpatasmQICAtSkSRN98MEHiouLc3vNze5Z8O9ckzQO8e7duxUaGqqHHnpIgYGBevnll3Xx4kW31x0+fFi7du0y89eNuSkyMlLvvvuuGjZsqICAAD3yyCP65JNP5HK5zHluHDN5zpw5atasmapWrapFixbJ399fhmFo4cKF5vIl6dKlSxo7dqzatGmjoKAg1ahRQ71799Yff/yRbNtiY2M1efJkNW/eXFWrVlX9+vXVr18/nTp1SmfOnFFwcLAkacqUKeY6kt6jf+faJEOGDFGTJk3c2mbNmqVOnTqpbt26qlatmtq1a6eNGzcme21aOX36tAYMGKA6deqoevXq6tChQ4qFjFtt/80YhqH//ve/CggI0ObNm832w4cPq3v37qpWrZoaNGigjz76yO1veaOFCxeqVatWCggIUP369TVixAhFRkaaz8+bN0+VKlVya/v000/l7++v0NBQsy0xMVFBQUF67733JLnvL0uXLjX3+fbt22vfvn13/P4BQGZCzifnJ/H399fIkSO1YcMGtWzZUtWqVVPHjh116NAhSdKSJUv0yCOPqGrVqurWrVuy+sPPP/+sAQMGqFGjRgoICFDDhg01evRoXbt2zW2+8PBwDR06VA0aNDBzdd++fW97D4pVq1apcuXKGjt2bJpsLzwXPauBdBYdHe2WqCVp//792rNnj1q1aqUiRYro7NmzWrx4sbp3767169crR44ckqQrV66oa9euOnr0qNq3b6/KlSvrn3/+0ddff61z586pfPnyGjBggCZNmqSOHTuqZs2akqQaNWqkOsbPPvtMrVu31tNPP60rV65o+fLl6t27tz777DOGFwGA+8zWrVtVsmTJO8oH//nPf7Rq1So1b95czz77rPbt26fp06fr6NGjmjp16l3HMGrUKOXNm1f9+vXT2bNnNXfuXI0cOVITJkyQJA0bNkzvvPOOcubMqRdffFGSVKhQIUnXL7V95plndO7cOXXq1ElFixbVnj179MEHHyg8PFxvvvmm27pWrlyp2NhYdejQQd7e3qpSpYrGjRunN954Q/Xq1dMTTzxhznv69Glt2bJFjz32mEqUKKELFy5o6dKleuaZZ7R+/Xo98MADkq4XOl944QXt3LlTrVq1Uvfu3XXlyhV99913+vPPPxUSEqK3335bb7/9th555BE98sgjkmQeIKfGvHnz1KRJE7Vp00bx8fFav369Bg4cqOnTp6tRo0apXt6tXLhwQZ06ddLVq1fVrVs35c+fX6tWrVLfvn01adIkcztut/2lSpVKtuzExEQNGzZMX3zxhaZMmWLGHh4eru7duysxMVHPP/+8cuTIoWXLlsnHxyfZMiZPnqwpU6YoJCREnTt31vHjx7V48WLt379fixcvlpeXl2rVqiWXy6Xdu3ercePGkq4fYNvtdv3888/msn7//XfFxMSodu3abutYt26drly5oo4dO8pms2nmzJnq37+/tmzZIi8vr7R6qwEgQ5Dzyfk3+vnnn/X111+rS5cukqRPPvlEL774onr37q1FixapS5cuunz5smbOnKlhw4Zp3rx55ms3btyoa9euqXPnzsqXL5/27dunBQsW6O+//9akSZPM+fr3768jR47omWeeUfHixXXx4kV99913+uuvv5INgZpk6dKlGj58uF544QW9+uqr97yd8HAGgHSxYsUKw+l0pvjv6tWryebfs2eP4XQ6jVWrVpltEydONJxOp7F58+Zk87tcLsMwDGPfvn2G0+k0VqxYkWyexo0bG4MHD07W/swzzxjPPPOM+TghIcGIjY11m+fy5ctGSEiIMXToULd2p9NpTJo06dYbDwCwTFRUlOF0Oo2+ffvedt6DBw8aTqfTePPNN93ax4wZYzidTmPnzp1m282+//+da5LyX8+ePc1cZRiGMXr0aKNSpUpGZGSk2daqVSu3fJRk6tSpRmBgoHH8+HG39vHjxxuVKlUywsLCDMMwjNOnTxtOp9OoUaOGERERkWw5TqfTGDFihFtbbGyskZiY6NZ2+vRpIyAgwJgyZYrZtnz5csPpdBqzZ89Ottyk7YqIiLjp+/LvXJtk8ODBRuPGjd3a/v27IC4uzmjdurXRvXt3t/ab5fVb+fdr3n33XcPpdBo//fST2RYdHW00adLEaNy4sfne3Mn2J73/M2fONOLj441XXnnFqFatmrFjxw63+ZPW+euvv5ptERERRs2aNQ2n02mcPn3abKtSpYrx3HPPuf2NFixYYDidTmP58uWGYRhGYmKiUaNGDWPcuHFmPHXq1DEGDBhgVKpUyYiOjjYMwzBmz55tVKxY0bh8+bJbvHXq1DEuXbpkLn/Lli2G0+k0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mjVLrVq1Up48ecy2PXv2aMqUKWrbtq3y5s1717FlhI0bN97Rdt6rjh07aty4cerfv79y5859V8v4+++/1bVrV+XJk0evvvqqYmJi9Omnn+rPP//UZ599Jm9v71u+ftCgQfr666/19NNPq0qVKjp37pwWLVqkjh07au3atSpevLgk6cUXX9RTTz3l9tqrV69q+PDhqlev3l3FDuDuka9Tlpp8vX37dr388suqU6eO/vvf/+rPP//UtGnTFBERoREjRtzxOq9cuaL33ntPOXPmTPH59957TzNnzlTz5s3VvXt3HT16VAsWLNCRI0c0a9asu95Wb29vjRo1StL13x6bNm3S2LFjtX//fn344Ye3fX18fLzmzZunnj17yuFwmO330761b98+t9jTg4+Pj5588knNmTNH3bp1u+vfBwcPHlTPnj1Vvnx5DRkyRH///bc+/fRTnThxQjNnzryjZdSrV09PPPGEW1vlypWTzTd58mRNnTpVzZs3V9u2bZWQkKA///xT586du6vYAdyb++l7NSNlxpw9bty4ZG0HDhzQvHnz7umYh5yddXK2y+XSs88+q6NHj6pz584qW7asTp48qUWLFunbb7/VF198kezYP6n+kiS936eMQLH6PuFyuRQfHy8fHx+rQ8FdmDRpkurWrevWFhAQoMGDB2vt2rV6+umnzfb3339fYWFhWrlypUqWLJmq9VSsWFHz5893a3vmmWf04osvav78+Ro4cKD5xbVw4UL5+flp3rx5ZkGyY8eOatGihVauXHlPxermzZurQIECkqTOnTurf//+2rx5s/bu3XvTXmNXr15Vjhw59Pvvv+uPP/6462E0MoPbFXjTSvPmzTVq1Cht3LgxWSH4Tn388ce6evWqVq5cqWLFikmSqlWrpmeffVarVq1Sx44db/rac+fOafPmzXruuec0ePBgs71WrVrq0aOHvvzyS3M/SunH2eeffy5JatOmzV3FDmRG5Ov7W2ry9bhx4+Tv769PP/1U2bJd/0mdK1cuTZ8+Xd27d1f58uXvaJ3Tpk1Trly5VLduXX311Vduz50/f15z5szRE0884XYAXKZMGb3zzjv6+uuv1aRJk7va1mzZsrkVLrt06aKnn35aX3zxhYYMGaIHHngg2WsMw1BsbKyyZ8+ubdu26eLFi2rRosVdrT8zyKjPaYsWLTRz5kz98MMPCg4OvqtlfPDBB8qbN6/mz59vHqSWKFFC//nPf/Ttt9+qfv36t11GmTJlkhWr/23v3r2aOnWqhgwZck+/BYH7ATn7/pbZcrakFL9jd+3aJZvNptatW6dm89yQs7NOzt67d6/279+vt956S127djXby5Ytq2HDhmnnzp165JFH3F5zY/3FUzAMyG1ERERo2LBhCgkJUdWqVfX4449r1apV5vPx8fGqU6eOhg4dmuy10dHRqlq1qsaOHWu2xcXFadKkSXrkkUcUEBCghg0baty4ccku30gaU2fNmjVq1aqVqlatqh07dkiS1q9fr3bt2ikoKEg1atRQmzZtNHfu3GTrj4uLU2hoqB566CEFBgbq5ZdfTvHS/oULF6pVq1YKCAhQ/fr1NWLEiBQvndmwYYPatWunatWqqW7duho0aJBbD4shQ4Zo4cKFZvxJ/24laXzeH3/80Vx2mzZt9OOPP0q6fmlPmzZtVLVqVbVr106///57smUcPXpUAwYMUJ06dcz5/p04Ll26pLFjx6pNmzbm+9a7d2/98ccfbvP9+OOP8vf31xdffKFp06apQYMGqlq1qnr06KGTJ0+6zXv16lUdPXr0joZL+HcSlaRmzZqZ8SeJjIzUypUr1aFDB5UsWVJxcXFpMl5S8eLFdfXqVcXHx5tt0dHR8vX1dSusZsuWTfnz53c7C50WHnroIUnSmTNnJF0fEqJ169Y6cOCAunbtqurVq+uDDz6QJG3ZskVeXl6qVauW+frJkyebB+lNmzY1962k5SUkJGjq1Klq1qyZAgIC1KRJE33wwQcpvnd3ur/fTFRUlIYMGaJatWqpZs2aGjp0aLLhWVIas/qPP/7QM888o2rVqqlBgwb66KOPtGLFCrftuNHPP/+sp556SlWrVlXTpk1THJ6lYMGC8vf3T7a/R0VF6ejRo4qKirrt9mzevFmNGjUyC9WSFBISojJlymjDhg23fG3S0C6FChVya/fz85N0+x8U69atU86cOdW0adPbxgncDvn6f8jX6Z+vjxw5oiNHjqhDhw7mQa90/eDRMAxt2rTptuuSpBMnTmjOnDkaOnSo23KS7N27VwkJCW6X7EpSy5YtJV3fx9KK3W5XnTp1JElnz56V9L+/+44dO8y/e9KlsVu2bFHx4sVVqlQpcxm327diYmI0ZswYNWzYUAEBAWrevLlmzZqVbKiy1OT1mzl37pxeeuklBQUF6aGHHtLYsWOVmJjoNk9K418m7eNVq1ZVs2bNtGTJEvMy25Rs2bJFrVu3VkBAgFq1aqVvvvkm2TwBAQHKly9fsv394sWLOnr06G2HeYuOjtb333+vxx9/3K031RNPPKGcOXPeNl/f6Nq1a4qNjb3p83PnzlWhQoXUvXt3GYZxx5csA6lBzv4fcrbn5OyUxMXFafPmzapdu7aKFClyR6+5E+Ts6zwxZycdYxcsWNCt/XbH2NHR0SkO/Xq/omf1LVy7dk3dunXTqVOn1LVrV5UoUUIbN27UkCFDFBkZqR49esjLy0vNmjXTl19+qREjRrgV/rZs2aK4uDjzgMLlcqlv377avXu3OnTooPLly+vPP//U3LlzdeLECX300Udu6//hhx+0YcMGde3aVfnz51fx4sX13Xff6bXXXlNwcLAGDRokSTp27Jh++eUX9ejRw+31o0aNUt68edWvXz+dPXtWc+fO1ciRIzVhwgRznsmTJ2vKlCkKCQlR586ddfz4cS1evFj79+/X4sWL5eXlJen6DSWGDh2qqlWr6rXXXlNERITmzZunX375RatXr1bevHnVsWNHnT9/Xt99912Kl7/czMmTJ/V///d/6tSpkzn20osvvqgRI0boww8/VOfOnSVJn3zyiV555RVt3LhRdvv18yyHDx9W586d9cADD6hPnz7mh//ll1/W5MmTzTNOp0+f1pYtW/TYY4+pRIkSunDhgpYuXapnnnlG69evT3YmcsaMGbLZbHruuecUHR2tmTNnatCgQfrss8/Mefbt26fu3burX79+d3XZzIULFyRJ+fPnN9t2796t2NhYlS5dWgMGDNCWLVvkcrkUGBio4cOHq1KlSne07GvXrikmJkYxMTH66aeftHLlSgUGBroVoevUqaMZM2ZowoQJatu2rWw2m9auXasDBw647SNp4dSpU5KkfPnymW2XLl1Snz591KpVKz3++OPml/GePXvkdDrNfU+SHnnkEZ04cULr1q3T0KFDzfcs6ezhf/7zH61atUrNmzfXs88+q3379mn69Ok6evSopk6dai7nTvf3W3nllVdUokQJvfbaa/r999/12WefqUCBAnr99ddv+ppz586Zn8/nn39eOXPmvOUQGydPntTAgQP11FNPqW3btlqxYoWGDBmiKlWq6MEHH3Sbt0qVKtqyZYtb25dffqmhQ4cqNDRU7dq1u2VcERERCggISPZctWrVUkzeNypVqpSKFCmi2bNnq2zZsqpcubLOnz+v9957TyVKlEhWXLnRxYsX9f3336tFixY3vYwOuFPka/J1RufrpAP7f48J+MADD6hIkSI6ePDgHS179OjRqlu3rho2bJjiwUvSgd6/D0yShgT77bff7nAr7szp06cluefr48eP6//+7//UsWNHdejQQWXLlpV0PV//+54Dt9q3DMNQ37599eOPP+qpp55SpUqVtGPHDo0bN07nzp3TsGHDzHnvNK/fTGJionr16qVq1arpjTfe0M6dO/Xpp5+qZMmS6tKly01f9/vvv6t3797y8/NT//795XK5NHXq1Jv2Vtq9e7c2b96sLl26KFeuXJo/f74GDBigrVu3uu0v0vXhNn755Re3toULF2rKlCmaN29eikWXJIcOHVJCQkKyfO3t7a1KlSrd8f62atUqLVq0SIZhqHz58urbt2+yq5t27typoKAgzZs3T9OmTdOlS5fk5+enF1980e1eIsDdImeTsz01Z6dk+/btioyM1OOPP35H86cGOdszc3ZAQIBy5sypiRMnytfXV+XKldPJkyf13nvvqWrVqgoJCUn2mqZNmyomJsbsCDZkyJBkHcruOwZuas6cOYbT6TQ+//xzsy0uLs7o2LGjERgYaERFRRmGYRg7duwwnE6n8fXXX7u9vk+fPkbTpk3Nx6tXrzYqVqxo/PTTT27zLV682HA6ncbu3bvNNqfTaVSsWNE4fPiw27yjRo0yatSoYSQkJNw07hUrVhhOp9Po2bOn4XK5zPbRo0cblSpVMiIjIw3DMIyIiAijSpUqxnPPPWckJiaa8y1YsMBwOp3G8uXLzW0ODg42WrdubVy7ds2cb+vWrYbT6TQmTpxoto0YMcJwOp03je3fGjdubDidTuOXX34x25Lez2rVqhlnz54125csWWI4nU7jhx9+MNt69OhhtG7d2oiNjTXbXC6X0bFjR+PRRx8122JjY9220TAM4/Tp00ZAQIAxZcoUs+2HH34wnE6n0aJFC7dlzp0713A6ncahQ4eSzTtp0qQ73t4bDRs2zKhUqZJx/Phxs2327NmG0+k06tSpYzz11FPGmjVrjIULFxohISFG7dq1jXPnzt3RsqdPn244nU7zX48ePYywsDC3ea5cuWIMHDjQ8Pf3N+erXr268eWX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5Zdf9PDDD6tYsWK6dOmSNm/erP3796tbt25mrwCHw6HnnntOEyZMUMeOHfXEE0/I5XJp+fLl+vvvv/Xee++5xd+tWzft2rVLhw4duuv3604lnZnetWuX6tevb7Yn7VsffvihWrZsKS8vLzVu3FgVK1ZU27ZttXTpUkVGRqp27drav3+/Vq1apWbNmpk3V7nT/T099O7dW2vWrNGzzz6rZ555Rjlz5tRnn32mokWL6tKlS3fdWyIiIkKHDh1KNtRGSvvGzbz44ovauHGjunfvru7duysmJkazZs2S0+lU+/btzfnOnTunli1bqm3bthozZoyk62OrP/jgg5o6darCwsJUvXp1nTx5UgsXLpSfn5+eeuqpZOtjCBCkB/I1+fpW0itfv/HGG+rbt6+ee+45tWrVSn/++acWLlyop59+2u1v/O/v5Bw5cqhZs2bJ1r1lyxbt378/2XOjRo1SXFycKlasqISEBK1bt0779u3TmDFjkg3HkHSJ6Ndff33nb9Bdatq0qT7//HMdP37cbczVm+1bTZo0Ud26dfXhhx/q7Nmz8vf313fffaevvvpKPXr0MC8rv9O8nh769eunb7/9Vp07d1bnzp3lcrm0YMECPfjgg24nnFPrwIEDunTpkpo2berWvnDhQk2ZMkXz5s277Q2bXn31VXXq1EndunVThw4d9Pfff2v27NmqX7++27i6Ke3vCxcu1JYtW9S4cWMVK1ZM58+f18qVKxUWFqZx48a59frr1KmTli9frpEjR5q9Oz///HOFhYVxg0WkCXI2OftW7vecnWTNmjUqXLjwLb/bydn3xlNzdtu2bfXpp5/qrbfe0u+//64HH3xQv/32m5YvX64HH3zQbZ9r3LixWrZsKafTKW9vb/3yyy9av369KlWqpI4dO971e5AZUKy+hezZs2v+/PkaP368Vq1apejoaJUtW/amBaAaNWqoaNGi+uuvv5Kd8ZWun6GdOnWq5syZo88//1xffvmlcuTIoRIlSqhbt24p3lzh3x5//HEtW7ZMixYtUmRkpPz8/NSiRQv179//pmNA3Ur//v1VoEABLViwQKGhofL19VWHDh302muvycvLy5yvXbt2yp49u2bMmKHx48crZ86catasmV5//XW3u8o++uij6tatm9avX681a9bIMIx0TaQVKlTQihUrNGXKFK1atUqXLl0y75z68ssvm/O9+OKLunr1qtauXasvvvhClStX1vTp0/X++++nW2w3+uOPPyQpxUuH6tSp45ZIH3roIc2cOVMTJ07UBx98YCbI119/PcXLmm7UqFEjnT59WitWrNA///wjb29v+fv7KzQ0VG3btnWbt2/fvipRooTmzZunqVOnKi4uTv7+/po0aZLbTXWk6z2uk8ZeSm8BAQHy9/fXhg0b3IrV1apV08CBA7VkyRLt2LFDLpdLX331lXLmzKlRo0apRIkSWrVqlbZs2aJChQrphRdeUL9+/dyWfaf7e1orWrSo5s2bp1GjRmn69OkqUKCAunbtqhw5cmjUqFFudwBPjc2bN8vb2/uuL/9Nim3BggUaM2aM3n//fXl5ealhw4YaMmTIbS9Z8/b21sKFC/XRRx9p27ZtWrdunXLlyqVmzZrp1VdfTda7weVyaf369apSpcpdX1YFpIR8Tb5OK6nJ140bN9aUKVM0ZcoUvfPOO2aB4sbtSQuVK1fW3LlztXbtWtlsNlWrVk1z5sxJ8QAwJiYmVZer34vGjRsrf/782rBhg1566SWz/Wb7lt1u17Rp0zRp0iR98cUXWrlypYoXL6433njD7Sa9ku44r6e1gIAAzZgxQ+PGjdPEiRNVtGhRDRgwQMeOHTMvfb4bGzduVLFixe7poL1KlSqaPXu2xo8fr9DQUOXKlUtPPfWUXnvttdu+tkaNGtqzZ4+WL1+uS5cuKUeOHKpWrZrefffdZMMPZM+eXXPnztV7772nlStXmldKTZ8+/b7vpYXMgZxNzk4rmTFnS9eHyvjtt9/07LPP3nL/IWffG0/N2fnz59eKFSs0ceJEbd26VUuWLFG+fPnUvn17vfrqq27H6G3atNGePXu0adMmxcXFqVixYurdu7defPFFs9f8/cpmZLY7AQDIVKKjo1W3bl0NGzZMXbt2zZB1rl69WiNHjtS2bdvcfqh5mnfffVdLly7Vnj177urGEk8++aTq1KmjYcOGpUN0AID7yZEjR9SqVStNnz7d7fLx9DR16lStXLlSmzdvzrAbJFnhpZde0pEjR7R58+ZUvzYuLk5NmjRRnz591KNHj3SIDgBwvyFnpx9ytmdgzGoAt/Tzzz/rgQce0NNPP51h63z88cdVrFixZGNk3c+SbnKZ5J9//tGaNWtUs2bNu/qx8M033+jkyZO3HNcUAJB1/PjjjwoKCsqwg15J6tmzp2JiYrR+/foMW2d6+3e+PnHihL755hvVqVPnrpa3YsUKZcuWzW0oNwBA1kbOThvkbM9Fz2oAyABPPPGE6tSpo/Lly+vChQtasWKFzp8/rzlz5rjdSAYAAFinfv36atu2rUqWLKmzZ8+aNz9btWqVeWNhAABgPXK252LMagDIAA0bNtSmTZu0bNky2Ww2Va5cWe+++y6FagAAMpGHH35Y69evV3h4uLy9vRUYGKjXXnuNg14AADIZcrbnomc1AAAAAAAAAMByjFkNAAAAAAAAALAcxWoAAAAAAAAAgOUy3ZjVLpdL58+fV65cuWSz2awOBwDggQzD0JUrV1S4cGHZ7Zy3vVvkbABAeiJfpw3yNQAgPaV1vs50xerz58+rYcOGVocBAMgCtm/friJFilgdxn2LnA0AyAjk63tDvgYAZIS0yteZrlidK1cuSdc3MHfu3BZHA6TClStSsWLXp8PCpP+/LyO5xMRE7d27V5IUGBgoh8NhbUDIcqKjo9WwYUMz5+DukLNx30ohZ5ObgMyHfJ02yNe4b5GvgftCWufrTFesTrosKXfu3CRS3F9sNsnluj6dOzfF6luIi4vTtm3bJEnBwcHy9va2NiBkWVwKe2/I2bhvpZCzyU1A5kW+vjfka9y3yNfAfSWt8jUDfwEAAAAAAAAALEexGgAAAAAAAABgOYrVAAAAAAAAAADLUawGAAAAAAAAAFiOYjUAAAAAAAAAwHIUqwEAAAAAAAAAlstmdQAAsp5s2bKpc+fO5jQAAFYjNwEAkPmRrwHPxycbQIaz2+1yOp1WhwEAgIncBABA5ke+Bjwfw4AAAAAAAAAAACyXqmJ1YmKiJkyYoCZNmqhatWpq1qyZpk6dKsMwzHkMw9DEiRNVv359VatWTT179tSJEyfSOm4A97HExETt3btXe/fuVWJiotXhAABAbgIA4D5AvgY8X6qGAZkxY4YWL16ssWPHqkKFCjpw4ICGDh2qPHnyqHv37uY88+fP15gxY1SiRAlNnDhRvXr10hdffCEfH5902QgA95fExER9/vnnkqTKlSvL4XBYHBEAIKsjNwEAkPmRrwHPl6qe1Xv27FHTpk3VqFEjlShRQo899pjq16+vffv2Sbreq3revHnq27evmjVrpooVK2rcuHE6f/68tmzZki4bAAAAAAAAAAC4/6WqWB0UFKQffvhBx48flyT98ccf2r17txo0aCBJOnPmjMLDwxUSEmK+Jk+ePKpevbr27NmThmEDAAAAAAAAADxJqoYBef755xUdHa0WLVrI4XAoMTFRr776qh5//HFJUnh4uCSpYMGCbq8rWLCgLly4kEYhAwAAAAAAAAA8TaqK1Rs2bNDatWv1/vvvq0KFCjp48KBCQ0NVuHBhtW3bNr1iBAAAAAAAAAB4uFQNAzJu3Dg9//zzatWqlfz9/fXkk0+qR48emj59uiTJz89PkhQREeH2uoiICBUqVCiNQgYAAAAA4P63aNEitWnTRjVq1FCNGjXUsWNHbd++3Xw+NjZWI0aMUN26dRUUFKT+/ftz1TIAwKOlqlh97do12Ww2tzaHwyHDMCRJJUqUkJ+fn3bu3Gk+Hx0drV9//VVBQUFpEC4AAAAAAJ6hSJEiGjRokFauXKkVK1booYce0ssvv6zDhw9LkkaPHq2tW7dqwoQJmj9/vs6fP69+/fpZHDUAAOknVcOANG7cWB9//LGKFStmDgMye/ZstW/fXpJks9nUvXt3TZs2TaVLl1aJEiU0ceJEFS5cWM2aNUuXDQBw/8mWLZueeuopcxoAAKuRmwBYoUmTJm6PX331VS1evFh79+5VkSJFtGLFCo0fP17BwcGSrhevW7Zsqb179yowMNCCiAFrka8Bz5eqT/Z//vMfTZw4USNGjFBERIQKFy6sjh076uWXXzbn6dOnj65evaq33npLkZGRqlmzpmbOnCkfH580Dx7A/clut6tKlSpWhwEAgIncBMBqiYmJ2rhxo2JiYhQUFKQDBw4oPj5eISEh5jzly5dXsWLFKFYjyyJfA54vVcXq3Llz680339Sbb75503lsNpsGDhyogQMH3nNwAHA7iS5DDrvt9jN66PoBIKNl9Pce37MAPN2hQ4fUqVMnxcbGKmfOnJo6dap5JbOXl5fy5s3rNn/BggUVHh5uUbQAspqM+i3Gbz4k4ZoJABnO5XLp4MGDkqRKlSrJbk/V8PluHHabBi7ZoyPno9MqvDtWoXBuTezEePwAspaM/N7NyO/ZtMxNAJAaZcuW1erVqxUVFaVNmzZp8ODBWrBggdVhAZkS+TrjZcRvP46tcSOK1QAyXEJCgpYvXy5JGjp0qLy9ve9peUfOR+u3sMi0CA0AcAc88Xs3rXMTANwpb29vlS5dWpIUEBCg/fv3a968eWrRooXi4+MVGRnp1rs6IiJCfn5+VoULWIp8bQ1P/O2HzItTUAAAAAAAZBIul0txcXEKCAiQl5eXdu7caT537NgxhYWFMV41AMBj0bMaAAAAAAALvP/++2rQoIGKFi2qK1euaN26ddq1a5dmzZqlPHnyqH379hozZox8fX2VO3dujRo1SkFBQRSrAQAei2I1AAAAAAAWiIiI0ODBg3X+/HnlyZNH/v7+mjVrlurVqydJGjZsmOx2uwYMGKC4uDjVr19fw4cPtzhqAADSD8VqAAAAAAAsMHr06Fs+7+Pjo+HDh1OgBgBkGYxZDQAAAAAAAACwHMVqAAAAAAAAAIDlGAYEQIZzOBx64oknzGkAAKxGbgIAIPMjXwOej2I1gAzncDi4gzkAIFMhNwEAkPmRrwHPxzAgAAAAAAAAAADL0bMaQIZzuVw6cuSIJKlChQqy2zlvBgCwFrkJAIDMj3wNeD4+1QAyXEJCghYvXqzFixcrISHB6nAAACA3AQBwHyBfA56PYjUAAAAAAAAAwHIUqwEAAAAAAAAAlqNYDQAAAAAAAACwHMVqAAAAAAAAAIDlKFYDAAAAAAAAACxHsRoAAAAAAAAAYLlsVgcAIOtxOBxq0aKFOQ0AgNXITQAAZH7ka8DzUawGkOEcDofq1KljdRgAAJjITQAAZH7ka8DzMQwIAAAAAAAAAMBy9KwGkOFcLpdOnTolSSpVqpTsds6bAQCsRW4CACDzI18Dno9PNYAMl5CQoLlz52ru3LlKSEiwOhwAAMhNAADcB8jXgOejWA0AAAAAAAAAsBzFagAAAAAAAACA5ShWAwAAAAAAAAAsR7EaAAAAAAAAAGA5itUAAAAAAAAAAMtRrAYAAAAAAAAAWC6b1QEAyHocDoeaNWtmTgMAYDVyEwAAmR/5GvB8FKsBZDiHw6F69epZHQYAACZyEwAAmR/5GvB8DAMCAAAAAAAAALAcPasBZDiXy6W//vpLklS0aFHZ7Zw3AwBYi9wEAEDmR74GPB+fagAZLiEhQTNnztTMmTOVkJBgdTgAAJCbAAC4D5CvAc9HsRoAAAAAAAAAYDmK1QAAAAAAAAAAy1GsBgAAAAAAAABYjmI1AAAAAAAAAMByFKsBAAAAAAAAAJajWA0AAAAAAAAAsFw2qwMAkPU4HA41bNjQnAYAwGrkJgAAMj/yNeD5KFYDyHAOh0ONGjWyOgzAY02fPl2bN2/WsWPHlD17dgUFBWnQoEEqV66cOU+3bt20a9cut9d17NhRI0eOzOhwgUyB3AQAQOZHvgY8H8VqAAA8zK5du9S1a1dVrVpViYmJ+uCDD9SrVy+tX79eOXPmNOfr0KGDBgwYYD7OkSOHFeECAAB4jESXIYfd5jHrAYCMRrEaQIYzDEPh4eGSJD8/P9ls/MgC0tKsWbPcHo8ZM0bBwcH67bffVLt2bbM9e/bs8vPzy+jwgEyJ3AQASAsOu00Dl+zRkfPR6baOCoVza2KnoHRbfmZGvgY8X6qK1U2aNNHZs2eTtXfp0kXDhw9XbGysxowZoy+++EJxcXGqX7++hg8frkKFCqVZwADuf/Hx8Zo2bZokaejQofL29rY4IsCzRUVFSZJ8fX3d2teuXas1a9bIz89PjRs31ksvvUTvamRZ5CYAQFo5cj5av4VFWh2GRyJfA54vVcXq5cuXKzEx0Xx8+PBhPfvss3rsscckSaNHj9b27ds1YcIE5cmTR++884769eunJUuWpG3UAADgjrhcLo0ePVo1atSQ0+k021u3bq1ixYqpcOHCOnTokMaPH6/jx49rypQpFkYLAAAAAMjKUlWsLlCggNvjTz75RKVKlVKdOnUUFRWlFStWaPz48QoODpZ0vXjdsmVL7d27V4GBgWkWNAAAuDMjRozQ4cOHtWjRIrf2jh07mtP+/v7y8/NTz549derUKZUqVSqjwwQAAAAAQPa7fWFcXJzWrFmj9u3by2az6cCBA4qPj1dISIg5T/ny5VWsWDHt3bs3LWIFAACpMHLkSG3btk1z585VkSJFbjlv9erVJUknT57MiNAAAAAAAEjmrm+wuGXLFkVFRalt27aSpAsXLsjLy0t58+Z1m69gwYLm4PcAACD9GYahd955R19++aXmz5+vkiVL3vY1Bw8elCRuuAgAAAAAsMxdF6tXrFihBg0a6IEHHkjLeAAAwD0aMWKE1q1bp48++ki5cuUyTxrnyZNH2bNn16lTp7R27Vo1bNhQ+fLl06FDhxQaGqratWurYsWKFkcPAAAAAMiq7qpYffbsWX3//feaPHmy2VaoUCHFx8crMjLSrXd1REQEvbQAAMhAixcvliR169bNrT00NFTt2rWTl5eXdu7cqXnz5ikmJkZFixbVo48+qpdeesmKcAEAAAAAkHSXxeqVK1eqYMGCatSokdkWEBBgHvw2b95cknTs2DGFhYVxc0UAbhwOh3kjVofDYXE0gOc5dOjQLZ8vWrSoFixYkEHRAPcHchMAAJkf+RrwfKkuVrtcLq1cuVJPPvmksmX738vz5Mmj9u3ba8yYMfL19VXu3Lk1atQoBQUFUawG4MbhcOjRRx+1OgwAAEzkJgAAMj/yNeD5Ul2s/v777xUWFqb27dsne27YsGGy2+0aMGCA4uLiVL9+fQ0fPjxNAgUAAAAAAAAAeK5UF6vr169/08uLfXx8NHz4cArUAG7JMAxdvnxZkuTr6yubzWZxRACArI7cBABA5ke+Bjyf3eoAAGQ98fHxmjhxoiZOnKj4+HirwwEAgNwEAMB9gHwNeD6K1QAAAAAAAAAAy1GsBgAAAAAAAABYjmI1AAAAAAAAAMByFKsBAAAAAAAAAJajWA0AAAAAAAAAsBzFagAAAAAAAACA5bJZHQCArMdut6tWrVrmNAAAViM3AQCQ+ZGvAc9HsRpAhsuWLZtatWpldRgAAJjITQAAZH7ka8DzcRoKAAAAAAAAAGA5elYDyHCGYSgmJkaSlDNnTtlsNosjAgBkdeQmAAAyP/I14PnoWQ0gw8XHx2v8+PEaP3684uPjrQ4HAAByEwAA9wHyNeD56FkNAAAAAIAFpk+frs2bN+vYsWPKnj27goKCNGjQIJUrV86cp1u3btq1a5fb6zp27KiRI0dmdLgAAKQ7itUAAAAAAFhg165d6tq1q6pWrarExER98MEH6tWrl9avX6+cOXOa83Xo0EEDBgwwH+fIkcOKcAEASHcUqwEAAAAAsMCsWbPcHo8ZM0bBwcH67bffVLt2bbM9e/bs8vPzy+jwAADIcIxZDQAAAABAJhAVFSVJ8vX1dWtfu3at6tatq9atW+v999/X1atXrQgPAIB0R89qAAAAAAAs5nK5NHr0aNWoUUNOp9Nsb926tYoVK6bChQvr0KFDGj9+vI4fP64pU6ZYGC0AAOmDYjUAAAAAABYbMWKEDh8+rEWLFrm1d+zY0Zz29/eXn5+fevbsqVOnTqlUqVIZHSYAAOmKYjWADGe321W9enVzGgAAq5GbAFhp5MiR2rZtmxYsWKAiRYrcct6k76qTJ09SrEaWQ74GPB/FagAZLlu2bHryySetDgMAABO5CYAVDMPQO++8oy+//FLz589XyZIlb/uagwcPShI3XESWRL4GPB/FagAAAAAALDBixAitW7dOH330kXLlyqXw8HBJUp48eZQ9e3adOnVKa9euVcOGDZUvXz4dOnRIoaGhql27tipWrGhx9AAApD2K1QAynGEYio+PlyR5eXnJZrNZHBEAIKsjNwGwwuLFiyVJ3bp1c2sPDQ1Vu3bt5OXlpZ07d2revHmKiYlR0aJF9eijj+qll16yIlzAcuRrwPNRrAaQ4eLj4xUaGipJGjp0qLy9vS2OCACQ1ZGb0l6iy5DDnjFFhIxcF5CWDh06dMvnixYtqgULFmRQNEDmR74GPB/FagAAAABpzmG3aeCSPTpyPjpd11OhcG5N7BSUrusAAABAxqBYDQAAACBdHDkfrd/CIq0OAwAAAPcJu9UBAAAAAAAAAABAsRoAAAAAAAAAYDmK1QAAAAAAAAAAy1GsBgAAAAAAAABYjhssAshwdrtdlStXNqcBALAauQkAgMyPfA14PorVADJctmzZ9PTTT1sdBgAAJnITAACZH/ka8HychgIAAAAAAEAyiS7Do9YDIPOjZzUAAAAAAACScdhtGrhkj46cj063dVQonFsTOwWl2/IB3F8oVgPIcHFxcQoNDZUkDR06VN7e3hZHBADI6shNAACk7Mj5aP0WFml1GJLI10BWwDAgAAAAAAAAAADLUawGAAAAAAAAAFiOYjUAAAAAAAAAwHIUqwEAAAAAAAAAlqNYDQAAAAAAAACwHMVqAAAAAAAAAIDlslkdAICsx26368EHHzSnAQCwGrkJAIDMj3wNeD6K1QAyXLZs2dSlSxerwwAAwERuAgAg8yNfA56P01AAAAAAAAAAAMtRrAYAAAAAAAAAWI5hQABkuLi4OI0fP16SNGjQIHl7e1scEQAgqyM3AQCQ+ZGvAc+X6p7V586d06BBg1S3bl1Vq1ZNbdq00f79+83nDcPQxIkTVb9+fVWrVk09e/bUiRMn0jJmAB4gPj5e8fHxVocBAICJ3AQAQOZHvgY8W6qK1ZcvX1bnzp3l5eWlGTNmaP369Ro8eLB8fX3NeWbMmKH58+fr7bff1rJly5QjRw716tVLsbGxaR48AAAAAAAA7l9+uX2U6DIyZF0ZtR4Ady9Vw4DMmDFDRYoUUWhoqNlWsmRJc9owDM2bN099+/ZVs2bNJEnjxo1TSEiItmzZolatWqVR2AAAAAAAALjf5c2RTQ67TQOX7NGR89Fmu0/sVa38/9PtPvpOsT45ZDcSVev/t7Wf9r1cNscdr6dC4dya2Cko7QIHkC5SVaz++uuvVb9+fQ0YMEA//fSTHnjgAXXp0kUdOnSQJJ05c0bh4eEKCQkxX5MnTx5Vr15de/bsoVgNAAAAAACAZI6cj9ZvYZHm4xxx18zpg39F6ap3vLIpUbVyJLVFKkF3XqwGcH9I1TAgp0+f1uLFi1WmTBnNmjVLnTt31qhRo7Rq1SpJUnh4uCSpYMGCbq8rWLCgLly4kEYhAwAAAAAAAAA8Tap6VhuGoYCAAL322muSpMqVK+vw4cNasmSJ2rZtmy4BAgAAAAAAAAA8X6p6Vvv5+al8+fJubeXKlVNYWJj5vCRFRES4zRMREaFChQrdS5wAPIjNZlPp0qVVunRp2Ww2q8MBAIDcBADAfcCQTX8l5tZfiblliHwNeKJU9ayuUaOGjh8/7tZ24sQJFS9eXJJUokQJ+fn5aefOnapUqZIkKTo6Wr/++qs6d+6cRiEDuN95eXmpZ8+eVocBAICJ3AQAQOaXKLs2xlW0OgwA6ShVPat79OihX3/9VR9//LFOnjyptWvXatmyZerSpYuk6z1SunfvrmnTpumrr77SoUOH9MYbb6hw4cJq1qxZumwAAAAAAAAAAOD+l6qe1dWqVdOUKVP0wQcfaOrUqSpRooSGDRumxx9/3JynT58+unr1qt566y1FRkaqZs2amjlzpnx8fNI8eAAAAAAAAACAZ0hVsVqSGjdurMaNG9/0eZvNpoEDB2rgwIH3FBgAzxUXF6eJEydKkgYOHChvb2+LIwIAZHXkJgAAMr9sStTT2fdLkj67VlUJclgcEYC0lupiNQCkhZiYGKtDAADADbkJAIDML7stweoQAKSjVI1ZDQAAAAAAAABAeqBYDQAAAAAAAACwHMVqAAAAAAAAAIDlKFYDAAAAAAAAACxHsRoAAAAAAAAAYLlsVgcAIOux2WwqVqyYOQ0AgNXITQAAZH6GbAp35TSnAXgeitUAMpyXl5f69OljdRgAAJjITQAAZH6JsmtdbGWrwwCQjhgGBAAAAAAAAABgOYrVAAB4mOnTp6t9+/YKCgpScHCwXnrpJR07dsxtntjYWI0YMUJ169ZVUFCQ+vfvrwsXLlgUMQAAAAAAFKsBWCA+Pl4TJkzQhAkTFB8fb3U4gMfZtWuXunbtqmXLlmn27NlKSEhQr169FBMTY84zevRobd26VRMmTND8+fN1/vx59evXz8KoAWuRmwAAyPwcStRTPvv0lM8+OZRodTgA0gFjVgPIcIZh6PLly+Y0gLQ1a9Yst8djxoxRcHCwfvvtN9WuXVtRUVFasWKFxo8fr+DgYEnXi9ctW7bU3r17FRgYaEHUgLXITQAAZH42SXnsceY0AM9Dz2oAADxcVFSUJMnX11eSdODAAcXHxyskJMScp3z58ipWrJj27t1rRYgAAAAAAFCsBgDAk7lcLo0ePVo1atSQ0+mUJF24cEFeXl7Kmzev27wFCxZUeHi4FWECAAAAAMAwIAAAeLIRI0bo8OHDWrRokdWhAAAAAABwS/SsBgDAQ40cOVLbtm3T3LlzVaRIEbO9UKFCio+PV2RkpNv8ERER8vPzy+gwAQAAAACQRLEaAACPYxiGRo4cqS+//FJz585VyZIl3Z4PCAiQl5eXdu7cabYdO3ZMYWFh3FwRAAAAAGAZhgEBkOFsNpvZe9Nm4x7OQFobMWKE1q1bp48++ki5cuUyx6HOkyePsmfPrjx58qh9+/YaM2aMfH19lTt3bo0aNUpBQUEUq5FlkZsAAMj8DEn/uLKb0wA8D8VqABnOy8tLL730ktVhAB5r8eLFkqRu3bq5tYeGhqpdu3aSpGHDhslut2vAgAGKi4tT/fr1NXz48AyPFcgsyE0AAGR+iXJodWyA1WEASEcUqwEA8DCHDh267Tw+Pj4aPnw4BWoAAAAAQKbBmNUAAAAAAAAAAMvRsxpAhouPj9eMGTMkSX369JGXl5fFEQEAsjpyEwAAmZ9DiWrjc1CStDa2khLlsDgiAGmNYjWADGcYhnnDN8PgthgAAOuRmwAAyPxskvLbr5nTADwPw4AAAAAAAAAAACxHsRoAAAAAAAAAYDmK1QAAAAAAAAAAy1GsBgAAAAAAAABYjmI1AAAAAAAAAMBy2awOAEDWY7PZ5Ovra04DAGA1chMAAJmfISnK5W1OA/A8FKsBZDgvLy+98sorVocBAICJ3AQAQOaXKIeWx1azOgwA6YhhQAAAAAAAsMD06dPVvn17BQUFKTg4WC+99JKOHTvmNk9sbKxGjBihunXrKigoSP3799eFCxcsihgAgPRFsRoAAAAAAAvs2rVLXbt21bJlyzR79mwlJCSoV69eiomJMecZPXq0tm7dqgkTJmj+/Pk6f/68+vXrZ2HUAACkH4YBAZDh4uPjNWfOHElSz5495eXlZW1AAIAsj9wEwAqzZs1yezxmzBgFBwfrt99+U+3atRUVFaUVK1Zo/PjxCg4OlnS9eN2yZUvt3btXgYGBFkQNWMchl1r4/CFJ2hBbUYn0wQQ8DsVqABnOMAyFhYWZ0wAAWI3cBCAziIqKkiTzhq8HDhxQfHy8QkJCzHnKly+vYsWKUaxGlmSTIT97jDkNwPNwCgoAAAAAAIu5XC6NHj1aNWrUkNPplCRduHBBXl5eyps3r9u8BQsWVHh4uBVhIhPwy+2jRBeFWgCeiZ7VAAAAAABYbMSIETp8+LAWLVpkdSjI5PLmyCaH3aaBS/boyPnodFtPI38/vd68YrotHwBSQrEaAAAAAAALjRw5Utu2bdOCBQtUpEgRs71QoUKKj49XZGSkW+/qiIgI+fn5WREqMpEj56P1W1hkui2/vF+udFs2ANwMw4AAAAAAAGABwzA0cuRIffnll5o7d65Klizp9nxAQIC8vLy0c+dOs+3YsWMKCwtjvGoAgEeiZzUAAAAAABYYMWKE1q1bp48++ki5cuUyx6HOkyePsmfPrjx58qh9+/YaM2aMfH19lTt3bo0aNUpBQUEUqwEAHoliNQBL5MyZ0+oQAABwQ24CkNEWL14sSerWrZtbe2hoqNq1aydJGjZsmOx2uwYMGKC4uDjVr19fw4cPz/BYgczimkEpC/BkfMIBZDhvb2+9/vrrVocBAICJ3ATACocOHbrtPD4+Pho+fDgFakBSghxafC3Q6jAApCPGrAYAAAAAAAAAWI5iNQAAAAAAAADAcgwDAiDDxcfHa+HChZKkrl27ysvLy+KIAABZHbkJAIDMzyGXHvH+U5L0ZZxTifTBBDxOqorVkydP1pQpU9zaypYtq40bN0qSYmNjNWbMGH3xxRduN34oVKhQ2kUM4L5nGIZOnjxpTgMAkBK/3D5KdBly2G3pvi5yEwAAmZ9Nhoo6os1pAJ4n1T2rH3zwQc2ePdt87HA4zOnRo0dr+/btmjBhgvLkyaN33nlH/fr105IlS9ImWgAAAGQZeXNkk8Nu08Ale3TkfHSaLdcn9qpW/v/pdh99p1ifHLIbiaqVZmsAAAAAcDdSXax2OBzy8/NL1h4VFaUVK1Zo/PjxCg4OlnS9eN2yZUvt3btXgYGB9xwsAAAAsp4j56P1W1hkmi0vR9w1c/rgX1G66h2vbEpUrRxptgoAAAAAdyHVg/ucPHlS9evXV9OmTfV///d/CgsLkyQdOHBA8fHxCgkJMectX768ihUrpr1796ZZwAAAAAAAAAAAz5OqntXVqlVTaGioypYtq/DwcE2dOlVdu3bV2rVrdeHCBXl5eSlv3rxurylYsKDCw8PTNGgAAAAAAAAAgGdJVbG6YcOG5nTFihVVvXp1NW7cWBs2bFD27NnTPDgAAAAAAAAAQNaQ6mFAbpQ3b16VKVNGp06dUqFChRQfH6/ISPfxBCMiIlIc4xpA1ubl5SUvLy+rwwAAwJQoO7kJAIBMLt6wK964p3IWgEws1TdYvNGVK1d0+vRp+fn5KSAgQF5eXtq5c6eaN28uSTp27JjCwsK4uSIAN97e3ho2bJjVYQAAYEqQQ7vzN9L6AQ9bHQoAALiJBDm04FoNq8MAkI5SVaweO3asGjdurGLFiun8+fOaPHmy7Ha7WrdurTx58qh9+/YaM2aMfH19lTt3bo0aNUpBQUEUqwEAAAAAAAAAt5SqYvXff/+t1157TZcuXVKBAgVUs2ZNLVu2TAUKFJAkDRs2THa7XQMGDFBcXJzq16+v4cOHp0vgAAAAAAAAAADPkapi9YcffnjL5318fDR8+HAK1ABuKSEhQcuWLZMkdejQQdmy3dOIRAAA3DOHXHJG/apFi06TmwAAyKQccqmx91FJ0ta48kq8t1uxAciE+BUOIMO5XC4dPnzYnAYAwGo2GcqXEKHDhyPITQAAZFI2GSrpuGxOA/A8nIICAAAAAAAAAFiOYjUAAAAAAAAAwHIUqwEAAAAAAAAAlqNYDQAAAAAAAACwHMVqAAAAAAAAAIDlKFYDAAAAAAAAACyXzeoAAGQ93t7eGj58uNVhAABgSpBDu/I30foBD1sdCgAAuIkEOTT7ai2rwwCQjuhZDQAAAAAAAACwHMVqAAAAAAAAAIDlKFYDyHAJCQn67LPP9NlnnykhIcHqcAAAkEMuVYjeT24CACATc8ilRt5H1cj7qBxyWR0OgHRAsRpAhnO5XPr999/1+++/y+XiBwYAwHo2GSoQH05uAgAgE7PJUFnHPyrr+Ec2GVaHAyAdUKwGAAAAAAAAAFiOYjUAAAAAAAAAwHIUqwEAAAAAAAAAlqNYDQAAAAAAAACwHMVqAAAAAAAAAIDlKFYDAAAAAAAAACyXzeoAAGQ9Xl5eGjp0qDkNAIDVEmTXz/kaakXfEHITAACZVILsmn81yJwG4HkoVgPIcDabTd7e3laHAQDADWxy2RzkJwAAMjWbEuSwOggA6YjTUAAAAAAAAAAAy1GsBpDhEhIStHr1aq1evVoJCQlWhwMAgOxyqVLsIa1alXG5KdFlZMh6AADwFHa5VN/ruOp7HZddLqvDAZAOGAYEQIZzuVz69ddfJUktW7a0OBoAACS7DOWJOat9+85q29XiOnLhWrqur0Lh3JrYKShd1wEAgKexy9CD2SIkST/El6JcDXggitUAAADADY6FX9Fvf12xOgwAAAAgy2EYEAAAAAAAAACA5ShWAwAAAAAAAAAsR7EaAAAAAAAAAGA5itUAAAAAAAAAAMtRrAYAAAAAAAAAWC6b1QEAyHq8vLw0aNAgcxoAAKslyK6L5R7V6HbV1GHmbqvDAQAAKUiQXYuuVjenAXgeitUAMpzNZlOuXLmsDgMAgBvYZGTzuZ6fbDargwEAACmyKVZ0eAI8GaehAAAAAAAAAACWo1gNIMMlJCRo/fr1Wr9+vRISEqwOB/BIP/30k1588UXVr19f/v7+2rJli9vzQ4YMkb+/v9u/Xr16WRQtYD27XMp1br/Wr18vm+GyOhwAAJACu1x6yOukHvI6KbvI14AnYhgQABnO5XLp559/liQ98sgjFkcDeKaYmBj5+/urffv26tevX4rzPPzwwwoNDTUfe3t7Z1R4QKZjl6Hsl0/o559PyJavodXhAACAFNhlqFK2cEnSz/ElKFcDHohiNQAAHqhhw4Zq2PDWBTdvb2/5+fllUEQAAAAAANwaxWoAALKoXbt2KTg4WHnz5tVDDz2kV155Rfnz57c6LAAAAABAFkWxGgCALOjhhx/WI488ohIlSuj06dP64IMP1KdPHy1dulQOh8Pq8AAAAAAAWRDFagAAsqBWrVqZ00k3WGzWrJnZ2xoAAAAAgIxmtzoAAABgvZIlSyp//vw6efKk1aEAAAAAALIoitUAAEB///23Ll26xA0XAQAAAACWYRgQABnOy8tLAwcONKcBpL0rV67o1KlT5uMzZ87o4MGD8vX1la+vr6ZMmaLmzZurUKFCOn36tN577z2VLl1aDz/8sIVRA9ZJkF3/lG2qtx8PUNe5+6wOBwAApCBBdn12rao5DcDzUKwGkOFsNpvy5ctndRiARztw4IC6d+9uPg4NDZUktW3bVm+//bb+/PNPrV69WlFRUSpcuLDq1aungQMHytvb26qQAYvZ5PLKeT0/2WxWBwMAAFJkU7ThY3UQANIRxWoAADxQ3bp1dejQoZs+P2vWrAyMBgAAAACA26NYDSDDJSYm6quvvpIkNW3aVA6Hw+KIAABZnV0u5Qz/XZs3X5CNHlsAAGRKdrlUI9tZSdIvCcXlYigQwOPwqQaQ4RITE7Vz507t3LlTiYmJVocDAIDsMpTjn6PauXOnbDKsDgcAAKTALkNVvc6pqtc52cnXgEe6p2L1J598In9/f7377rtmW2xsrEaMGKG6desqKChI/fv314ULF+45UAAAAAAAAACA57rrYvW+ffu0ZMkS+fv7u7WPHj1aW7du1YQJEzR//nydP39e/fr1u+dAAQAAAAAAAACe666K1VeuXNHrr7+uUaNGydfX12yPiorSihUrNGTIEAUHBysgIECjR4/Wnj17tHfv3rSKGQAAAAAAAADgYe6qWD1y5Eg1bNhQISEhbu0HDhxQfHy8W3v58uVVrFgxitUAAAAAANzgp59+0osvvqj69evL399fW7ZscXt+yJAh8vf3d/vXq1cvi6IFACD9ZUvtC9avX6/ff/9dy5cvT/bchQsX5OXlpbx587q1FyxYUOHh4XcfJQAAAAAAHiYmJkb+/v5q3779TYfPfPjhhxUaGmo+9vb2zqjwAADIcKkqVv/1119699139emnn8rHxye9YgIAAAAAwOM1bNhQDRs2vOU83t7e8vPzy6CIAACwVqqK1b/99psiIiLUrl07sy0xMVE//fSTFi5cqFmzZik+Pl6RkZFuvasjIiJIrgBMXl5e6tu3rzkNAIDVEmTXpdKNNLRlJT27+A+rwwEA065duxQcHKy8efPqoYce0iuvvKL8+fNbHRZgiQTZtepaFXMagOdJVbH6oYce0tq1a93ahg4dqnLlyqlPnz4qWrSovLy8tHPnTjVv3lySdOzYMYWFhSkwMDDNggZwf7PZbCpcuLDVYQAAcAObEn3yXM9PtkNWBwMAkq4PAfLII4+oRIkSOn36tD744AP16dNHS5culcPhsDo8wAI2XTJyWB0EgHSUqmJ17ty55XQ63dpy5sypfPnyme3t27fXmDFj5Ovrq9y5c2vUqFEKCgqiWA0AAAAAQCq0atXKnE66wWKzZs3M3tYAAHiaVN9g8XaGDRsmu92uAQMGKC4uTvXr19fw4cPTejUA7mOJiYnasWOHpOu9RegVAgCwml0u5bhwSNu2Rcpm2KwOBwBSVLJkSeXPn18nT56kWI0syS6XqmX7S5K0L6GoXAwFAnicey5Wz58/3+2xj4+Phg8fToEawE0lJiZq+/btkqSQkBCK1QAAy9llKOfFP7V9+5+y5bv1zc4AwCp///23Ll26xD2hkGXZZSjI63qx+kBCEbksjgdA2kvzntUAAAAAAOD2rly5olOnTpmPz5w5o4MHD8rX11e+vr6aMmWKmjdvrkKFCun06dN67733VLp0aT388MMWRg0AQPqhWA0AAAAAgAUOHDig7t27m49DQ0MlSW3bttXbb7+tP//8U6tXr1ZUVJQKFy6sevXqaeDAgfL29rYqZAAA0hXFagAAAAAALFC3bl0dOnTops/PmjUrA6MBAMB6jEQPAAAAAAAAALAcxWoAAAAAAAAAgOUoVgMAAAAAAAAALMeY1QAyXLZs2dS7d29zGgAAqyXKrkulHtagR/21a/lRq8MBAAApSJRda69VMqcBeB6qRAAynN1uV/Hixa0OAwAAkyGbErPnu56fbMesDgcAAKTAkE0XjFxWhwEgHXEaCgAAAAAAAABgOXpWA8hwiYmJ+uGHHyRJDz30kBwOh8URAQCyOrtcyn7xiL777qpshsvqcAAAQArscqlytvOSpN8TCstFH0zA41CsBpDhEhMTtWXLFklS7dq1KVYDACxnl6FcFw5qy5aDsuVraHU4AAAgBXYZqu11RpL0R4KfOL0MeB5OQQEAAAAAAAAALEexGgAAAAAAAABgOYrVAAAAAAAAAADLUawGAAAAAAAAAFiOYjUAAAAAAAAAwHIUqwEAAAAAAAAAlstmdQAAsp5s2bKpR48e5jQAAFZLlF2XSwRrQFOndn1+yupwAABAChJl14ZYpzkNwPNQJQKQ4ex2u8qUKWN1GAAAmAzZlJCz0PX8ZDttdTgAACAFhmz625XX6jAApCNOQwEAAAAAAAAALEfPagAZLjExUbt375Yk1axZUw6Hw+KIAABZnU0u+Vw6rl27EmQzXFaHAwAAUmCTS/6OC5KkQ4mFZNAHE/A4FKsBZLjExERt2LBBkhQYGEixGgBgOYcM5T5/QBs2HJAtX0OrwwEAAClwyFCw9/V7Sxy5WlAJFscDIO1xCgoAAAAAAAAAYDmK1QAAAAAAAAAAy1GsBgAAAAAAAABYjmI1AAAAAAAAAMByFKsBAAAAAACA+0iiy7A6BCBdZLM6AAAAAAAAAAB3zmG3aeCSPTpyPjrd1tHI30+vN6+YbssHUkKxGkCGy5Ytmzp37mxOAwBgtUTZFVmsjl5oWF67NvxldTjpItFlyGG3WR0GAAB3LVF2fRlbwZzO6o6cj9ZvYZHptvzyfrnSbdnAzVAlApDh7Ha7nE6n1WEAAGAyZFN87geu56eN56wOJ11kRA+sJPTEAgCkB0M2nXHlszoMAOmIYjUAAACQRaR3D6wk9MQCAADA3aBYDSDDJSYmav/+/ZKkqlWryuFwWBwRACCrs8kln8untXevXTbDZXU4AAAgBTa5VN5xUZJ0NLGADIYCATwOxWoAGS4xMVGff/65JKly5coUqwEAlnPIUO5ze/X553tly9fQ6nAAAEAKHDL0sPcJSdKJq/mVYG04ANIBp6AAAAAAAAAAAJajWA0AAAAAAAAAsBzFagAAAAAAAACA5ShWAwAAAAAAAAAsR7EaAAAAAAAAAGA5itUAAAAAAAAAAMtlszoAAFlPtmzZ9NRTT5nTAABYLVF2RRWtqWfrldWuLResDgcAAKQgUXZtjS1nTgPwPFSJAGQ4u92uKlWqWB0GAAAmQzbF5Sl6PT99tcPqcAAAQAoM2XTCVcDqMACkI05DAQAAAAAAAAAsR89qABnO5XLp4MGDkqRKlSrJbue8GQDAWjYZ8o4K02+/+UiGy+pwAABACmwyVNr+jyTppCu/DNksjghAWqNCBCDDJSQkaPny5Vq+fLkSEhKsDgcAADnkUp6/dmv58uWyy7A6HAAAkAKHXGrsc0yNfY7JIU4uA56IYjUAAAAAAAAAwHKpKlYvWrRIbdq0UY0aNVSjRg117NhR27dvN5+PjY3ViBEjVLduXQUFBal///66cIG7qQMAAAAAAAAAbi1VxeoiRYpo0KBBWrlypVasWKGHHnpIL7/8sg4fPixJGj16tLZu3aoJEyZo/vz5On/+vPr165cugQMAAAAAAAAAPEeqbrDYpEkTt8evvvqqFi9erL1796pIkSJasWKFxo8fr+DgYEnXi9ctW7bU3r17FRgYmGZBAwAAAAAAAAA8y12PWZ2YmKj169crJiZGQUFBOnDggOLj4xUSEmLOU758eRUrVkx79+5Ni1gBAAAAAAAAAB4qVT2rJenQoUPq1KmTYmNjlTNnTk2dOlUVKlTQwYMH5eXlpbx587rNX7BgQYWHh6dZwAAAAAAAAAAAz5PqYnXZsmW1evVqRUVFadOmTRo8eLAWLFiQHrEB8FAOh0NPPPGEOQ0AgNUSZVP0A4Hq+lBp/bT9stXhAACAFCTKph1xZcxpAJ4n1cVqb29vlS5dWpIUEBCg/fv3a968eWrRooXi4+MVGRnp1rs6IiJCfn5+aRcxgPuew+FgHHsAQKZiyK5Y3+IKDAyU8c0Oq8MBAAApMGTXkcRCVocBIB3d9ZjVSVwul+Li4hQQECAvLy/t3LnTfO7YsWMKCwujKAUAAAAAAAAAuKVU9ax+//331aBBAxUtWlRXrlzRunXrtGvXLs2aNUt58uRR+/btNWbMGPn6+ip37twaNWqUgoKCKFYDcONyuXTkyBFJUoUKFWS33/N5MwAA7olNhryiz+nPP/+UDJfV4QAAgBTYZKi4/fpwXWddvjIYCgTwOKkqVkdERGjw4ME6f/688uTJI39/f82aNUv16tWTJA0bNkx2u10DBgxQXFyc6tevr+HDh6dL4ADuXwkJCVq8eLEkaejQofL29rY4IgBAVueQS3nDdmvx4l2y52todTgAACAFDrn0iM/1jk/zrwYpQdwDCfA0qSpWjx49+pbP+/j4aPjw4RSoAQCw2E8//aRZs2bpwIEDCg8P19SpU9WsWTPzecMwNGnSJH322WeKjIxUjRo19Pbbb6tMmTLWBQ0AAAAAyNK49h4AAA8UExMjf3//m55AnjFjhubPn6+3335by5YtU44cOdSrVy/FxsZmcKQAAAAAAFyXqp7VAADg/tCwYUM1bJjyUAaGYWjevHnq27ev2dt63LhxCgkJ0ZYtW9SqVauMDBUAAAAAAEn0rAYAIMs5c+aMwsPDFRISYrblyZNH1atX1549eyyMDAAAAACQlVGsBgAgiwkPD5ckFSxY0K29YMGCunDhghUh4R4lugyrQ0Aq+eX24e8GAAAA/AvDgAC4a4kuQw67zeowACDLc9htGrhkj46cj07X9TTy99PrzSum6zqyirw5smXY303ibwcAAID7A8VqAHftbg+ybYZLfjmckqR203bKsN3dRR4ceAN3x8/PT5IUERGhwoULm+0RERGqWJHP1P3qyPlo/RYWma7rKO+XK12Xb6VE2RRdOEBP1yypn3ZezbD1ZsTfTfLsvx0AIOtIlE0740qZ0wA8D8VqAPfk7g+y8/7//+++NxkH3sDdKVGihPz8/LRz505VqlRJkhQdHa1ff/1VnTt3tjg6wBqG7IrNV1Z16tSQ8cMOq8MBAAApMGTXH4mFbz8jgPsWxWoAADzQlStXdOrUKfPxmTNndPDgQfn6+qpYsWLq3r27pk2bptKlS6tEiRKaOHGiChcurGbNmlkYNQAAAAAgK6NYDSDD2WToAXuUJOmcK48MLt8C0tyBAwfUvXt383FoaKgkqW3bthozZoz69Omjq1ev6q233lJkZKRq1qypmTNnysfHx6qQAUvZZChbzAWdOHFCMrjxIQAAmRHHkoDno1gNIMM55FILnz8lSfOvBilBDosjAjxP3bp1dejQoZs+b7PZNHDgQA0cODADowIyL4dc8j2zU3Pn7pQ9X0OrwwGQRfz000+aNWuWDhw4oPDwcE2dOtXtKifDMDRp0iR99tlnioyMVI0aNfT222+rTJky1gUNWIhjScDz3d1dzQAAAAAAwD2JiYmRv7+/hg8fnuLzM2bM0Pz58/X2229r2bJlypEjh3r16qXY2NgMjhQAgIxBz2oAAAAAACzQsGFDNWyY8tUchmFo3rx56tu3r9nbety4cQoJCdGWLVvUqlWrjAwVAIAMQc9qAAAAAAAymTNnzig8PFwhISFmW548eVS9enXt2bPHwsgAAEg/FKsBAAAAAMhkwsPDJUkFCxZ0ay9YsKAuXLhgRUgAAKQ7itUAAAAAAADwaH65fZToMjJkXRm1HsATMWY1AAAAAACZjJ+fnyQpIiJChQsXNtsjIiJUsWJFq8IC7lt5c2STw27TwCV7dOR8dLqtp0Lh3JrYKSjdlg94OorVADKcSzb9FF/CnAYAwGou2XSlUCU9EVhcP/2cYHU4AKASJUrIz89PO3fuVKVKlSRJ0dHR+vXXX9W5c2eLowOskRbHkkfOR+u3sMi0DAtAGqJYDSDDuWTXgYQiVocBAIDJJbuuFaigevVqyNi9w+pwAGQRV65c0alTp8zHZ86c0cGDB+Xr66tixYqpe/fumjZtmkqXLq0SJUpo4sSJKly4sJo1a2Zh1IB1OJYEPB/FagAAAAAALHDgwAF1797dfBwaGipJatu2rcaMGaM+ffro6tWreuuttxQZGamaNWtq5syZ8vHxsSpkAADSFcVqABnOJkMFbTGSpAgjpwyGAgEAWMwmQ45rl3T27FnJ4KZIADJG3bp1dejQoZs+b7PZNHDgQA0cODADowIyL44lAc9ntzoAAFmPQy61yX5QbbIflEMuq8MBAEAOuZTv1A7NnDlTdnITAACZEseSgOejWA0AAAAAAAAAsBzFagAAAAAAAACA5ShWAwAAAAAAAAAsR7EaAAAAAAAAAGA5itUAAAAAAAAAAMtRrAYAAAAAAAAAWC6b1QEAyHpcsmlPfFFzGgAAq7lkU0wBp1pULaqffiU3AQCQGXEsCXg+elYDyHAu2bU3obj2JhSXi68hAEAm4JJdVwv5q1GjRjJs5CYAADIjjiUBz8cnGwAAAAAAAABgOYYBAWABQ/ls1yRJl4zsEpdvAQAsZ8gRG/X/2rv/ICvr+17g7z2L/JBfCizVvRgkCLtRBMHrWBFDSEnsjaZTdUhirY4dxmkSbZjEOHbSmRCMEUxMIuCPSTW1xsRQktw4g78S7URrc02gd9BEYq1cE8BL7OImCgvIwu65f+RmG8waBXbPs+fZ12vGmWefs+z38/Blz9vv55zne9LW1pZUq0UXAwD0yloSys47q4GaG5LuXDB8Uy4YvilD0l10OQCQIenOMVsey+23356KbAKAAclaEspPsxoAAAAAgMJpVgMAAAAAUDjNagAAAAAACqdZDQDQx7q6fUAfAADAoRpSdAEAAGXTWGnIkjUbs7mto9/HeldLU645t7XfxwEAAOhvmtUAAP1gc1tHNm3f2e/jTG0a2e9jAAAA1IJmNVBz3WnIT/f/Uc8xABStOw3Ze+zUvLt1YjY8K5sAYCCyloTys2c1UHPdqeTfDpyQfztwQro9DQEwAHSnkj1NJ+e9731vqg2yCQAGImtJKD+/2QAAAAAAFM42IEABqhnV0Jkk6agOTdy+BUDhqqns35NXXnklqVaLLgYA6JW1JJSdd1YDNTck3Vk0/KdZNPynGZLuossBgAxJd479+T9n5cqVqcgmABiQrCWh/DSrAQAAgNLr6nbnDP2vadQw/9bgCNgGBAAAACi9xkpDlqzZmM1tHf3y89/V0pRrzm3tl59N/RgzYoh/a3AEDqlZ/ZWvfCXf//7388ILL2T48OGZPXt2PvnJT+btb397z/fs27cvK1asyIMPPpjOzs7MmzcvS5cuzYQJE/q8eAAAAIC3anNbRzZt39kvP3tq08h++bnUJ//W4PAc0jYg69evzyWXXJK1a9fmrrvuyoEDB7J48eLs2bOn53tuuOGG/OAHP8jNN9+ce+65J21tbbnqqqv6vHAAAAAAAMrjkN5Z/dWvfvWgr1esWJGzzjormzZtyhlnnJFdu3blO9/5Tm666aacddZZSX7TvH7f+96Xp556KqeddlqfFQ4AAAAAQHkc0Qcs7tq1K0kyduzYJMkzzzyT/fv3Z+7cuT3fM3Xq1DQ3N+epp546kqEAAAAAACixw/6Axe7u7txwww2ZM2dOpk+fniR5+eWXc9RRR2XMmDEHfe/48eOzY8eOI6sUKI3uNOTZA009xwBQtO405LWxJ2betAnZsFk2AcBAZC0J5XfYzeply5bl+eefz7333tuX9QCDQHcq+dH+yUWXAQA9ulPJ7j86NeedNye3rXqi6HIAgF5YS0L5HdY2INddd10ee+yx3H333TnuuON6zk+YMCH79+/Pzp0Hf9ppe3t7mpqajqxSAAAAAABK65Ca1dVqNdddd10eeeSR3H333TnhhBMOenzGjBk56qij8uSTT/ace+GFF7J9+3Yfrgj8jmqGZX+GZX+SatHFAECSahoO7Mvu3buTqmwCgIHJWhLK7pC2AVm2bFnuv//+3HbbbRk5cmTPPtSjR4/O8OHDM3r06Fx00UVZsWJFxo4dm1GjRuX666/P7NmzNauBHkPSnb8Y8XSS5J69s3MgjQVXBMBgNyTdGffC93PTTd9P5Zj5RZcDAPTCWhLK75Ca1d/85jeTJJdeeulB55cvX54LL7wwSfKpT30qlUolH/vYx9LZ2Zl58+Zl6dKlfVQuAAAAAABldEjN6ueee+5Nv2fYsGFZunSpBjUAAAAAAG/ZYX3AIgAAAAAA9CXNagAAAAAACqdZDQAAAABA4TSrAQAAAAAo3CF9wCJAX+hOQ54/ML7nGACK1p2GvDZmUs6cMj4btsgmABiIrCWh/LyzGqi57lTyr/un5F/3T0m3pyEABoDuVLL7uNn58z//81QbZBMADETWklB+frMBAAAAACicbUCAAlQzJN1JkgOpJG7fAqBw1aT7QDo7O5NqtehiAIBeWUtC2XlnNVBzQ9KdS0dszKUjNvb8jwYAFGlIujN+80NZvnx5KrIJAAYka0koP81qAAAAAAAKp1kNAAAAAEDhNKsBAAAAACicZjUAAAAAAIXTrAYAAAAAoHCa1QAAAAAAFG5I0QUAg081Dfl517E9xwBQtGoasm/U8Zn9tmOzYXvR1QAAvbGWhPLzzmqg5rpSyWOdU/NY59R0eRoCYADoSiUdzf89ixYtSrWhsehyAIBeWEtC+fnNBgAAAACgcJrVAAAAAAAUzp7VQM0NSVcuHbExSXLP3tk5ELdbA1CsIenK+P9Yl2XL1qVyzPyiywEAemEtCeXnndUAAAAAABTOO6sBDlPTqGHp6q6msVLcp1AXPT71a/Xq1bnlllsOOjdlypQ8/PDDBVUEAADAYKdZDXCYxowYksZKQ5as2ZjNbR01H/+kiaOy8kOzaz4u5TFt2rTcddddPV83NrqNEgAAgOJoVgMcoc1tHdm0fWfRZcAha2xsTFNTU9FlAAAAQBLNagAYtLZs2ZJ58+Zl2LBhOe2003L11Venubm56LIAAAAYpDSrAWAQmjlzZpYvX54pU6Zkx44dufXWW3PJJZdk3bp1GTVqVNHlAQAAMAhpVgM1V01DtnWN7TkGam/+/Pk9x62trZk1a1YWLFiQhx56KIsWLSqwMihGNQ3pHDkxpzSPzYYdRVcDAPTGWhLKT7MaqLmuVPJo57SiywB+x5gxY3LiiSdm69atRZcChehKJbv+25n5i4vn5Burnii6HIAeq1evzi233HLQuSlTpuThhx8uqCIojrUklJ9mNQCQ3bt3Z9u2bT5wEQAGoGnTpuWuu+7q+bqxsbHAagCg/2hWA8AgdOONN2bBggVpbm5OW1tbVq9enUqlkvPPP7/o0gCA12lsbPSCMgCDgmY1UHND0pUPDX86SbLmtVk5EO8MgVp76aWX8olPfCKvvPJKxo0bl9NPPz1r167NuHHjii4NCjEkXRn3/IO54YaHUxk5t+hyAA6yZcuWzJs3L8OGDctpp52Wq6++Os3NzUWXBTVnLQnlp1kNFOKohu6iS4BB7ctf/nLRJcCA01Dtyv79XUWXAXCQmTNnZvny5ZkyZUp27NiRW2+9NZdccknWrVuXUaNGFV0e1Jy1JJSbZjUAAAAMUPPnz+85bm1tzaxZs7JgwYI89NBDWbRoUYGVAUDfqxRdAAAAAPDWjBkzJieeeGK2bt1adCkA0Oc0qwEAAKBO7N69O9u2bfOBiwCUkm1AAAAAYIC68cYbs2DBgjQ3N6etrS2rV69OpVLJ+eefX3RpANDnNKsBAABggHrppZfyiU98Iq+88krGjRuX008/PWvXrs24ceOKLg0A+pxmNVBz1TTkl12jeo4BoGjVNGT/iPE5aeKobHi16GoA/suXv/zlokuAAcNaEspPsxqoua5U8nBna9FlAECPrlSy84S5ufziOfnWqieKLgcA6IW1JJSfD1gEAAAAAKBwmtUAAAAAABTONiBAzQ1JVxYN/2mS5FuvnZoDaSy4IgAGuyHpyrH/53v5whf+OZWhZxRdDgDQC2tJKD/NaqAQwxsOFF0CAByk0tWZPXs6k6FFVwIAvBFrSSg324AAAAAAAFC4Q25Wb9iwIR/+8Iczb968tLS05NFHHz3o8Wq1mpUrV2bevHmZOXNmLr/88vziF7/oq3oBAAAAACihQ25W79mzJy0tLVm6dGmvj99xxx2555578pnPfCZr167NiBEjsnjx4uzbt++IiwUAAAAAoJwOec/q+fPnZ/78+b0+Vq1W87WvfS0f+chHsnDhwiTJ5z//+cydOzePPvpozjvvvCOrFgAAAACAUurTPatffPHF7NixI3Pnzu05N3r06MyaNSsbN27sy6EAAAAAACiRQ35n9R+yY8eOJMn48eMPOj9+/Pi8/PLLfTkUUMeqaciO7qN7jgGgaNU05MCwsXnb+JGp7im6GgCgN9aSUH592qxmcOnqrqaxUmw4DIQaOHRdqeT+fScXXQYA9OhKJa9OfmeuuHhO7lv1RNHlAAC9sJaE8uvTZnVTU1OSpL29PRMnTuw5397entbW1r4cigGgsdKQJWs2ZnNbRyHjnzRxVFZ+aHYhYwMAAAAAfatPm9WTJk1KU1NTnnzyybzjHe9IknR0dOTpp5/OxRdf3JdDMUBsbuvIpu07iy4DAAAAAKhzh9ys3r17d7Zu3drz9Ysvvphnn302Y8eOTXNzcy677LLcfvvtmTx5ciZNmpSVK1dm4sSJWbhwYZ8WDtSvxnTlgmGbkiTf3XdKutJYcEUADHaN6coxLzyam2/+l1QaTiu6HACgF9aSUH6H3Kx+5plnctlll/V8vXz58iTJBRdckBUrVuSKK67I3r178+lPfzo7d+7M6aefnjvvvDPDhg3ru6qButaQZHSls+cYAIrWkKTxwN68+ure5JiiqwEAemMtCeV3yM3qM888M88999wbPt7Q0JAlS5ZkyZIlR1QYAAAAAACDR6XoAgAAAAAAQLMaAAAAAIDCaVYDAKXX1V0tugQAAADexCHvWQ0AUG8aKw1ZsmZjNrd19PtY72ppyjXntvb7OAAAAGWjWQ3UXDXJr7uH9xwD1MLmto5s2r6z38eZ2jSy38eg71WTHBg6KsePHZHsL7oaAKA31pJQfprVQM11pTH37ZtRdBkA0KMrjXn1xAX57MVz8sCqJ4ouBwDohbUklJ89qwEAAAAAKJxmNQAAAAAAhbMNCFBzjenK+4c9myRZt+8d6UpjwRUBMNg1pitjf/GD3Hbbj1Kpnlx0OQBAL6wlofw0q4Gaa0hybOW1nmMAKFpDkiGdHdmxoyM5puhqAIDeWEtC+dkGBOpYV7fPPwYAAACgHLyzGupYY6UhS9ZszOa2jpqP/a6WplxzbmvNxwUAAACgnDSroc5tbuvIpu07az7u1KaRNR8TAAAAgPKyDQgAAAAAAIXTrAYAAAAAoHC2AQFqrppkV/fQnmMAKFo1SdeQERk3cmjRpQAAb8BaEspPsxqOQFd3NY2VhqLLqDtdacy3980sugwA6NGVxrzy9oW57uI5eWTVE0WXAwD0wloSyk+zGo5AY6UhS9ZszOa2jgzbtzf/8/+fv/C2H2bfsBH9Ova7Wppyzbmt/ToGAAAAANSKZjUcoc1tHdm0fWdGdL7Wc+7ZX+7K3qH7+3XcqU0j+/XnA/Qnd6YAAADweprVQM01pjv/Y9i/J0ke2teaLp/1CoPO796Z0t/cicJb0ZjujN3yL7njjv+dhuq0ossBAHphLQnlp1kN1FxDqmmq7Ok5Bgan396Z0t/cicJb0ZBqhux7Ndu3v5qGYzSrAWAgspaE8qvbl6C6uot/UhoINQAAAAAAlEHdvrO6lrcP9+akiaOy8kOzCxkbAAAAAKBs6rZZndTu9mEAAAAAAPpX3W4DAgAAAABAeWhWAwAAAABQuLreBgSoX69VPf0AMLB0Nw7NqGHyCQAGMmtJKDe/4UDNHUhjvvnaaUWXAQA9DqQxv556bpZdPCePrXqi6HIAgF5YS0L52QYEAAAAAIDCaVYDAAAAAFA424AANdeY7rxn6H8kSR7pnJ4ur5sBULDGdGfMtv+Vf/zHn6ShemLR5QAAvbCWhPLTrAZqriHVHN/Y0XMMAEVrSDVH7W3Pli3taTjmxKLLAQB6YS0J5eclKAAAAAAACqdZXce6ur2KCAAAAACUg21A6lhjpSFL1mzM5raOmo/9rpamXHNua83HBQAAAADKSbO6zm1u68im7TtrPu7UppE1HxMAAIDy6equprHSUHQZAAwAmtUAAABAYWpx17C7gwHqg2Y1UIj9VVvmAzCwVBsaM3SIfAIoQn/fNezu4PKwloRy06ymbjWNGuZ2sTp1II35+mtzii4DAHocSGN+Ne19WXXxnJy36omiywEAemEtCeWnWU3dGjNiiA+ZBAAAAICS0Kym7vmQSQAAAACof5rVQM01pjsLhv6fJMkPOqemK/YcA6BYjenO6P/749x777+nodpcdDkAQC+sJaH8NKuBmmtINSc0vtpzDABFa0g1Q3e35fnn29JwjGY1AAxE1pJQfl6CAgAAAACgcJrVAAAAAAAUrt+a1d/4xjfy7ne/O6eeemoWLVqUn/zkJ/01FABwmOQ1AAx88hqAwaJfmtUPPvhgli9fniuvvDLf/e5309ramsWLF6e9vb0/hgMADoO8BoCBT14DMJj0S7P6rrvuygc+8IFcdNFFOemkk7Js2bIMHz483/nOd/pjOADgMMhrABj45DUAg8mQvv6BnZ2d2bRpU/76r/+651ylUsncuXOzcePGN/3z1epvPs21o6PjTb/3xDGVdHcedfjFHoETx1TeUo21qKOIv4M/GvGbOSpyDoqu4fXjD913IB2V37z+M338kHQO69+aBtr1H4qGaiX7X92fJJk+/qhUGxprXkNfKHr8gfI8VI9++/f228wZjI40r5NDy+ze1Op3p9a/q2UeryzX1ltm/242vW1MQw7s93dZL+PJw/KS1wMjr2ulv58vavG8VKvnvsEyzpvl9aGuJYu+nnobo5bjyPL61td53VDt4+T/z//8z7zzne/MmjVrMnv27J7zn//857Nhw4Z861vf+oN//qWXXsr8+fP7siQA6NXjjz+e4447rugyCnGkeZ3IbABqQ17LawAGvr7K6z5/Z/WRmjhxYh5//PGMHDkyDQ0NRZcDQAlVq9Xs3r07EydOLLqUuiazAehP8rpvyGsA+lNf53WfN6uPPfbYNDY2/t6HPbS3t2fChAlv+ucrlcqgfdUcgNoZPXp00SUU6kjzOpHZAPQ/eS2vARj4+jKv+/wDFocOHZpTTjklTz75ZM+57u7uPPnkkwfdtgQAFEdeA8DAJ68BGGz6ZRuQv/qrv8q1116bGTNmZObMmbn77ruzd+/eXHjhhf0xHABwGOQ1AAx88hqAwaRfmtXve9/78qtf/SqrVq3Kjh078o53vCN33nnnW75NCQDof/IaAAY+eQ3AYNJQrVarRRcBAAAAAMDg1ud7VgMAAAAAwKHSrAYAAAAAoHCa1QAAAAAAFE6zGgAAAACAwg2YZvXq1avT0tJy0H9/+qd/WnRZfWLDhg358Ic/nHnz5qWlpSWPPvroQY9Xq9WsXLky8+bNy8yZM3P55ZfnF7/4RTHFHoE3u86//du//b05Xrx4cUHVHr6vfOUrueiiizJ79uycddZZ+ehHP5oXXnjhoO/Zt29fli1bljPPPDOzZ8/O3/zN3+Tll18uqOLD91au9dJLL/29ef30pz9dUMWH795778373//+zJkzJ3PmzMkHP/jBPP744z2Pl2VO3+w6yzKfvfn7v//7tLS05HOf+1zPubLMay3J6/rP60Rm/64yPA/I6/LldTJ4M1te952yZra8/i/yuv6eBwZLZstreX0k8zqkLws9UtOmTctdd93V83VjY2OB1fSdPXv2pKWlJRdddFGuuuqq33v8jjvuyD333JMVK1Zk0qRJWblyZRYvXpwHH3www4YNK6Diw/Nm15kk55xzTpYvX97z9dChQ2tVXp9Zv359Lrnkkpx66qnp6urKl770pSxevDgPPPBAjj766CTJDTfckMcffzw333xzRo8enc9+9rO56qqrsmbNmoKrPzRv5VqT5AMf+EA+9rGP9Xw9YsSIIso9Iscdd1w++clPZvLkyalWq7nvvvty5ZVX5rvf/W6mTZtWmjl9s+tMyjGfr/eTn/wka9asSUtLy0HnyzKvtSav6zuvE5ldtsyW1+XL62RwZra87ntlzGx5fTB5XV/PA4Mls+W1vD6iea0OEKtWrar+2Z/9WdFl9Lvp06dXH3nkkZ6vu7u7q2effXb1zjvv7Dm3c+fO6owZM6r3339/ESX2iddfZ7VarV577bXVj3zkIwVV1H/a29ur06dPr65fv75arf5m/k455ZTqQw891PM9mzdvrk6fPr26cePGgqrsG6+/1mq1Wv3Lv/zL6vXXX19gVf3njDPOqK5du7bUc1qt/td1VqvlnM+Ojo7qe9/73uoPf/jDg66v7PPaX+R1ufK6WpXZZXwekNflms/fVebMltd9bzBktryW1/X+PDCYMltel0Mt8nrAbAOSJFu2bMm8efPyJ3/yJ7n66quzffv2okvqdy+++GJ27NiRuXPn9pwbPXp0Zs2alY0bNxZYWf9Yv359zjrrrJx77rlZunRpfv3rXxdd0hHbtWtXkmTs2LFJkmeeeSb79+8/aE6nTp2a5ubmPPXUU0WU2Gdef62/tW7dupx55pk5//zz88UvfjF79+4torw+09XVlQceeCB79uzJ7NmzSzunr7/O3yrbfF533XWZP3/+QfOXlPt3tb/J698oc14nMruenwfkdbnmMxkcmS2v+8dgy2x5La/rzWDIbHldrvmsRV4PmG1AZs6cmeXLl2fKlCnZsWNHbr311lxyySVZt25dRo0aVXR5/WbHjh1JkvHjxx90fvz48XW7X88bOeecc/Ke97wnkyZNyrZt2/KlL30pV1xxRf7pn/6pbm9H6+7uzg033JA5c+Zk+vTpSZKXX345Rx11VMaMGXPQ944fP75nvutRb9eaJOeff36am5szceLEPPfcc7npppvy85//PLfcckuB1R6e5557Lh/60Ieyb9++HH300bn11ltz0kkn5dlnny3VnL7RdSblms8keeCBB/Kzn/0s3/72t3/vsbL+rvY3eV3+vE5kdj0/D8jrcs3nYMlsed0/BmNmy2t5XU/KntnyWl4nhzevA6ZZPX/+/J7j1tbWzJo1KwsWLMhDDz2URYsWFVgZfeW8887rOf7tpvILFy7seSW4Hi1btizPP/987r333qJL6XdvdK0f/OAHe45bWlrS1NSUyy+/PFu3bs3b3va2Wpd5RKZMmZL77rsvu3btyve+971ce+21+frXv150WX3uja7zpJNOKtV8/vKXv8znPve5/MM//EPd7U84kMnrwUFm1y95XS6DIbPldf+R2eUnr+tb2TNbXsvrwzWgtgH5XWPGjMmJJ56YrVu3Fl1Kv2pqakqStLe3H3S+vb09EyZMKKKkmjnhhBNy7LHHZsuWLUWXcliuu+66PPbYY7n77rtz3HHH9ZyfMGFC9u/fn507dx70/e3t7T3zXW/e6Fp7M2vWrCSpy3kdOnRoJk+enBkzZuTqq69Oa2trvva1r5VuTt/oOntTz/O5adOmtLe358ILL8zJJ5+ck08+OevXr88999yTk08+uXTzWhR5Xf68TmR2vZDX5ZrPZHBktryuncGQ2fJaXteLwZDZ8lpeJ4c3rwO2Wb179+5s27atbv+hvlWTJk1KU1NTnnzyyZ5zHR0defrppw/a36aMXnrppbzyyit1N8fVajXXXXddHnnkkdx999054YQTDnp8xowZOeqoow6a0xdeeCHbt2/PaaedVuNqj8ybXWtvnn322SSpu3ntTXd3dzo7O0s1p7357XX2pp7n84//+I+zbt263HfffT3/zZgxI+9///t7jss8r7Uir8uf14nMHujk9eDI66ScmS2va2cwZLa8ltcD3WDObHn9G/U6n7XM6wGzDciNN96YBQsWpLm5OW1tbVm9enUqlUrOP//8oks7Yrt37z7o1esXX3wxzz77bMaOHZvm5uZcdtlluf322zN58uRMmjQpK1euzMSJE7Nw4cICqz50f+g6x44dm1tuuSXnnntuJkyYkG3btuULX/hCJk+enHPOOafAqg/dsmXLcv/99+e2227LyJEje/beGT16dIYPH57Ro0fnoosuyooVKzJ27NiMGjUq119/fWbPnl13T7xvdq1bt27NunXrMn/+/BxzzDF57rnnsnz58pxxxhlpbW0tuPpD88UvfjHvfOc7c/zxx2f37t25//77s379+nz1q18t1Zz+oess03wmyahRow7a+y1Jjj766BxzzDE958syr7Ukr+s/rxOZXbbMltfly+tk8GS2vO4/Zc1seS2v6/l5YLBktryW10cyrw3VarXaV4UfiY9//OPZsGFDXnnllYwbNy6nn356Pv7xj9fV/i1v5Mc//nEuu+yy3zt/wQUXZMWKFalWq1m1alXWrl2bnTt35vTTT8/SpUszZcqUAqo9fH/oOj/zmc/kyiuvzM9+9rPs2rUrEydOzNlnn50lS5bU3e1YLS0tvZ5fvnx5LrzwwiTJvn37smLFijzwwAPp7OzMvHnzsnTp0rp75ezNrvWXv/xlrrnmmjz//PPZs2dPjj/++CxcuDAf/ehH6+5DWz71qU/lRz/6Udra2jJ69Oi0tLTkiiuuyNlnn52kPHP6h66zTPP5Ri699NK0trbm7/7u75KUZ15rSV7Xf14nMrtsmS2vy5fXyeDObHndN8qa2fJaXtfz88BgyWx5La+PZF4HTLMaAAAAAIDBa8DuWQ0AAAAAwOChWQ0AAAAAQOE0qwEAAAAAKJxmNQAAAAAAhdOsBgAAAACgcJrVAAAAAAAUTrMaAAAAAIDCaVYDAAAAAFA4zWoAAAAAAAqnWQ0AAAAAQOE0qwEAAAAAKJxmNQAAAAAAhft/jGXwQVPF2fYAAAAASUVORK5CYII=", - "text/plain": [ - "
      " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "fig, axs = plt.subplots(1, 3, figsize=(18, 6))\n", - "\n", - "factual_sufficiency_mean = factual_sufficiency[\"overshoot_int\"].mean().item()\n", - "axs[0].hist(factual_sufficiency[\"overshoot_int\"])\n", - "\n", - "axs[0].set_title((\n", - " f\"Factual\\n overshoot mean: {factual_sufficiency_mean:.2f}, Pr(too high): \"\n", - " f\"{factual_sufficiency['os_too_high_int'].mean().item():.2f}\"\n", - "))\n", - "axs[0].axvline(x=factual_sufficiency_mean, color=\"grey\", linestyle=\"--\")\n", - "\n", - "counterfactual_sufficiency_lockdown_mean = counterfactual_sufficiency_lockdown[\"overshoot_int\"].mean()\n", - "axs[1].hist(counterfactual_sufficiency_lockdown[\"overshoot_int\"])\n", - "axs[1].set_title((\n", - " f\"Counterfactual_lockdown\\n overshoot mean: {counterfactual_sufficiency_lockdown_mean:.2f}, \"\n", - " f\"Pr(too high): {counterfactual_lockdown['os_too_high_int'].mean():.2f}\"\n", - "))\n", - "axs[1].axvline(x=counterfactual_sufficiency_lockdown_mean, color=\"grey\", linestyle=\"--\")\n", - "\n", - "counterfactual_sufficiency_mask_mean = counterfactual_sufficiency_mask[\"overshoot_int\"].mean()\n", - "axs[2].hist(counterfactual_sufficiency_mask[\"overshoot_int\"])\n", - "axs[2].set_title((\n", - " f\"Counterfactual_mask\\n overshoot mean: {counterfactual_sufficiency_mask_mean:.2f}, \"\n", - " f\"Pr(too high): {counterfactual_mask['os_too_high_int'].mean():.2f}\"\n", - "))\n", - "axs[2].axvline(x=counterfactual_sufficiency_mask_mean, color=\"grey\", linestyle=\"--\")\n", - "\n", - "for i in range(3):\n", - " axs[i].set_xlim(5, 40)\n", - " axs[i].axvline(x=overshoot_threshold, color=\"red\", linestyle=\"-\")\n", - "\n", - "#plt.savefig(\"counterfactual_sir_search_sufficiency.png\")\n", - "\n", - "plt.show()\n" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
      \n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
      lockdown_obslockdown_intapr_lockdownmask_obsmask_intapr_masklockdown_efficiency_obslockdown_efficiency_intwpr_lockdown_efficiencymask_efficiency_obsmask_efficiency_intwpr_mask_efficiencyjoint_efficiency_obsjoint_efficiency_intovershoot_obsovershoot_intos_too_high_obsos_too_high_int
      111.00.011.01.000.00.000.000.0010.70.0015.61640921.5985300.01.0
      381.00.011.01.000.00.000.450.4500.70.4531.68021425.2103521.01.0
      511.00.011.01.000.00.000.450.4500.70.4532.04195424.7607081.01.0
      1041.00.011.01.000.00.000.000.0010.70.0030.14712917.7575171.00.0
      1101.00.011.01.000.00.000.000.0010.70.0015.18748523.5354390.01.0
      \n", - "
      " - ], - "text/plain": [ - " lockdown_obs lockdown_int apr_lockdown mask_obs mask_int apr_mask \\\n", - "11 1.0 0.0 1 1.0 1.0 0 \n", - "38 1.0 0.0 1 1.0 1.0 0 \n", - "51 1.0 0.0 1 1.0 1.0 0 \n", - "104 1.0 0.0 1 1.0 1.0 0 \n", - "110 1.0 0.0 1 1.0 1.0 0 \n", - "\n", - " lockdown_efficiency_obs lockdown_efficiency_int \\\n", - "11 0.0 0.0 \n", - "38 0.0 0.0 \n", - "51 0.0 0.0 \n", - "104 0.0 0.0 \n", - "110 0.0 0.0 \n", - "\n", - " wpr_lockdown_efficiency mask_efficiency_obs mask_efficiency_int \\\n", - "11 0 0.00 0.00 \n", - "38 0 0.45 0.45 \n", - "51 0 0.45 0.45 \n", - "104 0 0.00 0.00 \n", - "110 0 0.00 0.00 \n", - "\n", - " wpr_mask_efficiency joint_efficiency_obs joint_efficiency_int \\\n", - "11 1 0.7 0.00 \n", - "38 0 0.7 0.45 \n", - "51 0 0.7 0.45 \n", - "104 1 0.7 0.00 \n", - "110 1 0.7 0.00 \n", - "\n", - " overshoot_obs overshoot_int os_too_high_obs os_too_high_int \n", - "11 15.616409 21.598530 0.0 1.0 \n", - "38 31.680214 25.210352 1.0 1.0 \n", - "51 32.041954 24.760708 1.0 1.0 \n", - "104 30.147129 17.757517 1.0 0.0 \n", - "110 15.187485 23.535439 0.0 1.0 " - ] - }, - "execution_count": 25, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "\n", - "counterfactual_sufficiency_lockdown.head()" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "chirho", - "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.10.14" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/docs/source/test_notebook.ipynb b/docs/source/test_notebook.ipynb deleted file mode 100644 index 69421fc0..00000000 --- a/docs/source/test_notebook.ipynb +++ /dev/null @@ -1,659 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "from typing import Callable, Dict, List, Optional\n", - "\n", - "import math\n", - "import pyro\n", - "import pyro.distributions as dist\n", - "import pyro.distributions.constraints as constraints\n", - "import torch\n", - "from chirho.counterfactual.handlers.counterfactual import \\\n", - " MultiWorldCounterfactual\n", - "from chirho.explainable.handlers import ExtractSupports, SearchForExplanation\n", - "from chirho.indexed.ops import IndexSet, gather, indices_of\n", - "from chirho.observational.handlers import condition\n", - "from chirho.observational.handlers.soft_conditioning import soft_eq, KernelSoftConditionReparam\n", - "\n", - "pyro.settings.set(module_local_params=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "match_dropped tensor(1.)\n", - "match_dropped Provenance:\n", - "frozenset({'u_match_dropped'})\n", - "Tensor:\n", - "0.0\n" - ] - }, - { - "data": { - "image/svg+xml": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "u_match_dropped\n", - "\n", - "u_match_dropped\n", - "\n", - "\n", - "\n", - "match_dropped\n", - "\n", - "match_dropped\n", - "\n", - "\n", - "\n", - "u_lightning\n", - "\n", - "u_lightning\n", - "\n", - "\n", - "\n", - "lightning\n", - "\n", - "lightning\n", - "\n", - "\n", - "\n", - "smile\n", - "\n", - "smile\n", - "\n", - "\n", - "\n", - "forest_fire\n", - "\n", - "forest_fire\n", - "\n", - "\n", - "\n" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "def forest_fire_model():\n", - " u_match_dropped = pyro.sample(\"u_match_dropped\", dist.Bernoulli(0.7))\n", - " match_dropped = pyro.deterministic(\n", - " \"match_dropped\", u_match_dropped, event_dim=0\n", - " ) # notice uneven probs here\n", - "\n", - " print(\"match_dropped\", match_dropped.squeeze())\n", - "\n", - " u_lightning = pyro.sample(\"u_lightning\", dist.Bernoulli(0.4))\n", - " lightning = pyro.deterministic(\"lightning\", u_lightning, event_dim=0)\n", - "\n", - " # this is a causally irrelevant site\n", - " smile = pyro.sample(\"smile\", dist.Bernoulli(0.5))\n", - "\n", - " forest_fire = pyro.deterministic(\n", - " \"forest_fire\", torch.max(match_dropped, lightning) + (0 * smile), event_dim=0\n", - " )\n", - "\n", - " return {\n", - " \"match_dropped\": match_dropped,\n", - " \"lightning\": lightning,\n", - " \"forest_fire\": forest_fire,\n", - " }\n", - "\n", - "with ExtractSupports() as extract_supports:\n", - " forest_fire_model()\n", - " forest_fire_supports = {k: constraints.boolean for k in extract_supports.supports}\n", - "\n", - "pyro.render_model(forest_fire_model)" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [], - "source": [ - "def importance_infer(\n", - " model: Optional[Callable] = None, *, num_samples: int\n", - "):\n", - " \n", - " if model is None:\n", - " return lambda m: importance_infer(m, num_samples=num_samples)\n", - "\n", - " def _wrapped_model(\n", - " *args,\n", - " **kwargs\n", - " ):\n", - "\n", - " guide = pyro.poutine.block(hide_fn=lambda msg: msg[\"is_observed\"])(model)\n", - "\n", - " max_plate_nesting = 9 # TODO guess\n", - "\n", - " with pyro.poutine.block(), MultiWorldCounterfactual() as mwc:\n", - " log_weights, importance_tr, _ = pyro.infer.importance.vectorized_importance_weights(\n", - " model,\n", - " guide,\n", - " *args,\n", - " num_samples=num_samples,\n", - " max_plate_nesting=max_plate_nesting,\n", - " normalized=False,\n", - " **kwargs\n", - " )\n", - "\n", - " return torch.logsumexp(log_weights, dim=0) - math.log(num_samples), importance_tr, mwc, log_weights\n", - "\n", - " return _wrapped_model" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [], - "source": [ - "query = SearchForExplanation(\n", - " supports=forest_fire_supports,\n", - " antecedents={\"match_dropped\": torch.tensor(1.0), \"lightning\": torch.tensor(1.0)},\n", - " consequents={\"forest_fire\": torch.tensor(1.0)},\n", - " witnesses={}, # potential context elements, we leave them empty for now\n", - " alternatives={\"match_dropped\": torch.tensor(0.0), \"lightning\": torch.tensor(0.0)},\n", - " consequent_scale=1e-5,\n", - " antecedent_bias=0.5\n", - ")(forest_fire_model)" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "match_dropped tensor([[0., 0., 0.],\n", - " [1., 1., 0.],\n", - " [1., 1., 0.],\n", - " [1., 1., 0.],\n", - " [0., 0., 0.],\n", - " [1., 1., 0.],\n", - " [0., 0., 0.],\n", - " [0., 0., 0.],\n", - " [1., 1., 0.],\n", - " [0., 0., 0.]])\n", - "match_dropped tensor([[0., 0., 0.],\n", - " [1., 1., 0.],\n", - " [1., 1., 0.],\n", - " [1., 1., 0.],\n", - " [0., 0., 0.],\n", - " [1., 1., 0.],\n", - " [0., 0., 0.],\n", - " [0., 0., 0.],\n", - " [1., 1., 0.],\n", - " [0., 0., 0.]])\n" - ] - } - ], - "source": [ - "logp, trace, mwc, log_weights = importance_infer(num_samples=10)(query)()" - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "IndexSet({})\n" - ] - } - ], - "source": [ - "with mwc:\n", - " print(indices_of(trace.nodes[\"match_dropped\"][\"value\"]))" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import pyro\n", - "import pyro.distributions as dist\n", - "import pyro.distributions.constraints as constraints\n", - "import pytest\n", - "import torch\n", - "\n", - "from chirho.counterfactual.handlers.counterfactual import MultiWorldCounterfactual\n", - "from chirho.counterfactual.ops import split\n", - "from chirho.explainable.handlers import random_intervention, sufficiency_intervention\n", - "from chirho.explainable.handlers.components import ( # consequent_eq_neq,\n", - " ExtractSupports,\n", - " consequent_eq,\n", - " consequent_eq_neq,\n", - " consequent_neq,\n", - " undo_split,\n", - ")\n", - "from chirho.explainable.internals import uniform_proposal\n", - "from chirho.explainable.ops import preempt\n", - "from chirho.indexed.ops import IndexSet, gather, indices_of\n", - "from chirho.interventional.handlers import do\n", - "from chirho.interventional.ops import intervene\n", - "from chirho.observational.handlers.condition import Factors" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "tensor([[[[[[[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.]]]]],\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[2., 2., 2., 2., 2., 2., 2., 2., 2., 2.]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[6., 6., 6., 6., 6., 6., 6., 6., 6., 6.]]]]],\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[6., 6., 6., 6., 6., 6., 6., 6., 6., 6.]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[2., 2., 2., 2., 2., 2., 2., 2., 2., 2.]]]]],\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[2., 2., 2., 2., 2., 2., 2., 2., 2., 2.]]]]]]])\n", - "IndexSet({'split1': {0, 1}, 'split2': {0, 1, 2}})\n", - "IndexSet({'split1': {0, 1}, 'split2': {0, 1, 2}})\n", - "tensor([[[[[[[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.]]]]],\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[2., 2., 2., 2., 2., 2., 2., 2., 2., 2.]]]]]]])\n", - "tensor([[[[[[[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.]]]]],\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[2., 2., 2., 2., 2., 2., 2., 2., 2., 2.]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.]]]]],\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[2., 2., 2., 2., 2., 2., 2., 2., 2., 2.]]]]]],\n", - "\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.]]]]],\n", - "\n", - "\n", - "\n", - "\n", - " [[[[[2., 2., 2., 2., 2., 2., 2., 2., 2., 2.]]]]]]])\n" - ] - } - ], - "source": [ - "import pyro.distributions.constraints as constraints\n", - "import torch\n", - "from chirho.counterfactual.handlers.counterfactual import MultiWorldCounterfactual\n", - "from chirho.counterfactual.ops import split\n", - "from chirho.explainable.handlers.components import undo_split\n", - "from chirho.indexed.ops import IndexSet, gather, indices_of\n", - "\n", - "with MultiWorldCounterfactual():\n", - " x_obs = torch.ones(10)\n", - " x_cf_1 = 2 * x_obs\n", - " x_cf_2 = 3 * x_cf_1\n", - " x_split = split(x_obs, (x_cf_1,), name=\"split1\", event_dim=1)\n", - " x_split = split(x_split, (x_cf_2, x_cf_1), name=\"split2\", event_dim=1)\n", - "\n", - " print(x_split)\n", - "\n", - " undo_split2 = undo_split(\n", - " support=constraints.independent(constraints.real, 1), antecedents=[\"split2\"]\n", - " )\n", - " x_undone = undo_split2(x_split)\n", - "\n", - " print(indices_of(x_split, event_dim=1))\n", - " print(indices_of(x_undone, event_dim=1))\n", - "\n", - " print(gather(x_split, IndexSet(split2={0}), event_dim=1))\n", - " print(x_undone)\n", - "\n", - " assert indices_of(x_split, event_dim=1) == indices_of(x_undone, event_dim=1)\n", - " assert torch.all(gather(x_split, IndexSet(split2={0}), event_dim=1) == x_undone)" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'split1': {0}}\n", - "{'split1': {0}}\n", - "{'split1': {1}}\n", - "{'split1': {1}}\n", - "{'split1': {2}}\n", - "{'split1': {2}}\n", - "{'split1': {0}, 'split2': {1}}\n", - "{'split1': {0}, 'split2': {1}}\n", - "{'split1': {0}, 'split2': {2}}\n", - "{'split1': {0}, 'split2': {2}}\n", - "{'split1': {1}, 'split2': {1}}\n", - "{'split1': {1}, 'split2': {1}}\n", - "{'split1': {1}, 'split2': {2}}\n", - "{'split1': {1}, 'split2': {2}}\n", - "{'split1': {2}, 'split2': {1}}\n", - "{'split1': {2}, 'split2': {1}}\n", - "{'split1': {2}, 'split2': {2}}\n", - "{'split1': {2}, 'split2': {2}}\n", - "[{'split1': {0}, 'split2': {1}, 'split3': {2}}, {'split1': {0}, 'split2': {1}, 'split3': {3}}, {'split1': {0}, 'split2': {2}, 'split3': {2}}, {'split1': {0}, 'split2': {2}, 'split3': {3}}, {'split1': {1}, 'split2': {1}, 'split3': {2}}, {'split1': {1}, 'split2': {1}, 'split3': {3}}, {'split1': {1}, 'split2': {2}, 'split3': {2}}, {'split1': {1}, 'split2': {2}, 'split3': {3}}, {'split1': {2}, 'split2': {1}, 'split3': {2}}, {'split1': {2}, 'split2': {1}, 'split3': {3}}, {'split1': {2}, 'split2': {2}, 'split3': {2}}, {'split1': {2}, 'split2': {2}, 'split3': {3}}]\n" - ] - } - ], - "source": [ - "index_keys = []\n", - "antecedents = {\"split1\": {0, 1, 2}, \"split2\": {1, 2}, \"split3\": {2, 3}}\n", - "for a, v in antecedents.items():\n", - " if index_keys == []:\n", - " for value in v:\n", - " index_keys.append({a: {value}})\n", - " else:\n", - " temp_index_keys = []\n", - " for i in index_keys:\n", - " for value in v:\n", - " print(i)\n", - " t = dict(i)\n", - " t[a] = {value}\n", - " temp_index_keys.append(t)\n", - " index_keys = temp_index_keys\n", - "\n", - "print(index_keys)\n", - "\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "metadata": {}, - "outputs": [ - { - "ename": "SyntaxError", - "evalue": "invalid syntax (448003560.py, line 4)", - "output_type": "error", - "traceback": [ - "\u001b[0;36m Cell \u001b[0;32mIn[28], line 4\u001b[0;36m\u001b[0m\n\u001b[0;31m if a, v in indices_of(value, event_dim=0)\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n" - ] - } - ], - "source": [ - "\n", - "antecedents_ = {\n", - " a\n", - " for a in antecedents\n", - " if a in indices_of(value, event_dim=0)\n", - "}\n", - "\n", - "factual_value = gather(\n", - " value,\n", - " IndexSet(**{antecedent: {0} for antecedent in antecedents_}),\n", - " event_dim=support.event_dim,\n", - ")\n", - "\n", - "# TODO exponential in len(antecedents) - add an indexed.ops.expand to do this cheaply\n", - "\n", - "\n", - "\n", - "scatter_n(\n", - " {\n", - " IndexSet(\n", - " **{antecedent: {ind} for antecedent, ind in zip(antecedents_, inds)}\n", - " ): factual_value\n", - " for inds in itertools.product(*[[0, 1]] * len(antecedents_))\n", - " },\n", - " event_dim=support.event_dim,\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [], - "source": [ - "with MultiWorldCounterfactual():\n", - " for a in indices_of(value, event_dim=0):\n", - " print(a)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [], - "source": [ - "import pyro\n", - "import pyro.distributions as dist\n", - "import pyro.distributions.constraints as constraints\n", - "import pytest\n", - "import torch\n", - "\n", - "from chirho.counterfactual.handlers.counterfactual import MultiWorldCounterfactual\n", - "from chirho.counterfactual.ops import split\n", - "from chirho.explainable.handlers import random_intervention, sufficiency_intervention\n", - "from chirho.explainable.handlers.components import ( # consequent_eq_neq,\n", - " ExtractSupports,\n", - " consequent_eq,\n", - " consequent_eq_neq,\n", - " consequent_neq,\n", - " undo_split,\n", - ")\n", - "from chirho.explainable.internals import uniform_proposal\n", - "from chirho.explainable.ops import preempt\n", - "from chirho.indexed.ops import IndexSet, gather, indices_of\n", - "from chirho.interventional.handlers import do\n", - "from chirho.interventional.ops import intervene\n", - "from chirho.observational.handlers.condition import Factors\n", - "\n", - "SUPPORT_CASES = [\n", - " pyro.distributions.constraints.real,\n", - " pyro.distributions.constraints.boolean,\n", - " pyro.distributions.constraints.positive,\n", - " pyro.distributions.constraints.interval(0, 10),\n", - " pyro.distributions.constraints.interval(-5, 5),\n", - " pyro.distributions.constraints.integer_interval(0, 2),\n", - " pyro.distributions.constraints.integer_interval(0, 100),\n", - "]" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [], - "source": [ - "import pyro\n", - "import pyro.distributions as dist\n", - "\n", - "def model():\n", - " x = pyro.sample(\"x\", dist.Delta(torch.tensor(1.0)))\n", - "\n", - " x_split = pyro.deterministic(\n", - " \"x_split\",\n", - " split(x, (torch.tensor(0.5),), name=\"x_split\", event_dim=0),\n", - " event_dim=0,\n", - " )\n", - "\n", - " x_undone = pyro.deterministic(\n", - " \"x_undone\",\n", - " undo_split(support=constraints.real, antecedents=[\"x_split\"])(x_split),\n", - " event_dim=0,\n", - " )\n", - "\n", - " x_case = torch.tensor(1)\n", - " x_preempted = pyro.deterministic(\n", - " \"x_preempted\",\n", - " preempt(\n", - " x_undone, (torch.tensor(5.0),), x_case, name=\"x_preempted\", event_dim=0\n", - " ),\n", - " event_dim=0,\n", - " )\n", - "\n", - " x_undone_2 = pyro.deterministic(\n", - " \"x_undone_2\",\n", - " undo_split(support=constraints.real, antecedents=[\"x\"])(x_preempted),\n", - " event_dim=0,\n", - " )\n", - "\n", - " x_split2 = pyro.deterministic(\n", - " \"x_split2\",\n", - " split(x_undone_2, (torch.tensor(2.0),), name=\"x_split2\", event_dim=0),\n", - " event_dim=0,\n", - " )\n", - "\n", - " x_undone_3 = pyro.deterministic(\n", - " \"x_undone_3\",\n", - " undo_split(support=constraints.real, antecedents=[\"x_split\", \"x_split2\"])(\n", - " x_split2\n", - " ),\n", - " event_dim=0,\n", - " )\n", - "\n", - " return x_undone_3\n", - "\n", - "with MultiWorldCounterfactual() as mwc:\n", - " with pyro.poutine.trace() as tr:\n", - " model()\n", - "\n", - "nd = tr.trace.nodes\n", - "\n", - "with mwc:\n", - " x_split_2 = nd[\"x_split2\"][\"value\"]\n", - " x_00 = gather(\n", - " x_split_2, IndexSet(x_split={0}, x_split2={0}), event_dim=0\n", - " ) # 5.0\n", - " x_10 = gather(\n", - " x_split_2, IndexSet(x_split={1}, x_split2={0}), event_dim=0\n", - " ) # 5.0\n", - " x_01 = gather(\n", - " x_split_2, IndexSet(x_split={0}, x_split2={1}), event_dim=0\n", - " ) # 2.0\n", - " x_11 = gather(\n", - " x_split_2, IndexSet(x_split={1}, x_split2={1}), event_dim=0\n", - " ) # 2.0\n", - "\n", - " assert (\n", - " nd[\"x_split\"][\"value\"][0].item() == 1.0\n", - " and nd[\"x_split\"][\"value\"][1].item() == 0.5\n", - " )\n", - "\n", - " assert (\n", - " nd[\"x_undone\"][\"value\"][0].item() == 1.0\n", - " and nd[\"x_undone\"][\"value\"][1].item() == 1.0\n", - " )\n", - "\n", - " assert (\n", - " nd[\"x_preempted\"][\"value\"][0].item() == 5.0\n", - " and nd[\"x_preempted\"][\"value\"][1].item() == 5.0\n", - " )\n", - "\n", - " assert (\n", - " nd[\"x_undone_2\"][\"value\"][0].item() == 5.0\n", - " and nd[\"x_undone_2\"][\"value\"][1].item() == 5.0\n", - " )\n", - "\n", - " assert torch.all(nd[\"x_undone_3\"][\"value\"] == 5.0)\n", - "\n", - " assert (x_00, x_10, x_01, x_11) == (5.0, 5.0, 2.0, 2.0)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": ".venv", - "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.10.14" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} From 7e1344c492ebcdfed0aef630f9f121e4478293c3 Mon Sep 17 00:00:00 2001 From: PoorvaGarg Date: Mon, 19 Aug 2024 13:22:17 -0400 Subject: [PATCH 51/53] lint --- chirho/explainable/handlers/components.py | 19 ++++++++++------- tests/explainable/test_handlers_components.py | 21 ++++++++++++------- 2 files changed, 25 insertions(+), 15 deletions(-) diff --git a/chirho/explainable/handlers/components.py b/chirho/explainable/handlers/components.py index 589bc1cc..cd23fe74 100644 --- a/chirho/explainable/handlers/components.py +++ b/chirho/explainable/handlers/components.py @@ -126,22 +126,25 @@ def _undo_split(value: T) -> T: # TODO exponential in len(antecedents) - add an indexed.ops.expand to do this cheaply - index_keys = [] + index_keys: list[dict[str, set[int]]] = list() for a, v in antecedents_.items(): if index_keys == []: - for value in v: - index_keys.append({a: {value}}) + index_keys = [dict({a: {value}}.items()) for value in v] else: temp_index_keys = [] for i in index_keys: - for value in v: - t = dict(i) - t[a] = {value} - temp_index_keys.append(t) + # for value in v: + # t = dict(i) + # t[a] = {value} + # temp_index_keys.append(set(t)) + temp_index_keys.extend([dict(tuple(dict(i).items()) + tuple({a: {value}}.items())) for value in v]) index_keys = temp_index_keys index_keys = index_keys if index_keys != [] else [{}] - return scatter_n({IndexSet(**ind_key): factual_value for ind_key in index_keys}, event_dim=support.event_dim) + return scatter_n( + {IndexSet(**ind_key): factual_value for ind_key in index_keys}, + event_dim=support.event_dim, + ) return _undo_split diff --git a/tests/explainable/test_handlers_components.py b/tests/explainable/test_handlers_components.py index 08ccf8c3..d3839d9a 100644 --- a/tests/explainable/test_handlers_components.py +++ b/tests/explainable/test_handlers_components.py @@ -89,8 +89,10 @@ def test_undo_split(num_splits): x_obs = torch.zeros(10) x_cf_1 = torch.ones(10) x_cf_2 = 2 * x_cf_1 - x_split = split(x_obs, (x_cf_1,)*num_splits, name="split1", event_dim=1) - x_split = split(x_split, (x_cf_2,)*(num_splits+1), name="split2", event_dim=1) + x_split = split(x_obs, (x_cf_1,) * num_splits, name="split1", event_dim=1) + x_split = split( + x_split, (x_cf_2,) * (num_splits + 1), name="split2", event_dim=1 + ) undo_split2 = undo_split( support=constraints.independent(constraints.real, 1), antecedents=["split2"] @@ -111,12 +113,15 @@ def test_undo_split_multi_dim(): x_split = split(x_split, (x_cf_2, x_cf_1), name="split3", event_dim=1) undo_split23 = undo_split( - support=constraints.independent(constraints.real, 1), antecedents=["split2", "split3"] + support=constraints.independent(constraints.real, 1), + antecedents=["split2", "split3"], ) x_undone = undo_split23(x_split) assert indices_of(x_split, event_dim=1) == indices_of(x_undone, event_dim=1) - assert torch.all(gather(x_split, IndexSet(split2={0}, split3={0}), event_dim=1) == x_undone) + assert torch.all( + gather(x_split, IndexSet(split2={0}, split3={0}), event_dim=1) == x_undone + ) @pytest.mark.parametrize("plate_size", [4, 50, 200]) @@ -134,7 +139,9 @@ def model(): w = pyro.sample( "w", dist.Normal(0, 1).expand(event_shape).to_event(len(event_shape)) ) - w = split(w, (replace1,)*num_splits, name="split1", event_dim=len(event_shape)) + w = split( + w, (replace1,) * num_splits, name="split1", event_dim=len(event_shape) + ) w = pyro.deterministic( "w_preempted", @@ -166,11 +173,11 @@ def model(): with mwc: assert indices_of( nd["w_undone"]["value"], event_dim=len(event_shape) - ) == IndexSet(split1=set(range(num_splits+1))) + ) == IndexSet(split1=set(range(num_splits + 1))) w_undone_shape = list(nd["w_undone"]["value"].shape) desired_shape = list( - (num_splits+1,) + (num_splits + 1,) + (1,) * (len(w_undone_shape) - len(event_shape) - 2) + (plate_size,) + event_shape From 05dcf16107a8a88e339dbe5c7cc4b4cd95c09f31 Mon Sep 17 00:00:00 2001 From: PoorvaGarg Date: Mon, 19 Aug 2024 13:29:10 -0400 Subject: [PATCH 52/53] lint and clean up --- chirho/explainable/handlers/components.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/chirho/explainable/handlers/components.py b/chirho/explainable/handlers/components.py index cd23fe74..93f83141 100644 --- a/chirho/explainable/handlers/components.py +++ b/chirho/explainable/handlers/components.py @@ -125,7 +125,6 @@ def _undo_split(value: T) -> T: ) # TODO exponential in len(antecedents) - add an indexed.ops.expand to do this cheaply - index_keys: list[dict[str, set[int]]] = list() for a, v in antecedents_.items(): if index_keys == []: @@ -133,11 +132,12 @@ def _undo_split(value: T) -> T: else: temp_index_keys = [] for i in index_keys: - # for value in v: - # t = dict(i) - # t[a] = {value} - # temp_index_keys.append(set(t)) - temp_index_keys.extend([dict(tuple(dict(i).items()) + tuple({a: {value}}.items())) for value in v]) + temp_index_keys.extend( + [ + dict(tuple(dict(i).items()) + tuple({a: {value}}.items())) + for value in v + ] + ) index_keys = temp_index_keys index_keys = index_keys if index_keys != [] else [{}] From c0f05e062e93d8261ffac44bd8d1122be0bcb488 Mon Sep 17 00:00:00 2001 From: PoorvaGarg Date: Mon, 19 Aug 2024 13:38:16 -0400 Subject: [PATCH 53/53] lint typing error --- chirho/explainable/handlers/components.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chirho/explainable/handlers/components.py b/chirho/explainable/handlers/components.py index 93f83141..22042dbc 100644 --- a/chirho/explainable/handlers/components.py +++ b/chirho/explainable/handlers/components.py @@ -125,7 +125,7 @@ def _undo_split(value: T) -> T: ) # TODO exponential in len(antecedents) - add an indexed.ops.expand to do this cheaply - index_keys: list[dict[str, set[int]]] = list() + index_keys: Iterable[MutableMapping[str, Iterable[int]]] = list() for a, v in antecedents_.items(): if index_keys == []: index_keys = [dict({a: {value}}.items()) for value in v]