From a64d02a5151f49db031edd6cdc43ea09327ff13f Mon Sep 17 00:00:00 2001 From: Chris Elion Date: Tue, 10 Dec 2019 14:25:17 -0800 Subject: [PATCH 1/5] cherry pick PR#3032 (#3066) --- ml-agents/mlagents/trainers/ppo/policy.py | 7 +++++-- ml-agents/mlagents/trainers/tf_policy.py | 12 ++++++------ 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/ml-agents/mlagents/trainers/ppo/policy.py b/ml-agents/mlagents/trainers/ppo/policy.py index 53c2ad0039..7910c6d5cd 100644 --- a/ml-agents/mlagents/trainers/ppo/policy.py +++ b/ml-agents/mlagents/trainers/ppo/policy.py @@ -249,10 +249,13 @@ def get_value_estimates( ] if self.use_vec_obs: feed_dict[self.model.vector_in] = [brain_info.vector_observations[idx]] + agent_id = brain_info.agents[idx] if self.use_recurrent: - feed_dict[self.model.memory_in] = self.retrieve_memories([idx]) + feed_dict[self.model.memory_in] = self.retrieve_memories([agent_id]) if not self.use_continuous_act and self.use_recurrent: - feed_dict[self.model.prev_action] = self.retrieve_previous_action([idx]) + feed_dict[self.model.prev_action] = self.retrieve_previous_action( + [agent_id] + ) value_estimates = self.sess.run(self.model.value_heads, feed_dict) value_estimates = {k: float(v) for k, v in value_estimates.items()} diff --git a/ml-agents/mlagents/trainers/tf_policy.py b/ml-agents/mlagents/trainers/tf_policy.py index 3fa96c6f0f..361bf80e5c 100644 --- a/ml-agents/mlagents/trainers/tf_policy.py +++ b/ml-agents/mlagents/trainers/tf_policy.py @@ -56,9 +56,9 @@ def __init__(self, seed, brain, trainer_parameters): self.seed = seed self.brain = brain self.use_recurrent = trainer_parameters["use_recurrent"] - self.memory_dict: Dict[int, np.ndarray] = {} + self.memory_dict: Dict[str, np.ndarray] = {} self.num_branches = len(self.brain.vector_action_space_size) - self.previous_action_dict: Dict[int, np.array] = {} + self.previous_action_dict: Dict[str, np.array] = {} self.normalize = trainer_parameters.get("normalize", False) self.use_continuous_act = brain.vector_action_space_type == "continuous" if self.use_continuous_act: @@ -181,14 +181,14 @@ def make_empty_memory(self, num_agents): return np.zeros((num_agents, self.m_size), dtype=np.float) def save_memories( - self, agent_ids: List[int], memory_matrix: Optional[np.ndarray] + self, agent_ids: List[str], memory_matrix: Optional[np.ndarray] ) -> None: if memory_matrix is None: return for index, agent_id in enumerate(agent_ids): self.memory_dict[agent_id] = memory_matrix[index, :] - def retrieve_memories(self, agent_ids: List[int]) -> np.ndarray: + def retrieve_memories(self, agent_ids: List[str]) -> np.ndarray: memory_matrix = np.zeros((len(agent_ids), self.m_size), dtype=np.float) for index, agent_id in enumerate(agent_ids): if agent_id in self.memory_dict: @@ -209,14 +209,14 @@ def make_empty_previous_action(self, num_agents): return np.zeros((num_agents, self.num_branches), dtype=np.int) def save_previous_action( - self, agent_ids: List[int], action_matrix: Optional[np.ndarray] + self, agent_ids: List[str], action_matrix: Optional[np.ndarray] ) -> None: if action_matrix is None: return for index, agent_id in enumerate(agent_ids): self.previous_action_dict[agent_id] = action_matrix[index, :] - def retrieve_previous_action(self, agent_ids: List[int]) -> np.ndarray: + def retrieve_previous_action(self, agent_ids: List[str]) -> np.ndarray: action_matrix = np.zeros((len(agent_ids), self.num_branches), dtype=np.int) for index, agent_id in enumerate(agent_ids): if agent_id in self.previous_action_dict: From 557488cbeb8969dff3c5a4e98ac29295b97275d8 Mon Sep 17 00:00:00 2001 From: Chris Elion Date: Tue, 10 Dec 2019 15:42:26 -0800 Subject: [PATCH 2/5] better logging for ports and versions (#3048) (#3069) --- UnitySDK/Assets/ML-Agents/Scripts/Academy.cs | 42 +++++++++++++------- ml-agents-envs/mlagents/envs/environment.py | 10 +++-- ml-agents/mlagents/trainers/learn.py | 14 +++---- 3 files changed, 40 insertions(+), 26 deletions(-) diff --git a/UnitySDK/Assets/ML-Agents/Scripts/Academy.cs b/UnitySDK/Assets/ML-Agents/Scripts/Academy.cs index 6d297f7406..4c1ba5648d 100644 --- a/UnitySDK/Assets/ML-Agents/Scripts/Academy.cs +++ b/UnitySDK/Assets/ML-Agents/Scripts/Academy.cs @@ -93,6 +93,7 @@ public EnvironmentConfiguration( public abstract class Academy : MonoBehaviour { const string k_ApiVersion = "API-12"; + const int k_EditorTrainingPort = 5004; /// Temporary storage for global gravity value /// Used to restore oringal value when deriving Academy modifies it @@ -240,7 +241,7 @@ public void LazyInitialization() } // Used to read Python-provided environment parameters - static int ReadArgs() + static int ReadPortFromArgs() { var args = System.Environment.GetCommandLineArgs(); var inputPort = ""; @@ -252,7 +253,22 @@ static int ReadArgs() } } - return int.Parse(inputPort); + try + { + return int.Parse(inputPort); + } + catch + { + // No arg passed, or malformed port number. +#if UNITY_EDITOR + // Try connecting on the default editor port + return k_EditorTrainingPort; +#else + // This is an executable, so we don't try to connect. + return -1; +#endif + } + } /// @@ -267,23 +283,15 @@ void InitializeEnvironment() InitializeAcademy(); // Try to launch the communicator by using the arguments passed at launch - try + var port = ReadPortFromArgs(); + if (port > 0) { Communicator = new RpcCommunicator( new CommunicatorInitParameters { - port = ReadArgs() - }); - } - catch - { -#if UNITY_EDITOR - Communicator = new RpcCommunicator( - new CommunicatorInitParameters - { - port = 5004 - }); -#endif + port = port + } + ); } if (Communicator != null) @@ -308,6 +316,10 @@ void InitializeEnvironment() } catch { + Debug.Log($"" + + $"Couldn't connect to trainer on port {port} using API version {k_ApiVersion}. " + + "Will perform inference instead." + ); Communicator = null; } diff --git a/ml-agents-envs/mlagents/envs/environment.py b/ml-agents-envs/mlagents/envs/environment.py index 57d30956bf..ff6d381149 100644 --- a/ml-agents-envs/mlagents/envs/environment.py +++ b/ml-agents-envs/mlagents/envs/environment.py @@ -92,7 +92,8 @@ def __init__( self.executable_launcher(file_name, docker_training, no_graphics, args) else: logger.info( - "Start training by pressing the Play button in the Unity Editor." + f"Listening on port {self.port}. " + f"Start training by pressing the Play button in the Unity Editor." ) self._loaded = True @@ -108,9 +109,10 @@ def __init__( if self._unity_version != self._version_: self._close() raise UnityEnvironmentException( - "The API number is not compatible between Unity and python. Python API : {0}, Unity API : " - "{1}.\nPlease go to https://github.com/Unity-Technologies/ml-agents to download the latest version " - "of ML-Agents.".format(self._version_, self._unity_version) + f"The API number is not compatible between Unity and python. " + f"Python API: {self._version_}, Unity API: {self._unity_version}.\n" + f"Please go to https://github.com/Unity-Technologies/ml-agents/releases/tag/latest_release" + f"to download the latest version of ML-Agents." ) self._n_agents: Dict[str, int] = {} self._is_first_message = True diff --git a/ml-agents/mlagents/trainers/learn.py b/ml-agents/mlagents/trainers/learn.py index 31ad40a43c..79fc8905ce 100644 --- a/ml-agents/mlagents/trainers/learn.py +++ b/ml-agents/mlagents/trainers/learn.py @@ -57,12 +57,11 @@ def from_argparse(args: Any) -> "CommandLineOptions": def get_version_string() -> str: - return f""" Version information:\n - ml-agents: {mlagents.trainers.__version__}, - ml-agents-envs: {mlagents.envs.__version__}, - Communicator API: {UnityEnvironment.API_VERSION}, - TensorFlow: {tf_utils.tf.__version__} -""" + return f""" Version information: + ml-agents: {mlagents.trainers.__version__}, + ml-agents-envs: {mlagents.envs.__version__}, + Communicator API: {UnityEnvironment.API_VERSION}, + TensorFlow: {tf_utils.tf.__version__}""" def parse_command_line(argv: Optional[List[str]] = None) -> CommandLineOptions: @@ -171,7 +170,7 @@ def parse_command_line(argv: Optional[List[str]] = None) -> CommandLineOptions: "--cpu", default=False, action="store_true", help="Run with CPU only" ) - parser.add_argument("--version", action="version", version=get_version_string()) + parser.add_argument("--version", action="version", version="") args = parser.parse_args(argv) return CommandLineOptions.from_argparse(args) @@ -395,6 +394,7 @@ def main(): ) except Exception: print("\n\n\tUnity Technologies\n") + print(get_version_string()) options = parse_command_line() trainer_logger = logging.getLogger("mlagents.trainers") env_logger = logging.getLogger("mlagents.envs") From 9e091a8994d89f1b6c0dd84288d91da5fd649b91 Mon Sep 17 00:00:00 2001 From: Chris Elion Date: Tue, 10 Dec 2019 15:42:49 -0800 Subject: [PATCH 3/5] Release 0.12.1 doc fixes (#3070) --- docs/Installation.md | 21 +++++++++++++++++++++ docs/Learning-Environment-Create-New.md | 3 +-- docs/Migrating.md | 1 + docs/Training-ML-Agents.md | 6 +++--- docs/images/barracuda-package.png | Bin 0 -> 81275 bytes gym-unity/README.md | 2 +- 6 files changed, 27 insertions(+), 6 deletions(-) create mode 100644 docs/images/barracuda-package.png diff --git a/docs/Installation.md b/docs/Installation.md index ac5fcdff67..cfb6098036 100644 --- a/docs/Installation.md +++ b/docs/Installation.md @@ -33,6 +33,27 @@ The `UnitySDK` subdirectory contains the Unity Assets to add to your projects. It also contains many [example environments](Learning-Environment-Examples.md) to help you get started. +### Package Installation + +If you intend to copy the `UnitySDK` folder in to your project, ensure that +you have the [Barracuda preview package](https://docs.unity3d.com/Packages/com.unity.barracuda@0.3/manual/index.html) installed. + +To install the Barracuda package in Unity **2017.4.x**, you will have to copy the +`UnityPackageManager` folder under the `UnitySDK` folder to the root directory of your +project. + +To install the Barrcuda package in later versions of Unity, navigate to the Package +Manager window by navigating to the menu `Window` -> `Package Manager`. Click on the +`Adavanced` dropdown menu to the left of the search bar and make sure "Show Preview Packages" +is checked. Search for or select the `Barracuda` package and install the latest version. + +

+ Barracuda Package Manager +

