From caaf9f7fc19d6c272f9cab669ed78c486b11fded Mon Sep 17 00:00:00 2001 From: Melanie Thielker Date: Thu, 9 Feb 2017 23:13:37 +0000 Subject: [PATCH 01/16] Squelch an error that happens when the asset cache was mounted RO. Nothing we can do about that, blame Docker. --- OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs b/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs index f8a4461226..610e279a24 100644 --- a/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs +++ b/OpenSim/Region/CoreModules/Asset/FlotsamAssetCache.cs @@ -806,6 +806,9 @@ namespace OpenSim.Region.CoreModules.Asset return; } + catch (UnauthorizedAccessException e) + { + } finally { if (stream != null) From 27fdf3094d6bf20325ab261b41d3d4831c14c204 Mon Sep 17 00:00:00 2001 From: Melanie Thielker Date: Thu, 9 Feb 2017 23:14:35 +0000 Subject: [PATCH 02/16] A god is a god is a god. Let gods access scripts and NCs Support staff are not of much help if they can't see the script a user has issues with. --- .../CoreModules/World/Permissions/PermissionsModule.cs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs index b60cd93ad2..86f0a5852c 100644 --- a/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs +++ b/OpenSim/Region/CoreModules/World/Permissions/PermissionsModule.cs @@ -1732,6 +1732,10 @@ namespace OpenSim.Region.CoreModules.World.Permissions DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); if (m_bypassPermissions) return m_bypassPermissionsValue; + // A god is a god is a god + if (IsAdministrator(user)) + return true; + if (objectID == UUID.Zero) // User inventory { IInventoryService invService = m_scene.InventoryService; @@ -1828,6 +1832,10 @@ namespace OpenSim.Region.CoreModules.World.Permissions DebugPermissionInformation(MethodInfo.GetCurrentMethod().Name); if (m_bypassPermissions) return m_bypassPermissionsValue; + // A god is a god is a god + if (IsAdministrator(user)) + return true; + if (objectID == UUID.Zero) // User inventory { IInventoryService invService = m_scene.InventoryService; From 91f142bbd2f11580da86c66fad2c08d176b09c97 Mon Sep 17 00:00:00 2001 From: Melanie Thielker Date: Thu, 9 Feb 2017 23:16:23 +0000 Subject: [PATCH 03/16] Add the option to link a scene object with a monitoring object For debugging purposes. --- OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | 2 ++ .../Shared/Api/Implementation/LSL_Api.cs | 13 +++++++++++++ 2 files changed, 15 insertions(+) diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index 3f531bee86..6332bebe82 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs @@ -376,6 +376,8 @@ namespace OpenSim.Region.Framework.Scenes public bool m_dupeInProgress = false; internal Dictionary m_savedScriptState; + public UUID MonitoringObject { get; set; } + #region Properties /// diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index 45bdb41ba3..9c673955e1 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs @@ -424,6 +424,19 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api return lease; } + protected SceneObjectPart MonitoringObject() + { + UUID m = m_host.ParentGroup.MonitoringObject; + if (m == UUID.Zero) + return null; + + SceneObjectPart p = m_ScriptEngine.World.GetSceneObjectPart(m); + if (p == null) + m_host.ParentGroup.MonitoringObject = UUID.Zero; + + return p; + } + protected virtual void ScriptSleep(int delay) { delay = (int)((float)delay * m_ScriptDelayFactor); From 995e750c561d3faebe7b7aceb729d2823dd8bb38 Mon Sep 17 00:00:00 2001 From: Melanie Thielker Date: Fri, 24 Feb 2017 01:30:20 +0000 Subject: [PATCH 04/16] Change a misleading message that could lead users to believe a grid is down --- OpenSim/Region/Framework/Scenes/Scene.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 2137b42417..2a0bd3c556 100755 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs @@ -1520,6 +1520,8 @@ namespace OpenSim.Region.Framework.Scenes m_log.Debug("[SCENE]: Persisting changed objects"); Backup(true); + m_log.Debug("[SCENE]: Closing scene"); + m_sceneGraph.Close(); base.Close(); @@ -3983,7 +3985,7 @@ namespace OpenSim.Region.Framework.Scenes if (!LoginsEnabled) { - reason = "Logins Disabled"; + reason = "Logins to this region are disabled"; return false; } From 41d21190b18e1b14fe4f56bde69e7e9a9ee60723 Mon Sep 17 00:00:00 2001 From: Melanie Thielker Date: Fri, 24 Feb 2017 01:31:32 +0000 Subject: [PATCH 05/16] Skip region restart messages and delays when there are no root agents --- .../RemoteController/RemoteAdminPlugin.cs | 40 ++++++++++++++++++- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs index 597b4397c5..e5fbc695f8 100644 --- a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs +++ b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs @@ -359,6 +359,42 @@ namespace OpenSim.ApplicationPlugins.RemoteController notice = false; } + if (startupConfig.GetBoolean("SkipDelayOnEmptyRegion", false)) + { + m_log.Info("[RADMIN]: Counting affected avatars"); + int agents = 0; + + if (restartAll) + { + foreach (Scene s in m_application.SceneManager.Scenes) + { + foreach (ScenePresence sp in s.GetScenePresences()) + { + if (!sp.IsChildAgent) + agents++; + } + } + } + else + { + foreach (ScenePresence sp in rebootedScene.GetScenePresences()) + { + if (!sp.IsChildAgent) + agents++; + } + } + + m_log.InfoFormat("[RADMIN]: Avatars in region: {0}", agents); + + if (agents == 0) + { + m_log.Info("[RADMIN]: No avatars detected, shutting down without delay"); + + times.Clear(); + times.Add(0); + } + } + List restartList; if (restartAll) @@ -376,10 +412,10 @@ namespace OpenSim.ApplicationPlugins.RemoteController } catch (Exception e) { -// m_log.ErrorFormat("[RADMIN]: Restart region: failed: {0} {1}", e.Message, e.StackTrace); + m_log.ErrorFormat("[RADMIN]: Restart region: failed: {0} {1}", e.Message, e.StackTrace); responseData["rebooting"] = false; - throw e; + throw; } m_log.Info("[RADMIN]: Restart Region request complete"); From adcb1d8798c0404d0c9f894d1b33003557066123 Mon Sep 17 00:00:00 2001 From: Melanie Thielker Date: Fri, 24 Feb 2017 01:33:02 +0000 Subject: [PATCH 06/16] Allow setting the stats log file location in OpenSim.ini rather than app.exe.config --- OpenSim/Framework/Servers/ServerBase.cs | 17 +++++++++++++++++ OpenSim/Framework/Util.cs | 15 ++++++++++++++- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/OpenSim/Framework/Servers/ServerBase.cs b/OpenSim/Framework/Servers/ServerBase.cs index 8965e71a34..f627ae61ee 100644 --- a/OpenSim/Framework/Servers/ServerBase.cs +++ b/OpenSim/Framework/Servers/ServerBase.cs @@ -57,6 +57,7 @@ namespace OpenSim.Framework.Servers protected OpenSimAppender m_consoleAppender; protected FileAppender m_logFileAppender; + protected FileAppender m_statsLogFileAppender; protected DateTime m_startuptime; protected string m_startupDirectory = Environment.CurrentDirectory; @@ -156,6 +157,10 @@ namespace OpenSim.Framework.Servers { m_logFileAppender = (FileAppender)appender; } + else if (appender.Name == "StatsLogFileAppender") + { + m_statsLogFileAppender = (FileAppender)appender; + } } if (null == m_consoleAppender) @@ -185,6 +190,18 @@ namespace OpenSim.Framework.Servers m_log.InfoFormat("[SERVER BASE]: Logging started to file {0}", m_logFileAppender.File); } + + if (m_statsLogFileAppender != null && startupConfig != null) + { + string cfgStatsFileName = startupConfig.GetString("StatsLogFile", null); + if (cfgStatsFileName != null) + { + m_statsLogFileAppender.File = cfgStatsFileName; + m_statsLogFileAppender.ActivateOptions(); + } + + m_log.InfoFormat("[SERVER BASE]: Stats Logging started to file {0}", m_statsLogFileAppender.File); + } } /// diff --git a/OpenSim/Framework/Util.cs b/OpenSim/Framework/Util.cs index 0037f4f4ae..dcb660a135 100644 --- a/OpenSim/Framework/Util.cs +++ b/OpenSim/Framework/Util.cs @@ -1190,7 +1190,7 @@ namespace OpenSim.Framework { foreach (IAppender appender in LogManager.GetRepository().GetAppenders()) { - if (appender is FileAppender) + if (appender is FileAppender && appender.Name == "LogFileAppender") { return ((FileAppender)appender).File; } @@ -1199,6 +1199,19 @@ namespace OpenSim.Framework return "./OpenSim.log"; } + public static string statsLogFile() + { + foreach (IAppender appender in LogManager.GetRepository().GetAppenders()) + { + if (appender is FileAppender && appender.Name == "StatsLogFileAppender") + { + return ((FileAppender)appender).File; + } + } + + return "./OpenSimStats.log"; + } + public static string logDir() { return Path.GetDirectoryName(logFile()); From 5109dc955fa25562675b7ae37a79bf5504f2e394 Mon Sep 17 00:00:00 2001 From: Melanie Thielker Date: Mon, 13 Mar 2017 12:48:55 +0000 Subject: [PATCH 07/16] Set a startup marker to let external scripts know the scene is up. --- OpenSim/Region/Framework/Scenes/Scene.cs | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 2a0bd3c556..f4bf0b2824 100755 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs @@ -1212,6 +1212,28 @@ namespace OpenSim.Region.Framework.Scenes StatsReporter.OnSendStatsResult += SendSimStatsPackets; StatsReporter.OnStatsIncorrect += m_sceneGraph.RecalculateStats; + IConfig restartConfig = config.Configs["RestartModule"]; + if (restartConfig != null) + { + string markerPath = restartConfig.GetString("MarkerPath", String.Empty); + + if (markerPath != String.Empty) + { + string path = Path.Combine(markerPath, RegionInfo.RegionID.ToString() + ".started"); + try + { + string pidstring = System.Diagnostics.Process.GetCurrentProcess().Id.ToString(); + FileStream fs = File.Create(path); + System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding(); + Byte[] buf = enc.GetBytes(pidstring); + fs.Write(buf, 0, buf.Length); + fs.Close(); + } + catch (Exception) + { + } + } + } } public Scene(RegionInfo regInfo) From 4e465002a2dcaf2f08c079ce87718715c7319230 Mon Sep 17 00:00:00 2001 From: Melanie Thielker Date: Mon, 20 Mar 2017 11:46:46 +0000 Subject: [PATCH 08/16] Make the file based log file format sane for the casual user Developer-oriented format is left commented so interested users and devs can reactivate it. --- bin/OpenSim.exe.config | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/bin/OpenSim.exe.config b/bin/OpenSim.exe.config index b01191e140..f1bf8a050a 100755 --- a/bin/OpenSim.exe.config +++ b/bin/OpenSim.exe.config @@ -39,7 +39,8 @@ - + + From 3e880cee45ea0d85297c51d3ed87490d47a5bd94 Mon Sep 17 00:00:00 2001 From: Melanie Thielker Date: Thu, 23 Mar 2017 23:00:14 +0000 Subject: [PATCH 09/16] Allow short-circuiting region restart delays of there are no users left --- .../CoreModules/World/Region/RestartModule.cs | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/OpenSim/Region/CoreModules/World/Region/RestartModule.cs b/OpenSim/Region/CoreModules/World/Region/RestartModule.cs index 8bac9e6623..bf6592fd1a 100644 --- a/OpenSim/Region/CoreModules/World/Region/RestartModule.cs +++ b/OpenSim/Region/CoreModules/World/Region/RestartModule.cs @@ -61,6 +61,8 @@ namespace OpenSim.Region.CoreModules.World.Region protected IDialogModule m_DialogModule = null; protected string m_MarkerPath = String.Empty; private int[] m_CurrentAlerts = null; + protected bool m_shortCircuitDelays = false; + protected bool m_rebootAll = false; public void Initialise(IConfigSource config) { @@ -69,6 +71,9 @@ namespace OpenSim.Region.CoreModules.World.Region { m_MarkerPath = restartConfig.GetString("MarkerPath", String.Empty); } + IConfig startupConfig = config.Configs["Startup"]; + m_shortCircuitDelays = startupConfig.GetBoolean("SkipDelayOnEmptyRegion", false); + m_rebootAll = startupConfig.GetBoolean("InworldRestartShutsDown", false); } public void AddRegion(Scene scene) @@ -250,6 +255,14 @@ namespace OpenSim.Region.CoreModules.World.Region private void OnTimer(object source, ElapsedEventArgs e) { int nextInterval = DoOneNotice(true); + if (m_shortCircuitDelays) + { + if (CountAgents() == 0) + { + m_Scene.RestartNow(); + return; + } + } SetTimer(nextInterval); } @@ -349,5 +362,35 @@ namespace OpenSim.Region.CoreModules.World.Region { } } + + int CountAgents() + { + m_log.Info("[RESTART MODULE]: Counting affected avatars"); + int agents = 0; + + if (m_rebootAll) + { + foreach (Scene s in SceneManager.Instance.Scenes) + { + foreach (ScenePresence sp in s.GetScenePresences()) + { + if (!sp.IsChildAgent) + agents++; + } + } + } + else + { + foreach (ScenePresence sp in m_Scene.GetScenePresences()) + { + if (!sp.IsChildAgent) + agents++; + } + } + + m_log.InfoFormat("[RESTART MODULE]: Avatars in region: {0}", agents); + + return agents; + } } } From 680231d7e79cae2636e9722ca12b79345fa2dbdd Mon Sep 17 00:00:00 2001 From: Melanie Thielker Date: Thu, 23 Mar 2017 23:00:48 +0000 Subject: [PATCH 10/16] Make the MySqlGeneric layer transaction aware --- OpenSim/Data/MySQL/MySQLFramework.cs | 77 +++++--- .../Data/MySQL/MySQLGenericTableHandler.cs | 169 +++++++++++------- 2 files changed, 159 insertions(+), 87 deletions(-) diff --git a/OpenSim/Data/MySQL/MySQLFramework.cs b/OpenSim/Data/MySQL/MySQLFramework.cs index 34791cf6be..93662db875 100644 --- a/OpenSim/Data/MySQL/MySQLFramework.cs +++ b/OpenSim/Data/MySQL/MySQLFramework.cs @@ -36,7 +36,7 @@ using MySql.Data.MySqlClient; namespace OpenSim.Data.MySQL { /// - /// A database interface class to a user profile storage system + /// Common code for a number of database modules /// public class MySqlFramework { @@ -44,14 +44,24 @@ namespace OpenSim.Data.MySQL log4net.LogManager.GetLogger( System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); - protected string m_connectionString; - protected object m_dbLock = new object(); + protected string m_connectionString = String.Empty; + protected MySqlTransaction m_trans = null; + // Constructor using a connection string. Instances constructed + // this way will open a new connection for each call. protected MySqlFramework(string connectionString) { m_connectionString = connectionString; } + // Constructor using a connection object. Instances constructed + // this way will use the connection object and never create + // new connections. + protected MySqlFramework(MySqlTransaction trans) + { + m_trans = trans; + } + ////////////////////////////////////////////////////////////// // // All non queries are funneled through one connection @@ -59,33 +69,48 @@ namespace OpenSim.Data.MySQL // protected int ExecuteNonQuery(MySqlCommand cmd) { - lock (m_dbLock) + if (m_trans == null) { using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) { - try - { - dbcon.Open(); - cmd.Connection = dbcon; - - try - { - return cmd.ExecuteNonQuery(); - } - catch (Exception e) - { - m_log.Error(e.Message, e); - m_log.Error(Environment.StackTrace.ToString()); - return 0; - } - } - catch (Exception e) - { - m_log.Error(e.Message, e); - return 0; - } + dbcon.Open(); + return ExecuteNonQueryWithConnection(cmd, dbcon); } } + else + { + return ExecuteNonQueryWithTransaction(cmd, m_trans); + } + } + + private int ExecuteNonQueryWithTransaction(MySqlCommand cmd, MySqlTransaction trans) + { + cmd.Transaction = trans; + return ExecuteNonQueryWithConnection(cmd, trans.Connection); + } + + private int ExecuteNonQueryWithConnection(MySqlCommand cmd, MySqlConnection dbcon) + { + try + { + cmd.Connection = dbcon; + + try + { + return cmd.ExecuteNonQuery(); + } + catch (Exception e) + { + m_log.Error(e.Message, e); + m_log.Error(Environment.StackTrace.ToString()); + return 0; + } + } + catch (Exception e) + { + m_log.Error(e.Message, e); + return 0; + } } } -} \ No newline at end of file +} diff --git a/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs b/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs index 6aae9c644b..bd8bbd5920 100644 --- a/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs +++ b/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs @@ -53,14 +53,27 @@ namespace OpenSim.Data.MySQL get { return GetType().Assembly; } } + public MySQLGenericTableHandler(MySqlTransaction trans, + string realm, string storeName) : base(trans) + { + m_Realm = realm; + + CommonConstruct(storeName); + } + public MySQLGenericTableHandler(string connectionString, string realm, string storeName) : base(connectionString) { m_Realm = realm; - m_connectionString = connectionString; + CommonConstruct(storeName); + } + + protected void CommonConstruct(string storeName) + { if (storeName != String.Empty) { + // We always use a new connection for any Migrations using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) { dbcon.Open(); @@ -110,6 +123,11 @@ namespace OpenSim.Data.MySQL } public virtual T[] Get(string[] fields, string[] keys) + { + return Get(fields, keys, String.Empty); + } + + public virtual T[] Get(string[] fields, string[] keys, string options) { if (fields.Length != keys.Length) return new T[0]; @@ -126,8 +144,8 @@ namespace OpenSim.Data.MySQL string where = String.Join(" and ", terms.ToArray()); - string query = String.Format("select * from {0} where {1}", - m_Realm, where); + string query = String.Format("select * from {0} where {1} {2}", + m_Realm, where, options); cmd.CommandText = query; @@ -136,73 +154,93 @@ namespace OpenSim.Data.MySQL } protected T[] DoQuery(MySqlCommand cmd) + { + if (m_trans == null) + { + using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) + { + dbcon.Open(); + + return DoQueryWithConnection(cmd, dbcon); + } + } + else + { + return DoQueryWithTransaction(cmd, m_trans); + } + } + + protected T[] DoQueryWithTransaction(MySqlCommand cmd, MySqlTransaction trans) + { + cmd.Transaction = trans; + + return DoQueryWithConnection(cmd, trans.Connection); + } + + protected T[] DoQueryWithConnection(MySqlCommand cmd, MySqlConnection dbcon) { List result = new List(); - using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) + cmd.Connection = dbcon; + + using (IDataReader reader = cmd.ExecuteReader()) { - dbcon.Open(); - cmd.Connection = dbcon; + if (reader == null) + return new T[0]; - using (IDataReader reader = cmd.ExecuteReader()) + CheckColumnNames(reader); + + while (reader.Read()) { - if (reader == null) - return new T[0]; + T row = new T(); - CheckColumnNames(reader); - - while (reader.Read()) + foreach (string name in m_Fields.Keys) { - T row = new T(); - - foreach (string name in m_Fields.Keys) + if (reader[name] is DBNull) { - if (reader[name] is DBNull) - { - continue; - } - if (m_Fields[name].FieldType == typeof(bool)) - { - int v = Convert.ToInt32(reader[name]); - m_Fields[name].SetValue(row, v != 0 ? true : false); - } - else if (m_Fields[name].FieldType == typeof(UUID)) - { - m_Fields[name].SetValue(row, DBGuid.FromDB(reader[name])); - } - else if (m_Fields[name].FieldType == typeof(int)) - { - int v = Convert.ToInt32(reader[name]); - m_Fields[name].SetValue(row, v); - } - else if (m_Fields[name].FieldType == typeof(uint)) - { - uint v = Convert.ToUInt32(reader[name]); - m_Fields[name].SetValue(row, v); - } - else - { - m_Fields[name].SetValue(row, reader[name]); - } + continue; } - - if (m_DataField != null) + if (m_Fields[name].FieldType == typeof(bool)) { - Dictionary data = - new Dictionary(); - - foreach (string col in m_ColumnNames) - { - data[col] = reader[col].ToString(); - if (data[col] == null) - data[col] = String.Empty; - } - - m_DataField.SetValue(row, data); + int v = Convert.ToInt32(reader[name]); + m_Fields[name].SetValue(row, v != 0 ? true : false); + } + else if (m_Fields[name].FieldType == typeof(UUID)) + { + m_Fields[name].SetValue(row, DBGuid.FromDB(reader[name])); + } + else if (m_Fields[name].FieldType == typeof(int)) + { + int v = Convert.ToInt32(reader[name]); + m_Fields[name].SetValue(row, v); + } + else if (m_Fields[name].FieldType == typeof(uint)) + { + uint v = Convert.ToUInt32(reader[name]); + m_Fields[name].SetValue(row, v); + } + else + { + m_Fields[name].SetValue(row, reader[name]); } - - result.Add(row); } + + if (m_DataField != null) + { + Dictionary data = + new Dictionary(); + + foreach (string col in m_ColumnNames) + { + data[col] = reader[col].ToString(); + if (data[col] == null) + data[col] = String.Empty; + } + + m_DataField.SetValue(row, data); + } + + result.Add(row); } } @@ -357,14 +395,23 @@ namespace OpenSim.Data.MySQL public object DoQueryScalar(MySqlCommand cmd) { - using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) + if (m_trans == null) { - dbcon.Open(); - cmd.Connection = dbcon; + using (MySqlConnection dbcon = new MySqlConnection(m_connectionString)) + { + dbcon.Open(); + cmd.Connection = dbcon; + + return cmd.ExecuteScalar(); + } + } + else + { + cmd.Connection = m_trans.Connection; + cmd.Transaction = m_trans; return cmd.ExecuteScalar(); } } - } } From 75915bd0f3be487a0fa05e4a91d46b23b488ce82 Mon Sep 17 00:00:00 2001 From: Melanie Thielker Date: Fri, 31 Mar 2017 13:46:01 +0100 Subject: [PATCH 11/16] Add the ability to post to and act uponconfiguration in etcd Etcd is a distributed, highly available name-value store that is the basis of many clustered applications. However, it can also be run on a standalone machine. Using etcd allows live monitoring and possibly changing configuration while the sim is running. --- .../Framework/Interfaces/IEtcdModule.cs | 37 + OpenSim/Region/Framework/Scenes/Scene.cs | 47 +- .../Monitoring/EtcdMonitoringModule.cs | 195 + bin/Newtonsoft.Json.dll | Bin 0 -> 498176 bytes bin/Newtonsoft.Json.xml | 8626 +++++++++++++++++ bin/RestSharp.dll | Bin 0 -> 165376 bytes bin/RestSharp.xml | 3024 ++++++ bin/netcd.dll | Bin 0 -> 22528 bytes 8 files changed, 11926 insertions(+), 3 deletions(-) create mode 100644 OpenSim/Region/Framework/Interfaces/IEtcdModule.cs create mode 100644 OpenSim/Region/OptionalModules/Framework/Monitoring/EtcdMonitoringModule.cs create mode 100644 bin/Newtonsoft.Json.dll create mode 100644 bin/Newtonsoft.Json.xml create mode 100644 bin/RestSharp.dll create mode 100644 bin/RestSharp.xml create mode 100644 bin/netcd.dll diff --git a/OpenSim/Region/Framework/Interfaces/IEtcdModule.cs b/OpenSim/Region/Framework/Interfaces/IEtcdModule.cs new file mode 100644 index 0000000000..123cb67308 --- /dev/null +++ b/OpenSim/Region/Framework/Interfaces/IEtcdModule.cs @@ -0,0 +1,37 @@ +/* + * Copyright (c) Contributors, http://opensimulator.org/ + * See CONTRIBUTORS.TXT for a full list of copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the OpenSimulator Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +using System; + +public interface IEtcdModule +{ + bool Store(string k, string v); + bool Store(string k, string v, int ttl); + string Get(string k); + void Watch(string k, Action callback); + void Delete(string k); +} diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index f4bf0b2824..fd1382141e 100755 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs @@ -540,6 +540,9 @@ namespace OpenSim.Region.Framework.Scenes private Timer m_mapGenerationTimer = new Timer(); private bool m_generateMaptiles; + protected int m_lastHealth = -1; + protected int m_lastUsers = -1; + #endregion Fields #region Properties @@ -1234,6 +1237,8 @@ namespace OpenSim.Region.Framework.Scenes } } } + + StartTimerWatchdog(); } public Scene(RegionInfo regInfo) @@ -1504,6 +1509,14 @@ namespace OpenSim.Region.Framework.Scenes return; } + IEtcdModule etcd = RequestModuleInterface(); + if (etcd != null) + { + etcd.Delete("Health"); + etcd.Delete("HealthFlags"); + etcd.Delete("RootAgents"); + } + m_log.InfoFormat("[SCENE]: Closing down the single simulator: {0}", RegionInfo.RegionName); @@ -5536,23 +5549,24 @@ Label_GroupsDone: return 0; } - if ((Util.EnvironmentTickCountSubtract(m_lastFrameTick)) < 1000) + if ((Util.EnvironmentTickCountSubtract(m_lastFrameTick)) < 2000) { health+=1; flags |= 1; } - if (Util.EnvironmentTickCountSubtract(m_lastIncoming) < 1000) + if (Util.EnvironmentTickCountSubtract(m_lastIncoming) < 2000) { health+=1; flags |= 2; } - if (Util.EnvironmentTickCountSubtract(m_lastOutgoing) < 1000) + if (Util.EnvironmentTickCountSubtract(m_lastOutgoing) < 2000) { health+=1; flags |= 4; } + /* else { int pid = System.Diagnostics.Process.GetCurrentProcess().Id; @@ -5565,6 +5579,7 @@ proc.WaitForExit(); Thread.Sleep(1000); Environment.Exit(1); } + */ if (flags != 7) return health; @@ -6329,6 +6344,32 @@ Environment.Exit(1); public void TimerWatchdog(object sender, ElapsedEventArgs e) { CheckHeartbeat(); + + IEtcdModule etcd = RequestModuleInterface(); + int flags; + string message; + if (etcd != null) + { + int health = GetHealth(out flags, out message); + if (health != m_lastHealth) + { + m_lastHealth = health; + + etcd.Store("Health", health.ToString(), 300000); + etcd.Store("HealthFlags", flags.ToString(), 300000); + } + + int roots = 0; + foreach (ScenePresence sp in GetScenePresences()) + if (!sp.IsChildAgent && !sp.IsNPC) + roots++; + + if (m_lastUsers != roots) + { + m_lastUsers = roots; + etcd.Store("RootAgents", roots.ToString(), 300000); + } + } } /// This method deals with movement when an avatar is automatically moving (but this is distinct from the diff --git a/OpenSim/Region/OptionalModules/Framework/Monitoring/EtcdMonitoringModule.cs b/OpenSim/Region/OptionalModules/Framework/Monitoring/EtcdMonitoringModule.cs new file mode 100644 index 0000000000..921bbfbbee --- /dev/null +++ b/OpenSim/Region/OptionalModules/Framework/Monitoring/EtcdMonitoringModule.cs @@ -0,0 +1,195 @@ +/* + * Copyright (c) Contributors, http://opensimulator.org/ + * See CONTRIBUTORS.TXT for a full list of copyright holders. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of the OpenSimulator Project nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +using System; +using System.Collections.Generic; +using System.Reflection; +using System.Text; +using log4net; +using Mono.Addins; +using Nini.Config; +using OpenMetaverse; +using OpenSim.Framework; +using OpenSim.Framework.Console; +using OpenSim.Region.Framework.Interfaces; +using OpenSim.Region.Framework.Scenes; +using netcd; +using netcd.Serialization; +using netcd.Advanced; +using netcd.Advanced.Requests; + +namespace OpenSim.Region.OptionalModules.Framework.Monitoring +{ + /// + /// Allows to store monitoring data in etcd, a high availability + /// name-value store. + /// + [Extension(Path = "/OpenSim/RegionModules", NodeName = "RegionModule", Id = "EtcdMonitoringModule")] + public class EtcdMonitoringModule : INonSharedRegionModule, IEtcdModule + { + private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); + + protected Scene m_scene; + protected IEtcdClient m_client; + protected bool m_enabled = false; + protected string m_etcdBasePath = String.Empty; + protected bool m_appendRegionID = true; + + public string Name + { + get { return "EtcdMonitoringModule"; } + } + + public Type ReplaceableInterface + { + get { return null; } + } + + public void Initialise(IConfigSource source) + { + if (source.Configs["Etcd"] == null) + return; + + IConfig etcdConfig = source.Configs["Etcd"]; + + string etcdUrls = etcdConfig.GetString("EtcdUrls", String.Empty); + if (etcdUrls == String.Empty) + return; + + m_etcdBasePath = etcdConfig.GetString("BasePath", m_etcdBasePath); + m_appendRegionID = etcdConfig.GetBoolean("AppendRegionID", m_appendRegionID); + + if (!m_etcdBasePath.EndsWith("/")) + m_etcdBasePath += "/"; + + try + { + string[] endpoints = etcdUrls.Split(new char[] {','}); + List uris = new List(); + foreach (string endpoint in endpoints) + uris.Add(new Uri(endpoint.Trim())); + + m_client = new EtcdClient(uris.ToArray(), new DefaultSerializer(), new DefaultSerializer()); + } + catch (Exception e) + { + m_log.DebugFormat("[ETCD]: Error initializing connection: " + e.ToString()); + return; + } + + m_log.DebugFormat("[ETCD]: Etcd module configured"); + m_enabled = true; + } + + public void Close() + { + //m_client = null; + m_scene = null; + } + + public void AddRegion(Scene scene) + { + m_scene = scene; + + if (m_enabled) + { + if (m_appendRegionID) + m_etcdBasePath += m_scene.RegionInfo.RegionID.ToString() + "/"; + + m_log.DebugFormat("[ETCD]: Using base path {0} for all keys", m_etcdBasePath); + + try + { + m_client.Advanced.CreateDirectory(new CreateDirectoryRequest() {Key = m_etcdBasePath}); + } + catch (Exception e) + { + m_log.ErrorFormat("Exception trying to create base path {0}: " + e.ToString(), m_etcdBasePath); + } + + scene.RegisterModuleInterface(this); + } + } + + public void RemoveRegion(Scene scene) + { + } + + public void RegionLoaded(Scene scene) + { + } + + public bool Store(string k, string v) + { + return Store(k, v, 0); + } + + public bool Store(string k, string v, int ttl) + { + Response resp = m_client.Advanced.SetKey(new SetKeyRequest() { Key = m_etcdBasePath + k, Value = v, TimeToLive = ttl }); + + if (resp == null) + return false; + + if (resp.ErrorCode.HasValue) + { + m_log.DebugFormat("[ETCD]: Error {0} ({1}) storing {2} => {3}", resp.Cause, (int)resp.ErrorCode, m_etcdBasePath + k, v); + + return false; + } + + return true; + } + + public string Get(string k) + { + Response resp = m_client.Advanced.GetKey(new GetKeyRequest() { Key = m_etcdBasePath + k }); + + if (resp == null) + return String.Empty; + + if (resp.ErrorCode.HasValue) + { + m_log.DebugFormat("[ETCD]: Error {0} ({1}) getting {2}", resp.Cause, (int)resp.ErrorCode, m_etcdBasePath + k); + + return String.Empty; + } + + return resp.Node.Value; + } + + public void Delete(string k) + { + m_client.Advanced.DeleteKey(new DeleteKeyRequest() { Key = m_etcdBasePath + k }); + } + + public void Watch(string k, Action callback) + { + m_client.Advanced.WatchKey(new WatchKeyRequest() { Key = m_etcdBasePath + k, Callback = (x) => { callback(x.Node.Value); } }); + } + } +} diff --git a/bin/Newtonsoft.Json.dll b/bin/Newtonsoft.Json.dll new file mode 100644 index 0000000000000000000000000000000000000000..5931de1693eaa105d37dfa6e319c7ba103c7f5d9 GIT binary patch literal 498176 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

MWql=REsj9ztdQ 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

50l8F)it-{uW^L8JX{0D(#mL&gPVPvP= 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�Ca@6{uMy7-Al7i2V-jB4pu`P?ldR3 zIP@)I+C|w*6dXN;sx>jE{{z6yfo%LEz8#J767hAsn~lH9Z%!%%T9vT%_+|W!GIk>5 zFdVUsoU5?O{M;?$ya~k}FSY)WvJ%pBsD|NH;fP0zs$=Tm3y*0dC|>NDkRsN04U*0ZOLU6*&Et(-n)@rzNrF*lX;^`q-9AI=phgQCeB# zl7v4_@uYNO4gwyZ0L&rzLOS(z#^grPj4K~asBtCh-v=yRH9^;mpy}wDv=8>b8hwiD z!wEPhzyjC75klh3j*BQvU;VEI~9hVZ; zAuz+t4tFP?wW|T0xkrR!ptsyQrV_SlC3$J@R@gU#gC>*$98EYW)&7X137^rXmNf=t z6LA|Tp=iait6b3)!hv4EjE3}sX7q;Roxda~nRa*VzsFp37Xm%tZkn!nsP`r|@YTNr z?an?B8t=6CXP%_~4B{oIgU_5Rx3gh2`x!-l3)MFMcIJr$Ngw+hzPf7p8M1HRK$TiI zKa(Sazw*=mEU+0xaM8wpmY#lsqAy|-kr@cv&!W#}1aa{AO8f)iM5%T0<)q$(Ao2_uzU-^L4#SW>9*#b8-c> z^lr*tGaj_wL3bFt?=BHUi*$*=Wm($*#)vk)p14Dtj#}fJL>Qhp-bERiJOVQdTHAGe z-CCN{8O)DyV*T8ubHTdeM7=vPdCA^#byXgnoXBl@4@Ff%U3Yt{uQXk=pq?*dUgVvs zHFgXN(L1c#E?Et^To~kx%_iu>zD0#A_SB-*c?sCneB0kB&z-MXlP^oGz?mvpr^^HD za-B`*Q}@#wuV#z_?rAS?!qFc zI$js{Q`OY=x2F!s;br=srzzH#PPf-col`ys!%FY;`3mFVgXmRc(Y~5VFe8u)AUj(J zr2F(*$qKsfc8A!8u-4CVyRL^gaal5Y7P*YKpQ58fQ2pc7I~QMsuh=WK)%>uAmqw5U6*xNa`!v@^KSG0= z;}rc7VA-Hni$95@KAc2ah+dgOtZIEb(RWiO&0B)jl^S2et=`AJsh6v7Iko9|iM%bJ zx`p}w8tR*A3}$Q^FXt7RAQNq;c%&7o5L@^&k1La2`&RKpZ{jZ?9m=e!KjB{E|706N z?z{b;;v|1boOSHSKnD?V(b|Dr^jekVA*cl3?!2ylj6iV7^Np@HE2xci88?sM^^1*z z!tSkkr#3nka!isaAcMs`A&_YlGlu*U(1f%5f)w4=h$DmO&16LlvU@1a$V*A%@mwM$ zH3?_G-znox)g!y*0E!}y2d=g~`3CKqWrSScI%@DS@<<4vM$v3@^bVxs@lU4fZW3VZ^--U1B2IxTa7DImyEYI+3y|pyL1MKdjpI$Af0Lv`DXGRDu#_P zEY>d^z~JFP82=3F*C={Nv3?42l1zL&t52igzQy|C0rqfA6vLHj`xfhwUzBWq#ZQ84 zuP!yhT(Q0o^U6xitkPGeKq$YMdU?P*uaqCM{B=qFBxJ&^0L6855CW`DSZ%|L00f(F z1d4{rlbtdUG9h#ZvYQ-~+R&5nYJSizfu-j?D(41;dBDKAxd4Mm%(+qd&&DIp4Z3IJ zL4MMCs{@KIX-sb}3=*^*)WZw6f|iXnQcZ9*MX|CsN`@$}Qxp?LWuiC8t@lh{BXoAt ztuk01WO`{FHNB2v;Lh^j`}r=$KhEE}_55IcD`SgJB{z_3Eay(MkgvHApDo$WIt6nI z&6~k=P|i`=tgJeHi1K74hl(JAL)%6{yc=oN*mO3%SSj>$@9<$?)Xa6HYQx9Py+R%G zUW#jdJxtcxsoM$iO?RZCQ_@_zCbFbQ4 zOe8yY*MRI+Z{1s@ba{Z|?0{b;2e0JbHh0{<}t?!A`z zIZ(igQ+{ZpAL|W&7iQS=#r7T`rz2+EzF;foltwW*mTEW$PwK5q4yfX*eRoL zK{0_jdp#6mPgsB-LQk7h~oHNS8H(3lZ-L!)t$l4ThiDhPB-JB^l zf*q1B?_g2gRW(`nOjuvlqW-z8@x?A9q?(X&eytuGv#p`$Cly4v**E|Jr-&zF&2q`= zMMsrO;VGF@AR@Ve!YQ^eGxV;3zN9MWW%<-D@Zi?n@MC1dFN7afSEC%TKraX7sz=TO z$3oxZK*zCtH+*t_EJFy#%}@QpNP$(zVcl3^VzqabkRi49fJVtmx`I;X^Z&Y@sa-{W z>Kbx(8I4Sm&mJ(wrp|g3%le-Q61On$&GQB_#6Xw` z13ro=j@&>dez>Mc$6(;Pfh;kw4`MM2#K^|KQXWM#GA$3kHJoOv9M+crMT5IoU*ru8 z@;X-5AjRy|Kk45Ao;E|F;!6-)M+2r;kdAxnpJ#vEzjG=3?AE@_3R_)Rp|meT4Yn+r zgiT>%^oE1h)_GAJnz*rV9NB{rBWn+IzLDNNP-|y5ePKTR=onzy5T4StdF43UW_U`$ znWtJ6w5r$mdKTRuYitUrTja1IRJTY>cFr*73?8Z&U&i+ndgRl%L! zn$KefPTscnm~)wdHP`JeCi*I%UvuAFtPAPdO8@l%;@X|mMd?CdY?zaKu!~Oo@1!kj z@{J2}u_87`3c2|CI5K8Q((a~5uL1%4>u0#)8oZdG2!;3_jr37qItt_5vW^dgsFuV2 z`T;1~5TWPxEcSBU?b-3dX5F7{^c6Pg8<)j!6pCng<(#OdFpzPwn!M(r32VC5hEe}r z&^QEDYWlcmdu80`nA?pkpQ!rq(wwc4?)vNe=4XuA>qQqZNM1#%z=m-1hbgB~1@Jcjp;5?MbTQr1zjI42ehrJ6 zN!X(-Wi()gT)gNDHrXE+ZicEXXeZ!%L%Rz%uWK4XhnCbyqP3V_@E`^8pJx4>*}*T(Jsi)4`K`=n6!EQ_}s$W>1@ zKC@Uo)nCu!0Exo1)S&kCZYqf70t8BS$x`$!eh;u9{vN*=*Y%`*7}6enk+Cl2h9}NK za2RH5ljLZ9dC~w|!k*sTI8dye%KF?mXrPeptkXt2jrW;m`3ReXa6yjD$j+i#h z-#6KU9pBVxnVmIq9^k7%uZGc=s77rvmmMoj5{0VUfg|rY`bZ3D7=2lhqPJ*Rj!vRr zymx+-VT;mSo{b(#hk*YO3>>`2Of{n0sF)7iXan*7H4#&(vhlhA{n6tLsoghP)*&~1KS`!=ZO_X;tNp~*c z`sU&ncP5lp-K?8Q-E|8az~`ivXdWeJ!qQ)QHuXafj5|B`Qh9XycklF!J%H@{lT)7g z-RXOLt&h>gpU#;04qt>uRZkaVK++97Q?~Q&!A|OP2lWZ#>#2{{hbMK~ET-C<_51&RJX}jnzL^pI#4;+qC3zHMEsguZ$f-bemH7?YyabthVr_EW~ zQl@%p&Y3U>ZOuXgmXtFdnuTN4?mgYw&09T#)=OTJjL7_zRWh3}bq8&IJGkN7;qreM z_5ROmO^dbDwH9l8Tcp-m+w+pg+ZEEA>wi@1zwEWv0k*`&@93Y$=c9Y@dCA&I=UXxd zpD%jp9(q9sHEz2XCestEC}DgggM?kt|6j_v>Axul8Ig2&^C@Zgqx-_09*Gm+(t<#y z%q2~LZ$i<;&XwK_NlAwsFue^24{bv&`ZDob=wBW>NM~Z%Ffcwbz7tnQ29SJ+j2gI* zV}Uu5-|A+04T%(KC?Oa9F1yVVB*~Q0BImai+ZJN86N$|aik9GF#OdY^Fcg?rNR|7> z`VTt=$2$FlM$dS-MHk&9a572wdd$CoY!z0RcT(Tq@MA;BC&HNyK_yY5VpS79ikQF zoCU!R~y8H)}?eUXX6@y0aGUqhX}0 z7=ymWoeyV+p2GltXp1lg(5VYMb~{%orNdg@&Q{qzbnC;x8tz2`sjzy)%??@Tx-LV7!%3$MVI*)JcCO*U1Vx- z;pu9IiCb3^eSkK`+ZGf23?h%8f#D~pB_`Lfj)rzn3|silPGtKltdkP?K#p;tyMk2I zVKrkO#$N@P-B6(h=`fe?8HvWzy9hWs@nn#0U~-fMUn2n`+!(Q@&ggwH^<(pm(R?yi zc}7On@?({+FVfDyadk0HT8_CfZbQ39v~0TRM1Z*?#v7pr#}sr+da%V zgXj;(PGb-e4e4|Yw(w=-);Oq8>G#Ph0|-U811t}qM$m8JQX?1$TZi3{x+Fox!NA9t za%EB2aNkx2#Eo_1D&G?*hz(ElmluvsTu@#(HZZZWeoXr??JG*Oq~uz{ozar@bh!jJ z9of@i>gno1rB2t?!8c}7*t&s=>;>PlQyYb6s8!K{L974ekXMgqT>PTRy2|Kz=Vzo| z@VC^9gj=J~)V09Hiy(k^Tgze^TL-yh7RB6+PD(oj`a6mpRUwel^%9H5*?wRU z(~V9%x?BK7Gn&LF%qJW@$e4A6Ly+AF2WQuI0%8bx13h@(HT+-YhL0uivA7#P<{W9{w8RzD!N;ADgQ>sw5}jUT$Qd$- z=(v5<WcHj%eaPX9Ak9 zdSE8Ns2V0WK;QN^m=t|gUPZ9Ajz!3?b$R+-%0%VdSpUR%^(Xg;MG-r>qg!N4HzY-| zL+kR2F1Om`C~8wfLm@k8otg678Iv;;-%FA8197`kFy~)U>#xJ%iS)bF^GSc9>5rY) zpMnZvfe9Ie`7YrP<5$9)OD^=&q)NTg6&LKxQcDH6n%}`qZqJ{J8QOLfV+G6(Jg~wW zHaJ8b&?0N(K9EcN2&LlE%*Tqe)`|mIE8eQH{SWv(&mZrp5Ooq9=OWMZIPf@L`pG+cKCKRtuV$ZI)O$92ZiX}>zE6`FPb zf<2XEckj=EewqT<={P>aByK(ehwXBQ%BGbvcb}^x3x)F0j?HU+$W{QjFqGjC`wlv@ z`79@>uV3m$-!_ZQzOG2I&W>>(ElHe#xYgE9B!-4EwgJ?bHkL4arU$afjtrC4uTV#T zA*-Q8_A6f@%t~wexuDFNohNasmkkTOq?w1AJcAO{+|p*Wc}1=7fsr)dLDDTyio79d zwu_`7kHZ}flJ#zd{-G0LItL$OT(p*mW+bXlJaS#Eq6lT?Z93m4IKc%*Xt-ZtLC%Dy zlV?8@R`V|Kkp=er?a%?Kx`puz)yK6&)}Xzj-zFk*InJphZ+Wt*reLJ>lSFQRlUce| zAcJqYAPM}G0>7m|feap92m8e4NW{%6gf-A+>!_hES^KosX-J^L_(~FQxiHD<)5_}G z%1R)EN7s{81o5fc+uMD6+T(0ev!2Tm=Ss}am)&Tk&cTX&fb1&>+Ei%#9g4Y*sk)$& zX@3{DnW*@l9Lv^e8(dx%e_y`bP^HwqLswYf`!P(xwU*+HI@;w^?sL7q6L6#CeVkq& z;@fsn(zd%hZ4+pVev-5wW*S59!c z@5fOtH5Zoqc4gnB>nJ}~5@vYx5@n}zvBfanK6xV;mTmB#D$%ldD;>7JD(&sQ@-h_t zmpMg$NSu?nR{G&^Me{P{{)D3763t^xww_wP?iP@=yxjHF01Ex;oytNSsxC*kSmeOe z1W9;!Z=ngS%Kha>Xq_X%)v7kB+5fva4?1!kb0!~ zll$(`=#Om!WPrX3lHGc|T9!^fdYvo}( z1+OgW1}^FbE^>h*<&pUDs@y*HRpouGp0~eNbr~%$861s%M#u8`IiL6}q7lXF{f(WA z%lo)WuPm>m(kp$Xm%EWZ9s0vaFDGQV3n?^?E5yIhIIXJhTV56aQci4qKTjjvKe#md zm5N##{aQucLT?hsiuyYFtRkOPE}wL{KY#;(Ekx|~F%oM@>~~9IKXmO%x`_@MXJF9$ zO(Fbo4;QK-cecXE_*RM=->%f4T4phT%Kv& z--*wW@yYB)T>?AQeK? zJC?ut$({j3F6>yZ(TU&cSfD{+YwD9he1JKCOqheW$D8Irv6J~q9JJ(^h&Z?&$@K9$ z(HuAMU-+F(-A6&1lj!Tk&jFDd>v~q@>OoaKuK*RvxKK`~-bW;4s*3BMSJ;Q{D%KG_ zAIgw48lHo$_DYy1*zsOX3Le$4SSD#M*3p|4l#_=}De@978tW;It5obn#CJ=87C#mJTL>6v6;E$;)Hql4E1vim_P>K@{}a-vkEi@Odx|h z25hc`%88iR2ly@eT*|?2)KQM-igG-MA1B82dK+QE2{E5%Bt_Rrx;udNuVOSGa5~MQ zuAjfzcN;304?3MzhTZApesFMzTrC z%%N+DhLX)>@197}dG>-bZ4;w91a248*IOYr7Oah#LT`7lckvqw?o4zgpSH1hAi*aa z3orL<`i+IeQKmR;;wUB$dcn3D3+KFKD%oS)P0t`FvjsTWV@Qv7BOr7}Su4Ams*^{D zt9f|A>F3zSqPd^blXIRCr}g7J{Z1RlJlux!x>i!Hv3c+azVC!Sxm68alU_<#bWoJ4 zIY1J>v2)*2rnT@Ek1n40YBljP8AmIXx0A8tQ!Ap>a_yJ24@ZuocN|$mr!diy;+XMw zEDe>+x+mb{{?hO9$(q(5_?Gzok*^G}$pzOJKJkKF6Xx3r{&xZ{NXv{wF4x`?#%DG&|z1A&s+xs#)j8dxQcysuNB*Q zpme7)-ll4=)IM~$+lPP+p{4}BPGU*#{)ygPf1`NL0hFk!2XrjVjVChrL+KYW>ks8m ze4fTl3)3S0E(P{%{&c{if7`>x%1mP{1Dh$a)L3c43#i8WCc2xN@$K#+MyQ(|5_Q%& zKQ<;{0jt$Y0GZku2mXflI!s7Bb1CE!r7(Y&NHSXXt*LhlKe?xpdQ9h@3Q__o;)@IO zQ^PJ5Wo%&|AppSf)69EOX(E(+@>M%Z^@^a-Dm#_@p)H z%o!wW+WV`U>(-!WXOQIlZq1sEvz^dfy2eo|e=cL1`aFA_@!I(f9#4YIWg93MXHkRE z)wmy0cdxnLU-0G(s1+A>oJoW8`L_AHmA?=2_YMBgcnF=|y6=~7TPC&%Ejjh4=3?T= zJk$bd9jTxnDUN_MJ;3`tFk?rHKIRuYz|TREqkCQE+FhdT8E&TY7Bma+GCE?eXG7aD z=6%{y zcek{e0!I+P3$&$wrHkh)gX<^$+rSe?_Mk>fq;V%$e%8jG-7JxiZ>WtNV9MON>x zr{1SB8bj!0{R1Xz$pqI^%thO49C#icK z2@2ysLwXk<_9vRtI^wn5=H#MVt~HIz9}k-aaod!km#BN4wiBM_cO-5h{oIn(TdqVSQ_6`tZHtXU3ZPthE`AybkyS>R;3NZowR|XOl==A2br9 z3b=rI?OF_*bY!$abp6Q1v2W6mocW1oXFh!c- zE!0Sl00f(u+v(tXT;vt9_UWve#ahiLb#k^({KxIm37dCCK)TX{91y_&c?! z^sU=Y6pT6Z0w2QdG#o58#frwNRPyp-q{(~HX7<75JSU^Sq5yO^e3YSbK^6ZBz{W6_ zhwPT8C9n*>2E2|^+T7S*RqUm^#V!|2O+p+JHQUMzTz{4mO!pyX>~ms9$5*%k=;gM~ zjFHCEKM4xTj&Le` znm9mKzo9Nutb*SATX_*VD5f24EgwiUrzEHbDwf^&DpTe}=`v$1cxaMoo;CLgr~d`f zZ|5pu-y_R~PHXOm94OuvR%>&30z< zC&&gx72C?78R%ZqQk8<`&x&2l_sGG(;7vxJ&Wi{?=8lJ3@R_EZbZ9vA#4N4t*h zaHdSMx%_E^TP2Akfk3;@Bc9gNtvU36T@N7|S?gDtWIbvP?}`7*x1E+Wk#`l5A` z)n4k$N_1hlYnC`yXw`f>8`fm~dEoLddZ6-k9cym+i6ZIzFZBti*Pr<6AA4-i_t{*v zD+)p#FsBn@XtRL+&?Y7m8+CK5@SbJb$%^^rq{dEJcF)UZ7-Z7XJ(L(90x#~Dga^(y zeVZSN2g-MEq=13ZUJl883JG{Q?C8gYLUz-Sq3O9EdY*GF4sr={{)E~hF8_e7?IP>_ zRUI6%JuO!9>$FScWSK<{aY80$yPsX%EUb~Sd+qpiBApp3n=Z0-IfrNj8AV(nrw=n? zsH=}C!*%H2&T)t`>TyoJDp>`(JHLK)4?euMYsOZ9oLAaUI^?8I)#3H zz;#mn3aQq*>6Xjtb)SXvh<*$lO~wbUTf${%eE&k39CMThc-xbkKvRjyjsr4fKeEvjeQ{>c(4B4ULWH?7L~j zN9m8`VutOXWY^~ppvGJZ>o!eL*uYWP^l*as+VGdyfa_stgkgT;zZ(V4iRdP?og_hP zh&y49JUJb%=6LV==u{0?H%n`}mv7u+DJ`=+G~12m$Ed$khFX=ZHjhh4K@XdpY%(4M z+r*W*m7)D_I?z;`itxWq3EecFxw6is&ISDT*H0?MX&i7k3!(srO=j3P?;SEm%_i*% z!9t=WOpi;D@66&toFTM%*MEx8;x%6hz2c_&gU+G3yynw0rjO%!&Ah$N-Z<_5L!NV* zjf~?tpBF|KA#aL50;fprpHrmLY++6f?1_n0x zDbT*$P`TT$Ycuf-DR|gCTSp~ZZur(LU0EpvP_mDJ`$~hwMiAC9&8tz?2}MEO1~gIB zfy(qU%v6kO6xW~a*vb-wv6K)-iL3UumKZ^EI~zw2k3~e{_{vo3-qhI#E?BMkm&TC) zo##0oQ#PiKrpfx}QB8MfYLgi!J@7DzaBGpt3x=_f#1(DZa_Y^s`Er9GH3DvY0^C5` zd2oTdPMWKO+q#e{zHW;o1m_|rGsX@{28^9JP`hj@&dwsN+ryPsyRa$?3l?MEbyRox z6frlC)KdZkBkiuErZMRK0|rqyb<)`p=e{D-7;#%T$0Ivgp#-OmbKncZ#=gjkq%qo9 z;-YzPPrO6PZd&rxMze>-PftspI_Wca5qc6)2klq2Cd|@LpQN9{&V2$~^X)#tgRS|F zTBv^WX_r*m_eQ(?J%oAGPB#+vltT9t+``8x984;Bz3yJ{1l$%kVR{}=R_Ld=GM5TeEX^pdEi{%pB;tn-}_!eq3I>{|c3C^Yd z_%W-f*wgU9KeC1vQWw*1@nNAe{mIO5u1uVRh$g#`6XxuK);nKk7qs6SJK`Aa?m~Mf zFl*Nyqx(dix}q7A_slIiL4;F=AlXN8Ax7$V=4vvN&$i=f-q&GQmOX@0v4G=*5nxBBTT3 zZD)l4-B?TR=*Cj|d9hp(3tbUdxQ}1S%1%)>!NT~ls>sWHMYzGKa^U@6F(=Zgigcr^ z9;aXj&yE3 z8~u?+7EuBdJJI~f5bM3-KaKczD}MAF!bc`^>8Pl@(wklhA;!jN-iCjZ}KrcofwcWvLWz2T^D4vncI8Tdtx@v+>8tATGH! z_mkl#5P`a*>6=A|*QFXoqV-;Vwdu`Wo>+PyC>9`A{*~!Zs3H zgD7<0DP7@yvfe6?!K0T`o9Gq%ps~$Xm<{n5ecd;dH>IE zckPy~nlSMqc{B!LYCC=U1&v=dK8Zdkq6NuqsQR?7FKmb1Q0MpM-NW7o(*|#u<}vx` zPm~{T1JPPf65QTnY#g!W*_6;+p08c^VQ^Lg`)cd0gztbiyB}oQs&I>xGkE+1fOcTh zzq3+CR3Q6IPxC;^bkWyhrw8OtwlE);%y_ws2|<`B zvs-Ko&MRUsHPZz4ZF!W-*Ht#lmD&2i(vRQXUvODVy5lpiA}X8HfDG4&e|gvMYueluE=3rZY(S|f6~=v4-GrIASq zdLh0{|E^+7>&!SePaSR#(#KJSpXFWWNP8%O4tJfk_TmKUj5}{tMmq=AI6KhJ=X2LV zx9aZB5BpNbo`T&VVHWjR2b?`p`Km3Qdh8QjONSx^sZs)DF|P6DLZ%s*-l}*mvSs_o zXbN1ySR|ZuI3C@NXZ*d;leIY7!z64k;b*Jp8PJ0T9T9X?P|YMJ)Kc8(cp1OrPaqOv zgL-?pB8@4MLdP#iY%?!e-Ceo3nz? zaWlJFg08T4i^wXq5M%S|8|68L{}RbCr!CLuQ)F3Eo-_YZo_4=DIkQdjg^WBK8i8Wc z*u$^;0tL-HpIRlY+poXdx@)X;lH(yHPkog!k`B^Wp##oVZdg5_)LMBuUSt8qD>Cx_ zK%veXAksYZpk7dV`h{d!J?L@Hfp$cC`UOC;t7~TzgOJ}v>6hM=shznf$Sye`%v2Bj z0p_f5@;vN}lEMKfewB2pbTwMR(3Ci+F<&k^p3zNbmOS1fC#4;U)K7`Y)g@;QTyovV z)pEKRJlw$<`7>U6lSye^qP0H();~6dC74NO?iq!H(3L!s+l6>~E5R|T_aatT zH57SKIxMXHJP4xwpvE$=v2>llNxv2E%IVEZ@AX=PvaUf@*LJL6X+*@rT#51P@oUq; zmVIb{xa~MFFj|Q-otass&pHYZS#a4c;{@K*2)cDI3q_h=kvvp=1+ETTHT zaTnqsTN+BSE8FDLp5SLFIzVxfvM)$a(@&Irko~UZm*XR?aCg?$7&a?Q<|i5 zbj%d~^z?dud9qhwjBD2PQ@^2l9S%tKQZy>0c`B1VP#!=380A@BZ>vZZq(SY#@@?X zV~oAGsL{mOg5Up~nS0+`#C-XEzi;8)bLPyMGiQ3ADNp;0gfksqB%En)k;=-?jMS_3 z(kd&hqJr&3QhIfADo}MIEW+H2X$LHA=Cb6%ju32U>T)}QBVbx6AlMnKPQUadrD(LL zxdd9+xG*Vnm-<+$`adxZa;I{YApG3lxcK;U)hG8&R%q@(W7BlvHWS zPGJaU^C9BJz877BL8hAn_=V`7ixuxg=yx~1er|WZHt&f}uZT{2KoXsV8J&a=ozzkO z{9ZaKN2f3Zd-6diu}^lE(49_uVf_m_?Tr;vH2U3_ubhWB+Td} zeCVW(^4Is$NjW-&Avk~!I*EOgOoVmj^m{m8KX(M*DF6IT z{Le!X|Am)$5jNCNH~D`@YDoR19G$`t6!@Tw*!QBlw3?6g+9IQiAv0E9=aKs5se16E z`Et&RZ&;5UMclk5x-En#x``un6aHjkkvKp_m67jrZCJ(jM@41qR6dm(bi#|G!nGFL zV@1;H0=uyBI(ciFZ#Q2*cRb%vPuU3jy6AZVMA1{&(Nj24P@UyRL<&kA zDu;>+P83O=+V`TnI6Mh!tCUv1bG_WjPy`h9whYGXAeGO7yhN3C_Ur3O8?Q`+RT0-*3q*eEwzr2974+ zuqaLS3*~rb2>woz{)RUAER=*37Qw%1@Z0{u3*W!Nz2;5XQ}-5ra*MQ9in<;yr;nuG z3~Nm8n2xGU_+@=`5dFfpaaUBLE?A6{Y+;EwWHhBJYX9U~x)-WqZYg$LvwbGO;)#F( zDhjG8shyg_S=h25@moMqy1lcrDXk&5mMXG>+l+q)r**{{BW_+yYe>o)mXH`6sIE@b zC%L$>L1R@%w6;4GoGm_-bcfEtoC?n6YrSDbNCM$}`#q?Pg3kkT+)}y3=iK>xV2yB9 zMFx8|AEeCRiL-Y~``6OeTRvB`WPvUy$ zq@OCZc}Pag*mt%Dr_@LOSVg$wm||74PIH$DX-vJwcDHnS=~Vl<%R&6yO1{ArLTfB= zs3S|CTgLM;hxQ)v!;>459cc@sddpoYjIzge9`^5J-^KkQ@%DZ4TT#W;2UlS&V}BNh zvTcp|3D;3E%Q#c5?R1yE+0$URp`?O&j7z%DMnpfQFn`kjqO_&*T0lHF82g59@q>hu zG0XAz%lX~veDn3lo+?vI`B8s#C{IW)JxH%iq0^A`Gi80ynt zBOt#E-dem&LvHc%o_JVsHxzZE3P|Q=phZPGzu%2acv&ma19elq)J^s4k+A3}3A_H> z`&s|Mc(|pUM{vTk|{NWpx7R^VJZ##wP*Xx)nca7xBLIJhQTs@Mz77`nu zij{OlrbVRxN2OmU(y!-(^z%i!g#TB_{#a!T$+!JL$vpLODzpF9lV|+g9}%3pflt!} z9#Y8N2Xskhij z*-})VuJ74KrW>R=U%{U7od{@f9BEB`wF)_GEKJo0CqPK{Y#uV^?!acg7-fu*Fw&1( zn;*9J5I>?`*9wZ!|JB0==OOnQTFtD7Vk9rc&BciOyM}2u)TJ%IQ#6ft-33VG?&cfs zx`%J>UPb@Rm&sRWaUZ5s?tZm-fN#&XVcXKR5p(o`EJ@@ZRO^TMS{bR_!{FSt%eS39 z36BaaXK`5L>vp22o?3Gp4`QqNQ#Jgs$Wwe2eLNT$-pU9MqKCG{SXNVe58i5 zabYH%RAAZKG=ILRRF{T=CuK!@HhQcz6zuX4x~SD!73tx^s4Wf&zu7??618c^J8@l- z=>GiQP_i|dTS>zvN#?E}|(9;rvxF|^oew)0(~YskHblw#QnPC`;rUI#2K31W0@ z`oSc|7g82%rfDWmO4eF8-t|(XPS?wzzGjZrP5h>@b?RkZ?ocT`)Oz~>+v@XGH}$U7 z&Xrot##hpoh$vhMvlsqKna|I{m2XeX%Q>rJxQaDQN$FpE4HKNAq1?H5c^9Mhm*(OZ zy@_hSA@>(TA}Sv%Di6r-5vgo7kb^x1)jPSCGRg^hNn@gjGN09Si@P9cJ@)@MOsD-~ zm`eBW`MD_srMp8ogQ_?N;t}KQVIX} zG~sQ6GgSTQy^}-}O4yUd{&3 z?|LIL`8GAAP5J*Gp2fc$9_h2wnrR;M8gg%<4@J<{@xL4{%|j9{wt;HZVU-_QSOTqE zm#=8PyD+pgc3l|ugATx-e@I@=-y(Tec2*SAB3o=5^ACviVpO3CPS&M@-y^8J*aowh z8;ykNohE{}VC8kMw*lHTyTPi&fNnn`gAVnx)}Y|09` zYip`(E0YR7644c{8`*vXhj+ETNd+HUdXvYYEA2?AdX>DCysq-I-+%~t46GY{7*CpAjT zicN5;UUR~x`R(^R2vQK+o7 zp55HV9L@?-pmZ-)tom#$r%EQd7~IE$OBoyGzL!uj`y_GoEIRzVw+>FUbeh`<_zw~p z<+^h~FTrRnN!$`8i(cnXW?9}=wQFczzJ}%%-1{S%mwTyn?ne+?+~Qm;s|BJq(GxY8 z)d^QaO3V_Lbc0MHtP#D!tdso7VR<>5N&1D5gAhc>qmIOEHg3HyAa?@>D z15+YpHn_xq%}p9ys!Q#=dV2r)B*sNdOW-pz|Msm$+7V4l4wBo~8a=;-4H!CKKeDi# z{M)U~Y1q1kRYqgimDEg(@w*i^c3tI+3LCqwc1DGbUDr6H!p5#^ol#+9*LBXQu(9iU zXH?kO^+#t^*w}T0Gb*%g-ESBQen(n%U5?%OZcO#H>8{H#46n^_u|8{RS!*{7J1@AD zV0roSKk?w)6781f=Ylu&%dIAA>|^mMol*)egEN_*SF|m6`{pQ~t-+Nl=af)RMJE4p zk+U{lI@J}dgf}F}NGJbKan=QvTOqQpU(?>)+{^w3>@)dth)&PiUXx$J)vC)7aU@}4 zzvU)Ss+0Noz2#gR`IF3diPbrT*#`C|74f@B1er1aPRP=|lIZmEpNF>HS6~i)!f`{l zL_2K|w=HqsI}3GLZn=@Wsi<>J1-~PRbq=JI+~XKG!=QgJX(n>*@P!=(-ilPtB*~wu zeNwk4+Ogeu_I)(@IK^P|)W^~>frk+rhPE)Ppxu<}6)aX#HbQhIP13C9vo0)lG*I5g%OXhXr4zCEMw4C8a!pJEOdwa_%VPUh@TD`i)&-KAd+LI$l z5VpZ|RVgd4STMEN#Uq@!Q^Odqiz5Oy3@sxA4hUqsZMK-g`FlH?zxd$`j*COAAf+ zHKoRUo=i4X?>h(PrZNQs_kX{o?WI2TJ|yT zr&6M282~K-Xh}X5E!lc55hGd-w_2t;`Z_J;hy|y4*3|J8d2RZB)YpCq6N=_1^kfT{ z3S#q_3;(jhLohjilBpHm@J`+`jSny91}#B&=u}*EB)#AP7*iTGI_Dt!zNsvj3l|lM zPvPq~S8l~{DJaV%<7BjwXkCx4rNnM(PZ_RgMA9!~?IXEtk;E!Ub%N3)4Q~4j;aFkJ z172FQftS*3qG6GJ-@dN%GVh;FjO3<;dS>RBlHQHN#YJDU&lVb|ky#?wlo<1F1DnBg zzZVnklD1xak!ZvAG4Y(y=j{T*x`xv@!xAhV_*xIyIzevxqOu~qg{Rn|%$x4A^DLfH z&f-Ybnit62nM}fLPswPjU;_XrUu^MiNv%#kEnA$WtVcd_c!tv(lvUxAJ!zcY$oh+= zS04|RkTLiyiE`0_!!uN%{vwXeWRsopE$YBtYayr-i#UJ+gM3T0;T%e~z#)@t3#xIv z#2LcyGmhX$OXMlIwXpS3G zpsBDn1h>#LUBn@sEY=*)an_+evPTc1jgPt<2ZHSSgr|42$Hjk+1*!iW;K6_S=A)4U zGC9eUEpT+E7~_P9!!u51jeVBYEmCX9L{H8jMd`+& zn^HZKB9o&xDw9(;$dqp{nH;~#7B=J)nMQO^qq`Tp1~H!FyiYdw5-52(w~cLxC4UWok2#Uve1EZg z34H*NwP=;$TNy8iAM1Jy^xhS$sH)xV8JfqC`jlQh?jXgj9RsU*bbVsFq-e{0LiLn2 zNw0IHaM=C=>yhEI;kp{0xV|@$m9%(6bkpX&%&!YL@5F(YBzLbJ4L$caKCRSEdI+Lz zc;Pkbf%0_9%hBCvT_g%6*~IsHSUV_xytb^K3xhad!@=(A@?{KEn(A^Kozht(_Ck!T z&+jE&suQUU?R}_rdY91(%Mh*Htp8WMm0DNN=g6#rJUvk{c;uG6f>kx~bE24TO7O6Z z`TJBS8Or3cILy6_Gc4+ZN3hxW3t>~sj99*cim`5 z!@2aJ_AN0==XuTPn6|Ky(zIUNwS6L(OM8m4IPL4T$FAG zm{E93L^1e^L`i}nD!V%Qwus_vSXQ-e4f1z~@#W%VF@5w$c^}JenY~V-6`qvd&=a1n;4b2n8(TjXLXr-Nyfk4qt|N{!Z&|OvS-0#W&bZln zi8JjaR+*HqP9gd=Cbun+eIR}?MYyEA${dpPzsi+QY1&*U%_RpL$4$*x_*+ZNl11> zd|Seo>$bh%Ypq6nt_}}&haUV}TzbK6LLTo0LuCAuvRth_>r?J@Xk^Dr6`A^!x>}LZ zaTGInJEyG#q&H|?>zO|I-$(p6EJk~|G`W2li}_pkFi&cwc{(W~hXJHg3^?&vY)|bz zf&R#__4@i$6LnF&&eoD%^?x^fRrpnShdQK;v1d8q$R9$Miq`HRmO*3yDVu$wmA7?5 z=9403f)_GpdNX@}P4~kiF4mzQDr%Ld#!B%&5M0$EMBXFQEEDt#hs?ta28} z?-9K;o7kOSoam%3$}Sdii{B$5DY32a0!nK3ki|mBS_0qOntL>}2QL;n)}mvHHL{s> z&Mp=**_JjvyI6wj+lZZmx$KR8+5B6f?sk7mvTy)FT3B-aXrbwUw&|C`smv#k52@Gg>hTN*|8}_yvlRCa9L2+20D@OxX{ui^!L;WZQH~Hg%jhpHfReo za)LsA8v(MGAyFc!_)){XbDJF7G;>k^*cDN$I7w8dhn z+?o^N<{aJ{+%|JQEZkzL+=8^N6YmjMCHaImPgjbS-0gHV4wP34;Knx*wQChFwuL6i zP)>NfXFQ}5p;ZZ6i0cc#CO086-oqiPQVxP-i}?>k;bO5=t~HeF6LMW+H7joGi`(hq z&?CEZP({q_?GYk^|A-$#*T4zVhC{7&xMdnk=t;cyuwP`p1J?rHLp{)G^8JgCd-4C>NwI7oY11lORDH zyCO?mH+r>Kai9}=JK0ayt`a!yC+_>(Il@gzlpD$K@gB*=B~k8qEna)pc}_KK3n(25 zuGOL4^7L(at56Fvq%0pMQ1d^>n3-X?kVwvYZ9y~_@3nNr!32~Ds-d5+ zBb%aU`Bh)Ei$Xu5gWO@` z%g$LG%-oYJ{L&%FCI`;hO4@N!gI4_i4Ys;FhorA^CNjA5k>Sb=p6c#TGM?SkzM3hR zwkj@tg5Y!1G8X5cB?&yc%r9@<&P$)&G-?iQ@|Z-XDKi?Lrfg!$+ze+OdGBV*=%Ko0 zs{ZF}Zc_0B@>g|yhBMuiY_Cd88G;(!9o#dJNKDy(1|1gB?e`G5B^%x5&HNvgoBDHK zo3ir~+t1C+v+8aCKdLv=sdq!Ny)LnRGn&YsQ*rzKXEsQ8FgS!9YRd_`Y7EU|b>UD* z*<=r+3tL+HSXwhyeca)(KPlco07x7d&%7logkE2Le#>%O36nYxY zuWCn;K7r+_aTFRM$5ZPl_e4B(jzSycc=|d@)H`Xaca#kyo(4yWIykH$*;Lpl;t7*M znn0^hm=5bjJYhoMyW-*Op2(h)fA>h5b-oQ-=+DoehqOHwl2GHH9JbwZZ!>c zl+7ZZVU8j#ij}jDqfCr=hC52sLN=}IDAJ5tS0fxHYWl&1!JY8%slq21s94z0~^;3?D%o-e-ruCGC z#ofC8$|4m?PgG7+Om)0bnPjE7uF-Na^Ia@&mMhWEaxpVrH^6eSIM@@FD9e=`Xt`KI zuN!E&m<8#HvbyC;HC0+R3Ed#e#{5iARQN1gda&h^5DvCnOwja1< z@>Nw=6^AC4uZm)$d{x3%W%=0J(-W0X%U9jx(!W~xsx2RTiPp$V)iqAN8eyxkY&@`7 zJY-_U)i#Z=-qym`E#qP?b@-9=DdecN3y1URmM)1*0(cJk0=Wlhkr0?@QZqA5Vw4*K znOqQ(qIhl*2q`b>5rt<|^bOdT5eNkRubp1rcj*W7x;8sF7aHr7E71Uj)IJ1)}x#4u4)@?b# zF>>rl9OUK~`Et~J*_Mmel(eA8;UtX^zTY{%N(-4$IkJQ?E-$WSf9Bg!MV8zXbc}z- zaC8Ynt4N?_mi~hDRdsB(Mlg>l@|P$_7l+xqlCZZSO0R*^ND9Nw)IM>md;!Cu)|?X7 zjG+=Py=S@QFfOOXTatV$QYhCccp(-PLt5Rh6MOD@p7vss|$FdC|p6ix4%GS4>;&mPm%1OIp1?u!| zUGNsEw63+0@*>gOK0N<9YS^B3kEDV&emW(f+n4O%pZHlImhB_F_Ms(gdQPIYgdh`f zayfm2+-s&;gvDinE_X;SG=_Z?Ivp_=cr?HB_}$9yMSfrNt7bWZt8B~;{0`+8{)xK@ z{C4Gc48K3{VqCmX0m^@7nB8`y_A z$>1cEs1Hu&+sYL%$hC_I9&6V2{vy!}zP(6er=4h3#jl@8?&oCmD~OC1OiLu|Fg_(o z{_iqsN@X-y8J7Y;Zm4I&$VRX06x0b$ zP74ifkr*egPb@ecOLkc_|Fqdg|6C9}(K5Q zQDP{!U~MRf+>_Mkc>MN^^McWKFs6jv#!Gc5t4p%boFP@z+4FX#4umdgDzW=HS(bNn ztleB?oZX;_C4O;tI!VF2A3Ur3?nrilH#k>rp_Pe*`j(nljp<}wi^;oAwh0LsYQZoI z*0EqXAUK0qPzP+xjn4~ygR#u-H}PWBz}2TR0eoyf*nIC{AjhLjeDa<0af{Kz?8O%q1B^Tw2CqSP2|gOy07 z3rk_Mb7S)GkyVdwp;Iq`TK)O`k>9utDX;|0ing&gj%eT=Kc{Lhg+dh)sscCUSI0Fg zv9~Xy%8hDZ^OR=P+AJ@dNNz71_dFg|$5WayYs+fN)^uE6Q?8CjS6N{dH5F>Ejn~Ag zd5B8Nj=l|0!}~ZIe`{4LY2!tek}O>-?`BJkjj4;2>QmFlD%CnM(x|GYszf7o$>Y}Q za{VeT9JMtyH9ylR!Ri0?$+(N98_1j%b2&-fJ49$XA94;sum9B0W#SEDWXsR7E#$myzzzGT-6aGez?z(J_X`0c& zGall0V{yv_N+P%t&)an(SReeF;4CUNOxw**7Hk2isS{rg_ z5^Lq@z8%?QQ@b;DodvBT-FIZaeq~(UyDQwmrpT>G)~Bu8XFu7#(Z*wGQOjL&-_?!J~ZHs@umA zK-q7^<;>Mg9`;HL*)uKm{y@Tr&x7Rd{vq8En5jP-AKOM%CX%7IMax)lj#zT|P{oxo z?-?d<7+;kg!MS*rJ|y@( zAUKat1uu~?_xuMzGt^;8L-TLA&6q_}Nz%5qripsn8M_ty8gF&q%}B*Gm9(@!@nAC| zy3FIuy1iP<>l2fUrN1UIa!12p>&}F!r+71EO?$|D2ovwbhXf@p9%Lldm~55ygB!`? z!TIP>M!6jep*+74d6gaQgL2CtCkM@zis(d?3NBD}vC3$kwe}XD&2190`zxvzDJ%N+ zRqGgAaRe9QxNUgcwn1v>=Ot5Q=1F);t6O5oPqrHLw?6croo(I8BjG0sC;l*sriPQs zm#(7i9gOml3C(M3ge|3Ei+ss=dU;#Z+~u~-jGMnA;W_3vn`&9tjZr)M!IpT#{=3Ft zb440wH?=SK`~kDm{TyYGr3{{(2`Nq4*-bNGYAT!E#|xGd)X1h{cGGyVsT7-wN^Po~ zO|{ru9NA!y0yCuh_kS?+c0WjJxwZ`lu?vq)>n+8vtwcvE|;*VMWk$|X>OOZhOINZP>p{a{YCLr`Y~6TTH8pPZ~N;q$eRlGJl` zLyGx)lVU!Pw`IuSOUY=hDG)X`WC3SlF7zYA_WPx5{{oCQ+e=*_^<6XaU8jTojJfZi z7AE1$t_PK+hTJsXGrN|j(u&MwpXQM3@Nw6Q3~vYauSjLosC3Sq8={#9VulE+H0dnw zD%rfT!|zW`mmYE!l)0Iv{pJ$)jeHWb8)na7tHTgs#Z7ghe@7pZs$WMk(|>iWHQvC* zkdlGhQ(e+IZcTJaXSg<%8n|z5x;07LJ-aqd52HGL&iY@)tJ5F*3!0DB{ zN?enYvX-(FQ2v}Owo8;a6!qFO@zs5qs2adRTrW#TH`$e9alCxwxdaJ4q1JsDYldTQ z2?tejYj9ObIIb2={^a~-TwLOJBt8_JyGEGrbj)i@1p4h!Y{qlf3j52w+2_-Zi}{O_ zj6&V?h)XkO2vqyrb>fN{0nvn&dWE^`g=jf)e-wNTl}p8rC{ZGJgD~q_vy20IdX!lT zmAtQ$ygS@wt>aV0M;C}ey%F(0aXUz16`yV)DLuFbj@3JCCZMJdCj|&c>)w>SxvXNrkJe@!hFN5owDa7_`SF_muoz%MRsWhFO{uX{Tdgv zFw;ubD%H7gCkih<2d z)sqBEE3K9lPM;{Ol6<|xDizVXKNBaFLRd?vIH@~ij#Ug&yK2Hf$%6v>r$N9bOB#YX0(M@o-j@AnzH}_}f_&(rb_PPvUGjT|lHwy0; z`pM7>4+zF^IwnstQ{OVu%RLBN{k+xO3`Dg-AH`5L49CCX=^fTHS3}kb zwfYFsQa^9xFzI)xt?oQZ1zRIgH@K`+Zy!Yhf+U>nf8@{> zhf*+VUB?9}k73(BJj0y-b*NBy9Aj`jSX*^p^?8Yf>>n z0>=4zkKX{s6EbJFuB4BaQEJrMFaXcN5Bec10|XWYGAN z)Bf{G&g!_`mu1hBqqb9T6i{+WQW}PmZZl(I3gucQ5sPEHw66)I+ z>boG)S4ds*Db=^4wKik5rHPeo(z&Pj*tdn+-+v>UX+!&7dd@LTN1H5aF(&PNQQ{T& zlE7Kv4%|gTX5~q#^bwc@o4_qtEX`1d^-Uv|bNH4f zzcu$)@hR0>#g_C}LCd>DyL7{an7gH%en zUjxz^oo?bV$I^q=Px#5R+TsmmZ}ib(n6^iLi znIcn9YK*&*OyF~xfZSHjGxvz&w#D>W8~+A+T8<7h?KWz?>dfFdTgf#4G=79iRg!M! zw)}p@PuNCIZ#|+qGvs89BX!a4a36;4x?$0V3M>DVIOG@_%TGSP2jI=`jbcBF|; zN139OW?mX@&r~J{Y9ix0xl`~SB{P4@X5y_^SCQHHx2Ta(Lhv_D=~Qy`eyQXfZdKsb z;MhQUio&6_Nd#~;XmY2e2URE5A5@*N8JS9@tqf{)YGANAFB~>U7R8H*~FQa2+=38K>AE*;ZT2|~i#?7Y6(FWK!^nxp{Q_=)a&Z(8)gxaLn z7hlshoa%KwN8pzcAe9O(UKX=NOAGUs^+6YrVcYYR*@1{?lYGM(C1hHlcL6#*^*bql z@un)Bnp%b-cn7Ppy7ClKk_l#`j>VkPO?DM;WK(V6WT@lEgt2k}HsLvRWjSOP~b#ddg> zBbS0C{pB*^7Bn$CbTcO9CDe_a+!Qg6A$SJ8orHvSk2Xcsyn3s&T?>)8YnQUB(*4=} z=BmP3D-wOgQ_T}RK%gNT?=c=%>S-t}hYE!3yMrgx>B`0JpHfA3ON_9oppEuLIwke= zzL@Qn`rOlkI8y70viweDciWTj+hZ+$?lqXpS}Rkz*Fmxz<&?gPt4BX6O`s@!`kTfM zn?5gl#iNEjVz2!$?M(i0F5`#MkgV5^Xlk|~Z%KGTkBi%!F=T2@@b=LcwN44j< z>&iSfl+30_QJY}yrFFWLl4V?NBDeH#rO+E_+t9I5GE<*>6I5@uvwI=p>9W>#-X*aY zi1lJ{H#elqn2Ve(jY~CG+m2b8;+-x(cndMXP1H#=m)z{|C$Kgdi*P}X_+{hN*D^rV zQY=&IgnifS%9eXZTt7`?w!F1(+Quw-EB7`6v_57szFP{)yKiKRLuaj)T^VRH%@b`L z%NZbxnPJ~0W150co~P@}V~|%*W)XSZ z%92qn%c$_*Q6-b*Z#2p|Ue^}BRoc<$%jLCB&x~28J(TO~`g3o&{hi!62k~s^*AV>X znu2W|kTJtYTDj8BZAADx(6{g?Rc6*Jqt1|NgWS8QYSFg-Y#YGhe{ zFDX2F8X$ae**+4)EMYZoz9!DONak*(6O%oV zN#@=sSn)Amatqkaj?6fGP=O%pO_}|2j{CUmhy|NiHKRo;ZC^xJ}GA04?(gLuaDyBMohzW9+fmW%O{{0{vxYFi=3i3_W~X08L~N-=gna(UMh ziih9SM~vqF+*hXz6JwPc&)EIwt@e#!tXAWGSKfTvTNM~<)cDcq@nMgifw8uwsg5Tm znlhu3p3Jfn-0YmDy+Q6}Vn-V^E_q>6$fCNme>RB%ML=)|nX+((q|*P!zp5Ai=QwP) z@-3?Jzp(NJ1Rs)U1(t*4er8YK{<%iy`#U6M0_ydwuix3jh&cY%nHXX>PMFIC|D3Yq z{;9EvWNNiX?JN0>?yuQM@=Los%8L}vkZBhZv(|Mw*me&G>0OeG+)0oTzC97r>km3dlOCRXOorX9kOVHpVa;VH9 z`+7VN-4kXVbgv=&@qp=jP6JUQbqH!t1L^3HR;)l@O(x3Ple(=ReeR}KXy+inZDNrx zzgGs8f-9=dq@M8g?Hu}>)!YWn2@^_L@G${muNQ|BD4qSi)S34o%1`|^_yh}i+%Das zoiMpS`fX|6R8Bc?XOUCG%6)J(0g?RRq+xN`6afs$ErfByv=7k1me{C9a=*8DkA))W?! z>*$540?zwB)}+Uri#il7MWe{Fp7|&}q@lUkrbk@YuEt6I-?kn{Cs{1aeSxDiPr2u3 z3^0eM^y1UjM81lgp*Yp3m%E2RXZ?zdE?7#XNM&SNGs)m4$(hNP!o6gng%XFq!D3_N z7nVrk)w8b5aO_Ze>@t9o6+aysw~gG8aq+Ij9VpVYSBuOs;zaJ;JstjaTi5Sx9Fl6U zVAVgeu4*XfUB&iHM9~4B%`0QhNZMS!)XUSgb}LQx5(r5@U+;XdcT&)`u2&;nN9|Gt zx1fu39wo1CfMTqpr(6C)L=@&g>K2mH1NN(N5%te~ z=aB~41V_j8kG(9vfY?^=U5Z79Jse2lC z>k!=~3|XM^al|^fQ+&7dtDtWpbzrdz>*s4E@pXf&y~Uc#;Ph})eSRCUIg!M6w`%Lj zJI`_rvO2W&wIN{T*7iU-H7BR2N*)tz)yD)mg{vWMNU6r zgOYs)YlP))8x~n-ko^bp*DEY5iedSu#BVVyJ!=gMecgMkNR2lcycgs5m%^qmgt}SE zglg(3sVGeJJ}#71jB78qF^SE*gI+t`;uVJhE}7a!BsK22`*-M{UEF(iUf6cPa?=n{ zzpSN)1>W8RkGht%JJE1;p-ZRMb;&>C~)L%E{bU$h6~Q8zD?re+@}0HsxRdCHG6)Hc$I;o?*3ZZL&wSZtG+x?S+#G z4!=1uYxU@#Yj`A=3`ZU@*)7w~(vHelv@cD{W`w6ONt#CX+5|nse(qn05X1A4A@>cW z!oT^HCA&5bn~PVlFMJEJTS!U|=!S8RCbZhrxQpwHy0X5Df>it}{q7EE9LM^J|Jxz!-;?BZa(<|okBb*pI`9z%h)T1XP8 z{OOX0caYWEG7%plx}mh+!nCbi(dSmS<#rYcrJH0PKa16j-t){h-!bLknRCrf?}u}{ zv&>B?JD)3c;UNTYVw4}qXEL`CzSk_TG)q$1cbZ*0Aq3Y_@K)?~qAV27^hyYPy^y9N z!(}fJGxf{#4ixEc{zqJuACZ{@l)w$0kbsubsn?}SEqFE01^ z!BZ$UpBZ6$=Q#r*yY`+xTjEa(c{ZsJ#J1Ji$9dV3!Mt8}{#D{8x!^)d4!3d57w88u zG=sRM5G#}O1=3)6mbw*%Rj2}?`j*OUuu=s=jSJPA&;CYCxdbNblhkVoGadbC6)1Dh zptr1xqH(ru0zGGN8MJBtIk!I=(usDohS|3N~2fTMX!4r?VDXcWe92}5q~mI z-a3(&H|!*NMW(53_fB>|r}?$k%VbJx6?@-!3WE(qDLZ1c0|z@Ve|rs^UWQW2 zxMYPww+A^~`zk3@K*ARI=es(jsj6eD@A8aR#a-jW^7U5&Tu2fh-9l1&a2Ni&r>$+K zX_`=%)CMC}mrH3(`ZhDE{H6)HG{oR;$p+eHvc1I61E!sjI}hB>r5x)ZT&xDC7X0V% zILRD5ZcsieQq}Do+_L7#HmV_ew(ZQ!aPWepN$ZA8frx~zO+wXQ71ed&PDo1Eg|L7= zHdEfIAP@AldojE!=8kROA@!1!t9^l!f2JeH7P5u1P{$YXffO6d{82eHrgnD1-m_1A zHCj`;H@ntCoThsN#w!&0=V*=6sDz4MMBnO|@|hF&hAX>0L=>w#`4G|-yXlx#0$v19*r zslT@&p2n4fPPXuTXm+ID_!bp6Lq!8y4qCXJ-OS7b+e>Afy$0H)i(Ge zKDO`dabIAcYOc+CUoK1OL*&R1Ct$gdwbs5JHQZxv16PIBI0~+zq*Q}bv8#k*Jt|kr zQUkg5kWju>gX?>2v{U&XMDm$GQ~4E{z8$~nCBGH+lx6=gVrKfLdZCxR1ExIED1pB;BS+{u zjNahUA~od(7^~yDJDjM{D=aiph$vfcCiJbd`O*&bx;`#=lk7{JCiHxYwYQIi+3V#R z5-XBL9*G9aWA{W9dHPjy7oBB{sZ2u8C*^J1 zBE5ZIbe7eG#^P$iIaChP#Ft#S863ipP`eAXEhQIjvQOwr<@Q?YH19}~ZYO!C@Dy~m z*PI9_{1(?`+GmmdLjB>58 z8(ZfegC5%xuDbF<1FpCMeG&KmWHa$a{Y6x-^_WbjSV6j-E{j{D;j+6%h=l=sg8Q|s z1rGokMltTuUXYh=uYhY{$VJs9eDuuJ8vkWnu@7*nmQ9KGHfb5`se@pU_$lUGC$TNv zg;6vnJT9?1UY@ES-6!3~riX^vXDee{V=|RYovo=8494Yh+wd^2_(ZbM1VQ3#h=a`n zc{x-vM*ZkA=cCWmO?}IeA-RUzfP{g*jPy~gE$#DADGja znUYU|>p63agRKs>IoR&tNP$uNyo1D1wsipa%!x8KE!z_DB-13}lcBC%f6Y#tRMfLy zr#Vv{U&eSy`@7CjO6FF|->6}qg&uIC79aD9PC&3WC3S68uBlMV>mmlow7jYtjo*aJ|cZ75}v8s#vPPu8yIRm%N-aqr{ zK|4Nq$@h0{8#{Q1uTDPu#=cM7diJ8rs`FoN_UoRDUcWrP>Wsa-&5|u24k{bD<+$6o zzkkr<{ny#=><9M$%h-b_EnIT{rTLt*`p3JEdgY>Tj{V!acPt%$d;I(n zuTHpn-yhyN_vy#~+UMJ8Q+M3|nzzQhJFI^0$0zRft92$-?tkR*!>-!*t+H)i9e>W( zcP!m{+SI}$d#3LHX!YdhkM48$ys6ty*=ojLH=p`pVpey2zq-RtI_%k3PF^+Q-Md!2 zw)efKo$$ry_n1M~uXAqwm$9SYJm%?RJI6eg`sm=@F1vK=8@_9M=+!G%FT8N^c`qLI zNNi>9l^2eka(mC!>;EEmHFz@xc?teVD=XFzN++Yr#bkVc5_m6z?K(AMZ8&haDe#tFq?xmif2-=JLT$bzZyvrt_9| z_*?gV@0*u*J^#Bm(+|v;wXmx4`WL1g`|&o%&wcx;ZO=TQ9w2pd*Z~&Pko(k>bZR8A8tK$``qH2vsd>WD*Ge*U1tel0@?)3XJOWe*rLZ02;iBuP)e4x2o4TLxf;%b(1Qi?N$@NNyit=Fel5 zcbAKAYt2ai;``wpau`>9XV_)7V~*#SG)p4voCv!M>=Lzojql@% zeZtqe_-BNzj<6B6_{=Y9#_|=uteFe8ozfOKTGE^lVP{6z1rc_2guMWE8^5Ia(9tSQ zs*V?xl-3Al^&1&s8#=7gZ0Yza&5jOBn%%%`IQDT^rC9=Y7{8>sg0Gc#i^D3-gJ9xY zrFk{NzI0g9r0E9O@HT?kc-bDzN|_60eLDb5!jUx#!6Y`aW^sgF7-0{AUB@qJzT<1% zCdeU93fNqJNplR}oMIRAwf+cUyWby&SQY?3j1@XMMF&|Xq7Yo4YGuxUAS zt5AD6L?N1H&EeY^vlG9h>Evr^Cq%Rh9W7~Q?_kU*eo1r6^e~hIW=5f;cuPt*nqB77 zZ{yc!hVL3;Lv{l3Y6|jH_jbgnTOsA@=SuAvS)Y#n>MXX7kXg$Az{>b%)rK5q8J%p^K?3PujA7 z)ne;5X>N_MgV~H_b7$tv5IZo!PGc=yd`p^|8*KR)YA(Dn#GZ6m*6ew6n49uow%+(8 z!baR`^HA0-0JC}RMlkEIe_M!EMc8PtMt(^%-C#BMK998e0Gf@BLGRmq zKh&HGX8QuKgIP@ne-L7iQLkCrxQMn>gzX(+M}gVAu_VGSi)=@K7^e9|Fe`6gFq>l+ zMzpiQq}@uzR)Wc2Dt2>(72|oEk8Qq6nj^sW;+HhFpIFJ2X6sMGHgB10^D51(h<2>Q zlI8+1aXTVblzj1Lq2vwz9;W`GV4_u}c@xa`k-h}8;rIzmq?{N@X*Ab;8MY9sBJ9}+ zTODDUe}sJ15!M`G>qpo&4jXJb!EBpyYJ@F~uvZ+`XvXgoN`4obZNY|q6=G8ymNY}Z z4#Uv_W=p^UV77!VjIe)#*_Pz;e}*pB`6i6j4(INh9>!{(i{b5wK~IL zw1Z$a-G22Siw!k1!NiYBlLNEqJ9>2(wgq5TzZ)ak`(T!DxOup3(S3h%Jb)^CRqr z2z%6FNwZxt=E`6vm~Fw9MA*3z_UDMNEM@t!<`FR4Bl|~$?U@c~r#dWYegKmguQcP! zLTnP4guKRdfl2*WV@{2*vm)$*2wUl}r1=KSrr?9D3s`Jsg$+m6Tn=XQ)w7N!wMa}p z`ln-3jDstxdrlQ*3%|_!* zl_FzwOF5mfx=22xgtD#5;aqOSvy)QT))Y}@sjC}GD6^IFWJLLm*dxP#qEKHC(O!YRLqa+Ffo!|W*Mn(i1RS@F=2CWx=a%CkqrbD>b+k^Ax_Hsr0+ zvy^gTM7act#Mtj0rN6mMd8*9yj&h;7&Riag4XH8@JIWv^SE!s9B01NYYnAdrM7hCH zzKtk1J4%Hg>a$8IRi>Y#^fz}21${=BP_EO$vVG+09_B{UY=hs!QJR?#k=c?eb1;;X z_*I%m&Fw1Zd`HQUYoCZoDd34n!^>Kfwgq*D>4DOtl=mabljcRGtd1y8nOBt3 zCvN5R@T%$CN|Bixk=(<-_m#4~qh!qU<`WGC$5oUk!5P*cRi7;)p10(!Ks220C|{bl zWr_*PuOrGkoURc{m!tG>GLDx3pqvp=-scSrN%wQ1NNgm`2i%G;l&hfFobV}>OUV=W zLwSauF<%G|az1mE43s+M@e?7>m)yW6JT;DzF<){RTJldzMEROibHcNcqYNaiwouB{ zh^I2Pqe|Wris*y>v6&i*Lmf{Ql-WvINih1O0#Ja9`xZIcIC;K@v-IVJ1;nE{IG{JcCChj=V6s1JlCntyho{&ZDLbm8~IYN zCX=c#XF<1*&8OCV|_m+rg8cuNm`I4I=g>=wIKL&4T07mD3ucR?ZDQ9p$aqQ?c8X@|TG6bnHH*d=^oji9Mo} z)sFI6?Ah2;O6ilavGEp^*OfA`gz}D3+Da%NDrHIuMe2|$vzw!cWa%%`!aB-q>RApF z#psPgu_fiT*r0^)oZ=`|<~^a1>&|tQ{_MfuQ7P9(l-03A)zzOJWgFh&JS-6#Qe~cT zl*?IZxiYz5b8kbXta23km)>-xJnSgju-E87r92@q#EWT%E?|WxwOih5K&I?8l>}Q z&UTc9Io)fb;-}x@DBGGPLV@RgM>*Xr^@gP{C5&vcbhY17Z-lz~#8EQv1nCOW!YjA2 z(QGdA_Ew($P^1pO(7V_>C@npZiH_22F7^&q4QDt?#$3w#PomEej&iQK%sX5qFNPw2 z&1R*yKzaTUxw_IjMky;DWk~FL@07HZl-nI8VODwPYPcSAl+(=vj>4mLs-aNMSDx=m zD9e>nQBmZ%RQ+mplp(PPyp>8B=O`KTw0DbAwsMpM%xB)0DrYw+w&ecZ`$j4Gi1MYQ zoD@;M77DSk42sP^|Ar!Ix-y~+^e1P!iPhU9O0z$QEAOhzlM!W-KQ|+J^-U=9mobz5 z!!w#!9Z$k+>n~7O-$Ai$?sO>KxGJx-lni~x#VTh66f0+6|F_fzHd=ll1Q1l6VGAH?4WLbhVjgE4@Im4fvl_s_Wiu{r1{e7TR znF)@v9LfRe`_xFzQvbm0$?(i|Jd^_eAoc4&$Fto0!9PqX$2rQS=6wHfrTpGeR+?pg zJ}dEjgQH~31^xo%dE8NE`xp4f5iaT$D3Us-n+yFjm1lLtbD@8BR#JIrl?_G4EcY)~ zokv5Fo?gaW;$NbaO(V*U{_V&yW_k(b9+k6yBc<%E*){wpl#g>!@{m+!=%ZTT3 zq2PPAI_$wd?SG{_105w}z7+~QZ4uA+{=YTs<077)ph&H?6%_evHeS4}OmgoGM`0&j zyt?cX?Dlc4h(#z8t_6{tOuVM78&{`ClyWX)5Lf3#uIl1jsjF)up1SzfWo7tYtTX$? ze~p|fb8p1cKYp0HdMu(0h##qby%qhwAE}gC zGDXE-#=IUsPAPwjC?CX6SIRETBwLA$7f3K8c9DWi1gQY~SzKkzZO7{Cu z&OhSIm2xuk!dCLXmcM2*D)F9D=xmly zq$Vk*j_?Sjm^z~qA1UR|$}n6ViBHOt$pQ83d5X>I9tK<&*y3P^gPS_Im4j0p+(F@J za{zE$tl69bl$qD1z)8Tl>~xUThjW3y16~3=FXo#ofy;n@0xk#M2fP&fCxFa4nje8O zN0{ix85`gL;H|*nzb(u6;c}(N%#FZlnC}M81oi;u0N)1g4*UmD!j~Fs;c(!ov0^x1Y7+ig z-LEl_^BV26X-DqPpd9;BH*yRa~S? znCXu;djj{5cbIt!i}^6j&yvrNB%EhszYzEl@MK_^zkkGh2IiV|j5!l%^K-Erj2X$43$`l79tC{uLUmX0_!MgP<|2htCps+e}*XigdDjaQ= z0C!DI>%Py?pK|mKTUZNazTiQi5X^EYc<4oJn{k zeFg4>{h9Hiz3jqxm~t*V?H;CH$+q#%4D%%o4hFyr{SfwHUbzLIo43i}(OFLLmB2bU=9EoUL}FMuxj z>s6q{)4vq<=G!xE^NB#o9|9#`?3o^IhORI5j<4l@&ot-Bw0yH)7Wxy!%jUp)sLxIY zop26&H`XA0L6TUgBLp}i(D51AlZd*Qv4vX$zoxwH3*44IN0)<_0;giWA1L|jyYb`$%&AQ*JQ67U z=K{t3ZNMLZZvzwQW;0=eG4Eg>hW~2JUzIhR+koEyp9TH^ymeExHkjdkAcV4{!+P#nQf;?|1xF{1YQjPqU|(&wSO!9KdEnDs-4w+K6HVXI(U^r zc9;N5+u46$eic3`w*tR&W^a2jH=8=3l$-s5BZ1ceKdSZ3{lLH1PVXK$mG@Wbrgv`# z911)TI0AS)@Kx-W1KTj)1$+tf>%ezY)4RU~j)q>fgVY<-yK}$|F)slwj8E^r7D?~@?*o1gd>EMCQQEiZ-NS%q05=1Q``v-8nRRyppNMssvw^48b(j^vYpGA9 zf3l>`*Z#?QK)Kxc|9d{9T&1N=m z;|BDYZR?3;K$64Um9~W=3{`* z?p-WrOXf)ao7H`egUb{a?JvdLRyV8r3J0a#YO9;peH~`0x1IyuhyQOovrX4#)4nV5 z$Qvddz?y!|rfoOMEwB^V3H$_jDsb!FS*-yc0=yXh%YmyL{lUn+ZSP;(cUt$VJ;dK> z-S<2Aw1a`!QVJ|wZduLmm+r=`mF+f@7erPJ|Jd3#Vq5quaq7$|8X$6k4;ahXC+QBj4*R3K>?ifNZ}tHGoqFb%`lr47p|k_=%lKHv z=li3_hnVL9zX2{oKW~4luN{}uzr`$iHv)6;wE`u);~bQJlH`}253ueIbI{T^G`C=W zBDSHq!$BE$iCM;H0{`sjJr2IDu-dG1AiK8)+j2dc@-OwohCrzwULw2_KZ9JoFcc{9 z)CQDz908Pgd=);aAKsePz%$$Z<>I+*B z+Hu->&}}^!bM>Gdr`-zO)`N`Gv>q&u*TVSw#WE?2{2N?&xTkf07p^N!r zp!6?On#TVlmQ z|K$|-P&@}wZZA(L7Mg~`RiM}g;&vEr5X1~vzvOw&9&iF!#xOva8!V!P)c%64UxJZ-{8DlRM z;WzSYJHQ1XE`aMv`I~urq5g^#>qC^&{~!gvj~oN{|K_4wP#mu! zj$hBwcpR4T&`ap&H3rvfX?ff<$NI5Hxv+hV3uon0q1Q`HINJcR1YD2oR?%dc5a&Sm zE!;1cSKHSYQ0@Z!e`QQD<~dJp7sXhRiku}wl;bDQBXVH;R)gjCnL*LLf6P+l!dd)$ zJWpIfaR)?sK6?scb2$I_APxHFK|P}(%Kzs;l;@TC7GOK&DK?`xOvQiB_kD1EDewQt zD7P;e^DV?Ew;$<($E)e^ ze>vY)LX`7sD;e)I>Fhi5ZxCgDw-;kQ`In$eLX_KM9f;4++k z_xA0+4<+|s@;Fm|ImYG`KcwisPbK$nb4%d;S2-X5FZ(%JzueEs`0xFk+@F++g82kd z&VRW-k>}I@-havc-x6qF?ssHf?vJG1`@47;UpZd({hS=%&*A^_IP^6{+0H2{cZ1^J z6vJ1@_VK)4?zeD%70$N8|7ANzAj)>nLfl`XLp=1u!rEC}O7f}3@V!l=Q|DqIY zQ0zu=1jVTo7gO9#@gl`PDO#(szF>+KDYm58gW@QPQzaiw8<>W9}&?)fFJi-y7f-SeyOTDf26Os+q2`%D4PEtIz&%l-eF zVtAikMtS^}Q6A4_l*exw<$g*=xu23z9?xa`66%x3v+L_{{c`UY9qV!b7y?o5AKm-O z!Qflqxe)I`bl*SN3YPZ~&O;nlhO-wCM?+lmCEgd<3vnSh1L6S~sUINTD^QHxZim;2 zr#HZxg^>RZVpbVHCa>?-Cit-zZ(x0aD33E|AO-{)B(d55HKPJ{eCs z;W_|bQ}}W-?$>rfl-CvCKr96R$9BV6>Q^xSWufmF#0wDdK1hdn_j23?|Cj5jd%eZ` z>K)?0rT_m*@u`Y_%-kyHrymPZu`DYEu|v7CtO3OS<@{JLi0jOXDHr*xDvYk`0mA6j$#LhE#523y6mItCyJvW zF0BUlTa}Bc@s{TuE0lHietkHOSHtN#0p*^+|K)b*yC3f#%g@!x>F+@Fx!zl`!tR~eU4l=}ziP2~L)zo97Kc$N7}6yo@gs`zIg!kdCd=nG(o@Lt z`HgfMSw2sa-b|L)Bhm-R@_I!2JF@&Lf%Fx!yl#<}=WjB~>lzv5d$*Hd`MUSRcwaPc zKFj@Z%Np>U1j@^8g*c-|I14*0*C)8&qheltvYw(fJH&qs z|CiB4alVS->>|X-n&IpU#NsvG*Q>4L{f^-NBb;JcinS;4OiEvVYOSwpFAel$MWnd z#E*l^vzHVLW=iKxr<`wdVSg|i{x9QVifbv#=V0>x@;X&UdA%v4Jif^&k9RW4!8 zsf_YCEu*|%mr-7?%P5~iFR16wLw<+-VM~90=MLNlZ{yD=-DRv|2Y+_-Z}`^mM1Ou7 z&dEoo`g8g0N5&{GcvhGO$9Wh|p3i-F3-^OVRW#WYh^1SZZ1x%0zsLxdaRC_a&$A_9 z8Mi}(`wVO^#cwEn2eB%YzpmncZ>Q(~p`E3-<#?LxKef}h)qihi>i?mgwa`v7l;1+_ z9i(`M;;#_p^gklMf>`x`X+Qh_(0(8+$NeSprZWtD6NWDiQO?&o5bysl?M1i#-;FD~e}-49{=L5Zd;R#E>ci>y@AcjM5A_xP z1IIUl;yV;;Lc9az-Sel>Sy)ftJOkr@Z%0o51=wEXcJSY}2U+gn|6{p)_i#K{!g&1M z2cC1nb|dGjJC^?*wp;K8$d5Bj*5Lx&AMI~4`F~mN-+lrAhwIq?-~R()cv%mY$ML@g zpFIBe_T1#6ydP<@51wKi0plZw>kpQ3I7B&p6DcN9l!J1?(0^L*QbE4zn#^D|txrNDM|1^ThsqWk}6 z;9OkJ|0fXT^80s;g?^ZFc=0Q4U$R}f{Z#^g{<+EOL;Q}P4P)?^@Q`56^xSQT`Z_DJZ)~qg1ZYp za&OjHIms~>oCR)8UIESq$C0O_=R!;D-Ld>6^3uq%lZ@5`V+?kSvzGHs{r}VS|Bq@$-Ilb z2krqgaVxn7S!QAUgnY`H#bKn>U#5^xTSMhcC(Ea;0XEC0uzhWoPhkhzET6`Xwpl)v zb%774_K)fZ!Lq#!j#d5_UkGqvcceFC@-I?%SU3;sag@%NjX7zvF2o@D$0BU z8x8qvUR3q^lJ!qh^@XvaD(_-zRDEIWxN;)frt)x=T}ck_V#mqNlvCLS@M^fapGUr_ z9KrTe`A6W5S}~?qmcw7;7M#7u@kr*WoWUc&+2AncOpg1DC{|fH$x$s-PJa}uMeYjD z1~(#qs`AmS6**1iqgiJ%?!RJKPcrVmV%Pw*TK{_L#n~vE`{^ZEyv-l$CE0G9$LVF* zU1b;B3GD@FvCONAoW4wk>sKt3AI+A=^(&Tzka7KtWl>~YKVw-LGOmBItRflLzgSj- zjO%+WYo>fu!}T$iy`VhKzgXscPqy!3->CTmdGZhB+^U%WmE5j6`VKgb$Ffc2r{F1i zEIUGmRfo-l-p7~8@;&R>;0m>H_1U^BI2Y2J| zv2)~^;5u4W_A_}YI9;#Gt}DCuht=3!%rg%-PF~TgvFQ2?{xTidUJX`4Ifr{e{x`h_ ztEPO72ZQf|>nY>-#_<}g16tMB4LnfUU0+Q$L>cS*ORve|mEHB#WYchX+F#dXi)|K0 zO|}i~z~e`4wny1re{FVz@-1Ne>S(pu3369(x?Y=|BM$&)@jC2h@&s@;_&Qp(?`hO! zPbi-a`2t3LmP@`5E({h820BLTE=+1pIQh(U66b%Yxqp$B=8Nd?WTQxv|PO zVpY(p{fY*B0Ylk6eN9<6D!)Jt-<0(wFIU4iWgnB}{5hmIV`Io)LcSYs#^TX5f19&u z%BgHZF*tr0%~_}S<@C7M$L4HwBQ<@FWsuL}&DliqSKw^$H03FdL*P1E3$~T=--0I@ zEm&w{IedcS5;y?z@@~I8AHm~!3$}+G6A5>Hp!^YXCGh9q@5l|nD~y)x9Jwoa9ry|v z4oz_W(~4aubz6Kn}+c2S= zm1!!+*TwMsq=N+fWePkW?!c<5y!-gpfz>5HR@2vkH6t5Qa(X+k_GEu@cXBauKXO@c zkk)|>CpT32j%+-+i^_Loi8dcMI|+pnCU@>h%x z;37ayANsn{gJrdlcCpb=-)W-{o6u4^mCXdN);?tG$#{Oymz`C1!IM3CzV{IeZ-v9B zsqyK@Dv;NL?;8Es1oA#rzCT;qT9(h?a`1`Z9U`XgU7}u}S0r@^o?}I7l1BQpjbL2eb9$YRW^{cAL}nkJ&z(pBh71hRv^x zVeEUG-x$N$C7TT~g8gcaoBhQYX0*lWljC=rk7eFA2Z~Qv zVVgt5I2LAegc#3C*jz$PVC8L&6`!&iHdhuCSwov^ib<@s%`sX$8)|a{;bOCGZYd_S zEjD)+3G92Ddy7PN*XF@u3d`RvZ~DfFBv#sHmzc^X*gR8AW2bDMFQzkR`@G?oi5YB= z&0mU{Y>&-fi)41$=0oB$_T1)^Viqf;b^)1O&hH<^Y`8O>SO0Y}hqbf$zDQyHY?<4wVnBNm-S^b++S^HMaj57+Rp0QoUVV(I@|ozNM}=Qer4=nOKg5) z>}02GHpDLWo6R0#H+x}oHs8a%d*JxU_Tg=87G<-)*vG2de4FoQgKQ2I2Uvp5A>ttW z+~x>zh;6mGggDGD+8is6u)8+j7vC_gCxbtnf0e~i7HV@%k-=)){8SucU6hm9HkkkS zMJAg|J_N34e9QKt)%k8;?F9Qq+2xSubN9swb`tYyeZ4Qfla0e)ruYtqZ(yE8f-itu zny26T7jRee9LrV1XYyO%-sXAs2JP_(oW;*Gt(U6L<8QK1cAvkTXTF$c*xq?oMcKt# z7KiV6o0r%oa#!$n^GEiA%H#N4X1Tp({VsK1Ymb@5lKQCj7>?gB?4Yvy`r;}(PI+wa zDjW16mdE<8F|)6I_?s+H*~MJY{%IqJy`$`|?{`*(%42=Mv#uZ6>$}6?lmPxx*eV$Q zu=yuT?2q0IK4Cs!?+rl9`hPGVvX;u3H2#lRPi1#|k6C}pV|$O;STc_PGg%q@Wr{;k z-;d@icK9Fl{l(6q9k@Jl*+pgd^2lY`|0ti!st%O(x%01CedSDAUawi;Ak`kj_8D(C z1da3G;J+)Uusdq{1b?mUo*t7sKF0DmJtp@UDxJa_mVjUDvpjfxG7g`gcU8`$_B^>` z7?zjoM+?iB*HU)RKR@0~+1*|N-j4FvUIE^LjN>1`dnmiu2he_dD~R7Ef23T5R~atb zbFrby!F;>2yFDk*K-2sU;omB|+YjMql~dRn7`~qs!b^{k^||L~D8E3)@d@V{BQcNj zGm7UMCGDP{(Y%VXyZ#s+hIzW59K&lXyX%kPW64;5Nq&Tk^}oZCpo%<;rg5Vl832$T^>lDrt)=pIGV0s z>+x7+_x!2Hjd8L*_xQfgSC5xYVas6n@2n;~L)krk&G-|_Z-x9Nt2w_-UVIb2;?ukZ z-!(xEPs^hvKcnn!uO-hV3D~k{tcP+2C06Co2B|??C=c}e;-zf)I6i=vM>|%(Bj?WmUX8pRoDHr|KCJQsc{B3&DnF37 zN7MKZ;sb5&tPSFGloME|cj5VzV=ylfFUL2P^#Bia4B=JCgTce$hl}Ts$ACX|4CVD* zvb_8L%?RFA*~QjDexYLoAE}(kwt$yAM)AYS8Eii|j*sD2l#|%E;Ps9%+?XuubFs7F z&5p6WEcq8z{uADm{3kfw@d@vwoS~jW>~oCcLzR=56)WqTz&BCe8=S6x%73QegTO)B zME->G#lZU;_D zJ*M#uQ)J$~KF{Ram6IGNAs?#EdvD zO_$}99PohyRu4RArhWL?e1Woi_!Pbj?WhRlL$wsXj$8{I1Kvt*tnzdDZgOjtpUaPs zJF9#uKSA!L@~M3P9DDoo`0vUtHW2dNJkt16W%u|j;;+#Tc|S8iTg2fKRZWk)pBV&h zG|yh&=X`{+d-x@MJlb&(>i^JV2~Qv&2M+;nU0@&n3w}k}J^V5*-*%D5hqycNJixh( zU&p-TFBpEh$8!FMvddwWgZq=we@`KYVVen)$ZJ%HB zh02)>>-(Db_)^x7_m8K0r1O5{EEs+sco+@dTX{&ws zeSCtld-wzH`R6qQ+WRQqTMPM{EQ7&`s(g+I<`45^9Nw`B@}K5A%oi%V*hz3=z9aks zmghM9H+43EOt!hGNI<+k$a`Hu7b$~hd%pWw0EWqmmu%b(<{ zm6IG@E6MYZQ+$)M%keRIyLpQ5p!{T&|DGQp&sF*F`Cnvp{*muAhg%5nhvy$-#A)tH zUJ2!I<~zd+lDC5IfJ2lM90yhYERP~zQ2Dd`9V&kZ{2<>CyfN9VjP64&MxI2jLH?ZF z3H%C%-$5P=HuC?#FOz42^MRj{m#X|Z9+ZyLvt8xS@yg^(l|Rqp$Umz5c|MkWOXV-{ z#pG8ie}V5IdsdO{U*uWjKyW_rD{?8YU;ay6+kx%Z1Q!A4C$|P?@gKQAc`!H|>{L!r z+sAhEGVi)m4xhlLLq0P9PduIch4K~dxeN1Km4D%V$eGH&^26jS;L`c8@n*Ya`BZir zTsi*@zKJZ}gSQ#;-{j|%6C6dV!Smq!Is9jGDR2t7;2zbUqq@rf&Yj9hjyB+%`F`h- z^Ve12mSlPU`c?irydznjzwQP1 zP_7=s=kN3wsI!J=l>7+P%`!>c*vKN zu|L5>ewK{=5gx*4-DG|4{s<3wEE)S7Jmfvd*x%qG{|xQG{yq=+=VW|7_>iw7WB;dz zJYD&i1N%QcpMLc)%e!KG?p8_={H}H8Ei`P8e=5+XV>5DeMGT!hPHs=baH9MTwK79RN8*H<;(6m`L2Wh(YmCZGUp`Eq) zsUft7Hoq}Ut-uime>iN2HVH`@19yYn~xh_T6;3yulLbLknwq|kCsBl`~N=Lb~4`o_tnmm z@qWIa_K=Lvcm1@|M`io&>lHt(K!$V@yHr!2@A+x1lwB+f9OMbVh;mHkT`Wi0UkfA~ zwcz~Uv!GTw6Z78SAkP4;(YNS8aHMA;?FKngIZ&&49P_c@Ql3S$IOR-U6f!laSYNN>~!QDNJYoCzsfd_b&(k75SYcn>&vy7HN4g|-0 zmer<{%YkQlR?y~tgU@PUIO0dSx;M~>^>iRUt{Vo z(@S1|W_rG_ZB+R*NAEiD)}d!Z?I@O4{c&D`Pbw!k;=|y47<_^9W1+n1)rjglYPtU9 zWbkH(JCFT+JiQvfZGQpevv_0eHMY-W`2vtHctVa~l4Fgkuc_u#PH=1iJH47}QIy}M z^3Aj|l+RH4W?B`> zQoD5u{fz8;8ZCb)OyzCcMUrK|MknND7M8S-_g{K@wbR~L zdH3q}wv!AV|mT7Bg-M;q{5 zuMf1{HZSt(rZxLPmdE@`ukP9{o40uN&^n#V%kS{&sXejzs8=s->-oI=4_>{sMi=t@ zt5+W_+vY#KKGeou%*#Lb>Z{$d`ERd}v`&}u^1{2HcHCx9@BUhqAM^75-UGDtHW%?8 zs0Cim%ZGap(ze=M#(S{V=%>8=d)`B|Y?~W+f2@uDIWOPZd#L7nCC?vt57QED?(02V zb7tk`hkK9E(rupTJyMJOB`-hKdz7}{=2Y*|TDz-x`DNZ?v<#cqdXLpA{F;}ai_jymyMqbOyANBrJW54D3l=nn!x6MC$PtuBC&&yx;j@S0v z{LtH_RlgzgDeMzipI&)S)~1n@z`9R@c1JnQu^8;z4W8_~UYnm8-woPJo2UA2)U@Aa{Yh*BZ?(lXmk`IbjW)-M6WTtTv-x-0 zNt=VTliEd_D~nUwO`D&J@3q%9*A%BU-v?^`s_D%YXEgaWL0A$Ro?o5S;*>KTcs})m z)l*=LIGF&TDrc%i&YlVaS*ByQD=vL1%%h_+8fY7t%*HJfF+b z@++sY9LU%6%hC#xWk2G2e!plTWZnRN`_k{K7DM(VS5Qu2PH-#8S9yu;l>m45%hrY{ zV}D>zuWQ<9|uhEs(qzeBSS= z7Dhe<{@L%DR-Akje9iB<7EAVM2+vpjUT9Uw?}G39z0~TE+k>C^z0#VH$Ae${{iU@b zuL7F|aOs?I+9Yt*8Q;{t@FaeeUZQ6MBT^xm*ELA8T{2 zu=GUbH1)jmy#fyXuCjZ5_RybTc?W9*@8=cp&~uet4j*tcu;8kGM<}>$fqc3bxia_z zaG-JuO9w9~kY8^^J^|hUKL#@v%d72myXmE0P)=a-`tD!>Z#@jYG%5GT|)It%j<;zeZO)Jm%nuXQho+em&2pEf1v&j`Bzv!Ci)f8E0deR^7HTy z)@zduu(!WcZ%qCM=D)vxh~9?02wcQJRPRC_4i5J(s`nuehT)_A!}P)AUEl?N;reJY zhw`QTBlJn+7|6%^7t^Pan?b&!f25v5mfKHN|0rGlil&^Nxlq2Af3&`eoCU7$AER#~ zN5k-q{fq1HOPEkT$KDn^z*)SeewqA$@;8(-9K5OA zf7aAt;lN*}XaL^kpXUzXUH-M-=6iz=_}6{wq2Qzb_4Qm;pG)<#|IWXmUf;y^1M6#~ z_aS3_P4rD<9KM;ppN#dl)GsT$_aCkGY_vo6%g^Gi^;_gK;B4^2f0S>dzqC134S?%<2WtXEl_#U{VZTRhGd%d~MzxsF3KcL~yK>6qX zo%9dMzk^?chmzlbje?!^G_r4Vcs>GNjaKVV9FNmC+5Fl+PTyy9kk&=dpy4mKlKoq{ z>UYSGzyaVFWY5-ces!|E*9N|p z0QM!vf}M`udL?oLa0IwMIS%X!=%WuHj{#2wk0s9o&kFcZUrPQ8JP*8y{2h34KwteF z`8V(ia5niBczwV}`Yp0gTX}`s?|~J;2Ao z{$%-Hz?pyndN6rB_#!xxJRh7DFc5y{5bIk8{vBL}{3ZBtz##Z-Ld@>~zXT5@SNu6ugb{j!S|s))(evHeW;;&RWiO0 zHB@gz#`mFy=|jl)KGZOM0vX>2AFi(? zeSI@l{~GhO{f^a-Q~BEM;j49p#_9~d#v{kCi}ELWMdeI7UmmB|CFAp_ae7NK-VYt8 zcO~QVr*V3JW%u)^ar!{YAlg8bCBk|sd_A(hh|C_8YA>;GD$@+dWzJEMf&m!aV z!O40q8K3`6)}8QWFIgWx|C_8=C*$+R$$B4Uc%KB?kK<53dRX0Mge3J4sJ+de|4IIa(>rcq5RDQai z9WL`JY#W#ro}vFqJ`OeuC+kK84u3|K|4g4oz5&i(c$RJy!~Aowf8jZLL9*y5ouWsQ z3xbOjo~!p!cHe)Pr%yxE{fBw_CNkcCn5QpP^DBjg{|V>c-RJ3R$(@zw>s!bv%4xcx z=3fds0Y1@vf$mGr57*V#x-Znvs`}mA+af(nIms~y#t-^y={LxUVCb)<-y<&p*U>)L zpOU`M#}k-FR0yhJPk$pSC`D@`X^y1`b z@CV?sg6ke*=AMhAf!5?&ArTePkQ&?fRkFc)iYCV+P6@0Yk8hws3USEGzc&)yO zEU%~c6ke~dRd%0$eW`CjJ05n1>(jzt>O0Bs>Lfb}K141I4$wB}XUQeO(4R}cO2+-| zM*Th+_qQAM7s~Gb%$xM%(Q^9T{inaus~1#daC<-gXCld=EvPW?#VzC*$}Z(8H87J#hRF=w&F6<9|ROq@2oXb%FDx zzytbT%H#AL)Sr-XdJgK9OJRFBJqPvrWSpLZdOI}7={clNraVs1VfXY1dB3StV4fR6 z`=tVpyv=u1{^qR*C?9?6@yZ!*y#QP;@Yq{#0#^$>{?^}s8w8$u>#N}Afv5lBc7bQ! z`mQSf!#`Xu@VwhzxsdM~cuAkFrVrQu!Qf>y{WyI;>f6aUeV6rPWSqXA^vh(NzMu6! z$T)ph^uNhCeObDHX*K^jPT#M32{KOKb-e}|r|+iT%I0=~IeH&5PTws(+2(SAcl30$ z2TtET_w$0n-@?G>dJ5H#^}W!S zlCi!Q`bIL=_d?%I#`<39$CNW2xV^v7Pbp*ls{>!?SExMhFJ9``vAhTFFJ9^o$T<8< z{V^H$7ccc!WZXZz)L)Zv|L{_0@5tqw>4E!)m%2{I{liN=ADZ?LuXI1k-w?2f7%lB`6f-<&uJn)U4OnF>B%veOm<-?4%WL!SX_?nE%hZ%>J-OGm=-zvKt zIWT=^;PXxwl(D^w;9sab&VOzcd{@n12hMM9R8hwLcUB-b{=huL{jX-2v9i3&;phgx zN)f0V{>oVYL$Fgh(}DFH#)rx|9QR*_F`SJ1FJVj~+)!1{-UYaef#QKN}6)>jhTmdfMy8D{h#WBp;q zU^3PpW{g*MIX;8>DhGud)0DBk8sL~gGz_L>A0GyYb__F91*<#GAp@gUNusGRA*{YjKDgpAV@WsE1|^h6oc$v8gI#$qy# zPqeXFIfvu%CE7TQrsGSDQARn19eoJTM|#H?-zz6M!n@1;b8+J$xi&Zme3jfCoW)BR zIpi_mZ18>ZY?Uu*JSVSI`H}{!pq4+qzgo)ZpbXc?kgrnY9b*pp2XL(-?;42}WqIiT z25wxWtnq;SOu4)fRvGhV4|sl2q@ppB>bpf*gl@`)-)c#7olbS zH3(T3|?2H zol)?8^g{5?A{`88L-Ypl(IRn1U?a5LzRwi-z!*zD0Qp~v^fXu#%zqEQTjWEdC;2z< z<02m!Ny_f`75f?6lyUuvl#jEZ^V} z25XM>N!JJ-X|!#Do(kpb1&=m{l2et(8oQO<{h7xZ=gD~gVw`b>jQ20b8P~~pzhj*7 z2N~~Yj58jS@qWfQ<1aGa&lqPIE#>&Qzn3=7xU1}9U%>d>=HrYBZE<|JgBu5rHi+2h3Z&(KkAx{mG>}qr<^%gC`mF$rZtIJl-f6 zhk5xvQ5N`mS9DX#vk%Z+z}b**MV9X?bqaPFcge$4`N>9ncPu}dT)z)z4p@I?fj4ChCfzXWa@oMe1M{!I-()%b&am+ajS%ReKR zC5t|CdZ!v)$-d-GMuUka4F|->~BBSNJM*JfBUJ%QZn|ppK5GY zPIBP;xKoWCWPBfYs&SBv@8eE0GRgQp?lj{p8J`DCH=dF4dBAkT7$CePM!cZ3eGWlk*9<6frpaQzyVr{F_ydz90X1z z|^gL>>d> zZ}NpkIynh^8~is3mk7a!s48O0n+~`im?`thLhA6w(w=jHs@N#2D^?o&$oRg) zD&rg(--lRb+$Ljx{8h$l+wei!Y9nl@Y~RIxhWd{iYmDZ~Sbw^{&gf?IQ)9jHvCXfH zFO5kyzcDr#vu!rSMq|6py~QTu51T#2X2W|J&QJM$o55m>(a`2>{*}?)W^b|87;3Y> z*k-tFzRkBAi);=QUmF{24iV|bKAR)N4&#E&CB#l+{qVf;xi5AZ#)v$}irq%G&6UL- zqsqv}m~Qh^vCr5_#`iP!8#l-w!t@4d2aK1>E_P3?9|sNJQL;W4djo!D95i~^ z{KhzBoK$vyU+}PT9`g?QerS+(*vP^>ZO=!H8#V`NM~r(m*K>ShJh!=tBg5dMW&7Aa zepYa%Q9v2L7myZw!U(r{Mer%3qH>Z0j}K>z8p?}k zI#M2=NBv-Qr#w#24@N)C)AXD(hT0sYoijeMxt`;^kzjKZ$3^2aWt^Uk!9N;XlyQ1? z1ZNq$Z9W)$)i`VOiQsF7?-)5h+~ozM>356rQn-JQSx%|HE;}C^$)ujoMTk5 z`AP8a#yp$3^Nz9HW{2|+ zCusO*FnkARu3>$WH~u}HT!blO`Myp~)KyMlj*sB`MJZc;gR_9BZ_96U`inNU z{Ag!@=xXyGXCcwo=0navk!zT~h!(c; zV?yeSzBao;-WTyU&kSiKw%VK)(p30P!tq-H^{)tNAu8CsIi#f+X!HJ%)?%T}nIUb& zCGu_<{!&PLk!^EUNJr5p9_v2^`I{keVkJ2n{2=55vB~D=A>G6Un|Wvtp}TPShfv-# zw72lI**~<82(&pkw6BOG%kOkWhV~b|Z7vl$Kn%6HV(1{TjO-8PYlnU;*4x}Lbf`$T zxn<~Z@j}`C{Bx9OI$4gNdw(}dw6!@%8zs8hT+cCD^tHK(W2_jejQiKYq2t6jn@5LE z5VLJ|g-#Nyl`}mS!}$IlkRYp8ro1!^wF5KTXUcV}GCNB8`mweWr`;WbAJ=L+mAEf1?@V z5}B?~#8r2B)t_pnctytkRLMe1#OaNO{!8Tpl0_&Pua7eprw{uVr3xQ1_Ag2mfn@9-G*8qdWB;Ieq8YgXoL{dn=8NHE>>o5= z#FMdqP?}gv#{NNRBAtx=gBFON$=E+=fw)EP0nc9@+Ct%-gyW0-e-;WS8T$_{5_QSg ze`t|tMaKR?pNr9C>>u>GNF-zbsl{SG8T(Hy7Hi1(JbQ`QNp=>IzyGjA93o@?sxQQG zGWM_fLU>Na@x}f{OGP;{_Agp0YAYwO?XZ1i@nxcwvU_`9CQd73f9XY`%fw}ymw{i9 zPs8wwLYIrMX|laECcO+?TRDYgf!Bww5WzELK8d}A{*>E8SBa7~?+sleDkvY-pFsJ& zq3gtD%8UN;`)gl{-)ue-x%kt+#H;aPGM|D5tuf%R;7mEUCg>Dl! zX36p{Ru-JE=x#A&HV!X;owr=kL*i4Ls}?;XrrBJ-Xogs5bIYRNiq*{4CqCbgPoBt~Mv*@t^$5+;8gG?47)1EF2eG%e|lipuVSIi z#ly12lFxDcQeb-a6ul-^+Z-GAo9LpZCxvZ<_fR@~d|k{UA5gv_j*!oQ$9;TLq^R~& z*e_3^Kk3jMaZJ^h<8c$}ZyNTyxJrJid`mo6hVMxYfcLY*ZVTVVa(t2;g_Q4z63RIq z-N4<#{t$J^BbDz8C=7oYUY~*M7QQFCsJ#1q;(MZx&2K#KiQ{Ot70So)KgB)eqxxYr z{GZ~9at6N({xIxMQE-VIpA7Cb5Y~sV`=TAWI(S6b12Iq8{eI6wv06ESwSxS(u!rJr z%H#XQk3{}2WPOoIFjk`F_t7>xUWpj; zLdeex`%6?I3rAx427Q4&@hz{VfWu#yoz%jhV&Cn;^d?jGGsfQ`v5C z0WaOu*I;@1zVhNQVOCYn-VC-UU7$ zR@m%B&IRu&9BB3=HyI55jU7SeAaWWwT@N-#p*?cI^TM3wL~@xSvV4d+jmnP%JH3jU zDdhd&I38v$B71%;mw%YKlH3{mAS~S6g!b47&f>+)uPFbwDqqapt?W|oqnGiDG%r)W z@lg5xNtAh?+!q|jqs`~!Dd35I(Wbcp=f^r#KE@0n9|!aB;$}43;}$rJmo!U|!-t_u zQ~Ac=Tv5`jPVNs**GriVsQgT@6<*qGLEa4J;bqKjRQ?QjP1w6;Kjj>cr{FqTS#uPX ze*@0qWzDhV`om>^uCnImH2kMv&+xM560-cxE4*J~25nT+=W!jJ#mkvaa>NL9QF3>3 z1e&LV3xt<5OOXEn2ZvWMW2t=LNI85ZvpnV7gFVA5nH9-%z;V2?S)IzC07ryZHfxc6 zN5T8n;JW1Y;4CQLfV`93hzy_JSNUejsjL;a3=Cg;vz$J6|H7(fV>0$HtZw#FcAwAG zFgqx_uWxFY1C%oyxc{zUj#NIX;r3U|P$N&27r=<LN0d@#JddD!NARtNKh&AFnZc|+Mf|2vu9+hu!4H9VemHj9(-_|eroPR8}8o4NIC zSw4Zyhw(WU-oxbS=*`MKO&?|V`-i>E!piRTsh3$qIf=>hyHnx4%;IGEtG$=N9m$zc zUp=qh<}?}}zcIB8ZW31$$QJ0`&QfFdTC706S;ar{%Wx;y_V{GL(7r{*AXGPqL2M6>iBtj~L*+#ki8 z@1oUreoIEgn@yG7+n38+zgL#W?WcZ(%gj*D;6*0M`|~a{n_OCXvYD%Vjn@LVi%2jX z`&4_%ao|4W#gOkEk!TJiUk3+hiRKV;iFoud@)U4?C_k2b1^h91JUPZC_s5CmMDi!# zrM`)#i+mnDDq@N`&E|;_N#<;_|77_7B6zN{`~BvrW=pmHrLfFr&|hTuG;@W@XR7yI zXGBal)5+s%!&(-RY~CWv?<=i{m~9r=&zXCF7{}+B*(#sHs=a{y|A;we5tVoEFH+11 zW%u@zVn+RA_!P5>&6^@p%w{&o?V_wj3`c?$EqE}Wn3DZJXeNS+Pe=U8KAlYarj^F8w}*(+Rr|6;vq z9g^dN+oRKKz3EFf;ruI(e`yAi<@b{}JH9l-$*Up%AZ&wK3hjaKhi)?8p}gE)H#;_& zm6hGw%Vx8dGVZUPUYpGx%6L7s+_A+Rs_gzfz^&$3GWKWLYQ~eXKg(8g8X5buY&GYQ zu|LaJb0Hb~vurh&E4%x%Y&Gvw9^cp5YO=#}ez@4?1Udd&&Hm(_;4Hq)97#S5J|D5o z%qE`#j|TEspxRyjfWcEkbGMdju5;#_gaTuH{~--pew$@u*Hu$e)|=ii6TpUL<< z_K5j_Eb9x>zA?2-IezZv-$%_ro1YpP<~ugOGLD(`ZGK~9nsGM6_d(2|HhYNUW|Ga> z{Dk?1&EDcW^J|;^#Yyv&&A0g}^M%cU;(OEk+r04&5vR>anQe^SH8me|*V2tDHpV&zH>0WZ6H{^txo;BFp}n zPH@z5wZ5wL^H}(gW&`D;8r~1MY<42!{eYj$U1Yp}aK-$QjQ1C^%;#i0U;D+ZbVAmD zRKxoN*=Bt*p08aqCz0{~!gX^wIk}G9-mjbI$u6+zb;G=(>^|PyFs~}({whejVd~%I zO;6wOo2IYLgTsF}dnmj2|F_M#%I^K)ALedlJife$_`}RNDeJ@YiNU^i&1_}&`S@M) z7Uey{<@~&BJ|yG*`kwiUjQi_*rZ|Q5;r{whGmwn?=LcpPG+mEAG^>(vfBw*{LFMuI z^3ZHb#^cK)vm+UgFHg+gG`u|joEP@g97@LH*E4g1vip4fg}G2UO?^*2sMrhhmd(YA zy)sLEFULQPg(t%Ekz%jSDmK?B_QqVI?Cy`CS*w-Z{Sh>4Gv%>Af^O}gJoZP>t%H=u z{s@MZNqOv#U|44`PuF|G`qAbfO<37B*K?TG9h;jt9M%(McYlO@R={aFJxLDPKP-#; zSRrKDKP(#@O&$~m{iBQdTJMlc!t}QSS0i&OW^B;LaiwBeU&e2l_Bd%GGElHL@o@@;$c=zaz$`9xFNZ%%7Q*?X!^aIs#cD&%YnalQ`NdpdHKF>kH~7) zbISLE_6CC4kE%WO{h=|D)h&lIet#$d>_>UIevOH&VFgiMu3rh@2+GU#cTQwYt0d*+ z`nwohp7L`2TNhc&sz#RU-)3-qvRwbxMb@^Ok>&cg8Qcl2=0{ecI##-}OZolCx>l3R zIREAHOOLE?^-xY@Lty$2L^iP6D#Q0_;QFn=sQ0ZdFoeix_9NzI6l=q2hWSv${ zbSwi0fq%q2Esw^Q^C#I}rusd%$f(BF0A)OW)Qf6jB`dqwEf_wlP&4ZZ=GhzN=GOYF za(EZZpA747R13@bE4m~&t59nzms}CtC8~{eIUDn}z#m4nw;rf`3VZh@d{1vwC+iQD z$Nl-mLY*yfO_on`OoH-bqT(zsG9FLjtRm#kARnN`Sx}hibpI~_%A+&+3dm27>iX74 z!6{MQ-ueu9SyV4&m>=RN@Y<-}R*b4Y)$thoRa77A9cr)jXLA41$Ervk3qAz-8ss$a zG4T83bXERCs|ERIa5n$Y>PTj@WPN?D?&L6VHn<YR`PFh{$}v$kUtkS!0L1Zm(Oxpf7C#0wQ>gE5B@!B zkaai*^FM$eL=Cns|1O=v?t@=O4Y9`F#(dChSPs!ct=K#0vdY7(9?BWK8Q3#=xb=WM z8tjZ7Y5jaxme1f{fIAc&ZT+SUzh@6F9zDi-Kt2vm$v@UQdk^cs0575E72%K)#9nr@YTES<{EgAYZ|u$qzO@7^4Wo@p&7 zKT}S&oKIx=6y}ivYi0Cj)~TmBd=U6b^jxd{GpxTf__yd(tIBh94e+Dr`Bo2dNAO?K zX;!YXi}eLtF$=91uVi@_n+FbzS!zxD3%vy#8MDl)mMeXXXMhv@R$4Wclh|eDRn|zg z{-m(Ru>E?}U2RPw_fuYDW#5#;r?9!;GGo?SzH0qRVL2+l&g!k!mlPKD7kvME%zDeI zrYD8{oD1I{8~3HvNVVs_zrDdakL|1Vy=BY>>#lMRub3*gpN-Z_a!qg?*zsDnpW{&< z+&yNa)dbDu@6XD7N9AiCtsq}n+i3NnyjM7!&p`QMn5W;b-)K!#cAsBww5BQ_V>o{{ zTC;8WNim!LKla`PuB)PZ{GWS2+ubxZEio!EN-bQW6hQ@~a>1?4g=kU9vaH;4DKZJP zR9sL~G2F^b%`%lri%gA7jY`W>i^rv~)F_wCw5a}P=A6T4QL>)?&-eHJ{=UEGdC~EG z&Y77rb7$txox6N|3l(n>xL^N@ZyhmyAMq964#jx?WnzO>zFz{;r)jVHYW$Avw;$qL z)!L_D#NOinEMC%D%~W3EA;{u-SJ7 z+41^fv#$Z!M}U8+_O7of@i^cEz^#buJtMy_R_sfp^v!|Sc#C}<$=(6DRC~|YgX|f= z2Y}NQXB)?qeT%O@*?(2`ExrfH?wc*szwaAP_A7x80B4fDrLu4J<&eFTvTyZGA^T+D zt`~3fttEb5`ET=;D8}Qx#=FfI?w0M9EjEDtRD<=r?hw}U=8h%{Kcz*meB>k>RyF9-}+n-mmOkcg>-b%*w`$E$1ue8hb?_PYcl4bfU z8r47ubdc<_h}#eq=g(0YW`c}J?*>C=Re-JHT>CkhIkK@m)`J zRNxAa#~80TTil`SUSliS@%=Zi@dGiw|K>F+i1GKZe1_Y?_K@$_jq>=6YQ*yS*M}P# zMjc}L{OhB@R}jnRUnev)jcbVI^RIcpO^N06w{vaFXh|&J4}2atkyt(-JHMfAbRd?` z$1VfzK`fsSUS&H*Ut;-u@SDK>i64Rb7B;MA+)q3a_-)|f#PgNCy73tCtIA&8$RU0g z`2B_#8M(xt1MdWWMlt_BLk(j-+41+EY8WpNhZuj~ zsh06RG5)?&En^2U{yx;j#vWq)eW;6#gNn1&e!bhNZFp>Tyl6dN$EX&-YrJ)gXvKK_ zd{v`Mj99b_dA)vZqf3o5#Jd*2@2fPbYh32Y{NQ_X&ES3LMqx%P#S=t1*pnJvW-LLb z>+Q>pmBe_xeYx=(@v!UU_`Sk-n;3sz_6lPQGmQ6A>q_GzV%Z-@d9E~e6Q6(pi(l|@pP}%DnS~cv?Hz<33!y=xb;=9VIMU201dzEn+ z@!$ygeYz;)Dq^|c*SS%Y5lwt`eObS&jacI5z+u2`h;cvg8skP{+z-6Q=t_+Hfenma z#JC^Wz_^PT_X8Um_Y&iNU_)aFG42O8GDZ{QeqbXbix~FKUAK2I^BF6o|#>RWZxF6WW_>dU)1DhD1 z6U+UQi>_{J>?4-@C1Jqd661bbGvgRB?zc5F&JfG}k^$c4hNzCmSMHaTUeeq!iE+QJ zg;A3j_uE<+^@wr5Eyk!%jQedd#&yJUzp;0tSR;m5?l<-aP9T>1IRm`c8!5zcKd1DP z>y0kNa=)l|qZ^Fdh~<7!f8aZbalf#oF_0Md3tJiw6Q@9bt)sUxMiKV_4g(%XjQfFc z#?!>O9~fuk5zGC+qnETc@`>esVCP1yjpvB(g#5hK;*Ax=_XCFmuO%J{e9_ej##_Ws z%JPAWiKhbB(c2g$#QD+={F&lxV~Mi2HU34sTG`tg-wR;2Mhg`X$NesCc&eeYuAkB^iAJcx0nwViI6WbF*|*pG7S9Q>qfu9*Rc+~?C29fhZPd+( zs)Kw5@P^3lMoB&78-T;B^)R|$hJ2&qTa3fRJrv(+)D1`bgNl0^9f)&)ziM=wVO);( z*~;F_I6(Y7@bN~yjRRLm`%JM4`1eMAjOZ)QrAQAGBhU^g0%H1;=A?L+7P(Z)$+L!Q6l_0h&Jin9!P{#xT5ZMd#g{`CFUF@~); z%fRoqjxlPZUFBD=@uNl}`Q!JmGmQ?!-=@m%UuPOUh~@XMV;Vnh^d*+xzitcMpBTUI zKi0TkF@N8GtTCMIFGGE9s`Z5N81ehW+2sE(;8d{ZlKn^EPL0PIvxw~%;r;>eo5WWE zcWRtvY$k4}>{-TP;@g3{Ui_qSocLkj-oWBI**@6@UQcBkhT;iEwzN0SHfj(*3w#G~ z81Y)*jK(=eB=HBp_X9^O&NiAXlk?YjBRtxFyw-Tf8(kG=i(X)FsZTJ*DaPM3K3Qvm zQG#}(bU8eq)%YpnSH)T4EbvRf*Eg2=<`vHvpEZ^FWr@>}e(BY7j8lpy2>Jfc z!NzlqQ_axseF?r_*7#YYMswtF;1j^H#4Uh-23|zm4p?t8-{{@~{ks5LO%@mxF_N=I zKj4TaFBm;z(Y|3ETrW0RYV0B&t^8LQBU+(-JaEe=*-bt&9!o_3Z-HNIvddUUdu>8Pqx*PGclneB-`0A8DY zvw0Kol|mESvOAbviBlDKG{0Bz!SA5~&(H2;9w(j(yf(YDIYE_&nC$oJb? zU)ja%IRN9s@zLEJLM+GA70tSv(}_QUc&~2O!>k}a1l+1wZ*$o_nEn)S=Vo`9Vj!~b z6}Z3Ite-iTI2?Frvw>y>aWmjC&F(WZ?nD1hz}>EV$UHzSf4?EO*$^{fkhISfeZfAn z*)VgZ;w&*3cz&}-%rfF4=wB~38*O&DAM;zK_%U-Ov3$RNb+fVNxWQ=8g!IMDa?Ilo zBF_SD)oikv@euM0z+W`WGj|Yg04{4b%k1(n+Hri$Hg5~y@0-mv?+DfOfKWFY5iu@yRgXYW34#WJM(EJs%&v0b<{9M=Og=XCm$PugH_YRuB zY1VxNxh3$(<{Qnjk;ol@$JX3p#*RWB06eMr`)2xRU8CteEIzwb5QW9}k;3evyV{7bWAru5%p;QQM9%-+QKzV?3e9%6i7`+zx& z7~j`EV2&fk_puL}Q;6|>?1SdB#P~k(SLQNee82fC^EG0*zmrzyEAw4qT(5m??jXkX z+SlejVtl{4%>0h{8b}{gr_4M{jPF+;GQIGVg|dG5e)S=wIH2 zCC2x=zcmwx@%vNXnw^-ze?*7)fe#9I`jPIWxF~9{srX$T-+!(!*AwIW)xVqji1B@8 zVY$c2crd>;UYAu{@oX{iRhVB|xUF#FHNcOz@K~wD`++C4@LI*hr-7%n@L3{D<~Lhh zyc*sQZ(&*q#8JQtTUb{5lhU3i5`mYuaIEEuXNx|->snN^R+D`Y@TL~kt&POliZ8P6 z%f|G}fw#A)VU-8)r!8t)ujXL+(mt|9E$bArp`L$eaj}&-UfGS;!Cnfyk@$V!1Hii! z^Y!AzmOjCs-!EW?pAePt*Uh~O?$5hxTMZOr`xRQXtrW%ldr)<(xy1PUOP5;51N_sp zy4INh9&=e;E8;1c{{(T%8d!hEgjpF+BbQww*Vp0Ja>ZGqFW76vgj?$s+5|Wi27j2TqQ;+De#&_7{P>#x$_j5w8R8 z9n;Y2J{j%Bz<0+qvZ8X4KLdU+<~nN~@nPUcV;WnjQ_%h+@KZ5OtukV`F(_unG`BLQ zqP-q)K}-uvOhaw}ygVk>T1FfTygsI-)pWYF=ZVh1B{6YUI`OTFTU)sSygMe|+C@AG z?1y67SRzlR&k{3%e~4*owIW^yY{j;>GG?HCGjRRb4%Xc>k#{RjwW`lT{vEhwYZq=po;D_Txmr32NUdqn>rH2KD2R!e?jQ2B>V{aw<7ERs{>>S&(lI8ut zKC!*60V+Q{-u+_xSfi-?>VG-04=`XJq{FeN*7x zap~4F;ySNM`yJM-+0s5++yHz>+#S{);zY%FS(nX`cI@wixhz*FPyv#yxy&kw%GYSmKA?KQ}1h;~r`{&V66S((I3ftSYJ zui6Ltv*#_~*WwO(vE6#8^^qzc zuaDETVb&guSG0Q_?*FzPW;yw?K3fEqKhhdPjPZ@K4k*qNcY%Mi)}yW50`$lD9<$07 zXNgC_9^X3C%9xLKjCZWHLos}B73?>*e!^yWRRJD|QjuzXSV#)=yhg6yxzu(+*^831#C4GW{MH55 zcZ#|G3#|Q$x&8~RA4BZFDxPhuhV*~5USR3VWPW+ZR$x#30?Sf7+t?56#4ogJlKng2 zOMt`3{kbNZZb-=fgeVVc_vC_%DMA?^E8Dw9t>@QdkkbQ@;zhDg~`?tVO{8H;tvg_+* z{7bDIw2RAuJ@GGEtyakPnJtlj(ttjGn#cQmai8}&Mi7&K<5%&b16aTvPgkmo54QsMu z?hkKRuOf>a@Lv-DhSlL^S>6O8-^a+V`KEPTF}yDY_LcE(St+kbdzQ!pPSf7DiWKLG z*}!Y!-?mOG#`%3?{3h$-Rni}y=RDA&*osxmdL1 z5AR#ytI;m``?#&v5Mmq;+pOXMwp(wvylbRC*Y^YK7iH)6_#kBbGvoOGDE`CB@h;D2 zyW>BuWI6s1#eZs5$NY^IQ2%&+mvss8df6V{UDlPvTYn!)c(1jLSpJ^oyBB|HeN3E?4Bt~p*k^sE7@vQ?HetWjeXVR? z?QQIa^7a4zHc`^;fS>d?Nq;`*3kf7lyKDgJ%C?LD7Tuuf%%Pj8}2tG9JlroKMuS-;iPq# zcrx&(38$=|k?H=xY3mPSygzW-GS*@J@%LDNw%{klW&bnq_gH_n!jLJxGgg%1+2XYu z;eF#aXRL$(9@6HlRYctQ9U&fT^Q*O+I1%`rYbvZG#9e{2+x%uVTrbPZ6Au7C+vazx zQ1MJLCK=YxZT_&9yeaLo#S>s()kfGu-a?k&J6hjHw?z@Am%m?J+{R-k5KjgFoo!6} z_y+V}47|QgH9O%Q^j`&hpiK>Xo#NTzYvAwNTx|E-DD5-FhH>)xsJ1;=@oe!O*iW{p zWA7mT3HawWm)L_hVg9a-u+D5-&#t~1xhC*MZLhHFD(3MUVOP8_?GubRu*d5WwtFjb zM`8zAwf7SZBJ6O*{QPBo`+8!0{<6N^MKL~qS-0&~He?R}+fwbtjq?6NlszgSzh-Tt z?4<#GL))wEjhLVM9za>dHTDr=e4nj>ZEchBZPDcWY)2y+*e!_V`)p?;8rr>)>HW29 z?a{>e{@S&60r|`K-Ht|FYab$(&(Dsoah+{%m-+Mib=TR^#2tso`xV#O9f-#RkF6PP z-%X6)lWA-}LyX^pX=1-ljNg}OY9B_X@5?l|%@43V{GLp6I|A9n@5i*TlZf&AF){XV z^2hJTTyH-~cKlvUOM5&qelMn_{i5PL@dLDfV%wJX=fuAQpKR00HcDjq-6_sFhqiI{9^yBFA8Om$uKS@(KT~`JJgRNHJw!2lj|(`vZ5z9g_?Y6h z_G#ijfOFfnv+I5&)8`4vGutNG;}p*nH8x95wx12)+_ow9k^r9H_C~ve(l-bH7uw!z zmy`V#;1z8<*flG8iDY;`McHq)YkZ2lLfL!U_YoHX zXScb--lce^cpv!Vws+bMcS(Qb18oP`sh=T#3HCE>2ieU(mkjS40PF1r+uaq<6#Bcc z-flOHJEAE^4~i8+oY%4f~C zuTyqB{+rs(vD=aV(D&f|n09mRRN}{gTk3P|`-tWH*phRI<@*MbKR~AU6Xx1`i1Gb| zx%Mf=v&B=8-#*B{#sL}MY%v@7XuEtnDuB-bM;t`^IjK5HLR`Q?dM zpgvQcDX{A*d!G0V_}1C;?XART6)&)dd?oYa_sbXBqlsmGVq+HCbl?cxCLow&+w_ASP9 z2<%DvTDukTN#H`)T004u)+>c}&j2oT725Y9i$B2si1wQOLIBr_dENes7{||g`;6i& z;eB7`zus3I2T&itL_>xjl;Peu`&{tH6G5Vv#+9 zxH<5!#JBAo#I1qfx#k_)ID+lb88|y}qrI4T81S^j&GxDQE=Vl4w-S#9`>MqE?bxH3 zeircN#O-ztv3#F=Z{mk`X#kfeer(5nC;jup3*i4p;wScK;gMgF_MJ}>EvT}HeQcyZEM`??dD|8Zsi#lDaDEbxk?U+vMvzHM;6 zO{%c>D9#fX1CI>8=$E0p~rr)L0vomA6VrZ`U& zgZ=BI+RiDme*?U!#ih=;pD=v|@QI|lj&mCM((TY~lP_~}iJJnO$>B~>0MARh+}TB( z1oj%qS2&qJWBTsEb(15U0Nyc?p4`eQBo-gQ{$6rx=eXiLVF6D|PH_7ChW=xqyhX|FocD<%!2W7-k~8ji zjQ={|qU82Y#UJQ@Bk+gGH#x0f_gtQD`T*}q?&uV#{*fo*s%h{(UMJ@@)gF1`Dd4oZ zot!YKcvR@W6sCKZ>jW|&Tis&mHlyNKeMurb-pG3NbwWSG2%Un$2n(+ z%YYwlpXJ==!S<5;So<7jEb&?3?Di9!<-|2Ug!gOPKka-*d=+qB`$l}Vc+0EnM%IBSPo#V(_;$gY}m+PD%_Jt!4ej5Gp z{mxuxgkoIZ6+-?q6=#XhRQf5-D&ilAYfQv=Fup0y5MqpPiZhxRrOc7~`Aj?85Zaep8*;T#Ogvo9ZMGV|-Jc zhSLM%o9Z+}rue2ht%xzcsm^Hf$M&1*j8n|8_xoDQmFH6Lzc&0no z5vLL_Qq28rx+9)Z<r8rAqJbBJc;#XCCdCt}q7!S5zo+F>L^k0AFIZ?zIAMi>n5645E6OByqVg#0nSJZGh1jxW#oKyj8ZzmvyvhVv~kw&x5d1)gj2kJlN_Tw*-FGn_@l7~c%1 zXjNc*Gn`^%if@KfLX7dvaB9Db{utj3CtNYdH^Yfn%*S`8Qy1=w@b!9{Hq(hf7GFU8 zQT9w{Sdjf0CzI?KmCN^4pK&&BSLM<8nd=xIAY*;zIyH!~K69NMWa{? zNsRTG>pVmLSf9Dhe8pU!xlSqh9RucJ|M8sXbSK98&vW_^WBK!(-N;n_JZC@IvHW??H^f-}Jm)a^ zWBK!(7%t%HLOg);XITXfJTI_KL+DU|)Dofs@uD&_3Vk zk1W1Y_W4fXxi*^7dRVYSGGEOKJ!WBE897CD*3 z7|$XnhZy5o@PT0FY^B0a;Jd!OW^2+E1l1N3C#ax=U>R;<=^D~;mghg>U$-e-z&~=Wbw1Izv5hc zrM%u@`zq%$WU>2q7?opJIVF*S_E()<$fEWi@I9#~UUgdC8fahb^gp128kMbcWwJ2B9|(5a3r?$9-n99!r-8DxLWnMC%X%Kn;j z<)py$uR9Hp#av~7-N_HKzu_z=;aoB~F#S5`3S@Cs+1EL(h-)ujiv;qFLIhAi|xu@e zPA6p1OW8L#p9R_9asEa2Y0CbNlRYgk{YGapGW<5D%zvY^Q9bX%{bQ4}6a7a&f7hvxEFJ{=gRS3na)a!} z&MdMo1^XA%i=F3)-&VZEsrPDNep{XT$l@&6V`H{DvBY&PjR`Dt|Fl*|#~jAk%*9b|;PObHJXKx7}G9WG``EA^QepFLBD(1jhT3<6evT?*jXS ztv_;31=&A#YLfjd*ymawI~76p9Zo~CduYO6JTk$TZq1rE*AjT>F%vq!MOE~@K&YQ?$5!n09``oFn_7B*; z+qnc;d<^!Z5xbpc#K#ryao{Zm5u?^XnusHr7$TDu>mo%-m*`6NV7(^pAw5c6JVMO* zaXJ4~W>LPJ&r`%G^~(ALvr9}TKb8f=FH|94B0ZNADqkae5lLiSysOwH_5|6_)qhX+ zGaz+14!;q{egvlo;CPZrB-@8bnJ)17aeN(>pDse{g?3$3m5%LQsT|Ia^&DTYUK8n5 zUdDOT`TJLBy1&aQ>UUb?_I zT%xMu{ZHfM_(CP;%l+j-@n0xT&i|k0Q&oCAf9fKP+L8UPI4}Fh1;$l%J9FIZ$K#RP zhsPC5E*JT)mlLJp)ZsII*uOb{K2H`NLjAv+Kj+7B{!`hU;$#_1j8Yc~#GRGYMR(#p z#Ql_X2~HOp57&DjrDGm+fqaHj{-ekbr7kjw(XNSLyC$+j(y<@vH4)5uWqQ_2sl)%d z9uuiN=4q7w9Ma>s(gm`M%J;ALLj9}ChxMT{G(FdEnJV8U)?6Sy&M!0{?>_8@Y=4LH z*{-B6KB4>%ll}*izlTV?{?P>MxgP|#izYZ<)Vrv?{O!c^6UP(ERp~?P#eSjsi+0HR z>eNqNqK;yJ`DoWfRep6TJ?D?Ci7P3es_g9lpOV*7`Ee8XNXnAg83{nu%s>ts$BPwT8dlX89=BKS?L;^Ujl>ygtV`{N+o(|3vwJEk1YU{2m$? z_p?BKV0-X+g8iPO`o5^7E>;k;o#o4~_TYZX{q0BUXUK4UNd1)cylxFai@`Zb_9@j6%+*D7|2rld#KD>;_Z z1^NZftD*JabrI{4{p+C6`KB%9pG4(zJEahJAlWU5b-~Q-&HgO!B>(>^d9Nx@7hGOd z^LwCPp3g$hlU)Ci6hHS(zohj5GfIEIWyXC# z|8WfV|F6??Jy~)b%zt;iJeAsu*Q4C7c$_p*K*!kv~y8@IJ<`#QG<~+fn|Z^}P2O z=EsuDV`kZr(s!o#cs{SHTt1(m{jcw%{k!QnjxH1*pI=#q+WESRWiLv{%<^`s_W&hb zVlesfb=@e^k5keuCX$`^1vuZiq+g<>F4hopJ{(`L-9PWVL;jo}#}~@1|L+p_R*IYJ z`w4NVp6k!@3-V)T`3>oR46*ZZXTJ-j=lfFJKR7+NGq)ql|L*O~@pHV~4x#*8NW1ZI zVE@qL!+Jh`ypPTLP+8UZWj}0hU0nPr&O3jN{r8>F-$m)&;xfvI%dN_e^ZteI6X*hu zzdwJRuRWqMmBab4AL`vSuX`%%#pjt&f6UKK`T6~^-MM^Ca5`=$=JS{9_Ybzib2sXE zbG|MSr|RJjiPLY#@;E+C+zkG5pXoNLe>zFNU&sA{CD;2-^6O9XJ|$rvOi7m*sia#x zs-#Eo^Bp;gHGxtWlZo?{)Jd<2Q08)0kl$)0UE(bz-Qq(f{p(>a=U=4%R!Lp_5aP%E zmg~*@UnP0HaG~-}Q{22x=6xY%KF{#;BAB25IT_BMufv(ykJ~p`?{CllZhD^gcz>4T z({|y!!_4*n z1n-mZe8Kq!vp>%B-_LWObDtzQUR~hzze^Y)?TLPD|4;W1xL>TwcZtSIx=H>q`g6;{{bSbaB6uHJ7if2# zqwf`zFYiCNM5vzAhwAaZuZ!|`pOcR5ydN0a&qCuqe>whooxgmxv(&|1A@xE&w_c&` zbpHI$Z8xr0u)n|js`TeirwhLC$m0w7+;~IvxE|63ud}#4gBhOx3u+I4oKFVnb%E>> z^GW}o&Y$P6;CW9Iq0c1*&u{+q5T^U5^BuRx|9r{)jwS9h>XqY?+mZX*Ut@oJ^L{_3 zt4h!7aJ0+yir-NZ zZzI)*{kYrt|^DZBU&~b78e(P_C4=65{e4WT~hSrC#Ls6bvPrh!f>OL@E zCvm%l=C_yP;rt~B-X~){w+qJ^n2$V*}_`FDr3C8y)~_&mXq`z!k~qkrhWMkvGijqb1VJ^`2W-(7Nl2|bQ{ zd{~~}?msWFU+8h?e#h;JlIL4~|H#jw{VqR|tvr9aw>~4YSw94l``MQP6sY*_! za@e1*`}jEzX133!cotGRwzFJH_BCXGm-vei|HH(XpC&k8KA*_)^u3W)>L>4Kl<;Pyi4 z*YkRLDCLXuv|D6TzB0WI*S~p`Kj*{gkX@Db&~?y2_(p_mAC|9&FrTk^9mD;M^I59O z)x}yWpVzy5{@O_T67t(i{1r%f{G?tUKh}r(h30pH^5J^n{<|AKq=)sWsvrMTJwM;% zrE)^YA+N*vxuIaLdK~_FKK|$QL-WJurQ9^WJ?D(?s`ABkqW^gV&No>9ck}f>4~p}R z>zsK0YWs6L+yCL?`B&rlPy6A#@1LLeJjd6;JkI3tk>iE!d>*;ve@Q$2)8oMFRg}8m z^EY1~p!DncxbS(I{aJE6oG-5rcpbpkD_7I;Vg9?4&o3;wT$U{;f41{^h2vyy6XeJB zbctZSzaMhC?jh;!Q0x*9oLA5L=Kl9PIUhcchcedVTz@Qw^Ycqi&+W|Z@J}VrJ73cE zB0rZ})p>^PSTC0tq1wYO@II@D?i+h6@2^(1Z^h+tzvOi^*3-ZLjq4Scc%0gu{kdJa zAF`hP(e4&l5099o(tE{HC4Kb1GOw>#!v37HyU5=ywuF@Xck};u;?jj7KKOu_5% z|5N$w`P2IIabn5$0bI0h^|${C)xW%z^$9+Hyszb==TqF29`0jP`Mj?C>Ac6sL-$L( zmG=?n? z2kxr{<`byL^@2|E`P&`)t*5fRas75-ztD1Uyt^ykgZ_8(!ExxWj3>053)!(gZqZk@ zpTA!H6#MIimk1G zVaa-yJbzbpe~|k>uOpEC{WEl4#^dY1|G@tHRGj{Kgy(Vg=XT?ImXkl*F(25^Q~TR4 z!TF(|r*eM(L#1QCbK}7D{&^`hj^KKRrswlGK3^i|0p4#3PRH%zPmlHU&o}H}m7d!T z?f!Pd`g$wt%lTC0FY7D&wf%*ZK7sAykE^P5Rh5J1^>gdN=X*X*{C$iIF~^VNpY!z} zpQ_@h2lbKT`>(do|6l$%&b%U0mG5uIs`CHy{`J@6|EtG|k8dLtpHA)LqWQ>8>mmPm z;r6d8{;Jv^_i-?Oxo^eKYjS=(A2IW|<@I4zdaNgpv;X^KTk1F6Nb>m;&v*Xy3Aa<| zynHvM9OkK@PV4Bs)O z=azZ@oS&nfsp5e5?$vW7uFB`D@p~Ws^<=*CgL#nR=KW**UI5&`r}ufe{9wJ`{tWFy zv;T#7QjottpLs!goxUr;^Vhk4Tu!j$`mw(zR&#r({PBAR@_C^m(ATKp5${p`tMc2W z>=*Wv`N{QgRr#=;>mRxw_cf(Q3D4W9{qA%3&Gf-tphB%sGjFZE{E^Ga6e_q{f8y@=Rc?%=SyrKmaONvE>U)uh*Z)onvp-}7c604o%|EY zkIO^JcKH1iDj%g^&vBrUu$o}VSJ5f7igw&7Y2#()hPafxd zeaPeYpUO;%gYR=pQ>+Vq9|VsF$FI@x(FGnKm*D3ws`BIG$M!i?9x{K&NvH3F!uO|W zUk3N7;W-_OXDOvyMO>()ORQJYE#4(NwgrI3UN^cb^?d%=Pwm3(jDCC^{PL*sgYW&)^Mb+b z5|=8yTeKj1S0#1PGl1njHnWtH(eK>#3im%LrQhw8Pk)kZe<*~xJw_Uj=smrz;Na~$kfl|8f^_Gih@r!J;?p&rI_5OaHLVioC8>SEoW zGW)~(apYG*vXmq~KctIt#V+wXNO@dLdVUwLV}tE--Er~1P_|zw_Du zEWapKj{kZJ+s8%k@3=+NfH-8o4DCng@1}P02yACBr9ao7>rquc2^3GL9gl;%GGD%q zxlp|AAwSu#Z&K1FIxFcGJ*XVMU&s>A6aMufpEm-f%n!@;&u^jWcpR_{?We2{O&3^> zjQsrNXoBEOXGbcZOP6+Gg*Rwxg@3TLa3(swww;X?ZUazCn z#dpdd*1@!HWql}PeOyAL=YjCNrV0MeqoMS=s7Ce+aV_$%L;j)b8C=Ke=iJ8+{XS7$ z%BQ}P=YA)&3E7)dIr!ZJO$16g4&{5taz8MZ{J7upI*cXmgJ^>LJ+EsLseHa(>PGpn zeP9r4;?MPL=Y0WP459RR9L~=&{>dSJ1?S;FKl~1eE~HBzj>X< zlG_E@{~lQ|`>(HA&+QV-F0nZz?w!PV{ih3N-WNfsi+_<{RgBL?xhnnSagxVhKK~=@ zhtL0Lf{!1r&-BXga58iGhg5mIzHwE?73zon{`<^7R*{a6hiAV$Z^M0EdJc_`2R{$R z`~Q4jAOe1CLe1OiJ2dI2v7{m72zTU{_?ef)e6{AQ(0_je^fcg6cN!R!(@l>d3YJnx6fzZwTWC(8XHl=--_ zaN{*DFL>(4o~ zetPBkhtu=MKxi;wSy(<2pj%ugRBL*6yaz$ ziP~C6ke%VzuX=#C2iR^Am%v{=_>=!`sNEtOfov>p6<5ID_3#%5fA!%nN%Rpnigd{1 zZjq_o3%-NIwc=s1P8$M$L&Zk;Tc-_!zu{sl{H@bQz~3Wc2mGzmM#A4Hu?POvX`|t9 z4Cu#zd=zw#g3N^UnIN+uZ5GHJ$bXt>A*P8N;IAJ1-2s37;O`#z8w7uK;O{{(9b%Xv zTEky0_^ShdZN*HH41YJlUnlsh1Ak-S?{WCcf}ay@0e?5ZUp@G%BW6Q6`Jl@OT|VgY zLH8p3TGuksODuzbFB56-R}KF1#0qhzcvIv?nK zpff>dg3bh;2|5#W7U(R{S)j8(XMwId=&FORI_Ro{t~%&00^LQRy9jg_f$k#E)c{=$ z(A5B44bas9U0v-4S6$H6)mnqh16fUkfi4VmVW0~GT^Q)@)w9>l^k6oT3pu*e&NsQE7r9KeT^RCk`(z1 zkVD0jHwrPQW|nvjGc-vHSOCChMCc5~1Es{T$H|WS#oC)Lyw%|6FRX zTxzdes&6i}*I6NdnZ0LylxZO4FT)Q289q+_0_j;XkmLrCgFt_27W}d{$bldmMxGU` zKrX0pR+vu;@d)Up91F5L$ej9-TFOk>PP@cUErj?OJ~h%2`rpoo9-2I^Gprt(?6-44 z%6674`*lvc9-2JPV{7)%@Hq9*WIZQ=Ue82=!x zOx0tMc9i7qgK``=s@-B^25FKn_e9b!Y$Dh7gp)l>`xn@MPdVaAPY~kinkPJRyt;2Z z;gRFixe@(;ai8$W@mZVL^wid5`DGDkKcFqvPC`E6H!jxnucTbARVR4`$oiD-m`79b zU+=E1H3EI9R$Ds|CVz?cpyzmz5J`GJ?FP_ilD`#$JmJQET077`bED~%h zl~0eCp?=#rrngMm4Un)jlZc3s2^Hsj9Zi@5D{14wWNXX+bt!7On>*%TE zw^;dIee*$&EGHf04JAVKzj?K?_jC26a#vG7z;;g44tiw$=iS_s+NCGewCzGF+Y6*T@7&q3fcj?v_0J{5ONdtzuOu!cE+j4@E+Q@_E+#G^E}?#0Li$~#-$nXe zq%S3XDd|f|Uq<>e(wC9Gob=_SFDHEp=~IYPiBpMViDQXR5uYNiAg&#^MY5NXKwAh+$+yJX`S=5x?oR-pZ|>q`C#X5-c*poJMYyV067L&`ajY6p!Wk< zZ%ydD*ZU;s>*#w`ylL8AEe{yxb8R8W6`gk~|5w3Jj-xk#WjXHvF9mzNzRfGoZx2T1 zX~&+C^Jbp57W8|Q!c}{uY2iAqbMmxJ%0FDkdGLr!*5kv@;X2MgI4*ZXd^jhQL zS5TilD%}wpr&0Pl4PpJ{jaBXSQG9}u;}h1qkHdN?UXRo(!2iC~NPSLyS+6{;#vzn) z9-f%mlj1o+?U%00_%|oyY1e^YacYJx+h z4dmaX3(h~WAp3w{BFGGo{Sr~mcOCTXhV#dbU5=>s?bIcc`bnma=b20$&ljeeSF>yO z^*#jYJGRfE@(+4O0ndSa9|u_neir!gx8eMeaM1H4@KVsr^d_@vpA7a- z6V9rBR!7%-<=}T3^z!&Eg8INEj;QE@?d0kj=GDJ}^J&*vRKGB<54a)dtAp&&)%3}9 zVNmWE$aix>0r}-9IXa;x*~65a(6yMx^%APz5~|-4w#X*_You;fRyz}(+YJto<`Rw(&hRs zHYUlp3jBLRx+Hbp>gc=mTR3la>r3@2rv8EF^DwEVl8)mpO)FRBtnF}$(w(Aw^L^o4p?`MI_tjN0 zj^?=v^270QWe>MYw)@%+jtkq}abaAwUGlhOUk&{b=C__b!WF~3;lg?2pl8ETSg-WJ z_1|+n%4z(T)A8)<-2(QG?W4%Qqgt=T+|onI#9Q2?cUR_%aYR!b(G*7%*`p}VShB~G zeKEDqa^FMW3GwSKt9>{xulG#?hU*yL^B}cb*ZY=(G;ZDGD+HO?cDZl8w6|FA!}V~2 zOV0C~6H=(WRFXYics$cxIREr?VZZ80@n?{IFxfN6oipWP({f$zf2`=6 zuhJK~@_orr&T8P!Am8kp?@J?=ep`U0{X^1!*ters>Obk*L&>lE9`xJ^_QQS8dZfP9 zWs5Z_f9Shh$)EaeQnI3Nnd{DluzpS}bM=IIsCL>mr4LVAu8)TFw}X`BOPND*x{~>t zv_o8))JrM#Z}u&9;d!vsh1Xl9s-9&LHP!WWk{;)k*VRdSO?90;wq}-A0O@{DDW~?x z)8zios$#a9-QLi!Zar;t9C^r@szC4EoQ_auE!(x;O? zo%HFX&mesU=`%<_nDm25KbZ6*NI!z~BS@b~`b^Sil0Jv@Ii$}aeJ<&9NuNvlS)`vu z`dOqeAbkPp3rN3&^h-#;g!C&(zmoJTNnc3%LedwKzKHZiq%R_Uv65+;>8bXV5F76} z>$Bl5N68(gN1nGg-cjO?h3m?)h!S@k$k>!Sj7>51v0tD9&&X_M>ohJzN$MuKZ$S zq7=*X?qv}Fjyp?K{tw?3P5Fm;moF9K$-Bb5a=&U-VwksQ3anGWj`Mmfl^08KBv5`S zB;9nraJz7QpX$N-^`!hedgVH5%H7L#dA%?Lq#T!~XSv?#n4CX~XdRjFyAAlmzUdxZ zSEYM!y?)A#e9Ddcgc+6fISu|d_Y3oC$L0BDaHZY?9^P++;xyQQk>{8F{W8g(Lvp#= zFS?@taytJl*A_#%CcyIilF)y#;*KCC_wFC&8juFpW0!`xhJdW2hq=aroX|g)%XLiw zUfX|GB^Lni>K|s5LcU)>dU@Pry5(>^5eD)luzv&k@4;S2k92(l?fz5$NLPp3;rs@& zH%QljNZ0)!Es&3atO;@s$hsg`+ztCeAU6YF2XY_C7?Q0)mIEh~>~_>2CHTsNc( z(PKcE>t>MIH5<9oL6&OGT{$4@=*?ZzNzMle`;o2{#OoD@xp01qbM-qR{o`B@k*s!y zh)Xqt+ zN8o(WDXgzrPgHpNxpE+mm+G#h@v+i_`}0H9c?7Q4N%l2lKMd15DxNi2J|!J`C|2eEXC^w^mC0)lI8Yu&4Th)*BwO1cMu)lp~ORp$GB#x zb{gYaNOBp-Fg=U>vdAw>)&G4c5Bpg^W3}?1=sFGk<;Z|Ss`o@nH<8j!q;!K++(yPk zb$l-ZiN|-Ss&AT>r{cdPqrijnO@T+Q&(gF4HE!2-D57zj=Q*_<@++Lgq^IRjrANCnslR;kZ&NAfs?uKxb z<4N93vLDG>B(?Cx+Ov@ECJp_k-BVlbOUQZo?hSIjt)TX)pmsUoss5u7R}9QE8iBMr z1j3b z{=l@FgGk@e`x@lyy|kluqmp?2(%{~XWY7y(4*Mfg+Of02OAh}+(YxdQc-vHobd3?J zU&qE|dWReq;uk&BE1w#XQXaoTSEl!lpWuE~WTsa>wIk&q;5k~RS3dnAz7!VFNWg!ap=&UG#~ABy#o2Q)QeO+lZO_mebA#3#oiBKy^<4Itkx}$fyDI` zUKfo>Dpu>M*`SxlFEHc##U1x{WaVu5puFVNKv>$bl>aD5kny-c( zAvP5s9d<&+c@m^NPn;bV=9cTIdcz}Wz1dvxmBV+ba<7Vs({NpoM6#6PDWGvbg68iL zG@q9#ds#%87uT(2YQBw)DOc@K7Ew;);uO`tg8Eyy2d|Udw61V`ct1VNdo#52XE!dP z`^8ICJB&}L?Zfk2xDVIMQ9c}R(Q033bd6XauCo(-IPWL;aDAQP!}C;%57(iolrEL> zNu_*Km3?=FoBZA6-&5uPR=0GO|ITh16z^avXE2p>%8mJ_`|v!Is?x3PFoNP5LHZ@s zj*iMld!#4jmr4>jxgBzDWTw)~^UJ9-(ElFEA-`PGM^U>)Q9Vr2?kwyRJTi;?W|6*t z{FhMuS5o~8sr`y5&Nwjz=Ak-zF||W6<%2T0T`{#w3FWto?7OJGrIb&kF5{Rwau>z7 zi{dDycG%>W>yPI~ZgP(Yzfx_z;-e$`D(M{+sjf3>jLOsGa{-+}%6;(LKwod3+&3tr z@^L&rb5{b*%X!+bzX!A)^k!y}Fr}U?&Ju0X@R=eASf0xny z+&B*UxqAS|>;2q!&JtqqXw8)4^?LUhci(6kcVD->kLn%eHstt*{Za$_VV<@V(#;;T z+Fc5=R7;_KvQ(0ef&Ij-#%r49Hn4xY4P3|J{ic&+^0fOaeKbl4L$#U2GO{U9o-9Rhp9}TDUd0P1bSRX$Ysr2%A)czf=J07c``6$Y0F%$Mp8$?sRV+|aCu?CL6 z1eMR`geYadtHD9{<&eH>=0VkNw`C4B)a0Z zX_=`MSBjFO6B?=gG*|~}_klf0FHz%ba<>wiKT2r+NLTB{qY>%U&Ltuf{39RFFmQfI zSI2L3jloopP1Vct2T;5_|!IL$LT)L(L`yi5b5H{zV4PpT!2wr^N==XQDabI<-F5et~+_(Mu@5UDQ6M z6mOX-59WEwKSAxgj2xGz#z&f#Z}wUy?|Ysy$m?E=1Jg@O2?uU&Whx=b6$E8!g6;w`zf%`QT6n}+*`!*E@?$?~a{*Zk_Ti8I} z=X9%hvafbX)+U)w>BA}BC=<`m(I$@HSQGnkx`F4VbVKfA?~I65v;T+xQZYh+(&Y` zu7~^26OOn(hk19Tww&S`>fQtPPR0rKT*SNyt5sZ!CakCVW4(#<=4y(owpxF|{WC+Z zZ;wXgn#)(iy0yhDk_9A}n7EI-(v*JV6AGz4SCZUhZWsssr9~0>!Fd6mMlMd>rtDpw z-fMmX4A(P?dp?cw_NRxM4Rj6WyP;+)C5tJ)B}$G?C?PH)-esPI_>Q+IrE<#1UP|^8 zp3acZ>rdyab<_5zo2&lz@zdpI#u`{x#gv;5fP7nPuAXaXsaKft?UsAvD$Mb)UO)PD zoL0RM?svylsQlnQojDf#ml@5q$spq(eac$c|BtCK?|^cWW8IcK-(+81Zq5Y#4>67< z^BW%LSeTz<$?KeI6O**wufcNypqKt>P<}q-mkjxJhIA#6Zm7zy+}sRYKeo2Yr{Tof zl+PG_71-|sJ*R&W(szxiZOx^0yH&bym9E{ya7x!t|6HXDuS~ZN()ErBw~AG|DCOU4 zVifsDS@LP?+b8Df4P2TS1TsO%sLJ%kkpAwNDC;bhd#j2+TG{(Sd&vHg92;fTfON^R z<>oT5Td}dKoM$G+QaQ0y&LDk^%0IR;|IZ-*2V-KbyHxrFm2Tz41WK1c=_XQK36<#% zL%K&}609XEU5ZNg?!**Imtx7M#j8#1s~-aU6LBe(>3)QCPsOBI+f}+$m2Tg}R7$s4 zzs@b&J+;!`2lbg5lWNrjeR6D1<^R*fp5))tl3(GtePWh=KiCI>o{v{ONLLWk)9R(t zrK@z#q;yJ`PU+IAzvS!BgI^ffIei02za09DZ13GM>DDxrPln3phDjNePX^^PRNt@4 z&!|iv3+dL!WLR5Oy5`!iF|fZkX|a7Q^;Ro^`c==1*0d(J;6 zpHE-kyY8;4uCA`Gs$QnkZHGD*<8{Y1OKsZtw_gcjeLBLT-~J?azap-a$`D_>p6^WW zD|P0dB3>V5hx#?RW6circkq!lSFOGKGuGKruD{2k)H8{Grj;NivSbxD@&c(du zg*Cmnw!U1AMZD{4l6Y&-u{NIk@s#dywLScz9>sm@0}~%td&uzPs*C($|9Y%V;%jjJ zukV$ljenRAjluenYmdrtcP!BhPKJL0m<^V${ZK6h18aNP?gt-5_+ju#g!j}5KZo#B zGTh7dd>#MG@E@oXK8*0^6g~sKw|2k!EqIFWr+I!kzb?ZcsxfBH{=L?twgyp8wmZQ` zk-n#-R*o+aj;|B`2H_-%H-eZ-oG5uz^?)Jdmq-42k_Xj=VCQwcY^!8g%fBDO8)Udj z-3svmH+-LHIwa5~!Ab#M>j87x}Z z^%CB1U$>Xqv9`Vn>qYx~k9ZOk?eikyY4f4yDc@IY+PvhjO&hn5h4T^d8?QfZ`xX6v zTgxeme<~b~!}jrBiOnUsU&#ZXTfbi^1 z+PIt43TNGFba9I*|tGqJDaesvHi+KH$)y`ApZ*vmGC;!To_H%|q3 zZPeb!e9SUI-Upf8yMbN&%I$KS26pl5z+)SmQn{Lj!`k|$_D7NavyE$MKbqQKmEl%) zt)5%i&m(-fO$SQff&3lpzro+FYlraq7@G)pvx{HBMwcH{#eC{WN?%IXm;8P0$%xma zd<$(a(JsCk)2F;j#@}vBrufO^PqxpI@l(U`#C@qvwseY@PX2WJHpH7)em~`#87_y2 zUsj$?@w3UFZGTP1_mO|0UG$5~`tFz4`kqp65~d+;HP2?Rlq)=bfTGw;(=`_eDkccU9w0#OuV%M(w#- zf<=38IBr=%U}j5uIux`Bb$!dwfS$Ad_Oy~-(jk+!&I*0GF;aBnB=^^r|c(# zc<-;@Df_>{R{hS>?=8;K?=8;K_3v5wy~SC&&N@rKyEset4^P>@LwXnT5&M5O_LN=g ze@@x|g8#>RPT95VpHp`6yyXJcYrl6nWe?mdj_*O6!GZB)^FiCjD#l7TS8^x9PZ}!a zIJ6PrMhHI$iu($?z*reRdPBVZ@VABk(B`8u-S4W#H#R>m!$&u3?@ijb9OYdQuilnQ z`TlkE7HxfVum}A8;TIfn6k9y7qNw{e7ZC5qm^&Ui*(nw^^)>%>4u%VnEJ%alp@!C8^wQKVY)!s|_0)Exrmh&xm zU!~1a+f=8RryNv$;P81>)DIt2e?&hj?xX%CdEDIjE%998INjgW?$hG;JWg?Z#C^eM zkiKYp1E+SJnmV=lMJoz-pl~(_?;?_>KHVy{tqTI>8?h9{WnMdAy6cn;eb zJh@YQPI_kN1XH79+Vj~ql2&6J)~oh7<%vVMZ?LnRYxjH0c?bB#`}KW^BZ&8c;(qO1 z3NIn9C*DVVf_OmEi0^y1<3{FS9iUOH6SM)l3mU_^K%25|&{%dix3GEaPsPF(GE704 zpP8XcnFG3#)q}2O(a?>o33LmKg>Gl9q4%?P&;Yv=x|?-_KE`@M_p*M_OES;zWuE9; z;Q3YNc}?cYxX4rGB2Nn!c{+G&gUV8Q2afOS^G?uoeiziuyFfE}H|R`0SjAUVc@i{_ z4}<#naOgZf61tF&hWdF5bSWPTUCGBm*W#YL$~N*z&@Fs2bUU94y`Oua0iK~+Q17A! zLR{3qSuRTZ4Hq?ViHjQeUY7Q%EbXtdwAWBt3qCT?&Je+3lq^#OYpQIAwo*<*?@+#h zc2ItT-lcRfN3d>6S7=YAFVrPHiPBD1=D;&b@tZAdrXtFat%x%Cq&-jC3l(`pq-Uk{ zJTL77(hf@du(XfJm>)>bap^fBJ*O10FK4Cy8|nX5+SjDb3?hHkAmWTSh%%%bL>b)D zpDFz_4Wb^h4dSTf8N^ZZ8N^YWXAt$U&>&jE{W5Jprrj;mJ|@#XBmK`y{{iVwSH)J` zs@O`VDz=_2J$cgOlb(61!(d_y)mt1E*3Bs5_cV(5eT^diJn2~|J$~s~Y82()DE(Wc zf4lVGFa6I*|MOB0NPR_WQ0if+N2DH;`hnErQcp-dB{d{-J1g`5MtUwu{a)%-D880x zY{w%oa`$O~R%8+-zhn|6|K21@{;Tv{lOAR^qy4DnJ`K<+%##~Outf7r=n!);G}*ir zI?DVMG}U|xI^KM)F>2l{@|<2etE@w-NaeDMREbuRYKT>&O16q4JIX4KY^qfp+3{9!WYewU9CusAIi6`1=lD!3 zYl)*~HA3^OHmJ`U37uzc0KLN|w$;HVwsn_HZ0oG_d?P)Vr008^*!oqQ*!r(FvGr>< zv2|t_TUYI3>j&&2pI7W6pTp8VBJB^PeO%fn?4k~rIvnjH*h)u3=vqfR=tf6(=oUvR zbi2a~z2C7C8gT4~?smKZea!J8bgv@>ea6AtN3iD|EuaS+U7@cy5}`py3iPmJI`oL6 z7<$aH1p0wvGxWIQLFfs`3(!-JH=rTMhtRW*v(RrGe?TueEFB`)_m0NUtByOMzdAZX zuQ?K-%sH|HYRoBX%qeTkDQc{nQ`AgPr>KX%PEofmXRD4lUe31AAY4ajQZ7hrwEzKW!sxMl8WDRs>6W=wp!)(7loMq0dCdK%b9n20aid>iLz(7O;bnZJ>uEJ3x;_c7`5{yc_yK zWFP49NEh@(%4}8$^j3i-{67)-+1gSZtK2vAd!M_QSD` z8Vcac+V)Q+ zmNE7Ydi_q|eTJqF2|j6PFS*%Zm+WI$a-Z<;GPI!Z#rsA0IYT!YK1AtT8jLbtd&4Zr zuH;WK?0itfpJaGKvdmB;In1y!N%%7i2V{5wg%b>EGCT`m7uJjNm4elVfr*up+Y(E; z<_{5>qJ?9LZNX|o$`BWYJ*Xa;5AlqOuzlSKgHdC(nnz~GVDrC07bcyWVkXlgVtxs z@b%O(x&E&7RWdwf>@FD|n(mL#wjUr?5`)B$?nkQ;`?E{X{?+s#g{x)w#}Oe4vwB)Q z`~*bCcN6`@Ah8-0$3H}2e4s_fk0rJQMLi@CGl+g#A0X}`e~`je#1OHD$m?tQw**DL zZVG3Bq8xq-*EG=L;ln4gJaNQ$qDLpLCuO@J8e+8L5s&vKgx^CfC6)==11l>jTt%!Q z;$th?_J}P(QLa)72f_Q$u2~a}WuRCepfINVay8!W8(L}k#Dc=#lEMkZ3}P8^7cmHm_|+6XLo~Fe{6Lu>g%gMw#4_S8Vm0v$ z(QrHMA2EUGCT0-*#4_S8Vm0v$(SZ9DqMfxQCJ-}-WyD>?YT_AU!W~-r3}P8EzMbax z5G#pQ#CW{lBF|T1Tt_X;?$Q`b6z_G2cy2x1nc{V!ctjV`P4p83#2_(5WL+seF`nol zmJ%z8Rm2*dxPLFo#k*^aBgPXw#4NDdFk^wA!U1BC7$VjX`Q4NsF`nolmJ%z8Rm2)1 z@1dnH?WM7X$a-txSfZa8Al49BA1xjy#uDR*E@C{q= zqMPXHulfDNQeuEuNn|c9UM$g13=o6F5V3~HDoh=q3hw(k+VG^m?Et|a z{qdk^2T3yAz0^$+0Dq;H5G5&cd?5A)kg)50c@>fx~hRD;keDRYHnNJ*r z_77@V(#Lqyj?E$k-x zi2-7e7$UL~Eq*M~MRXJSVr_jKv1SQ{%QVIlgUhvWh{#rGVNQ%C#t~h_c%p~sCkBW? zVu*;xG+IAEbP?S|KQW;DS84J6!~ii!4C&me#betv1|HHFB!-AAp!s8oE}~oKE^WP^ zsP5L$3CYq_`DWB zr1J&J|3%85=pwp_eq!(?N>7YEsO9S-28h9zHNX2+G4D#B;g@vG3`icC$zB)!H?m?S z7u@TT^v-fiHpvc3{+yk7M5_n&sK&!@YxEzZ>w0347$UNF={lS!zJf2V%iTmjF+dCw zL&US77>C$EGbQArcI6eVlkQgE+ex&7-`7xFMl*Yu*DgUo1z0S*8y@iPW?>=!z|L>JLb^b-TR|5q)(pBNwpi6J8Ujq)YBh;E{v z7$63TAtL*o(i2@oH_=ZF5QD@Jk^MpGi7uj>=qCnRPL}c|SJ<&yU6aB;hF-Q#Q{svn5ATdN_ z4Jluui|8i$i2-6z_eX2#0z}q`@*%p2Zla$UAO?vcqANyA?JLb^b-TbATdN_w^Mqei|8i$i2-7e7$UMZl%D7&`iTKzkmzc!#dj0&>XFuNi7uj> z7$63TAtJkz(h*%mKQW;5E-hY=7$UOHR1UD^?TW$GlfpzlF+dCwL%P4OmM(U%##W%1 z7cCv8ktJ*SvEg_RRrp7fKUMR`5?w?$(N7EzgTxS#jivNN7tu}h69dE`F+^l(l%5y@ zMfun`jj==*(M|Ld4^Pnc!#z>U$4?9pgTxS#P154Ih;E{v7$BDm#uE9GaA!4jw z3%iJZVt~j>we_(?H_=ZF5<^7S5-q-)7$63Ttc>y_x`}>bkQgGyE~WAj1H>SaEu;L1 zZla$UBC_R_57A8w5QD_n6%>!?CkBWiB3>_)^%x|Eh_S0EJ<(4L5QD@JF?Kb@C;Ev2 zVvraj#;&3GL_aY=OkAs-Xa03syZ|voWa}wC(M=2zL&Vq(6p!d928badUage%;3B$- z0b)>JU#`V-69dE`F?JK>L-Z2^MEu%~;gw5{|Az-!z^0%R>;{V2z734$?FX(MSUzy) z!0LfN3}l0BgYF!(XwYkeej3zpaJRwt4$d1~GdG^7iCi$uA~(vc62yfE_CQA0T4_4rT6UmpMGc*}%(6XGV^F`?Up{u5Fr%$o4fgij{4 zoR~Io#>C|l*G{aM_`t*`C%!iE&57SlG)^j>v}@8ElNzPBPM@7#nqHCqc>1g9AEuv6 z|1I4)Ic{?I$w`wZPo6V*+2kFQpPGDn^3}Bi>E7vn z&wa|>&=c!v?P)bFb6WPah0~sz7MgZ>+Uks|jCV7dWx6u`nJ;HXc>8(p_3rS#=zZ7w zjrS)nn{J-oX8P|+@96`lPoJJWJ%9SV>5HZ>oBrtZ)6-2eZkZ81BX&lo89ipWW{jHg zY}SFSNwdDm{x19Y?9XPOnf?3h+j9En+?%sC=UC21IsI~n<^Gu)m)9rHo3|iub>2gH zFXkQ2`zY^3-i16q$2OXU}r&~;H82i1-}*C?(_PV`zn0z`Rs*xg~f%>7B(ol zr)Y1{)uLPHPMw=Icgx($x$n>IJ}+Tj>b(4UiNzC&1I5RRKPwIue^q>`*fhWK{O0pp z&+jz9+x#{2UzmSr{%7;!7mQ!vSECPEH?Vv_&xp-|GLs0rH_}s zQ2Ki5Tcz)o9xr7};+C{sGJVPHB}s6LfR#dilY1d^#m!&Mr zS+-``(PbYlJH713Wqi41d9URYmuD_tynOxgN0+~_{KMtu70p-Nvts0m%oUqfRId2X ziVG`@E8phPE8DG1TsduJ)k?#vTUT{omAtBS)x)a}uKHlr#Z}7c4yzMZKd^fD>K9hu zy=LZ`RcrRGd3DWOYra_1aBZu#gVq+VUA^|lwT;)cSl4sijCKBX9oMf}|N8n{H+0!B zZNttDRU6*fkg&0M!;L>~bd+~4A5}i5d~^9Tj}! z(~Y%Y-B}yf18ZEY3mX9MKzIh>e`^hfcL?jrhOu5One}GFSzk7S-NQ!W|8~ogSzQALN)6B<0tdN~y zMeHj!mtDXXE@KP7u=(s7TfjJ9h~E~JFf(6-|An;}V}zeY@lw{1FJVpaABb+_%UCRK z!*}80TUjyRhF=$KXC-_G!}p2t z>w*W^3Lan&@=Epy-_0K7d)VXrF}9CC&Gz$s>?QsJdyT)y-sFdH{9a)utq%CNkPWe?VW3?2YK0jt0eDE{+=i2K(q_yr*NA;RB-pMWC%Dex+|tGTwlAW<*R zg~s^hs{vmhjKy}q??I7X_v_TRqlb^gY4JV+#eUq{g0a>rzNP^72R9J)_#q05e8hG} zw9(Q{1jY7dqx`pFvM~i=QEt8bPQ+~mzwosK_4-+7Wb7`4bK$=m)ayszUw!|?_FPzR zzeC$z{r^H!du@FK;;xR`HXkMKB_04pJ--d&)o%7BDE9w5;$L77_+vUThL@CCDiy@QZBtJ>V5^I`{`zfjVns#eWq*SRCJuo$*C2gwLYe z-*&+-sKM1;@x?1l&OQJ;f}$RUU(~};gu7z`mk#Rb0|?JWSm%Xa+W!4U6#F+8eWtND zjtv+|i~}(2Fd4o*5nm3D($14V zz#a(mdfItn2Kyo`$~}nu!-#r27Wp_4Pki}Vq?<^b3X1%1-madXIDbU``uP`|gz*aJ zN_+4O_%fJPAAQR}e9;hGK2+-uwjG)O$QAj>kx_ z0`cA8Lts8A@|_Pp0*ZDjj{h47e}wQo6SaKw@}EHX7x={+Hljbc2>yw%_>!?8pM>-= zTKf^}9S93H21Om|{6EbnDji=8K>j*sA}sbx=MjX(_NL?534TD~|K`{GrBbwQ5kGda z#x}(NX}w+#|F`>9h3&nH{nG2@|Fpb%d9EVAbI4CWKKgNKI0a)`9lu_W9pSe(u03vg zeBrNc{z&hi^m6L`ncm;&`=j@hH}9{$pL+kN z_lu(6T!^`u-XH4y-T&0T>HV7C&*}Y}-cRcNgx+83{oRHlt>4kdnVZL@2eG~v=5{rp zsIR-`Y8*=}23=S$zMLrfvj@ok4k-GSD-;%Q42kr~#0A7X;6S850S*H##ag^U#05mX zocejMkB9nrs*lflynk9R=UYp(`PKnY%(v>5Y1{k%N+47pxEwTpxBPJwYD9>57yw^2CpK&5>T(-9c#7o{b{s^Zn!phY?D@=*TCKg zpP=yX#OTf1`UPMS)|Y{zJ^r*s^Nab!1^BNaEd2Hgjr#U(L0If>`8I7nv>Oy*lUw5} z6#jsC8Wi)dD-_n}W#e{e>9dF>pqS6<>2FTg@j-39-oN!jSX^g_{!bkDWQ0Y(Hwip{ zN9{aLpOaa4P4fA#)UpWlmq>N4^b^SIwZ(T|Dwwdk*mZMAuv zm}ftVe4-G3k@zOq7~z}e=lZ-{pQr2XLcg98+ZXfrft4CZ5XTbr>n+j#A4UEvT4?+K z|K~gq`HS;F@aFSCv_sL}^!6>3?WKpc?QBMw8+5E44|Kn%57934`DWdD`U1q)uMe6% zu3aZ|B@P6aWBml;98k1dy&e9B>xH#g?{s1;2TQSDl&9SjIJXhLd48^sSNgnPAGdBE z_w?~j9~bp;QXfC{@lPK|^>I-jZ~u44L4Eww$HV{KaZvOpUv)vBw_oEv%pWcwEc)+z zy5YZ=6>H%|FQc#OgMI;=4(=d6MtqSd-bl>D`hOF@BK}6}_556~Xvc9FsPx6xj6rc8 z9RkI1sRoC`{|7i3RnLu--30=Q*k^pX#cN$qn%%R|Nj44_{pDeuOhd0{JA-Nb9tBjf_r!QwefFUZ($}? z!ChrDRAG464T}PeVhv0x?rYbFD!BVBzCKfIGQl$s%0&wJBcT>H--KV1vjtF&d(&3< z#XW5Nx*xZTqF4!(<9@Xr{`ydSFT&)2|0k$|d)Q8_jfPs-&!!0Ye}O8j5%T7^{~Zbc zch)HQFGCgF4X+3Ptx}sJKLz*3>%(&!a#C0`sm+mEVX=s-;BI*nXbY@SaM!#!v=w}u zwU#;*K7}Po9R?rA-SO7&499(RjyvRSU>C5qunSpx*gh!7z3Pszi=@uS-FAg7W}Tr+ zamQU@%W%(KVasvHo#S4)&{eqWuCSF*j=Sc4V6Tz79(Uk5o+1b>$6a^@_tAxJX7TV; z;C{S;!Zxto%MmR@5B9hj_>vihW!A_uCNDjhhAY1q0|Zs;GVw1DsjJ_vxlJy z+l71f9N+d4`Y7)1E9?;{$9I0l!QLbF3Ea=e_uHTfzWg%@_ES)WJ&pVOob8ip;pVS;Os-F!j9u<0=`%ZRoDqURp1Q& zdl`BXPZkvRnbcEw!ocyYrvjcDJZ0eQOQ?dUJv(53CG{e|51tEBui?o9XMalN%0uuo zD96*FO4urt<4MCV*e0nq%7P@IX%9@vpkh25e&4!fc9BQLnq_=iCimW*dD_y!tO!84VUutz}^mZp3T9fv0{3iBv6 z&}n!Aqp%F+9O7g`73NjGhE7+`LucT*4B9H5%qVP@avAz0p3I>AD_5XTDL*0A(@=%& z!&4fCJ*)f%eNOoU{uh-$VZR{tCFMFi2cQbZC(b#Zvfv-tv!K*!Jk?Pc{$DV(89tVZ z`ZU;~9Su(C5JMz1)ld&Q)=(d5)1)pmG=ygXl(R*KMzBkuoNYHWhP_SdeTF9R+%NTE zLo@g*rS38`hkrK|dtr!!K5b|T-DhYGea6rRddPq;%duCWD5s%4>^BS@VOL3g({Lv| z|B`yd&>8->pd3$Ey23st^*uv(c;1)#p`i!-A4vVk&ijzDXCu=2EuMW>Loej0Ax$ryGIk4?gooWH>2(=JePn`?BMHOGaZ=^1O9W6CRErH!lT@3B6 zmSXKaY8mXlQv0dP;OQ?lUR?pd3(8r7x(fCHC}#uJHLw$<4pP^_9;|MF4pGaYDe7j# zNtK$WR=_h>>Ns^9{Nteto2u@By4Cxj9`ym}H1#29hFXa@UUe7jOsO-}M_|uX_dxGe zABWCTpM++sPeEs^`=Gh%erTTh9Ma~iFTkE7)u+A$yHq_0-Jl+VZc<-`ZdG50Zd0oe ze}`HPd%M(~>YMP~2gN9%l%PwMMNE`%4x7b)KD58^Jy+ z^((b8?61`((DQ0D=moVo;#`E{+)?9TUshYf{!Z%mYHQd(sBNG>s%@cH)b`My)sE0# z)H@OXSE#~%Q#(U{SGz*5somkfuJ(Za7nCz@>;;=aab6hvz*eLVH{Jt#gt0&Tqm1#e zM@k)SOn_&M)Kud@_*0~gH4cV94T@2~m;`&g)QR}t4GNne|ARxiaX9QrP|l_pN5Y;A z<;-my4SOn-vuVZ@*dD1F#VOhpWuhs3g@H_`a z+c4(BeobmallTu0(NN5pO$D%Hq~2;Ogr~98CZ@UYH-%yhG8MzVO=_%Z0X)s6#+gds zZy~jnX)*jQp`6`rDuvxzY8z7-Ja<4bPcSWm-42R*f@uZp4pKXrR>9Lz>Yb)F@OL(? zgXb=(T}&I`=?X=!Wh#f=U1|^0W_a#~a@NaK0lOy@U(7UZgWX$dU(*hF?tv<-pXol> z{iVj69)QOMMbBn>2=)LddNxxf>_n-9OuOJ23`NgodIWY7RAGxud!Wlrk3(0Qo`kM4 zJq3N*v=4FiK^6AAX+QK8({s>QO)tP-WqJvAP-?a5Ane1YL(n%(uR@QQUWXnvRYBi2 zRYTu3y$Sum^cM6((^2S0rgxwpo8E;UH@y%2%=97jl<8yS|2b4)Uzq+4`y10Iu)mi2 zo#|89S4=0N2J`1ov-vdQSftv_HSk!aHZ-4s9b-NRZD#%&dbjyJw1@d3;wPHFg`FUE zp!qU9gP;n&QuqVZYrX=VZvF{6!~6?$rujGM2J;`#jreXMXPeB|VV6sN(98{(HJJ_2 zr_4s^etgdm?N;hRvlX5LQeQUP;XfqxRkIWRSEN>(BjGy0o14M@Na}HOb9g?M`fqa_{QrR} z>=ScK*e9fZW^N77r%-&q)!YX5NhoJunA^hsTa<{^*eJf_`j8U+1v;I@1-)!J@8*Q3+0yn z@GDYPOFTRVDBhs8B)~R8(FQC7VVj|NgVr(_wiSvQg(V5L9g1sk%P`pWrN&x@!;Z6z zgtoAZhTdUGfwr}bMa=e=aj@G#IqPVd0J{T}vpX%5V0VJzytYh+eV5cs%T(CYEgtB6 zO9s|1kXmB#!m|*H|Bhmr0eg{Dza$~^-%>xZJO$4Qsh?T)!T%`~ zE#I;q_DLvOzU4XCpG!S$c>$gf6fNKK66`Ofp0yl==L{5cZwr1;!M=iWcHZ(T>~El$ zKUiLeeL?CaOBFodO8v!B4gb$lf3>^`|8G+Nu)GET?@-L8Ek|KrgJRBLc?b4iP|O*u z@4{wK%o(ij!&acUg0_ALTZQ5Z+WIkUlT?fK-|$$a+O40!Z?kN_^{uC2-vY(8wzUR!11RR<)-$l9rN&s#!P6M3uv@KP!)_wAne{w8O{Lyu zy$FAEsKR2c-@=ZQ+R}O%o)%DCm0N#+-3p4Ua_be?w@bal`V%~Dp*Sn8zrb!UwWIYn zcsf9FZd(6<-3f|w)A}duyPz0tt=D09k=o75RgAe(dsq#)=XbZ%o>n9Ly`UIvt>Ru_ zAFCA}{J%43KdT*{d!!DvI^mgQjf7{S)O4%(pGA|Q3Y%iB56!bSglCS_0&639@}(A9 z8^d2Db)K~e{BxxiTbsc@ABt;UYjfBo);QP;q3AcPEnzQ$qQ|hdhV6&qZj!YP>?Kl{ zTHC^2W)=TcX}Q#u){gM3kh;oxC+v0B&d~3zT@mL8C}yqJ?y#>wag}H70sCibFW5gx z{l(e`o?oGu!CLQu{X0})e^~p&z9#iAYdk!EO1*APfS=hC;NiA`uoWo!YTIDgDinRS zEeW;>ioV)547LS|zS=e%whfBD+BOol1FA5mZ8Yo%sZq8Rcp|0NvyFxS7O4$v;5VI1hu!n7huy;XmRb`tC`w^(Z9<>$2 z-UG$8m2Cm+$Dz2kvX#Jo5{kKmZ87YppqPo-N@4GVq93-E!QKzW48gVx`mt>VJjbEv z*=(y|{|AbZ-L?ky38^P->)`oJ>M8mEtv-k1s>fCiJ!jht{mNDW{n54!sjf)<$+iQY zt5WUu`(Qil4?yeLAA-i%E1`|;yPz%Xk3d`5_aJR+sKVOVABWyye-hf>{uFeeeIInF zeLr-#{W<6e`wNIa5{mmj_Lrbz@%4Y4Q}#pfPlDoXvcC$QYJVN-u~$Je?A6dr`>ons+CPRaw*MP>`k`op~DDW;xI#(Ijqpt4m)(6!wD^SL_)VX>KXCv zcRY`8QR-qg{GOF zfPcJcFLa_w#F=ig!#~sH#2xXsP4%HiO!c6LO_9)JriRe>OpTx)m>NSrGBtr7H#LL) z$J88p!W0Mn%+wNk%G4VAg{ciRWNHij5-IOE?ITrW*Q=MI*Y0mD@@y;I5iOycobY~yv6z4rqx3fQVnlm1n=}dr5cMgQkbPk5z z>r8^?IEO*=oWr5{&XG``b2PNbnF1Z->NYJ1>NMF4c+3*g>H4ufo^veKzBL|q4zuILLYP%Lj%qQ(1)ER z(B00(&_|u6(8ru*Y!my;X~YwbJ0g}r+eNH^-W9P5+9hHQv|GeF=-m+;pgkkXp}iwE zL;FTlKnF!^gAR$<0Ua7~A2d1Q0qBT`hoGY(DxqT{c0p4k9)YGs?17GtcpN%0;z?+F z#8Y^hawOsjbt`*2VlVVq#M9~ymKY1YeJs5qu+J zM(|CD8Ns(8W(41gm=SzCVn*`&5i^oMh?tQa-<9Bz{9(k5pUvK>xzlZ{@be`|vB7294+9`M@oR(}YK3Z4(}Yv`zS}Slg7x!rzp)K-#9f z71lQ8w_|Nneh1dt@Psu6&rsXoH%2{~3%>^%ji-Zd{H7-lztdUD*0G&|u7@9bA_)z!I`olU8``56DkoGiUorf_;kS*LJ>r=WhevcDdCy4S$VDUH8hL7D%Tc~j3r4A< zdyRID9z5DJ`mfPNW44d!loFpZG$kcvQc6b3tdxS31u2_S9#7eyQa$$k*qLej(q2wG zk~U$&vj$$-hrFOtDX?Kc(rE)>FDnaZO2@vU|$ErW8;8Z7Op| zyC=Cl?if!m&n(Y_p7S2Vv`y1qpEfaLcE*y7D;c+E-kI4WvnX?UW<}-$nR_!+ypy~c z-o4%(S^Z`Wo0T%FCc9xy=bWB78M)hYkL13ednMPJ*D0@a-lV)ac`Nd^@>?VOVQ zRt5bFrWb4}c(mZ@f^Q417ex4?eYg4IeItD7z7pSB--Eu#e9!t`@xAG5RhU*dz3{Wb z^MzLm|0pyR*^4?CWfv_hT2{1RZj*Vf=XIR7w0K>ydw%Z)^%pi<*nVNRg=GsX7KRqq zFX>Ryy<|bjvXZw;PLvE>^wFYk7yZ2Gw#D5R_g$R7c*){*i+3!Z?O#}`l$|X5y6k#c z)Y4m*wprSJX}_hzmX2HMS(?3c-qIG!+AZ@f^DpbLqT7l=D~eXET=Dvf-&V|AIe+Ey zmFrh-Tlv|_FIQe!`NzszR&`vJxXQDtc-78T`&S)Vb!OG?tLm-pv$}Bgk<}lrPF=HY z?H%ietb1_X!F9i^W9u#J>#bj~zHGf?gSs(dW6Va+##tM`+<0N*wT)_dTzT7aSNV`~ zPkC1Pg7P)x50vjIH*9ilYPzZSrU9FVZc5!WWmC?kFE>SQzISu}=8v}AQqj4he??No z(++}dPo+}5^Ry;}>nmTY}>>ziATZT)ELiLE`h z_1iXP+r({)wk_YbXWMJrvbR65{mJbwZ+~O^JKMYLxO>OO9pCS`WoL_>?RL)GxqIi{ zoiFU{S&IKCqz>7IUo5Cmcqe9<8hZ@0Lv=iKgu4Ap-0xOZKi&^y+8?eh*sg>r6jF%- zoXxvM58mkSkN17FzZ?DH9r%CpufzL!|Ky)C;Gg};6aU$tig(hrzZ6SrNa12s?2ggxZj4(!Fe3HDSkp`V?i~G8e~b|> zX6J+Pe~Si--=Je`7=u2340`V|tR7#&ZoyI?O9Q+Y&=5;BmPS}&_(S3{KySJk zedZ3<4A1s&!_u5rvRJ-{#bIfIr6qnl*owc#TJyu~c7Bw#;qS3Ku(ZX}4oiD19k6u7 z(h19*Snk5o8A}%|UHPYY)8ZuS&QIh2Je|gG98cpnj;C2KEWNSx!P1w1$?n0@4@-Z3 zfw{0R@mL1%Yb*gvBL7oVIDRAg4ITLaS>i1b-Peli)+pYgp>}*m@jkG`-Kx0HtahqeYh9I z&dM?yq@|TP2LJy_-=nKxtDU0z?vj=$-(AXvEC7F9!oDtH--vLEQDJLL*h&psX<=)8 z*qRu&(! zIK|~~ibhU--zGHBt=VBKH*C!bTNlIDw_)pY*t!z7ehOQ^gstDg)*oTZ&`{s5Ic(X( zR%Fi}Mpk2xZEaMxzH1@h- zTG}B#E$vIko;0gko#s?8q}j|LPqLXm!EzGIX)NckT*Pu2%M~oYVEF^fbu6hP@UOSh zZDunTdwOT%r;|O#Z>AjL-%ObSW*MiY%>r9AnwI7`KAt+_g_t+`!FXXEAB(TzIfeB-E2t1#y0 zUXXk&_bbQ#+|L{@VcC;*0?U_c&w0-7jY5TE+ z5bqA`&u5P7a~?7dn$_88&hKn&oL{5t&poHC%0H(h6|}eI>d{L@)~T#a(_`wqu-0hH(+yP8Wj~)7}v~w#8OnW zsnMRfKjL_Ohh?AT=v?6UV}Yz^BNoh-@|fz z{(iH?H_|GO@#`gTnT(6~n-dprYLv2ghB0yR_y!9XhoXO(bf57`**V3!^lfbWsP*@v zGDC-)@eQV|7~ddo#X05ZiZa6oE4DPMPRnjkotA?oufd>M=akabWro$OV;X(B`YL=s zWBDD+uUM|w`G%_~>pA7ljirvFq8eq;tV4XztQzIimP7p1mKw!Tfp$>wMRaxAS6E6+ zA60~+?dcw4?$*YZlapextrl3y3|A)YFvV^!F&&+I#kqC+NNZ8iKGerntovH2PCKXE zzvF8~2E4sd)15Pn`8z$v>a>y8>NEoz!c{D0ym{N0#o^07L-=i2@a+knh-Dz_ zt0aNLunfmC0?Q~YW3Z%R8H*(iamIlYk;5b`=~yOXnUDMyU|EQz1j};xR$y6)MgH|2 zo|{>i?d``#c<1_Za|&{&`#KFR$j#}LnVroBz!;E~!d&D2&U*vq;mr@a4`<$oG1DS-Cl3zq_-D z>`l#@T^o0Rr@+e+vkEfuvu5Lv_`I28bLysH19N;?zT#ot;^E%e(_{@&nFr3x^WMIF`#wTd2?Q#iZU2dluBUzp*`%^!lzWs4(` z=FKm-p^SsFb3ML6x%sm_zHlVz8|BF_@P=LDupmFJDa8A5Sf>@D;RttPR)(l5G|3zN z1LtLU^TZlib2n{5ROXFa(5rW1ZcgoHwNyS)aw>toM>lWF=gkp2CJyn9tHPxYH?L8- z1zECOL-po|iuYzFk&>O2;iZ^^vb@=ub!|Nr`G(33j4t%%7mviL z+@uy zw)Hv;uSiPG_hfkK#J#y*QoQ+Dp6smo^6bLNpH*Ax z8~u8l#O8c@^Qi5sq!%Y%F1pG(1xgaBa6D1#({q_zBRtgmg~L>QI;{#aJbAT^QnuTC z(G`fc`nN+r)|Zuy_T`oRjqEYB1T3*Q$1^)C0~I!}82w4oP;t8AkfHxUaH!U)4%IqO z4Ruqnp<_IA*%mU(`&?=A3mW) zROFe3c8wF9+C)mmOz&(@N(M$MI!FWO6e5zZSe#d$eC(Chzv~%lZJRoG8c4#0Oe)CL zd%AF0*-%drHXv&4@9UDr&(0o^o9Si5arvG+oajvW6LT}rf^vLfoo?4%KQP;?uO_qZ z+C*Cf zq$3OlL|pRA&E3$(ZcMJPl07C3hd3|8 zRZNXHe1iS06^p3)@XBuLoU{YXhHAXAUy|o$ICnYC)H*ZjM8jP}Z6}eORe&yA_IR?o z|29m>b57f1Y2LJ}(uaAnH@i+886HrWl`RGhQE}Rts~zF+*nZ=RI`P7NRBa5}fw365 zr(?*-)G|!U44=(I5uJ{A`jW$iyXv7fT$vQ z*!3)>M-RwDdP9B*p6u*to{U-S2CtT-zG~pSI&(PDCD(1p=odYMHJ{ja?VMBJrYwM7 zGdBe4oK3^CWM83m*WrUWqA)xA#*rj^jwI*i=7r*wzcSt0GbVl9EZxVzy1h#f)6#5@|~e}V_+X=b=@)Q%sfIurw4 zwXAmJs7>@n=ExQiPQb*T-ra2=o)?PNShv>^vrnzEkl!G^31JIb%Z<xzYZ#=r_9SOhvOWp~gPe?n|OK+dBi7HG^=DW74T_ z`@csBA8ftT#jezD;J>FEP>gk$Q{u!F`#30NrYAp7+r^~ha7zoHPPk5?t88&9%gbGH zWr`9eqqGBZ3v)96`?gTeGjlV=>5CqyHX7ARtwY-v+)fbJ`*3U1K87mBh??S=?oC0R zc#(%_A)*}NvuZ$ACMLAnC1iH(d5x&yiKs}EAf`aV5c76%wJK&Ua$=3%3^Phxh6%ru$lj4Je$B8bdMlQA&$89M_JTCGSUI6zI&*g=KiNvpqT9+`2wAJzq*M@=F1sS>d*;&(AN^ybDJ6rAvqr;knyBxTJ6jv&=8n;#S zvKDlbZ7wT=CEajAqvcaKV%-RMGFp3{*N*P8#zdk2X**hJv|+z?`>2$pglt@i-B`T* za2C`Fup}~S`;KtWlO+02A68; z*4;nVa!Q^zLtdlfDl=(Bt}kmkE_C$F6J~mHW{4HFjUQ(!&M~bg$BiolDV4qp;WXO4 zHBq*@d!=pShR7(d$g}P}8DuN(d}MeEe0opIQfntj;xw-ll*I|RH}pNCR%&D4I1kZ! zdcDK0Z5|ARgVxhg42%jlhUKZ!NnApAs_nT8>h$7iG)$yY-;*lKsg*8uP*y&s!Ko?U zjNF_XsxB+f^tX?!Jx8&SYZ?vodwE;hEjp*aB}pCU|1< zsvm1{b%L`SW2&fTYJEu~DOVcvr_R-G9Z$s-;tcPAVhj{oAEoz-!_chQ46ko$T}QZ6 zFZgdOI?0K_pzOkenG7c_ZlKByYMo)NsZVv7n48gQDc5R!o0e#-Z+cHrvI0yrvNH;^ zF`A`h&G+6I8kgmpne5G(fxB>h|EZ|`W=)+s05en6g}l`k?)JqFhWBTxPu%gA{nAu< z6xh@`g}FX2nsz>$no*dKyBt2PADt>jJS`^q!}lAht_Nr5POH5KmVm*lFkibJg`8x7 zP0hs4=y#ZEOEKFsFA?`tXR@g?Jq4oE^k#Z9hliaaksK0hQ%o1PcW?5EXj&IXwMl)* zR7_hjMHdG(q3#|@hd5SAIeCRXCXTHi!CAl4==CbNm@tRe2OZQfh zEcf&@HH}~p1oO}s1bGN2Y+r(%cKRDXKz|HMP9`eEDa59HAqp8DRItjbG7gSTyoeV8!WK5=zZx#nJ|9wjbzK<0Bz6Sexe z?{7teIYI77@6O;lsbp2I2<0Jhy0hGYm<*xqkIc@h)s8J2(m^L_MWuVJWu-0G%lA&& zQdk|2;J^hWX?16Z3V5aeW=kook@?lo=`n*aL+ip@$01%x0yp92kU~=4IJ~vP?fsLT zu_K0~Yg1No@gDpuP03z%u9%u~Ch$eohIw{by{?q!ev2jUgP?<>(jRC_K|C{k-8S9l zmLAWTBP-l%bHz*aGNQ$3fi2T-W6kCVarhO!_gYx7%wDq9y?4TZ2zM8y>|amolbz%{ z)242i{*R@>c#*t7Y zTd45VA0$DGx;{7m+3j|}dCQdePEj_fBm;|NRJ}5{Na)-?OAREmv{-1TXO9$gbWjw^9glnO<5r8jKF3B^9sA z5=&6q0E5)A)sy2XMKJZ1Rm5T4K^PHDBFhEhZ7tV@ELY90!R-v@V}040fd7J9>>yQ3 zQ~t&gq9#(^gmP&C>!~agtHyAEc+fg5J)}Eu1ZW{3(kMNcO;ptPPxbQYBfv1XZq2_q zegN5MhTPZ;*y5Gj7-P#7g>7lrI^#ZsB~h$|rfmrgew!Qu+$7kfwMiOCQ>p^9NsqBe z4c7AOahrOna#>Qz7%`kpYj6g&D{UP~@@*YeesYQ*mr(Z+L;^iPg^(;5@gUN$QHxR` zy6sI2%O0tZfpv{`?BV7p@8*Jnd>@F*1sNyqY{?~3dY^kWJZ%< zQ_`d~jYp16gr<-A<_+b8;{n|mU{=CGY*F>`SSx+)5D_x;;lyrNLAVP}tM0Q{&@ zZDrjvPChtHcF<__jGYh7G_3Juxku)ZA%ePW^5zV4DQ| zMDa#8aBHxa+A9lI0tA8o3(ISDjVfS~nr*HyhPfHWp77{su* z2bgsyF`zmv$_@7&HHLGeZV$Mq*2`E~+vyR5c(W<#=;`->Gbx8qhPP)^hLjgI z5L@1eV*F^j4U_!A@iw&aId_0|C)hH$&)s3@q(|oNm!g7XPNPXA6AYZY^2R)JtDKcz zR&t>pMpvRxFDKVAmS>In1{F;nkpdt z+(j_iXb)Qm5!u&lb8YS99bc*kG$*9;a&GJmA+jM})dHcy_hh4|AwDF+Ro z7>M`fEDt2#em34lB)G>30}4}$Gyw*mO@%FQdxF)Bx#>-FrvmnLauqzQ(s({x4F%Yf zv`JRe6Vs@jGKIe?Gd{9}jbl8l&4Gr=PFk@Fy~bBitDnf4y;QbuO|lb{z}AbN%slSH zuFS1*iPL6fAyUJS=kOQ`N#G>&@m(mf3V$%_wKU6yQDHBp%SFoV(Q&0kTfPN)t7uU} z^e#H$iZplcj;kDqM%czK1AEVr=H3*X!iZ6ag69P8?v&e4uwh9 zM92Pg`x*AN=Wtlf=bNx9^TYbg3*4FEga))RW>(KRABtsKpV_2mXh{kAWo@nj!2_bu ztR8TYVT}|dX>RKGmFlI}N|k3cVe>_Q%%fgWqu4?YM!4m*>ZMn+bVA0nJvs&#r`mFV ze6&xq(iX09(A7tn*QBV`tlpO}d_}~6G=74}N`hlgnk8jnCXnYTgs^_!WT3r8HjvAb zxph)js?xndYy=BKJ<*`+%n*oiGDAA9NjmT@I+5&|Tj7Wh*aFBjt5j4g3=~sb7`P>$y+;og1t(3`kY`1P&bV%xT+fkORrHh)B*prJhTCvklpa(7L+kF9Y6jXL zQv)s!{GIR&*%om(b|Yq<%Ho0rhMpWRa)%~`ywHB8G(28a&v`3h&amlv-_dv?Lxrf}gy)+P!F zdv(4&nIzv+IX>8zk^Sj-e!RX*OWSPj+oO2J4%G+LETFjEn(R%W{{9T+BsQTBv0Zcv z`yL-oPw+Z9 zRpJ(QVpU=5?p?fW;_br^?GHpGf(Rvrt(la-<^kmz-*xk|_wz%{_QqU6#jfM2aU68pR$v@1Dtj};Vk#QT0 zGdk419%gKOJXobfmCa_z=uOd6urRw}j0+r39wwnZ9ob8F6iG(!j)kXbgKB!T1^W=* z@yT&me84uex^13`2~?-e>4KNAj1n4J!xm`WP>BrB#{lY>jFm1A1$+Jcst*3W*9q7F z@WeNej8GsP_86>MADUj?I5B0&lP>9U>Vw(z!1wB0u}UQgD5!SCm<|@rU9j;n#e)2+ zSmiMOEQ$|v7|$kbtH|-#IMb2utBa2w5DEQy?5q1vNA9-w{S4kAAyG1gAhs(d_Dr(atL;_$cB~Bl zdK)BXIIwXtiNrnGr!<;9!7U@$pMXzO=}*9@#zsx;7S`{eP$<>wAI(+G`I8(#+B&;+QdY!D)g?qV8T}E?2 zFQq3FzGRC^0YE}3@E(sFkESR4JK+HsE8oTfnuAVtD4!`)XiCd(Y6uF#wH3j9nZ~XN zkYr2ss%lfMsp8a-4RR{h<)t#@cc_t-9LCS+=&AxnQSC0S+W-@RBg7&tpsFzj4L=CW z+5&M;pK|q5E=ny#dY#0X>m+qvJv@}*&~}E&o%67Wa>~|rxLY%Z+&GbnY)H&0u$1cX zf}!-4fy6!yG@TCANbZ7o&Zf4Xse3K7}qHZoN)a=jTk^}IYKoKiC& zRSvB#8tp@QX2*9k22NgibCxsQleE81$ZAwuI$8^H!@{>~z|6O5=hdnas7Lh>W5%o* zr}biSm<18*2$<`)wsqhK^EPl;s*3hiqn3E=lik7k){aQ9r9GP3i|A_Wut&yQQ{z`X zBHcO|yac0gzGexL^Vp#I(4$$4v2Umq9AN>Sa$yfIQ?Bsg9Ah4X;Ihu}x@MgP>ywoh zWU*GC6|h1-m1Ug<+8JW;!3@>_^~kv_ovwOi?h>BCR+nV6c8_VWPA`!q7qSu7SeRM& z(V^A4r%o1YVVFItVU?kDFK_;T7vR!sQMgTH$xJa#(SEAIPPe#wXAR)$o%!xaW0pVK zCbn^@F^`V3kTx?|Mo&y5WTAY;v!xHS1RMEqR*}g4ND<~W2Y$*(`(Z zXKL8}bQ@|f8Sn%x2bFc^z6&v84>|xUoWLi=u^uQ~z@HJOv;COc9CNVTgAvpZ_=%u} zZTo3uI}A12+2Q$GyTi?|W%7AUGYh6#lxy=AEwO!^<3Bh$K2?;q#R^wNTz4@*=IQ=u zG9Qa9*7FT=-n$WxhkBC$s;F;wN;$Y=gumd7r|Fb(cDNSK8?01|*v{TP&y_DK+CU_d zSX?fK6a{ui5puMg8{UY>bdeXYu(s_?4b%=^w1#Bd>>8Q!@z`Ie1|Lr+hfuN)M)I() z&Hr*do942iw@_LjE+SsRE^)9Hqm4FOP<<$y@RHileaJ!vY*$TJI~R^$$F0)}{L?eI zrg?RucTMBEn$G~p;InnAwwrX8S6~%1)N-V(lf+VMa|Gbv$f1VA_SzJdsY=LvV6k3e z1tUvUT+BybrLt_`hR>lyS3|x-L#T&{uodgk_E!B$JI;Q7GsJ#&cWC_*y%F__c!?TL zzg;!YNCO4qpkf+? zX4%#P^WC70+kW*5{T-G(v(qXrqCDKO;{V z_m!rtX9xQ(Vm_mTcbL(mPjQS14qsPgWxAK%LG_;U{2-0UH zXv?z)`-5ifR@C&_FwGf02dQzm{AZbxtfTVwSr7_ajOX~Zl}6$2&=@)*LM+i4Qcn#FB`#3K<&GtEB)1y-Y zH%}XnCc9o?ZTFsCD&>Lv$|tzxNo`fGc> znfv%SAg|5hFa#e4>-!4UgfBRIj^!asVU0(sc}8i*j#c@=;pe=bCKUWr?hjD}bNC-% zRPlauGy`+k!wll$Ek8wpB?ENYw-VHt$Cj0iZ39Ai!EfyVf!0=ewh1u3fS<*^(9L#rTwjd^j<^?S)T7)rLi zGS?2nun}^2WjaMnFhttE; z0|dEsWt@tth1jg~>g+6U>DA?O_mIn7@f}H}Os|9`Kw{b+RZL26;yU?|E5&1HE`5rm za20yka9)@bEE7cZ!g|nFXf8+Bnw(tjNz)5X)C~GG0bS?_0+$9O_MHOJh(U-Csrc4s zp1}(F_0;5i)I2$IDGKoD(-;xx+;(}&b?#JKz;_)~HsCaadhGg&9GNNy(zl!OHrv$h>>_wH?F zt0iX72NJFKGsplU($LgNFkP+}i#CHIGUo|c?0(%JgR#yK9)R~559URs(qsoI_R)~_ z!!n?1>^2B5P$lzt;Lv5Xb@9?)j1AMu&Aqur%s~#@C6%7&Oa@{UCFDmXhlR~dUlBBy zIDET$Y@xYIv?Fy^fGU)El@K+yHn#>I9Bzv`I9}}GZ{V6iwQq=Gs-p4mkV#WGW58hm zrW9Y2u4*D~z(L}Z9qDs0aWstqi59WQmEf(|dyGHF!Z~-$Q5AOI@YQl#gH|s1^1G$4+C|69BR+lV5Cv^hSU~!ct<7OW zp)vdUYLJPLKt%cBtF^~vX;c5zngQQDyO}b_%dro7UW)Pawquq7;$3<4VcGD`-JX0d zuyS;xW~o<2ESJRPgXDs@2vPfa5iQzOmT0IK(WHoMXuP(Ft}d7&@q+{NQR3qQ*iY1I>j!9rM;EiFVH2S-BGu~8DosQsj& z7OV0?#s)+%K3;K%!^XPT0On<#bdE+?-lRBN%rCiOeHZ=J`VM(gk4-TpnI6tp3EB{= z@aG&A2$jXj-A0g(+>nf`v$u;>XLq@+i}vk=lI#0Bh2sXUyS|0pM0vu_0g+T+)N&=5 zPv@xi!36gh*q?J0CZM1MG+oF-FXyPN!D&Y8=W|zOzb@eH@f;NiaEr-)$_1JU1;u8Z z?dF8@HlpkAV9!v&H+2*HK;|znz!qm;umju=Fx!3vV?dyKyCwCa&0(y)#yrjRL|$^B zFAau*S?kqUmTs36PLtJVKWF6He+Dc#SS3W+?Ny$JU+#(7R=XJwtSWh^b`{+Yd;qinmf&spIjOV%$bA6l;G>Fvv` zy6BQ)JG%Q#ZMJ2XKqq zCFCP`0=hNA5ztEyOSQ>>kQq#8>rv2Ln9#k=$4}#MG@I~7%sf8>e572Dwc^E8{ZB#C z%?GjJ*DQw#$=F7d!#OX=s-ItcPZR}qiPo>D=|I`}%#|fD07h$zpOd}-Cf{3RAY@a# z;?lp4?iZRMzcB!o7&*T=7%pOB{yL_CWL_P%S<*#i&;*?o5-AG8m!?M-PwV*;tf8EA zQpk8Rn5_&O`t%eXUCyW69aX*M{pm82i?*GcFjrUgc0m|#?vLiSk4}$SdAVpSaf&MZ zdf8QH3EbKM+f-QZMMqjH62jby383OFylAVwiD9j9=*{~DNAGn*ELF|rqzkr4QxqG! zfXkmcqy6%9V+|S2_|pX;ixI6qWuy@RY!h;8FHH3QnuOs$ydbRDAGVk6%4fU2FCxxi z?!wuGHDeE(Qv_)kLBy@`%!Z0I#cmWnO#%NXK7<)tpV)P?O9b}7X3e<5rYL;)wpC}R zk+4237*A2wygc2mu*i|pwn1+@l57H3zA*fx`jADNVr3MfQkQ8`SmxH`2|ihe^X>1S zS_k!e)sN+Q4`#!9_>0ojs-@!+d3@{*K?_lsp0QpcTP}%Sy)9X_=}plt(|&Z5P>r-I zq3TLt3Ctq{2>pO{yfCL!>Xr6|l+R_WT9wNBw5I7Y80}XX9Lr!vTch+{3Rh6r-a1>h zG^`IlGWkfBEV8HKVJRV^hJwNaCJ zzXxA^hVXuF(0V^-d4)nG{hC9hw5-&ko)(exKwB-bEd{PEx}fihDEqyULi?#frM;Yn z-uSJViWyhb#M`@=6D4p#N{2m`1ho-0Yz$FNFEOoltuy21jiVL3(B0nWL?zK%Su_K> zTE7&p8y>)~pR`b;fhPs%BWU0d5tFvjj4OvuaB~r1^Mg8gs+-Plr?$huT^5uW2BS__ z$JRJwWUMpEXKV%)Wefp8%P}arLH^yoy%<;bK>nu*z-9O7q%lqRC}c z&3w8qjlsif*6~U53BNRGXWAA#7oP|sG^fWFGiXIMYW#BIAklFakC_{WX{#T!<y75Sy=sp((Ke5#tW5cf-%mB{G!&+j* zZ~jC~l+LwBy7w8!tshNy%+QOa<4J)Wv}*SLhlq0~E%HMFhBbj(m_qJC85Y3aNy}d# z?WEI*+DU3JvWfNTea1@iRjkzT?>33K)wMYfaby5&1h^U-`NW=mKOL9K_-nS0{C568 z4d?mhz70R0no#GJ^iYB*Ouo;!@vA9npHPU&1_fGVDCA8GFELncpeiSJs5KZ_)a|`?)0&th~@P4RWY5OC|Qa12v5y0kLg!g!Ya;F zI3uK2*st2`u++so@=VzM-kT`ba=rdAGGy3hu@80Hm3KffqE7d~BmJCbaXJ-uM|?CA z{+p|H(Q{UbVp*0OLFceqEl^)I5%+en1xr6IyO#F=YjWbFHDiXAphi?eLZ8q61 zO@gMOwNoFm{-S`+qlzDQ(u`j~21N2EzArfi2e0(dC?YUxu=LDyiCQrq@6A9TN;l+; z4&iN$@MfRhwMKVzRLKQ^4%w8WAQgf61Hc}qr)}zrp?#*?vW(9HTy1Jezu~=61+j4WpepjbD zZ`*fWb0~l&$QGFw%6${RQ8Opnq}eHC7%gSGniQ5P-xV;q!L~X{EM;RsAG#2gh59K0 zf_279;>du=)m~QXrm>vFwS-ALGo21`qgYnVFU+Ccnsf3CbFezpMUnWdJ&?@O%?z+y zlW?afVNE(~YVn5p;pf>~mCx1~+Ne}MO=3;_-H0#IAeYX4AcBrnO z+)j2sznSNLc4t2O1$;vL88M;#oS4vlPJbHvWqMa|^^4TAY5D??)-RRM%GP(B^^3Uy zOKAt8zqmOr3ofz6B|0?K@2aJoett_cz5H09K|(mX#48noKeUvz@=Q?Z^P@C!Qtk0GfySCVEF5LXW<@DiX2WK~J zvH2rYp*BLV!`U6nC~wU39Rs;t@(XjER;*4uGu`|Uu*cbXJTu)dQ(>|{GL_eun2(I< z`2|ib-Am!$6^#HXe?@oW84Sxzhyg?=l^x_Vh;=ltgV^anvVA>~cJbeD%`<-O}?MP3LLB%U~*Zg_VgWk)NJK2-*6ZcMgN|S9`0j|fj-*#A~ra#HoVbzb?A^maKGG`9ePnEs}gZ_2c3+J0%$%HE82aTa6_)U0>!np*Y7U6av{Q|N29 zm73Dc_EVF?eXJ%SmPV6kpR;XJB5Vf&uu0c)X_A~RG--LkHL2B3Sd*?*+9bseQj_T9 z-K4Fx^igfA@W^DnYi=B2!w5^MyzpcHN?*c0Bri+TbX9ywo?x zdg-f&r-l#c9z937U#&MYKZ2XQ@wsa^2&+`GMMlxgCOeEli`EREL+LEv*wLLji}IR& z1Y6sOr?H%oT5MTt*gf}Fb|}49{?3B(o=%f7nA`fymrqTa?@g@mbIp^7>x`sqQChNxx{Rphdc z((|A*WV~H~K;?VPZyz1RRq^>71W?4Yrv_1Cdmt>I?kwM(wJ6?iHk;0(ISYesI>41} zEMWWw!S@SWS{C7F$Kb2)9!0>exXF80Er0o8*|VC!+yRIBh)>psgT#P^t=+hs8$)$R z0_t$w+!$t%9C=|dzp5ruC4Zn}m%8#S>7zpKX8N&vz?Ef7E1F}|aO>dY-gu|xzAEbV z?!yqlUR-_SI@Y8D^oH|7ZzGE~w~KBxF~4Mt%z@)MDcV%`rkFtr5@YKsZ;xO%A-fE8 zevxC_z6}t`w*cE@pEoz@lMCJQB;_%VOITML8QzKyEZD`V`u#V-DN; z(1tupAg(^CdTZp6k2_qKHKrfTu|zCkI^)er)vB)i);`zfA9DRTFo7!;yt<)kj(HgE zfJh9HdE`M3ysIK=+AIOp4RgYc5WyR(S+MK3`RxlWJzIqc<$z+Jr`F!=>&E=(uwOoh zjdVmRWCAV@-JGQP^)Xf7rSO@h30~O-nr=&sQRw~+4EW|`MjFATT470aD&zBRj>o*k zn!(WiZJ*8@r`D2ih#}#aXWMj9!IVMVXZUg-^(5v*Bbod*OnNOX<-!Y+gUTvgc~Sw% zR*j9p*PG8*wHj&{UzyPSxyyM>v4VFP0K6OR8)4bP7y6p?Sh3!t?&wT;2N^+}$GEf; zKIYhGZz5KaF>7B?~)pt!VSrNy{{$l;?>_9vQ|*{KNj} zdVFxwn&^CMlEnbd8n1T=Xv&L#(fhrr-5!L()vv8cMHS&@C#V23I8tEV#+DjqS~SRx zpr>FobAG&?Y;hmC2-cy90<%8ZKUNsyU`|QY4TJh#V{YT#G+ID6kbZc>eym510OaO9 zW~WTU%?(W9Q4<*;cu7Xadc4GJ4`;p)fv#PPD_D?a;ccC&YOl?~4&QOVVc`_~ad95% ziDZZt%EsoECW(bg`I^??D$sq_jCM*p<+EizR|P+XM4@|PC*KPMB1^VOai0oIb%e@R zgz*VZLQuj-mcxj?0$MzYFt}hnQ3*C$=^u*>59PWRZ^RZCP`XdtBGW#YjQ6onc5#SA zCqfHXxq2HH(^ljQ0(BT%;t7?7R|i0>Plp3#@A&fuYq|eYko>fQXQ7LwSO{ z+b$+xVMf(jRs^g0u;AVTvftjtkCRn}KEd{fDT-iaxVrrVqbPKmXyxf*yxnGU#!!u3r$(OLk^`e4 z$e!FS%_bJqsIp`vtrb5;UWlK^>Kh%2HDfkI^sn^iq32mZu!$k8pK+&|mBslsAN}l% z{C-xn%$kAlvr8>6Asj9*QxMuK*T)osT|`L%t zos|aOrEL-+r@TLXwib65KRA3?y%jMG<=k%i4X?y~+*v<8K(H`;5!=%fNO;`T02xfL z8$SE;n9$MXir8l8YPfm(Y2wYb?iz_!Y~f2J8AIR_s$TcBFyX0)<-$j%ZWQmJKe`)^ z&Gcqu1;C(YKV5Zu=@kg7nYykg)OL0GuPLw zcT+z3WLBhfHNN_ZL@B3L-qyY%{h>4SD-W`8;6Iwoz`UpUjss*fRSN!Yf_)$vO6>_h zQ4JAi?)f2yWnG2g*W+PJaQIwE*5w?{L&;!VW($8++#f0CD~ zcus@g2_M?Ezd7xJ67`c)k%({P+TWbUrtI8jPGKb!(@#!CBEE`ie{&j(AW=U#HNJ=o z&2zs%sW0H>La^NIlO?@`_1#_2PD$4Fy!oA9XU{M3f%cqGF4N9Qx8CPt+Bn(fwx;=Q zcX3b=BYDEpjehn6$9cfkv-^bWgmK5_Gvy1}#q2=a@wkn)iYtd2fs-$Y|J=Zr;-Sdn zj@IxwLWeZ1vPrbBffqPQ5MBYuv=2_uETGeJ9i}$Ot+?$V`6qjaMi;KB(f+-<@wsi= z%+p#P^yXA1!dn@53B}Nj*z+gM=pVFaToPl40^ARA3twCPcs#rI`s+W#ft)#<5cd8?_r1yGOWK@lKW0_b z08Z`rHm~R3u-i*T;wWGZZcgvQ7JhW&tvB1(w@gwUZ;S5veTP^Y;fFG+<7qQqYVBU3 zk|y$qI%(tS`IJO&gcyA`33n&kv*~=gYs@kiyZwwuy6!W6$2f$%4bgzR7tQ15 zb_M!jE{2CIbb0wM8LNyv6>|i z9V}3OFoY^(lJvE^`$_OBp(BP8!Gl>J9v|#?i=)48l6=c*v#j=d@i|1jOk7=IVMsf@ z9Mi^}6Wg=as6B$%=JC-C?3*YD4|V$1k)JQt#}xf52YbMI+*e@gaemP^#ayhK^AiIN z+3U6ORT(G^>oa}83W_=u`aOPCuuQE@37k7TYwN2AXBdm%sX;^oh&DN%9D;+z`mw1@ zn;X-U8Mb|*i(Cva-HJmcJgIneO5gC0M|-#y9-;*P!Ab9MfN~8JIG@WH7sAw8&CV!!B14iGRz>~=< za}?mEIW!Cja2!E&1`W2Nps2y7vf1H0K=qk_GMOFYtT9`qtIRe&?MMys{EJ@55}n0z z;;;3o`=7$I5__Mp!}>ldb}*1CilJ_1jY}%~IqICcra1n|b`9OZk-mvGly~?D^8WZD zIYGz-vk)VBVGO#EFu0H*lsTs9%B|T1+MU&Ewduu_8M}qa7qn|SbgED)u+cr-xdU|>>tbV!cxHa$=L75w zK%u+|nX}Ifbok+9@6iT6N;>87XuN+keOg|PAI}XmFkn5zrjxs<@x$YEBB$VUK95+% z=m|5!Nj4(2v*vk47H=T@+oN;>mst30@q zFU!o{ovpDV0$>=?+9{cy*jH(va<6=r5DT6jf|+UW3u?9^CwBJ7hkJ-Gm?7liSpsyx zIC-9mf%os9;3K>638fuGH9Sg(wu%qiUvzs#Ed2%nA08%D;lwBYPUPg)7XT5GR(ynJM>1Cx{{Hr zb0(lQGoo%8h71Sqk1>4GID)CuFR>w;Y%ovfHXa)3fF?eAST@bm)ILsc106pz;k&10 zX>)1mJI4u>tNEJrAkP#rw^DoR+YJ{qYlg;u_${ z(#KG_h;1Mz+0r(AO$B4n6DZ&Ib;Ss+f}w}pALFuTXHHyG+mDb00%DX4sE|cQGveDe zJMlPo*yf3MxuoN3>G-;k3t0~&(|^Fx8Y?kPqR^+jGtjX1xK<|?@Pu~4jYhf&(;5A8 zrtY2C(O*7h)$k~oRGM5%lk23RRsMM&^i1oB+Z|7?r6-n?)TjSIH0aO^C`u24n63;% z-fZ-gAqL6AE^>LFJ1Hg@rr#gSlmG<;3osyt!T_f7<>I>``cXf z>2rQ1FwJM%{OA6K9k}xF&)*QoNo;RpMdr|2O!+=we^Ti2p+0u#+!Koz_jKy>c9~=? zZ*!X8@txfD*;EOnXITNi=*Yt#bD9ms_{7fG zbt{)`vgdL^I2*Y9=4n)a%go6ddm;7rP2pIL=q5_B+ttL|csh$4xP3Cg$I)*3P~x2u zg95J^M4gE>F)zc59J}stI1A>FL{F4u7to*J`Q0#qZW74Rh#8jgW~XpR{KC^shW~+= zO5R{X?MqH}$>L}>gOkwyiak4JNho0%>4D5?e!ObV>M58V=+%f33p2h2LAeBO1XBa_ zW6G%)A@lItuQPE%1S7a$I?F255!amwSsVa)B#!R87jyAWTR(O&s7)?tNL&Kz`v8oY zvO?ptMS&iBE)6kb<0q?4iCi9lN;Zg5p*L$m3?9c|j6-VfGcwhOBgbBj-D;&GG4dDz z<3W)DG<)!$0)MCNr5&bd7@2{nEGh_bQ6_mrJl2V(+?OvKc1cjqno%Md5kesWW1k$` zxk_U#5z3E2=u$;0K%#F5pzX)-c9>~C+P_KNN#dPe#j(Yvn_f?PuoTU)(*Vj#4Iq6e zKhJ)a861ER0I)3Oku73(p<*i=6#p^S7KAF-m@w+2=3<~t z@G(PFs6fh8$<1!(9g>`+_B9+m=Pa8%Q^U*x2zm-0Zzgf3t%y`D3C^%ws)~h6WBxd}P8B1>GDGRRTU-d3Cwrx=Cx)=YP8&_|**3O0@2c|{;11i^ z&F&>H+11Wj1Do2`hqsv~GM~{tSE+G_$>9-#q$VMBM0YNMY}}!wD`zk5q{pxhvUWnn z(xiNvYTw5j$2QjSb~@2kR%}hBU*_F6ZC$Z4=AqI8qPa$CU}7WY)t6a+Qu8+?{&#Tw z5xkMdJL#1Be+O8;j{xDRj75-(k+M`HIo+k{!BZl~)LhoD`0EZe{v z7ED|(Wmqe(va zrz%(Eltwy&HD_OBHJL+e5)F{K0A1!X4YavSFEkzr0n;E%A!#o&z@mMfs~aPp?Oo@e z8wp3JN04o&;;S1l0T^EmZ8|<9&fya%L!9X)MOCo0j+^BZnMl+$Hqirok-Vzq!3H%|ry_AL_s2khpCD@yK2)Zb>4DYzIEBs`e(~=h*LF2J4Yw*f` zCd9+;WbZ_F)lfFb?(npq0TH!>@16HExSIi$CH0VIRR=e|3m}|0OY)XqzD?ggx`9@xw0dc%TOi@LE#(qG*6ixZH34~ zV`gE(txmDIaeTUuaoxtbtX(t+H*4u%$7W9HQq|5s#>>WO5o=qHZ!jB~Ae7vPI;Jo! zA0PPzFbJw^k`(%@BhX9|no%(B9w z#`iFfR?7I%DpY>#b^s{tBIH0vIMs825fNuS-k-vM9FoWSLkc5Wjz@SX09Xo2o*dx7 zP*Yxss-kDBrALDZu7e7`d*i3kGJ7$GkI7p*gysv^9{3(`s&5h){d*ewse}|yVVK^vzKd`( z?oV)0aAVLMF}8(;K$pou`tcN7t)z~-rnhBS(#o1lbL>X-+yQI&70r9_0IL{*WSK)>&ET3 zZvA!IVsPm3WZQTE5l%Ey2YdJ0_4K{(Ne_Sh*;}u_{`$j*No*kt?nsZ{y9W;=!Wo6dsRDEVS<5Mt-N<_i_y7ILRa3~--?3{IOGfV z2;c9@dv9!Q9Y31P@pPlWYA?N=kd@>2-rU-{mR6qd_qzYyK-IUmww}&LM{nTqU~3C| zn$(2eEE#V#8E+54eqme$9;6YBXS!P?uY%}9Lp43m1}&~9XM*x9<*vD&cM4)AKE{#% z;vgmrMr_jY9b+!`9TPC}yide;j2#|m+u`MI5tD!eYxC`bmOpFI@(x%h%$SuaO9Q)B zizs#M5}yUTM5$-6#gc(WTT(R6)ky<+qK6oZ^@yGhp#nSfHpNvR?=*dkjDdpVgRkDA zEw*GeztvgH*T&me%o%u+PXQi4&~HH?NN3#db!@=il%t97sATDH01lWk<|UQ?(%vcL z=_lwc)kvPJR=nE$ugx{}b}0cuMD3eTw<*l4E^wC=hRQ{_dU8Dd0N=a8biKE|g)27a za50~ny#%-=(KG+0?<4$@k|VuJ823OWb0yU^ZzMVmY@5^gF+~3@$m8+J7`$4)2pfWT z*Vy!84txF2I+Jq!&p0WJxLrH609mw4MVo5b_z0+(p6op;YwJEXD`Cy2l~p*yK=`vc z86IiY+|WKntGhrSPAr`x4r-qHAqomjQRJ})IJaF-fGo253ER)uDq1m9 z!h#b-HRsYjur%6w*UqQ2fCAfk*UwiETnS>4-zS2uC+BMc3~R83x6fDo z9h*hixLA%r@)W3Exk~Q&wtnoZ zbZ#J60u_60AKzbNi=cYbEb(X_J|@xBfMdnH#dx>aE33l_8}MY~BPQE0soM* zD^_+c6dk_E5r&t~Y@dvO=IJx*6G?#1O8L@e1wsR#sy{F#kHLzsFexKru2pI+Wtdsc zj6OTxwqe`?ILuW?$#kE@}^`fwreT zKSEo-tNGHM4NLnaB~hVv<(-Ah7U;<-tW`2!1JdW#hD}YOBL}x}-*ev4!#CCiHn_cM z(Jj^x9S2KSoSr7U)OYvJzE3VmXO%k&0!GH5y$$VYq_j5F5n>cj%0TvXm zhG6UQ3`=Ns4C|`j+}n^?H6A-n4&WUauJGO|Pc^PHPvCrUuTQ7&cA}F4;;<6)puE@9 zFRhDh=owgwHva&!Wme!pHqWLQyzx)3hdN$3M)_WBm@ROstUP#+Uu&&gHtwlfRuAZ8 zJt8!W0yAJdF2J6#y#sxh(R@@+Ahb-!1p1zYj#=sDKw+hmK0FWX4nyugqU<>D5EQesZ*5j&HMN;GwXqUM=RtGGM@#9O5_M{E)XC zNopYC9`0Y~rpW}$+&{F#a<6M|cHSg{b)oXwjtZPh+mx!ID%aAQT~rQ7ADm_ijRA$= z^FP`U!?We%gQGnrq;?eCpzaAuc?Y3MJ9Sqan&qJYIHNEwmaKeT(!8B59W2YfZcG?A zK$#;-s0;T$Wxra2ya^BBo9Q8}5!3I_g&v=drELzd@Q2vJ)irlU@L?6@tqH{M zi?S>h0!myJ|8TB~)~_Nd%mu31jBk@b!gYFtR%;*g;@m;TEX^O8i@0*$n(tnbNtjBo z%DEpl0(l}K3+^h1{n#gXp`=2?f}JS`a(*?O`Lew=86gA$%J%mBDkGIw;hs93!{CQp0Sk(DE3)71F=&p=bAvm}7a?Se-BgkHP0giifMVbivi8WsjUf%Vxb_;gv+9kEe zh+y~3+iyY8|B}5kZ5F=_MoOf`)m5u-7r;C|7ZxlY6k=-w6B1bxuVPkjl7!5k4Xa>e zcTiz6xvfmx@<7dYV3?nW+JOvefmzBHfoQ~LZWt*l>g|JM}FM+dc`kx%JY&bNvlE_WX7o!wbAf13TI^csXLhhKS{^tBGP8 zjjg<%5MdI#?ex#x#I`%Ez)GW+NnqY4KQcDGU`$zPs}j zKBxH&p>X~-L4D^h3?bjD`y4N9wSFS~Qf7T_PP2{WRKXcEddi3|tON8WM39OwZ;FAm z9U@w2MK5gg;A@3ZwBw^wq06?Qv9Kz4GLQXJ zpe*@TihI@S9F_H{XR&v3F;DDw0Aq+9fTCcG6;MEdL&-b2!MZ{xvEKu*t9$pKZ4U_}ylfORs7I-#u^f9? zjcNY=DR?Zj9Y}M#^bd2UV8F4Zc`2NMOz+QN6pXhv2oQ?nfpbkr-k;%R;~1&R!(Rro zn&Xybtfjf~piJN*G0p(~FKrzeyZBD|M>})=5KvRWZ1M~b*ooXYX5PlJ6+unoqIQ(x zqtU^`ol!OWN-#AWQEdpl!g&*07eriD4sR$lLdX-s$$M=04Z2oh))d`daA&J?dG>Ws zIvoR5hm6Znq91LLrddk3UPu?GpCUkUcq-o?;e!pB7&hQmn`5pA_6?Xp^loNKThUdH z`HDV)zKNT=#&m-X2fcP*`cFUVxBt9&JDapI$FY2f<8Rpc#1pC@0%;CTV{D$yGgE@W^6U|sC-2jX zY^jt{momBN=t4LSl`+|Nuni{n^YYdO-r`pHK8uwS*An~>&Q!56!(;ncrYvL50ychQ zN#qE0wHAdBZ@fbb6ZKu{Vn#!t2vYNrX58AFV#D;E0Ms;IoW<5$10$64<_-)t2md?n zggiNd+lB5OKEijo2dw5B5^_UubKcir&`E|&Q;EL}OE>084mhFRIAkTIRnyW9E z_g32Vo;)kfPad*j_!4?`TXzc>MW^jHA5OZZ`A|pkRbF$-mAf?vm~B{eSkMjf4VZ!p z?zdnyu-D}U=+S+E*cA)Xoj!Ht%>~V#;XGSy?Hrh-R*A}~Xxfb(Z?n?eTdWF_!o3v> z+VN+6lzkr_Wi_@McU$N+?zix_e8&X@`7y{47o}aLA$rvv^H=9^x1`I*DXl-iDUWe_ zhEN2YOToPrxOyU8!S6KTkSg-7q^Ai-K>Z1aCy+P6+a7Y>PaA1H-AjLt=f6s?r@v0= z2cIAgbw8b;#+7t{UmS$N(?fedLaR7BW-UBH%GH!!!dVe7pSCuwrz>fOyb<8QQMU9N zYFtTo@%}8`Ldp?pKSIhBG#I^JK??T5y&u8KF>Rwf$HRYD)1}c()H*?L93k$XFvzy? zi*qh0!&^J97`z;%Mo2tdLBAv9AtoN_2l!n_-@7P@6Vuh$F`5Ur(F)G(;a?d=w6)`{ zTt(hlST7hws~cyPuIDIl7rj2j0er$fZy~)s+$M2H?36iQ+#VqNblG@I&lex@mz^oj z^|s9tsj9)^&zHg4*89!D%UR;=?BU<+0`Ru=E)4I_mf?acHdereTYm6mXRf=(nz?)F zdw}WGcvSk`4LlJ>99_eze&6Z)=jj(Iz5G3_ z2xR*hsbV-dw1_e+Px2tMdx*FOG3YBOdx*3X{OvRDK9EmQo;^t5&qQ(2}E!VrTsu@nW*%#NQcb(0FzOVH~q;l!(k0!p=t-yO-Q*YIi)!Ji#H0W z^o{Qs+`B3L;;io@Tbh|J88gH7H-DgDdHFPYWaJigfr>Ocd^= zKnf=8`M>$igLB*F|EAGF7eftj3zUnPsd{BT1$JwdQgdZAd4v3jGa@!j?o%T>*mSgN zb^cIw>T-OpTLGQ?A#um!%~L2khEkh&niv^T zPYwMv)1<4cH~NdrqgCs5gb6ch{{%(DZj^4ux#iN`M-JRXHiM$oU2DE9EY9HsB`73G zSvS&k{6(OWVV^@OT(kurSNot2XD4Q~U2#&g+SUsy<}V)fx6&KGInaN&iea~$he#y~ zyQcd!M`;+7=@l+3To?)T&Cp7EM{U(Jy>`Bqe$XoP(g#LB?MHy+5KMzgKA%VirzyR% ziAgKevq%#x(?q5gdQTD2T}mgpL?7h;qWpBTU0l+?io4*@xcolKxBZcDgE^skq*Y@ljf#vWu=O~e_hc$wI4Ye7(ygr+h-|8IwZD@^iyU`E560A8B&;)y!fq-_7X z;HuDgceoGfUCSnAXte417dNp0$oeVqZi3=ClQey)3rJOr#X?5Wm9{J;ncd1=0TKo^ z4MECdQhVqzq7{e^SNU4X-OiA>6#oX7G22Kle}GoT=oMGZrSwxNj3D((e`cBWqa0 zW7}N|Wt@Q2$6mM6@1uzFQn%LbO226Ffw1{yT5K`ZwEFx%Yy$CA;K*$cu+~IMvc5~j zng>&)_l5g`5hvBadK&v}wrJoKs=YDLOu}OdiGsGiRD_uDGIXHhZ7zTVD4-E@czdARl485cIgEDma+SfiigDMri9 zs#u@6OYNT4)CW>P*y6kYPKT3U?bhEao2@k>IfBWwL)k@ zjjmSn^Kl{18(>fOm7vi%FElGo-kdwrmBCH=;4$F&xxCi{>%GM!K ze)aYUao_WTw%;CVJC?BMK<0CeU(~x%*ZX6@ysQrQ(NX7*Xv@*hMt@Q*SfnY-lQ(6_ zUld!9`ZecX{;qb9T&zKJu8oglV423dlo`UL^l)98f8+8Wr?k4LhsC>SfdL=Q#>eQX z_30IwJ&U%~){i@a{nG04HkaX8`*xQuV@-8h31u%B;n}UEZ;^JXGEq$o#Y+BNL5E10V24hZg02vT%;#@}6Dz$* z1-#xEAw`q>a3178uf6BQ*ME`HUz{}}axe09w!)`ceyMI)M0W&E3Smn3C0-pVqBu?`62PUBFKxvX=3oIyEi+9*sY)ZhRg9 zv?j>1xp(IjY5ecC^nLuhi~sb5&w1c!6aPNMf3JZ?Uqf#P{zQI8)$ujpfd5^(ya#%T zw$e-S^!;?{mGaEiFMYFpM~QEBQ`q;VZx5wzLf0WY>FfOa=a@hJ60-Dic}C7R>o>xi zE~Brne;<2Yze<dV%>2Ap4f zybqG*%WGe7yx}moILsS4X6xcGZ#Z8g#b3O3jM#B~LHdZ=PTv=-O>I8ROhE4Y$mgZa z5>!MQ%bwy3&e{dKOCo0F z2CMffg;nN~|6{!G7LAaYYwb*KE$<_30$P%OPRt9JW^uk-J8-+ZCe(ds^%oactPMth zqVIPuR=ZjgZ(potrs&m+)f-q#uNHkGYiy>A%d(W`L^f3^S#Ur-TzWwo4^cg}Ld_jD z9{GjJJWnC>N^ohxD`|tXT~gEsaQq#7+XC${!iT;F+2K#{Ed4Wmi&{@_MSlMi)M#To zf_E_Fv|dx_V;-6t`Q4U3 za141q?uMRvaSi%v`k?vmC+X5JxNk~Mt~Jy3WZVN(Y2AX(sU z0qvA^R%W%LooiP-*Ej&lUit@6`rd2DYW~8 zz$V%4deAA9%pS9&5eSqiRtSK}! z?bgRd3fCr})+3=WPHe!wO?qr2-RK(%o0Q`vy$U+wskK6CX;QDuGEeAZ-1gOuA#gAt7XKV^&9t+dV(rU$%$7*Sy|@=K9wLSATPaTkAroWEB=eT=g!*tufvA762%7Ux(jv&v`uPXT z67aEoyE70GsE@gRe?E>5!lV^{lWdH+8o@eWCDNEF+%6pFRq7drA)ti{_{diB0V z;nn@XideP(o{o2}*|uUmi)BZ?RZ=z-O&o3Irg0oN z$*TY7!;sdhrChCKQs;rJ7S4k`4n(WOSUHN?cq#ZIZ}^vIgL;u2{OFVjF4lk1%Lx1@ zU~RH+l+O80^RwZ&7|O`vsq;~Dm<`AGKL6rHcX}J0YBRsTH9k0RuiV0h?MA3nlxkFhrXJpBOwJ+=R?;_nSmJEw3Dsn>A;o&Ws+ ztLOleKqzrG?xpgUE@Qi3qiyS#m@pbzlulfMu`Tr2srRZW$OmXitRM_!wjJ)LboqO5 zNc{*7sqdn+$Yca#ghnt=kSXNh(l?n~9}G#C{{r=X9~&xv;V`EkeAk3Kk1|Zm%#bO2 zjMlWF$!RY~S}wixT_XfKbJDlJJ6I+y*wFmUuyhX)Q3ognSK%|=Z7FhimZj5DSR;|A zmx`H?zWF0J!nyislBHLFgc>?|8Ufzv+dsk>7^qH);(}pGZc6?LziK(X@*`ke?s&Qw z_&$fK!+JF1(szDjGsHKBFtC*kE3XZgFF)$8>ms;Vj9v%n!ChJe-n2oqvCbTpqMO@O zC9-5Wk*${`y7~-kd5S^PLL>5I<&#~1hJ{2+B+{`s=D$ujxRAQAV2AA|i*m4ZnK+cjpC+q`?js z1J&)EGsrMW>h7(M!IW48^wKaUN7%w#KW_akTA)(tqSO^zBC*rZ?o<{(buF$#cd4~5 z=s4dB_V(vhd{z3^Ge9op`salKek01Jm+Snr;P`HM$y+I!p8xA%vRa0q;4LS%Ot_pP z^rW1}C(l~E)I{Rs)H-M;mlT(-k>?j%#ZyWzj%KyPE3|Qt>tR8!fg`f>QAa z+pPgKj}b;IoV9%Gp0jz-^n!!@eHxJukrPg3ckz@4qZW7hug}^7SwunghDSvG^Qfrk zi*!bNH&}Kd5-|bFB{FUTk#*+<%R#b`HJZ|PnqBfuPBc=cdS{JT;+&+u$w34$5Rf(1 zM$`7Y?;G?r-y}lGXBFzh^`h{jaw|d}$7KZlEYK=AYI=Z{gt5CdzGWq1{oi5UOF*1Vlvg5w-HU#QR1L}I_Qr6#~3TIv0+S-o04R^{WiW7vQLJ`HH7g+d}!H9Dx_FrGksl_%%Tv~ z^I%n6OnjysJ_lJYn5m%=ErWcx{bm#kPAaM<=UR&KvR;BK1MaWA4jU^y;Ox_`;2hUn zv{rt&u&6PHT2~gm#3gw?`mpHq?Pqmuz$4t74_*sC1Ei6`V-z4W4bGJ_}5a^U`v;jsaL~&HzO( zoH_c@NMCj7zH}v({_(Ke<(=D*%T($(f8CaOc%cOA)q(^t-B?yL0(3id-d$FQLWwh7 zZ&nt5fgbO)#zbf|SKwRhl< zpt=Z5ZLn?^rurbvxnS}z$lwPBCaSUbfRn}8N!OOmQPgiRV5^Z>=DIJ|NImy`|JfcW zjv8qwE@cDubq2*~TS(oAi4BXrmL(Rk%4MPW#&UNGh5aY!l4>SZzU8IKP`MvZyX7@| zmZJCv0PoVb2sWKqpQ1!4tc**iLk=#c*Esnt^l_n8L=JILrpvd$=zoC4nZEYNbpBnw zj|gHS;B}v_T3TArw2vY}v>q=I{3<7`Z8tstZ_ctkzFhcKtR7k; zTut)+FE)s3W0j!xIYatpcXg##`&{7C*F~@C_I(Vt4Z?|oL;WzEST#Df6r2ojtZkr` zI!LIdbzOf!q>_`$|Ff{Amv!ld+#%^TPI1@Xmu46;$%rL8I2xk+ZWpS7nz-kVgfIhK z@LImRQN1l+r6jCQn9~nhF3gc~5f;rsvM_J(UWPApuUkjK794-6w_^|neXwUrw(dc^ zSlFZ@){fmf3*&o9mq_W9YD6bjVvs&vR_o$0 z2i}IlP)bi2&lfLkI{Iscj6NYoO_E0y?=g9DJ7qOtlT_E6?KMr#V#EfJGN^RvLBuJP zO^Z6hseoP(9@7}Dg^H&UL@G&<1Vs32#!*@XGJJ8>syss!$|C73uG_V+4l&Oj$YLX+ zs(4YuM@4o>XAqecdbP_G`~HA-9LvlYg-8_VQgOT>u6YvkJJdVnR(+dU%QETIq!bp0 zBYHXT8ovA7+l^I>XAf*7b{m4|qtyX+hPXzu#`cb7Vn&LI99d*EA=``U6Z1|?a*i}N zB|;l|!r$COOVkJ=s3b~BxTvNWwrUTvyy9I|J(i+BUUU=`8%!-`9y9w*ij{Ki3p*j> zVFRBSi#y8-Mar8?HcCxFR7LZZltHGdI*}8?3jIP8@@=u_|6vt;JPsv=Y$DS8yRx+` zYIi``MXgThD0W@Gw#2X420%*)wGJ(^Vw)i!y2OtmJpb=0SSi?koPEj){)$UB>+b)- z!CiW@_2Lnn$s3;kFUwfWmv5Mk`Z}PPXqJjxGpBmt^nDy$27M|jl)!_|5-KFrxbq4# zD|MvLW&2LF;Gr$wz2Xt%bUnw7k7e}*$7kFx*9iNGCyM>x)AWdv@T6Fff<%}d_4oPT z53Qh9&=sci)d;a|wU3T6kf9axZ_A2l8~UvP?{~VxxfeXDaR|ih6t32eZqTrTJTPs^b z9D$tq-z`V*MH+iC=q(bnLhjy|Lv9T{X^=YOQq(^GcSHQ4ZstWTzq-wf%hP{TxI^90 zZv}7*t|1Tc#u?yTaCuOJljaFhT(Ch}o6MV~^s5qBb!+(2jm>V+P^C-CBqT37z~T+3 zA9d0LP(-~*VqvD$kX1Cv%e7uKwN<~r+h5}zqiN3g_xa$*7=1YvLg{rjFZ>^tFV%}T z`PCO}f3K`swD6SBaY!_e;DV#0ke4=7eWxLszAZD3;R)J#^Qf_J5?ypC#&yxjQmEil zs57W4y-e>Hrr~CyI_crXV8jk7N+AH?>Q3p~aCxGSYX3O0J=v2qb;06?R_h zyD}MM+8hqI{7QQOCgHt42a$fClD|DGaTm~*BM8GKnl@flA0OGcbqFRQjb)m&Z>n51 zE~Kzjm4X@R9x~uj@AR^c1F}3Y`;E{9(<{V(Ii8ok$@=vXt@H{v zbe@(vGSP7b(|QZNln~SrS~^WDKv@YNVd!qnU*7{dFMWO07FPQFuG#WLZJgB|HWFGj zIW+cAIEKyB)gB(eGr#=-wo1jSssJ1kNWxVAzYmPy;l|mUl_) z(wTam0T7&j{Rx_+A*C~1LtO_3y3U^(6RqHrtAy)+W{0&oh+?GGSQ?svOQ)R7S{r7m zSR7q+wd6j8o`Ao&a=0qvpgCO$Q?zcM{d)etFYCG%s4oJHLL$dN4>$X@{V0o7qJr}| zg!mvcim{ePIIHGB`E_EjfKJC=y8+f8#Ihj(+*d-8(#}O1-7{7~FFjdEe;+~!AxEbi zr-STQ_zhUjFC!_gx(17(#qolSEw9PZ3Rb+p^#Wy+6JUb)+`6TT_2|SYz8) z?INIz?H#1L{Bw-s7e3me>Ow*KHaBSF6nmwbecp$zw)}|e@aZoLilTO)v){G7G6>_} z^n0vTGI`(6(`SpDA!T~7|52C5!WUm+uDkS1F~t!oP(=$-ju(lM8WJ##U-U;v0T<2_ z*^S|e@6ywmbG*&gsVJ5!k*RG(uviUCt#Z`*S&idC9L>MV2*UQ}$cj#QW}iP?1BPpT z=d3ZcCSmC*yc(WCvWGZ z4l{uMH77Moi0CiMBeqAol`KqF55c8}j(||zX0N3^?SdB+>omN!eYABZ4}HC)evtk4 z_0sNZRAfvX5wAtz!k1k}7^Qd;Mj}y87S + Represents a reader that provides fast, non-cached, forward-only access to serialized Json data. + + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized Json data. + + + + + Initializes a new instance of the class with the specified . + + + + + Reads the next JSON token from the stream. + + true if the next token was read successfully; false if there are no more tokens to read. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Skips the children of the current token. + + + + + Sets the current token. + + The new token. + + + + Sets the current token and value. + + The new token. + The value. + + + + Sets the state based on current token type. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases unmanaged and - optionally - managed resources + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Changes the to Closed. + + + + + Gets the current reader state. + + The current reader state. + + + + Gets or sets a value indicating whether the underlying stream or + should be closed when the reader is closed. + + + true to close the underlying stream or when + the reader is closed; otherwise false. The default is true. + + + + + Gets or sets a value indicating whether multiple pieces of JSON content can + be read from a continuous stream without erroring. + + + true to support reading multiple pieces of JSON content; otherwise false. The default is false. + + + + + Gets the quotation mark character used to enclose the value of a string. + + + + + Get or set how time zones are handling when reading JSON. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Get or set how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Get or set how custom date formatted strings are parsed when reading JSON. + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Gets the type of the current JSON token. + + + + + Gets the text value of the current JSON token. + + + + + Gets The Common Language Runtime (CLR) type for the current JSON token. + + + + + Gets the depth of the current token in the JSON document. + + The depth of the current token in the JSON document. + + + + Gets the path of the current JSON token. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Specifies the state of the reader. + + + + + The Read method has not been called. + + + + + The end of the file has been reached successfully. + + + + + Reader is at a property. + + + + + Reader is at the start of an object. + + + + + Reader is in an object. + + + + + Reader is at the start of an array. + + + + + Reader is in an array. + + + + + The Close method has been called. + + + + + Reader has just read a value. + + + + + Reader is at the start of a constructor. + + + + + Reader in a constructor. + + + + + An error occurred that prevents the read operation from continuing. + + + + + The end of the file has been reached successfully. + + + + + Initializes a new instance of the class. + + The stream. + + + + Initializes a new instance of the class. + + The reader. + + + + Initializes a new instance of the class. + + The stream. + if set to true the root object will be read as a JSON array. + The used when reading values from BSON. + + + + Initializes a new instance of the class. + + The reader. + if set to true the root object will be read as a JSON array. + The used when reading values from BSON. + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + + A . This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Changes the to Closed. + + + + + Gets or sets a value indicating whether binary data reading should compatible with incorrect Json.NET 3.5 written binary. + + + true if binary data reading will be compatible with incorrect Json.NET 3.5 written binary; otherwise, false. + + + + + Gets or sets a value indicating whether the root object will be read as a JSON array. + + + true if the root object will be read as a JSON array; otherwise, false. + + + + + Gets or sets the used when reading values from BSON. + + The used when reading values from BSON. + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating JSON data. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Creates an instance of the JsonWriter class. + + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a Json object. + + + + + Writes the end of a Json object. + + + + + Writes the beginning of a Json array. + + + + + Writes the end of an array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the end constructor. + + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + A flag to indicate whether the text should be escaped when it is written as a JSON property name. + + + + Writes the end of the current Json object or array. + + + + + Writes the current token and its children. + + The to read the token from. + + + + Writes the current token. + + The to read the token from. + A flag indicating whether the current token's children should be written. + + + + Writes the specified end token. + + The end token to write. + + + + Writes indent characters. + + + + + Writes the JSON value delimiter. + + + + + Writes an indent space. + + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON without changing the writer's state. + + The raw JSON to write. + + + + Writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes out the given white space. + + The string of white space characters. + + + + Sets the state of the JsonWriter, + + The JsonToken being written. + The value being written. + + + + Gets or sets a value indicating whether the underlying stream or + should be closed when the writer is closed. + + + true to close the underlying stream or when + the writer is closed; otherwise false. The default is true. + + + + + Gets the top. + + The top. + + + + Gets the state of the writer. + + + + + Gets the path of the writer. + + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling when writing JSON text. + + + + + Get or set how strings are escaped when writing JSON text. + + + + + Get or set how special floating point numbers, e.g. , + and , + are written to JSON text. + + + + + Get or set how and values are formatting when writing JSON text. + + + + + Gets or sets the culture used when writing JSON. Defaults to . + + + + + Initializes a new instance of the class. + + The stream. + + + + Initializes a new instance of the class. + + The writer. + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Writes the end. + + The token. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes raw JSON where a value is expected and updates the writer's state. + + The raw JSON to write. + + + + Writes the beginning of a Json array. + + + + + Writes the beginning of a Json object. + + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Closes this stream and the underlying stream. + + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value that represents a BSON object id. + + The Object ID value to write. + + + + Writes a BSON regex. + + The regex pattern. + The regex options. + + + + Gets or sets the used when writing values to BSON. + When set to no conversion will occur. + + The used when writing values to BSON. + + + + Represents a BSON Oid (object id). + + + + + Initializes a new instance of the class. + + The Oid value. + + + + Gets or sets the value of the Oid. + + The value of the Oid. + + + + Converts a binary value to and from a base 64 string value. + + + + + Converts an object to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets the of the JSON produced by the JsonConverter. + + The of the JSON produced by the JsonConverter. + + + + Gets a value indicating whether this can read JSON. + + true if this can read JSON; otherwise, false. + + + + Gets a value indicating whether this can write JSON. + + true if this can write JSON; otherwise, false. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified value type. + + Type of the value. + + true if this instance can convert the specified value type; otherwise, false. + + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified value type. + + Type of the value. + + true if this instance can convert the specified value type; otherwise, false. + + + + + Create a custom object + + The object type to convert. + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Creates an object which will then be populated by the serializer. + + Type of the object. + The created object. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets a value indicating whether this can write JSON. + + + true if this can write JSON; otherwise, false. + + + + + Provides a base class for converting a to and from JSON. + + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a F# discriminated union type to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts an Entity Framework EntityKey to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts an ExpandoObject to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets a value indicating whether this can write JSON. + + + true if this can write JSON; otherwise, false. + + + + + Converts a to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from JSON and BSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts a to and from JSON and BSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Converts an to and from its name string value. + + + + + Initializes a new instance of the class. + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Gets or sets a value indicating whether the written enum text should be camel case. + + true if the written enum text will be camel case; otherwise, false. + + + + Gets or sets a value indicating whether integer values are allowed. + + true if integers are allowed; otherwise, false. + + + + Specifies how constructors are used when initializing objects during deserialization by the . + + + + + First attempt to use the public default constructor, then fall back to single paramatized constructor, then the non-public default constructor. + + + + + Json.NET will use a non-public default constructor before falling back to a paramatized constructor. + + + + + Converts a to and from a string (e.g. "1.2.3.4"). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing property value of the JSON that is being converted. + The calling serializer. + The object value. + + + + Determines whether this instance can convert the specified object type. + + Type of the object. + + true if this instance can convert the specified object type; otherwise, false. + + + + + Specifies float format handling options when writing special floating point numbers, e.g. , + and with . + + + + + Write special floating point values as strings in JSON, e.g. "NaN", "Infinity", "-Infinity". + + + + + Write special floating point values as symbols in JSON, e.g. NaN, Infinity, -Infinity. + Note that this will produce non-valid JSON. + + + + + Write special floating point values as the property's default value in JSON, e.g. 0.0 for a property, null for a property. + + + + + Specifies how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Floating point numbers are parsed to . + + + + + Floating point numbers are parsed to . + + + + + Instructs the how to serialize the collection. + + + + + Instructs the how to serialize the object. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Gets or sets the id. + + The id. + + + + Gets or sets the title. + + The title. + + + + Gets or sets the description. + + The description. + + + + Gets the collection's items converter. + + The collection's items converter. + + + + The parameter list to use when constructing the JsonConverter described by ItemConverterType. + If null, the default constructor is used. + When non-null, there must be a constructor defined in the JsonConverter that exactly matches the number, + order, and type of these parameters. + + + [JsonContainer(ItemConverterType = typeof(MyContainerConverter), ItemConverterParameters = new object[] { 123, "Four" })] + + + + + Gets or sets a value that indicates whether to preserve object references. + + + true to keep object reference; otherwise, false. The default is false. + + + + + Gets or sets a value that indicates whether to preserve collection's items references. + + + true to keep collection's items object references; otherwise, false. The default is false. + + + + + Gets or sets the reference loop handling used when serializing the collection's items. + + The reference loop handling. + + + + Gets or sets the type name handling used when serializing the collection's items. + + The type name handling. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + The exception thrown when an error occurs during Json serialization or deserialization. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Specifies how dates are formatted when writing JSON text. + + + + + Dates are written in the ISO 8601 format, e.g. "2012-03-21T05:40Z". + + + + + Dates are written in the Microsoft JSON format, e.g. "\/Date(1198908717056)\/". + + + + + Specifies how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON text. + + + + + Date formatted strings are not parsed to a date type and are read as strings. + + + + + Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . + + + + + Date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed to . + + + + + Specifies how to treat the time value when converting between string and . + + + + + Treat as local time. If the object represents a Coordinated Universal Time (UTC), it is converted to the local time. + + + + + Treat as a UTC. If the object represents a local time, it is converted to a UTC. + + + + + Treat as a local time if a is being converted to a string. + If a string is being converted to , convert to a local time if a time zone is specified. + + + + + Time zone information should be preserved when converting. + + + + + Specifies formatting options for the . + + + + + No special formatting is applied. This is the default. + + + + + Causes child objects to be indented according to the and settings. + + + + + Instructs the to use the specified constructor when deserializing that object. + + + + + Instructs the to deserialize properties with no matching class member into the specified collection + and write values during serialization. + + + + + Initializes a new instance of the class. + + + + + Gets or sets a value that indicates whether to write extension data when serializing the object. + + + true to write extension data when serializing the object; otherwise, false. The default is true. + + + + + Gets or sets a value that indicates whether to read extension data when deserializing the object. + + + true to read extension data when deserializing the object; otherwise, false. The default is true. + + + + + Specifies the settings used when merging JSON. + + + + + Gets or sets the method used when merging JSON arrays. + + The method used when merging JSON arrays. + + + + Specifies how JSON arrays are merged together. + + + + Concatenate arrays. + + + Union arrays, skipping items that already exist. + + + Replace all array items. + + + Merge array items together, matched by index. + + + + Specifies metadata property handling options for the . + + + + + Read metadata properties located at the start of a JSON object. + + + + + Read metadata properties located anywhere in a JSON object. Note that this setting will impact performance. + + + + + Do not try to read metadata properties. + + + + + Represents a trace writer that writes to the application's instances. + + + + + Represents a trace writer. + + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + The that will be used to filter the trace messages passed to the writer. + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + + The that will be used to filter the trace messages passed to the writer. + + + + + Get and set values for a using dynamic methods. + + + + + Provides methods to get and set values. + + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Initializes a new instance of the class. + + The member info. + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Contract details for a used by the . + + + + + Contract details for a used by the . + + + + + Gets the underlying type for the contract. + + The underlying type for the contract. + + + + Gets or sets the type created during deserialization. + + The type created during deserialization. + + + + Gets or sets whether this type contract is serialized as a reference. + + Whether this type contract is serialized as a reference. + + + + Gets or sets the default for this contract. + + The converter. + + + + Gets or sets all methods called immediately after deserialization of the object. + + The methods called immediately after deserialization of the object. + + + + Gets or sets all methods called during deserialization of the object. + + The methods called during deserialization of the object. + + + + Gets or sets all methods called after serialization of the object graph. + + The methods called after serialization of the object graph. + + + + Gets or sets all methods called before serialization of the object. + + The methods called before serialization of the object. + + + + Gets or sets all method called when an error is thrown during the serialization of the object. + + The methods called when an error is thrown during the serialization of the object. + + + + Gets or sets the method called immediately after deserialization of the object. + + The method called immediately after deserialization of the object. + + + + Gets or sets the method called during deserialization of the object. + + The method called during deserialization of the object. + + + + Gets or sets the method called after serialization of the object graph. + + The method called after serialization of the object graph. + + + + Gets or sets the method called before serialization of the object. + + The method called before serialization of the object. + + + + Gets or sets the method called when an error is thrown during the serialization of the object. + + The method called when an error is thrown during the serialization of the object. + + + + Gets or sets the default creator method used to create the object. + + The default creator method used to create the object. + + + + Gets or sets a value indicating whether the default creator is non public. + + true if the default object creator is non-public; otherwise, false. + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the default collection items . + + The converter. + + + + Gets or sets a value indicating whether the collection items preserve object references. + + true if collection items preserve object references; otherwise, false. + + + + Gets or sets the collection item reference loop handling. + + The reference loop handling. + + + + Gets or sets the collection item type name handling. + + The type name handling. + + + + Represents a trace writer that writes to memory. When the trace message limit is + reached then old trace messages will be removed as new messages are added. + + + + + Initializes a new instance of the class. + + + + + Writes the specified trace level, message and optional exception. + + The at which to write this trace. + The trace message. + The trace exception. This parameter is optional. + + + + Returns an enumeration of the most recent trace messages. + + An enumeration of the most recent trace messages. + + + + Returns a of the most recent trace messages. + + + A of the most recent trace messages. + + + + + Gets the that will be used to filter the trace messages passed to the writer. + For example a filter level of Info will exclude Verbose messages and include Info, + Warning and Error messages. + + + The that will be used to filter the trace messages passed to the writer. + + + + + Provides an interface to enable a class to return line and position information. + + + + + Gets a value indicating whether the class can return line information. + + + true if LineNumber and LinePosition can be provided; otherwise, false. + + + + + Gets the current line number. + + The current line number or 0 if no line information is available (for example, HasLineInfo returns false). + + + + Gets the current line position. + + The current line position or 0 if no line information is available (for example, HasLineInfo returns false). + + + + Specifies how strings are escaped when writing JSON text. + + + + + Only control characters (e.g. newline) are escaped. + + + + + All non-ASCII and control characters (e.g. newline) are escaped. + + + + + HTML (<, >, &, ', ") and control characters (e.g. newline) are escaped. + + + + + Represents a raw JSON string. + + + + + Represents a value in JSON (string, integer, date, etc). + + + + + Represents an abstract JSON token. + + + + + Represents a collection of objects. + + The type of token + + + + Gets the with the specified key. + + + + + + Compares the values of two tokens, including the values of all descendant tokens. + + The first to compare. + The second to compare. + true if the tokens are equal; otherwise false. + + + + Adds the specified content immediately after this token. + + A content object that contains simple content or a collection of content objects to be added after this token. + + + + Adds the specified content immediately before this token. + + A content object that contains simple content or a collection of content objects to be added before this token. + + + + Returns a collection of the ancestor tokens of this token. + + A collection of the ancestor tokens of this token. + + + + Returns a collection of the sibling tokens after this token, in document order. + + A collection of the sibling tokens after this tokens, in document order. + + + + Returns a collection of the sibling tokens before this token, in document order. + + A collection of the sibling tokens before this token, in document order. + + + + Gets the with the specified key converted to the specified type. + + The type to convert the token to. + The token key. + The converted token value. + + + + Returns a collection of the child tokens of this token, in document order. + + An of containing the child tokens of this , in document order. + + + + Returns a collection of the child tokens of this token, in document order, filtered by the specified type. + + The type to filter the child tokens on. + A containing the child tokens of this , in document order. + + + + Returns a collection of the child values of this token, in document order. + + The type to convert the values to. + A containing the child values of this , in document order. + + + + Removes this token from its parent. + + + + + Replaces this token with the specified token. + + The value. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Returns the indented JSON for this token. + + + The indented JSON for this token. + + + + + Returns the JSON for this token using the given formatting and converters. + + Indicates how the output is formatted. + A collection of which will be used when writing the token. + The JSON for this token using the given formatting and converters. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an explicit conversion from to . + + The value. + The result of the conversion. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Performs an implicit conversion from to . + + The value to create a from. + The initialized with the specified value. + + + + Creates an for this token. + + An that can be used to read this token and its descendants. + + + + Creates a from an object. + + The object that will be used to create . + A with the value of the specified object + + + + Creates a from an object using the specified . + + The object that will be used to create . + The that will be used when reading the object. + A with the value of the specified object + + + + Creates the specified .NET type from the . + + The object type that the token will be deserialized to. + The new object created from the JSON value. + + + + Creates the specified .NET type from the . + + The object type that the token will be deserialized to. + The new object created from the JSON value. + + + + Creates the specified .NET type from the using the specified . + + The object type that the token will be deserialized to. + The that will be used when creating the object. + The new object created from the JSON value. + + + + Creates the specified .NET type from the using the specified . + + The object type that the token will be deserialized to. + The that will be used when creating the object. + The new object created from the JSON value. + + + + Creates a from a . + + An positioned at the token to read into this . + + An that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + Creates a from a . + + An positioned at the token to read into this . + + An that contains the token and its descendant tokens + that were read from the reader. The runtime type of the token is determined + by the token type of the first token encountered in the reader. + + + + + Selects a using a JPath expression. Selects the token that matches the object path. + + + A that contains a JPath expression. + + A , or null. + + + + Selects a using a JPath expression. Selects the token that matches the object path. + + + A that contains a JPath expression. + + A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression. + A . + + + + Selects a collection of elements using a JPath expression. + + + A that contains a JPath expression. + + An that contains the selected elements. + + + + Selects a collection of elements using a JPath expression. + + + A that contains a JPath expression. + + A flag to indicate whether an error should be thrown if no tokens are found when evaluating part of the expression. + An that contains the selected elements. + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Creates a new instance of the . All child tokens are recursively cloned. + + A new instance of the . + + + + Gets a comparer that can compare two tokens for value equality. + + A that can compare two nodes for value equality. + + + + Gets or sets the parent. + + The parent. + + + + Gets the root of this . + + The root of this . + + + + Gets the node type for this . + + The type. + + + + Gets a value indicating whether this token has child tokens. + + + true if this token has child values; otherwise, false. + + + + + Gets the next sibling token of this node. + + The that contains the next sibling token. + + + + Gets the previous sibling token of this node. + + The that contains the previous sibling token. + + + + Gets the path of the JSON token. + + + + + Gets the with the specified key. + + The with the specified key. + + + + Get the first child token of this token. + + A containing the first child token of the . + + + + Get the last child token of this token. + + A containing the last child token of the . + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Initializes a new instance of the class with the given value. + + The value. + + + + Creates a comment with the given value. + + The value. + A comment with the given value. + + + + Creates a string with the given value. + + The value. + A string with the given value. + + + + Creates a null value. + + A null value. + + + + Creates a null value. + + A null value. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Indicates whether the current object is equal to another object of the same type. + + + true if the current object is equal to the parameter; otherwise, false. + + An object to compare with this object. + + + + Determines whether the specified is equal to the current . + + The to compare with the current . + + true if the specified is equal to the current ; otherwise, false. + + + The parameter is null. + + + + + Serves as a hash function for a particular type. + + + A hash code for the current . + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format provider. + + A that represents this instance. + + + + + Returns a that represents this instance. + + The format. + The format provider. + + A that represents this instance. + + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. + + An object to compare with this instance. + + A 32-bit signed integer that indicates the relative order of the objects being compared. The return value has these meanings: + Value + Meaning + Less than zero + This instance is less than . + Zero + This instance is equal to . + Greater than zero + This instance is greater than . + + + is not the same type as this instance. + + + + + Gets a value indicating whether this token has child tokens. + + + true if this token has child values; otherwise, false. + + + + + Gets the node type for this . + + The type. + + + + Gets or sets the underlying token value. + + The underlying token value. + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class. + + The raw json. + + + + Creates an instance of with the content of the reader's current token. + + The reader. + An instance of with the content of the reader's current token. + + + + Indicating whether a property is required. + + + + + The property is not required. The default state. + + + + + The property must be defined in JSON but can be a null value. + + + + + The property must be defined in JSON and cannot be a null value. + + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets the object's properties. + + The object's properties. + + + + Gets or sets the property name resolver. + + The property name resolver. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the ISerializable object constructor. + + The ISerializable object constructor. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Get and set values for a using dynamic methods. + + + + + Initializes a new instance of the class. + + The member info. + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + Provides data for the Error event. + + + + + Initializes a new instance of the class. + + The current object. + The error context. + + + + Gets the current object the error event is being raised against. + + The current object the error event is being raised against. + + + + Gets the error context. + + The error context. + + + + Represents a view of a . + + + + + Initializes a new instance of the class. + + The name. + + + + When overridden in a derived class, returns whether resetting an object changes its value. + + + true if resetting the component changes its value; otherwise, false. + + The component to test for reset capability. + + + + + When overridden in a derived class, gets the current value of the property on a component. + + + The value of a property for a given component. + + The component with the property for which to retrieve the value. + + + + + When overridden in a derived class, resets the value for this property of the component to the default value. + + The component with the property value that is to be reset to the default value. + + + + + When overridden in a derived class, sets the value of the component to a different value. + + The component with the property value that is to be set. + The new value. + + + + + When overridden in a derived class, determines a value indicating whether the value of this property needs to be persisted. + + + true if the property should be persisted; otherwise, false. + + The component with the property to be examined for persistence. + + + + + When overridden in a derived class, gets the type of the component this property is bound to. + + + A that represents the type of component this property is bound to. When the or methods are invoked, the object specified might be an instance of this type. + + + + + When overridden in a derived class, gets a value indicating whether this property is read-only. + + + true if the property is read-only; otherwise, false. + + + + + When overridden in a derived class, gets the type of the property. + + + A that represents the type of the property. + + + + + Gets the hash code for the name of the member. + + + + The hash code for the name of the member. + + + + + Used to resolve references when serializing and deserializing JSON by the . + + + + + Resolves a reference to its object. + + The serialization context. + The reference to resolve. + The object that + + + + Gets the reference for the sepecified object. + + The serialization context. + The object to get a reference for. + The reference to the object. + + + + Determines whether the specified object is referenced. + + The serialization context. + The object to test for a reference. + + true if the specified object is referenced; otherwise, false. + + + + + Adds a reference to the specified object. + + The serialization context. + The reference. + The object to reference. + + + + Specifies reference handling options for the . + Note that references cannot be preserved when a value is set via a non-default constructor such as types that implement ISerializable. + + + + + + + + Do not preserve references when serializing types. + + + + + Preserve references when serializing into a JSON object structure. + + + + + Preserve references when serializing into a JSON array structure. + + + + + Preserve references when serializing. + + + + + Instructs the how to serialize the collection. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with a flag indicating whether the array can contain null items + + A flag indicating whether the array can contain null items. + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Gets or sets a value indicating whether null items are allowed in the collection. + + true if null items are allowed in the collection; otherwise, false. + + + + Specifies default value handling options for the . + + + + + + + + + Include members where the member value is the same as the member's default value when serializing objects. + Included members are written to JSON. Has no effect when deserializing. + + + + + Ignore members where the member value is the same as the member's default value when serializing objects + so that is is not written to JSON. + This option will ignore all default values (e.g. null for objects and nullable types; 0 for integers, + decimals and floating point numbers; and false for booleans). The default value ignored can be changed by + placing the on the property. + + + + + Members with a default value but no JSON will be set to their default value when deserializing. + + + + + Ignore members where the member value is the same as the member's default value when serializing objects + and sets members to their default value when deserializing. + + + + + Instructs the to use the specified when serializing the member or class. + + + + + Initializes a new instance of the class. + + Type of the converter. + + + + Initializes a new instance of the class. + + Type of the converter. + Parameter list to use when constructing the JsonConverter. Can be null. + + + + Gets the type of the converter. + + The type of the converter. + + + + The parameter list to use when constructing the JsonConverter described by ConverterType. + If null, the default constructor is used. + + + + + Instructs the how to serialize the object. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified member serialization. + + The member serialization. + + + + Initializes a new instance of the class with the specified container Id. + + The container Id. + + + + Gets or sets the member serialization. + + The member serialization. + + + + Gets or sets a value that indicates whether the object's properties are required. + + + A value indicating whether the object's properties are required. + + + + + Specifies the settings on a object. + + + + + Initializes a new instance of the class. + + + + + Gets or sets how reference loops (e.g. a class referencing itself) is handled. + + Reference loop handling. + + + + Gets or sets how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. + + Missing member handling. + + + + Gets or sets how objects are created during deserialization. + + The object creation handling. + + + + Gets or sets how null values are handled during serialization and deserialization. + + Null value handling. + + + + Gets or sets how null default are handled during serialization and deserialization. + + The default value handling. + + + + Gets or sets a collection that will be used during serialization. + + The converters. + + + + Gets or sets how object references are preserved by the serializer. + + The preserve references handling. + + + + Gets or sets how type name writing and reading is handled by the serializer. + + The type name handling. + + + + Gets or sets how metadata properties are used during deserialization. + + The metadata properties handling. + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + + The type name assembly format. + + + + Gets or sets how constructors are used during deserialization. + + The constructor handling. + + + + Gets or sets the contract resolver used by the serializer when + serializing .NET objects to JSON and vice versa. + + The contract resolver. + + + + Gets or sets the used by the serializer when resolving references. + + The reference resolver. + + + + Gets or sets the used by the serializer when writing trace messages. + + The trace writer. + + + + Gets or sets the used by the serializer when resolving type names. + + The binder. + + + + Gets or sets the error handler called during serialization and deserialization. + + The error handler called during serialization and deserialization. + + + + Gets or sets the used by the serializer when invoking serialization callback methods. + + The context. + + + + Get or set how and values are formatting when writing JSON text. + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling during serialization and deserialization. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Get or set how special floating point numbers, e.g. , + and , + are written as JSON. + + + + + Get or set how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Get or set how strings are escaped when writing JSON text. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Gets a value indicating whether there will be a check for additional content after deserializing an object. + + + true if there will be a check for additional content after deserializing an object; otherwise, false. + + + + + Represents a reader that provides validation. + + + + + Initializes a new instance of the class that + validates the content returned from the given . + + The to read from while validating. + + + + Reads the next JSON token from the stream as a . + + A . + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. + + + + + Reads the next JSON token from the stream as a . + + A . + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Sets an event handler for receiving schema validation errors. + + + + + Gets the text value of the current JSON token. + + + + + + Gets the depth of the current token in the JSON document. + + The depth of the current token in the JSON document. + + + + Gets the path of the current JSON token. + + + + + Gets the quotation mark character used to enclose the value of a string. + + + + + + Gets the type of the current JSON token. + + + + + + Gets the Common Language Runtime (CLR) type for the current JSON token. + + + + + + Gets or sets the schema. + + The schema. + + + + Gets the used to construct this . + + The specified in the constructor. + + + + Compares tokens to determine whether they are equal. + + + + + Determines whether the specified objects are equal. + + The first object of type to compare. + The second object of type to compare. + + true if the specified objects are equal; otherwise, false. + + + + + Returns a hash code for the specified object. + + The for which a hash code is to be returned. + A hash code for the specified object. + The type of is a reference type and is null. + + + + Specifies the member serialization options for the . + + + + + All public members are serialized by default. Members can be excluded using or . + This is the default member serialization mode. + + + + + Only members must be marked with or are serialized. + This member serialization mode can also be set by marking the class with . + + + + + All public and private fields are serialized. Members can be excluded using or . + This member serialization mode can also be set by marking the class with + and setting IgnoreSerializableAttribute on to false. + + + + + Specifies how object creation is handled by the . + + + + + Reuse existing objects, create new objects when needed. + + + + + Only reuse existing objects. + + + + + Always create new objects. + + + + + Converts a to and from the ISO 8601 date format (e.g. 2008-04-12T12:53Z). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Gets or sets the date time styles used when converting a date to and from JSON. + + The date time styles used when converting a date to and from JSON. + + + + Gets or sets the date time format used when converting a date to and from JSON. + + The date time format used when converting a date to and from JSON. + + + + Gets or sets the culture used when converting a date to and from JSON. + + The culture used when converting a date to and from JSON. + + + + Converts a to and from a JavaScript date constructor (e.g. new Date(52231943)). + + + + + Writes the JSON representation of the object. + + The to write to. + The value. + The calling serializer. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing property value of the JSON that is being converted. + The calling serializer. + The object value. + + + + Converts XML to and from JSON. + + + + + Writes the JSON representation of the object. + + The to write to. + The calling serializer. + The value. + + + + Reads the JSON representation of the object. + + The to read from. + Type of the object. + The existing value of object being read. + The calling serializer. + The object value. + + + + Checks if the attributeName is a namespace attribute. + + Attribute name to test. + The attribute name prefix if it has one, otherwise an empty string. + True if attribute name is for a namespace attribute, otherwise false. + + + + Determines whether this instance can convert the specified value type. + + Type of the value. + + true if this instance can convert the specified value type; otherwise, false. + + + + + Gets or sets the name of the root element to insert when deserializing to XML if the JSON structure has produces multiple root elements. + + The name of the deserialize root element. + + + + Gets or sets a flag to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + true if the array attibute is written to the XML; otherwise, false. + + + + Gets or sets a value indicating whether to write the root JSON object. + + true if the JSON root object is omitted; otherwise, false. + + + + Represents a reader that provides fast, non-cached, forward-only access to JSON text data. + + + + + Initializes a new instance of the class with the specified . + + The TextReader containing the XML data to read. + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Changes the state to closed. + + + + + Gets a value indicating whether the class can return line information. + + + true if LineNumber and LinePosition can be provided; otherwise, false. + + + + + Gets the current line number. + + + The current line number or 0 if no line information is available (for example, HasLineInfo returns false). + + + + + Gets the current line position. + + + The current line position or 0 if no line information is available (for example, HasLineInfo returns false). + + + + + Instructs the to always serialize the member with the specified name. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class with the specified name. + + Name of the property. + + + + Gets or sets the converter used when serializing the property's collection items. + + The collection's items converter. + + + + The parameter list to use when constructing the JsonConverter described by ItemConverterType. + If null, the default constructor is used. + When non-null, there must be a constructor defined in the JsonConverter that exactly matches the number, + order, and type of these parameters. + + + [JsonProperty(ItemConverterType = typeof(MyContainerConverter), ItemConverterParameters = new object[] { 123, "Four" })] + + + + + Gets or sets the null value handling used when serializing this property. + + The null value handling. + + + + Gets or sets the default value handling used when serializing this property. + + The default value handling. + + + + Gets or sets the reference loop handling used when serializing this property. + + The reference loop handling. + + + + Gets or sets the object creation handling used when deserializing this property. + + The object creation handling. + + + + Gets or sets the type name handling used when serializing this property. + + The type name handling. + + + + Gets or sets whether this property's value is serialized as a reference. + + Whether this property's value is serialized as a reference. + + + + Gets or sets the order of serialization and deserialization of a member. + + The numeric order of serialization or deserialization. + + + + Gets or sets a value indicating whether this property is required. + + + A value indicating whether this property is required. + + + + + Gets or sets the name of the property. + + The name of the property. + + + + Gets or sets the the reference loop handling used when serializing the property's collection items. + + The collection's items reference loop handling. + + + + Gets or sets the the type name handling used when serializing the property's collection items. + + The collection's items type name handling. + + + + Gets or sets whether this property's collection items are serialized as a reference. + + Whether this property's collection items are serialized as a reference. + + + + Instructs the not to serialize the public field or public read/write property value. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Creates an instance of the JsonWriter class using the specified . + + The TextWriter to write to. + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a Json object. + + + + + Writes the beginning of a Json array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the specified end token. + + The end token to write. + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Writes the property name of a name/value pair on a JSON object. + + The name of the property. + A flag to indicate whether the text should be escaped when it is written as a JSON property name. + + + + Writes indent characters. + + + + + Writes the JSON value delimiter. + + + + + Writes an indent space. + + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes out the given white space. + + The string of white space characters. + + + + Gets or sets how many IndentChars to write for each level in the hierarchy when is set to Formatting.Indented. + + + + + Gets or sets which character to use to quote attribute values. + + + + + Gets or sets which character to use for indenting when is set to Formatting.Indented. + + + + + Gets or sets a value indicating whether object names will be surrounded with quotes. + + + + + The exception thrown when an error occurs while reading Json text. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + The exception thrown when an error occurs while reading Json text. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Gets the line number indicating where the error occurred. + + The line number indicating where the error occurred. + + + + Gets the line position indicating where the error occurred. + + The line position indicating where the error occurred. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Represents a collection of . + + + + + Provides methods for converting between common language runtime types and JSON types. + + + + + + + + Represents JavaScript's boolean value true as a string. This field is read-only. + + + + + Represents JavaScript's boolean value false as a string. This field is read-only. + + + + + Represents JavaScript's null as a string. This field is read-only. + + + + + Represents JavaScript's undefined as a string. This field is read-only. + + + + + Represents JavaScript's positive infinity as a string. This field is read-only. + + + + + Represents JavaScript's negative infinity as a string. This field is read-only. + + + + + Represents JavaScript's NaN as a string. This field is read-only. + + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation using the specified. + + The value to convert. + The format the date will be converted to. + The time zone handling when the date is converted to a string. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation using the specified. + + The value to convert. + The format the date will be converted to. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + The string delimiter character. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + The string delimiter character. + The string escape handling. + A JSON string representation of the . + + + + Converts the to its JSON string representation. + + The value to convert. + A JSON string representation of the . + + + + Serializes the specified object to a JSON string. + + The object to serialize. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using formatting. + + The object to serialize. + Indicates how the output is formatted. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a collection of . + + The object to serialize. + A collection converters used while serializing. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using formatting and a collection of . + + The object to serialize. + Indicates how the output is formatted. + A collection converters used while serializing. + A JSON string representation of the object. + + + + Serializes the specified object to a JSON string using . + + The object to serialize. + The used to serialize the object. + If this is null, default serialization settings will be used. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a type, formatting and . + + The object to serialize. + The used to serialize the object. + If this is null, default serialization settings will be used. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifing the type is optional. + + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using formatting and . + + The object to serialize. + Indicates how the output is formatted. + The used to serialize the object. + If this is null, default serialization settings will be used. + + A JSON string representation of the object. + + + + + Serializes the specified object to a JSON string using a type, formatting and . + + The object to serialize. + Indicates how the output is formatted. + The used to serialize the object. + If this is null, default serialization settings will be used. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifing the type is optional. + + + A JSON string representation of the object. + + + + + Asynchronously serializes the specified object to a JSON string. + Serialization will happen on a new thread. + + The object to serialize. + + A task that represents the asynchronous serialize operation. The value of the TResult parameter contains a JSON string representation of the object. + + + + + Asynchronously serializes the specified object to a JSON string using formatting. + Serialization will happen on a new thread. + + The object to serialize. + Indicates how the output is formatted. + + A task that represents the asynchronous serialize operation. The value of the TResult parameter contains a JSON string representation of the object. + + + + + Asynchronously serializes the specified object to a JSON string using formatting and a collection of . + Serialization will happen on a new thread. + + The object to serialize. + Indicates how the output is formatted. + The used to serialize the object. + If this is null, default serialization settings will be used. + + A task that represents the asynchronous serialize operation. The value of the TResult parameter contains a JSON string representation of the object. + + + + + Deserializes the JSON to a .NET object. + + The JSON to deserialize. + The deserialized object from the JSON string. + + + + Deserializes the JSON to a .NET object using . + + The JSON to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The JSON to deserialize. + The of object being deserialized. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type. + + The type of the object to deserialize to. + The JSON to deserialize. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the given anonymous type. + + + The anonymous type to deserialize to. This can't be specified + traditionally and must be infered from the anonymous type passed + as a parameter. + + The JSON to deserialize. + The anonymous type object. + The deserialized anonymous type from the JSON string. + + + + Deserializes the JSON to the given anonymous type using . + + + The anonymous type to deserialize to. This can't be specified + traditionally and must be infered from the anonymous type passed + as a parameter. + + The JSON to deserialize. + The anonymous type object. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + The deserialized anonymous type from the JSON string. + + + + Deserializes the JSON to the specified .NET type using a collection of . + + The type of the object to deserialize to. + The JSON to deserialize. + Converters to use while deserializing. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type using . + + The type of the object to deserialize to. + The object to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type using a collection of . + + The JSON to deserialize. + The type of the object to deserialize. + Converters to use while deserializing. + The deserialized object from the JSON string. + + + + Deserializes the JSON to the specified .NET type using . + + The JSON to deserialize. + The type of the object to deserialize to. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + The deserialized object from the JSON string. + + + + Asynchronously deserializes the JSON to the specified .NET type. + Deserialization will happen on a new thread. + + The type of the object to deserialize to. + The JSON to deserialize. + + A task that represents the asynchronous deserialize operation. The value of the TResult parameter contains the deserialized object from the JSON string. + + + + + Asynchronously deserializes the JSON to the specified .NET type using . + Deserialization will happen on a new thread. + + The type of the object to deserialize to. + The JSON to deserialize. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + + A task that represents the asynchronous deserialize operation. The value of the TResult parameter contains the deserialized object from the JSON string. + + + + + Asynchronously deserializes the JSON to the specified .NET type. + Deserialization will happen on a new thread. + + The JSON to deserialize. + + A task that represents the asynchronous deserialize operation. The value of the TResult parameter contains the deserialized object from the JSON string. + + + + + Asynchronously deserializes the JSON to the specified .NET type using . + Deserialization will happen on a new thread. + + The JSON to deserialize. + The type of the object to deserialize to. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + + A task that represents the asynchronous deserialize operation. The value of the TResult parameter contains the deserialized object from the JSON string. + + + + + Populates the object with values from the JSON string. + + The JSON to populate values from. + The target object to populate values onto. + + + + Populates the object with values from the JSON string using . + + The JSON to populate values from. + The target object to populate values onto. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + + + + Asynchronously populates the object with values from the JSON string using . + + The JSON to populate values from. + The target object to populate values onto. + + The used to deserialize the object. + If this is null, default serialization settings will be used. + + + A task that represents the asynchronous populate operation. + + + + + Serializes the XML node to a JSON string. + + The node to serialize. + A JSON string of the XmlNode. + + + + Serializes the XML node to a JSON string using formatting. + + The node to serialize. + Indicates how the output is formatted. + A JSON string of the XmlNode. + + + + Serializes the XML node to a JSON string using formatting and omits the root object if is true. + + The node to serialize. + Indicates how the output is formatted. + Omits writing the root object. + A JSON string of the XmlNode. + + + + Deserializes the XmlNode from a JSON string. + + The JSON string. + The deserialized XmlNode + + + + Deserializes the XmlNode from a JSON string nested in a root elment specified by . + + The JSON string. + The name of the root element to append when deserializing. + The deserialized XmlNode + + + + Deserializes the XmlNode from a JSON string nested in a root elment specified by + and writes a .NET array attribute for collections. + + The JSON string. + The name of the root element to append when deserializing. + + A flag to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + The deserialized XmlNode + + + + Serializes the to a JSON string. + + The node to convert to JSON. + A JSON string of the XNode. + + + + Serializes the to a JSON string using formatting. + + The node to convert to JSON. + Indicates how the output is formatted. + A JSON string of the XNode. + + + + Serializes the to a JSON string using formatting and omits the root object if is true. + + The node to serialize. + Indicates how the output is formatted. + Omits writing the root object. + A JSON string of the XNode. + + + + Deserializes the from a JSON string. + + The JSON string. + The deserialized XNode + + + + Deserializes the from a JSON string nested in a root elment specified by . + + The JSON string. + The name of the root element to append when deserializing. + The deserialized XNode + + + + Deserializes the from a JSON string nested in a root elment specified by + and writes a .NET array attribute for collections. + + The JSON string. + The name of the root element to append when deserializing. + + A flag to indicate whether to write the Json.NET array attribute. + This attribute helps preserve arrays when converting the written XML back to JSON. + + The deserialized XNode + + + + Gets or sets a function that creates default . + Default settings are automatically used by serialization methods on , + and and on . + To serialize without using any default settings create a with + . + + + + + The exception thrown when an error occurs during Json serialization or deserialization. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Serializes and deserializes objects into and from the JSON format. + The enables you to control how objects are encoded into JSON. + + + + + Initializes a new instance of the class. + + + + + Creates a new instance. + The will not use default settings. + + + A new instance. + The will not use default settings. + + + + + Creates a new instance using the specified . + The will not use default settings. + + The settings to be applied to the . + + A new instance using the specified . + The will not use default settings. + + + + + Creates a new instance. + The will use default settings. + + + A new instance. + The will use default settings. + + + + + Creates a new instance using the specified . + The will use default settings. + + The settings to be applied to the . + + A new instance using the specified . + The will use default settings. + + + + + Populates the JSON values onto the target object. + + The that contains the JSON structure to reader values from. + The target object to populate values onto. + + + + Populates the JSON values onto the target object. + + The that contains the JSON structure to reader values from. + The target object to populate values onto. + + + + Deserializes the Json structure contained by the specified . + + The that contains the JSON structure to deserialize. + The being deserialized. + + + + Deserializes the Json structure contained by the specified + into an instance of the specified type. + + The containing the object. + The of object being deserialized. + The instance of being deserialized. + + + + Deserializes the Json structure contained by the specified + into an instance of the specified type. + + The containing the object. + The type of the object to deserialize. + The instance of being deserialized. + + + + Deserializes the Json structure contained by the specified + into an instance of the specified type. + + The containing the object. + The of object being deserialized. + The instance of being deserialized. + + + + Serializes the specified and writes the Json structure + to a Stream using the specified . + + The used to write the Json structure. + The to serialize. + + + + Serializes the specified and writes the Json structure + to a Stream using the specified . + + The used to write the Json structure. + The to serialize. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifing the type is optional. + + + + + Serializes the specified and writes the Json structure + to a Stream using the specified . + + The used to write the Json structure. + The to serialize. + + The type of the value being serialized. + This parameter is used when is Auto to write out the type name if the type of the value does not match. + Specifing the type is optional. + + + + + Serializes the specified and writes the Json structure + to a Stream using the specified . + + The used to write the Json structure. + The to serialize. + + + + Occurs when the errors during serialization and deserialization. + + + + + Gets or sets the used by the serializer when resolving references. + + + + + Gets or sets the used by the serializer when resolving type names. + + + + + Gets or sets the used by the serializer when writing trace messages. + + The trace writer. + + + + Gets or sets how type name writing and reading is handled by the serializer. + + + + + Gets or sets how a type name assembly is written and resolved by the serializer. + + The type name assembly format. + + + + Gets or sets how object references are preserved by the serializer. + + + + + Get or set how reference loops (e.g. a class referencing itself) is handled. + + + + + Get or set how missing members (e.g. JSON contains a property that isn't a member on the object) are handled during deserialization. + + + + + Get or set how null values are handled during serialization and deserialization. + + + + + Get or set how null default are handled during serialization and deserialization. + + + + + Gets or sets how objects are created during deserialization. + + The object creation handling. + + + + Gets or sets how constructors are used during deserialization. + + The constructor handling. + + + + Gets or sets how metadata properties are used during deserialization. + + The metadata properties handling. + + + + Gets a collection that will be used during serialization. + + Collection that will be used during serialization. + + + + Gets or sets the contract resolver used by the serializer when + serializing .NET objects to JSON and vice versa. + + + + + Gets or sets the used by the serializer when invoking serialization callback methods. + + The context. + + + + Indicates how JSON text output is formatted. + + + + + Get or set how dates are written to JSON text. + + + + + Get or set how time zones are handling during serialization and deserialization. + + + + + Get or set how date formatted strings, e.g. "\/Date(1198908717056)\/" and "2012-03-21T05:40Z", are parsed when reading JSON. + + + + + Get or set how floating point numbers, e.g. 1.0 and 9.9, are parsed when reading JSON text. + + + + + Get or set how special floating point numbers, e.g. , + and , + are written as JSON text. + + + + + Get or set how strings are escaped when writing JSON text. + + + + + Get or set how and values are formatting when writing JSON text. + + + + + Gets or sets the culture used when reading JSON. Defaults to . + + + + + Gets or sets the maximum depth allowed when reading JSON. Reading past this depth will throw a . + + + + + Gets a value indicating whether there will be a check for additional JSON content after deserializing an object. + + + true if there will be a check for additional JSON content after deserializing an object; otherwise, false. + + + + + Contains the LINQ to JSON extension methods. + + + + + Returns a collection of tokens that contains the ancestors of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains the ancestors of every node in the source collection. + + + + Returns a collection of tokens that contains the descendants of every token in the source collection. + + The type of the objects in source, constrained to . + An of that contains the source collection. + An of that contains the descendants of every node in the source collection. + + + + Returns a collection of child properties of every object in the source collection. + + An of that contains the source collection. + An of that contains the properties of every object in the source collection. + + + + Returns a collection of child values of every object in the source collection with the given key. + + An of that contains the source collection. + The token key. + An of that contains the values of every node in the source collection with the given key. + + + + Returns a collection of child values of every object in the source collection. + + An of that contains the source collection. + An of that contains the values of every node in the source collection. + + + + Returns a collection of converted child values of every object in the source collection with the given key. + + The type to convert the values to. + An of that contains the source collection. + The token key. + An that contains the converted values of every node in the source collection with the given key. + + + + Returns a collection of converted child values of every object in the source collection. + + The type to convert the values to. + An of that contains the source collection. + An that contains the converted values of every node in the source collection. + + + + Converts the value. + + The type to convert the value to. + A cast as a of . + A converted value. + + + + Converts the value. + + The source collection type. + The type to convert the value to. + A cast as a of . + A converted value. + + + + Returns a collection of child tokens of every array in the source collection. + + The source collection type. + An of that contains the source collection. + An of that contains the values of every node in the source collection. + + + + Returns a collection of converted child tokens of every array in the source collection. + + An of that contains the source collection. + The type to convert the values to. + The source collection type. + An that contains the converted values of every node in the source collection. + + + + Returns the input typed as . + + An of that contains the source collection. + The input typed as . + + + + Returns the input typed as . + + The source collection type. + An of that contains the source collection. + The input typed as . + + + + Represents a JSON constructor. + + + + + Represents a token that can contain other tokens. + + + + + Raises the event. + + The instance containing the event data. + + + + Raises the event. + + The instance containing the event data. + + + + Raises the event. + + The instance containing the event data. + + + + Returns a collection of the child tokens of this token, in document order. + + + An of containing the child tokens of this , in document order. + + + + + Returns a collection of the child values of this token, in document order. + + The type to convert the values to. + + A containing the child values of this , in document order. + + + + + Returns a collection of the descendant tokens for this token in document order. + + An containing the descendant tokens of the . + + + + Adds the specified content as children of this . + + The content to be added. + + + + Adds the specified content as the first children of this . + + The content to be added. + + + + Creates an that can be used to add tokens to the . + + An that is ready to have content written to it. + + + + Replaces the children nodes of this token with the specified content. + + The content. + + + + Removes the child nodes from this token. + + + + + Merge the specified content into this . + + The content to be merged. + + + + Merge the specified content into this using . + + The content to be merged. + The used to merge the content. + + + + Occurs when the list changes or an item in the list changes. + + + + + Occurs before an item is added to the collection. + + + + + Occurs when the items list of the collection has changed, or the collection is reset. + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets a value indicating whether this token has child tokens. + + + true if this token has child values; otherwise, false. + + + + + Get the first child token of this token. + + + A containing the first child token of the . + + + + + Get the last child token of this token. + + + A containing the last child token of the . + + + + + Gets the count of child JSON tokens. + + The count of child JSON tokens + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified name and content. + + The constructor name. + The contents of the constructor. + + + + Initializes a new instance of the class with the specified name and content. + + The constructor name. + The contents of the constructor. + + + + Initializes a new instance of the class with the specified name. + + The constructor name. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets or sets the name of this constructor. + + The constructor name. + + + + Gets the node type for this . + + The type. + + + + Gets the with the specified key. + + The with the specified key. + + + + Represents a collection of objects. + + The type of token + + + + An empty collection of objects. + + + + + Initializes a new instance of the struct. + + The enumerable. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + + true if the specified is equal to this instance; otherwise, false. + + + + + Returns a hash code for this instance. + + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + + Gets the with the specified key. + + + + + + Represents a JSON object. + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified content. + + The contents of the object. + + + + Initializes a new instance of the class with the specified content. + + The contents of the object. + + + + Gets an of this object's properties. + + An of this object's properties. + + + + Gets a the specified name. + + The property name. + A with the specified name or null. + + + + Gets an of this object's property values. + + An of this object's property values. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + + + + Creates a from an object. + + The object that will be used to create . + A with the values of the specified object + + + + Creates a from an object. + + The object that will be used to create . + The that will be used to read the object. + A with the values of the specified object + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Gets the with the specified property name. + + Name of the property. + The with the specified property name. + + + + Gets the with the specified property name. + The exact property name will be searched for first and if no matching property is found then + the will be used to match a property. + + Name of the property. + One of the enumeration values that specifies how the strings will be compared. + The with the specified property name. + + + + Tries to get the with the specified property name. + The exact property name will be searched for first and if no matching property is found then + the will be used to match a property. + + Name of the property. + The value. + One of the enumeration values that specifies how the strings will be compared. + true if a value was successfully retrieved; otherwise, false. + + + + Adds the specified property name. + + Name of the property. + The value. + + + + Removes the property with the specified name. + + Name of the property. + true if item was successfully removed; otherwise, false. + + + + Tries the get value. + + Name of the property. + The value. + true if a value was successfully retrieved; otherwise, false. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Raises the event with the provided arguments. + + Name of the property. + + + + Raises the event with the provided arguments. + + Name of the property. + + + + Returns the properties for this instance of a component. + + + A that represents the properties for this component instance. + + + + + Returns the properties for this instance of a component using the attribute array as a filter. + + An array of type that is used as a filter. + + A that represents the filtered properties for this component instance. + + + + + Returns a collection of custom attributes for this instance of a component. + + + An containing the attributes for this object. + + + + + Returns the class name of this instance of a component. + + + The class name of the object, or null if the class does not have a name. + + + + + Returns the name of this instance of a component. + + + The name of the object, or null if the object does not have a name. + + + + + Returns a type converter for this instance of a component. + + + A that is the converter for this object, or null if there is no for this object. + + + + + Returns the default event for this instance of a component. + + + An that represents the default event for this object, or null if this object does not have events. + + + + + Returns the default property for this instance of a component. + + + A that represents the default property for this object, or null if this object does not have properties. + + + + + Returns an editor of the specified type for this instance of a component. + + A that represents the editor for this object. + + An of the specified type that is the editor for this object, or null if the editor cannot be found. + + + + + Returns the events for this instance of a component using the specified attribute array as a filter. + + An array of type that is used as a filter. + + An that represents the filtered events for this component instance. + + + + + Returns the events for this instance of a component. + + + An that represents the events for this component instance. + + + + + Returns an object that contains the property described by the specified property descriptor. + + A that represents the property whose owner is to be found. + + An that represents the owner of the specified property. + + + + + Returns the responsible for binding operations performed on this object. + + The expression tree representation of the runtime value. + + The to bind this object. + + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Occurs when a property value changes. + + + + + Occurs when a property value is changing. + + + + + Gets the node type for this . + + The type. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets or sets the with the specified property name. + + + + + + Represents a JSON array. + + + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class with the specified content. + + The contents of the array. + + + + Initializes a new instance of the class with the specified content. + + The contents of the array. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Load a from a string that contains JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + + + + Creates a from an object. + + The object that will be used to create . + A with the values of the specified object + + + + Creates a from an object. + + The object that will be used to create . + The that will be used to read the object. + A with the values of the specified object + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Determines the index of a specific item in the . + + The object to locate in the . + + The index of if found in the list; otherwise, -1. + + + + + Inserts an item to the at the specified index. + + The zero-based index at which should be inserted. + The object to insert into the . + + is not a valid index in the . + The is read-only. + + + + Removes the item at the specified index. + + The zero-based index of the item to remove. + + is not a valid index in the . + The is read-only. + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Adds an item to the . + + The object to add to the . + The is read-only. + + + + Removes all items from the . + + The is read-only. + + + + Determines whether the contains a specific value. + + The object to locate in the . + + true if is found in the ; otherwise, false. + + + + + Copies to. + + The array. + Index of the array. + + + + Removes the first occurrence of a specific object from the . + + The object to remove from the . + + true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original . + + The is read-only. + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets the node type for this . + + The type. + + + + Gets the with the specified key. + + The with the specified key. + + + + Gets or sets the at the specified index. + + + + + + Gets a value indicating whether the is read-only. + + true if the is read-only; otherwise, false. + + + + Represents a reader that provides fast, non-cached, forward-only access to serialized Json data. + + + + + Initializes a new instance of the class. + + The token to read from. + + + + Reads the next JSON token from the stream as a . + + + A or a null reference if the next JSON token is null. This method will return null at the end of an array. + + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream as a . + + A . This method will return null at the end of an array. + + + + Reads the next JSON token from the stream. + + + true if the next token was read successfully; false if there are no more tokens to read. + + + + + Gets the path of the current JSON token. + + + + + Represents a writer that provides a fast, non-cached, forward-only way of generating Json data. + + + + + Initializes a new instance of the class writing to the given . + + The container being written to. + + + + Initializes a new instance of the class. + + + + + Flushes whatever is in the buffer to the underlying streams and also flushes the underlying stream. + + + + + Closes this stream and the underlying stream. + + + + + Writes the beginning of a Json object. + + + + + Writes the beginning of a Json array. + + + + + Writes the start of a constructor with the given name. + + The name of the constructor. + + + + Writes the end. + + The token. + + + + Writes the property name of a name/value pair on a Json object. + + The name of the property. + + + + Writes a value. + An error will raised if the value cannot be written as a single JSON token. + + The value to write. + + + + Writes a null value. + + + + + Writes an undefined value. + + + + + Writes raw JSON. + + The raw JSON to write. + + + + Writes out a comment /*...*/ containing the specified text. + + Text to place inside the comment. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Writes a value. + + The value to write. + + + + Gets the token being writen. + + The token being writen. + + + + Represents a JSON property. + + + + + Initializes a new instance of the class from another object. + + A object to copy from. + + + + Initializes a new instance of the class. + + The property name. + The property content. + + + + Initializes a new instance of the class. + + The property name. + The property content. + + + + Writes this token to a . + + A into which this method will write. + A collection of which will be used when writing the token. + + + + Loads an from a . + + A that will be read for the content of the . + A that contains the JSON that was read from the specified . + + + + Gets the container's children tokens. + + The container's children tokens. + + + + Gets the property name. + + The property name. + + + + Gets or sets the property value. + + The property value. + + + + Gets the node type for this . + + The type. + + + + Specifies the type of token. + + + + + No token type has been set. + + + + + A JSON object. + + + + + A JSON array. + + + + + A JSON constructor. + + + + + A JSON object property. + + + + + A comment. + + + + + An integer value. + + + + + A float value. + + + + + A string value. + + + + + A boolean value. + + + + + A null value. + + + + + An undefined value. + + + + + A date value. + + + + + A raw JSON value. + + + + + A collection of bytes value. + + + + + A Guid value. + + + + + A Uri value. + + + + + A TimeSpan value. + + + + + Contains the JSON schema extension methods. + + + + + Determines whether the is valid. + + The source to test. + The schema to test with. + + true if the specified is valid; otherwise, false. + + + + + Determines whether the is valid. + + The source to test. + The schema to test with. + When this method returns, contains any error messages generated while validating. + + true if the specified is valid; otherwise, false. + + + + + Validates the specified . + + The source to test. + The schema to test with. + + + + Validates the specified . + + The source to test. + The schema to test with. + The validation event handler. + + + + Returns detailed information about the schema exception. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class + with a specified error message. + + The error message that explains the reason for the exception. + + + + Initializes a new instance of the class + with a specified error message and a reference to the inner exception that is the cause of this exception. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified. + + + + Initializes a new instance of the class. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + The parameter is null. + The class name is null or is zero (0). + + + + Gets the line number indicating where the error occurred. + + The line number indicating where the error occurred. + + + + Gets the line position indicating where the error occurred. + + The line position indicating where the error occurred. + + + + Gets the path to the JSON where the error occurred. + + The path to the JSON where the error occurred. + + + + Resolves from an id. + + + + + Initializes a new instance of the class. + + + + + Gets a for the specified reference. + + The id. + A for the specified reference. + + + + Gets or sets the loaded schemas. + + The loaded schemas. + + + + Specifies undefined schema Id handling options for the . + + + + + Do not infer a schema Id. + + + + + Use the .NET type name as the schema Id. + + + + + Use the assembly qualified .NET type name as the schema Id. + + + + + Returns detailed information related to the . + + + + + Gets the associated with the validation error. + + The JsonSchemaException associated with the validation error. + + + + Gets the path of the JSON location where the validation error occurred. + + The path of the JSON location where the validation error occurred. + + + + Gets the text description corresponding to the validation error. + + The text description. + + + + Represents the callback method that will handle JSON schema validation events and the . + + + + + Resolves member mappings for a type, camel casing property names. + + + + + Used by to resolves a for a given . + + + + + Used by to resolves a for a given . + + + + + + + + + Resolves the contract for a given type. + + The type to resolve a contract for. + The contract for a given type. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + + If set to true the will use a cached shared with other resolvers of the same type. + Sharing the cache will significantly improve performance with multiple resolver instances because expensive reflection will only + happen once. This setting can cause unexpected behavior if different instances of the resolver are suppose to produce different + results. When set to false it is highly recommended to reuse instances with the . + + + + + Resolves the contract for a given type. + + The type to resolve a contract for. + The contract for a given type. + + + + Gets the serializable members for the type. + + The type to get serializable members for. + The serializable members for the type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates the constructor parameters. + + The constructor to create properties for. + The type's member properties. + Properties for the given . + + + + Creates a for the given . + + The matching member property. + The constructor parameter. + A created for the given . + + + + Resolves the default for the contract. + + Type of the object. + The contract's default . + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Creates a for the given type. + + Type of the object. + A for the given type. + + + + Determines which contract type is created for the given type. + + Type of the object. + A for the given type. + + + + Creates properties for the given . + + The type to create properties for. + /// The member serialization mode for the type. + Properties for the given . + + + + Creates the used by the serializer to get and set values from a member. + + The member. + The used by the serializer to get and set values from a member. + + + + Creates a for the given . + + The member's parent . + The member to create a for. + A created for the given . + + + + Resolves the name of the property. + + Name of the property. + Name of the property. + + + + Gets the resolved name of the property. + + Name of the property. + Name of the property. + + + + Gets a value indicating whether members are being get and set using dynamic code generation. + This value is determined by the runtime permissions available. + + + true if using dynamic code generation; otherwise, false. + + + + + Gets or sets the default members search flags. + + The default members search flags. + + + + Gets or sets a value indicating whether compiler generated members should be serialized. + + + true if serialized compiler generated members; otherwise, false. + + + + + Gets or sets a value indicating whether to ignore the interface when serializing and deserializing types. + + + true if the interface will be ignored when serializing and deserializing types; otherwise, false. + + + + + Gets or sets a value indicating whether to ignore the attribute when serializing and deserializing types. + + + true if the attribute will be ignored when serializing and deserializing types; otherwise, false. + + + + + Initializes a new instance of the class. + + + + + Resolves the name of the property. + + Name of the property. + The property name camel cased. + + + + The default serialization binder used when resolving and loading classes from type names. + + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + The type of the object the formatter creates a new instance of. + + + + + When overridden in a derived class, controls the binding of a serialized object to a type. + + The type of the object the formatter creates a new instance of. + Specifies the name of the serialized object. + Specifies the name of the serialized object. + + + + Provides information surrounding an error. + + + + + Gets the error. + + The error. + + + + Gets the original object that caused the error. + + The original object that caused the error. + + + + Gets the member that caused the error. + + The member that caused the error. + + + + Gets the path of the JSON location where the error occurred. + + The path of the JSON location where the error occurred. + + + + Gets or sets a value indicating whether this is handled. + + true if handled; otherwise, false. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets the of the collection items. + + The of the collection items. + + + + Gets a value indicating whether the collection type is a multidimensional array. + + true if the collection type is a multidimensional array; otherwise, false. + + + + Handles serialization callback events. + + The object that raised the callback event. + The streaming context. + + + + Handles serialization error callback events. + + The object that raised the callback event. + The streaming context. + The error context. + + + + Sets extension data for an object during deserialization. + + The object to set extension data on. + The extension data key. + The extension data value. + + + + Gets extension data for an object during serialization. + + The object to set extension data on. + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the property name resolver. + + The property name resolver. + + + + Gets the of the dictionary keys. + + The of the dictionary keys. + + + + Gets the of the dictionary values. + + The of the dictionary values. + + + + Maps a JSON property to a .NET member or constructor parameter. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Gets or sets the name of the property. + + The name of the property. + + + + Gets or sets the type that declared this property. + + The type that declared this property. + + + + Gets or sets the order of serialization and deserialization of a member. + + The numeric order of serialization or deserialization. + + + + Gets or sets the name of the underlying member or parameter. + + The name of the underlying member or parameter. + + + + Gets the that will get and set the during serialization. + + The that will get and set the during serialization. + + + + Gets or sets the type of the property. + + The type of the property. + + + + Gets or sets the for the property. + If set this converter takes presidence over the contract converter for the property type. + + The converter. + + + + Gets or sets the member converter. + + The member converter. + + + + Gets or sets a value indicating whether this is ignored. + + true if ignored; otherwise, false. + + + + Gets or sets a value indicating whether this is readable. + + true if readable; otherwise, false. + + + + Gets or sets a value indicating whether this is writable. + + true if writable; otherwise, false. + + + + Gets or sets a value indicating whether this has a member attribute. + + true if has a member attribute; otherwise, false. + + + + Gets the default value. + + The default value. + + + + Gets or sets a value indicating whether this is required. + + A value indicating whether this is required. + + + + Gets or sets a value indicating whether this property preserves object references. + + + true if this instance is reference; otherwise, false. + + + + + Gets or sets the property null value handling. + + The null value handling. + + + + Gets or sets the property default value handling. + + The default value handling. + + + + Gets or sets the property reference loop handling. + + The reference loop handling. + + + + Gets or sets the property object creation handling. + + The object creation handling. + + + + Gets or sets or sets the type name handling. + + The type name handling. + + + + Gets or sets a predicate used to determine whether the property should be serialize. + + A predicate used to determine whether the property should be serialize. + + + + Gets or sets a predicate used to determine whether the property should be serialized. + + A predicate used to determine whether the property should be serialized. + + + + Gets or sets an action used to set whether the property has been deserialized. + + An action used to set whether the property has been deserialized. + + + + Gets or sets the converter used when serializing the property's collection items. + + The collection's items converter. + + + + Gets or sets whether this property's collection items are serialized as a reference. + + Whether this property's collection items are serialized as a reference. + + + + Gets or sets the the type name handling used when serializing the property's collection items. + + The collection's items type name handling. + + + + Gets or sets the the reference loop handling used when serializing the property's collection items. + + The collection's items reference loop handling. + + + + A collection of objects. + + + + + Initializes a new instance of the class. + + The type. + + + + When implemented in a derived class, extracts the key from the specified element. + + The element from which to extract the key. + The key for the specified element. + + + + Adds a object. + + The property to add to the collection. + + + + Gets the closest matching object. + First attempts to get an exact case match of propertyName and then + a case insensitive match. + + Name of the property. + A matching property if found. + + + + Gets a property by property name. + + The name of the property to get. + Type property name string comparison. + A matching property if found. + + + + Specifies missing member handling options for the . + + + + + Ignore a missing member and do not attempt to deserialize it. + + + + + Throw a when a missing member is encountered during deserialization. + + + + + Specifies null value handling options for the . + + + + + + + + + Include null values when serializing and deserializing objects. + + + + + Ignore null values when serializing and deserializing objects. + + + + + Specifies reference loop handling options for the . + + + + + Throw a when a loop is encountered. + + + + + Ignore loop references and do not serialize. + + + + + Serialize loop references. + + + + + An in-memory representation of a JSON Schema. + + + + + Initializes a new instance of the class. + + + + + Reads a from the specified . + + The containing the JSON Schema to read. + The object representing the JSON Schema. + + + + Reads a from the specified . + + The containing the JSON Schema to read. + The to use when resolving schema references. + The object representing the JSON Schema. + + + + Load a from a string that contains schema JSON. + + A that contains JSON. + A populated from the string that contains JSON. + + + + Parses the specified json. + + The json. + The resolver. + A populated from the string that contains JSON. + + + + Writes this schema to a . + + A into which this method will write. + + + + Writes this schema to a using the specified . + + A into which this method will write. + The resolver used. + + + + Returns a that represents the current . + + + A that represents the current . + + + + + Gets or sets the id. + + + + + Gets or sets the title. + + + + + Gets or sets whether the object is required. + + + + + Gets or sets whether the object is read only. + + + + + Gets or sets whether the object is visible to users. + + + + + Gets or sets whether the object is transient. + + + + + Gets or sets the description of the object. + + + + + Gets or sets the types of values allowed by the object. + + The type. + + + + Gets or sets the pattern. + + The pattern. + + + + Gets or sets the minimum length. + + The minimum length. + + + + Gets or sets the maximum length. + + The maximum length. + + + + Gets or sets a number that the value should be divisble by. + + A number that the value should be divisble by. + + + + Gets or sets the minimum. + + The minimum. + + + + Gets or sets the maximum. + + The maximum. + + + + Gets or sets a flag indicating whether the value can not equal the number defined by the "minimum" attribute. + + A flag indicating whether the value can not equal the number defined by the "minimum" attribute. + + + + Gets or sets a flag indicating whether the value can not equal the number defined by the "maximum" attribute. + + A flag indicating whether the value can not equal the number defined by the "maximum" attribute. + + + + Gets or sets the minimum number of items. + + The minimum number of items. + + + + Gets or sets the maximum number of items. + + The maximum number of items. + + + + Gets or sets the of items. + + The of items. + + + + Gets or sets a value indicating whether items in an array are validated using the instance at their array position from . + + + true if items are validated using their array position; otherwise, false. + + + + + Gets or sets the of additional items. + + The of additional items. + + + + Gets or sets a value indicating whether additional items are allowed. + + + true if additional items are allowed; otherwise, false. + + + + + Gets or sets whether the array items must be unique. + + + + + Gets or sets the of properties. + + The of properties. + + + + Gets or sets the of additional properties. + + The of additional properties. + + + + Gets or sets the pattern properties. + + The pattern properties. + + + + Gets or sets a value indicating whether additional properties are allowed. + + + true if additional properties are allowed; otherwise, false. + + + + + Gets or sets the required property if this property is present. + + The required property if this property is present. + + + + Gets or sets the a collection of valid enum values allowed. + + A collection of valid enum values allowed. + + + + Gets or sets disallowed types. + + The disallow types. + + + + Gets or sets the default value. + + The default value. + + + + Gets or sets the collection of that this schema extends. + + The collection of that this schema extends. + + + + Gets or sets the format. + + The format. + + + + Generates a from a specified . + + + + + Generate a from the specified type. + + The type to generate a from. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + The used to resolve schema references. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + Specify whether the generated root will be nullable. + A generated from the specified type. + + + + Generate a from the specified type. + + The type to generate a from. + The used to resolve schema references. + Specify whether the generated root will be nullable. + A generated from the specified type. + + + + Gets or sets how undefined schemas are handled by the serializer. + + + + + Gets or sets the contract resolver. + + The contract resolver. + + + + The value types allowed by the . + + + + + No type specified. + + + + + String type. + + + + + Float type. + + + + + Integer type. + + + + + Boolean type. + + + + + Object type. + + + + + Array type. + + + + + Null type. + + + + + Any type. + + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Gets or sets the object member serialization. + + The member object serialization. + + + + Gets or sets a value that indicates whether the object's properties are required. + + + A value indicating whether the object's properties are required. + + + + + Gets the object's properties. + + The object's properties. + + + + Gets the constructor parameters required for any non-default constructor + + + + + Gets a collection of instances that define the parameters used with . + + + + + Gets or sets the override constructor used to create the object. + This is set when a constructor is marked up using the + JsonConstructor attribute. + + The override constructor. + + + + Gets or sets the parametrized constructor used to create the object. + + The parametrized constructor. + + + + Gets or sets the function used to create the object. When set this function will override . + This function is called with a collection of arguments which are defined by the collection. + + The function used to create the object. + + + + Gets or sets the extension data setter. + + + + + Gets or sets the extension data getter. + + + + + Contract details for a used by the . + + + + + Initializes a new instance of the class. + + The underlying type for the contract. + + + + Lookup and create an instance of the JsonConverter type described by the argument. + + The JsonConverter type to create. + Optional arguments to pass to an initializing constructor of the JsonConverter. + If null, the default constructor is used. + + + + Create a factory function that can be used to create instances of a JsonConverter described by the + argument type. The returned function can then be used to either invoke the converter's default ctor, or any + parameterized constructors by way of an object array. + + + + + Get and set values for a using reflection. + + + + + Initializes a new instance of the class. + + The member info. + + + + Sets the value. + + The target to set the value on. + The value to set on the target. + + + + Gets the value. + + The target to get the value from. + The value. + + + + When applied to a method, specifies that the method is called when an error occurs serializing an object. + + + + + Helper method for generating a MetaObject which calls a + specific method on Dynamic that returns a result + + + + + Helper method for generating a MetaObject which calls a + specific method on Dynamic, but uses one of the arguments for + the result. + + + + + Helper method for generating a MetaObject which calls a + specific method on Dynamic, but uses one of the arguments for + the result. + + + + + Returns a Restrictions object which includes our current restrictions merged + with a restriction limiting our type + + + + + Represents a method that constructs an object. + + The object type to create. + + + + Specifies type name handling options for the . + + + + + Do not include the .NET type name when serializing types. + + + + + Include the .NET type name when serializing into a JSON object structure. + + + + + Include the .NET type name when serializing into a JSON array structure. + + + + + Always include the .NET type name when serializing. + + + + + Include the .NET type name when the type of the object being serialized is not the same as its declared type. + + + + + Converts the value to the specified type. If the value is unable to be converted, the + value is checked whether it assignable to the specified type. + + The value to convert. + The culture to use when converting. + The type to convert or cast the value to. + + The converted type. If conversion was unsuccessful, the initial value + is returned if assignable to the target type. + + + + + Gets a dictionary of the names and values of an Enum type. + + + + + + Gets a dictionary of the names and values of an Enum type. + + The enum type to get names and values for. + + + + + Specifies the type of Json token. + + + + + This is returned by the if a method has not been called. + + + + + An object start token. + + + + + An array start token. + + + + + A constructor start token. + + + + + An object property name. + + + + + A comment. + + + + + Raw JSON. + + + + + An integer. + + + + + A float. + + + + + A string. + + + + + A boolean. + + + + + A null token. + + + + + An undefined token. + + + + + An object end token. + + + + + An array end token. + + + + + A constructor end token. + + + + + A Date. + + + + + Byte data. + + + + + Builds a string. Unlike StringBuilder this class lets you reuse it's internal buffer. + + + + + Determines whether the collection is null or empty. + + The collection. + + true if the collection is null or empty; otherwise, false. + + + + + Adds the elements of the specified collection to the specified generic IList. + + The list to add to. + The collection of elements to add. + + + + Returns the index of the first occurrence in a sequence by using a specified IEqualityComparer. + + The type of the elements of source. + A sequence in which to locate a value. + The object to locate in the sequence + An equality comparer to compare values. + The zero-based index of the first occurrence of value within the entire sequence, if found; otherwise, –1. + + + + Gets the type of the typed collection's items. + + The type. + The type of the typed collection's items. + + + + Gets the member's underlying type. + + The member. + The underlying type of the member. + + + + Determines whether the member is an indexed property. + + The member. + + true if the member is an indexed property; otherwise, false. + + + + + Determines whether the property is an indexed property. + + The property. + + true if the property is an indexed property; otherwise, false. + + + + + Gets the member's value on the object. + + The member. + The target object. + The member's value on the object. + + + + Sets the member's value on the target object. + + The member. + The target. + The value. + + + + Determines whether the specified MemberInfo can be read. + + The MemberInfo to determine whether can be read. + /// if set to true then allow the member to be gotten non-publicly. + + true if the specified MemberInfo can be read; otherwise, false. + + + + + Determines whether the specified MemberInfo can be set. + + The MemberInfo to determine whether can be set. + if set to true then allow the member to be set non-publicly. + if set to true then allow the member to be set if read-only. + + true if the specified MemberInfo can be set; otherwise, false. + + + + + Determines whether the string is all white space. Empty string will return false. + + The string to test whether it is all white space. + + true if the string is all white space; otherwise, false. + + + + + Nulls an empty string. + + The string. + Null if the string was null, otherwise the string unchanged. + + + + Specifies the state of the . + + + + + An exception has been thrown, which has left the in an invalid state. + You may call the method to put the in the Closed state. + Any other method calls results in an being thrown. + + + + + The method has been called. + + + + + An object is being written. + + + + + A array is being written. + + + + + A constructor is being written. + + + + + A property is being written. + + + + + A write method has not been called. + + + + diff --git a/bin/RestSharp.dll b/bin/RestSharp.dll new file mode 100644 index 0000000000000000000000000000000000000000..ea01262bdbc625934fac795c514dffd87f3ad964 GIT binary patch literal 165376 zcmb@P37i~Nwf}pndaAptXOi^vq-U~_nFKNv-91AVz!0{uipahh5J5JDh*a!O5Hrj$ zAfh6o;2uR01#w42Mcfg2%5#b6!wuu^Q=iY>_gusO`#ZO)rz?s4_5b-t+U@J{+Yph&dB|9a`%?LwDi87fpqeq=|+URrRi!Pq%?+^D%qCWZPT<-WD zKX>lxi%(Be`+m+_TJ9<5a?@Te7dZ6XTcJmxZ{wNE%`+NO`PRSmnfpGVvE(S%x)+I6 z|7V|xQxO09i1#EB#QP@+V&{LK_Hun-Uw@;QTfDR16S+roxnh@p5%;lO?uktoU%3hQ zMN?!JKPzjJ@01PrnG>yc>p}p_8+o*X&SV+a<#OvLS{Gjy!>GLG$a79C*X_c0guJ`| zt&?2&r@VQ&-rSX5Pwt#I^yGRB{nvla^r8j1T(% zFw}{M?ifBZ3G_92r@i^uQ9$ZS_0bIgP6QYMea>1 zrDy~+9_1%m%1_uDharfTL6`HEZec+@N*>1QtGsAW@fAp-zSi^eZ5m_ZY`N_FT+BLD_czzBe93K(Ja=jHa} ziTo?=RYC30 z?Ze9*@h``pkB1e1Z@f^Cp*T&=wKsB-q?hlF_OTS_VV|pye8X}n<=j2sq6 z5aq)BiBeE2#5Axl%*T(zaU+HEj4h@L!v6N(iMg83$A83g?eA3`@eatyW0YI_BQ>-5 z8@Q)wk#0y_O#n9}3Nkz*7mb*qF06))s1n8#B6}R-)TYK=*(&*IhEpf4C&8$3KAaI`cto)pF)cH! z&TH&hnHSS&!fGjBDOu0qaUp@Cb9zW(L`lG6ZSU*b2P*Rr)I29BR{}al&pL_ehTQ(2 za;l7%`%7-ksvc$);m_^a|MryrZqNP$UV@kX6$kl7qiLwi`t}>sp3pRW<{4&l``6v! zS9vaX|61?Q(f@mM{XL|DTwAY`nm{`WLoa3uPsWmZ(7FSUp_jwfQw=IXE%AK;EVoyJ z=v1CD0u9IfX@)>2;5C44e!>|+hQ~hxtCjs}W;4fhpqQ){1Q~9%5K-ZczGA$V@YO=& zq=7<2I}7^@L+i_hVtg?4szU2iHR`q81}XNn1VxBBH@lHrW` z$jR*p$qnvsM$oi=oJLtqy27NQN|nUw3g2`S^tQ^-%NcMNh1B8OMI^e3pQDm;@*m#G zf5`9V^Gvrc!WSJy>haP1c$3HQyL!Gi`DC6WJ64yy+LTByY!qtkW1+&pn|un-spI&8 zeyZr>MI*fE1c>?~+V$P!fo4~6F_jB8&d?Ha*YkHGe^>Lj<{Eyy`7Q--QZdGdDLxoN zZ^-b*zMeNJcf3wM^obBakExSI4;$A|xc$f^K*DXk`9Uu_#RX6fU4R8?fPp0CTDZO7 zsYQj41$DI(4T=qwx9=u);ksVh1q`&d0~ zcf&bvp^I;oi|zm!)_{c`8$S(jJRHdFm=8#60a_1KXT9U)=!Us|_-6CqO`e6X+QQj9 zleQqzwS}icss7L5IrR*Ftp3l1p#J^bM~TnXzk*QzXaqL&zl!H2{H?i(9|~wO4!MUn zsfeb|q@6gW_DuhryrWn}ODiklR;s9EOCE-~F zL+dSC=WsFKbm^)$deKF&yM}Nv6b*sgrETHvyE|<`k$2jHsTK?1)o1{Ni^&2D9u-uqah%XhNAH*AY z7Tm1%i|t{d85G>WXl>l1NDG%L>rU^Ec+&JMe*7H8Q|oKg3dOCV7ZA~9An|kgDGsgg zD;5ygkI7qaZWCcD{BK{5AJa_CqqedyXjK>n-6T>gdlq4Tt(tEff^M)C@A-Hay`se% z(PD#mBO%9ZLU6I{3)k{aB$fQo`f9$CFOl-c-LP(B%=1Wppey~~5fwT2;{Spmy|pMW z`w?@0;HD6lCFWq8-vFtSWU_N5+qcLv&pZif1IQ;(Mf0cw`R+L-Z5v*0DEH)Zoj#y( znU0xb{;7C3lB-0gCXcj=);=ms3mO%Cg%{L=LTk04Hjvfx-h^ckuXxMD=4jA*5}pzA z4aesOt*3Sz`9{80AFdC%KC8Zs+Ey{kgBOn~DXMF;C1d7>`fI)D3dOQ0dD2dvk9+z` zek^|04MVg}e^K-Tpc)I9bY?u%_a-s8uoBpU&oe2s)}c#DvnH7z*Q-^rHzgLo7VHR~ z3ecWZya5xw%n#8NuKEGdG!I-?%O!Y51j$^JJg;@n_6rj?X@vDvU8S=*9PoZhu+*jOVWp8n$yo#Ux)e8!(XCS!ZjWpjLGq|{_Z44D!&)uCzcQd=Y zU~3b}*{!`9W-8v$%jpF@Ot>S5+#1B!DVqacZ7V-RTNC-*hI|%?*L8w1c$y_|D1H&d zyqsr(H-R>T_VtP&i4+sX$k?p~i!=hqQ-= zqF3NMkn=8!UYUfsS?rS45_oBs6)$0Ji#56>VPo(QHZ2tqAS0V4pY2N$mq0DGr^5daK;j>8C>6PuI; z-K*kit$hipl`-6G;EBi(XER_t0Kim>D3+=g}^;nrL1xuEq9doFCf-<~t;2(<9!l(8qAR{BBwIx-N{qSy0izd@Nf2$*p= z$UU8WlfBBwJl8*JebdVP^8NuY+6rf_+!$lP`v@^lD^ShI_>FkQZ_>}L{M>58f4~s` z_3dG?8I+Dw=}I4WCpsReJ3n4f((yBBKD?_NLj8E%R9s( z$nXeVuTd_vUP4A%H}T_A(YWlZe@ZWOky-*{NEUz3|7C% zOIDp*aK+XWla;3d7l~(k_qsK@iwunqI40jMQUziDx)^4+xHTrq?&l`S6WzArwf~AQ z0yr`)-HUL$wW1)yZLL^FNBKE^W5M)MDev{-eWxTL$ndBSNd(hJrz|fP%Nnr=GThdu zXi2Jr?~;$bl#jvaT`)Dvtv4YYXG3?oOY7|b$&!-=Ba7m9!+3k8cgTzBm7=0kNu=Dm z55~;u`Mr4G$TZ%QuAb396u9*OoHoTaLBut3@{XQHPpv=k|6<2~uJa%LSWhlzEUbVF zsgg2|;?pd&z6p1urEB}7n20Q4F+9~c2}dDPRNuBb?(f0^r#xU<3eDyyGwe;L;Q@ z0)WZiaTo#coD?tu;Ib4j0zGBWEU0y-KkuM%@2#;Y`WnqNKVC3<`#djVSPnud>p|J0 z`$yk^^1b-q#3ca;i>7t9Q33h zere)R9MSPYZcY%z7r(c(Tqc zHNg`75Kj$+=1^W^#&8_!>eAi@<88PZCwg;B822KR$=88qW#YwOz-`Nd(BxA#`Sf}D zLea^`P0mg}jH|QqDLMIgv9e(URWNg}&OM*^j_{_=-$E?h(Zj<&i)REPH5b~dt)i+^f zVMx0R|FNvBE&bo5)LN(Ne`AvQ&nok`CXUa^@s`Aqk>&qi@jbDS)SfmYqkXJBJxX?F zWz_4Ml5HWPI%4}T7tA_QE!EhkI<``(gj@T3+Xq`-EjRb9lw0d5ubai^=Zl!DFGGg5 z60jYs#+(jln-`T3OGQ`-D>7BwZEd#S+H5uN_;p-MlUZL#XLs`Bn88@MKm z5j<(Kbo<#Ri(^*IIA)tHj-6x}uqbK(ip8DrTFgO2~TNfbBHu==1kn*15@9Dx7dy46MyJm7LWFRSJCdtcg3cZzGCZl zMCc-FGi$m%)?#b8H@C638=%L))@d-^UgzSK?*^ugH`7MCys-hQ5xUaV0=IKw&@7W{ zOC6T27NMF~H;abI4$FPUBB-0?W8Ex|8jGM=mcYz_{f#*#GXj?Vg0}Xms4AB{|C498JlR-7P^!P#REn)pLsgO8=sHjvEW5$oSIEC2|6MBY z|573Uk`SB>9>^_x%&oC!bvoN4s~_hUc;4hzY<_0M()!BJjUuOp+THPH6ZEI#?_m-= zK_*XZP1CpBdic*09&I3;5oCBYCkb&Oew`3;8saaV5Q3)l z<3gO6ZmG2IBfcr6qdmSK!H?zf`-)5^NF&nnortCLjWT1p(OrGT_AtJ?w6HPUb6fBPTnV&*t@q z$_DMw&#~^!jgt>wXIa9SW*+u6mKJqt1=}(cJAF5_cE%QwO6(FWx|aS8Gp7_Yw*S7| z_<=6HR9?0ACyB(#E5-aSOnVJSl8*_?$7;*M@}l)DN_{bT4a^?!53}*LOg57KR>-Yf zt-*F~kl=KU-81 zNl6oDc;4(5#*cz#fvt?%4o^pCZ0$UsI995BZpdRdR3Ys|5cX*2vI($fedr>T*>0upa?tqZ~5Mm_OGdp$cE#T&(ouKs-?%A{8XD~ z{mmRmH1A3Ix&szK#xp4n2WgqTN&IAQ$_RkXDPRQI{E`ZQ2TLQzX#~LYQ@{v-D^tJ- zjp1HyJ>{Ua(s$@cfo+B~!vTNC{6YLnbu+6vzj%~{+F#};+$PWHD{^n+r(6i)ukyS@ zaNqVYXwukM06bPq_R_|4BggMNW=_5!&5jY|Z%Yao0Wg^YMgU;Db7eH*xJ1^rffBJw zGJBSvqxN;au@Y5m%(+q7+Dz_yny0h7Taz>Xn)2;MEEj_427a1*u-$7SScMQlOFo*p0jc8onh_uTr`#5O@V~Fti$MR z=IX!utDYj|!Fbq`n9cs8z`5eDQ?Mqz+Wg}Gz*Sdkjvp08%*>{T_T+NJN1aOw3{T(S zF+GKB&HB1GNw>cVG$Y9HXaGq@RgD{k_*-~Y`_|A+asz$Qw{dZLD*hd+c~QCSNdxs6Sr~<>pFQ9^3~#? zTYQ{Z;k?^cFWQ5k5%XtIDK6hpP+{9-B#fxkMzzctwf$LLFm4T0Pim#tpT!yJ8u?IzA=oliqhB{5;?gI$G5UW z+sh7ZZ?Z$%$@j9{h8x}9?6sat6|=6T>St25;h(bQbAO|3Yi7$f>dN*@QkkAk8xKcw zf;J;zI3vjLXufMV5<+cjUw*R!9(X&Eb#)-vk&&Xu2xwteQQen<}UsTq;VN9H(-G0?he7)FN90y67l&;&pS0&hd5ix6# zhPaZm0D)J`TZ?e)?);0FJ2N-)sJ50h7x=juFPA$Ix#W}P`CBqTrCUuld?!=%g6^6e zOom!-u7slzCc^KEnVrgj?eH{af7@y4c$y9X+xFA!@D;MTb3B8# zr!+*HT-)iRs3mU9vH4`owvZ9Cn?sFYQbm>yFaiKMJHQA4#N_}ZvePcM45t(I+PsS> zGP*>0An$YuteVLr`d2c~q{C>U8F(MUyLPqQVa+|<(|LJOLkz4eg81()gaMkf#|vm( z91{s_qGuTGn%fcm?BHo)UF;QYqArwd)+t3#BBWDU8Vn82FW#>M7VC_QJ4kYzaq)4U zF&mX()T1AdADuFhEyuI<2P8HZV_&;l_HoavTj0c(IWUa#{CIIMzwJO#4zjMw=RQST z2b&xvqqrc>B0uFdH{(-?OV9`~6rRmfllHC*CZ3%%;mmC@DB zT#p&548;qHwONNiqX?s6Y4O9Ap~`Sq$64T2=2sR}YH7!*CGu?VGQ_inOVV0$$mKri?eQJ&fR$=h=!E+qmqTeNd1*zAbF+#-%tDnj7HDiS0uN6as{4bd z$i!mn2i9e|!xYX&{JzF;(GB+=W-Mi<+*@#}Xkxwke%5T%u^a8x*m=F}Y?LkENmf%s z^fL99$v0uOb7vi|-`UfKH*fOI;us}_?3ul}3u!0o$m3u&XrGLMuUg<0I@6Z=Aly(C zHs(SvB}@u%n&F4E0vjL8SdDgW60CT`z6z!Uc}yu&MP<1$K3XYQ9&HTkYDE1Qtt?Q& z7bSd2|9_PVH>*AH$`(TH=3knR_ax0qFg~|Z*b$r}QzZ%=OA+4lSV+o!NyJZXpQ=(a zt5gb8w~{dtyUo&+B$Y(lyCXO)jnYNu1;v6j;zV5IBVHlj+m%PtaF&mIW1Pz+_hal9 zsVyBxn=qYjwh=jXu#}Hk^@SYfNLB~)9l#QyGlGYWdA1%%O$;5lO>M``2 z>*zYx_{)Xy`JxXZ1AWD2R5bM@Y>X6Q)YY&#uV8(4yvPYqxeEoC2Q!&bU$W4}tOCP` z<$j~SOOx^@--3)Z87Bv9GwfS;Zh>9wR{yS{x^)*a(tD?g?IDN?h)+f}D48d^+jHx*(7U2n7y5> zJ1)uEP{~?^WSszxK#tN?k#eVOFFMBDEZb|E4B5b$bT*D)hp-Nv6_pVO1OMH zKbCLw+E9l%Ma`YFc+F~8CtzP&I=a?uy^&NyiEpKz%UoB}I~{rTrQFe^F{;tgoegcX zJYscRDg?D+Ob9w*jWe7vTan@NzS@faEW|8e!v1c>xum(k*_JA~z4mwGxXOV3mpjJd zpGo8IijEVnD_FMb^;IR*__39nPN=e1yz#)!$T^EH2h(dF*`No7^$D||&fHF$=`;)G zB2W7TdIt)bO}`z_<$atQ-AZ?uz5~~IZ?ql>7+p4-Z_%AdEhIKy-UHgp<$dAwI~4cA z={xnfzjYDaB1Sz5XWj zGEy2^-(M=O`ju;pW=FV=vGsUM7Za5$z<6Ni6YDh{SZ>l&B)Y!h$k@bCab(%VKyl>Y ziT>iqp%ca8=v&D4%KT8+aIY~YLi_hXt6)2N$=<$%Qtho(gEg#9a~{f@3{biA_&bHa#xqK-k5hD4_iJd~ zxl-%%vw)V;rPd>}z>EQpb$~{z)cVD&>!MQYZ?mp5JK066aHZvKn$a8u*>`2BHK&j! zj5)Si94Jn!cWLNI4yBe_gB_MeNj6*7kl`37FxN}{sPrE8%N>tD?rfP>AD<<6v|ak~ z?&||pVzxd))dw$m9K3p$D){EERgkaA80}#aHTjb~p%?QzHo-|4Ds@St-Yv^UqtxmW z(;nSYY|JgC5hW$+r9{%4@~du5ibK2Zwd-I`+UnGsxEu`iulYUIQb^rveuB$*4jt;R1kGA7kl(p_ zh&t)ruK5Ht=|kKTFy`W1^H$<04Xr+ocn(^%rs>Z)y-NQVrNGH;mb*<3K@j_Q)F6=6)LU%(Bc@gZZ zPC}ii5oO~Fb|CiPtz=Z3usK-CkIXw87dlJGduu~5oPl$lJO}U$@f=xkR^mms8m|Cc zIe~OW*01gzqO~p`euA2tl_IZ9XgDbz_SoMae>{i}CxzO|xtY3Z4ABItyDOMUzWzRM zWa-3S-bget;*IPxvCtc-Pt5m5#wX@^BNG#4Z{)m*z#G|{R~?3|pJF7_y+pj?y90OSt9v7(E17f7pj|YX z_FR-gSC{;eh9!V&#i|9~$l?3;dLsv}nCp$4y%OsDRs3vOxjx_A+Z(xh<+7c#>W{2Q zvhJRZV#?tyys*!ep_r7xBWF87^-gA-4*5bPaz#mza$$wXdeAZR>vP+_W(UDY7`zU^9q}iBC(;8-c z9=#3U_-H&FwoKStv)F_%%`RPhYlKn3-PlpW&~m!5Q-zUaH+Hr#bf9kR5@BdV-B?T5 zU0H04uyx8{4i`^vb-C1m_u=ixK+l9S1i@i(O`?45sy=@$Qe-`_=u)DL^gTl0u z=#teV!tTjpj|ux=7W=8Nd$ZW@gncNB?GX0iELJRneI$$3gx#0LmI?c47HbN-KZ_k8 z>|4<&*eA2tWx_s{#kL6hbQXJwu+L<%*9vEcSh2pU+~y6842G_BUagSGw|2EP?%d78?-u#Vj@|>`Pf} zLfDtH*ji!iiFK!Ol(21C?08|C>bmlBwy;OC*d@Z)pXlbhLfF@{*tNp`Ba6LK*rQo& ztFUimu{(u*GmG6T>|0sv0b$?HV%vm$CyPBM?6EBNQ(@oDVt){}J&UnS+c^5YEY>IN z`&n$EupeYGUd-D#`ok=?pRgZgu_J{2IEx)G>?c`ly|ABVv5SQLXBKM-`&ky75%%*e zc9XDQWU;NnWV!BY2X7bl%Pe+}u>a0tpBDD3EcQiVzs_Qh3j0kK+b-<4S?rg>*jee$ z%U^{3K8qF0V1LMBgTnrp#g+;CpDflC#s)%n8f%69DT^H|?9W;3Oksb?ViyVfYZlum zjQz^)G`0x)dlq|%upL?K)xxANb=Ak4h24TS)rH+9>}EfM-D`YV?32P?mBk(w_UbJ5 zsIb>$v7ZWiZ5I2Du-9d=KM8w%7R&d6y&;Ru5w>^=r&tjJeyCaKTCG5^DcAc=t34&thAJeIbk8DeS9R>^@|9|tXR%9!-IB#x!d{idt`hd@EOx!H4`s1igl)@WZxZ&^EOw`` zN3z)6!oHTpxMmo=DT_TQOt0g2_5DYLd0Ff+VSX0-nXuk0_6K2wEXIuo8%K*-EEHDC zVl`pqEVfwK+$=UGtdhkhgbie|wZew7*s;PEX0g+S?UBXK6}BXcZ4fq^#ahDl&SG1H z$y(hd(-~p=WU-eBt7oxS3TtGs*9+S(i`^;g;4Jn&VMk}N`-B~v#U2#)%q;e>u=BIn zqrxuAVvh;CIE(#I*tJ>g7s6hc#eOI3x-9lLVb^D|U>?|uv)DXgugPMIg}p9|)rH-W z#r6~Sxh!_5u;QMXIyz2RDT|#cEX-mT2`gu@mau)Y*j2*nS?qdY4=>N8dy}wdj%Bbn z3A-?h-6ibeEcRhx&&pyCfQ>BcYJ6W5FxCZpUBJOzz_$e)+68lyVpj^QX0hvp4Q8=d3LDO1ZxXg3i`^w`VHUer*y1eqX<>V0u`dc+ zlEuC$Y&47gRM^ri_6K1rvKX&OY#co>i_H_ZHj6D0_MQ~$Y*b#ZE5CU?VPpFk%ye7W zj-{;x@sn|gM-C1on4K{?PmVLWGyoHN$f3@s@VGQSPOP?ncU;c4jw-&h-LiRN_w}%` z>T~ndQ{iLpp)tQ$x|wZUyEe-m#c|tbyhiX7c8DM8@~FFg!3r(#RM|ak?*?;lgr#%- z>V6OFtRvaz@W%_5%XvL+n`1+$?ND|NtNArDg>mDn?a%a=MwYL;4uCsA*KY{+y$X+^ z_2xCQeB$yh*XGsxRq~6((*zw}zc9KG0rVB;Phb-Nsvn(;OANe5a8hApxdR$USq#I* zySy*UJ1pKkXL*N9BaPMCJWawD3#Bw#Ebr`$Z3qrKiesUL_ymel?Hw%p9Ldz-Ot-^% zjFX7AqW$P1)eiOG>HUe^X_6NkE-O~?bKr_zsI%$;7VG|Cp>0|a*U9} z4Vmxa*oQbyCyrW}_t%&GzQzKtcyq+~z(ElSI;S#eEMi zSd*`9SXtw0t>_sDBW7Ql8=Yz!Vz$%6q?ugcq%^TIC?&f&Ni#V&X&Yi#-amh0UZLc6 z8xRp2X`B+|y?3Dcw>>{NX>?R`-K^c3a(5O0uhd z6uasw1Er*p$Ycz9`RdV9armr#7kUg8!;!?NJy9+juk?PknlBBn?`P-Ci89%Xzc1N~ zPsgqeF3YshAa@seUZ3XKUB2e7VCZbnyCFm;4i1=YzU%;%v;$Pq4p2!uKqc(}mDmC5 zE7|tZxVDRn?ykpG57|yJB6}kui%+I5?6g6Z7f={G1@cl?d@1jEX4%JVDDTc}h-&pj zyz=hwQsJ{b>IHI8AAarvWchR}L%DU_Y{#OTo!N1@vNQ+XbBOExYi@ozY<18k5e`yy zfZ4kr+gFhY_h1Im76{ir^SN)4-Z@IoiL0mXMQ!l~=B9YA z9^@2*OY@M`9AeP8(irGqW2+(AMlPr4Eefk1<^@3ZtlfE_k;7K!)e968FCZ3*gq|O8 z3rO*-A-CV|n=--Xa&K+lzWIGFH^fM?Y~>kN&X`K)a8Ghv%f|iWl2|p1#f8=-2)bC>%G+#Pqs!DcH}W%P<3_OR`-Nni zdro1wQDj(07n1urX)sm+mwU7C@T!f3n+G|6Y;VJGt@1zivpMo0carf;in-^4J{>NF7@2TT$r4xXOlV{|3b}PtLEfU=>Z}N6d7}~3z-sD>$9WbO*XJItT0Uz6Me>QnJkG!HAP{RYKc&E4bhdbx z!pl_zXX|+2IRcgeAmNoo7q2G5u;`LgPBgV_?+DBxE6;yaYoBRxazhxPF%s0u>$?4+`3InHUYa{Ji6oR zTy6!IfM28fcG&RQZKg%r|K~ukW|zWQ#wSHI)ce?W&V{RrEtEUI!mC{3IhkV(gNV_P~E*ze9QjkR}iaG7nUZirg?#^)2 ztXrHP=n4-Ky_`hmap&@m`RfSI-PYv2jkXbn+x@Zactp>_(OfprlU)B=tJQ`g^p$X+ z2T!z^(A^nZ_geQ6dwi+b`@PmfIQ-}pDudTrIGFm3cy^`!Y_6593A|HYKe|a_+<8*H z6+h>QoWBz1hrQOBiiSme*j$o0P%^?M*Z3w?;>ItcB)raSG0x;JMixu#hE-jbdNxt$ zvea|!Io!Iyo(o#sqYu8Y^<{f5YW>Nci(8}fh40Zi-JYzX{MtZI^c*GY6<9pUby?y{ zE+ObC(T0n;ACUI5NPGIZc!z$Q>79!>@USF9z!whAdENh zqn5x6=>xsHh@PSPvgitYx%@_f;^*@-yt3_F3%a79RfpqG-vw`7MS1cOyK}re;CzQ? zL$$8Q*C}X~f!si#o3+A-DV2l!b7ui&Jq8mS87Cnb8HfDn7S*2gr>{{&#=5SvrAhnc zz_YvPbY6}nq_t_@a=ntQ@PzPy*620F-aH>I@g!~n zv945GxlWgYl-z~PQe+(yx?VnJf<}NPH+ScwDLH!!#Y*pu&!t7dIt@Z|NG?HtH@Ea% zt&)&bZOFQBKAr)r*Uz-}#h zEOmAXbvAo}y*GIW^OC+9@OGZbHv>evZw6ez6vccp`3{h&JNbcrr|7#xYczX095(O$ zt%rQ6Jy=W(?0qDr!JW=+mwGV7=5FKfi~MN|djSDBW13^I$-R`n5A(O?K7P1O-*Pai z1Z{X+%N&~Ha{&UT-o_8#2oMWXdcy1cyh-INdKJ~?*oL2g&03FRTd-TU=(U}A7XD)f zmu6RFi+0cZx=v(^|1rZZk?pa2-q&{`Te4e*E6)=p0%jt#`ozA(|x#8))#_=Sq4 zO&j8#K@_x$q@Y~~7SsN8bvT9772xDqr*Yq+hZmE}puj|~3wGZGtwP_$sXeGu4W}Wz-u+>^M3RzC53Bk#&tx-b$rI9n-Tr!H%Yj2 z%rA9alyPmGb*=UCcD-T}aMo$*r@1^?n4&0d`)hp+ujoyRDf$E9 zw-0km4pYakq0@N(B%C7Y9T?p(f782i!_rx#%bo~wncCAkNi6g?V^`p=_vW%f{1W0` zym|pcrXr8e!hhUf*yvdhe;SfcO87D3UKn%lbO8OJ9>a;Blih0KW+vm^5Ra9!WR%E< zTLy6O{#>LYZ=Y9YRiF&#qcp4bzK%5Ok)^qL%4=6uz1LOM`&3oGCsdv4>&C45w6=a7 z>0hq&`v&{l&sOCz|K_I@kh?{u6vhd=%=P*bcEN=0s&AY-avvx5@uC-zkDwV*hTj3i z^xDub@(yr*M{r46A1syPm*EjM7WyUUcWLU^U-GS{sOqkoa^KJU8F`G!BNL+%q3!5- z)1@2gN%9L_^5X;3cT){m-tmraB&7}Y+6LI?$o+EM{f#G;;+r7Kfw2~%@eb?yklSMU zK4<`8o~^5Bj4qn>=@o^a>Aoq>ixw(08Zs(MV-JkwuY~M#p}k@>(G@qI`!aiue|x8o zmsm>CzFnNOK^925+3m>dHQkE7HCO*PcW+Kt9lzhz@!hIpt53ZT_G9?bnJeuLs!QvL zVo*mk{ur$%+(cG-xJs?lXq$Uj+wLp6hFdHb=oc2T8k?FiN@3W)Q*D<#-fAZ2jYd*4 zL%hbXs;Q+lxXW=&H%PXo~+r z;%}*5Yz*NQh))w>5F<;cKKi)06%8WX%#hGi-ris};f5Elw51d?#XFxScV~7S*~3q2 zignkYBC;6gY7y4Q;dH;kEmRc0~A4B{wG3)^)Z+OW{5743=rMUKUC>?Oyu zT(2FUoAg#KJY}`ew}@;Ajh2fIz2zQ8S<`)t0Qg`E7y)o^3K#+Kp%gFz;KM0k1i(j9 zzzBf*Qosm+kEVbT0QaYW5da@c0V4oDo&rVyd?E#m0KnMd%3=h-r&7QOfKR7@5dfb_ z0V4n&NC6`NKAQqY0H7kdREz-lTnZQgfIY!+7-4t(oJ70VzvRlnHj{D~Eug-JDtG4J~udNjYPxcFXtjF5Jv{v|zUfagMuftZCp z1m5JXqnI_DR9=Xe;~_YrPJkm2!1 zaVE^K6!Yg(<`X*1f(-9wewUcPkTRdxVHRX~H}kz>emG@5slzPD@NVW$!tCt`PENVZ zuYN@9VerD;(J%qy`>B<3~9=Zia!exwjboTugItHl#S2ffWAWX zL!$lo-+0)UV&cyWDEsjjcoyP^`Au$|zPDQ&N!}q}nmhSq_9TQn=Dw&`uo{h6jG$YphKzKZC&^_h_jg~Wl9-Z7)9DZc zx#P}pdC{F;YA5=)lN#3NM@<#my0RBxr3sqDe(NTx-YuTIXqA#4;isOgyR=O=+6hFQ zviE6yeimgloz%B&YvxM3J76UxwELHDf@h1hn~v_=$G)LSBJ`P3rSzJjmz3|v-Q~-u z;`KxoXGth6+yWKiDM&y5chd7+o0Za-RM(fgtIId7*+MZGIi0yLH`;Xal16vHm1#Zt zxgXL~C&_od8gS9b7l}T8zf#J_UlM)4qrWWr-H!f>==VbB<86>g!jGQhyuK>0dmR0U z=zAUgHPQEp9x}x!AAcR>z`r3gN5=nwoA-wq4ta|_M(GSU-9hGQo1Y+9dka5&%`tvd z5uJwv`WvFpcl0+!U+Cy>iN4s;-xmFBM}J53rH+0~^m82jUD3~V^mfs)qrWHmd5-?R z=(eMOAbPW-kscOmNB>Cl3q;31hNKu;*sLAbRc!Ms1$Ut(*O+mkWpcrFKK_ZqU?SkH zVtv)&F#D=Qzr#y*!#7*}@yCd?eFHyQxR>G=LupGheyI`hPnBBt#~ePIH-(oK6&E9* zbFCl&ec$zPsqaYmMf`o6zw@a3`8@ScxX&NemZLJ@WQS0`dqD0RsA6CIiO$oA85n5`uBk;SOvBU4W&0$F;T1EaSYdK_QJWhu!P@Knmi zyuo*A6HCNXNtVHPhenj~e`u+xCR0{osfmsw6a&GNm1o8kU*GxKUA#f`6vx>eK+4H~ zNhq?=Z-y`>+*Flcrtp6Y{*_$f{(wdPpI!OGi1Fde*;0?f4ZHH~sIa za&QWHa5{=0!@HG({6d(&m@=Q*VHRX~H}f(ve<@`?t-~zH@NVW6V*YZcQe04%xG~=V|!YMS&-qzZ1&sZkm0o2zFEMy zuZG(*wL~46vwD&5)_RPmF9k7!7aGEYL|4yXT(%D8J0loRmEAIO7(Uv}FWq%(F>2F=dT1u%U2a@p6VW zOO!)8ovC?u`qe?X{$t(zC*A&ESsy2>)PH4_oUCvE;rjOpR?K;dYwKPSPp}p)rhFoj zWq6cgB5ZxkSTs-cd#RRxX|2qaL`x9!%-ytmt#KdGlksKB2!OApfDx%p1&^<%9!3EC zM+z7L@MsDc0q~6!FaqG4DPRP^w^G0e046e*A0q(1lLAHnJeC4R0DLzEi~!i40!9FQ zF9nPM_nOu-)S%-0DhGMMgaUe1&q+V#%jua zAA0h?@LN7Uf6Viu4-sK>G<|w`I3?I(|4ka!2qOD!3K#+KyA&`2;P)wD1i&9szzBdp zrhpLu|C0hn0Q@oqi~#uG6fgqdPbpvo<*71;j`4gUW0TI53^POr_KEZ+#wO=3aB~?v z4fo~rRK&#g=QK7W0REB!MgaUZ1&lb?K0EG3$8dJYi;m^jtx(e_EkA*M)BHN}vu#hU zeVFn>E|5daH=3Ir9R^1O_!970M;8bsEl+>szVnx2jT$zL0E6&pq}ToXKEPYa@Q-K%gwUuPbpg%c$Faxye_MMr>0_beH1{iG%1eg1{K)RL39(2QhN^$ zd`+o1SaV~g_9xQehV5(dZLW^~jH}sfZ^WmsSejBsiv~_9hsDB_O3F6u^EyFGCY(8Z zZLv503!$eb6uE(BeA3d$eQ8>2DR(ZRN_k#Pd8mx&l_VSzyf^-gn4h-Gu_&EKjL_aWb!y(e9dNx_7k#;*`tRyg@u<%e$v1l9H7Uz#&i|NCz4!u zBE909#DdFjf!|IdT3_!^8ZT8E%wU#Ai6?1b@K73M9;9L54n7Bxq|qCnv{NGeVw_}C zi(hPjokY?!ZcrM`f|f>wCuv}pRvJ|vq+#HW0E@9JM{j(x(jb4*#}4QDGLvU-6d|H; zd$Vlk4z+=|j2bTv+sQx{r>5-bBq6j87Z$_qv^?$_oln$?FV(Bcij5UM3AV1bIN$z1Z(79r4tLCK>kwX*1sh^zDb+o~RA;mGM!+wP~i6J(OM-YlP z$?jL!osQ((tG1B45jnHRf^CN5WBI93o>`fc+DpNvPzuBLp8SMtckjiMp~r2aESJw1 zKU`qmL{3wCLzk{nObh`iMqzs&exf=*W9%cBCKXp9ZkRjgoG}`0SA9jfqo3>clsolx zks3(Hb-rBxxc0Kl7w(REw)TuUt*7*vtuO2~`A&Ud8_LJy%6(UT2~6q>3skngoZoDH zIRVJp-5OOVM@e z>uQa48a${k4IfiVw{(?aqQ0(??@sllxC*i5dOP(cXS|XKX8YG{ed&&=cUdc^owu?3 zg;N^IQ}u@>Nf=#9s$LtrS{OaYNY*Z4^jwjx_o*|E(5j=$&Am--tbeKdH#_;~7iIYu z@8mvM?ym4xVQj-1Iwo8{Jtiex$S{ua--?}a)x^obp* zK4ApF<0)VSKn`h{9&ZHmUtaH8IlV2qM5*LsmX}x?l{H!T!Y0|_ihJxn>~w^!b4lF+ z5i8Y(oi7YM+v`K zs=Hl?I{-tzhjln%qZiS||M_6?5rj!Czh}$x%Ps1&UohhRFI1~=wyP#Nn;*0aWXBx< zFLIs&Z5HE+6@5@v$*_5mbHzs~Q&-?Uergxuf^R@Y8&AGwG~Q>JeRZ3;(FLit$|U2$ zxg|v^V2d|dEeuT@>6Q({6Kfr@cw%KzVRO<7<0hP>!URq0$0{tMQW~84**6I=Hx2OS zP5?pE`soh90fl`DIbLwz(5~aYkr371pjFZ4(WNR|!DzPqmIGA-4#V)Ko9Zx3LOH!k zUx9h=Z=DJI2IKWusk~enV52vTR%o>93|V#dYu$G%H9hb`GJMT3&$T4&P_H!G~RR61d`{gDa# zd;#?flCI6`(H8IEjvmF6euGl^xJ7ZjqC2h|caG~Oiz^ur77|`|zE|aQxmOVu<>Zg} z$9E%W=mB!Cty9r|75*;KUbIE{d!W7OGLbeAR2u6B!}hgk2As>P*l;i{jDGRPXmJrVv!Dx2j_($ld6*_9gZI&dBcOH@1@Wg#iNoyB0t)B?3 zz0urjx3gfMZ_^d0#zvJ$9^L+B$~C%-3iA@tpSQwX1-X2@z()qKx&(Yh!4A)iS6X{h z|I>eC(zb*Ajh<3`4-9_XPk`DAtfA8ojRery#M(;UYRl^Y1K`}0YbN0mpxqeb-| zW#mfGn8hbj-2~a}0~4WbZ~3=Gvw$YXvh#OD{652M2&Z>C8Qlhl8^Q%m>&H6y^gzn- zR&hLqra2?X@MslM)Nwr9X|E16YLx-oYv+4|+By#yOn*w(2eo?o0rfOMJq={)shXy6 zdnXTqruF0UFqm?1yH?OF|K^P;xtZ)!95$ z$wM`hhxus=Z|~$m(6oMB9%?BEH+KbX_K?CELDTw)SZ6o%HFkGua*#X>+TL-soR8V> z5BPfG@q_^F$YGE?45oS5q0Vvw9M$=a3kT*$CyMOL>zF{$ei5Gfo@1piz7uzR9d2{I zU9M|W*KKl5r>@)Onn_)6mg_2W#U~LrNu11M{MCGnasG~4o0UMC6>AnlX<_f|h(pk{ zeoPz@tNuoHPG!!4n6NmAImeA+50Q?`wVkRO-ye@-iK05UGI#T4Qfbc3SLSXKr2`8= z<0%R%4mapMC~SWxGaHxmv7j_^4Nc~n<=5a;nP;-~^3f}ZhjSR~WFXG^QZn6;9amw*NIrRFX9Pg1s?=Q;nE;;l9qa2@=Lxu%8J|l;W4RXlNYVRt_ z@hLgDB6>mmR6XKTXf6b_=KIO)-gMq}`Ca!b*i{O2`_Ga> ze-Q7l6rRbC2Dws<9vQ?(D|a}aX$dBd3oOONagiKPO&rgX-jtz30k~l7t z#%d!ezT?g>Em5Im*j@ zEO$&#Ptu+i_Wa~=N2}f3K)ZSk?Z%InBh7q#8d17;Uh~lb^dwAk@jm$Q*-n1P57)a3 z5YhAa;Y|KYPO0}o>Vrc8bU`#qo9L2gl>I>Oc|3`@Vm4jF?R)fbB>yn{s5>)f9q#BO zdAN;6XTuuEo%NjD91&|2KQ}5FyjQj=h>s zDkTSUL1Z_0CMHl=cS2jU#_C<;Aw}7uF6Q|Zo)a^U*O2$&LAm1Iqi=+cxPb2&cJN4R+b}X8-**}5p2rmkR?J+ zf!Sn}AhXFPz-+P!Fq^CayjRWOW#^Yd4jB6}dl(HG;aVPTMzSzINJ80#?O?}t$P=(# z+sSXt(nygW_JrJNVN&jOPsp8?H03`03As}-q})e5A$KaHl>5jm_o1B@5+8+6{m@QL zrS7z%Qg^3l34bT^iMx}%#NEk2;!c}J{B5=JuJjUjC%weoNiT7C(o5W(^b&U`J#%00 zmW2yfms^LR{kNIJFzm(OAZ_1f&rUx(F=SPi{2T@6J?BSB88u&`77fey@J9CmTAeVBWr#yp$ZHIQjiXVTGpj&(xwc@TYx zUw4k_iTQiG`L&yv7z9NQJKG>ur$uDb%#lU_EKUI<0QN`$BLJ49fDr&ADPRN#Y>>w@ zD2x8_+Ux?nQ+uyjb|0q%UK{NojCvT=z4j~kjlO5-3q*cb|UJ$ms#!JPH~x%}^>=cADDRaIX{6T=4c`}?R(KfZ@w zvnJ$SOsV}}@62f3{U+7VsDBt`xv?T`rw;7$b^u==vU$1E7oR03W$s=Lwv%4Nb`{gynU}5xUJhd5QQ1lzQPW5V0LD6KvpI@#UTM`W#QC$Ol0G#y6Tg zDMK~85hMDeI6QUD9Z8fE!mQOrhrQ_TGs`mZ~{&ajZ{`DQRtuUZ95= z?xYKyh+N-_Xs5?hkt~)-wj<9OL58#8qPH~M%f1U}gIkEBIj{9oqHUeN2lK)@05*IW zN3FSO9Iefg!?WZfM=~;w61$DAMgS~L0V4p0Q@{v-Whr0;fQCd9@$3xE?X>as6n?TV?@e*j`3K#+KloT)m;J6ep0^q4BUV%<{RwG~i~u+>1&jbVDFuuGI5`E305~NDj3B?)kOckqRN?sB z^SES4us!|gS`}r9A3bDGZ}PM>3L^+}dI}f;a7GFk0dQst7;%dieMuuuEqWPI^6jz5 zAHOB;b5A4>Tx?k@IOotYtTb2K3rNe6U z2Ap1N)`y5?ucFW7?ohkHx~yY}Y6j(keNVct5Iu!yzrWNRD3#(go5lDhV&Y}*==I9Z z8_7ZYg@ok=n9ZXoAP3$>%%)dWd;Lv9Vv-1}My88vWtAF5L)nP@E z%x5o#-^)*7Xw{D6q?~%1+wBvcfyC}q9b8V?!l3m`w1?y^JjZVbRkcs3_wp|9_Eju5 zzKE(!eP284>y%RBmM(>vBKHo`@HbxvH!I40qZXNB247j5~s}yP}FQ)Q9Uk9ttp1znqXUoAi z6RiDeBA5|mc=S|hyw6HG-Xf0Ih(nO!5goKK{p^(EHgUXG9D)pwP7uc>DaTvI@j7t` zGCV?&B4T;6Qp$}9F!Ter|uNRT>vs=~duW%cg^<4J+`-{zxi#Zb~*QCsL zG9Fizjy`xKRU4JBm}ka>5Hu{O62Kh|WOclXqHa;`!X0|*{si-T6Mi-?@EX!>jl|7S9xx8o*zv-^{n;|^g7SCnx~_0hpq+#LF-M7b`E-*yeW^5 zR=km?{&}14S5&%Ib@OE%>SG=1;~mP%VSJWrqf917nFNfotQke!CNa+>l-(_MK7HR7 z2}Ur?UyuSu09=>?MgUxt0!E}7-Vr`0gKndEo?AyU;%Bi(zFU~DDG&yU`%W+7eRTx3S?wEIUNA?f5$v!^Z1kWXcQ zTNq23a7&FtPd}#0`Wp*M@lPPQW@c!8=&$BZ&gd7o`?lATcb>o3{m%1Xy+|dwxw4U4 zezLQ3txa;0*Q?8VbJAr@+p2oG)LeR#xyy^~*AP9|G3NCu^epGy8BX?0yE*TXbAt;w zw&G}u+s@&QuOOA(AT%x0u9tCpbdk|1%=PC=ltuR0=kwIRJ?whS z<=Y-5f#}0THuD0gY5laZ;e|6>phliyTr*e7OFtvaMwZ>`sB=cnanzEL3lgYrUB1GPcVRl<- z@vQ#R@L`w=;W2;h*N>dDdTuasj{Bs5E+cKU0hg_2h_xGUpM)UB41YTKCNY<~n2!Ox zVD+3}Nf)*X>~b-NT_AUijkHz|1ta}kV3E5euy&Au%i&>%u@p=7YR!!=B(vB(EA6`w z0L#Sat31cJg7q@bKQ7va19A1{Yo`v@3yW8G7#b%OhG$*&f>iYHF!$$=Nw|}!%7sM} zE;uGSYb4cthbPd7=I^6@6`MCFcE+>G&j*yBJ2LqxH;zp6(^pJVD0b&(uj0bl{P1y& zBr)Yjm0i+dkFe0ZUzMzK-$FW}>NqK7a$~8?lV}5Grj&(T?(`3>B3I^bj6XGPHpp^~ zwPu}tPDH)_-}if;@B8j^ z;mJDln>BrAPu<0sKeEAYFljY>fx4^PZy|gOB`L=*Dlm5gX#Ak9F0$P&v)w}5>*{uD zx4{nhW)d}++;Q3qG(At_&FxQCnP`>Cu3#?(0v?nTZCn zY&=8N7Qk0({v3%#k)+p55GNr-t4^}pO85i1j5=|!ZsqTjz=;8yAf~vUUDK*V)zY*( z6&$4;glg1_P@NE1@_H`Qylj~HdRn+WpHy_6Mnil?WVRFcQ$j^n==cOk>-cmK6Lvtp zr%+anTG60~^weVg3|ns`KC(XT+ zAZ>VUoBnAL<1aw$hGU`ruu)Baa0NTE^G9Z1fT=+018LFY9r576EMOP#B?PDw2#T(# z>@#pVLVgXp@O79t*kLEB*X%F?i_PA0AYVB~BwXVK3;lISu%Q#5)T>ntgoG#44gbYo zZE%z8;||UL<_|_&;f(LotCb0citq>P5jyE}#!uCjaIMh0yr5o1T4+>ibZSg$Y-(I; zrPRu)6)Eez__~0eJ39}v0oQUC{6_U$7(XzlI+&utG&-jem}0;*AtxM6v0xgSNLN1qNoAmzb0KL0f=(y@LEy%1789bGL!goaBJw2!!=CjLUGRAndsA1gTPvkdvk4 zBoUmzeq5yCDgr<7NCezp=y8&EHw6LfDYt^16nG12%2D*1cDtGKF&NVEIm=^Y)1DWN zm6TpJ!VUWo(8Az`{RH^YSAANFnGvkUr+O`-3^U9s`V>Qez+i_$(Nv`x&q++Ye@MIv zd9>(34DLK=_YZDNgf{3O5EYo#5AJ*eV~~D(5S(si1i}^{9GYqOE-D?|;7bp1TNV{i zwX`6}jzzI$K)bcZ*S1qtP7w(o6~P&EIvjW7Z^lB4o*&UcN8xpX>zq5_7uIy}4xC&& z9HZg*WptUF1>4j#SUL2(i@9vd_!;0 zxaiSqo(dwnHI3bHy(*liiY<6u()1Z$ECRhxoaq_e;0=*9@3JkT;9)2p`EUWobKA56 zKj*?A7tOBckId8t*TM|A1Ei;aS`7yrF~ggB9KGNjV-P{LNPp8aR+{9;wUB3Do_El1 z)L!6~_qHcHUMfROyFb+D228u&JBT;`V)H;JKlcn|leZDj8I*kaeFS!f7lAQ}R^sRk z4du2J*x5pI2E``Rjj%Iz*_XK6*oq+)ba3EZHe{4N7KDljI|iXI)Iq5N(GJ4%MT zgK2x>Z+0EDGc1_@H}@X8&zK79tmKTqYAGk6l_nP>!lr@#?LK1~YbSh0T12|c)N544pDdqGT}4o(fU{~Yb#Mf-hdKf_~x2JQEw{Q^e(A_S8OTTB89UE+8WOE zOZgSl@XYCZ;5Z|}S@b^qrbjyreI!tH3bcMH@H&4-(FdRb@6-cqfgL)Z>(WfQijf=w z7jW-FEw@$lAsAsF_AvZpB)E!>z%PcXcV;P6SBkVlwREU^Ayf;lc1vIFkRkp4ws6tz zcF(=&lSQLfv>EpV@FIW~?w)WIBKT8Y3%q&7o$vJeeks>{@|wnZtx`U(v@h(J;=tQ^ zK7v4tj)CxG`}u#$b_;K|;ifYGj2zB>8fPCO^36WpP3iAS@hcw@m&E2E_DT`U6(-CdPJA8}IL+&zMXu1FzY60IMZOAif;x>*5r?x=bA1K);(H5GjKE)UMgpvG5#kGwcAD*RBB zPY4MLd-ZeDgS4fP`raBZ}E*0sqj>wdg5H`#tf*g^s@A?@)y5UNNrQ4sk z?+w_*;JsHk-1NUCCFx;d(Ojz06kR}CGM84xzfPNq2uL#=0oqZ<-)10{Cm@CiCY%~a z+=P!anv+V{2ye|x4^xLw@~jX~O!MGqO28M`U>foRG}k;Be4$ld0wbQDMm`G1 zLe8j1!~G96@Pr%vP&^pJW85*3Zr56OOqAOnWYH;T58-fM4fgABK6)B3@*xOY7DdAq zKCv?T!NZ?(Py*qx@GZtz+NgvBmB6qd+AuZX_iNC?VdxhSf6+H+jxD18_Cx3oVxeb@ z)jgv-Fd#Ps@}cm|!za6N91)QF3)ty&s6QtI(ud=SD*7CfS9AuGTrsV^yJFEgBMpKJ^1d;`)MNv)|EXL-6|!6uEje_iV+#))4H-R_C+e(nIp z1MhwwKaYN+$8V$GVjN{t;nvS3MnuY0NKHnVXEPpV3Ms#$4UFhug!_B&UA~4G0P(*G z@f$^#pt(V@TmwfzX<4qK>tG1*OZgTG7e90I6{ruvc7tyR1ZwO&BOeVsRf&(P_WB-G zK`S9OEZ+3mEm$<-^A=1YjRyaiLbyfY3y2pEuu{H)km#$A`Wz!4(%m1^O$o$$3Z!r{p}w0OMdrRWAFjpqLML)zY= zGPnXshr0V6bm4w!ePQIe2}YQb|A98joIlbHH%jNUh=kn(w#1vM(~{^;YTPNn$A0`x zzen+Vy#DF1K2Hnwz2!Ljm^0mSg*#5gK-knFt$+sZ^SXzKR5$Hm=z0zjBPZ)NUd@Pa zh_AuG*T#d%KvNRDq1E&l6dK^v>?UM^4rKp8gXg3c&M`lRHcb!o@pB*W9!tpg+mP=G z3*f4QUB2n)1fH^52sj}M1odCq-A*hYxMHb*B2pX>8@zWR2rnFV3a}*o54{M38nuG)7qEkJg7W})C+9=WpgQq0sdZd5c%{H|hEVPf z*P~Rf@U=SF4faPn{T>H+!W=5f3HM^H)!$Erjmmf6YcYXn4^xq-hYmo1cq2)q-&%J- zN=MklgUN|M+?EmyPNrjG-TpTni|ria-X)gH-{hA{m-4Hye4uzO{*A%ws{md$iTR%~ z3uF;IKyQ~dOn<~~EQclF9?F_lkkipI6!=n%KEyX5sILgEb~PCILIwYnpTI$SFnq9!2n#wb z&_m%sfi9;bB?1iIKvK}2iyU^Ku*g+PCn)lw3ZR&dDS}tqt@x|dp46EI6}34Fzm+KV zVtQACU7$A(Z$hCEy=jB5lRy*!PCu{96il;D4ZH`}vDTGRh)IdUq+oRLs=UX1lj4t& zLxl$LFI6b*-D9~=g0#R}KrxwmS_0#WTI--XuEy61*73WT=2Z{`)-kS}r=uUJq}3Q# zxNq2S%fKlNPZdQ&ntZOceHg|X9maHY0^T40EAOYZ_ZaOR((0h^OzubjYrz9N{Xl8( zsUvUs1$c{!o)Msn5bk>WSG5n%fPD%Lo?8hVmJ;b!;vsAeumNnj98q*#<24)UR%_wL z$XHNC>uVG4yTpd#7v%(z(iy9$B50>$-rUwr#}j{*@z2X;9NTv>ls#PQ?g>wV`@e24 zf0f?==dG;>S~>1AQ2R*TVD z0^c?@isB%1Yn?R79d9JSR&yn=@Q0^cQ!0Z2W~1491yqb(h~2S5-I{c!@*ac>N0$C2 z(a?k9J+%|ColcJjzn=SQrY8VEb0R*P?Nsn#KFcI6W|eZ|LGV9hYUCE1EkgRL?kJqbjvSX zo#NOhzyr=ONrbz)(W&7i@23J>Fg>?YRzbE-I#S)rvtJz|hD@L$5U~^B@o4`k&_`l? z^b9-Qaf5_Uu=~UJdB{a$I0#Eg1B((^7FWb??~o7t#f-TNx@VX?!TuxIsgkNmA)y4hkH;FatTBlDfda7g*CCk(m`a zegJsTPE(RV&yGC9x;|^G3Uzge+C@)aG3Z zno9vIN%#lzD{)utnzd@?)XK@qLmLaf%_j!H0a2A1(1zi6S`nDLOdLOQ>~L633Xuf1X2N#flt4F|_{OHrCkV?@Q?2o`N_{DtDd&uE7c`+RZ&nw+@H+jbueX;pY%lNM@1j?AHWr`um}q5g`3VncsM@+2pqlYz?t_7V8@)w!Gp~3#*xnQ*UmgFxaH-%t08E&-Ccb^P$h`ZeI zIGk7#i8ilBVtNioVj8wbKOOB5m!i@9R3K`dF-`n}#o(AOF~MRw$#+0H#Ah)Fz$PHJ zON_q=u81Mbs)%8Bj>EY6kvtlA0JQ0qsyqF~^~xxd60XEM#Ha+!<8z5<(<=#cv7rja zfnW+Rj>K!%CF zjaxPj6JtO+#O%iCzFJe1Q=0W@7A6|Es@%#UMz-n*^4?bHYk8|a%^c!+lG{o9G1*@s z8GakONhjHg-RSVI+K_Rx2mLzW{n-Y=>3$X-Z zI-{E`lFdOzip|!z&JOVanEl0lT~PZF$(KoPC;2YOU~#MqwxwQOu@!yY75!fCI;^w5 zDD2jto4*(UGFXK7=mK?Drw5imaSyDKB_y8;#n$ED6T?sLiS?dE=EWfW#RomHe9n^1 zuOx$eJss^Y8uh~KqAkfjBnOh5M)F>gZ`DP=R$nZKsw8tswgBlbCicbh-$wFllAHUZ zO^sNT7s2ch3kRa#OC%Q$!WKJXFs8F;Fov*k2%4`9!_tc%j&l46%*%X|&C=KT`HLGP zury*vVoB~EiFI_Ec)CZ&p8av4Xu6RB347=)APY#9tv-MMwb=g zE=2UV0w@|D`)Ne<7E=>Z42#q6gb626l|>7p45_IdQ6r{~L>-8d=;`rL(N7Kqe@Ozy zhlEg33RGKErP+R{CX% z&uL&Nx54|UCBzp7WWiq1TqvVZQI)74oqdOjY@#vrm77q}5@-P2z5N^Iy^n$Aa;K2+ zFH{s6vyDpdCUsL{S+4@ZZ;m-7mf3Sa7ElP$PNI866wwi)nW6^K7eLdX#G68xLfn8D zTtLl<{7t0!OcjXAfLsuJ98e;>uR*)4PP&yqC7`QowlXcT76|j#+Z;r68xVZak?0AL zPkAUNS}%G*?S#TUrx3}oR-a0tJVv3c7t@JeVwy$t4pS*nBZ={?7xxjJV%-YL-z7*H z>Q+)IT?fLuVV@xqO4AqQG6={5-8pGOs>2kH>W4)y1Isg>bVo&hqEw=@0$+_9DsqUv z6tjsM6I~P!8dxjsfQ0x)JVLtOr29rZLo}S|ns|p?-c2sAiM>R#n0_XDgek?uFjq0P zG%@xUfGlxM+(xv8=!WQEVm<64ik9n1cbw@2(K(`;vXUx+P<|uIlnDyM4793?2-#RR zA*x8!M7AJG0kYs3xt0pk(!gpBQ=j&7AnE!6SwN#;7bsM~8{px(=`8Oi-E7izk@qNU zyNiJ;i5_wmkPsVyT%xahm|Siqmji*Y_3VUDEHP59CEZ8XXAr|E`2^9Akd{cGr-*J) z%0|icsszIHb6`5}kZ({r!+>DsCO;*Ysid1O;ou))XyxbzC&shnR|={{jDmZP@}Nfu zv5@X!f+Z}_y-ZO=OPDHJvmi%Xfh_PB54upXn<>G<^8D0+sh%TiTe?=Twa$_CENt`d z!q|5IxlmX{GE$bcE8mB4kbQ_=?2WWR4kkK9^sF38)T$5ao|nUkUM6}`jw0$z zF>I2fef({fV~Oq@i2k<7JBf6vx6AQFe~|7CIgzM3bj_A{Ti!*~nP|71Of-{dube{k zDbYSTjcD~?^mjncAUZ(wo-Ech1a%+Cdx>=356M!ZoZ+bZP|haOIXW!o5*5NwV2L9V zUN{0ZmOT>bsGNtBevu9%t0j)f1s2{LI}RvOd<=wjt7Gtx4&}I9L^_@KPvjCJU7jc8 zGNMakFw9ToqeQ*OBAt{giB=JPCRY(1CORe85IJC#WQo&qEm32l&*hU=q6l){4e5#k z=@#o+KNFrPnmCJLOnJrsZjcB44JpO<{tl3#0sbIs2LyvG2te&{l5b`T2|<{)HXwD{3X2;C zZc0e7tBxNYtR3up^G!JYF!R&A>4Q*|7FJ2v5 z2jo*AJvJLc4cWbTCrFRYu}}xtoF;h@q{seps6W_W16f#Xy6+Z+#i1l4Nyd?^4l+yB zc7JMSiH7deAp5(|f}H988suvCuOMFo=@!3t+!y5*^*bF0`BDcgflZw%Mq?=*jPS%b zG%OfmY!rlYJef;DdTK$Jf46YV?`V?WQ{BxWv#yJ^WY)E_gUsFWVn{6tdMxUOqm zzq)31IDc2~x~_Hjy2gFmj1JQ`#sd{FwU@IK@{tHb-ziQ>K}tbN@+ z7myiSsi&5=N5w)9+Bq6+#*)0>M`|0b&5r41Vf(RSv9!0xN}*le>PB`QRT16H0Qr3P zh)Qnp4MbuX?(vOdWig*L6oTnN(RvR~|Bupb1{V>2xFW3U-TvWVmal2b^| zBsquVLnIf*-YvQpuK?)@;i=e55W)tMn@MgXxeH`n@ntOL@z+>ChZ{bPb{g7MBJ8iY zMQX(eka-}bm|OWlKPlE#o)1!A9e73P@+>SKQ3YG_1dvh`SGnQL5<9AXZ6=DBlb>)& zajhDbwr(d$)my{W)PQ8a>eyFIss1atSy3HB-d_E8Fdwdt?tiN8fLkA2Z=+TTTT8%QZ$rO*!5Xa*twoQg39r(rCqX%tHu+Vmmw#Izn@{}7pV zf3l9Wuai7N_TP{j-RFE1fTi(IW$S6NzI~K7N7Tf4E7iONIn{Nc!^t4~4mFoUN=A|S zp_*7S>uO?}cax1SNnM5~$>w^^RiM>rZWVGG=5n<8y0ciM?Dq5d0pl?WrlZh#rDHc_)%{Nd^u@n>Hk8 z4?Udh7Q4tShJ6L*M#E4$W!OzHzXoP0-l+32guJKDVUU;WV5#a>_gkH`5a`M4qSS3n zx1~ubwZLY3^*oUE>tadj>$+>*=3t|*{pn<{Tj`3rSSH@qi+w`#5bSlUrnrT>&A=3g zc&je95Z`(^RHHkD_Mg^HSxO)9)i(u8*td2*t2++t|0i1Dt$mtKb5uRNinBm^%EZ^D zw+Dcdq#hM}ODQJTTM6l0Sg*A`K5hh??!~W=e3Rrpa^oACE^`diEy73jtbslGG>{WJ ztOEH`hn+RL7k>_O0GMy&z8_LpJT$kpQCNH@$r6$aNj^<-8_7K+50gAi@)F6bB+Wbw zAsA$qh|lwLWQjDA4f8M!UFuhLyTz;Z>%u8x%?5oyHfb;nWPXFY+&QAK!90+CL1u}m z4RA!R-tbL#qS(;*G?duJ#z)~f{Wlt)1{v5EYi)5`Y?Et1I>eSH1r=bgu`SByn~V!_ zh;P6R?7ETsy=~_Tf9>l{*a!W*Ey~mFPMfgH)ee1G?a?N*J%;RP3VpulP4Z}y%dq>R z%@?}89p@0gblU^6cT=yd*aY2oY>u@S*cPt>-*jrfy?cAyIK+_Ny)4*cZU#@zh|9fa zBsj#;=CeTlojIV{gv9dN=Ud!e1#PB*luf!r`j0j*0rRYZi$QJ}_$bI124a}I2d=j5 zj}Fw~`1<+^wB^J3Yn$f=O|1(1(@pLNd3n%Ekj7w4!*he;l0EjP2Ui2Lwx8GHbub@o z-kj1lwz{VbpK69}?~akGnXX@r$0MwT0cIQ$NEV?jF za;^mG%k-dgExaOU2-9lkI-oI3FFT)y73n0V{mz$wW)STPIOE&`*VAmKubr<0J}c0bQ)Xvo7@K@}Cd8k+qoO{1*T@DY`NZ0e^MGlT6cq^28M)-9j3P+Q}G7i74~`0p4R( zyN0G!{x?K(F#r!+shyR=zUT{8k;=pa`D?>lh^><+ESa%VfhW?g_enF|Shsb3b z6;xOD6bTtxH!7&5>@8X{jScE9`wEq*byI_e$^N1$Q(4e>dAk_Rv^;2*94OW>tqpou z4i*X28!QnUgBHsnVk6UzpvUBJaf#_b&=YcmNXXJL_ys>BM~c==ErYkpJH!~K&cScU z(P9zP;NabItazJgOz;7Dr`XRl8ECvX&a^Q2u$(B)Ff9u{F7FZ-nbrc`EiN-{4E{_` z7T1_w4gNyjBV@Kt**n1(BIL{1m$nR<3u6FEaX z&$I$)rWk<7pHL5f1YeWIVlIlQ&XMD(f_!8y~rWzp& zfGoKC721R|2XwPV5K}|Y%@&cGs283i5`5@>kxI13b;cQJJSeh>N}OLi-9QakHyy&9 zCt9%X0SI%RXveyxpnFJkW!;mYdr0(S-IkCjV?NBPF=cyPdqd)Y#xflPe-Fc1HtI^8 z7r@`cqL^rj_$4ICctmWmDa}|UejqA~9_+qgE)(nPpuZ*Je)o4k33&Sk&;p`#n|=gc zKGQ+>ak*UVX8H{1QIQT0$f3V)-8ak?;w>g;n4wmR{9LW85#~~liQ075zC<(%3sI}Y zV@y56qSWK!8JptOlj0SdYN++%Et|5{bK((-y-a-Bv87{^c!sHJr^8V%iOv*znHbn9 zB4V=`!t_9=3em5KxlG49?T&a=%&3nk+vCDfW{a53grm$B@h}sPBwNK&CLBq&iZx8j z!{)v~rSSQ1zh7sjGzfFI=);r;x_882rq-Z) zM~r5|*~K0)kqKuPd&G1moI&gr_c7rNVy~D_v?~B-0`H0?OgIyGSFC2j(SDy;$AqK( zKCzKV&ye82dqSmI-4&D86CB*7KhD zi3wZJd*TKYrtE#8@DXolgP5}SMGzCtCq57rm~cMvfvC)cwRuQXW5U`zBr=(BuJNI$ z$Aoi@4@FZZoSz*Q`Aj%JJ1h#Buyl`zUQAfJN5mi|td*l;6cg6UQ89rDTgXRZDigMl zk3=aGwvc0D9uu~ZV`4E=r-=FDWAPZ%kcb69Pcuyh-Er{((}SQpE?#3=1-ehfn@lf* z?i2AY(QNT31JNFc;Zb!(T(fDa z`dO%a40DfsB65xTMWi#WkKCZHiaVKJiku>T6=h7jBR8w-VinODc`EXCpr>t@JApPc z1w@sK-^ANY?x=UwZ{h={*r@l_4RMMo5p*}jB~7lBsAK96ag8ZE>I9IZjZSB?s8c`@ zOl_jznGacosZ-QqIEl;B1hw*wGG!B{Uf@#6qf|#_Vqf9A(XeArrCTOG0rHa_$R*b8 zROOUCY`Ramu8P= zA-`q9IZA~5g=sb9y@I^S^n6qWtAg|^pjJTj4o4gGZ;y2>s*+_>(Ag+h=Xi8MKSsei z$0j2h);TtXM#DPCrplm;u_*&|F*1bWyWm1ytc+qpU93!C!Z0gJe5Ilg7hD)-MVZBf zX^E40OqiB9*;13lR9BK)i1bxeS-$1tud>8bP7D+MRhAzzVSMrO6DEu=UY=#bbSB8J znJ}FR@+YF%&b`sqtVH=6(~;;jAk`LQ(6J}UXrc?0vLtzls6?EO&a$e=TsULJ9_6d( zx>i-W2+mlMevNKsRg-si&=efg#!8WMJ8FuK>1?ISh|ZdlfzoA73Z+au+xccpP1%n8 zm5JNBoOfr+dgStg3(KsQY{GdKY9kjljDm~mFFJW5m| zmc~r68pz4LQCA{1#yns(mS6Qj+AWh~7F*3_)4rO%j#*{3l=?#zyXEzmXRX$9bbqaj zjD5{&BZpAzW#VF&!4=!exlActCsk}GS5PQrVoCR)O6}!-rlUX|WcuwCioh5;%9%vE zZad34L`%eh*vnRD`3TeD*k7%#@&~5as6VW3vg!Z~Wr;Wy`-SWwdl2bRddjv$dhXp* z4$$PxuNdR#DW4-+;_Oy23Fu{}fkfNN`MXHu3G*`1LNTUd3iyi~DBxe2D65$5=qqb8 zJyr3z>@Oc7S}3*v-7e2D?Wx$nF+lbmg#H$ak3lzBUK*_FEYJ|SV~D0-fQHHu!!^mc zmX2X^5mR7X8^>_DafH^z#uYk7$)+Qb%0znH1#`3%(~)$lM@uKs5^=WTaK~s_)u!We ztW0OZHD!^^BPtW4;))!1%1%rZ;_h*bm+NhpvmBG;J2NnbC1P#x1CG1paiTJDZ`=aM zJu+@4>dM6ZaZ4RjWLKM3JEqH(MCk8nN3k?ZbSPzU8y%%G!lsMzKAC9KYmV8nrA-YS zbLCe|xGsKB{%X@K$2|Gmy*kWguo9jx&)M{*<6#*yOY8PjyeJpQ6q{aiER=n0+UQs; zC)?D(u|&>gS{n!JF}acH<+zLTQRyhvVPcJ~kij+$cdV4zOjy&aWPO{4J66m7OxQvm zm&2G&2JdyOl@o1x&+&vjN3>9!4F1URlstGJ#t!FCzH~ezCo^4&``)oZzR6@(y6SjNzH8G>#|u);!7!JI;7Wdeo8)AsxJsdZn`O#e zt;?%a+3yuu#)PfsRk@N0Yvnar`F`yZ%VmqK#)KuYRn}y}Hor~QWy-I#Rc@EfmXmhqTL|KzB%HF&UMQ%May1ra+*> zax7B<&=J}25$!Lva%;b%asX5P%ANg=$tRgwSMKe1T>fFxP`{JXzYP7&c6O*-jBLb&I~iwXD<<5@I4e6a;cmtYCR*eB$qZKiaxEiH6fl zD-)g0pKRTei9uenwkL)=uXuFUUZ9_CIt28KO(%e^+VmyRuQpuBYTc)v(346Cp<1iEUZncaPL?upl@JpKgTq^R6Z;8r8$K>zKJVQK&x-xM`@?uw>(Uqt~+?%}8Ro~dex~1T8s@VqLDFewboq&T_fWpQJHX6+vaL)h&5UlRV~hFYHVSuS?z6C zGvnl1t!rNGfUAXpAIia0FAqBEYGw2!x*)NSY;6o>YDhGm347Ys#!M#cXdH9b@9f~&o;hNw)uQtf+J2jdd!c2|4Z)zQdbr(GTe z>SSzTI$v#otI*g>bqgmP{UVaO7>AhF0d+G@GJOlw!?@0r(?24qmtk@%xTpV7S07^t zrL#;pZjVUnXN+Mg0J`0n$}}Hnpi#m*l+5Hxbvnly8BEcsK|pnxs;8b%MMh($oYV?dk@KzEn%3ez^w-DSMNvSGvP_-J;ql|coKS#ahYk3>zJBiTw_}3S`1`tpgN*jnQHiJqE*3E zBa8`G1yhZROt>nTW>jIqRlzhP-9r%jbfY#Ct_r3bjhJv%FvDoYgsXxXMh7M=!I?&P zCM?03#_gIYWyQvDAD6}O1qI!*&}FePnF;e=ViYrB-b;-8HBl({8fC1*`0h29GhrzA z8f%#_lv&0GCJbek@vlS4c18w&y z>xYd`h%UJ3blf<@M5p7%*GyQ}j~G8PVOc+7{KkZ3U1pfiVxBIzu&m3BKqf5f1x7t4 zEb9eE6DBO{1x7v-mi0oT6BCy8LZcTGmh~cIAQP7LB4ZR2mi1y|JQJ4nVq+>3mh}>2 z7892B5@Q|{mi1C&5s{whEHxfu9hUqu<0;nRY-XA90_(6ImK(1!VLdE2-ekghc+}X- zg!S;Kafk`)VTEy=3F~2naZVG>g;yGp&tVDbdB{q;#&A~YC7e}y31_&E*)DO0>m{7w zuCjGF!}Su*a97(poZ)&YHuHp9W9xD=D_CCYp816TC$ zmvGJpUuj_-&iQPzUeCPY|C~o>?a5RD&)akiXroPgGGhYZ3oAMl>lo0hHhr0y6R_2$ zD?r7PZ<1yzN7S0(RNdwbr13-9FSV;2oPrfNrl3wF`LHrWUm( z1?=~s*#QS_>RM}dzq_S-ZHCQ2H`5pOK;YCBH*a4 zJ6!7-A36^@c+V^Qy9zol;fm;(t-}?Omp)F|7yz$%Wq%hEw)v1NYqt+YWbOB%_$)XN zxBaDO!Fjk%d08I@z}vn!%(ht{`w*T3!CO*Uhvz_E!n2-FZ5^KVc&Q)6chc64h4{RL zE5*-j9j+9;gxBUNTZh-Cm+;y=ZR_yb^wP|%W9oBThwC^m;X2MHYhKo=fHNMKKo$iZfeaH;FWYfwlGw@rR)&s#S1a&D{>%kwqFp%lxEdRjEK4b>Md;D1U zdRBNKyv@(1xWJ!%sA?d*IgfSwA=U66Jf@>SH*7iubkn9wKyY)fb{TXtD>KlrDK
    oL^`c@d~7(;4UHz;H94>1*dUph6;j+7e-o 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 de| + + + RestSharp + + + + + Tries to Authenticate with the credentials of the currently logged in user, or impersonate a user + + + + + Authenticate with the credentials of the currently logged in user + + + + + Authenticate by impersonation + + + + + + + Authenticate by impersonation, using an existing ICredentials instance + + + + + + + + + Base class for OAuth 2 Authenticators. + + + Since there are many ways to authenticate in OAuth2, + this is used as a base class to differentiate between + other authenticators. + + Any other OAuth2 authenticators must derive from this + abstract class. + + + + + Access token to be used when authenticating. + + + + + Initializes a new instance of the class. + + + The access token. + + + + + Gets the access token. + + + + + The OAuth 2 authenticator using URI query parameter. + + + Based on http://tools.ietf.org/html/draft-ietf-oauth-v2-10#section-5.1.2 + + + + + Initializes a new instance of the class. + + + The access token. + + + + + The OAuth 2 authenticator using the authorization request header field. + + + Based on http://tools.ietf.org/html/draft-ietf-oauth-v2-10#section-5.1.1 + + + + + Stores the Authorization header value as "[tokenType] accessToken". used for performance. + + + + + Initializes a new instance of the class. + + + The access token. + + + + + Initializes a new instance of the class. + + + The access token. + + + The token type. + + + + + All text parameters are UTF-8 encoded (per section 5.1). + + + + + + Generates a random 16-byte lowercase alphanumeric string. + + + + + + + Generates a timestamp based on the current elapsed seconds since '01/01/1970 0000 GMT" + + + + + + + Generates a timestamp based on the elapsed seconds of a given time since '01/01/1970 0000 GMT" + + + A specified point in time. + + + + + The set of characters that are unreserved in RFC 2396 but are NOT unreserved in RFC 3986. + + + + + + URL encodes a string based on section 5.1 of the OAuth spec. + Namely, percent encoding with [RFC3986], avoiding unreserved characters, + upper-casing hexadecimal characters, and UTF-8 encoding for text value pairs. + + The value to escape. + The escaped value. + + The method is supposed to take on + RFC 3986 behavior if certain elements are present in a .config file. Even if this + actually worked (which in my experiments it doesn't), we can't rely on every + host actually having this configuration element present. + + + + + + + URL encodes a string based on section 5.1 of the OAuth spec. + Namely, percent encoding with [RFC3986], avoiding unreserved characters, + upper-casing hexadecimal characters, and UTF-8 encoding for text value pairs. + + + + + + + Sorts a collection of key-value pairs by name, and then value if equal, + concatenating them into a single string. This string should be encoded + prior to, or after normalization is run. + + + + + + + + Sorts a by name, and then value if equal. + + A collection of parameters to sort + A sorted parameter collection + + + + Creates a request URL suitable for making OAuth requests. + Resulting URLs must exclude port 80 or port 443 when accompanied by HTTP and HTTPS, respectively. + Resulting URLs must be lower case. + + + The original request URL + + + + + Creates a request elements concatentation value to send with a request. + This is also known as the signature base. + + + + The request's HTTP method type + The request URL + The request's parameters + A signature base string + + + + Creates a signature value given a signature base and the consumer secret. + This method is used when the token secret is currently unknown. + + + The hashing method + The signature base + The consumer key + + + + + Creates a signature value given a signature base and the consumer secret. + This method is used when the token secret is currently unknown. + + + The hashing method + The treatment to use on a signature value + The signature base + The consumer key + + + + + Creates a signature value given a signature base and the consumer secret and a known token secret. + + + The hashing method + The signature base + The consumer secret + The token secret + + + + + Creates a signature value given a signature base and the consumer secret and a known token secret. + + + The hashing method + The treatment to use on a signature value + The signature base + The consumer secret + The token secret + + + + + A class to encapsulate OAuth authentication flow. + + + + + + Generates a instance to pass to an + for the purpose of requesting an + unauthorized request token. + + The HTTP method for the intended request + + + + + + Generates a instance to pass to an + for the purpose of requesting an + unauthorized request token. + + The HTTP method for the intended request + Any existing, non-OAuth query parameters desired in the request + + + + + + Generates a instance to pass to an + for the purpose of exchanging a request token + for an access token authorized by the user at the Service Provider site. + + The HTTP method for the intended request + + + + + Generates a instance to pass to an + for the purpose of exchanging a request token + for an access token authorized by the user at the Service Provider site. + + The HTTP method for the intended request + + Any existing, non-OAuth query parameters desired in the request + + + + Generates a instance to pass to an + for the purpose of exchanging user credentials + for an access token authorized by the user at the Service Provider site. + + The HTTP method for the intended request + + Any existing, non-OAuth query parameters desired in the request + + + + + + + + + + + + + Allows control how class and property names and values are deserialized by XmlAttributeDeserializer + + + + + The name to use for the serialized element + + + + + Sets if the property to Deserialize is an Attribute or Element (Default: false) + + + + + Wrapper for System.Xml.Serialization.XmlSerializer. + + + + + Types of parameters that can be added to requests + + + + + Data formats + + + + + HTTP method to use when making requests + + + + + Format strings for commonly-used date formats + + + + + .NET format string for ISO 8601 date format + + + + + .NET format string for roundtrip date format + + + + + Status for responses (surprised?) + + + + + Extension method overload! + + + + + Save a byte array to a file + + Bytes to save + Full path to save file to + + + + Read a stream into a byte array + + Stream to read + byte[] + + + + Copies bytes from one stream to another + + The input stream. + The output stream. + + + + Converts a byte array to a string, using its byte order mark to convert it to the right encoding. + http://www.shrinkrays.net/code-snippets/csharp/an-extension-method-for-converting-a-byte-array-to-a-string.aspx + + An array of bytes to convert + The byte as a string. + + + + Decodes an HTML-encoded string and returns the decoded string. + + The HTML string to decode. + The decoded text. + + + + Decodes an HTML-encoded string and sends the resulting output to a TextWriter output stream. + + The HTML string to decode + The TextWriter output stream containing the decoded string. + + + + HTML-encodes a string and sends the resulting output to a TextWriter output stream. + + The string to encode. + The TextWriter output stream containing the encoded string. + + + + Reflection extensions + + + + + Retrieve an attribute from a member (property) + + Type of attribute to retrieve + Member to retrieve attribute from + + + + + Retrieve an attribute from a type + + Type of attribute to retrieve + Type to retrieve attribute from + + + + + Checks a type to see if it derives from a raw generic (e.g. List[[]]) + + + + + + + + Find a value from a System.Enum by trying several possible variants + of the string value of the enum. + + Type of enum + Value for which to search + The culture used to calculate the name variants + + + + + Convert a to a instance. + + The response status. + + responseStatus + + + + Uses Uri.EscapeDataString() based on recommendations on MSDN + http://blogs.msdn.com/b/yangxind/archive/2006/11/09/don-t-use-net-system-uri-unescapedatastring-in-url-decoding.aspx + + + + + Check that a string is not null or empty + + String to check + bool + + + + Remove underscores from a string + + String to process + string + + + + Parses most common JSON date formats + + JSON value to parse + + DateTime + + + + Remove leading and trailing " from a string + + String to parse + String + + + + Checks a string to see if it matches a regex + + String to check + Pattern to match + bool + + + + Converts a string to pascal case + + String to convert + + string + + + + Converts a string to pascal case with the option to remove underscores + + String to convert + Option to remove underscores + + + + + + Converts a string to camel case + + String to convert + + String + + + + Convert the first letter of a string to lower case + + String to convert + string + + + + Checks to see if a string is all uppper case + + String to check + bool + + + + Add underscores to a pascal-cased string + + String to convert + string + + + + Add dashes to a pascal-cased string + + String to convert + string + + + + Add an undescore prefix to a pascasl-cased string + + + + + + + Add spaces to a pascal-cased string + + String to convert + string + + + + Return possible variants of a name for name matching. + + String to convert + The culture to use for conversion + IEnumerable<string> + + + + XML Extension Methods + + + + + Returns the name of an element with the namespace if specified + + Element name + XML Namespace + + + + + Container for files to be uploaded with requests + + + + + Creates a file parameter from an array of bytes. + + The parameter name to use in the request. + The data to use as the file's contents. + The filename to use in the request. + The content type to use in the request. + The + + + + Creates a file parameter from an array of bytes. + + The parameter name to use in the request. + The data to use as the file's contents. + The filename to use in the request. + The using the default content type. + + + + The length of data to be sent + + + + + Provides raw data for file + + + + + Name of the file to use when uploading + + + + + MIME content type of file + + + + + Name of the parameter + + + + + HttpWebRequest wrapper (async methods) + + + HttpWebRequest wrapper + + + HttpWebRequest wrapper (sync methods) + + + + + Always send a multipart/form-data request - even when no Files are present. + + + + + An alternative to RequestBody, for when the caller already has the byte array. + + + + + Execute an async POST-style request with the specified HTTP Method. + + + The HTTP method to execute. + + + + + Execute an async GET-style request with the specified HTTP Method. + + + The HTTP method to execute. + + + + + Creates an IHttp + + + + + + Default constructor + + + + + Execute a POST request + + + + + Execute a PUT request + + + + + Execute a GET request + + + + + Execute a HEAD request + + + + + Execute an OPTIONS request + + + + + Execute a DELETE request + + + + + Execute a PATCH request + + + + + Execute a MERGE request + + + + + Execute a GET-style request with the specified HTTP Method. + + The HTTP method to execute. + + + + + Execute a POST-style request with the specified HTTP Method. + + The HTTP method to execute. + + + + + True if this HTTP request has any HTTP parameters + + + + + True if this HTTP request has any HTTP cookies + + + + + True if a request body has been specified + + + + + True if files have been set to be uploaded + + + + + Always send a multipart/form-data request - even when no Files are present. + + + + + UserAgent to be sent with request + + + + + Timeout in milliseconds to be used for the request + + + + + The number of milliseconds before the writing or reading times out. + + + + + System.Net.ICredentials to be sent with request + + + + + The System.Net.CookieContainer to be used for the request + + + + + The method to use to write the response instead of reading into RawBytes + + + + + Collection of files to be sent with request + + + + + Whether or not HTTP 3xx response redirects should be automatically followed + + + + + X509CertificateCollection to be sent with request + + + + + Maximum number of automatic redirects to follow if FollowRedirects is true + + + + + Determine whether or not the "default credentials" (e.g. the user account under which the current process is running) + will be sent along to the server. + + + + + HTTP headers to be sent with request + + + + + HTTP parameters (QueryString or Form values) to be sent with request + + + + + HTTP cookies to be sent with request + + + + + Request body to be sent with request + + + + + Content type of the request body. + + + + + An alternative to RequestBody, for when the caller already has the byte array. + + + + + URL to call for this request + + + + + Flag to send authorisation header with the HttpWebRequest + + + + + Proxy info to be sent with request + + + + + Representation of an HTTP cookie + + + + + Comment of the cookie + + + + + Comment of the cookie + + + + + Indicates whether the cookie should be discarded at the end of the session + + + + + Domain of the cookie + + + + + Indicates whether the cookie is expired + + + + + Date and time that the cookie expires + + + + + Indicates that this cookie should only be accessed by the server + + + + + Name of the cookie + + + + + Path of the cookie + + + + + Port of the cookie + + + + + Indicates that the cookie should only be sent over secure channels + + + + + Date and time the cookie was created + + + + + Value of the cookie + + + + + Version of the cookie + + + + + Container for HTTP file + + + + + The length of data to be sent + + + + + Provides raw data for file + + + + + Name of the file to use when uploading + + + + + MIME content type of file + + + + + Name of the parameter + + + + + Representation of an HTTP header + + + + + Name of the header + + + + + Value of the header + + + + + Representation of an HTTP parameter (QueryString or Form value) + + + + + Name of the parameter + + + + + Value of the parameter + + + + + HTTP response data + + + + + HTTP response data + + + + + MIME content type of response + + + + + Length in bytes of the response content + + + + + Encoding of the response content + + + + + String representation of response content + + + + + HTTP response status code + + + + + Description of HTTP status returned + + + + + Response content + + + + + The URL that actually responded to the content (different from request if redirected) + + + + + HttpWebResponse.Server + + + + + Headers returned by server with the response + + + + + Cookies returned by server with the response + + + + + Status of the request. Will return Error for transport errors. + HTTP errors will still return ResponseStatus.Completed, check StatusCode instead + + + + + Transport or other non-HTTP error generated while attempting request + + + + + Exception thrown when error is encountered. + + + + + Default constructor + + + + + MIME content type of response + + + + + Length in bytes of the response content + + + + + Encoding of the response content + + + + + Lazy-loaded string representation of response content + + + + + HTTP response status code + + + + + Description of HTTP status returned + + + + + Response content + + + + + The URL that actually responded to the content (different from request if redirected) + + + + + HttpWebResponse.Server + + + + + Headers returned by server with the response + + + + + Cookies returned by server with the response + + + + + Status of the request. Will return Error for transport errors. + HTTP errors will still return ResponseStatus.Completed, check StatusCode instead + + + + + Transport or other non-HTTP error generated while attempting request + + + + + Exception thrown when error is encountered. + + + + + + + + + + + + + + + + + + + + + + + + Executes a GET-style request and callback asynchronously, authenticating if needed + + Request to be executed + Callback function to be executed upon completion providing access to the async handle. + The HTTP method to execute + + + + Executes a POST-style request and callback asynchronously, authenticating if needed + + Request to be executed + Callback function to be executed upon completion providing access to the async handle. + The HTTP method to execute + + + + Executes a GET-style request and callback asynchronously, authenticating if needed + + Target deserialization type + Request to be executed + Callback function to be executed upon completion + The HTTP method to execute + + + + Executes a GET-style request and callback asynchronously, authenticating if needed + + Target deserialization type + Request to be executed + Callback function to be executed upon completion + The HTTP method to execute + + + + Executes the request and callback asynchronously, authenticating if needed + + Target deserialization type + Request to be executed + The cancellation token + + + + Executes the request asynchronously, authenticating if needed + + Target deserialization type + Request to be executed + + + + Executes a GET-style request asynchronously, authenticating if needed + + Target deserialization type + Request to be executed + + + + Executes a GET-style request asynchronously, authenticating if needed + + Target deserialization type + Request to be executed + The cancellation token + + + + Executes a POST-style request asynchronously, authenticating if needed + + Target deserialization type + Request to be executed + + + + Executes a POST-style request asynchronously, authenticating if needed + + Target deserialization type + Request to be executed + The cancellation token + + + + Executes the request and callback asynchronously, authenticating if needed + + Request to be executed + The cancellation token + + + + Executes the request asynchronously, authenticating if needed + + Request to be executed + + + + Executes a GET-style asynchronously, authenticating if needed + + Request to be executed + + + + Executes a GET-style asynchronously, authenticating if needed + + Request to be executed + The cancellation token + + + + Executes a POST-style asynchronously, authenticating if needed + + Request to be executed + + + + Executes a POST-style asynchronously, authenticating if needed + + Request to be executed + The cancellation token + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + X509CertificateCollection to be sent with request + + + + + Adds a file to the Files collection to be included with a POST or PUT request + (other methods do not support file uploads). + + The parameter name to use in the request + Full path to file to upload + This request + + + + Adds the bytes to the Files collection with the specified file name + + The parameter name to use in the request + The file data + The file name to use for the uploaded file + This request + + + + Adds the bytes to the Files collection with the specified file name and content type + + The parameter name to use in the request + The file data + The file name to use for the uploaded file + The MIME type of the file to upload + This request + + + + Serializes obj to format specified by RequestFormat, but passes xmlNamespace if using the default XmlSerializer + The default format is XML. Change RequestFormat if you wish to use a different serialization format. + + The object to serialize + The XML namespace to use when serializing + This request + + + + Serializes obj to data format specified by RequestFormat and adds it to the request body. + The default format is XML. Change RequestFormat if you wish to use a different serialization format. + + The object to serialize + This request + + + + Serializes obj to JSON format and adds it to the request body. + + The object to serialize + This request + + + + Serializes obj to XML format and adds it to the request body. + + The object to serialize + This request + + + + Serializes obj to format specified by RequestFormat, but passes xmlNamespace if using the default XmlSerializer + Serializes obj to XML format and passes xmlNamespace then adds it to the request body. + + The object to serialize + The XML namespace to use when serializing + This request + + + + Calls AddParameter() for all public, readable properties specified in the includedProperties list + + + request.AddObject(product, "ProductId", "Price", ...); + + The object with properties to add as parameters + The names of the properties to include + This request + + + + Calls AddParameter() for all public, readable properties of obj + + The object with properties to add as parameters + This request + + + + Add the parameter to the request + + Parameter to add + + + + + Adds a HTTP parameter to the request (QueryString for GET, DELETE, OPTIONS and HEAD; Encoded form for POST and PUT) + + Name of the parameter + Value of the parameter + This request + + + + Adds a parameter to the request. There are five types of parameters: + - GetOrPost: Either a QueryString value or encoded form value based on method + - HttpHeader: Adds the name/value pair to the HTTP request's Headers collection + - UrlSegment: Inserted into URL if there is a matching url token e.g. {AccountId} + - Cookie: Adds the name/value pair to the HTTP request's Cookies collection + - RequestBody: Used by AddBody() (not recommended to use directly) + + Name of the parameter + Value of the parameter + The type of parameter to add + This request + + + + Shortcut to AddParameter(name, value, HttpHeader) overload + + Name of the header to add + Value of the header to add + + + + + Shortcut to AddParameter(name, value, Cookie) overload + + Name of the cookie to add + Value of the cookie to add + + + + + Shortcut to AddParameter(name, value, UrlSegment) overload + + Name of the segment to add + Value of the segment to add + + + + + Shortcut to AddParameter(name, value, QueryString) overload + + Name of the parameter to add + Value of the parameter to add + + + + + Always send a multipart/form-data request - even when no Files are present. + + + + + Serializer to use when writing JSON request bodies. Used if RequestFormat is Json. + By default the included JsonSerializer is used (currently using JSON.NET default serialization). + + + + + Serializer to use when writing XML request bodies. Used if RequestFormat is Xml. + By default the included XmlSerializer is used. + + + + + Set this to write response to Stream rather than reading into memory. + + + + + Container of all HTTP parameters to be passed with the request. + See AddParameter() for explanation of the types of parameters that can be passed + + + + + Container of all the files to be uploaded with the request. + + + + + Determines what HTTP method to use for this request. Supported methods: GET, POST, PUT, DELETE, HEAD, OPTIONS + Default is GET + + + + + The Resource URL to make the request against. + Tokens are substituted with UrlSegment parameters and match by name. + Should not include the scheme or domain. Do not include leading slash. + Combined with RestClient.BaseUrl to assemble final URL: + {BaseUrl}/{Resource} (BaseUrl is scheme + domain, e.g. http://example.com) + + + // example for url token replacement + request.Resource = "Products/{ProductId}"; + request.AddParameter("ProductId", 123, ParameterType.UrlSegment); + + + + + Serializer to use when writing XML request bodies. Used if RequestFormat is Xml. + By default XmlSerializer is used. + + + + + Used by the default deserializers to determine where to start deserializing from. + Can be used to skip container or root elements that do not have corresponding deserialzation targets. + + + + + Used by the default deserializers to explicitly set which date format string to use when parsing dates. + + + + + Used by XmlDeserializer. If not specified, XmlDeserializer will flatten response by removing namespaces from element names. + + + + + In general you would not need to set this directly. Used by the NtlmAuthenticator. + + + + + Timeout in milliseconds to be used for the request. This timeout value overrides a timeout set on the RestClient. + + + + + The number of milliseconds before the writing or reading times out. This timeout value overrides a timeout set on the RestClient. + + + + + How many attempts were made to send this Request? + + + This Number is incremented each time the RestClient sends the request. + Useful when using Asynchronous Execution with Callbacks + + + + + Determine whether or not the "default credentials" (e.g. the user account under which the current process is running) + will be sent along to the server. The default is false. + + + + + Container for data sent back from API + + + + + The RestRequest that was made to get this RestResponse + + + Mainly for debugging if ResponseStatus is not OK + + + + + MIME content type of response + + + + + Length in bytes of the response content + + + + + Encoding of the response content + + + + + String representation of response content + + + + + HTTP response status code + + + + + Description of HTTP status returned + + + + + Response content + + + + + The URL that actually responded to the content (different from request if redirected) + + + + + HttpWebResponse.Server + + + + + Cookies returned by server with the response + + + + + Headers returned by server with the response + + + + + Status of the request. Will return Error for transport errors. + HTTP errors will still return ResponseStatus.Completed, check StatusCode instead + + + + + Transport or other non-HTTP error generated while attempting request + + + + + Exceptions thrown during the request, if any. + + Will contain only network transport or framework exceptions thrown during the request. + HTTP protocol errors are handled by RestSharp and will not appear here. + + + + Container for data sent back from API including deserialized data + + Type of data to deserialize to + + + + Deserialized entity data + + + + + Parameter container for REST requests + + + + + Return a human-readable representation of this parameter + + String + + + + Name of the parameter + + + + + Value of the parameter + + + + + Type of the parameter + + + + + Client to translate RestRequests into Http requests and process response result + + + + + Executes the request and callback asynchronously, authenticating if needed + + Request to be executed + Callback function to be executed upon completion providing access to the async handle. + + + + Executes a GET-style request and callback asynchronously, authenticating if needed + + Request to be executed + Callback function to be executed upon completion providing access to the async handle. + The HTTP method to execute + + + + Executes a POST-style request and callback asynchronously, authenticating if needed + + Request to be executed + Callback function to be executed upon completion providing access to the async handle. + The HTTP method to execute + + + + Executes the request and callback asynchronously, authenticating if needed + + Target deserialization type + Request to be executed + Callback function to be executed upon completion + + + + Executes a GET-style request and callback asynchronously, authenticating if needed + + Target deserialization type + Request to be executed + Callback function to be executed upon completion + The HTTP method to execute + + + + Executes a POST-style request and callback asynchronously, authenticating if needed + + Target deserialization type + Request to be executed + Callback function to be executed upon completion + The HTTP method to execute + + + + Executes a GET-style request asynchronously, authenticating if needed + + Target deserialization type + Request to be executed + + + + Executes a GET-style request asynchronously, authenticating if needed + + Target deserialization type + Request to be executed + The cancellation token + + + + Executes a POST-style request asynchronously, authenticating if needed + + Target deserialization type + Request to be executed + + + + Executes a POST-style request asynchronously, authenticating if needed + + Target deserialization type + Request to be executed + The cancellation token + + + + Executes the request asynchronously, authenticating if needed + + Target deserialization type + Request to be executed + + + + Executes the request asynchronously, authenticating if needed + + Target deserialization type + Request to be executed + The cancellation token + + + + Executes the request asynchronously, authenticating if needed + + Request to be executed + + + + Executes a GET-style asynchronously, authenticating if needed + + Request to be executed + + + + Executes a GET-style asynchronously, authenticating if needed + + Request to be executed + The cancellation token + + + + Executes a POST-style asynchronously, authenticating if needed + + Request to be executed + + + + Executes a POST-style asynchronously, authenticating if needed + + Request to be executed + The cancellation token + + + + Executes the request asynchronously, authenticating if needed + + Request to be executed + The cancellation token + + + + Default constructor that registers default content handlers + + + + + Sets the BaseUrl property for requests made by this client instance + + + + + + Sets the BaseUrl property for requests made by this client instance + + + + + + Registers a content handler to process response content + + MIME content type of the response content + Deserializer to use to process content + + + + Remove a content handler for the specified MIME content type + + MIME content type to remove + + + + Remove all content handlers + + + + + Retrieve the handler for the specified MIME content type + + MIME content type to retrieve + IDeserializer instance + + + + Assembles URL to call based on parameters, method and resource + + RestRequest to execute + Assembled System.Uri + + + + Executes the specified request and downloads the response data + + Request to execute + Response data + + + + Executes the request and returns a response, authenticating if needed + + Request to be executed + RestResponse + + + + Executes the specified request and deserializes the response content using the appropriate content handler + + Target deserialization type + Request to execute + RestResponse[[T]] with deserialized data in Data property + + + + Parameters included with every request made with this instance of RestClient + If specified in both client and request, the request wins + + + + + Maximum number of redirects to follow if FollowRedirects is true + + + + + X509CertificateCollection to be sent with request + + + + + Proxy to use for requests made by this client instance. + Passed on to underlying WebRequest if set. + + + + + Default is true. Determine whether or not requests that result in + HTTP status codes of 3xx should follow returned redirect + + + + + The CookieContainer used for requests made by this client instance + + + + + UserAgent to use for requests made by this client instance + + + + + Timeout in milliseconds to use for requests made by this client instance + + + + + The number of milliseconds before the writing or reading times out. + + + + + Whether to invoke async callbacks using the SynchronizationContext.Current captured when invoked + + + + + Authenticator to use for requests made by this client instance + + + + + Combined with Request.Resource to construct URL for request + Should include scheme and domain without trailing slash. + + + client.BaseUrl = new Uri("http://example.com"); + + + + + Executes the request and callback asynchronously, authenticating if needed + + The IRestClient this method extends + Request to be executed + Callback function to be executed upon completion + + + + Executes the request and callback asynchronously, authenticating if needed + + The IRestClient this method extends + Target deserialization type + Request to be executed + Callback function to be executed upon completion providing access to the async handle + + + + Add a parameter to use on every request made with this client instance + + The IRestClient instance + Parameter to add + + + + + Removes a parameter from the default parameters that are used on every request made with this client instance + + The IRestClient instance + The name of the parameter that needs to be removed + + + + + Adds a HTTP parameter (QueryString for GET, DELETE, OPTIONS and HEAD; Encoded form for POST and PUT) + Used on every request made by this client instance + + The IRestClient instance + Name of the parameter + Value of the parameter + This request + + + + Adds a parameter to the request. There are four types of parameters: + - GetOrPost: Either a QueryString value or encoded form value based on method + - HttpHeader: Adds the name/value pair to the HTTP request's Headers collection + - UrlSegment: Inserted into URL if there is a matching url token e.g. {AccountId} + - RequestBody: Used by AddBody() (not recommended to use directly) + + The IRestClient instance + Name of the parameter + Value of the parameter + The type of parameter to add + This request + + + + Shortcut to AddDefaultParameter(name, value, HttpHeader) overload + + The IRestClient instance + Name of the header to add + Value of the header to add + + + + + Shortcut to AddDefaultParameter(name, value, UrlSegment) overload + + The IRestClient instance + Name of the segment to add + Value of the segment to add + + + + + Container for data used to make requests + + + + + Default constructor + + + + + Sets Method property to value of method + + Method to use for this request + + + + Sets Resource property + + Resource to use for this request + + + + Sets Resource and Method properties + + Resource to use for this request + Method to use for this request + + + + Sets Resource property + + Resource to use for this request + + + + Sets Resource and Method properties + + Resource to use for this request + Method to use for this request + + + + Adds a file to the Files collection to be included with a POST or PUT request + (other methods do not support file uploads). + + The parameter name to use in the request + Full path to file to upload + This request + + + + Adds the bytes to the Files collection with the specified file name + + The parameter name to use in the request + The file data + The file name to use for the uploaded file + This request + + + + Adds the bytes to the Files collection with the specified file name and content type + + The parameter name to use in the request + The file data + The file name to use for the uploaded file + The MIME type of the file to upload + This request + + + + Adds the bytes to the Files collection with the specified file name and content type + + The parameter name to use in the request + A function that writes directly to the stream. Should NOT close the stream. + The file name to use for the uploaded file + This request + + + + Adds the bytes to the Files collection with the specified file name and content type + + The parameter name to use in the request + A function that writes directly to the stream. Should NOT close the stream. + The file name to use for the uploaded file + The MIME type of the file to upload + This request + + + + Serializes obj to format specified by RequestFormat, but passes xmlNamespace if using the default XmlSerializer + The default format is XML. Change RequestFormat if you wish to use a different serialization format. + + The object to serialize + The XML namespace to use when serializing + This request + + + + Serializes obj to data format specified by RequestFormat and adds it to the request body. + The default format is XML. Change RequestFormat if you wish to use a different serialization format. + + The object to serialize + This request + + + + Serializes obj to JSON format and adds it to the request body. + + The object to serialize + This request + + + + Serializes obj to XML format and adds it to the request body. + + The object to serialize + This request + + + + Serializes obj to format specified by RequestFormat, but passes xmlNamespace if using the default XmlSerializer + Serializes obj to XML format and passes xmlNamespace then adds it to the request body. + + The object to serialize + The XML namespace to use when serializing + This request + + + + Calls AddParameter() for all public, readable properties specified in the includedProperties list + + + request.AddObject(product, "ProductId", "Price", ...); + + The object with properties to add as parameters + The names of the properties to include + This request + + + + Calls AddParameter() for all public, readable properties of obj + + The object with properties to add as parameters + This request + + + + Add the parameter to the request + + Parameter to add + + + + + Adds a HTTP parameter to the request (QueryString for GET, DELETE, OPTIONS and HEAD; Encoded form for POST and PUT) + + Name of the parameter + Value of the parameter + This request + + + + Adds a parameter to the request. There are four types of parameters: + - GetOrPost: Either a QueryString value or encoded form value based on method + - HttpHeader: Adds the name/value pair to the HTTP request's Headers collection + - UrlSegment: Inserted into URL if there is a matching url token e.g. {AccountId} + - RequestBody: Used by AddBody() (not recommended to use directly) + + Name of the parameter + Value of the parameter + The type of parameter to add + This request + + + + Shortcut to AddParameter(name, value, HttpHeader) overload + + Name of the header to add + Value of the header to add + + + + + Shortcut to AddParameter(name, value, Cookie) overload + + Name of the cookie to add + Value of the cookie to add + + + + + Shortcut to AddParameter(name, value, UrlSegment) overload + + Name of the segment to add + Value of the segment to add + + + + + Shortcut to AddParameter(name, value, QueryString) overload + + Name of the parameter to add + Value of the parameter to add + + + + + Internal Method so that RestClient can increase the number of attempts + + + + + Always send a multipart/form-data request - even when no Files are present. + + + + + Serializer to use when writing JSON request bodies. Used if RequestFormat is Json. + By default the included JsonSerializer is used (currently using JSON.NET default serialization). + + + + + Serializer to use when writing XML request bodies. Used if RequestFormat is Xml. + By default the included XmlSerializer is used. + + + + + Set this to write response to Stream rather than reading into memory. + + + + + Determine whether or not the "default credentials" (e.g. the user account under which the current process is running) + will be sent along to the server. The default is false. + + + + + Container of all HTTP parameters to be passed with the request. + See AddParameter() for explanation of the types of parameters that can be passed + + + + + Container of all the files to be uploaded with the request. + + + + + Determines what HTTP method to use for this request. Supported methods: GET, POST, PUT, DELETE, HEAD, OPTIONS + Default is GET + + + + + The Resource URL to make the request against. + Tokens are substituted with UrlSegment parameters and match by name. + Should not include the scheme or domain. Do not include leading slash. + Combined with RestClient.BaseUrl to assemble final URL: + {BaseUrl}/{Resource} (BaseUrl is scheme + domain, e.g. http://example.com) + + + // example for url token replacement + request.Resource = "Products/{ProductId}"; + request.AddParameter("ProductId", 123, ParameterType.UrlSegment); + + + + + Serializer to use when writing XML request bodies. Used if RequestFormat is Xml. + By default XmlSerializer is used. + + + + + Used by the default deserializers to determine where to start deserializing from. + Can be used to skip container or root elements that do not have corresponding deserialzation targets. + + + + + A function to run prior to deserializing starting (e.g. change settings if error encountered) + + + + + Used by the default deserializers to explicitly set which date format string to use when parsing dates. + + + + + Used by XmlDeserializer. If not specified, XmlDeserializer will flatten response by removing namespaces from element names. + + + + + In general you would not need to set this directly. Used by the NtlmAuthenticator. + + + + + Gets or sets a user-defined state object that contains information about a request and which can be later + retrieved when the request completes. + + + + + Timeout in milliseconds to be used for the request. This timeout value overrides a timeout set on the RestClient. + + + + + The number of milliseconds before the writing or reading times out. This timeout value overrides a timeout set on the RestClient. + + + + + How many attempts were made to send this Request? + + + This Number is incremented each time the RestClient sends the request. + Useful when using Asynchronous Execution with Callbacks + + + + + Base class for common properties shared by RestResponse and RestResponse[[T]] + + + + + Default constructor + + + + + The RestRequest that was made to get this RestResponse + + + Mainly for debugging if ResponseStatus is not OK + + + + + MIME content type of response + + + + + Length in bytes of the response content + + + + + Encoding of the response content + + + + + String representation of response content + + + + + HTTP response status code + + + + + Description of HTTP status returned + + + + + Response content + + + + + The URL that actually responded to the content (different from request if redirected) + + + + + HttpWebResponse.Server + + + + + Cookies returned by server with the response + + + + + Headers returned by server with the response + + + + + Status of the request. Will return Error for transport errors. + HTTP errors will still return ResponseStatus.Completed, check StatusCode instead + + + + + Transport or other non-HTTP error generated while attempting request + + + + + The exception thrown during the request, if any + + + + + Container for data sent back from API including deserialized data + + Type of data to deserialize to + + + + Deserialized entity data + + + + + Container for data sent back from API + + + + + Comment of the cookie + + + + + Comment of the cookie + + + + + Indicates whether the cookie should be discarded at the end of the session + + + + + Domain of the cookie + + + + + Indicates whether the cookie is expired + + + + + Date and time that the cookie expires + + + + + Indicates that this cookie should only be accessed by the server + + + + + Name of the cookie + + + + + Path of the cookie + + + + + Port of the cookie + + + + + Indicates that the cookie should only be sent over secure channels + + + + + Date and time the cookie was created + + + + + Value of the cookie + + + + + Version of the cookie + + + + + Wrapper for System.Xml.Serialization.XmlSerializer. + + + + + Default constructor, does not specify namespace + + + + + Specify the namespaced to be used when serializing + + XML namespace + + + + Serialize the object as XML + + Object to serialize + XML as string + + + + Name of the root element to use when serializing + + + + + XML namespace to use when serializing + + + + + Format string to use when serializing dates + + + + + Content type for serialized content + + + + + Encoding for serialized content + + + + + Need to subclass StringWriter in order to override Encoding + + + + + Default JSON serializer for request bodies + Doesn't currently use the SerializeAs attribute, defers to Newtonsoft's attributes + + + + + Default serializer + + + + + Serialize the object as JSON + + Object to serialize + JSON as String + + + + Unused for JSON Serialization + + + + + Unused for JSON Serialization + + + + + Unused for JSON Serialization + + + + + Content type for serialized content + + + + + Allows control how class and property names and values are serialized by XmlSerializer + Currently not supported with the JsonSerializer + When specified at the property level the class-level specification is overridden + + + + + Called by the attribute when NameStyle is speficied + + The string to transform + String + + + + The name to use for the serialized element + + + + + Sets the value to be serialized as an Attribute instead of an Element + + + + + The culture to use when serializing + + + + + Transforms the casing of the name based on the selected value. + + + + + The order to serialize the element. Default is int.MaxValue. + + + + + Options for transforming casing of element names + + + + + Default XML Serializer + + + + + Default constructor, does not specify namespace + + + + + Specify the namespaced to be used when serializing + + XML namespace + + + + Serialize the object as XML + + Object to serialize + XML as string + + + + Determines if a given object is numeric in any way + (can be integer, double, null, etc). + + + + + Name of the root element to use when serializing + + + + + XML namespace to use when serializing + + + + + Format string to use when serializing dates + + + + + Content type for serialized content + + + + + Helper methods for validating required values + + + + + Require a parameter to not be null + + Name of the parameter + Value of the parameter + + + + Represents the json array. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The capacity of the json array. + + + + The json representation of the array. + + The json representation of the array. + + + + Represents the json object. + + + + + The internal member dictionary. + + + + + Initializes a new instance of . + + + + + Initializes a new instance of . + + The implementation to use when comparing keys, or null to use the default for the type of the key. + + + + Adds the specified key. + + The key. + The value. + + + + Determines whether the specified key contains key. + + The key. + + true if the specified key contains key; otherwise, false. + + + + + Removes the specified key. + + The key. + + + + + Tries the get value. + + The key. + The value. + + + + + Adds the specified item. + + The item. + + + + Clears this instance. + + + + + Determines whether [contains] [the specified item]. + + The item. + + true if [contains] [the specified item]; otherwise, false. + + + + + Copies to. + + The array. + Index of the array. + + + + Removes the specified item. + + The item. + + + + + Gets the enumerator. + + + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Returns a json that represents the current . + + + A json that represents the current . + + + + + Gets the at the specified index. + + + + + + Gets the keys. + + The keys. + + + + Gets the values. + + The values. + + + + Gets or sets the with the specified key. + + + + + + Gets the count. + + The count. + + + + Gets a value indicating whether this instance is read only. + + + true if this instance is read only; otherwise, false. + + + + + This class encodes and decodes JSON strings. + Spec. details, see http://www.json.org/ + + JSON uses Arrays and Objects. These correspond here to the datatypes JsonArray(IList<object>) and JsonObject(IDictionary<string,object>). + All numbers are parsed to doubles. + + + + + Parses the string json into a value + + A JSON string. + An IList<object>, a IDictionary<string,object>, a double, a string, null, true, or false + + + + Try parsing the json string into a value. + + + A JSON string. + + + The object. + + + Returns true if successfull otherwise false. + + + + + Converts a IDictionary<string,object> / IList<object> object into a JSON string + + A IDictionary<string,object> / IList<object> + Serializer strategy to use + A JSON encoded string, or null if object 'json' is not serializable + + + + Determines if a given object is numeric in any way + (can be integer, double, null, etc). + + + + + Helper methods for validating values + + + + + Validate an integer value is between the specified values (exclusive of min/max) + + Value to validate + Exclusive minimum value + Exclusive maximum value + + + + Validate a string length + + String to be validated + Maximum length of the string + + + diff --git a/bin/netcd.dll b/bin/netcd.dll new file mode 100644 index 0000000000000000000000000000000000000000..d1f7330d9e99072a3e00a188194a14337a42c3bf GIT binary patch literal 22528 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 r?DOer1S2Df){(mh0 Date: Fri, 31 Mar 2017 13:47:53 +0100 Subject: [PATCH 12/16] When determining if a sim can be shut down, ignore NPCs --- .../ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs index e5fbc695f8..1ee24689dc 100644 --- a/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs +++ b/OpenSim/ApplicationPlugins/RemoteController/RemoteAdminPlugin.cs @@ -370,7 +370,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController { foreach (ScenePresence sp in s.GetScenePresences()) { - if (!sp.IsChildAgent) + if (!sp.IsChildAgent && !sp.IsNPC) agents++; } } @@ -379,7 +379,7 @@ namespace OpenSim.ApplicationPlugins.RemoteController { foreach (ScenePresence sp in rebootedScene.GetScenePresences()) { - if (!sp.IsChildAgent) + if (!sp.IsChildAgent && !sp.IsNPC) agents++; } } From a6ecedb72a44dbf9c2b9ec4c8f51ec70fce06b78 Mon Sep 17 00:00:00 2001 From: Melanie Thielker Date: Fri, 31 Mar 2017 13:50:28 +0100 Subject: [PATCH 13/16] Also ignore NPCs in short-circuiting region restarts --- OpenSim/Region/CoreModules/World/Region/RestartModule.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OpenSim/Region/CoreModules/World/Region/RestartModule.cs b/OpenSim/Region/CoreModules/World/Region/RestartModule.cs index bf6592fd1a..bb3b8605b5 100644 --- a/OpenSim/Region/CoreModules/World/Region/RestartModule.cs +++ b/OpenSim/Region/CoreModules/World/Region/RestartModule.cs @@ -374,7 +374,7 @@ namespace OpenSim.Region.CoreModules.World.Region { foreach (ScenePresence sp in s.GetScenePresences()) { - if (!sp.IsChildAgent) + if (!sp.IsChildAgent && !sp.IsNPC) agents++; } } @@ -383,7 +383,7 @@ namespace OpenSim.Region.CoreModules.World.Region { foreach (ScenePresence sp in m_Scene.GetScenePresences()) { - if (!sp.IsChildAgent) + if (!sp.IsChildAgent && !sp.IsNPC) agents++; } } From 5c3cb5297c61f703dc66434778be9db05b1c27b3 Mon Sep 17 00:00:00 2001 From: Melanie Thielker Date: Fri, 31 Mar 2017 13:51:10 +0100 Subject: [PATCH 14/16] Add missing dependency for etcd moduile --- prebuild.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/prebuild.xml b/prebuild.xml index fddbca3286..c087def826 100644 --- a/prebuild.xml +++ b/prebuild.xml @@ -1465,6 +1465,7 @@ + From 59f7cf79c9925ea07a79d975bf480aba7b5d6498 Mon Sep 17 00:00:00 2001 From: Melanie Thielker Date: Fri, 31 Mar 2017 13:51:42 +0100 Subject: [PATCH 15/16] Prevent error spew when script send IM to HG users before HG is up --- .../Framework/UserManagement/UserManagementModule.cs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs b/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs index 51f973a4c0..32cb5a383a 100644 --- a/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs +++ b/OpenSim/Region/CoreModules/Framework/UserManagement/UserManagementModule.cs @@ -957,9 +957,14 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement public virtual bool IsLocalGridUser(UUID uuid) { - UserAccount account = m_Scenes[0].UserAccountService.GetUserAccount(m_Scenes[0].RegionInfo.ScopeID, uuid); - if (account == null || (account != null && !account.LocalToGrid)) - return false; + lock (m_Scenes) + { + if (m_Scenes.Count == 0) + return true; + UserAccount account = m_Scenes[0].UserAccountService.GetUserAccount(m_Scenes[0].RegionInfo.ScopeID, uuid); + if (account == null || (account != null && !account.LocalToGrid)) + return false; + } return true; } From 6463ab7d795933ed6745b4e43cab7bc6ffe98c0a Mon Sep 17 00:00:00 2001 From: Melanie Thielker Date: Fri, 31 Mar 2017 14:44:22 +0100 Subject: [PATCH 16/16] If a DNS resolution fails on an outbound request, simply allow it --- OpenSim/Framework/OutboundUrlFilter.cs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/OpenSim/Framework/OutboundUrlFilter.cs b/OpenSim/Framework/OutboundUrlFilter.cs index ee4707fa8c..63ae361448 100644 --- a/OpenSim/Framework/OutboundUrlFilter.cs +++ b/OpenSim/Framework/OutboundUrlFilter.cs @@ -212,7 +212,17 @@ namespace OpenSim.Framework // Check that we are permitted to make calls to this endpoint. bool foundIpv4Address = false; - IPAddress[] addresses = Dns.GetHostAddresses(url.Host); + IPAddress[] addresses = null; + + try + { + addresses = Dns.GetHostAddresses(url.Host); + } + catch + { + // If there is a DNS error, we can't stop the script! + return true; + } foreach (IPAddress addr in addresses) { @@ -253,4 +263,4 @@ namespace OpenSim.Framework return allowed; } } -} \ No newline at end of file +}

HJJ(C8mbT-+|;T^h|kNT<*?&f??W4N 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 literal 0 HcmV?d00001 diff --git a/bin/Newtonsoft.Json.xml b/bin/Newtonsoft.Json.xml new file mode 100644 index 0000000000..2a75b4481a --- /dev/null +++ b/bin/Newtonsoft.Json.xml @@ -0,0 +1,8626 @@ + + + + Newtonsoft.Json + + + +