+ The `ml-agents` subdirectory contains a Python package which provides deep reinforcement learning trainers to use with Unity environments. diff --git a/docs/Learning-Environment-Create-New.md b/docs/Learning-Environment-Create-New.md index 0deee59a76..af9f41e9f8 100644 --- a/docs/Learning-Environment-Create-New.md +++ b/docs/Learning-Environment-Create-New.md @@ -26,8 +26,7 @@ steps: calculate the rewards used for reinforcement training. You can also implement optional methods to reset the Agent when it has finished or failed its task. 4. Add your Agent subclasses to appropriate GameObjects, typically, the object - in the scene that represents the Agent in the simulation. Each Agent object - must be assigned a Brain object. + in the scene that represents the Agent in the simulation. **Note:** If you are unfamiliar with Unity, refer to [Learning the interface](https://docs.unity3d.com/Manual/LearningtheInterface.html) diff --git a/docs/Migrating.md b/docs/Migrating.md index e87714297b..967de8c218 100644 --- a/docs/Migrating.md +++ b/docs/Migrating.md @@ -22,6 +22,7 @@ The versions can be found in * If you use RayPerception3D, replace it with RayPerceptionSensorComponent3D (and similarly for 2D). The settings, such as ray angles and detectable tags, are configured on the component now. RayPerception3D would contribute `(# of rays) * (# of tags + 2)` to the State Size in Behavior Parameters, but this is no longer necessary, so you should reduce the State Size by this amount. Making this change will require retraining your model, since the observations that RayPerceptionSensorComponent3D produces are different from the old behavior. +* If you see messages such as `The type or namespace 'Barracuda' could not be found` or `The type or namespace 'Google' could not be found`, you will need to [install the Barracuda preview package](Installation.md#package-installation). ## Migrating from ML-Agents toolkit v0.10 to v0.11.0 diff --git a/docs/Training-ML-Agents.md b/docs/Training-ML-Agents.md index 7954b900ac..e469397f61 100644 --- a/docs/Training-ML-Agents.md +++ b/docs/Training-ML-Agents.md @@ -14,15 +14,15 @@ expert in the same situation. The output of the training process is a model file containing the optimized policy. This model file is a TensorFlow data graph containing the mathematical operations and the optimized weights selected during the training process. You -can use the generated model file with the Learning Brain type in your Unity -project to decide the best course of action for an agent. +can set the generated model file in the Behaviors Parameters under your +Agent in your Unity project to decide the best course of action for an agent. Use the command `mlagents-learn` to train your agents. This command is installed with the `mlagents` package and its implementation can be found at `ml-agents/mlagents/trainers/learn.py`. The [configuration file](#training-config-file), like `config/trainer_config.yaml` specifies the hyperparameters used during training. You can edit this file with a text editor to add a specific configuration for -each Brain. +each Behavior. For a broader overview of reinforcement learning, imitation learning and the ML-Agents training process, see [ML-Agents Toolkit diff --git a/docs/images/barracuda-package.png b/docs/images/barracuda-package.png new file mode 100644 index 0000000000000000000000000000000000000000..217f9a0958b6a6f7e1739589e65b21ad20c936c1 GIT binary patch literal 81275 zcmZ^}1yCHywl$0ecMB4Ndth+a5Zo;UcZR{;U4y%8aDsbqcXxMpcl+nud*6BI-LHPC zrfR0yZM$W!y;g@P$cdvM5+FiAK%huUd{csefNBMQxZz>JC8Zzya3LTN`#>Th3X&os zBno!cCLjxA2ndOgge15h%Idg2=k9>k2`G$cOt*8QynxR_LOegEB%lx|`vS5J)L_MJ zzWkI>#P1Zw_#mD?@B#9HVglo_S!n^M32j~ z8QEOB_j^Uo$gU(8gis7kp&ezqMZA3WQz$v+K7`MS_$jQk{WmNRd}CE+4U!==DlX4Z zaVjpySmtEOtYjL&_*qC2g#`;+9tdoanX!T0yj)wFH=1R{Mkvyu1Kx|Ri$$&Y$(9Zl zUiV9wVFeD^SLyVd_FkEUexsV{UB0?RNzw--ikvTZSMT<`Zw*F3$wGU)T&c}4|J;d~ z$g{%^Z@I+-`Go{hG#io42bBq;;Gn{f-v;(`2V5B!%r_srXn0&G z)D3?N5?JX@sY+CAAF@i66BwLq#2Fv|4R|hCjSgBHR4u4^A4sVz}Fs&eG`B!v$ zRw8>rMv*~~k~@4utNN;iAxHrw`E?4Nxtf6Xn^cTh9wbPFCnoJDvTKM(*9H?CGPGgf zWe1F*0rRI3%n`E@6PXWtBn9~PkoH)tKKPv;-AYv&Kafg!69Z*C3JjABkSg;RG%T?0 z$m-E}13aU;HxIb5(vcYPl70?%lyzA4op!QsE!pz_5niGB95vsexxs&l;ld#Rr|Sdg zC+^GYz26GHAVx6qW9-aCmyjTXM>s~v4-g4p4bbUQ?!r?HG5zL1Er#CMv)fbF^V-9) zg|dZi8=fb_Lh2f8Ac3Ffn8%_7eMoi)dB~6=Ge_MVvmf(er*4PkO7Y703gQtWu05{xT!A`DjT_KYA*<{xcT5?eVy$wn z{9f8Q0Y5P?vrs;nbE$xp3o7T9w=dq)84XJX087U1l1Edtxt9peCIrs8!6>nx=7lGh{0AFvY$<9e9(| zQ%G}hN2k-rQ-sr;lTov}73)Rs6Fx>8X3-`J1{3;B21Vvv^EUbVt(*MhIWZ*|>!wMH zg_CfGSlce!5q%7O<1#a{Kd4-(ZmG~@iVM~Xq-9EEty4Bfv_@G*?~)zUy7%PvJg%j# z32`d}YXUnAqC}%8=cY!LOw}zHtwpO0GU^+h%Rq(P*^tHE{k>7HlJHivuEap_=Y z^JaFjSN&vVgYU%PAa<*IIe%SsmVL^x=Gd6CG_7Kpph4LxYb9gVekH2${ZM~5=FoOv zd+}2ocMJFPKC;`9do};P>re}x4y}%$+hEIW%i`MXT9hZU#~*<@0r?b@5#&AnJ$hYD z-74$2b2vfgc2%#_x1Zk8-oL!ne58adghV@Xgj?#$yr?X<$5Yjqu5Qn&bGGNyy^dzXG=@w%K)&2#?+wx`1)XG(}-2 zxdXVixhC6J9dpMt{#eKIn>7`;mF7v|<{582xs3VVP}VTNipVz9cF@+*mU!!RJ8at+ zfdiogvz*e53K3H??n2U5vQ9Gh8hYM6UMt$e-FMK>7^(crj8<~p#SK}n=!s~* zawY90ZLm^XCHcba$)w8nqq7-|NMhi}{SWiOnq5SDu2-S1^3#0Nq0^c9?gi%(#Cz`7 z(vN@-UVez3$Ke~{zr)c|FjC-H`fIjo2x<@(X&0#j>AGY#1ABSGk{He~)PEv=tEN1Y zc4EZG2o5!;j5hMkV;9GY40`Z&M%h(bl$B*UV`d9 zPG9OC{ntNus_AAckT4#sA5>KxxsTlYoi}rEThOiFltpX0)D6@Z)gBC+jO~>OF1#w- zbw4E5GH7dNG@PvlEmN&Hxi{b6`S%X>y7v0>?wy%3>c?Xzwk$WA?k6bqPyN=;)1K0< zuCA<}v+KUH+|{Lf!0}9IONeN$bFyA~)kkxdKiA1>MNwT+6;;jh#(r@D>Q1!nnQb3U z5opO;jmEv&KJ$9py%v{$uc-?>+OWs;_K*L4H|MapSpJh#q#6M@da_iEKkc-uvW-1#vs&IX^7lZ2+R?1#gw{J8s z7|9V;U!Ys+&21xfuCfcNo7NnU9^1*n7ff?@s@0x(yV81U?2Hs8x*w-bZ+FyR3oH-& z^%0WQS3KNU@)$H6F=y3qR-ehu z4|HpFA78y`cRj>Co~vuSXv*s<_0ja09aTU zz!nVlu2v5EE(})ovT*=eTaoAX2%3#ZClxac1i8|Y-w8F38uNn?qP(k6p@r)ha|5lvJ1mYjz( z1tmRwJ#KRpRJ@uT3MKY?7O{yF{zpDkb$CZ$uHBxye{8`!sN1?Dja% zELUu*6etf`Dl7S^OQ7mD;*TbfJY5S?9uHj*`p=O5?q7%t#_4>O67X^k3JF7!s2CHM z%6*D3nte)Oahy|0U=u5U@24qNDmKfsU~xK+RR{3XUhW#?iy0slE3^jXQCKGBsSZpWS;q1! zV#VvfLr0!0^Hs{UL{ewQ>lh_cnH8r#%Ebv}97$y{*5!FLe#uAs{^B%PF~#H*Ch@(% zLaRYG&yKx#qB5m?>MF!rDwW0j&u=$X&>vt_Phq}PW3pZB>*7Zx+qo|wB0_RjX9{VP z1UjV}bsc(GS-0c)3c&);=etMCtO)CW?zO*mWAu1oJ0OBbEfMvVfG*!6{6uD*%-jhO zy;Bp-+#URWiB68-T z7K6vcvZ;$AFV{2VJWhp@?+lM7j;smRPMKlGn=m-;???7|zpGzuN;-$XK3ftp{O>WU zgvZA9<>%(j^Gr)rqHU|L9*>9%wM9_U!I-Wsy{ZPVs!m}GTP_tu%4jx_{ZI+CbEl}X zXO%Qn(lo%_qNLJ!{jl|ogs5j;{jTU8m7J}{()sdZ=Fc19DjHFjTFma!IEU58^2OiF zG(eUGmP!9Q?f*GizGNcVpj9y?ovl2L#~~$EjCBnJ_B=Z+d7wXi%)eHCCw7I3)G<b7Y_VH-vzXXX+wVJVq6st&rEa{~qr*8U;=;R29qfh?Wu~>IAF8(NNrkO2G z^jvKo)G(f2u5luYadQ-%Nv*}puN_%z)uhOtqB%Wp$}?J=ud}cGv@dKSCMFhrL9jJ! z4SL_Ex(GHhHs)ro>i_%x{I^Fj$R>W90rMBjD2_i;Nt5u(8Q2?8QuB&~v<+v2(07er z{fLw#wXL;JA@D8dswyZ7dj@*A(QBNwV1WAZy zNd?GRR%rY)5P?sS8q7v4dpv!0raFr8ZsKBWi(zXIJsNUxu^EDfnB$@9{-+Syj|%(6 zom9ze+>VTKuJ&H>C?$K+ry2;cwdAt(r!vt;M2y!m%F32SiPM$8zC696saIII(yNt| zxz7|}Hzy=~O<*05cF7-cOvL)4Km?Oc9j$Ajje;Pjc=A}*u%<+X6|pl&ofY5z*k&ml+U9VXTNpj)2>%kD8P9Cq!V)uQ82#PCwC)Fi+kXXl1=?l7iAla zN@TQD3*tG*bU%wxE%`pk*jouMqubAL&P2@;@ND9{U$IZsPoh_o)A4?F+?6C-GsO*}>c9-jk6Jdq zsNR>oAC0>L5WY5YuDRsioULjGKfeN(Kwhs~i#Go^g80Tp2|;`%41LI_&jLy(G0qaK zZ$}C0^tWCO(dSFXQB@laV&XF!1f;v4HO9urQ{;+8U`muNE&aeam5~*aU3(FDd)QWz zESor9Z}%SXIBPm)biJKb%g?vVzq{-w9=2|OE!d`}rXEgaHr!ctUQa;8p*ygHL&nP< zrCM{{Cz5rmQbaYbR=l!KvGn~vmsoWKMChyni^W2vKcjitn*UcKNX~VS8a9=Bto?NR z$hlIx5EKTl$K8)*zU)XdCS&Qe>}E3)0ZClZ@`Ww0cgxjIry8zLhlT!~I*%`}_v=%o z>a4OZAqOiAR(;|48k!aah%q`XE>&{`4W^S{%iG`Fe53CVCdq#U@&64`{sW>?;5z`o zVuqjyhtnn1CdXqcoxHi8%V!iLlP7=?`DD$wKuKK_l|Kq0hp8R6$Ait`3itdi%nsJQ zZXZ@a$ni^W5bji1J+57g?Y7vs#{@cW-ME}AvvFkzOaTUb`)C^HywiYbkl_1^edBf{ z@6OdQASsNoX+XW@ylQZr)35dafVK`Yn;+;t8)WFZA}-vVhzgOdJz>}-qx7-={6vIh?`2v_^EFm9G>$NXTc65P4N~Dzoy&rW;8^Q^>?ebb~ zrlc|Hvfzk46e`hzHntu+qxF=hu zmBj&GhQA1?(38JwInJt1sWet})I#!Z&z7i}TUO9cpU>A$OCG##E&cZ%?+*5fyHE=A zGj%hJuM4YK&k zltF=|48v9(^HW!VbH&DgrbJEN-6xsXxjdYRmqXskG-uUVsB%%LJM^Es|6lk$LMYoz zwa&U~Djk>Fbtgu=HU-LvfE9MYR&lnf=!!wkWv`GiiO&Y)m6LSz$9nzxd$CoPW%}RE z3}HeIZGI&&Wz|e4u(I&IeAk@u6Gt2&FZ}_N4qpiw_D?J+B>=V50;vpXVLx20C#P>L z2xT2L2N%|^p<+S`a@XKpy}KS4Y#%YuBeeRT2<|%-(2>ZX`OR8nC0p2kYKCz+k%mMs z3jrfc82d9tTHxQ~2!(`7y{U#k<}~oSnwA$F-01XwWn8v_gNo6+T?A%*aIUwfVBiQ= zy`P7vz&E~Zv-cJ|>nE9USG2H7F8ld+Ghd)ENV8ix12jf@>lEh6>GH$Bg<_Y)`T+AR zX-6C8js-S-hCj=sWJnBvSb5Qe-WT@kpI7E~_7oWnJv++c>u$y|!>OE+8D8Uc51)Lsqehg2ERY+@$H}SAo{(HaM{6Y6A z+z9YN8JR0pCm-j#4o|lq<93_ZYv=heg4^zeF%U0EzlrhlKjTA)k{XQIY>}5v`hqc{ z#^Z260uG&t;G59&eFj}e+D-b5zn;C}-3Y$ZJpU{EG~n_z*N5UZnJg!Y(Yxd za_yys3Pj?kA?=S#&xKLH?}R|DhS!FPC!T5*sWDOkReykoWQY9Wv?uUBoGa2ZY5*=t`_Cu+YLom5n`)kgZ_np zSeIb>NLSvMA?I~_V9U;qQR7~!IjZJ!j$#|A{aS!QqgEo7!}2!*;Oup4d;3ETY^LZ1 z*X@k*Epfm3e7U0u2H#$9I=_4U%ggmRi{(~IdkX)tWB|8w40vljfk_O02&J}cJwB)ZRR zWxn=S+vDfu5DpNyY? zPoSq`Swc=T#v`k&yJ_T{k%?hZ;`8O&w`OD?$!OlZvpBy1YH^8;@u5PgUxRFcXTkyuUqbh$KcwlYlXVVWx-R!v-{H zu{yuL>PCv!>&2zawM4hQZS4JS*?L~pbvuI7fy;@6Tr3>Dpn}-_ggL|ce64l22TR`J zJNK5MVCf3J%jRLE{h#sHr7g$tVrrLacYK#r_cyS`fU25yzPOGl2dM`*N?_i5vW!Ec z9j$x6m+^Z4B;9Je|0}K=|B_|Dk95)5#nSn~e2>7QUZzo(jbbf)6&P)Z+9|zQq?oIR zJ6$OMk!_~7UANuK5BF$X@Esc-MKgdkd!^aAqA$o@sliIS^{3U|NJ_P0>rArx&H1|S zKHQyhfy^Yq!P#oFJHa&;aH}UI)uq9DU1zD@k{*jnCi*kK+X3j;?eRPk0rmGT0_NRo z#Z9ji2OUSs2(?ui9nRk_`oz3OLj zT4#R8)&q?3Gi}CikM#$fD)=*HCfOJaIj(bJSsit^IwkGSa%P$1Uo;?@HxbpV8Ia=K1VIlynYtUa!_FLs0Sb&5zwyLRzyk0}MQe7b6uMZ3UGJ z1YS~~nzk>>L=3&bf#&E98Aaff^YS&5pG{TgoZ7hYJZf;*6)gnVOQw*Bv7srRCGlRR zbNitH&Dj8R80iQ4<55XPZQ^n5v>a9>ISxEk#?yz7S|niBA|XlFOWhgQRDdKuitp;D zOe&ismZCtS!vq@tO>{UutC%;QEVtmxg@2_dQ%0iNQv2JJbj2R|Dj2%tp`=SnXGVvE zk*BzKz<~qFdb9I+;$*J4JEo4ra)$F7{tLN|qUo{Ba_DizJbz(#b~hZ5hnpOomq!>T z3NC}k@v23h53R4A84v5@Wz)UR{aA%Z#^Bp~X!oljamO`@eZb!}B~EM)7}7(?;LJg||#%)V^tj zlD`VFNe10E+V6j^rG>Ml8P6CiDfe>B{oDdXhZ5WL0=aU^b8W(uF$Di4)8RTqdVbIK z`l4skuv&t=_0_HuBldCGx*Zg|qP}SEFZ`!EeU}A2N2_OJFCmj9<37s%3}>p!P+VVV zoYki|1>t@u7!u*ZW<0|mGb5(oJAT`7edYF&Zn(s9%*{Rj7eJq+?;c|J!#KBN-`E&! zUVcWczp($K+@IrJnQc|#3Z6gL8@!{OLDeKJKbwiX953Ap(jCc&E4Ywj<6>hSRQ8!K zMflw*F5CpkL4`FscMIUaa3P*8w1?8t0zQtdCNrk)_=7q6`thMmPY$1X!>B)f4G{aF zZq?eaxczeO{a(V}7a)SS0y@+?RQMCwhrF50 zN7{71=3YUy9G*-IeL5}p{wQCjUjXfZm_ZH$+0_;N+V*@leJPtEqjj{0$~vFk9@Asn zC-|xVto~uuzS4*%i$gdQJ@U{9@5e-O%*T6t+2m&d+cI!g6`Pz~#EW=FdDwc^I^Rk@ zQsO~v60;@5~Ip!X58td!Ry?}+Ha50*c~ePv>}o5$H+cR zjR!XEtm$bs!aa(6K=h+_Ud^2uH7F%PIQ`oo5;f7_WtQ4<>ktV7-lSM2d#1FF4+)lF zY_&|)MxS#u@FOX4ruaR7KEv2^A$joQc**C0lyeh`RGrX^ChGv+<89SMwdIF1f=em? z3K@8UKRJte@*4}Ua?$lVt!_N@ZKHht9&qTuR)>za_m(3pgt>U=@5G*9y=JG`SshvR zV+C+XojQ^{WLpO7XpuZ~{`IP>iDW#!<}-MO6*Mq>09X8+>kiJm(56Wb3(pAiEA#3u zo!D#{0)C0unqsxeL0@9}KJi{trK2ut0gaH&fk3K_jYKKsmVd` zbMakg?*D`p?hAr2!W`vNuGIO;ldFHz^qCI1G(zYbEz(!C#SQK2YH_MIHJ;jkEhdU3 zmA^vmlW9@w)Rm6CAVzI~M+-V2{U(s<-8BJ&Dg>xrn<30)X@h7K%4AXyzBgM^E?0dZ zLwvLVAa1LJPgNoJy4`M?_w+a7=`HzE-n@*@{+QB#Mz$bR7H^qA3H$WO~ zkSS4+J1T>-*226n46Wam3){jw-sxx7NTv%qi+)e0S;l%~PDal`DAFyj?8R>sD%IUng4PI<^J65hc0!mx1 zE~U?L?rj1a|60gKV8g0Y8j~KA2G6uWCY*%}vnI*N@n=>SmhlkDe!%^p=XvWHQ2<61 zsm^Y56_WG&%B8I50bX1}VoBmu-qlw{U6?L7Ne4_(cz{#M&$x%NWM+|ZQ=x3qFCkLA z1NP%LtQpKZKAm_wSl7fRf=t0bD)oGIB7U>3yc3rwr%>%?qQhCb<$Ya@)-+Kj`85OS zTPrLvxGa5Ow0hWb6dKX4yNbv3wbomi>chfT^K!@|j6dv}C@ky<8R^Vm1Qv9*&6cWQ z`&~*)%h1+aJNVYJ1M?ecrk%P4Blzg4=ReilGUHxC)dZ5QeNbQ`dGI$gpJvC8+fp3% z=1aa@I5v#-?9T&G#yJt;1`4>H3bvC|h%zxu#1!2AoO-Tajy5(6=s4OK%IbDoV6U@g zayMYtGM;&)??-#t^rs*yyNO*gAb6;?%%l0E$o=5v9w!zN|0ozwN+ih;3 zVxBS+FG)tT;U2#bUNUJqAm*T<2ijoN{XhmF4|5uc)qQ)!2Q?iM z{_gqAp#ZhVS%-D=*OAE<*R&t|sWCcqB=Xk?bYf<%lnaG+9pivd>+;577N`9^w?Deh zPd1mY6_}76;7)SWbwj!@VCD7y8=NW{oz|6_t zVS{mP0fOz$^F8+OPpw%!Nb_>eI(I8zh=b0wj)C2nEbz<7w%z+81cHbOkeYR|71VT= zGzLhQV%pjx@2O(7E<_2sCfMw8?sMEfmqY4wxmyI@1_zsqNn1>%pk)tE`xuVNw!FNE zg{tZg4aj>UVsTE@C$n^L#X2>fEB|5Zab9=7Z_P!GNwhv99IPlN1YmL0mcouIo{MPb z59Y|}?NFM!WN7GM1*d!fFrPBdr|<7IvVnu)n9JCOLcf^%(bz|MSPzPpfIrFlKK{HJ zHK=3eV>T6h2=;xX3>i<>Qb^$n@(r-d_`2eu8{ilSeC?uiEXdXQk~|v4HN8)r!CS5- zaK_aBG^x}6yvG=9@7$(iyQ2R=((q~{BO)lEM19h2T%E@es_>4yL^S+ z<4@+((|FVR?vx7dNbHiF^59~5eJ^rLY5gIZGf>8TNHOLY8TG(+W!XW4A${C4oO`El zN`l)|WAuzm558s?I*LfUl^qp-5N?Og*=~PX`0Ku+&U*63Th$?AyP$7&}{8*%W&3xbR%PN}BopP}C%toRxuqMr3(rp3-!1GXW z31-}!&~80V@D6FQI~by8q~z8atxE{f>O1 z44K5YKgbV}kX0|sy7zBomlD!fi#mhyS3!Lw21zt|)eyhDg-KI2yJ{k%*=(>K@GxKTUlQ|z7Mkc_ zW`6&cBK$7Zy)F=ENBiuo?RQ}YHM0Bq?MI-IN*U#H^CwE)C8xTH1X~!J(=O+Z7uQbk zBSZD7|8c31q$r8r3sm9^?1CFFx=%|yl7!wlV=?zDT7O_musT9j?2KV$-dt^1)fJht z(>O`(-Zhu zqW~>b{z4|=QAy>r{`~C}991#z0>l^C%dA$LSoAs|#w|7dL+*%QF1pdi;A#r^;u zGuy!|yBlZm+z`lCaqt%nxz?)T%-7riBF((L7Fs34GYZ7lr*gL-7a`xuMD}}={wHB-oSfe%T zbwVA^6vyF>T7kI-Ki5>32dcnYB^?8UoEI>dt@e6#J6vw4n3IcRc;*^UVHJ+%<^(X&=N7(dQYf94j;D2SO03yD*2sgki8*!_oRoKp{1ofJC9ceT|uxK;EqBsO;2ISki0mc&#i`6@_%T zyOtf}@&0G+{N`=?~ft|sOfq-wr%f7qW8uLk&v*P&xK1x zLc^iPi$) z?~T&4J~OJ6YpL@%ofI`{=E>nhi7xv7iYfb1l`~VWy}a^qd|g?dU)8)I5unQm=Hl^FQ0DM8Qnu+HQyWsmXTX+#e1} zCK}egnmIfd8mzO%_Dd?-ri^@B)84@nnPiR0C=7{s)MtkG$8qmG3e8D6Io z^zDUpb=cH;^%|4E_-W&_mBuFRDE_FdU`DX(&%hwZ~c1W)q<+)g-Gr zq^&MFjj0x4&|6+DEz`*Uu3J4sO@kH0RlHUZ+;b`yE8Cw=>z+z8T9MksDBIP_HjaGn zHJKv{#~$?zfw8l8eZQAxJp^XIaB9^kg(+-h`j#84=a-DvGH~d>AMD$KnQDWs#|Nf^ zE&PseK9HEu*Rsgy3aYD4$g>XcWIG=a2jR1m;2n?1)`9 zAYb{e!rQE- zYvBnGw}9y!SvU9Fqx?EM(?B@7vQ*`X4KFa?=@$W50%sR5qnzspiun66b8&y+lw~+AaHdG{YAXz2_H`{=82a^u1*t0>k^neWrqikcJWmKp@q4`9mo_u| zeGzGcY`ddwhqNb>>}taxxbqW@!&_e9Ht&m0{Je*0u0{N1MMToEnASccv*FVY zw#D=DOfmThvg@2WFz{7}YdSG-ySA3C>_cAJCrw&yF!{gf-T~3Z1U)nrDD^PMBy>Jq z7}e9;`TC5cGdD}=eFOOjz;}S{F`-lSYH++a! z24S?~;>scm_>)t$1~w{sq3h9IfJ4*}I6d4QAdk8U!$mG+-8a<94{a!;MOv8H z`V}FPY}VV;De0E6dx80|>X3^=K@2ab!O>%y7LJRE>F0z$%1CZoFxia&n)pW8CGAn$ z4Ho^8sUm7KsUVFSwhGuoPvjEK!V*lJUs*aMoq^A7p(l5$OUrYiCv(%O+Hrj^CR8f% zM5j&kvNowk-;0d=q*nm}_h5l~9<6OUypIk0G-SFBCl+La(ABG7?%|1>_d{T*~_esHC z<6Ii&^j}Q)>tO(x+B^&e$umIZe}rt4MShW4S9a4RSWWcROix`yyBlS!##@~t8?+RZ zj-WUawneSfa%SByb!}^=gX&3o>!H0tOBQ&rB?hicImo1qT6j{NA_}4B(mI42_JvPs zs9BhkW3Uykd@IZ-m+TLQh(h0C2R|YtLSED}gJwa*kF3`l4-3M*hLd3FkNKIV6$4wX z98FuY5bjW1YgW7G+ z-$OJp%PPP`#Wx|DEs!PD-v~etDoEOAh~?soJKM*MHQ}MT@3sx4$?M z%W#VK(h+DA&@U$1;rSe^wTltfarh;w0Wvf~gW4jiZ2VvPp&dDCNPw1!>p)-hYqC|3 z>rvNO!w0k&;j~Ydo$PV_A!|V?UN`d9v!#;b^**7(& zFDVN!Hyb@$kFAu9SzWM;U2*j}@j2nJN|AQjE*)mR5Q!UlH6W#cIx`hwX77B9DfWVu zbiwRI4UJl_)bDm!k=Q!;`T3oh$sjdzeL9|DJAeriBcrrD>ey6J$s}iwa?1q6Oag=YxedQ+CNDjoHJ>}wBwuYm`$P!*(Z|I(bMqR? zL2uJW?jt>vktcWXOE&%Fykh&5{-HWqpA>m0oO|?SvBuw@>7;pd1me;qv+}Sn;KQfn zw%gQJ5-YD`83OuVEJ)U$sH)BDUeB`h-s!9%U)U^He>;A@E>m#Do@Iw!K)x9DJI|q` zmTwFFU}9nfTlk7%yE6~Z3T#+$D>;LH_%2X(qK$9b{K39YWwxJnfO@TD=v$0+gr*qH zxC-rW-6+*_s`Df7gvHd9%i;WzGwhg55sC%8JYFTLTBQ`<%)`?rgr0kU!T?C z>efEb%S`a+o=+kYwCy6pjPc)V9WMOJZPYsQ&TWg1K;!W)fQAz0G1w1IvzI`e#tP6a zFR)m>tAcg?$$+%5^0mL;FK?K!dBn4LV!t%p1N_2gcZj}X290frJv_fErl-~q=kkk$ z!6k;tC$WRdL%oO?ZX)(?aL?;DN{sxfbQPMU?E5mYzomhaA4Hul^P6*zZ9`8!7Y|q= zNtXO#Yc{h@O@M~KhpFbEjqXVK`9*h;=R(`Bpv!nloZlI<_F za@PL-rl%r6_hk6H7V0N+vCqO4uqR~$MPpI$$VhXa~@4)@8scbS02GmZZe26fqCEc5KN~au%__3XBKqi zFkV>S3K6PjQAeT%U-$|-p{XUJRd5!M^TohOYsK3mxH;;8;eM^GLfG%OGwvTQX-mP< zvowb{MlHFP+}HU{AkCEI;hZ zRrb($DOxAdF&Hk=Ij=e<@h<7}j;riNZ|-o`B_4v$d3?EcGg#dAu4pBC&6eSAmGJu0 zBDHlZR7;P-jZFFFYAEU<1(%84q99nEVh4Lg8Q)gN{4=i1wngM^D z1hq1L1tMW^q*?&mOs`0K!l6<$oSlA*x$KDW59jAgB^ZMNW=83tRo5QQkkKzci*xR8 zPPONh?u1}0(ppd14Dnrp`5vIc5!2(lvqctF%p&3Z4JspVxRN2%0Gc9i0m6 z_Ir_hzZlD5%T>?1OYs45@AXslvt3I~Q> z7)xE@lIsGVv(8k?k!RkucPF)u#~kCL9gB-n=B1d{il_227Uk1Bdk!1#bgI8$yGx4j ze_PT4uEb>cQF|g^24+@MwrulvMf(Iez6*R0C7Na&V(uS%_+)s7A?H)rc+~zxbOs?leVeu>G_7GJ??g$ ze)%Z}Ia}B8E|QIp6Mh^Zr4*m$A^tjqYN9dVUlh0Yb*^xMqOgW-I!0wkHt2yS0J9?D zcI;tyN-6K?s5kZGyE=y^CPzhlX~0l*+5KRw2aHieV;)^~n)28h8MRgKW^#-`4OYG= z@}^^~CU803XraeZ2XMe_WfH#O1mEllBwDGTK_*E7`Q8MPB_S)2=6G#6@=sM)?r!Hs zFi8g<#ul@#Bkgl`S9ny|Fuj4_!rfBxK*IyNoP#2JqHc~Pp5Mc;iGc*}T72j~ds=*f z0fIm+dpSH-5L zo^We+$E~O)J*hf3*)u! zFe9bVke-u*xEZqkjgoTw12T!0fwG^`DVSKf*QZiQHaZPwc zDDqb^J>Eq&X=}z^ZDOpY;*W-%8V@sFE`ursSAGd&+qPn2bMqWVL5ZH2=c>xA2=;0 z6zK6?f?$bwCCnc}f*%jnbiHt9R-*n`1+0~x?8M0>9+$VvSv6f!@n=6BY)9>ku#U|P zg)10~PnAn-!HkFyNE#6qZotDR-AT>jm>~)?C`=nU9}^6gDk<0B2x`VI7mHe>q=K(c zX}g&mc6wZ2kr0R;lxKUM0$I)a!QUuD{EKJEi#43uo)1t;xk^GBoW-QK$Fp-tcR8Xr zm6S$^I4FQ6+Ltfa%qBb$f@1G3zlA1xuBv)-8cU_V;Y3zig81@dJer4moTG>EpT9#e=fsh)lI_J%5!Sn)wny zLu_r)7FeC~NR_xUaa+vg6<;(MU*kSzv3QUeh#Q-|^n$7y$)h7VwDU zH{X2l@*CL?M=urX25=&H3gXY(UgZ=TORQ=LEZq08Lu3IDhJ<6BNuAPYb*yEQ4K9NQ z5!0^w`%T?4%B-4o@gToOxng9$5$+o43|{9Y@63{)5^7zJ<}lm!s{XlP z%8=I2BZR~G0ZfhE@X#)~fcX~&*4c2#dm5F+wX!kYqS>20viWqs!I58(2%uB3$bs^j=mK6iAiE+sa1** zS8jn<;9Mt(2gCbd z8mF`L8Kf@fE`mENN;f9AvT({Xo!ZMB&{)CC-=EC(SX?7%=p6=tT2$YZv~IDJPf3lX z8~Xz)1}W*dUXda<0AEs$k@Fshv+GUH8W$(?VZ@3xH3NzN|&s4)FE+~!`Bitdy!JbjDE#B7o^L8GL?6=iExKXOhApkULbH?jfS$2ovk)zY&Ew;R z2-@*64*gC!!sCHI+VzM*ibv;4ve*I4Z-Tv*o=80}UfY3? ztGZO8AI(k~UUDu$-3evGVO{?pS7#X(Rok|0LBv5CljbhSMFtjL=A1G>7B}?%LL7utMl zXge(mWvMi!wpcp0+oZ}^SHSzxFzPu;w7Sz1FOrw~F2~;B&l;%C8F$DR&2wc_7Yz@cM-&j6f-s2J zo7kR5yf@C*#nkM zw~8IjFW}4491RaXZQ=CkbPCnk`J^;_IpR9AY1vV&oj=$j5)@cY4c$B`r- zHhG=GlWq!~B&yImb67}JSByF=I-Ht@5NVscaxhF;2TX*{s7?hQ%>9nPgHM!Bl(U9c z&Xo&q;y2XLuc44h-i(Jr1Ks5*_Z`4(qs4^s;``Oz0G7u%pth)+iMh*vh;yNg!RKPH zECTUQfYJRE{WgT^Nbl^uU+FK@W(9_o_lkl`Mi|ja2alU#A+)o5f9LmbzSicH$D%D=8eQM$F`_FUK#6wW!6M*s zFg(hJeQ(mkxEdTPH{(`@9g~aArRU>cH{UO!%$&5pMVc1)5bwvP2ezzHs0+F`316P9v=y zZ_0DJj;@Khw5c`4f+{#fhX=_qm#( zjd6b~#XlWBJv`ozxP4lrHsa%6gQLIGa;0j@@dAy?lrov5n_-f6bs$agtODEDLW%)< z3tMO7CPP3%sD+}}{dA!#oogQso~-cJF0GZ27M70L<4}c!fzT7u;%GRFxVMM5n)>P6 z9?_Qnl1^S%=tau%rupr@NBmM|M^tH&D0=R*mzP*m2TJA9S``Q(PH|Oir$F2c=eY0! z6pWX<9HUH~+GFzS+u_`VT8WjiwWuH-d=9>V$aPaJ-6kqbqI1`HB7$&ZlmcnCemXjQ z^`lWn>s~_66oSQo^xnAIk{8QpT$jgRjB}A8cwfQ?%sQdmV#s?nE)0Ew`_Z@zkC`uVkPHvH`DUQ^q~#{k!0f6s|JIfG#=k>Z zzkA5bvf=Su^SW#Q!L?*DfD9-}(@{FyN^Fgb4Rn!tLKn-p=B<>YHUZoLN+{?SM0jd zb9CCZ2j#+RVZyqbk?bo}@_f$$-IUugHo~rVym(4U>W=++lD1KIqDT}MjP7a;O~=pm z;4|aJ!HD@&eKnD*RI_us(YDL?Te?27C+#?ryl*4Qes7~giGsIW$R#5KnH>g>_XE-D z9m8{3tY{CSxU|8w`(zJ5y*^^l>02=5-LPr6)g@Ed8`AxV-&n?dDw5nSYCr0p`}ZNL z_z>^!jvd*|`tA(EvXS`3f=pypZWp_5$4DY`_z9FkQ1Ty?RLNT1h!27)#FbcCTpvYA z-W55L-7RtiBSBd;&QYQJ_YP*3Io|WOvHmTp)0;Da9URW4kq|Xz=2t<)`tvy_QvoL2 z5*ah-{ZE}MMK=9uxF1-VUeD?ovZSCsm6hCq*zJBDaSLwSPN}B#UWfgfqQzLTTx-On z^lv1x3JF_1g+CPk8HK8FNXXD%vsuH?(h!x(4Wu{P<=3M=SU@-RtV$yM{oPkW&s*PX(r``%byST0 zO*VwJUO7&w1*2-BTUle_@at+C&&K{0!)uYCPwN<%A22!E#9D7Rq=JuL?9!Q>{*Lp6%h?Hb zhnWU^8pAr<3hHn8d|r%Pf~L4+*d%xl^h{wcjOst888#hhHlM>`V*IiS_+qtG*ng}m zRn4varA*m~-MakHW<@!M3(?=B^FJ&ALh>f`CCM*F?8NTWyL}F)$*;w8{T-|GRr0PC`+E}{W z&{%#eA>s6XHLuGB>PF=s--T%i2gh??dC3|H4I5^={60|F&T?Vq`byi04$bW>DooNr zg0nNv^Iunt!XyglW3OnKnxTEZ4UECVDEEn3W{L^5Vp;Z#@fEQjBiFGfurn5us+jPU)lxsENWYRX}+4r@J9tu zHn~-gq#UWpP(Xi2uyYhuIcRbegGRdkPcMV&JD=lp)nOyr5Z6B7PQ?k>QfjZkcjr6V zIq%9Vn}&c;gT^$|t8R6Y*_F8SZNJTq^HAQv4??pM8~@Bz<>Nk#{<69jqaA*mpECtW zv85~T`&WZP6HdiK_BJABOVsFF=IV9v=g(_@p8JM=Ml6#};$(TyoAu{8$1S)aIDXw>Y_S zV$0?k-uLFE>AeNlD;CIZ89p^L<_rOh=13in&X7R1jf+m8}fVt>9aHfWfGDWzw6m~%T}CBRXKhx58I zTvW>86s6>~CfWmZKBskIcc1%uX>~vqO`n#QaRB9cK7tj^dR+A=mo$OrsbC9ZyU+6l zAtaBdFIo<)Xuz$-hPsYz+Us{3icV>PX#aG7wR6(;GP}co>#KdABN~2LruEv|Jw5a; ztwR*ulKBI;`VN?yCr@pL)jZ~^A23cpeF&;0CA<@*|3kPy!G?ySk5n^~d@?N6ZPSSj z-slP*`YBGZM`-`@iOaF(+s|VSr@_w!{SPN?^oN!{3&x3oBm8WZ`^!A)=Y|2I7DeruAc(q$Ly`rC74D-_G;&JV&Tv! z`d{s=$$*FuytU?eAzLBK>v0`7TdHY!9=406Pti4>yk(2t8P4DcHQ{ww*>`y{BF6=2 zEk1%+anu7!Ef-AYLey{u0}!_C9s#!}CQG+j@EG?APwepX|G1`6V12*GA_RouP8jFA z5+jg`M@7tE>g`V#X-q8vmc)=j0b%xkn zZNOR0hkxDENSegIR4oZjT2PJH5a00J&@96esKQ_k>x;Du6a$0s92n+*?|~K_=1~zd z(&D;Q{1-TwJHVbZt?^BQVl4NeF(4PGn&@1>GJ+!6bnUY%z4=UWyq3pN?WkTUelLsu z>3WA-C+C?|*Y{IEIW#4LTlEMu;`i9}hK{Ye1d|uu{EzY24+LX(^GQ~adsg@eYPHqN zgHbcBN;xD^FOlQbXr|o+*i4-nD9kqmQKY; zEt!$3Dz(BbkV(CeXvqWVC;pMgz^Yi-p=!DHKpE8UfERBdmet@6zeZ;YV~Z2Dezhmb z=#TerN(Ka4B)vz#Ws|9&#}0;szB8U*WUf9?Rmo=Gx_|lUS#f2w%AjtE&*hqgBGCvcG0AJ0d};df@t~wyqtqv z(2NC{-tI^#>eUVT72nhBd$HdecSyNzwQK-QpSYDK7fU~=Mxw{pI_gyGd-7#MyPi*K zW;qU*6XNiD6KT#TtJ=CflnkvNubK|?%=xdyWja8AAl|qdP@;TRhl`Ilxxtd;gRWZA zQu?$o@)`4#dN3%_0LHbK(enH9J)Fr08nZ6dIr;HRp(r<7Aa8fW>u`d$PyKqkBkw9W z88A3@f^*&DIJ@0n>3=VkfWwfRXDso@LfPFt|9*&f6g|JJRJ}zi>O@Bz(EDKE3Eb}3 zcKsKP0fh1(J%23OJ3zP~WYQOQ^Y{UrAhx_Wk&-@M{^PYwYT?DGQ%sXddZwu=soJw& zRlBwa^ycGQ5YcK)*!#q{tj_D&@^F0>L}qK6#UgQb$8RuWmU2YlLn9**rCkTe_>Ja1 zY5*eM(x?B?Wv=VNNL{jZ`^L2>Irl)f2*}2+lvU5KPLm#x0~pRfOitOE@L{VHnmvkIpeYG@g(->+&^a$MC_!meuaO3$4$ zBT9{GQHWV`iuJlmm2jU)NjStnd}Nzb3V8$nVqoAft&2ccqFu!=pbZ4`iH=)4MkR%V zmVy6g%8es~3G0@(t$_+zs#Y$hPfnKxtBoX{FR@E#9Q9V&pDKugo1~<8`)!;DLMu~N z%nWTWs{e^)bU<;s_px!hr-5-xOu7bDOf5NhlMEPCrZY!Gdq-o@m$UxJ<_mQUz{Oh%4eIxx| z5RxaII0z^l_xA)1A*1Q%fSh+*qo&8tP`97%guCZ#(DYWV2)-x#yAIvSsR`tIqyTku|DN=B=nuAJJ~mmer5V4v|E^ zhk~7Vb?HE^OniKPIB`cu1vgMzs5d&~y$b5w!28tuOtQ}nb^*&<^>@?C@-uw-gxM(;0(1Y?m0%fiD`-RqWsMa)wRn=r-v~`u5@5FJ{Q!_;cSSGl>axg@C z4>R_GM8ahS()fNZU^@T-SIYO~d%a_UWx#BCaMZid9khZONu$&J&15Wt)-=N{|5ays zezWESuOU(d$;h(tuRZ z38m?t)84tyG1IUsTvAw3LS~UJRFhYIatYz{*X!x>%^$zu&a!NRN{iwK}T>62JqS$bHhRJfFc8M+4ZdiBiS3EH({nzCZLoy7my! z%ZSo7tV74jwt5qvB&D%fOjGIZeXCJ5(pa767%2PddV#U8hKDh?1OE+o;dMGWz&zd< z(w^s7Ljj4LfV%J-hhWKf6iBA&&IvYrBDMf!q?2vy&>^__`Tig!n)ke)RAa~;5bPY# z{;2HQng9H1KnIFWoIljNfyq!bumdD3+YvbDSh#8-%$hQ|Ba{?SFZXk8fU1{o0$ekS zPT3m2%iDDST%(Mb5^m&V=ivn6fGvvrrgJHRVs5&_+{qd302Dvt79;Y8?2v{4b9ewFUjZBGbU{`-WjHRdcIUuM6f!;_r2s zj<7tOL`lRI0^xz$5~`{RvwC$FGg53e%T&>efOfnHAnD8o?Mpva?W} zs^b9K`EaGFzJht3d5mYPiD8_ckYx}^B(l=%I^o`7tH{lk4vf zp~WVD$>|)Te^HM-xyR(NBtwdqr|YFg&obL>SP%rR!LnFE28;De9cS(WZpm0C|7X6NIo$H@RB)2Hmn+a7+m zX2f~da*%~=)-AFEkU(<#Usg_0ELfM>DQrJMCCPHgevxU8i~DGOzCMG29;^$xizaTo zE_1bW1&oN>m3;(L;Xl)_?DOpj#?m;I$1{EzQ+lzGHCd1jl*L$5r)w9Lbsr9~k`5Fv zNHqk(#9?q$xV2VQjxc-7jiYDh_AC5g+L%(%VOt&`EZ9b)U=B^^UCLG1bY zbM5}}!_^i|O2*t3dft>naYC=JOD{N@7Hth1oeOsnkwn7=b@SQ>d7HK`ia4uek_UDP zNI&e2V7zWUw*f1HN##8COl>tfk0MX8?GSJK3@=pSzvJ_s+xb1`8v| zg_^Dbpi-dcXh@eI6}ZKqfQCMljIi7(5OIsQ10kzMqTXiZ@=bzE4q(IIT#feYU|Jlb z%y1P-{d~G=SoS?JKw|r#ylr+-zL{=a8>-%vCI_CpIkthwa0^t^WTJ>0KC~PT5!ylD z$1x&wgbSf}{-s^sa-AaQcfd-@1Nf@Pm2iDMw>UdpUBA^?C6`f$z0oScK9iD8HA7xB z;xXlT0Uo+>jM(LnYTKcw30ac{`hv@Fo6#EFjkHFAqq7~jR;&tAQy}wEKYOXw@P+oX z|8aEOFENYGp`Hkgx5jgMnU>H)ZW&H|=GSTG0lCftSKlgK`h{Z_t*In0Kv%yqRR1;A z(0$*e3$pYSm45%n<>AgX)>uj+_iIib)fgnoS-q-fF2aN3=xs#;8miX06pQU!70 zN7;9tBxW=h@gH?3GPzEmP9@vEdOEW4!>1FX9|x-{3gJ4#sA z4tYFl)df=P-6{zE8XYVqjd#~4oW1t6ca}#>)FTET18hIxD(jiF=cClX#lpg#i(N=F zVq;^wLuE{<-~exc>V`B0B_v|g#Ub>Pb<>wB+UTtvCIC|N-Ju%lmM3iY65XQ`HCmb> zB@_7Q#WaC3^)PM#7(r&AcE&ksi&N8VC7L$ds8_bUytCx^x`|y9p->G*edLdpQTbEL zVRJhl78?cYhgIh2yPV^u{{>B7a2Uu3ifelhow}t?fnlX%8TxI#gYdi;*Y>Z(- zVl(}n2m()Y00h=2FKOwt@48G)+j&ONKg{kfshJoXh3gm_CL;dam6Bm&*#`ul!k^)F zOpnv_>XT?1_CsOZ;j^5j*;vre3QCx|t#mHvkogYD@Kj%B0qQ2Qg|1OSh`1)jD!;wm zZ0|16VY?9&h9CTbrX`P)@^4a$Uk%i)J_rt2W`Eioz0Khu9^Fshwa(M+k!e~cm0-O+ zNKp^n?ZbODpkXy#ix}QI$F5rTaSXTr0Us3~1WCdipxipnjZq%~h5(x?x=UO4gO1l^ zrRcHe${kWYouT%TYs}2(&4Oqb{KkmY{LFDL2BLyB0fw(qkU;y8sS(R!2s}xC*n-Z~ zf}-2b2s9H5QSMnRu-5LGOMz)S^XFuv?oJJxf{S3lJ+BB2E%1WzpXy&*hNhIDH_n1h z=fD?>$+))+Mv=+aNJnFl&SMH$CDkFsXY73gp>O9YQ||Qk5j(A-K(Xkk<^;b<;toai zXYHqWo9GAfN3VG@yCf=aejm-zc_#54jCjP~6rzZP%h-Io8LrWUJYm4*pNz)xV3sBs zoR18YeIB}m$U}HfQ2S86z-p7LyOxh2S>9Q{KjErox%<>#woppbW=Aop=H^YV3-P{m{OYoEo6g=J|*as0OhF;ZX}vr6#|1^TTo9-n7} zPTmpSw3nQCb^q53X$)UtK z!c0-1)YwO^^p+_(`pG|wuJ453sC|?9jO%L@g!?OGD- znc_l%kSnSQJA(o&;SDUyt81u+Uv)EU!^z^hWm18{C<(tG%PgDNM67%7lW+6C zDh=I}F+*nA<`=J90Ma{XMcvg8f_Tg(5ezMV#pPBI4OLiEiWR_h^W{~B${ZbtXmvFx z;-EJ;+$`47I4onwMeTNX_A4caox9jyc$M?a_OK8Xe5ghJ-+tBwjI3i4Mo^RwmFk}tKUnDDT0fR zP&b)}Xfg%kLXZJr9Ar^`0$h{#3qGCM+jy=nU&$7Y{>MZL=R5Bg-L8OW6ijqz!pPs= z8qLoy_z(sTn;DY1!%SG$pKUiFuQ8c7-6TNpg%KuWG-ueX=UUT3zR{fL5zY&S$tE`H z0eY?s&~EZ_a%>&f>_RXNH%T8D+B*|)I=Z{(oBY^Q-0I@JfIZ)TW0WKJY%ti4zT@GI zj!cpp$4;CwQq>X}A_X#vYKHnCTPjgSf4Cv&w`TLCz&K;i_hx42(ci)8pY2FZ$NpW5 z%Az4f`K5{mS&w>uq{kmyMT16bCd zDPN=21ScB~81y?~lH2&iqwuG7nP%Rw^70B#P7}86?Ip*Q?Pnz9N6px}i{)EL=l|Ad zl!A3BDO&r?Y-R_s{LekMlPD~sgmCTA+8_c<5_W#G`eeSSgpX`v3V@1CC@F2J+~6h@ zmN&&Z1OtODQwwH3?Oo>J{2Yd9Wo|vk8onkwu#~^nu0klFp&*;-W+qx%7awZBm1Q~8 zS!HBTdX%=hpsoAOF62{dz*MZ!9tYH$p;k2hmxq}JM1J8O1pj9Z{ts_gIPK^nhArq?znT;7dxfMpl9W6Lz}JZCIP=ou)tgyH#s-A*zRx< z#_z`;{Bu7$`mARlH~jOe;N#(yXSdy93x};jIft2A?d@>-{ey!W-f>mc(&EA&FZU%u z5r6Uw88YW|EWf~Ge1*$!WH1zSZWJ^BY1>d4>-pm2e4&-fTu?mvvUt$czw+xxG_59* z6*{j6m=)Vi*#^MVNDs{*BD57-p1K|{7oY##D)o0$nu9~P7>b{B`oyBOeYWY7I^>3V zHGOAl-1E0V=V%jpk5cY;-jc_253liH91hp>k}dnsT1~X=)rY0QhD3B{teq&V1$DZX zoF>mJ6*@MZvozNri*ntCKNX(OE`=wRYb`m87Z5dGkbGy$DJjoKq^W$B#1e6*iLoB( zEwr7orXNJ17;PRFWf!;~UKHH8FR1#@vRes9xwta<+a9)qwF^DY?r~+WymnTe9!}n_ zp|v$XZgL-3{1`%l_H_V&fa$Y~39n-{7!j)Wp+3!Z8RM=kb6+Bnj{9A#|5Yklt|KJ< zj~sP88@fY-qiI@%S8;svyKRH09 zhonvRH!V@8_9DqttBZJ728B$M(Gl%@kJazo-8?;QK?L;%)_Ds6j?q@oTan~H zFRZ0OJU5qkcc)!qOd6=SOX9S#K1jN>iBt}M?DRir%a4IS$0AQMzj1w>xJx;0y=m*6 zY`Q_3$*(={slPHF<_&jtA8g&usRame#lOEPO4>A5x3DdohC#Zg%3HP}YHV|9Rn7;h zcYqf?U2w8UnR0KgT$kZcVRcL4ChWu0x#p4oDcLeSf9I23R@(dCx}Ok&%z{izSe)4W zX|m9l>f+;~pLS!Zx~mi|7wj<}>k&RwC&ATPQ6m=+mrT#K3zUW=~m zqUc|3m~lIam~1OLXOf0_RwR1t1yrdwD|L&nh*XY^0NV4VTn#_k6Zx=5BvlGzr(rok z>L9UOA3~NG_EoE5dRm|-;ZB%LGi5S8j=v(6cgB0vJtCE=DQh_qW!9vbDv{*b|4Y*U ztE?-W<(hYWBbk|bBkYDKEb{7?YD_i7103jkjnZQ5lv9Vus2Oek&K9HFosv(IW3$F! zE`xd!e@UfQ&${W-`20oOl7qb&y4bl8OI4|v;^fIJ!IZ;=gYt-WBdAh_x8Hd`^x2^m zw@?7Nc(wLD0CKx{1WcoYMyQXxUvHAYfq&Gztv>{20xd&Ht2i`IfK9i8ZdI~YjT4cD zB(y>J#nzNymt)dHZ}Y;V@Hn_y22#1^^&vQYuBA|mQ(1#;fzsu?HecSEm z{lZpNpa2o|!D*=tt){}#?CY?;Iw+8QNbuOcS+gAY(Kh{a;zh>+g=+p$wIqhvD=r^> zquzYVOR3QzfyOI0hr%O09^Y<^VBow%Jkn_8{sU9i%Qes4p-L_z-Kaj#VM7?(f>Q!a zU+*pm76BWZadEXlE5e0K9OE6=rDfv4usS9B?(<4Br_OOhNsE@}2G`#B#+#omeU2Hy z7UiLsk_&KfaFcb`nz7wCHwr6;rwGpF&5IwA_{&+$9^Ay5$(DJ^WvL#8caBtaa&Ov` zuN791O_N6r+a5k5ahH2^yt&+?+#R@Cn~Q%Sw4ugKZ<8D4^Z4a$+tP~deU^Sz-DeE% zD$^FHAOOh>l)#bmy#aaI^jDE%CljDDo%e5w1FQ2K8CIW{-eh-g zZ*d?tYc5b3e0C@!^9--J#3UAxu$nYXT~Ec*TYNHcJo|Q? zA#Kc8dP*&*&^tYfD#&NQDf-tlJ_;!N;;}vckpPj?JG}WCtSoB9?7zrtN)X*Rvb33J zGIF^d*V?$6_e6)y&Zj80QlVvOn@CemX8CEa<-S;jBJA0E)iaYuWl=9*c;Y$>n{~2m z#YX+i6MmtVI*YYr9-6HvGY8X4@tR_1)oQi5cv2D7Qp7NaYpFq?ZWdPfJD6kcwd5bYz0Iji z536Zw)4?jN@Tb>Jku$h44|F09^1`pfvhDsO*`vZTa+~|zN`XX$BV>TccOh{~evRzx zY=KFTHX!iwerE@BExnwVo*M*16fp5oD@z+NV5NM2wP!m3h4BIE^5&cxI{QCZ5?{Kj zfKtYy?Ba5x<4%66O^l{(i^{^$)z$AXN&f`>`^!BCfO0Vals$i4cmi?d4j@38?sgxD zAx~M436+e^bm+&$t?i=K^}fraxB@7noXaYoQFm-to7HK}ZZ(V5%8wrqP$2+&bKHKE z@4@P7V_2JE$4c)tE&k=)Y&u5pN`vsG&xwZsgbE^{fAF=NaqgNy<4%k;6Y6c<(A1Vj zf1|0@a-K_u72+1WblTD7I8Nhq$o z_z#3UdZ}7W%}rmwg1!1USULcw`ao@$+Fqda{DaMMZcRZw?bN{M2RW5%EaTXv27RE# zO@TbWz(nqSUa7g`Uc3I=p+| zDQeak?&BR3ha=XKnwFYSm*YlUKlLCBTLz^#WTYNmBR73X%)779`y3! zo){j}J|qC~e?#vXv7Hgr$^UiL`|7jAZFU2p_tklm{7*f|sN=)+xkFRRo>{KdBKF~` z)6)n19{O^zL7E=wR&HGn9WY9WA`BB`*>Q{(jlacd7nl&0%|MfX5;(OaavuQ4e@@hK zFT(S>oDhs#^Elznjx~vmxV?QFE-VA%f>YCH=0vShOa`byt6n>4miaQC-Ye!Hc(u__ zYFgPBc{b4~06cBEL6K+*Xs9Ow#w^y_`^4X`iV$j+g^-O_yxk$?V?PbwU#W%HRguy13d>%YN&z66-2A))z>$yOoKaMkcfe7i zS{Bo>Vo@CUmHP5wbCg*FV)kv}YfjiC=vNO-h+e@EOVJ#~I~nd@M^_F9fk)O#N@=aT zX(r?dO`0{b@8bPx!UMTz_WhlVjk+!9(ab6)jO=X|ArX)=-NNfXTLi@yetH{ascS6` zeaw*TQ)YXir>bb{s1&%{oAmcGjwI&dWVaqW_{DS+tr(KrA2jmUyasKP*BcDQ)0Fg# z@Gc45cRqdb7F;rzir0ccQgsonq;=W`pcT_1bYJTVGTe(F`8`abZ)f73U#8~RjXsAd zeCZ`%j31YgKpUXC8nW%C!fBGZmz6>{K~blmpsge8oos!K&7-Ocr^v1%%g(hz)%g43 zmcHxBwf4|*9-K{&_UGJt{>4on*$DeL=GYk~lDnxw6+ z=cz08b6X?HTrNh~Q>Ez|yFbL)$1|Io0)G72OK99LEFpmOs2Z2U`_X=AH}U1>h|SMG>`WRDo?qW@daS04tIy5TYJH@0i{!Q+EQuLbBA`Q_wx@U zjx9h(^Fa%^iLMAdPNquI7x`=Tjby-!QJUUgF}NPEs+SIQ{id`4AU;^hsSA-k$+Em< zmd^!PsO%WC(XFol@m{oYX(g_UI$>qAkiRmT5JLn>zygDB;&~GMVV&k#o#h-|BjJWs zuS&`6EcncPm@wc}`&)yvZjkOM#_4k?Zn@fT8TslClKGB8k54p^vaM4`W4}IcIC^YX zNMnT3Ip;3`L6E$id}ONJ@<^!NbM8C?uq=o| zP=0zh$15X61sOO!B-z=LD^a?Q0AURFh@Qpc+Nv5j*n#XYn2Rz&bB;Vm%DEamWM)Df zFixlaXZ`|*)glQXVQXe%VlpSW>1`?&jAAqi1tb6^@lJs2Ka8Mgq8q7k6iZ!Sw`1_2~KEc4;?I?eNPv%90|mVjE(HeWu|hIMpWI2>6&AN6`xd(Fqx5>{U=EN-^eqNYLupzi`jpca~!HQ;2&eABTE*dyaFn})4G<-427L=kfC&0Aw;ws)KL z0IpAx&0_W1FDm%G`w1#Xxj@c)X4{SHhzuTBqx58PIw|tsMPFD)tZ#s1bAWRmaIj%; zLHe+W73i*#hQHFwlhk6%8MfdOJqi-Ti)qr$)XL2G$qTUC?qB z4=T87LK%j?yp1Jg>6U3;&JA@(c_PDKGNuUqjdR)>kc?nmlTIp4GhK4PcG#EQWXTFhrA6#4sj<22E*}^0<37y6Qvg=5JCR zD3q)~-6nV>h_dv4dR)e?6#ir6LdB`4?QchDQj9XZGAr(S^D(AyGaCw$^7M|;ax1ua z=;wctnvv2}hqYsUb35&8=k`0|4A{k4vak1LnU5+1ZUhAycy!yi(C-?rr^40VS;jjV&KN*k?}|d%0$Ha{RW-6ikz4mcJ~>BOQwE>_HLY?oRyQ+e z)Qb5K*z8h6bG#$%kHp(KdH(YWBNr4p$s6wRSY@YKK z`mnZybiClGkzi&;5L*fN?l3aOv=S2j>$6KMb_= zle;@^Rs~4rTrKnll95@Y>q^nDOOhu6!6yxULL4g0L~CW}uwvPw{o`g-67jlwq&JbP z%i;V4hADQ7?OLnqUu<@pv>DjVD%#PZPT=eoD|VjBMmT0v9%Q}xM^Rs_EkQ1s%)cEDN1ZM441xOsily=ud|5@7;+6r& z@)FHlB!G1-Tz`L+vtQx983O50v_qgvZw(Fj_bq{ZOF>_yL20RsqNl9+n$^_L*x(qm zm2oS5LUjU)H}kTaL5N4R&`3jb`T@XMMqpEPJk{PjM!K49zH&g|x*9bm@3`Yk!wmy! z_Mt5A)A=e1i8C;#-eTW_Wi>+8Ph}Hcr$Fm)o&&ZSRFxeHXd( z7qd^=tx@#N!%8vH=`O}6d-T_V1A-z}s6?fb*=cSyaA`BRj1qX?z>W?FMNIUs4+UQG zRR-om7faZu>XJ|OYIKDHJxAH@6#xA%$oEl*QFIw9# zc^w5r+Az6$vY4OafeR&~MKK_QxpGd^1Yn&U=k+UBA-xo|**nI_7k8#9!-b>NnS?&Q zCGT^u%+wFhSB5GCw-#v^RBj2q&T~C)I2-W_Ci=YF6DU9qbNQWJ(D451z|>0zy%*P8 zq{N?4KOHXd*b`SijbkDR(bVxv2l(%n?#sQ}MKJ$kN8QmNDjo!&PgnCi5fOn}ZtZ*f z*z^m5iC_Wb7ltc{qZzzQ!zrvou$dh_o6d9Erc-;!Ufnkw`laTiG_=LuAM@?8Py|l_ zaSA)o?5~=522_(KbWMj$4;&)3%Clo(i~l^pZ8Rv{Agq(O@iX$abR8)4#L>2(^@6zq z5gx?qIi$5P!=UeK@qaYrL|`hInJGrxW#xGNvP3LV)15fB2FS*VRi9#BjeKa zEk;jvTj;6%V3-VI(C}-#GKB0)`}fZ&Kpv`@I4NxNymJ8bOgR4S@EypQ-%o$hzaHWs z>*Dqrg>$ZdfBXB*eH%dftCI&}+j^mLY7T>L5N<#(rt5(4U+eKK-^O)6_}^LHK&X;3 zn$ErSjPKA-%!Y#O-4H4iY9~LAb}#(R+%x~d3n4#nrcZNdr>|?Fgv(pbaR8Q%{|6ZL>)u=9(R5AmVN?_Y0JQGKY&`g}g#2pB=?KsBw4;u1 z4m1sum+ixBGR*J_Cn-{|&KI0I2(X(Yq&(%~i&&5kFD48$$Af)s&$BjV(S}qZ`4@ug z;-=ePmkQs(Z~@=c1+`V;Ldfe?W5A$jO$2Z`tQvA~*}^4pt#cjtJVSh}7z4N{iEI{Y z258i)$UbNNgap(AL2diuxDs5)N8e9EO^-l;O5t|<*e|~B`1r)LcxIh}8i4A_Si}Kv zC1WQrpTHY|3-7v<2z(yxFZ%eOCsG*oihZpaQVd!8L4DC{`LZBM;R8Gs{tr_e2&W1g z6$N8SYTpgDxXWz0KD;hnU#Owq(fsQ=5RoPK!VGN58swQ}`t768L(G<{{F@?V$X9!;2o`^Cr4=C~n0 zxA6AC4b%Yge?5o5I^1X7_cKiD7T(>_B;l>T;Q`Dtx;)Q>-c5K=BFmuT6R^L2!|+ax zGG(AG`)5w$0qz7aIsxw7>%n2valh1~Ec>ox#s66+jYYFG3gpt+s(nQ|ZNc>@w8(^* zd}buX3JWNDq)SbiwrtjNX2xvR_dQk;N!+Dt6^#1GP3A*)_uXzJ*1{x_PJ=WLuF2+0 zHFfHLoQhUl6ZVoO7`%Z52E0IcR7A?sVn)RHzW?0>Z0d|uRZ8HSaJRQ6umBFJ6q`Zs zJ2s1%fMW$Jiy<6|e=UsH~rKFfjd+UO9a1{YDRylJe=p3#os^p&`a{2T5-2=*; z+_$#4e>Q_c8qmkheTu|x*dKuXaP$vhr}Y>oBrSG2XM7Y;m!wC0?GDZbieI}8TT#+B z9B>CizyTBHy*~(T`QyxV=Qmn_%Lx1=n;aCL4cH%+(ic9%d%VlJx9h`qNdkc3b9eyn zQpY?Uc)TcqZx*|`ocBKtiM<((Z-;k;yvzP3j7`Q7$)xhyhL@$=yd^mm0@Vq2BKY$6 z^CKsO|G7T6g~a{nWGO4x_XAZb5Pqe{{l57<9EL*OaoKm^wn`U;Mf&g^GEFEdLV$?gHfEoEw@O!sjft+ zSbX(uLXsQ3l+b(=(>0({nmziZkWKdp$v+aWTPrZIDS?6QvlAo7 zwMTZ4l>WmSI9{d{j6vK*2{Q%=p_dnXHb}8jS)h$7E-}fp9x9sq#n2PJoNeqaqYzW+ z#Rd}vED?aE9=6ZV`1cMW;|v>7@2dm$rV2DmF98Y5VVTuFNt}EN%YaRSee>r1I*<=$ zxSu))R7AWH<>Kz}a_|b@=Qi%T-@NFrcl0bhr@6y=z+%|IVKNGlOgfx5wFA(D-r#ed zC}eM0xajDEPtitO#FU`jMwALvcYE%h+*o692DhROia_iaUv~CyVd4L5*Uc#XjpGN% z0V`uPHye)3QF7czEYx^DfN`NG>KsmJ*+V$o6sq}}!`XmD*MN*omvvT)y)1o#y5Rm91Wk%KZbK{JQvy;fbQizX}+t+Wnb*S79A zZ}-08K~eCv_Qt`@E!JAbazBO7&8KwclMLI1j0c7a;1N6J6qyR6gMadD9qv-%%Q8;1 zG`z^Po4vedq#`ECm=Bz;v)r3b*-g%Pq>M@kIIWWC15mF+MX23@1atT; zGLK#$OhN_m+Gk$WbQCI2hgOECnhM7Nq#9EY1Ip7GyKnbZ2O+5j8^rcw#w|#+BqE*s z(JO4x#i zEL-w_9uROV{iZ-*;<_92d{yqVFk&)~k#pvxF;>Ag?wQje^1 zkI9$v#{bEfw?Ft=z`fL`Rw53^kEfPI-Fa37ic|-|BH>DydauKLvm!u6%SkJJX!e7g zis2s3k$?GUeQU1x|JZu#xT?3Udl-?}l&}G%TM+5obeD7^NOvPh2olmADqVtfOG$Tk zDlJG$mo(^aZ9U$5?)yG}p3jl}t+m#ibIdWv@P-_pe1wiIuPd;$%^WGz9vFKc&5wD^ z()d0_@)8WOf5UXW7*`^N)=b-}{OQlNGLI=$2x|j%RfGMK5$49}#j`g9`wKW!w+`>A z%>*}SfS>$EY?t0P=&DVjekxSLdWaiOfjD!Zh3xl|(f`*cV`WlYE%Cf(E3I9#2@zdH z)4G%Wa%-9h9rEGgzLu|Pl_oej*v`xKl`#{k|ZFcM?1;+wVTc6sBS9g>DnqE82>#~6`65M!S57%z+ zcfJtB*_6Len8ro!ug4w)Vsv{(33poi$mP+-+$+rmS%Fygp? zD}&F{FjR(Ab&W;?ts!mK#C+fL1r9$HQHRo3G>Qj3&;W5JM?NVIC%8%QI~dkbY{+%q zTjd|I4|KIQmI+i7`QedgYP3p|N_*KkMM2=PPkcbB8RgaVf*pp~8hGhDiv0WtUg*A{ zQqit&C|(36(|e;r8Qy2fd)SNiY?^m4LK0W+bF(z9_!3-`*B#K~s;L$^buY(- z*B*m~R&W8)uu**89r9ENAJqS$2*is3%bpbpe6U&Q|AI;Cx~0>}@&X9&>P9ipX+vau z*kTHBzQN7F>VYdz=|}Sp^;Jz|Dzpxn7i@xj9XR`om9*|F=5$P?d>)V`tDsx<%*S+y zIW&56s!M2_0L7xodtglUxlo>j=c`NXDVKjOG|)jt^`blK(LLSXL{q(b)okfmAF4p* zWRC8JQ<@aowZj!b2R-*Gs_)p>J5AZiPB<;*h0QH{euD<8GE#~>sM zWBxmDnh6mD*miz$0ismUk&C0kNRn9wtby$UoPtb9`H*2kpanElvHBy9fexF~6WSlr zr|e8fyd5|siD_-}`miQyGyY>m6uoD%F~;6utNk-*=}LjJNMd%%N2c!|vm4yRg#@V> zws_Uw&(dd$r9AlO{_MNrO&1`SKYKU=w zbHz^pmi#fbQ72B7g2vn1A6f?PU!39iRh#m29q1e%Vs)ldn#k)G`-C=TfKyZsel`Yk z<@LjH<(}q5OOL2m$yta4&Dfh$rfOI_v?;id9kS@6sjzTD|O?`oC++Fc}eF5sR=MVW%VGt&^~nd!wo7!+4!l9&uI743|O+6zR(8v;2N z>9a?gCVDe3ngrM?4kgsCVV?`#QBNkjVP&Mt)$M-QgBIeuo)wdBh~>7N4tkJ&1#vcy zt=X!4V??-{@l);VJR9zp@T33J4=`Yte6T zL1TU~!nc_Os=Qe};HO!m>`qn(h>jeKE)PiW#`-S(`guN8C7vV`JT`)aiYmJL$9h-P&gvj<-7#nqi|q(G%?ClL7{xh{1|7Ujev)R z>wM;gDYai1`G+O%>#ZNsRi89Sm1gK@@Of;f>}-+K0h+1u7+R3PWo{@I5m?vf^rjXhY0rRU9$l z2-*EQ;0%z2)ky6+=7SW{XG9cS%oy9xu5YIvFX1cn>*iz_jsbq13_7K<(_6r9 z@?dik?HjqjPMoiID(?lB6FnbdkVAdhT1l7K@3{B^seC;$O92_?w!ImSLx+Z`s&?G# z`x3c2J;`&;ALlTeK2dv2y5Xi{;DgSl@JYyXiy;{=iotgFz^I68KM#qr$0e=x4iY!; zpQb<>5aLCK24B2=97XZ**pKU0s{%t03}d*4#$cs^mEm_If$-ACSX^IIdIcy!SF}VN z5eLq*BU*%lKgU7LjS{62u#yibU+SE_2K;^E!S`gnz?v3z1KCKK8OAu^#S*8pUj!2? zQ$CSc1d<*$VC4Ucidjczy!rVR;Axoab64odh<}ujmZ5qh0x9p0Z1tki`*Z|fpQ4aB zT14HO?zK88x2a0bM8*5^2~7R$=T>g;x|>8?FHEo3(UJ)FJs@IKu(+XM5*q0<*Pn6l zRi>t4F@gC)t+kD0g^NPFb!j7ze#5e+022h44`+Z)*39_L@=O zO|?-tyxMq3Iw?RP-c^_Zyg&CyQUyqncVhP^;LhgrFGJRWoUjcI#^nd;$@aLU6C;FZ z;kP5rDZq8bxVIs@prXNxj8g((^8!*Lc0)#>WfqJ{WC9QpGf)p&eif`2{FM|QW2glO z?f#TrXntLC-uv;*R_;!UT@)?M=_;t@UBVOq5OYlrICvsFAuI&!PNp`g8%rx(J7cnG zwilgx$+YM#?m|+uHbvf&)%xgpZr2g+C*e|#@lkIGIaq~WlM~E;jmH+Kv?W}6Gooxs zN^#``R1;EXt1NYy4j=X3b8su9xyT}liBP8~QGWfTQxH*%f(eeOf8}cisg)bY9oUEq z?ftyY5bW9%4?6rho)=EL*(T$?QQVk}xw+E5IG>#8SR~otcCq^Cy(Ph6dNXvNHN4c$ zC24=JLhyJRibyY7-eTRc1MV18%5*H=+R;(~y?#_v46)An5QG&`zX$}BA5K_FS74k4 z-4R#fH%!^}mtKwd)n%l2{V=u*Z39x**&fE{4=C_A<~`kR=R4P%R$4?fsyR5q#Gr-r zfWpfcUUv7R|LU7THeJLa$ZrA8!!=6f!ePL-y}HbYS0-~22%}@}Z{qYEb)qfq!jyv^ zKlAW15Co28ZzDtjfee(4bUS*joI`pWj(`1!_W{?9z&Mz;h_c^m=xmeL;a>z$6nK! zkKt$6--4c2EFGjwaE?XBE>JWRBxJ*oB*=JIrcAj+pC`}?XZ}^5bgC*i9$a}8i1jMz zxu_HS3K@mou_W}=>FesMcm}(lBfb`e-#k>D!8Cw0PiZn0eNw?>JfBl*`VpCP2m+qq zFMV@On#2}a=V^7P-#Zm7FBNtu{g64KNg$Irj2hEK4S|X>>%Nq)IUkIvry(HN+*N^C zyGSN;RWO<@^~ux8pc(>C!#OL!aC04t&J1Jo+u+lmx9AAQ9q-GxySO+FK*aKx`SH#` zZ2(_=+CYQp>Rt4gqiJ?-#3t6Hwr?ZhW2Fl8R1;%AaIM-{V^gx_{!_XdBB7_j*a&bk zW!Fs?@|7ue?8riPtW?L-CT)# z?atx{>jcnjXHnhDokY$A^R%Ve#e8+@hf8v(o^YZ1rV=DdM z5F|KqD3_ppg`g>1ibwBl#BNUrhCH?a=yR)$P0ZDY-aE5tlDPdHOe3BmLQAlrbQb;uyiIbi!k-b)aXV?yL|_MbQ(5G}lC#R&BMA@@$|>>|Bb1 zA5|fLeoYo>d$8G^9@6a=!$=YTR882bNN2>&tzLD{>>YWCHNV$)yp->m^-{9EDN6GU z>J1P<5DPcHj`F0!9#zXJJbW$dE;?%kvs*Bmnm1h$bkb{m&o#o692M5TQ5ln%9Gmi` z;=N{CPrZw$j#FKtE0V0j3p8>2f+449b~*5sPuA zz7obBksm-UwJtl5_e2bCVzN-K$6ZHwWf*qX}6y3lKU?&x<5jr8x=)8FqkTZ|54@hljf*BPBX zP3U@#uo&#M(oC7DsiRKnllyhlWhwo*>8ZK5$Us)Je_fQh`M96L93>@EStA_J&`?4u z*X?b@NR>UxdNIsBtuf+fHg4N9j52Olm~(2)L->hfzNPNf{R(B!A90YPbYGg~R5O5z zU1Eu5J|v8x8M=3rr}4HR=N8k1oK&~rK*?jV*eIj8!1q+Zv(_f8C zwdmKCaL?+yW_u~;S2o_!)CiF^^Q5V3`3XY(6V;D9%Gm?5-1MxJz> z1}6(Xcr=l{Z?D1cn$`CS>+Hsfb=HhjT9p_1K;YU+o5d0l_6Q37kz^WOF)IGqU611C zsFBN`@kn@?@ii!D*#$Y97@IPFRuS$V0NV-&NVv=G=`?E9yXl3-a!ZzdZ`a%7YvLgJ z$`47gcGpB*g1hx+OJvgr-<*fM(Hozt&hQHVydW|tI&OC(duV(hK`Qd}BQ*uap+Du{ z?8i=$7XJbm4J2`G%HHQ2i?MlP*hziA=O{Fs4c=nC{@}I>+EA$Pge$FS<{|H*GXy#! zVyL=$loxnS?sd!Xksa^E5OWW(kq5ral3#S2w|DFKc2QoKv~D6YKwWd`^H~mweE&}1 zAtv?$zxd}yP(bflEY(3G>-S^r1rL=MgmP~SLf@@*e{B@yd@!2o(9nO?+4HCdWBp#n zw<-bxG0yEp>0H!nup?mdhYQMxpD$FO+`dSYS;lWVFeig@%_x_l;deLsV*g?b_uNox z{@Ct$KS*A?vAz2D`{+xw-7mcs`X;!`cdzlO(@daHap6G7C;4AlKCG)3svon|jUBc0 z#|27$!c+Nr=(k?{XVFQG8Ma3RtL3iRx_5gPFE|h>g`y^atGA!?%qC-Npl!;pm3Wpwg9Y? z;Hcrc0Li;`pxHhD;2d+9jWM9ETjK7ndfC<5iOZ(y`RDbJsCaLh!mQT~SETAf6hEDV zwIah%V9831BjL#BfmR=k&ubo@la_R5y}7#G6hzN2x5{;w5SP$@02K?kT}#hx2Y(s_;HGEt zy;hA?rh^-C18F$9K|Her=VCJBr&*!|K$~CBJFeT=NMwp@heq@eK8R;adeChOXy=L4VJ}&EnHJEiO9Ac`npSQrhzQRooFW6s(K8= z?{*`NU`SID-Z^1)O?U$udZeDpV*~l&&ytIU>su~+3p}?60;9OoJvXI;}dbgAG*eLgU|X+)h)bz<$); zlK4$E`nxj!Xc{AhAj)+LGfVVy>(j}jm%ZhiGwb!H{4*D;%K2W}jlj~B|3=S{aeLh6 z)i`1KE-lz1l&v_T^C?*IpPA5&k3qW4_4;O&qST%RmY*zXin+sSfv75I6@w;Rb`LER zPsYKS)zoFvcztyagYf{gHs`FT%7|LmBr_##lZp(>gz=Di+TC&TGV6RAUbWMR&x0e& z{8Mw?E6MD@!!tmr(}~5fD@tV2F%hcG`TZV{ualU23itKP(-q!h3(j6pwJ)#Bj72uo z8gDJ!-S=+j@_t#f>632fnVn_wj}Y^%{90;EJ#X;M+X!!dBoI_sN5$|8TUAAo zem@tA4xuo9L&=9@Pg8Q_*By69Yzrt>RBf)&AgKjonOaFzg;AnqP#(RtP{)(cpTWd! zAe(P?2{Q2C8MCx=W7lkhC1Ob_A>6CkG*rj-l#pR!Hq8i!VVFElw}la#Ty4l0?T&p2 zU=DaNf-F;k7WVqZ?4#aT(*>c^LF7^OuZ>2Rb(=KWQ!$xnJ`3_NoC-Y(*XOgCNqa)Q zt!#O8f*I}fIc3ia9nlwGK8-P5aKCwx>ol?p7QoY^|C$%Z0t6VM`XFLHnJ9*!`p-4>km=`ns^R9bMO zF@v;Y{%r9}j3>p!rI4c+!%D^6($BNnVZwg-NnPmkn5&0Kas+;MG?kz1pUr3b4VX*9 z5_X_IUyn;EqS*EECzk!rXbFwq)Rad^;b5!PKpzHp-Pp!q)e%WFMvSTAiib)Mx_@<@ zrj;n^Jz|U~h_ByO=RfDNX>vMeDN>p_fj)h3ZL^fe4?o^zfNw%N_>4XbX%qDakwU!W zy{&@Ls;VNZi_=CT>dUxH8N;p`B9rZcsb>XvUo7xj6$S-_!G5i|AzeD=mz&fz=quI- zFj+Wd+i??~dw-h`le%08YGZr={`7-6+@Brv>1Q3=K#IsiqNYn2^J<79b!4W=U*Clv zpKc~!9ov{bTCP}m)1+HG8{}~zYnv!|*==1q_QY6>E?QwpZiMLl) zf7dC|9fpBa29t~dlGt}Oqdp}5vT#tO4-0XfZ&8U zNVWBlFRCf<)0UDh^;w|9hlxd!T?=;u0X?CcK-@3JHvD$g~z+S*2J z=O;>ua9H2nymZ%TE5l_)V_KCdRWR?UEg8t-MX;rrK)5{r5*yz+c zD3CiIY3k4?9%!<7nEO*)-~~mh%qE!vlSYR;(5r;AMXKx;u4Ty$1c3C7x&1U+WGx#NR}(#)vGU?0)0Pr;h4hemWb2jPTwT z%<}d&%Er=tsQBbm#c4msRb@9@IhMD2d=wIzsYG(Ym$8xoONp;M+NK3 z8;p?aP39IyZhFA{Y%QFCZ>825xY|yIn7xf`lgjf(*O)dZrxHaXMbfH%>=bBAaZ?a% zy+4yHXx4{wO=I}cK#0@ka{;f``ul0%#7J^fvLNs->uyu;kNAE_OVI6D|KlQtMogS< zy2pU!XStx(FiNqM1_wrAW*;$7)0|A>%f)NzHeM8XHHPW+J*1fS1B}yV*YVywQJMW) zNh8T+m{A+T2}oV$c0oz^g<(lgCmNFK{*Ydo8tDR%CiKko>f|N+f*4kl2Jl9K?ATiO zDECn&VCawR!^nUL!sSWEuQZoIPM~7JsF3ABDB{zE_3L|WhLW&A6SOG(xvYf)c=6ib;52mxRenjl@uw zzseE0gzYtbynoWz)*HVRs&FNm5pXNVeebHl{m6vzGdl{b1X@WLgB7UZw#Wi6L3YX_ zmuN#{Hb4nN-q6lmHd<48jy-V4u|o*DNVRZasdw!VxzJnZNffVqlJu7Sj+vkgg}2Kw zpHtIUXWyxqCHRQSj7YUvT^RaK6%Ui=w#e&fIQhbUUhs8f;`v(u8q&vnz{+q~N zTO#LehW##HdcW#gRp3d!eQuYC@wsqxMlpe)bo0|Vj85X+fI9y7Kf?I$(Ik=!1|Q`{ zcGBAnMPr{sJ$%d8e=;DS3qEPe@cMPRy2yz(AYBvY$)k2Eu%CW%J$P^fC=zd8=+zU) zF4c_S87M8pn3c6%05RB7mBAQnRzam`4+vGYdef7@uU#Mb@3q|4trQ;XQ(V6FLzTyG z;$`x_0nL5xp*Zb{bbu!^hi^ns&>?YF_dmmta`0()c-=cZ4Hqg(2dHDJX?1k8xHMnBRHk9Ld%#uICAA zpDa>Q+h9*>Bt)6QIZGYBeS@C$s&`_6EG=XTYjEyucJjCzjtG~VdwE-2bb*VCMuvUf zId;>+NiQEd@zAlh>>AJeqvM~HUhEbAA_r9HQI9gbCazqh`#Y-E>1RYH)Z?*j6JM!< zFGz9fkAH3;WlR>#=vALD7U{p|MAn_yL|@W>5*DvjE+dw}azuKV>Pw^s!#{WEI!$e= zdpUA|v1-DRyk95BPuFUnP7>=Z(%ghUq;diDYf!@>0I!nL|m*#sV)Wu*=lf8~HDC zz|kZu-TdmbQkGZhrN3auospCADe4jv`Ot)i3}h&W66(Y9qcK8F-p4^McK&Ii2Z{Z8 z%0A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 literal 0 HcmV?d00001 diff --git a/gym-unity/README.md b/gym-unity/README.md index 6d7872508a..f7e5ffa367 100755 --- a/gym-unity/README.md +++ b/gym-unity/README.md @@ -108,7 +108,7 @@ import gym from baselines import deepq from baselines import logger -from gym_unity.envs.unity_env import UnityEnv +from gym_unity.envs import UnityEnv def main(): env = UnityEnv("./envs/GridWorld", 0, use_visual=True, uint8_visual=True) From 38e81a0d9b12ea7b56aaf350a878a8226d371a46 Mon Sep 17 00:00:00 2001 From: Chris Elion Date: Tue, 10 Dec 2019 17:00:25 -0800 Subject: [PATCH 4/5] add env.step() (#3068) --- notebooks/getting-started.ipynb | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/notebooks/getting-started.ipynb b/notebooks/getting-started.ipynb index cf9c28f92c..7297b1d22e 100755 --- a/notebooks/getting-started.ipynb +++ b/notebooks/getting-started.ipynb @@ -76,6 +76,8 @@ "outputs": [], "source": [ "env = UnityEnvironment(file_name=env_name)\n", + "# Step once to make sure brains are sent over.\n", + "env.step()\n", "\n", "# Set the default brain to work with\n", "default_brain = env.external_brain_names[0]\n", @@ -116,7 +118,7 @@ "metadata": {}, "source": [ "### 5. Take random actions in the environment\n", - "Once we restart an environment, we can step the environment forward and provide actions to all of the agents within the environment. Here we simply choose random actions based on the `action_space_type` of the default brain. \n", + "Once we restart an environment, we can step the environment forward and provide actions to all of the agents within the environment. Here we simply choose random actions based on the `action_space_type` of the default brain.\n", "\n", "Once this cell is executed, 10 messages will be printed that detail how much reward will be accumulated for the next 10 episodes. The Unity environment will then pause, waiting for further signals telling it what to do next. Thus, not seeing any animation is expected when running this cell." ] @@ -134,7 +136,7 @@ " while not done:\n", " action_size = brain.vector_action_space_size\n", " if brain.vector_action_space_type == 'continuous':\n", - " env_info = env.step(np.random.randn(len(env_info.agents), \n", + " env_info = env.step(np.random.randn(len(env_info.agents),\n", " action_size[0]))[default_brain]\n", " else:\n", " action = np.column_stack([np.random.randint(0, action_size[i], size=(len(env_info.agents))) for i in range(len(action_size))])\n", @@ -180,7 +182,7 @@ "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.6" - } + }, }, "nbformat": 4, "nbformat_minor": 1 From 298df2e122e7d9dcc5faed143a0c7934769a46d7 Mon Sep 17 00:00:00 2001 From: Chris Elion Date: Wed, 11 Dec 2019 17:30:42 -0800 Subject: [PATCH 5/5] bump version strings --- gym-unity/gym_unity/__init__.py | 2 +- ml-agents-envs/mlagents/envs/__init__.py | 2 +- ml-agents/mlagents/trainers/__init__.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/gym-unity/gym_unity/__init__.py b/gym-unity/gym_unity/__init__.py index ea370a8e55..def467e071 100644 --- a/gym-unity/gym_unity/__init__.py +++ b/gym-unity/gym_unity/__init__.py @@ -1 +1 @@ -__version__ = "0.12.0" +__version__ = "0.12.1" diff --git a/ml-agents-envs/mlagents/envs/__init__.py b/ml-agents-envs/mlagents/envs/__init__.py index ea370a8e55..def467e071 100644 --- a/ml-agents-envs/mlagents/envs/__init__.py +++ b/ml-agents-envs/mlagents/envs/__init__.py @@ -1 +1 @@ -__version__ = "0.12.0" +__version__ = "0.12.1" diff --git a/ml-agents/mlagents/trainers/__init__.py b/ml-agents/mlagents/trainers/__init__.py index ea370a8e55..def467e071 100644 --- a/ml-agents/mlagents/trainers/__init__.py +++ b/ml-agents/mlagents/trainers/__init__.py @@ -1 +1 @@ -__version__ = "0.12.0" +__version__ = "0.12.1"