From cc93a081e1fc1de3c10a953bb0d1ac035326b19e Mon Sep 17 00:00:00 2001 From: molsonkiko <46202915+molsonkiko@users.noreply.github.com> Date: Tue, 2 Jul 2024 23:41:45 -0700 Subject: [PATCH] Enable translation to other languages Also fix bug with makerelease.bat; now it will copy dependency DLLs into the zipfiles --- .github/workflows/CI_build.yml | 1 + CHANGELOG.md | 4 +- NppCSharpPluginPack/Forms/AboutForm.cs | 1 + .../Forms/DarkModeTestForm.Designer.cs | 8 +- NppCSharpPluginPack/Forms/DarkModeTestForm.cs | 6 + .../Forms/DarkModeTestForm.resx | 52 +- NppCSharpPluginPack/Forms/FormBase.cs | 1 + NppCSharpPluginPack/JSON_Tools/JNode.cs | 1840 +++++++++++++++++ NppCSharpPluginPack/JSON_Tools/JsonParser.cs | 1725 ++++++++++++++++ NppCSharpPluginPack/Main.cs | 41 +- .../NppCSharpPluginPack.csproj | 8 + .../NppPluginNETHelper.cs | 8 +- .../PluginInfrastructure/SettingsBase.cs | 28 +- .../Properties/AssemblyInfo.cs | 4 +- NppCSharpPluginPack/Release_x64.zip | Bin 112171 -> 141112 bytes NppCSharpPluginPack/Release_x86.zip | Bin 112342 -> 141183 bytes NppCSharpPluginPack/Utils/Translator.cs | 295 +++ README.md | 36 + makerelease.bat | 9 +- most recent errors.txt | 4 +- translation/english.json5 | 119 ++ translation/spanish.json5 | 116 ++ 22 files changed, 4248 insertions(+), 58 deletions(-) create mode 100644 NppCSharpPluginPack/JSON_Tools/JNode.cs create mode 100644 NppCSharpPluginPack/JSON_Tools/JsonParser.cs create mode 100644 NppCSharpPluginPack/Utils/Translator.cs create mode 100644 translation/english.json5 create mode 100644 translation/spanish.json5 diff --git a/.github/workflows/CI_build.yml b/.github/workflows/CI_build.yml index 312c795..31dc7b2 100644 --- a/.github/workflows/CI_build.yml +++ b/.github/workflows/CI_build.yml @@ -10,6 +10,7 @@ on: - '*.PNG' - 'makerelease.bat' - 'testfiles/**' + - 'translation/**' jobs: build: diff --git a/CHANGELOG.md b/CHANGELOG.md index 132ad7c..b035a01 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,7 +27,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/). ### Added 1. Make it much easier to [include third-party dependencies](/docs/README.md#loading-third-party-dependencies) in your plugin. -2. Made it so all forms subclass a base class, making it easier to implement recommended methods. +2. Added the ability to [translate the plugin into other languages](/README.md#translating-your-plugin-to-another-language). +3. Made it so all forms subclass a base class, making it easier to implement recommended methods. ### Fixed @@ -36,6 +37,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/). 3. Fix error due to assuming that "." (the current directory according to the filesystem) will always point to the path to the Notepad++ executable; this is *almost always true*, but can be broken due to at least one known weird interaction (the one molsonkiko is familiar with concerns the `New script` functionality of the PythonScript plugin). 4. Fix bug where, if a setting in the config file had an invalid value (for example, a numeric setting having a value of `blah`), there might be an uncaught exception that would cause Notepad++ to crash. This bug appears to be most likely to occur when the localization is *not* set to `en-us`. 5. Fix bug (related to fixed bug 4 above) where *all settings with non-integer floating-point values* would cause Notepad++ to crash on start-up if the localization used `,` as the decimal separator. +6. Fix bug with [makerelease.bat](/makerelease.bat) where it did not properly copy the dependency DLLs into the zip files. ## [0.0.3] - 2024-02-26 diff --git a/NppCSharpPluginPack/Forms/AboutForm.cs b/NppCSharpPluginPack/Forms/AboutForm.cs index 9634610..53273d4 100644 --- a/NppCSharpPluginPack/Forms/AboutForm.cs +++ b/NppCSharpPluginPack/Forms/AboutForm.cs @@ -10,6 +10,7 @@ public AboutForm() { InitializeComponent(); NppFormHelper.RegisterFormIfModeless(this, true); + Translator.TranslateForm(this); FormStyle.ApplyStyle(this, Main.settings.use_npp_styling); ThanksWowLinkLabel.LinkColor = ThanksWowLinkLabel.ForeColor; // hidden! Title.Text = Title.Text.Replace("X.Y.Z.A", Npp.AssemblyVersionString()); diff --git a/NppCSharpPluginPack/Forms/DarkModeTestForm.Designer.cs b/NppCSharpPluginPack/Forms/DarkModeTestForm.Designer.cs index 99a0401..97aae40 100644 --- a/NppCSharpPluginPack/Forms/DarkModeTestForm.Designer.cs +++ b/NppCSharpPluginPack/Forms/DarkModeTestForm.Designer.cs @@ -109,6 +109,7 @@ private void InitializeComponent() // // imageList1 // + this.imageList1.ColorDepth = System.Windows.Forms.ColorDepth.Depth8Bit; this.imageList1.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList1.ImageStream"))); this.imageList1.TransparentColor = System.Drawing.Color.Transparent; this.imageList1.Images.SetKeyName(0, "star.png"); @@ -173,7 +174,7 @@ private void InitializeComponent() this.label1.AutoSize = true; this.label1.Location = new System.Drawing.Point(36, 392); this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(105, 16); + this.label1.Size = new System.Drawing.Size(111, 17); this.label1.TabIndex = 6; this.label1.Text = "A non-bold label"; // @@ -182,10 +183,11 @@ private void InitializeComponent() this.checkBox1.AutoSize = true; this.checkBox1.Location = new System.Drawing.Point(179, 349); this.checkBox1.Name = "checkBox1"; - this.checkBox1.Size = new System.Drawing.Size(173, 20); + this.checkBox1.Size = new System.Drawing.Size(185, 21); this.checkBox1.TabIndex = 7; - this.checkBox1.Text = "checkBox1 looks good?"; + this.checkBox1.Text = "checkBox1 is unchecked"; this.checkBox1.UseVisualStyleBackColor = true; + this.checkBox1.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged); // // textBox1 // diff --git a/NppCSharpPluginPack/Forms/DarkModeTestForm.cs b/NppCSharpPluginPack/Forms/DarkModeTestForm.cs index 82c3026..2890305 100644 --- a/NppCSharpPluginPack/Forms/DarkModeTestForm.cs +++ b/NppCSharpPluginPack/Forms/DarkModeTestForm.cs @@ -44,5 +44,11 @@ private void ShowPopupDialogButton_Click(object sender, System.EventArgs e) using (var popupDialog = new PopupDialog()) popupDialog.ShowDialog(); } + + private void checkBox1_CheckedChanged(object sender, System.EventArgs e) + { + if (!Translator.HasTranslations) // the translator takes care of the CheckedChanged event if it is active + checkBox1.Text = checkBox1.Checked ? "checkBox1 is checked" : "checkBox1 is unchecked"; + } } } diff --git a/NppCSharpPluginPack/Forms/DarkModeTestForm.resx b/NppCSharpPluginPack/Forms/DarkModeTestForm.resx index 531028d..189604a 100644 --- a/NppCSharpPluginPack/Forms/DarkModeTestForm.resx +++ b/NppCSharpPluginPack/Forms/DarkModeTestForm.resx @@ -1,17 +1,17 @@  - @@ -125,7 +125,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADw - CgAAAk1TRnQBSQFMAgEBAwEAASgBAAEoAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + CgAAAk1TRnQBSQFMAgEBAwEAATABAAEwAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA diff --git a/NppCSharpPluginPack/Forms/FormBase.cs b/NppCSharpPluginPack/Forms/FormBase.cs index 3dd1ece..22edece 100644 --- a/NppCSharpPluginPack/Forms/FormBase.cs +++ b/NppCSharpPluginPack/Forms/FormBase.cs @@ -70,6 +70,7 @@ private void FormBase_VisibleChanged(object sender, EventArgs e) // because it must be called *after* the subclass constructor adds all child controls // and the base constructor must be called first (that's just how C# works) AddKeyUpDownPressHandlers(this); + Translator.TranslateForm(this); FormStyle.ApplyStyle(this, Main.settings.use_npp_styling); } diff --git a/NppCSharpPluginPack/JSON_Tools/JNode.cs b/NppCSharpPluginPack/JSON_Tools/JNode.cs new file mode 100644 index 0000000..f72e64f --- /dev/null +++ b/NppCSharpPluginPack/JSON_Tools/JNode.cs @@ -0,0 +1,1840 @@ +/* +A class for representing arbitrary JSON. +This was copy-pasted from https://github.com/molsonkiko/JsonToolsNppPlugin/blob/9eadb9f8995215bd0eb4f3349e99a29d2f35061d/JsonToolsNppPlugin/JSONTools/JNode.cs with some minor naming changes and removals of irrelevant code. +*/ +using System; +using System.Collections.Generic; // for dictionary, list +using System.Globalization; +using System.Linq; +using System.Text; +using System.Text.RegularExpressions; + +namespace NppDemo.JSON_Tools +{ + /// + /// JNode type indicator + /// + public enum Dtype : ushort + { + /// useful only in JSON schema + TYPELESS = 0, + /// represented as booleans + BOOL = 1, + /// represented as longs + INT = 2, + /// represented as doubles + FLOAT = 4, + /// represented as strings + STR = 8, + NULL = 16, + /// JObject Dtype. Represented as Dictionary(string, JNode). + OBJ = 32, + /// JArray Dtype. Represented as List(JNode). + ARR = 64, + /// The type of a CurJson node in RemesPathFunctions with unknown type + UNKNOWN = 128, + /// A regular expression, made by RemesPath + REGEX = 256, + /// a string representing an array slice + SLICE = 512, + ///// + ///// A YYYY-MM-DD date + ///// + //DATE = 1024, + ///// + ///// A YYYY-MM-DD hh:mm:ss.sss datetime + ///// + //DATETIME = 2048, + /// + /// NO JNODES ACTUALLY HAVE THE FUNCTION TYPE.

+ /// It is used in RemesPath to distinguish CurJson from non-CurJson + ///
+ FUNCTION = 4096, + /********* COMPOSITE TYPES *********/ + FLOAT_OR_INT = FLOAT | INT, + INT_OR_BOOL = INT | BOOL, + /// + /// a float, int, or bool + /// + NUM = FLOAT | INT | BOOL, + ITERABLE = UNKNOWN | ARR | OBJ, + STR_OR_REGEX = STR | REGEX, + INT_OR_SLICE = INT | SLICE, + ARR_OR_OBJ = ARR | OBJ, + SCALAR = FLOAT | INT | BOOL | STR | NULL | REGEX, // | TIME + ANYTHING = SCALAR | ITERABLE, + } + + /// + /// The artistic style used for pretty-printing.

+ /// Controls things like whether the start bracket of an array/object are on the same line as the parent key.

+ /// See http://astyle.sourceforge.net/astyle.html#_style=google + ///
+ public enum PrettyPrintStyle + { + /// + /// Formats + /// {"a": {"b": {"c": 2}, "d": [3, [4]]}} + /// like so:

+ /// + ///{ + /// "a": { + /// "b": { + /// "c": 2 + /// }, + /// "d": [ + /// 3, + /// [ + /// 4 + /// ] + /// ] + /// } + ///} + /// + ///
+ Google, + /// + /// Formats + /// {"a": {"b": {"c": 2}, "d": [3, [4]]}} + /// like so:

+ /// + ///{ + ///"a": + /// { + /// "b": + /// { + /// "c": 2 + /// }, + /// "d": + /// [ + /// 3, + /// [ + /// 4 + /// ] + /// ] + /// } + ///} + /// + /// This is a bit different from the Whitesmith style described on astyle.sourceforge.net,

+ /// but it's closer to that style than it is to anything else. + ///
+ Whitesmith, + /// + /// + ///{ + /// "algorithm": [ + /// ["start", "each", "child", "on", "a", "new", "line"], + /// ["if", "the", "line", "would", "have", "length", "at", "least", 80], + /// [ + /// "follow", + /// "this", + /// "algorithm", + /// ["starting", "from", "the", "beginning"] + /// ], + /// ["else", "print", "it", "out", "on", 1, "line"] + /// ], + /// "style": "PPrint", + /// "useful": true + ///} + /// + /// + PPrint, + } + + /// + /// Whether a given string can be accessed using dot syntax + /// or square brackets and quotes, and what kind of quotes to use + /// + public enum KeyStyle + { + /// + /// dot syntax for strings starting with _ or letters and containing only _, letters, and digits

+ /// else singlequotes if it doesn't contain '

+ /// else double quotes + ///
+ JavaScript, + /// + /// Singlequotes if it doesn't contain '

+ /// else double quotes + ///
+ Python, + /// + /// dot syntax for strings starting with _ or letters and containing only _, letters, and digits

+ /// else backticks + ///
+ RemesPath, + } + + /// + /// types of documents that can be parsed in JsonTools + /// + public enum DocumentType + { + /// null value for use in some functions + NONE, + JSON, + /// JSON Lines documents + JSONL, + /// ini files + INI, + /// regex search results (includes CSV files parsed with s_csv) + REGEX, + } + + /// + /// JSON documents are parsed as JNodes, JObjects, and JArrays. JObjects and JArrays are subclasses of JNode. + /// A JSON node, for use in creating a drop-down tree + /// Here's an example of how a small JSON document (with newlines as shown, and assuming `\r\n` newline) + /// would be parsed as JNodes: + /// + ///example.json + /// + ///{ + ///"a": [ + /// 1, + /// true, + /// {"b": 0.5, "c": "a"}, + /// null + /// ] + ///} + /// + ///should be parsed as: + /// node1: JObject(type = Dtype.OBJ, position = 0, children = Dictionary{"a": node2}) + /// node2: JArray(type = Dtype.ARR, position = 8, children = List{node3, node4, node5, node8}) + /// node3: JNode(value = 1, type = Dtype.INT, position = 15) + /// node4: JNode(value = true, type = Dtype.BOOL, position = 23) + /// node5: JObject(type = Dtype.OBJ, position = 38, + /// children = Dictionary{"b": node6, "c": node7}) + /// node6: JNode(value = 0.5, type = Dtype.FLOAT, position = 44) + /// node7: JNode(value = "a", type = Dtype.STR, position = 55) + /// node8: JNode(value = null, type = Dtype.NULL, position = 65) + /// + /// + [System.Diagnostics.DebuggerDisplay("JNode({ToString()})")] + public class JNode : IComparable + { + public const int PPRINT_LINE_LENGTH = 79; + + public const string NL = "\r\n"; + + public IComparable value; // null for arrays and objects + // IComparable is good here because we want easy comparison of JNodes + public Dtype type; + /// + /// Start position of the JNode in a UTF-8 encoded source string.

+ /// Note that this could disagree its position in the C# source string. + ///
+ public int position; + + //public ExtraJNodeProperties? extras; + + public JNode(IComparable value, + Dtype type, + int position) + { + this.position = position; + this.type = type; + this.value = value; + //extras = null; + } + + /// + /// instantiates a JNode with null value, type Dtype.NULL, and position 0 + /// + public JNode() + { + this.position = 0; + this.type = Dtype.NULL; + this.value = null; + //extras = null; + } + + public JNode(long value, int position = 0) + { + this.position = position; + this.type = Dtype.INT; + this.value = value; + } + + public JNode(string value, int position = 0) + { + this.position = position; + this.type = Dtype.STR; + this.value = value; + } + + public JNode(double value, int position = 0) + { + this.position = position; + this.type = Dtype.FLOAT; + this.value = value; + } + + public JNode(bool value, int position = 0) + { + this.position = position; + this.type = Dtype.BOOL; + this.value = value; + } + + // in some places like Germany they use ',' as the normal decimal separator. + // need to override this to ensure that we parse JSON correctly + public static readonly NumberFormatInfo DOT_DECIMAL_SEP = new NumberFormatInfo + { + NumberDecimalSeparator = "." + }; + #region TOSTRING_FUNCS + /// + /// appends the JSON representation of char c to a StringBuilder.

+ /// for most characters, this just means appending the character itself, but for example '\n' would become "\\n", '\t' would become "\\t",

+ /// and most other chars less than 32 would be appended as "\\u00{char value in hex}" (e.g., '\x14' becomes "\\u0014") + ///
+ public static void CharToSb(StringBuilder sb, char c) + { + switch (c) + { + case '\\': sb.Append("\\\\" ); break; + case '"': sb.Append("\\\"" ); break; + case '\x01': sb.Append("\\u0001"); break; + case '\x02': sb.Append("\\u0002"); break; + case '\x03': sb.Append("\\u0003"); break; + case '\x04': sb.Append("\\u0004"); break; + case '\x05': sb.Append("\\u0005"); break; + case '\x06': sb.Append("\\u0006"); break; + case '\x07': sb.Append("\\u0007"); break; + case '\x08': sb.Append("\\b" ); break; + case '\x09': sb.Append("\\t" ); break; + case '\x0A': sb.Append("\\n" ); break; + case '\x0B': sb.Append("\\v" ); break; + case '\x0C': sb.Append("\\f" ); break; + case '\x0D': sb.Append("\\r" ); break; + case '\x0E': sb.Append("\\u000E"); break; + case '\x0F': sb.Append("\\u000F"); break; + case '\x10': sb.Append("\\u0010"); break; + case '\x11': sb.Append("\\u0011"); break; + case '\x12': sb.Append("\\u0012"); break; + case '\x13': sb.Append("\\u0013"); break; + case '\x14': sb.Append("\\u0014"); break; + case '\x15': sb.Append("\\u0015"); break; + case '\x16': sb.Append("\\u0016"); break; + case '\x17': sb.Append("\\u0017"); break; + case '\x18': sb.Append("\\u0018"); break; + case '\x19': sb.Append("\\u0019"); break; + case '\x1A': sb.Append("\\u001A"); break; + case '\x1B': sb.Append("\\u001B"); break; + case '\x1C': sb.Append("\\u001C"); break; + case '\x1D': sb.Append("\\u001D"); break; + case '\x1E': sb.Append("\\u001E"); break; + case '\x1F': sb.Append("\\u001F"); break; + default: sb.Append(c); break; + } + } + + /// + /// the string representation of a JNode with value s, + /// with or without the enclosing quotes that a Dtype.STR JNode normally has + /// + /// + /// + public static string StrToString(string s, bool quoted) + { + int slen = s.Length; + int ii = 0; + for (; ii < slen; ii++) + { + char c = s[ii]; + if (c < 32 || c == '\\' || c == '"') + break; + } + if (ii == slen) + return quoted ? $"\"{s}\"" : s; + var sb = new StringBuilder(); + if (quoted) + sb.Append('"'); + if (ii > 0) + { + ii--; + sb.Append(s, 0, ii); + } + for (; ii < slen; ii++) + CharToSb(sb, s[ii]); + if (quoted) + sb.Append('"'); + return sb.ToString(); + } + + /// + /// mostly useful for quickly converting a JObject key (which must be escaped during parsing) into the raw string that it represents

+ /// Choose strAlreadyQuoted = true only if str is already wrapped in double quotes. + ///
+ public static string UnescapedJsonString(string str, bool strAlreadyQuoted) + { + return (string)new JsonParser().ParseString(strAlreadyQuoted ? str : $"\"{str}\"").value; + } + + /// + /// adds the escaped JSON representation (BUT WITHOUT ENCLOSING QUOTES) of a string s to StringBuilder sb. + /// + public static void StrToSb(StringBuilder sb, string s) + { + int ii = 0; + int slen = s.Length; + // if s contains no control chars + for (; ii < slen; ii++) + { + char c = s[ii]; + if (c < 32 || c == '\\' || c == '"') + break; + } + if (ii == slen) + sb.Append(s); + else + { + if (ii > 0) + { + ii--; + sb.Append(s, 0, ii); + } + for (; ii < slen; ii++) + { + CharToSb(sb, s[ii]); + } + } + } + + /// + /// Compactly prints the JSON.

+ /// If sortKeys is true, the keys of objects are printed in alphabetical order.

+ /// keyValueSep (default ": ") is the separator between the key and the value in an object. Use ":" instead if you want minimal whitespace.

+ /// itemSep (default ", ") is the separator between key-value pairs in an object or items in an array. Use "," instead if you want minimal whitespace. + ///
+ /// The compressed form of the JSON. + public virtual string ToString(bool sortKeys = true, string keyValueSep = ": ", string itemSep = ", ", int maxLength = int.MaxValue) + { + switch (type) + { + case Dtype.STR: + { + return StrToString((string)value, true); + } + case Dtype.FLOAT: + { + double v = (double)value; + if (double.IsInfinity(v)) + { + return (v < 0) ? "-Infinity" : "Infinity"; + } + if (double.IsNaN(v)) { return "NaN"; } + string dubstring = v.ToString(DOT_DECIMAL_SEP); + if (v == Math.Round(v) && !(v > long.MaxValue || v < long.MinValue) && dubstring.IndexOf('E') < 0) + { + // add ending ".0" to distinguish doubles equal to integers from actual integers + // unless they use exponential notation, in which case you mess things up + // by turning something like 3.123E+15 into 3.123E+15.0 (a non-JSON number representation) + return dubstring + ".0"; + } + return dubstring; + } + case Dtype.INT: return Convert.ToInt64(value).ToString(); + case Dtype.NULL: return "null"; + case Dtype.BOOL: return (bool)value ? "true" : "false"; + case Dtype.REGEX: return StrToString(((JRegex)this).regex.ToString(), true); + //case Dtype.DATETIME: return '"' + ((DateTime)value).ToString("yyyy-MM-dd HH:mm:ss.fff") + '"'; + //case Dtype.DATE: return '"' + ((DateTime)value).ToString("yyyy-MM-dd") + '"'; + default: return ((object)this).ToString(); // just show the type name for it + } + } + + /// + /// return this.value if this happens to have a string value, else this.ToString() + /// + /// + public string ValueOrToString() + { + return value is string s ? s : ToString(); + } + + internal virtual int ToStringHelper(bool sortKeys, string keyValueSep, string itemSep, StringBuilder sb, bool changePositions, int extraUtf8_bytes, int maxLength) + { + if (changePositions) + position = sb.Length + extraUtf8_bytes; + var str = ToString(); + sb.Append(str); + if (type == Dtype.STR) + return extraUtf8_bytes + JsonParser.ExtraUTF8BytesBetween(str, 1, str.Length - 1); + return extraUtf8_bytes; // only ASCII characters in non-strings + } + + /// + /// Pretty-prints the JSON with each array value and object key-value pair on a separate line, + /// and indentation proportional to nesting depth.

+ /// For JNodes that are not JArrays or JObjects, the inden argument does nothing.

+ /// The indent argument sets the number of spaces per level of depth.

+ /// If sortKeys is true, the keys of objects are printed in alphabetical order.

+ /// The style argument controls various stylistic details of pretty-printing. + /// See the documentation for the PrettyPrintStyle enum and its members. + ///
+ /// the number of spaces per level of nesting. + /// a pretty-printed JSON string + public virtual string PrettyPrint(int indent = 4, bool sortKeys = true, PrettyPrintStyle style = PrettyPrintStyle.Google, int maxLength = int.MaxValue, char indentChar = ' ') + { + return ToString(); + } + + /// + /// Called by JArray.PrettyPrintAndChangePositions and JObject.PrettyPrintAndChangePositions during recursions.

+ /// Returns the number of the final line in this node's string representation and this JNode's PrettyPrint() string.

+ /// The style argument controls various stylistic details of pretty-printing. + /// See the documentation for the PrettyPrintStyle enum and its members.

+ /// If sortKeys is true, the keys of objects are printed in alphabetical order.

+ /// maxLength is the maximum length of the string representation + ///
+ /// + /// + /// + /// + internal virtual int PrettyPrintHelper(int indent, bool sortKeys, PrettyPrintStyle style, int depth, StringBuilder sb, bool changePositions, int extraUtf8_bytes, int maxLength, char indentChar) + { + return ToStringHelper(sortKeys, ": ", ", ", sb, changePositions, extraUtf8_bytes, maxLength); + } + + /// + /// Compactly prints the JNode - see the documentation for ToString.

+ /// If sortKeys is true, the keys of objects are printed in alphabetical order. + /// keyValueSep (default ": ") is the separator between the key and the value in an object. Use ":" instead if you want minimal whitespace.

+ /// itemSep (default ", ") is the separator between key-value pairs in an object or items in an array. Use "," instead if you want minimal whitespace.

+ /// maxLength is the maximum length that this string representation can have. + ///
+ /// + public virtual string ToStringAndChangePositions(bool sortKeys = true, string keyValueSep = ": ", string itemSep = ", ", int maxLength = int.MaxValue) + { + position = 0; + return ToString(); + } + + /// + /// Pretty-prints the JNode - see documentation for PrettyPrint.

+ /// Also changes the line numbers of all the JNodes that are pretty-printed.

+ /// If sortKeys is true, the keys of objects are printed in ASCIIbetical order.

+ /// The style argument controls various stylistic details of pretty-printing. + /// See the documentation for the PrettyPrintStyle enum and its members.

+ /// maxLength is the maximum length that this string representation can have. + /// EXAMPLE: TODO

+ ///
+ /// + /// + public virtual string PrettyPrintAndChangePositions(int indent = 4, bool sortKeys = true, PrettyPrintStyle style = PrettyPrintStyle.Google, int maxLength = int.MaxValue, char indentChar = ' ') + { + position = 0; + return ToString(); + } + + public virtual int PPrintHelper(int indent, int depth, bool sortKeys, StringBuilder sb, bool changePositions, int extraUtf8_bytes, int maxLineEnd, int maxLength, char indentChar) + { + return ToStringHelper(sortKeys, ":", ",", sb, changePositions, extraUtf8_bytes, int.MaxValue); + } + + /// + /// All JSON elements follow the same algorithm when compactly printing with comments:

+ /// All comments come before all the JSON, and the JSON is compactly printed with non-minimal whitespace + /// (i.e., one space after colons in objects and one space after commas in iterables) + ///
+ public string ToStringWithComments(List comments, bool sortKeys = true) + { + comments.Sort((x, y) => x.position.CompareTo(y.position)); + var sb = new StringBuilder(); + Comment.AppendAllCommentsBeforePosition(sb, comments, 0, 0, int.MaxValue, ""); + ToStringHelper(sortKeys, ": ", ", ", sb, false, 0, int.MaxValue); + return sb.ToString(); + } + + /// + /// As ToStringWithComments, but changes each JSON element's position to reflect where it is in the UTF-8 encoded form of the generated string. + /// + public string ToStringWithCommentsAndChangePositions(List comments, bool sortKeys = true) + { + comments.Sort((x, y) => x.position.CompareTo(y.position)); + var sb = new StringBuilder(); + (_, int extraUtf8_bytes) = Comment.AppendAllCommentsBeforePosition(sb, comments, 0, 0, int.MaxValue, ""); + position = extraUtf8_bytes; + ToStringHelper(sortKeys, ": ", ", ", sb, true, extraUtf8_bytes, int.MaxValue); + return sb.ToString(); + } + + /// + /// for non-iterables, pretty-printing with comments is the same as compactly printing with comments.

+ /// For iterables, pretty-printing with comments means Google-style pretty-printing (unless prettyPrintStyle is PPrint),

+ /// with each comment having the same position relative to each JSON element and each other comment + /// that those comments did when the JSON was parsed.

+ /// If prettyPrintStyle is PPrint, the algorith works as illustrated in PrettyPrintWithCommentsHelper below. + ///
+ public string PrettyPrintWithComments(List comments, int indent = 4, bool sortKeys = true, char indentChar = ' ', PrettyPrintStyle prettyPrintStyle=PrettyPrintStyle.Google) + { + return PrettyPrintWithComentsStarter(comments, false, indent, sortKeys, indentChar, prettyPrintStyle); + } + + /// + /// As PrettyPrintWithComments, but changes the position of each JNode to wherever it is in the UTF-8 encoded form of the returned string + /// + public string PrettyPrintWithCommentsAndChangePositions(List comments, int indent = 4, bool sortKeys = true, char indentChar = ' ', PrettyPrintStyle prettyPrintStyle=PrettyPrintStyle.Google) + { + return PrettyPrintWithComentsStarter(comments, true, indent, sortKeys, indentChar, prettyPrintStyle); + } + + private string PrettyPrintWithComentsStarter(List comments, bool changePositions, int indent, bool sortKeys, char indentChar, PrettyPrintStyle prettyPrintStyle) + { + comments.Sort((x, y) => x.position.CompareTo(y.position)); + bool pprint = prettyPrintStyle == PrettyPrintStyle.PPrint; + var sb = new StringBuilder(); + (int commentIdx, int extraUtf8_bytes) = Comment.AppendAllCommentsBeforePosition(sb, comments, 0, 0, position, ""); + (commentIdx, _) = PrettyPrintWithCommentsHelper(comments, commentIdx, indent, sortKeys, 0, sb, changePositions, extraUtf8_bytes, indentChar, pprint); + sb.Append(NL); + Comment.AppendAllCommentsBeforePosition(sb, comments, commentIdx, 0, int.MaxValue, ""); // add all comments after the last JNode + return sb.ToString(); + } + + /// + /// goal is to look like this EXAMPLE: + /// + /// //comment at the beginning + /// /* multiline start comment*/ + ///{ + /// /* every comment has a newline + /// after it, even multiliners */ + /// "a": { + /// "b": { + /// "c": 2 + /// }, + /// "d": [ + /// // comment indentation is the same as + /// // whatever it comes before + /// 3, + /// [ + /// 4 + /// ] + /// ] + /// } + ///} + /// // comment at the end + /// + /// If pprint, the algorithm instead works like this:

+ /// // comment at start

+ /// [

+ /// // comment before first element

+ /// ["short", {"iterables": "get", "printed on": 1.0}, "line"],

+ /// {

+ /// "but": [

+ /// "this",

+ /// /* has a comment in it */

+ /// "and gets more lines",

+ /// true

+ /// ]

+ /// },

+ /// [

+ /// "and this array is too long",

+ /// "so it goes Google-style",

+ /// "even though it has",

+ /// [0.0, "comments"]

+ /// ]

+ /// ]

+ ///
+ public virtual (int commentIdx, int extraUtf8_bytes) PrettyPrintWithCommentsHelper(List comments, int commentIdx, int indent, bool sortKeys, int depth, StringBuilder sb, bool changePositions, int extraUtf8_bytes, char indentChar, bool pprint) + { + return (commentIdx, ToStringHelper(sortKeys, ": ", ", ", sb, changePositions, extraUtf8_bytes, int.MaxValue)); + } + + public virtual (int commentIdx, int extraUtf8_bytes) PPrintWithCommentsHelper(List comments, int commentIdx, int indent, bool sortKeys, int depth, StringBuilder sb, bool changePositions, int extraUtf8_bytes, char indentChar, int maxLineEnd) + { + return (commentIdx, ToStringHelper(sortKeys, ": ", ", ", sb, changePositions, extraUtf8_bytes, int.MaxValue)); + } + + /// + /// return -1 if and only if either of the following is true:

+ /// * compressing this JSON (non-minimal whitespace) would JSON would push sbLength over maxSbLen

+ /// * this JNode has a position greater than maxInitialPosition

+ /// If neither is true, return sbLength plus the length of this JSON's compressed string repr (non-minimal whitespace) + ///
+ public virtual int CompressedLengthAndPositionsWithinThresholds(int sbLength, int maxInitialPosition, int maxSbLen) + { + if (position >= maxInitialPosition || sbLength >= maxSbLen) + return -1; + return sbLength + ToString().Length; + } + #endregion + /// + /// A magic method called behind the scenes when sorting things.

+ /// It only works if other also implements IComparable.

+ /// Assuming this and other are sorted ascending, CompareTo should do the following:

+ /// return a negative number if this < other

+ /// return 0 if this == other

+ /// return a positive number if this > other + /// + ///
+ /// + /// If an attempt is made to compare two things of different type. + /// + public int CompareTo(object other) + { + if (other is JNode jother) + { + return CompareTo(jother.value); + } + switch (type) + { + // we could simply say value.CompareTo(other) after checking if value is null. + // It is more user-friendly to attempt to allow comparison of different numeric types, so we do this instead + case Dtype.STR: return ((string)value).CompareTo(other); + case Dtype.INT: // Convert.ToInt64 has some weirdness where it rounds half-integers to the nearest even + // so it is generally preferable to have ints and floats compared the same way + // this way e.g. "3.5 < 4" will be treated the same as "4 > 3.5", + // which is the same comparison but with different operand order. + // The only downside of this approach is that integers between + // 4.5036e15 (2 ^ 52) and 9.2234e18 (2 ^ 63) + // can be precisely represented by longs but not by doubles, + // so very large integers will have a loss of precision. + case Dtype.FLOAT: + if (!(other is long || other is double || other is bool)) + throw new ArgumentException("Can't compare numbers to non-numbers"); + return Convert.ToDouble(value).CompareTo(Convert.ToDouble(other)); + case Dtype.BOOL: + if (!(other is long || other is double || other is bool)) + throw new ArgumentException("Can't compare numbers to non-numbers"); + if ((bool)value) return (1.0).CompareTo(Convert.ToDouble(other)); + return (0.0).CompareTo(Convert.ToDouble(other)); + case Dtype.NULL: + if (other != null) + throw new ArgumentException("Cannot compare null to non-null"); + return 0; + //case Dtype.DATE: return ((DateOnly)value).CompareTo((DateOnly)other); + //case Dtype.DATETIME: return ((DateTime)value).CompareTo((DateTime)other); + case Dtype.ARR: + case Dtype.OBJ: throw new ArgumentException("Cannot compare JArrays or JObjects"); + default: throw new ArgumentException($"Cannot compare JNodes of type {type}"); + } + } + + public virtual bool Equals(JNode other) + { + return CompareTo(other) == 0; + } + + /// + /// Returns false and sets errorMessage to ex.ToString() + /// if calling this.Equals(other) throws exception ex.

+ /// If Equals throws no exception or showErrorMessage is false, errorMessage is null. + ///
+ public bool TryEquals(JNode other, out string errorMessage, bool showErrorMessage = false) + { + errorMessage = null; + try + { + return Equals(other); + } + catch (Exception ex) + { + if (showErrorMessage) + errorMessage = ex.ToString(); + return false; + } + } + + /// + /// return a deep copy of this JNode (same in every respect except memory location)

+ /// Also recursively copies all the children of a JArray or JObject. + ///
+ /// + public virtual JNode Copy() + { + //if (value is DateTime dt) + //{ + // // DateTimes are mutable, unlike all other valid JNode values. We need to deal with them separately + // return new JNode(new DateTime(dt.Ticks), type, position); + //} + return new JNode(value, type, position); + } + + #region MISC_FUNCS + /// + /// get the parent of this JNode and this JNode's parent + /// assuming that this JNode is in the tree rooted at root + /// + /// + public (object keyInParent, JNode parent) ParentAndKey(JNode root) + { + //if (extras is ExtraJNodeProperties ext + // && ext.parent != null + // && ext.parent.TryGetTarget(out JNode parent)) + //{ + // return (ext.keyInParent, parent); + //} + return ParentHierarchy(root).Last(); + } + + public List<(object keyInParent, JNode parent)> ParentHierarchy(JNode root) + { + var parents = new List(); + var keys = new List(); + //if (extras is ExtraJNodeProperties ext) + // ParentHierarchyHelperWithExtras(keys, parents); + //else + ParentHierarchyHelper(root, this, keys, parents); + return keys.Zip(parents, (k, p) => (k, p)).Reverse().ToList(); + } + + //public void ParentHierarchyHelperWithExtras(List keys, List parents) + //{ + // if (extras is ExtraJNodeProperties ext + // && ext.parent != null + // && ext.parent.TryGetTarget(out JNode parent)) + // { + // keys.Add(ext.keyInParent); + // parents.Add(parent); + // ParentHierarchyHelperWithExtras(keys, parents); + // } + //} + + public bool ParentHierarchyHelper(JNode root, JNode current, List keys, List parents) + { + if (object.ReferenceEquals(current, this)) + return true; + if (current is JArray arr) + { + for (int ii = 0; ii < arr.children.Count; ii++) + { + JNode child = arr.children[ii]; + parents.Add(arr); + keys.Add(ii); + if (ParentHierarchyHelper(root, child, keys, parents)) + return true; + keys.RemoveAt(keys.Count - 1); + parents.RemoveAt(parents.Count - 1); + } + } + else if (current is JObject obj) + { + foreach (KeyValuePair kv in obj.children) + { + parents.Add(obj); + keys.Add(kv.Key); + if (ParentHierarchyHelper(root, kv.Value, keys, parents)) + return true; + keys.RemoveAt(keys.Count - 1); + parents.RemoveAt(parents.Count - 1); + } + } + return false; + } + + private static readonly Regex DOT_COMPATIBLE_REGEX = new Regex("^[_a-zA-Z][_a-zA-Z\\d]*$"); + // "dot compatible" means a string that starts with a letter or underscore + // and contains only letters, underscores, and digits + + public bool ContainsPosition(int pos) + { + if (position == pos) + return true; + if ((type & Dtype.ARR_OR_OBJ) != 0) + return false; + //if (extras is ExtraJNodeProperties ext) + // return pos > position && pos <= ext.endPosition; + string str = ToString(); + int utf8len = (type == Dtype.STR) + ? Encoding.UTF8.GetByteCount(str) + : str.Length; + return pos > position && pos <= position + utf8len; + } + + /// + /// Get the the path to the JNode that contains position pos in a UTF-8 encoded document.

+ /// See PathToTreeNode for information on how paths are formatted. + ///
+ /// + /// + /// + /// + /// + public string PathToPosition(int pos, KeyStyle style = KeyStyle.Python) + { + return PathToPositionHelper(pos, style, new List()); + } + + public string PathToPositionHelper(int pos, KeyStyle style, List path) + { + string result; + if (ContainsPosition(pos)) + return FormatPath(path, style); + if (this is JArray arr) + { + if (arr.Length == 0) + return ""; + int ii = 0; + while (ii < arr.Length - 1 && arr[ii + 1].position <= pos) + { + ii++; + } + JNode child = arr[ii]; + path.Add(ii); + result = child.PathToPositionHelper(pos, style, path); + if (result.Length > 0) + return result; + path.RemoveAt(path.Count - 1); + } + else if (this is JObject obj) + { + foreach (KeyValuePair kv in obj.children) + { + path.Add(kv.Key); + result = kv.Value.PathToPositionHelper(pos, style, path); + if (result.Length > 0) + return result; + path.RemoveAt(path.Count - 1); + } + } + return ""; + } + + private static string FormatPath(List path, KeyStyle style) + { + StringBuilder sb = new StringBuilder(); + foreach (object member in path) + { + if (member is int ii) + { + sb.Append($"[{ii}]"); + } + else if (member is string key) + { + sb.Append(FormatKey(key, style)); + } + } + return sb.ToString(); + } + + /// + /// Get the key in square brackets or prefaced by a quote as determined by the style.

+ /// Style: one of 'p' (Python), 'j' (JavaScript), or 'r' (RemesPath)

+ /// EXAMPLES (using the JSON {"a b": [1, {"c": 2}], "d": [4]}

+ /// Using key "a b'":

+ /// - JavaScript style: ["a b'"]

+ /// - Python style: ["a b'"]

+ /// - RemesPath style: [`a b'`]

+ /// Using key "c":

+ /// - JavaScript style: .c

+ /// - RemesPath style: .c

+ /// - Python style: ['c'] + ///
+ /// + /// + /// + /// + public static string FormatKey(string key, KeyStyle style = KeyStyle.Python) + { + switch (style) + { + case KeyStyle.RemesPath: + { + if (DOT_COMPATIBLE_REGEX.IsMatch(key)) + return $".{key}"; + string escapedKey = StrToString(key, false); + string keyDubquotesUnescaped = escapedKey.Replace("\\\"", "\"").Replace("`", "\\`"); + return $"[`{keyDubquotesUnescaped}`]"; + } + case KeyStyle.JavaScript: + { + if (DOT_COMPATIBLE_REGEX.IsMatch(key)) + return $".{key}"; + string escapedKey = StrToString(key, false); + if (key.Contains('\'')) + { + return $"[\"{escapedKey}\"]"; + } + string keyDubquotesUnescaped = escapedKey.Replace("\\\"", "\""); + return $"['{keyDubquotesUnescaped}']"; + } + case KeyStyle.Python: + { + string escapedKey = StrToString(key, false); + if (escapedKey.Contains('\'')) + { + return $"[\"{escapedKey}\"]"; + } + string keyDubquotesUnescaped = escapedKey.Replace("\\\"", "\""); + return $"['{keyDubquotesUnescaped}']"; + } + default: throw new ArgumentException("style argument for PathToTreeNode must be a KeyStyle member"); + } + } + + public static Dictionary DtypeStrings = new Dictionary + { + [Dtype.SCALAR] = "scalar", + [Dtype.ITERABLE] = "iterable", + [Dtype.NUM] = "numeric", // mixed types come first, so that they're checked before pure + [Dtype.ARR] = "array", + [Dtype.BOOL] = "boolean", + [Dtype.FLOAT] = "float", + [Dtype.INT] = "integer", + [Dtype.NULL] = "null", + [Dtype.OBJ] = "object", + [Dtype.STR] = "string", + [Dtype.UNKNOWN] = "unknown", + [Dtype.SLICE] = "slice", + //[Dtype.DATE] = "date", + [Dtype.REGEX] = "regex", + //[Dtype.DATETIME] = "datetime", + }; + + /// + /// By default, a pure enum value (e.g., Dtype.INT) has INT as its string representation.

+ /// However, the bitwise OR of multiple enum values just has an integer as its string repr.

+ /// This function allows, e.g., Dtype.INT | Dtype.BOOL to be represented as "boolean|integer" + /// rather than 3 (its numeric value) + ///
+ /// + /// + public static string FormatDtype(Dtype type) + { + List typestrs = new List(); + // it's pure (or a mixture with a previously designated name) + if (DtypeStrings.TryGetValue(type, out string val)) + { + return val; + } + // it's an undesignated mixture. + // Cut it apart by making a list of each designated type/mixture it contains. + ushort typeint = (ushort)type; + foreach (Dtype typ in DtypeStrings.Keys) + { + ushort shortyp = (ushort)typ; + if ((typeint & shortyp) == shortyp) + { + typestrs.Add(DtypeStrings[typ]); + typeint -= shortyp; + // subtract to not double-count types that are in a designated mixture + } + } + return string.Join("|", typestrs); + } + + public static bool BothTypesIntersect(Dtype atype, Dtype btype, Dtype shouldMatch) + { + return (atype & shouldMatch) != 0 && (btype & shouldMatch) != 0; + } + #endregion + } + + /// + /// + /// A class representing JSON objects. + /// + [System.Diagnostics.DebuggerDisplay("JObject({ToString(maxLength: 200)})")] + public class JObject : JNode + { + public Dictionary children; + + public int Length { get { return children.Count; } } + + public JObject(int position, Dictionary children) : base(null, Dtype.OBJ, position) + { + this.children = children; + } + + /// + /// instantiates a new empty JObject + /// + public JObject() : base(null, Dtype.OBJ, 0) + { + children = new Dictionary(); + } + + /// + /// return the JNode associated with key + /// + /// + /// + public JNode this[string key] + { + get { return children[key]; } + set { children[key] = value; } + } + + /// + public override string ToString(bool sortKeys = true, string keyValueSep = ": ", string itemSep = ", ", int maxLength = int.MaxValue) + { + var sb = new StringBuilder(7 * Length); + ToStringHelper(sortKeys, keyValueSep, itemSep, sb, false, position, maxLength); + if (sb.Length >= maxLength) + sb.Append("..."); + return sb.ToString(); + } + + internal override int ToStringHelper(bool sortKeys, string keyValueSep, string itemSep, StringBuilder sb, bool changePositions, int extraUtf8_bytes, int maxLength) + { + if (sb.Length >= maxLength) + return -1; + if (changePositions) position = sb.Length + extraUtf8_bytes; + sb.Append('{'); + int ctr = 0; + IEnumerable keys; + if (sortKeys) + { + keys = children.Keys.ToArray(); + Array.Sort((string[])keys, StringComparer.CurrentCultureIgnoreCase); + } + else keys = children.Keys; + foreach (string k in keys) + { + JNode v = children[k]; + string escapedK = StrToString(k, false); + sb.Append('"'); + sb.Append(escapedK); + sb.Append('"'); + sb.Append(keyValueSep); + extraUtf8_bytes += JsonParser.ExtraUTF8BytesBetween(escapedK, 0, escapedK.Length); + extraUtf8_bytes = v.ToStringHelper(sortKeys, keyValueSep, itemSep, sb, changePositions, extraUtf8_bytes, maxLength); + if (sb.Length >= maxLength) + return -1; + if (++ctr < children.Count) + sb.Append(itemSep); + } + sb.Append('}'); + return extraUtf8_bytes; + } + + /// + public override string PrettyPrint(int indent = 4, bool sortKeys = true, PrettyPrintStyle style = PrettyPrintStyle.Google, int maxLength = int.MaxValue, char indentChar = ' ') + { + var sb = new StringBuilder(8 * Length); + PrettyPrintHelper(indent, sortKeys, style, 0, sb, false, position, maxLength, indentChar); + if (sb.Length >= maxLength) + sb.Append("..."); + return sb.ToString(); + } + + /// + internal override int PrettyPrintHelper(int indent, bool sortKeys, PrettyPrintStyle style, int depth, StringBuilder sb, bool changePositions, int extraUtf8_bytes, int maxLength, char indentChar) + { + if (sb.Length >= maxLength) + return -1; + string dent = new string(indentChar, indent * depth); + int ctr = 0; + IEnumerable keys; + if (sortKeys) + { + keys = children.Keys.ToArray(); + Array.Sort((string[])keys, StringComparer.CurrentCultureIgnoreCase); + } + else keys = children.Keys; + switch (style) + { + case PrettyPrintStyle.Whitesmith: + sb.Append(dent); + if (changePositions) position = sb.Length + extraUtf8_bytes; + sb.Append('{'); + sb.Append(NL); + foreach (string k in keys) + { + JNode v = children[k]; + extraUtf8_bytes += AppendKeyAndGetUtf8Extra(sb, dent, k, "\":"); + if (v is JObject || v is JArray) + sb.Append(NL); + else + sb.Append(' '); + extraUtf8_bytes = v.PrettyPrintHelper(indent, sortKeys, style, depth + 1, sb, changePositions, extraUtf8_bytes, maxLength, indentChar); + if (sb.Length >= maxLength) + return -1; + if (++ctr < children.Count) + sb.Append(','); + sb.Append(NL); + } + sb.Append($"{dent}}}"); + break; + case PrettyPrintStyle.Google: + if (changePositions) position = sb.Length + extraUtf8_bytes; + sb.Append('{'); + sb.Append(NL); + string extraDent = new string(indentChar, (depth + 1) * indent); + foreach (string k in keys) + { + JNode v = children[k]; + extraUtf8_bytes += AppendKeyAndGetUtf8Extra(sb, extraDent, k, "\": "); + extraUtf8_bytes = v.PrettyPrintHelper(indent, sortKeys, style, depth + 1, sb, changePositions, extraUtf8_bytes, maxLength, indentChar); + if (sb.Length >= maxLength) + return -1; + if (++ctr < children.Count) + sb.Append(','); + sb.Append(NL); + } + sb.Append($"{dent}}}"); + break; + case PrettyPrintStyle.PPrint: + if (changePositions) position = sb.Length + extraUtf8_bytes; + int childDentLen = (depth + 1) * indent; + sb.Append('{'); + sb.Append(NL); + extraDent = new string(indentChar, childDentLen); + foreach (string k in keys) + { + int maxLineEnd = sb.Length + PPRINT_LINE_LENGTH; + JNode v = children[k]; + extraUtf8_bytes += AppendKeyAndGetUtf8Extra(sb, extraDent, k, "\": "); + extraUtf8_bytes = v.PPrintHelper(indent, depth, sortKeys, sb, changePositions, extraUtf8_bytes, maxLineEnd, maxLength, indentChar); + if (sb.Length >= maxLength) + return -1; + if (++ctr < children.Count) + sb.Append(','); + sb.Append(NL); + } + sb.Append($"{dent}}}"); + break; + default: throw new ArgumentOutOfRangeException("style"); + } + return extraUtf8_bytes; + } + + private static int AppendKeyAndGetUtf8Extra(StringBuilder sb, string dent, string k, string closeQuoteAndColon) + { + string escapedK = StrToString(k, false); + sb.Append(dent); + sb.Append('"'); + sb.Append(escapedK); + sb.Append(closeQuoteAndColon); + return JsonParser.ExtraUTF8BytesBetween(escapedK, 0, escapedK.Length); + } + + /// + public override string ToStringAndChangePositions(bool sortKeys = true, string keyValueSep = ": ", string itemSep = ", ", int maxLength = int.MaxValue) + { + var sb = new StringBuilder(7 * Length); + ToStringHelper(sortKeys, keyValueSep, itemSep, sb, true, 0, maxLength); + if (sb.Length >= maxLength) + sb.Append("..."); + return sb.ToString(); + } + + /// + public override string PrettyPrintAndChangePositions(int indent = 4, bool sortKeys = true, PrettyPrintStyle style = PrettyPrintStyle.Google, int maxLength = int.MaxValue, char indentChar = ' ') + { + var sb = new StringBuilder(8 * Length); + PrettyPrintHelper(indent, sortKeys, style, 0, sb, true, 0, maxLength, indentChar); + if (sb.Length >= maxLength) + sb.Append("..."); + return sb.ToString(); + } + + public override int PPrintHelper(int indent, int depth, bool sortKeys, StringBuilder sb, bool changePositions, int extraUtf8_bytes, int maxLineEnd, int maxLength, char indentChar) + { + if (Length > PPRINT_LINE_LENGTH / 8) // an non-minimal-whitespace-compressed object has at least 8 chars per element ("\"a\": 1, ") + return PrettyPrintHelper(indent, sortKeys, PrettyPrintStyle.PPrint, depth + 1, sb, changePositions, extraUtf8_bytes, maxLength, indentChar); + int ogSbLen = sb.Length; + int childUtf8_extra = ToStringHelper(sortKeys, ": ", ", ", sb, changePositions, extraUtf8_bytes, maxLineEnd); + if (childUtf8_extra == -1) + { + // child is too long, so we do PPrint-style printing of it + sb.Length = ogSbLen; + return PrettyPrintHelper(indent, sortKeys, PrettyPrintStyle.PPrint, depth + 1, sb, changePositions, extraUtf8_bytes, maxLength, indentChar); + } + // child is small enough when compact, so use compact repr + return childUtf8_extra; + } + + /// + public override (int commentIdx, int extraUtf8_bytes) PrettyPrintWithCommentsHelper(List comments, int commentIdx, int indent, bool sortKeys, int depth, StringBuilder sb, bool changePositions, int extraUtf8_bytes, char indentChar, bool pprint) + { + if (changePositions) position = sb.Length + extraUtf8_bytes; + int ctr = 0; + IEnumerable keys; + if (sortKeys) + { + keys = children.Keys.ToArray(); + Array.Sort((string[])keys, StringComparer.CurrentCultureIgnoreCase); + } + else keys = children.Keys; + sb.Append('{'); + sb.Append(NL); + string dent = new string(indentChar, indent * depth); + string extraDent = new string(indentChar, (depth + 1) * indent); + foreach (string k in keys) + { + JNode v = children[k]; + (commentIdx, extraUtf8_bytes) = Comment.AppendAllCommentsBeforePosition(sb, comments, commentIdx, extraUtf8_bytes, v.position, extraDent); + int pprintLineEnd = sb.Length + PPRINT_LINE_LENGTH; + extraUtf8_bytes += AppendKeyAndGetUtf8Extra(sb, extraDent, k, "\": "); + (commentIdx, extraUtf8_bytes) = pprint + ? v.PPrintWithCommentsHelper(comments, commentIdx, indent, sortKeys, depth + 1, sb, changePositions, extraUtf8_bytes, indentChar, pprintLineEnd) + : v.PrettyPrintWithCommentsHelper(comments, commentIdx, indent, sortKeys, depth + 1, sb, changePositions, extraUtf8_bytes, indentChar, false); + if (++ctr < children.Count) + sb.Append(','); + sb.Append(NL); + } + sb.Append($"{dent}}}"); + return (commentIdx, extraUtf8_bytes); + } + + public override (int commentIdx, int extraUtf8_bytes) PPrintWithCommentsHelper(List comments, int commentIdx, int indent, bool sortKeys, int depth, StringBuilder sb, bool changePositions, int extraUtf8_bytes, char indentChar, int maxSbLen) + { + if (Length > PPRINT_LINE_LENGTH / 8) // an non-minimal-whitespace-compressed object has at least 8 chars per element ("\"a\": 1, ") + goto printOnMultipleLines; + int ogSbLen = sb.Length; + int nextCommentPos = commentIdx >= comments.Count ? int.MaxValue : comments[commentIdx].position; + if (CompressedLengthAndPositionsWithinThresholds(ogSbLen, nextCommentPos, maxSbLen) == -1) + { + // child is too long or has a comment inside; need to print on multiple lines + goto printOnMultipleLines; + } + // child is small enough when compact and has no comments inside, so use compact repr + return (commentIdx, ToStringHelper(sortKeys, ": ", ", ", sb, changePositions, extraUtf8_bytes, int.MaxValue)); + printOnMultipleLines: + return PrettyPrintWithCommentsHelper(comments, commentIdx, indent, sortKeys, depth, sb, changePositions, extraUtf8_bytes, indentChar, true); + } + + /// + public override int CompressedLengthAndPositionsWithinThresholds(int sbLength, int maxInitialPosition, int maxSbLen) + { + if (position >= maxInitialPosition || sbLength >= maxSbLen) + return -1; + int ctr = 0; + sbLength += 1; // opening '{' + foreach (string key in children.Keys) + { + JNode child = children[key]; + sbLength += StrToString(key, true).Length + 2; // json-encoded key, then ": " + sbLength = child.CompressedLengthAndPositionsWithinThresholds(sbLength, maxInitialPosition, maxSbLen); + if (sbLength == -1 || sbLength >= maxSbLen) + return -1; + sbLength += ctr < children.Count - 1 + ? 2 // ", " between key-value pairs + : 1; // closing "}" + } + return sbLength; + } + + /// + /// if this JObject represents an ini file, all the values must be strings. Calling this method ensures that this is so. + /// + /// + public void StringifyAllValuesInIniFile() + { + var sectionKeysToChange = new List<(string sectionName, string key, string newValue)>(); + foreach (KeyValuePair kv in children) + { + if (!(kv.Value is JObject section)) + { + throw new InvalidOperationException("Only objects where all children are objects with only string values can be converted to ini files"); + } + foreach (KeyValuePair sectKv in section.children) + { + string key = sectKv.Key; + JNode value = sectKv.Value; + if (!(value.value is string)) + { + sectionKeysToChange.Add((kv.Key, key, value.ToString())); + } + } + } + foreach ((string sectionName, string key, string newValue) in sectionKeysToChange) + { + JObject section = (JObject)this[sectionName]; + section[key] = new JNode(newValue); + } + } + + /// + /// dump this JObject as an ini file + /// + public string ToIniFile(List comments) + { + var sb = new StringBuilder(); + int positionInComments = 0; + int utf8ExtraBytes = 0; + foreach (KeyValuePair kv in children) + { + string header = kv.Key; + if (!(kv.Value is JObject section)) + { + throw new InvalidOperationException("Only objects where all children are objects with only string values can be converted to ini files"); + } + // section is treated as beginning just before the open squarebrace of the header + (positionInComments, utf8ExtraBytes) = Comment.AppendAllCommentsBeforePosition(sb, comments, positionInComments, utf8ExtraBytes, section.position, "", DocumentType.INI); + sb.Append($"[{header}]\r\n"); + utf8ExtraBytes += JsonParser.ExtraUTF8BytesBetween(header, 0, header.Length); + foreach (KeyValuePair sectKv in section.children) + { + string key = sectKv.Key; + JNode value = sectKv.Value; + if (!(value.value is string valueStr)) + { + throw new InvalidOperationException("Only objects where all children are objects with only string values can be converted to ini files"); + } + (positionInComments, utf8ExtraBytes) = Comment.AppendAllCommentsBeforePosition(sb, comments, positionInComments, utf8ExtraBytes, value.position, "", DocumentType.INI); + sb.Append($"{key}={valueStr}\r\n"); + utf8ExtraBytes += JsonParser.ExtraUTF8BytesBetween(key, 0, key.Length); + utf8ExtraBytes += JsonParser.ExtraUTF8BytesBetween(valueStr, 0, valueStr.Length); + } + } + Comment.AppendAllCommentsBeforePosition(sb, comments, positionInComments, utf8ExtraBytes, int.MaxValue, "", DocumentType.INI); + return sb.ToString(); + } + + /// + /// Returns true if and only if other is a JObject with all the same key-value pairs.

+ /// Throws an ArgumentException if other is not a JObject. + ///
+ /// Another JObject + /// + /// + public override bool Equals(JNode other) + { + if (!(other is JObject othobj)) + { + throw new ArgumentException($"Cannot compare object {ToString()} to non-object {other.ToString()}"); + } + if (children.Count != othobj.children.Count) + { + return false; + } + foreach (KeyValuePair kv in children) + { + bool otherHaskey = othobj.children.TryGetValue(kv.Key, out JNode valobj); + if (!otherHaskey || !kv.Value.Equals(valobj)) + { + return false; + } + } + return true; + } + + /// + public override JNode Copy() + { + JObject copy = new JObject(position, new Dictionary(children.Count)); + foreach (KeyValuePair kv in children) + { + copy[kv.Key] = kv.Value.Copy(); + } + return copy; + } + } + + [System.Diagnostics.DebuggerDisplay("JArray({ToString(maxLength: 200)})")] + public class JArray : JNode + { + public List children; + + public int Length { get { return children.Count; } } + + public JArray(int position, List children) : base(null, Dtype.ARR, position) + { + this.children = children; + } + + /// + /// instantiates a new empty JArray + /// + public JArray() : base(null, Dtype.ARR, 0) + { + children = new List(); + } + + /// + /// return the JNode associated with index + /// + /// + /// + public JNode this[int index] + { + get { return children[index]; } + set { children[index] = value; } + } + + /// + public override string ToString(bool sortKeys = true, string keyValueSep = ": ", string itemSep = ", ", int maxLength = int.MaxValue) + { + var sb = new StringBuilder(4 * Length); + ToStringHelper(sortKeys, keyValueSep, itemSep, sb, false, 0, maxLength); + if (sb.Length >= maxLength) + sb.Append("..."); + return sb.ToString(); + } + + /// + public override string PrettyPrint(int indent = 4, bool sortKeys = true, PrettyPrintStyle style = PrettyPrintStyle.Google, int maxLength = int.MaxValue, char indentChar = ' ') + { + var sb = new StringBuilder(6 * Length); + PrettyPrintHelper(indent, sortKeys, style, 0, sb, false, 0, maxLength, indentChar); + if (sb.Length >= maxLength) + sb.Append("..."); + return sb.ToString(); + } + + internal override int ToStringHelper(bool sortKeys, string keyValueSep, string itemSep, StringBuilder sb, bool changePositions, int extraUtf8_bytes, int maxLength) + { + if (sb.Length >= maxLength) + return -1; + if (changePositions) position = sb.Length + extraUtf8_bytes; + sb.Append('['); + int ctr = 0; + foreach (JNode v in children) + { + extraUtf8_bytes = v.ToStringHelper(sortKeys, keyValueSep, itemSep, sb, changePositions, extraUtf8_bytes, maxLength); + if (sb.Length >= maxLength) + return -1; + if (++ctr < children.Count) + sb.Append(itemSep); + } + sb.Append(']'); + return extraUtf8_bytes; + } + + /// + public override string ToStringAndChangePositions(bool sortKeys = true, string keyValueSep = ": ", string itemSep = ", ", int maxLength = int.MaxValue) + { + var sb = new StringBuilder(4 * Length); + ToStringHelper(sortKeys, keyValueSep, itemSep, sb, true, 0, maxLength); + if (sb.Length >= maxLength) + sb.Append("..."); + return sb.ToString(); + } + + /// + public override string PrettyPrintAndChangePositions(int indent = 4, bool sortKeys = true, PrettyPrintStyle style = PrettyPrintStyle.Google, int maxLength = int.MaxValue, char indentChar = ' ') + { + var sb = new StringBuilder(6 * Length); + PrettyPrintHelper(indent, sortKeys, style, 0, sb, true, 0, maxLength, indentChar); + if (sb.Length >= maxLength) + sb.Append("..."); + return sb.ToString(); + } + + /// + internal override int PrettyPrintHelper(int indent, bool sortKeys, PrettyPrintStyle style, int depth, StringBuilder sb, bool changePositions, int extraUtf8_bytes, int maxLength, char indentChar) + { + if (sb.Length >= maxLength) + return -1; + string dent = new string(indentChar, indent * depth); + switch (style) + { + case PrettyPrintStyle.Whitesmith: + sb.Append(dent); + if (changePositions) position = sb.Length + extraUtf8_bytes; + sb.Append('['); + sb.Append(NL); + int ctr = 0; + foreach (JNode v in children) + { + if (!(v is JObject || v is JArray)) + sb.Append(dent); + extraUtf8_bytes = v.PrettyPrintHelper(indent, sortKeys, style, depth + 1, sb, changePositions, extraUtf8_bytes, maxLength, indentChar); + if (sb.Length >= maxLength) + return -1; + if (++ctr < children.Count) + sb.Append(','); + sb.Append(NL); + } + sb.Append($"{dent}]"); + break; + case PrettyPrintStyle.Google: + if (changePositions) position = sb.Length + extraUtf8_bytes; + sb.Append('['); + sb.Append(NL); + string extraDent = new string(indentChar, (depth + 1) * indent); + ctr = 0; + foreach (JNode v in children) + { + sb.Append(extraDent); + extraUtf8_bytes = v.PrettyPrintHelper(indent, sortKeys, style, depth + 1, sb, changePositions, extraUtf8_bytes, maxLength, indentChar); + if (sb.Length >= maxLength) + return -1; + if (++ctr < children.Count) + sb.Append(','); + sb.Append(NL); + } + sb.Append($"{dent}]"); + break; + case PrettyPrintStyle.PPrint: + if (changePositions) position = sb.Length + extraUtf8_bytes; + int childDentLen = (depth + 1) * indent; + sb.Append('['); + sb.Append(NL); + extraDent = new string(indentChar, childDentLen); + ctr = 0; + foreach (JNode v in children) + { + int maxLineEnd = sb.Length + PPRINT_LINE_LENGTH; + sb.Append(extraDent); + extraUtf8_bytes = v.PPrintHelper(indent, depth, sortKeys, sb, changePositions, extraUtf8_bytes, maxLineEnd, maxLength, indentChar); + if (sb.Length >= maxLength) + return -1; + if (++ctr < children.Count) + sb.Append(','); + sb.Append(NL); + } + sb.Append($"{dent}]"); + break; + default: throw new ArgumentOutOfRangeException("style"); + } + return extraUtf8_bytes; + } + + public override int PPrintHelper(int indent, int depth, bool sortKeys, StringBuilder sb, bool changePositions, int extraUtf8_bytes, int maxLineEnd, int maxLength, char indentChar) + { + if (Length > PPRINT_LINE_LENGTH / 3) // an non-minimal-whitespace-compressed array has at least 3 chars per element ("1, ") + return PrettyPrintHelper(indent, sortKeys, PrettyPrintStyle.PPrint, depth + 1, sb, changePositions, extraUtf8_bytes, maxLength, indentChar); + int ogSbLen = sb.Length; + int childUtf8_extra = ToStringHelper(sortKeys, ": ", ", ", sb, changePositions, extraUtf8_bytes, maxLineEnd); + if (childUtf8_extra == -1) + { + // child is too long, so we do PPrint-style printing of it + sb.Length = ogSbLen; + return PrettyPrintHelper(indent, sortKeys, PrettyPrintStyle.PPrint, depth + 1, sb, changePositions, extraUtf8_bytes, maxLength, indentChar); + } + // child is small enough when compact, so use compact repr + return childUtf8_extra; + } + + public override (int commentIdx, int extraUtf8_bytes) PrettyPrintWithCommentsHelper(List comments, int commentIdx, int indent, bool sortKeys, int depth, StringBuilder sb, bool changePositions, int extraUtf8_bytes, char indentChar, bool pprint) + { + if (changePositions) position = sb.Length + extraUtf8_bytes; + sb.Append('['); + sb.Append(NL); + string dent = new string(indentChar, indent * depth); + string extraDent = new string(indentChar, (depth + 1) * indent); + int ctr = 0; + foreach (JNode v in children) + { + (commentIdx, extraUtf8_bytes) = Comment.AppendAllCommentsBeforePosition(sb, comments, commentIdx, extraUtf8_bytes, v.position, extraDent); + int maxLineEnd = sb.Length + PPRINT_LINE_LENGTH; + sb.Append(extraDent); + (commentIdx, extraUtf8_bytes) = pprint + ? v.PPrintWithCommentsHelper(comments, commentIdx, indent, sortKeys, depth + 1, sb, changePositions, extraUtf8_bytes, indentChar, maxLineEnd) + : v.PrettyPrintWithCommentsHelper(comments, commentIdx, indent, sortKeys, depth + 1, sb, changePositions, extraUtf8_bytes, indentChar, false); + if (++ctr < children.Count) + sb.Append(','); + sb.Append(NL); + } + sb.Append($"{dent}]"); + return (commentIdx, extraUtf8_bytes); + } + + public override (int commentIdx, int extraUtf8_bytes) PPrintWithCommentsHelper(List comments, int commentIdx, int indent, bool sortKeys, int depth, StringBuilder sb, bool changePositions, int extraUtf8_bytes, char indentChar, int maxSbLen) + { + if (Length > PPRINT_LINE_LENGTH / 3) // an non-minimal-whitespace-compressed array has at least 3 chars per element ("1, ") + goto printOnMultipleLines; + int ogSbLen = sb.Length; + int nextCommentPos = commentIdx >= comments.Count ? int.MaxValue : comments[commentIdx].position; + if (CompressedLengthAndPositionsWithinThresholds(ogSbLen, nextCommentPos, maxSbLen) == -1) + { + // child is too long or has a comment inside; need to print on multiple lines + goto printOnMultipleLines; + } + // child is small enough when compact and has no comments inside, so use compact repr + return (commentIdx, ToStringHelper(sortKeys, ": ", ", ", sb, changePositions, extraUtf8_bytes, int.MaxValue)); + printOnMultipleLines: + return PrettyPrintWithCommentsHelper(comments, commentIdx, indent, sortKeys, depth, sb, changePositions, extraUtf8_bytes, indentChar, true); + } + + /// + public override int CompressedLengthAndPositionsWithinThresholds(int sbLength, int maxInitialPosition, int maxSbLen) + { + if (position >= maxInitialPosition || sbLength >= maxSbLen) + return -1; + sbLength += 1; // opening '[' + for (int ii = 0; ii < children.Count; ii++) + { + JNode child = children[ii]; + sbLength = child.CompressedLengthAndPositionsWithinThresholds(sbLength, maxInitialPosition, maxSbLen); + if (sbLength == -1 || sbLength >= maxSbLen) + return -1; + sbLength += ii < children.Count - 1 + ? 2 // ", " between elements + : 1; // closing "]" + } + return sbLength; + } + + /// + /// Returns true if and only if other is a JArray such that + /// other[i] == this[i] for all i < this.Length.

+ /// Throws an ArgumentException if other is not a JArray. + ///
+ /// Another JArray + /// + /// + public override bool Equals(JNode other) + { + if (!(other is JArray otharr)) + { + throw new ArgumentException($"Cannot compare array {ToString()} to non-array {other.ToString()}"); + } + if (children.Count != otharr.children.Count) + { + return false; + } + for (int ii = 0; ii < children.Count; ii++) + { + JNode val = children[ii]; + JNode othval = otharr[ii]; + if (!val.Equals(othval)) + { + return false; + } + } + return true; + } + + /// + public override JNode Copy() + { + JArray copy = new JArray(position, new List(children.Count)); + foreach (JNode child in children) + { + copy.children.Add(child.Copy()); + } + return copy; + } + + /// + /// Return a '\n'-delimited JSON Lines document + /// where the i^th line has the i^th element in this JArray. + /// + /// + public string ToJsonLines(bool sortKeys = true, string keyValueSep = ": ", string itemSep = ", ") + { + StringBuilder sb = new StringBuilder(); + for (int ii = 0; ii < children.Count; ii++) + { + sb.Append(children[ii].ToString(sortKeys, keyValueSep, itemSep)); + if (ii < children.Count - 1) + sb.Append('\n'); + } + return sb.ToString(); + } + } + + [System.Diagnostics.DebuggerDisplay("JRegex({regex})")] + /// + /// A holder for Regex objects (assigned to the regex property).

+ /// The value is always null and the type is always Dtype.REGEX. + ///
+ public class JRegex : JNode + { + // has to be a separate property because Regex objects do not implement IComparable + public Regex regex; + + public JRegex(Regex regex) : base(null, Dtype.REGEX, 0) + { + this.regex = regex; + } + } + + [System.Diagnostics.DebuggerDisplay("JSlicer({slicer})")] + /// + /// A holder for arrays of 1-3 nullable ints. This is a convenience class for parsing of Remespath queries. + /// + public class JSlicer : JNode + { + // has to be a separate property because arrays don't implement IComparable + public int?[] slicer; + + public JSlicer(int?[] slicer) : base(null, Dtype.SLICE, 0) + { + this.slicer = slicer; + } + } + + public readonly struct Comment + { + public readonly string content; + public readonly bool isMultiline; + public readonly int position; + + public Comment(string content, bool isMultiline, int position) + { + this.content = content; + this.isMultiline = isMultiline; + this.position = position; + } + + public override string ToString() + { + return $"Comment(content=\"{content}\", isMultiline={isMultiline}, position={position})"; + } + + /// + /// appends the comment representation (on its own line) of a comment to sb

+ /// (e.g., "//" + comment.content for single-line comments in JSON, "/*" + comment.content + "*/\r\n" for multiline comments

+ /// and returns the number of extra utf8 bytes in the comment's content. + ///
+ public static int ToStringHelper(StringBuilder sb, Comment comment, string singleLineCommentStart) + { + sb.Append(comment.isMultiline ? "/*" : singleLineCommentStart); + sb.Append(comment.content); + if (comment.isMultiline) + sb.Append("*/"); + sb.Append(JNode.NL); + return JsonParser.ExtraUTF8BytesBetween(comment.content, 0, comment.content.Length); + } + + public static readonly Dictionary singleLineCommentStarts = new Dictionary + { + [DocumentType.JSON] = "//", + [DocumentType.JSONL] = "//", + [DocumentType.INI] = ";", + }; + + /// + /// assumes that comments are sorted by comment.position ascending

+ /// Keeps appending the JSON comment representations of the comments (as discussed in ToStringHelper above), each on a separate line preceded by dent

+ /// to sb while commentIdx is less than comments.Count + /// and comments[commentIdx].position < position + ///
+ public static (int commentIdx, int extraUtf8_bytes) AppendAllCommentsBeforePosition(StringBuilder sb, List comments, int commentIdx, int extraUtf8_bytes, int position, string dent, DocumentType commentType = DocumentType.JSON) + { + if (!singleLineCommentStarts.TryGetValue(commentType, out string singleLineCommentStart)) + throw new ArgumentException($"{commentType} is not a valid comment type"); + for (; commentIdx < comments.Count; commentIdx++) + { + Comment comment = comments[commentIdx]; + if (comment.position > position) + break; + sb.Append(dent); + extraUtf8_bytes += ToStringHelper(sb, comment, singleLineCommentStart); + } + return (commentIdx, extraUtf8_bytes); + } + } + + /// + /// Extra properties that can improve the performance of certain methods + /// and that the parser may choose to add when parsing a document. + /// Currently not in use + /// + public class ExtraJNodeProperties + { + /// + /// null if this is the root + /// + public WeakReference parent; + + /// + /// The end position of this JNode.

+ /// In most cases this will just be its position + /// plus the length of its string representation. + ///
+ public int endPosition; + + /// + /// either an int (index in parent array) + /// or string (key in parent object) + /// or null (no parent) + /// + public object keyInParent; + + public ExtraJNodeProperties(JNode parent, int endPosition, object keyInParent) + { + this.parent = new WeakReference(parent); + this.endPosition = endPosition; + this.keyInParent = keyInParent; + } + } +} diff --git a/NppCSharpPluginPack/JSON_Tools/JsonParser.cs b/NppCSharpPluginPack/JSON_Tools/JsonParser.cs new file mode 100644 index 0000000..abdac2b --- /dev/null +++ b/NppCSharpPluginPack/JSON_Tools/JsonParser.cs @@ -0,0 +1,1725 @@ +/* +A parser and linter for JSON. +This was copied from https://github.com/molsonkiko/JsonToolsNppPlugin/blob/9eadb9f8995215bd0eb4f3349e99a29d2f35061d/JsonToolsNppPlugin/JSONTools/JsonParser.cs with minor changes to naming. +*/ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Text; +using System.Text.RegularExpressions; +using NppDemo.Utils; + +namespace NppDemo.JSON_Tools +{ + /// + /// An exception that may be thrown when the parser encounters syntactically invalid JSON. + /// Subclasses FormatException. + /// + public class JsonParserException : FormatException + { + public new string Message { get; set; } + public char CurChar { get; set; } + public int Position { get; set; } + + public JsonParserException(string Message, char c, int pos) + { + this.Message = Message; + this.CurChar = c; + this.Position = pos; + } + + public override string ToString() + { + return $"{Message} at position {Position} (char {JsonLint.CharDisplay(CurChar)})"; + } + } + + /// + /// A syntax error caught and logged by the linter. + /// + public struct JsonLint + { + public string message; + /// + /// the position of the error in the UTF-8 encoding of the document + /// + public int pos; + /// + /// the UTF-16 character where the error began + /// + public char curChar; + public ParserState severity; + + /// + /// + /// + /// + /// the position of the error in the UTF8 encoding of the JSON document + /// the UTF-16 character where the error began + /// + public JsonLint(string message, int pos, char curChar, ParserState severity) + { + this.message = message; + this.pos = pos; + this.curChar = curChar; + this.severity = severity; + } + + public override string ToString() + { + return $"Syntax error (severity = {severity}) at position {pos} (char {CharDisplay(curChar)}): {message}"; + } + + /// + /// Display a char wrapped in singlequotes in a way that makes it easily recognizable. + /// For example, '\n' is represented as '\n' and '\'' is represented as '\''. + /// + /// + /// + public static string CharDisplay(char c) + { + switch (c) + { + case '\x00': return "'\\x00'"; + case '\t': return "'\\t'"; + case '\r': return "'\\r'"; + case '\n': return "'\\n'"; + case '\'': return "'\\''"; + default: return $"'{c}'"; + } + } + + /// + /// the object {"message": this.message, "position": this.pos, "severity": this.severity} + /// + public JNode ToJson() + { + return new JObject(0, new Dictionary + { + ["message"] = new JNode(message), + ["position"] = new JNode((long)pos), + ["severity"] = new JNode(severity.ToString()), + }); + } + } + + /// + /// Any errors above this level are reported by a JsonParser.

+ /// The integer value of a state reflects how seriously the input deviates from the original JSON spec. + ///
+ public enum LoggerLevel + { + /// + /// Valid according to the exact original JSON specification.

+ /// This is pretty annoying to use because horizontal tabs ('\t') are forbidden. + ///
+ STRICT, + /// + /// Valid according to a slightly relaxed version of the JSON specification.

+ /// In addition to the JSON spec, it tolerates:

+ /// * control characters with ASCII codes below 0x20 + ///
+ OK, + /// + /// Everything at the OK level plus NaN, Infinity, and -Infinity. + /// + NAN_INF, + /// + /// Everything at the NAN_INF level, plus JavaScript comments.

+ /// Note that this differs slightly from the standard JSONC spec + /// because NaN and +/-Infinity are not part of that spec. + ///
+ JSONC, + /// + /// JSON that follows the specification described here: https://json5.org/

+ /// Includes everything at the JSONC level, plus various things, including:

+ /// * unquoted object keys

+ /// * comma after last element of iterable

+ /// * singlequoted strings + ///
+ JSON5, + } + + /// + /// the sequence of states the JSON parser can be in.

+ /// The first five states (STRICT, OK, NAN_INF, JSONC, JSON5) have the same + /// meaning as in the LoggerLevel enum. + /// The last two states (BAD and FATAL) reflect errors that are + /// always logged and thus do not belong in the LoggerLevel enum. + ///
+ public enum ParserState + { + /// + /// see LoggerLevel.STRICT + /// + STRICT, + /// + /// see LoggerLevel.OK + /// + OK, + /// + /// see LoggerLevel.NAN_INF + /// + NAN_INF, + /// + /// see LoggerLevel.JSONC + /// + JSONC, + /// + /// see LoggerLevel.JSON5 + /// + JSON5, + /// + /// JSON with syntax errors that my parser can handle but that should always be logged, such as:

+ /// * unterminated strings

+ /// * missing commas after array elements

+ /// * Python-style single-line comments (start with '#') + ///
+ BAD, + /// + /// errors that are always fatal, such as:

+ /// * recursion depth hits the recursion limit

+ /// * empty input + ///
+ FATAL, + /// + /// reserved for JSON Schema validation errors + /// + SCHEMA + } + + /// + /// Parses a JSON document into a tree. + /// + public class JsonParser + { + /// + /// need to track recursion depth because stack overflow causes a panic that makes Notepad++ crash + /// + public const int MAX_RECURSION_DEPTH = 512; + + #region JSON_PARSER_ATTRS + ///// + ///// If true, any strings in the standard formats of ISO 8601 dates (yyyy-MM-dd) and datetimes (yyyy-MM-dd hh:mm:ss.sss) + ///// will be automatically parsed as the appropriate type. + ///// Not currently supported. May never be. + ///// + //public bool parseDatetimes; + + /// + /// If line is not null, most forms of invalid syntax will not cause the parser to stop,

+ /// but instead the syntax error will be recorded in a list. + ///
+ public List lint; + + /// + /// position in JSON string + /// + public int ii; + + private bool _rememberComments; + + public bool rememberComments { + get { return _rememberComments; } + set + { + _rememberComments = value; + comments = value ? new List() : null; + } + } + + public List comments; + + /// + /// the number of extra bytes in the UTF-8 encoding of the text consumed + /// so far.

+ /// For example, if

+ /// "words": "Thế nào rồi?"

+ /// has been consumed, utf8ExtraBytes is 5 because all the characters + /// are 1-byte ASCII

+ /// except 'ồ' and 'ế', which are both 3-byte characters

+ /// and 'à' which is a 2-byte character + ///
+ private int utf8ExtraBytes; + + public ParserState state { get; private set; } + + /// + /// errors above this + /// + public LoggerLevel loggerLevel; + + /// + /// Any error above the logger level causes an error to be thrown.

+ /// If false, parse functions will return everything logged up until a fatal error + /// and will parse everything if there were no fatal errors.

+ /// Present primarily for backwards compatibility. + ///
+ public bool throwIfLogged; + + public bool throwIfFatal; + + /// + /// attach ExtraJNodeProperties to each JNode parsed + /// + public bool includeExtraProperties; + + /// + /// the number of bytes in the utf-8 representation + /// before the current position in the current document + /// + public int utf8Pos { get { return ii + utf8ExtraBytes; } } + + public bool fatal + { + get { return state == ParserState.FATAL; } + } + + public bool hasLogged + { + get { return (int)state > (int)loggerLevel; } + } + + public bool exitedEarly + { + get { return fatal || (throwIfLogged && hasLogged); } + } + + /// + /// if parsing failed, this will be the final error logged. If parsing succeeded, this is null. + /// + public JsonLint? fatalError + { + get + { + if (exitedEarly) + return lint[lint.Count - 1]; + return null; + } + } + + public JsonParser(LoggerLevel loggerLevel = LoggerLevel.NAN_INF, bool throwIfLogged = true, bool throwIfFatal = true, bool rememberComments = false) + //, bool includeExtraProperties = false) + { + this.loggerLevel = loggerLevel; + this.throwIfLogged = throwIfLogged; + this.throwIfFatal = throwIfFatal; + //this.includeExtraProperties = includeExtraProperties; + ii = 0; + lint = new List(); + state = ParserState.STRICT; + utf8ExtraBytes = 0; + this.rememberComments = rememberComments; + } + + #endregion + #region HELPER_METHODS + + public static int ExtraUTF8Bytes(char c) + { + return (c < 128) + ? 0 + : (c > 2047) + ? // check if it's in the surrogate pair region + (c >= 0xd800 && c <= 0xdfff) + ? 1 // each member of a surrogate pair counts as 2 bytes + // for a total of 4 bytes for the unicode characters over 65535 + : 2 // other chars bigger than 2047 take up 3 bytes + : 1; // non-ascii chars less than 2048 take up 2 bytes + } + + /// + /// gets the number of extra bytes (greater than end - start) in inp + /// beteeen 0-based index start (inclusive) and end (exclusive) + /// + public static int ExtraUTF8BytesBetween(string inp, int start, int end) + { + int count = 0; + for (int ii = start; ii < end; ii++) + { + count += ExtraUTF8Bytes(inp[ii]); + } + return count; + } + + /// + /// Set the parser's state to severity, unless the state was already higher.

+ /// If the severity is above the parser's loggerLevel:

+ /// * if throwIfLogged or (FATAL and throwIfFatal), throw a JsonParserException

+ /// * otherwise, add new JsonLint with the appropriate message, position, curChar, and severity.

+ /// Return whether current state is FATAL. + ///
+ /// + /// + /// + /// + /// + private bool HandleError(string message, string inp, int pos, ParserState severity) + { + if (state < severity) + state = severity; + bool fatal = this.fatal; + if ((int)severity > (int)loggerLevel) + { + char c = (pos >= inp.Length) + ? '\x00' + : inp[pos]; + lint.Add(new JsonLint(message, utf8Pos, c, severity)); + if (throwIfLogged || (fatal && throwIfFatal)) + { + throw new JsonParserException(message, c, utf8Pos); + } + } + return fatal; + } + + /// + /// consumes characters until a '\n' is found (and consumes that too) + /// + /// + private void ConsumeLine(string inp) + { + while (ii < inp.Length) + { + char c = inp[ii++]; + if (c == '\n') + return; + utf8ExtraBytes += ExtraUTF8Bytes(c); + } + } + + /// assumes that ii is at the start of a line or at the end of the document + /// + public static int EndOfPreviousLine(string inp, int ii, int start) + { + int pos = ii >= inp.Length ? inp.Length - 1 : ii - 1; + if (pos <= start) + { + if (start == inp.Length - 1) + // we special case this so that a substring from start to EndOfPreviousLine + // will still have a length of 1 + return inp.Length; + return start; + } + char c = inp[pos]; + if (c != '\n') // end of line is the end of the document + return pos + 1; + if (pos >= 1 && inp[pos - 1] == '\r') + return pos - 1; // last newline was CRLF + return pos; // last newline was LF + } + + /// + /// Consume comments and whitespace until the next character that is not + /// '#', '/', or whitespace. + /// Return false if an unacceptable error occurred. + /// + /// + /// + private bool ConsumeInsignificantChars(string inp) + { + while (ii < inp.Length) + { + char c = inp[ii]; + switch (c) + { + case ' ': + case '\t': + case '\r': + case '\n': ii++; break; + case '/': + int commentStartUtf8 = utf8Pos; + int commentContentStartII = ii + 2; + int commentContentEndII; + bool isMultiline; + ii++; + if (ii == inp.Length) + { + HandleError("Expected JavaScript comment after '/'", inp, inp.Length - 1, ParserState.FATAL); + return false; + } + HandleError("JavaScript comments are not part of the original JSON specification", inp, ii, ParserState.JSONC); + c = inp[ii]; + if (c == '/') + { + isMultiline = false; + ConsumeLine(inp); + commentContentEndII = EndOfPreviousLine(inp, ii, commentContentStartII); + } + else if (c == '*') + { + isMultiline = true; + bool commentEnded = false; + while (ii < inp.Length - 1) + { + c = inp[ii++]; + if (c == '*') + { + if (inp[ii] == '/') + { + commentEnded = true; + ii++; + break; + } + } + else + utf8ExtraBytes += ExtraUTF8Bytes(c); + } + if (!commentEnded) + { + HandleError("Unterminated multi-line comment", inp, inp.Length - 1, ParserState.BAD); + ii++; + return false; + } + commentContentEndII = ii - 2; + } + else + { + HandleError("Expected JavaScript comment after '/'", inp, ii, ParserState.FATAL); + return false; + } + if (rememberComments) + comments.Add(new Comment(inp.Substring(commentContentStartII, commentContentEndII - commentContentStartII), isMultiline, commentStartUtf8)); + break; + case '#': + // Python-style single-line comment + commentStartUtf8 = utf8Pos; + commentContentStartII = ii + 1; + HandleError("Python-style '#' comments are not part of any well-accepted JSON specification", + inp, ii, ParserState.BAD); + ConsumeLine(inp); + commentContentEndII = EndOfPreviousLine(inp, ii, commentContentStartII); + if (rememberComments) + comments.Add(new Comment(inp.Substring(commentContentStartII, commentContentEndII - commentContentStartII), false, commentStartUtf8)); + break; + case '\u2028': // line separator + case '\u2029': // paragraph separator + case '\ufeff': // Byte-order mark + // the next 16 (plus '\x20', normal whitespace) comprise the unicode space separator category + case '\xa0': // non-breaking space + case '\u1680': // Ogham Space Mark + case '\u2000': // En Quad + case '\u2001': // Em Quad + case '\u2002': // En Space + case '\u2003': // Em Space + case '\u2004': // Three-Per-Em Space + case '\u2005': // Four-Per-Em Space + case '\u2006': // Six-Per-Em Space + case '\u2007': // Figure Space + case '\u2008': // Punctuation Space + case '\u2009': // Thin Space + case '\u200A': // Hair Space + case '\u202F': // Narrow No-Break Space + case '\u205F': // Medium Mathematical Space + case '\u3000': // Ideographic Space + HandleError("Whitespace characters other than ' ', '\\t', '\\r', and '\\n' are only allowed in JSON5", inp, ii, ParserState.JSON5); + utf8ExtraBytes += ExtraUTF8Bytes(c); + ii++; + break; + default: return true; + } + } + return true; + } + + /// + /// read a hexadecimal integer representation of length `length` at position `index` in `inp`. + /// sets the parser's state to FATAL if the integer is not valid hexadecimal + /// or if `index` is less than `length` from the end of `inp`. + /// + private int ParseHexChar(string inp, int length) + { + if (ii >= inp.Length - length) + { + HandleError("Could not find valid hexadecimal of length " + length, + inp, ii, ParserState.FATAL); + return -1; + } + int end = ii + length > inp.Length + ? inp.Length + : ii + length; + var hexNum = inp.Substring(ii, end - ii); + ii = end - 1; + // the -1 is because ParseString increments by 1 after every escaped sequence anyway + int charval; + try + { + charval = int.Parse(hexNum, NumberStyles.HexNumber); + } + catch + { + HandleError("Could not find valid hexadecimal of length " + length, + inp, ii, ParserState.FATAL); + return -1; + } + return charval; + } + + /// + /// check if char c is a control character (less than 0x20) + /// and then check if it is '\n' or the null character or negative. + /// Handle errors accordingly. + /// + /// + /// + /// + /// + /// + private bool HandleCharErrors(int c, string inp, int ii) + { + if (c < 0x20) + { + if (c == '\n') + return HandleError($"String literal contains newline", inp, ii, ParserState.BAD); + if (c == 0) + return HandleError("'\\x00' is the null character, which is illegal in JsonTools", inp, ii, ParserState.FATAL); + if (c < 0) + return true; + return HandleError("Control characters (ASCII code less than 0x20) are disallowed inside strings under the strict JSON specification", + inp, ii, ParserState.OK); + } + return false; + } + + public static Dictionary ESCAPE_MAP = new Dictionary + { + { '\\', '\\' }, + { 'n', '\n' }, + { 'r', '\r' }, + { 'b', '\b' }, + { 't', '\t' }, + { 'f', '\f' }, + { '/', '/' }, // the '/' char is often escaped in JSON + { 'v', '\x0b' }, // vertical tab + { '\'', '\'' }, + { '"', '"' }, + }; + + #endregion + #region PARSER_FUNCTIONS + + /// + /// Parse a string literal in a JSON string.

+ /// Sets the parser's state to BAD if:

+ /// 1. The end of the input is reached before the closing quote char

+ /// 2. A '\n' is encountered before the closing quote char + /// 3. Contains invalid hexadecimal

+ /// 4. Contains "\\" escaping a character other than 'n', 'b', 'r', '\', '/', '"', 'f', or 't'. + ///
+ /// the json string + /// a JNode of type Dtype.STR, and the position of the end of the string literal + ///
+ public JNode ParseString(string inp) + { + int startUtf8Pos = ii + utf8ExtraBytes; + char quoteChar = inp[ii++]; + if (quoteChar == '\'') + HandleError("Singlequoted strings are only allowed in JSON5", inp, ii, ParserState.JSON5); + StringBuilder sb = new StringBuilder(); + while (true) + { + if (ii >= inp.Length) + { + HandleError($"Unterminated string literal starting at position {startUtf8Pos}", inp, ii - 1, ParserState.BAD); + break; + } + char c = inp[ii]; + if (c == quoteChar) + { + break; + } + else if (c == '\\') + { + if (ii >= inp.Length - 2) + { + HandleError($"Unterminated string literal starting at position {startUtf8Pos}", inp, inp.Length - 1, ParserState.BAD); + ii++; + continue; + } + char nextChar = inp[ii + 1]; + if (nextChar == quoteChar) + { + sb.Append(quoteChar); + ii += 1; + } + else if (ESCAPE_MAP.TryGetValue(nextChar, out char escapedChar)) + { + sb.Append(escapedChar); + ii += 1; + } + else if (nextChar == 'u') + { + // 2-byte unicode of the form \uxxxx + ii += 2; + int nextHex = ParseHexChar(inp, 4); + if (HandleCharErrors(nextHex, inp, ii)) + break; + sb.Append((char)nextHex); + } + else if (nextChar == '\n' || nextChar == '\r') + { + HandleError("Escaped newline characters are only allowed in JSON5", inp, ii + 1, ParserState.JSON5); + ii++; + if (nextChar == '\r' + && ii < inp.Length - 1 && inp[ii + 1] == '\n') + ii++; + } + else if (nextChar == 'x') + { + // 1-byte unicode (allowed only in JSON5) + ii += 2; + int nextHex = ParseHexChar(inp, 2); + if (HandleCharErrors(nextHex, inp, ii)) + break; + HandleError("\\x escapes are only allowed in JSON5", inp, ii, ParserState.JSON5); + sb.Append((char)nextHex); + } + else HandleError($"Escaped char '{nextChar}' is only valid in JSON5", inp, ii + 1, ParserState.JSON5); + } + else + { + if (HandleCharErrors(c, inp, ii)) + break; + utf8ExtraBytes += ExtraUTF8Bytes(c); + sb.Append(c); + } + ii++; + } + ii++; + //if (parseDatetimes) + //{ + // return TryParseDateOrDateTime(sb.ToString(), startUtf8Pos); + //} + return new JNode(sb.ToString(), Dtype.STR, startUtf8Pos); + } + + public string ParseKey(string inp) + { + char quoteChar = inp[ii]; + if (quoteChar == '\'') + HandleError("Singlequoted strings are only allowed in JSON5", inp, ii, ParserState.JSON5); + if (quoteChar != '\'' && quoteChar != '"') + { + return ParseUnquotedKey(inp); + } + ii++; + var sb = new StringBuilder(); + while (true) + { + if (ii >= inp.Length) + { + HandleError($"Unterminated object key", inp, ii - 1, ParserState.FATAL); + return null; + } + char c = inp[ii]; + if (c == quoteChar) + { + break; + } + else if (c == '\\') + { + if (ii >= inp.Length - 2) + { + HandleError($"Unterminated object key", inp, inp.Length - 1, ParserState.FATAL); + return null; + } + char nextChar = inp[ii + 1]; + if (nextChar == quoteChar) + { + sb.Append(quoteChar); + ii++; + } + else if (ESCAPE_MAP.TryGetValue(nextChar, out char escapedChar)) + { + sb.Append(escapedChar); + ii++; + } + else if (nextChar == 'u') + { + // 2-byte unicode of the form \uxxxx + // \x and \U escapes are not part of the JSON standard + ii += 2; + int nextHex = ParseHexChar(inp, 4); + if (HandleCharErrors(nextHex, inp, ii)) + break; + sb.Append((char)nextHex); + } + else if (nextChar == '\n' || nextChar == '\r') + { + HandleError($"Escaped newline characters are only allowed in JSON5", inp, ii + 1, ParserState.JSON5); + ii++; + if (nextChar == '\r' + && ii < inp.Length - 1 && inp[ii + 1] == '\n') + ii++; // skip \r\n as one + } + else if (nextChar == 'x') + { + ii += 2; + int nextHex = ParseHexChar(inp, 2); + if (HandleCharErrors(nextHex, inp, ii)) + break; + HandleError("\\x escapes are only allowed in JSON5", inp, ii, ParserState.JSON5); + sb.Append((char)nextHex); + } + else HandleError($"Escaped char '{nextChar}' is only valid in JSON5", inp, ii + 1, ParserState.JSON5); + } + else if (c < 0x20) // control characters + { + if (c == '\n') + HandleError($"Object key contains newline", inp, ii, ParserState.BAD); + else + HandleError("Control characters (ASCII code less than 0x20) are disallowed inside strings under the strict JSON specification", inp, ii, ParserState.OK); + sb.Append(c); + } + else + { + utf8ExtraBytes += ExtraUTF8Bytes(c); + sb.Append(c); + } + ii++; + } + ii++; + return sb.ToString(); + } + + public const string UNQUOTED_START = @"(?:[_\$\p{Lu}\p{Ll}\p{Lt}\p{Lm}\p{Lo}\p{Nl}]|\\u[\da-f]{4})"; + + private static Regex UNICODE_ESCAPES = new Regex(@"(?<=\\u)[\da-f]{4}", RegexOptions.Compiled | RegexOptions.IgnoreCase); + + private static Regex UNQUOTED_KEY_REGEX = new Regex($@"{UNQUOTED_START}(?:[\p{{Mn}}\p{{Mc}}\p{{Nd}}\p{{Pc}}\u200c\u200d]|{UNQUOTED_START})*", RegexOptions.Compiled | RegexOptions.IgnoreCase); + + public string ParseUnquotedKey(string inp) + { + var match = UNQUOTED_KEY_REGEX.Match(inp, ii); + if (!match.Success || match.Index != ii) + { + HandleError($"No valid unquoted key beginning at {ii}", inp, ii, ParserState.BAD); + return null; + } + HandleError("Unquoted keys are only supported in JSON5", inp, ii, ParserState.JSON5); + var result = match.Value; + ii += result.Length; + utf8ExtraBytes += ExtraUTF8BytesBetween(result, 0, result.Length); + return ParseUnquotedKeyHelper(inp, result); + } + + public string ParseUnquotedKeyHelper(string inp, string result) + { + if (result.Contains("\\u")) // fix unicode escapes + { + StringBuilder sb = new StringBuilder(); + Match m = UNICODE_ESCAPES.Match(result); + int start = 0; + while (m.Success) + { + if (m.Index > start + 2) + { + sb.Append(result, start, m.Index - start - 2); + } + char hexval = (char)int.Parse(m.Value, NumberStyles.HexNumber); + if (HandleCharErrors(hexval, inp, ii)) + return null; + sb.Append(hexval); + start = m.Index + 4; + m = m.NextMatch(); + } + if (start < result.Length) + sb.Append(result, start, result.Length - start); + result = sb.ToString(); + } + return result; + } + + //private static Regex DATE_TIME_REGEX = new Regex(@"^\d{4}-\d\d-\d\d # date + // (?:[T ](?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d # hours, minutes, seconds + // (?:\.\d{1,3})?Z?)?$ # milliseconds", + // RegexOptions.IgnorePatternWhitespace | RegexOptions.Compiled); + //private JNode TryParseDateOrDateTime(string maybeDatetime, int startUtf8Pos) + //{ + // Match mtch = DATE_TIME_REGEX.Match(maybeDatetime); + // int len = maybeDatetime.Length; + // if (mtch.Success) + // { + // try + // { + // if (len == 10) + // { + // // yyyy-mm-dd dates have length 10 + // return new JNode(DateTime.Parse(maybeDatetime), Dtype.DATE, startUtf8Pos); + // } + // if (len >= 19 && len <= 24) + // { + // // yyyy-mm-dd hh:mm:ss has length 19, and yyyy-mm-dd hh:mm:ss.sssZ has length 24 + // return new JNode(DateTime.Parse(maybeDatetime), Dtype.DATETIME, startUtf8Pos); + // } + // } + // catch { } // it was an invalid date, i guess + // } + // // it didn't match, so it's just a normal string + // return new JNode(maybeDatetime, Dtype.STR, startUtf8Pos); + //} + + /// + /// Parse a number in a JSON string, including NaN or Infinity

+ /// Also parses null and the Python literals None (which we parse as null), nan, inf + ///
+ /// the JSON string + /// a JNode with type = Dtype.INT or Dtype.FLOAT, and the position of the end of the number. + /// + public JNode ParseNumber(string inp) + { + // parsed tracks which portions of a number have been parsed. + // So if the int part has been parsed, it will be 1. + // If the int and decimal point parts have been parsed, it will be 3. + // If the int, decimal point, and scientific notation parts have been parsed, it will be 7 + int parsed = 1; + int start = ii; + int startUtf8Pos = start + utf8ExtraBytes; + char c = inp[ii]; + bool negative = false; + if (c < '0' || c > '9') + { + if (c == 'n') + { + // try null + if (ii <= inp.Length - 4 && inp[ii + 1] == 'u' && inp[ii + 2] == 'l' && inp[ii + 3] == 'l') + { + ii += 4; + return new JNode(null, Dtype.NULL, startUtf8Pos); + } + if (ii <= inp.Length - 3 && inp[ii + 1] == 'a' && inp[ii + 2] == 'n') + { + HandleError("nan is not a valid representation of Not a Number in JSON", inp, ii, ParserState.BAD); + ii += 3; + return new JNode(NanInf.nan, Dtype.FLOAT, startUtf8Pos); + } + HandleError("Expected literal starting with 'n' to be null or nan", inp, ii + 1, ParserState.FATAL); + return new JNode(null, Dtype.NULL, startUtf8Pos); + } + if (c == '-' || c == '+') + { + if (c == '+') + HandleError("Leading + signs in numbers are not allowed except in JSON5", inp, ii, ParserState.JSON5); + else negative = true; + ii++; + if (ii >= inp.Length) + { + HandleError($"'{c}' sign at end of document", inp, inp.Length - 1, ParserState.FATAL); + return new JNode(null, Dtype.NULL, startUtf8Pos); + } + } + c = inp[ii]; + if (c == 'I') + { + // try Infinity + if (ii <= inp.Length - 8 && inp[ii + 1] == 'n' && inp.Substring(ii + 2, 6) == "finity") + { + HandleError("Infinity is not part of the original JSON specification", inp, ii, ParserState.NAN_INF); + ii += 8; + double infty = negative ? NanInf.neginf : NanInf.inf; + return new JNode(infty, Dtype.FLOAT, startUtf8Pos); + } + HandleError("Expected literal starting with 'I' to be Infinity", + inp, ii + 1, ParserState.FATAL); + return new JNode(null, Dtype.NULL, startUtf8Pos); + } + else if (c == 'N') + { + // try NaN + if (ii <= inp.Length - 3 && inp[ii + 1] == 'a' && inp[ii + 2] == 'N') + { + HandleError("NaN is not part of the original JSON specification", inp, ii, ParserState.NAN_INF); + ii += 3; + return new JNode(NanInf.nan, Dtype.FLOAT, startUtf8Pos); + } + // try None + if (ii <= inp.Length - 4 && inp[ii + 1] == 'o' && inp[ii + 2] == 'n' && inp[ii + 3] == 'e') + { + ii += 4; + HandleError("None is not an accepted part of any JSON specification", inp, ii, ParserState.BAD); + return new JNode(null, Dtype.NULL, startUtf8Pos); + } + HandleError("Expected literal starting with 'N' to be NaN or None", inp, ii + 1, ParserState.FATAL); + return new JNode(null, Dtype.NULL, startUtf8Pos); + } + else if (c == 'i') + { + if (ii <= inp.Length - 3 && inp[ii + 1] == 'n' && inp[ii + 2] == 'f') + { + HandleError("inf is not the correct representation of Infinity in JSON", inp, ii, ParserState.BAD); + ii += 3; + return new JNode(negative ? NanInf.neginf : NanInf.inf, Dtype.FLOAT, startUtf8Pos); + } + HandleError("Expected literal starting with 'i' to be inf", inp, ii, ParserState.FATAL); + return new JNode(null, Dtype.NULL, startUtf8Pos); + } + } + if (c == '0' && ii < inp.Length - 1) + { + char nextChar = inp[ii + 1]; + if (nextChar == 'x') + { + HandleError("Hexadecimal numbers are only part of JSON5", inp, ii, ParserState.JSON5); + ii += 2; + start = ii; + while (ii < inp.Length) + { + c = inp[ii]; + if (!((c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'))) + break; + ii++; + } + try + { + var hexnum = long.Parse(inp.Substring(start, ii - start), NumberStyles.HexNumber); + return new JNode(negative ? -hexnum : hexnum, Dtype.INT, startUtf8Pos); + } + catch + { + HandleError("Hex number too large for a 64-bit signed integer type", inp, start, ParserState.FATAL); + return new JNode(null, Dtype.NULL, startUtf8Pos); + } + } + else if (nextChar >= '0' && nextChar <= '9') + HandleError("Numbers with an unnecessary leading 0 (like \"01\") are not part of any JSON specification", inp, ii, ParserState.BAD); + } + while (ii < inp.Length) + { + c = inp[ii]; + if (c >= '0' && c <= '9') + { + ii++; + } + else if (c == '.') + { + if (parsed != 1) + { + HandleError("Number with a decimal point in the wrong place", inp, ii, ParserState.FATAL); + break; + } + if (ii == start) + HandleError("Numbers with a leading decimal point are only part of JSON5", inp, startUtf8Pos, ParserState.JSON5); + parsed = 3; + ii++; + } + else if (c == 'e' || c == 'E') + { + if ((parsed & 4) != 0) + { + break; + } + if (ii >= 1 && inp[ii - 1] == '.') + HandleError("Numbers with a trailing decimal point are only part of JSON5", inp, startUtf8Pos, ParserState.JSON5); + parsed += 4; + ii++; + if (ii < inp.Length) + { + c = inp[ii]; + if (c == '+' || c == '-') + { + ii++; + } + } + else + { + HandleError("Scientific notation 'e' with no number following", inp, inp.Length - 1, ParserState.FATAL); + return new JNode(null, Dtype.NULL, startUtf8Pos); + } + } + else if (c == '/' && ii < inp.Length - 1) + { + char nextC = inp[ii + 1]; + // make sure prospective denominator is also a number (we won't allow NaN or Infinity as denominator) + if (!((nextC >= '0' && nextC <= '9') + || nextC == '-' || nextC == '.' || nextC == '+')) + { + break; + } + HandleError("Fractions of the form 1/3 are not part of any JSON specification", inp, startUtf8Pos, ParserState.BAD); + double numer = double.Parse(inp.Substring(start, ii - start), JNode.DOT_DECIMAL_SEP); + JNode denomNode; + ii++; + denomNode = ParseNumber(inp); + if (fatal) + { + return new JNode(numer, Dtype.FLOAT, startUtf8Pos); + } + double denom = Convert.ToDouble(denomNode.value); + return new JNode(numer / denom, Dtype.FLOAT, startUtf8Pos); + } + else + { + break; + } + } + string numstr = inp.Substring(start, ii - start); + if (parsed == 1) + { + try + { + return new JNode(long.Parse(numstr), Dtype.INT, startUtf8Pos); + } + catch (Exception ex) + { + if (!(ex is OverflowException)) + { + HandleError($"Number string {JNode.StrToString(numstr, true)} had bad format", inp, startUtf8Pos, ParserState.BAD); + return new JNode(NanInf.nan, startUtf8Pos); + } + // overflow exceptions are OK, + // because doubles can represent much larger numbers than 64-bit ints, + // albeit with loss of precision + } + } + double num; + try + { + num = double.Parse(numstr, JNode.DOT_DECIMAL_SEP); + } + catch + { + HandleError($"Number string {JNode.StrToString(numstr, true)} had bad format", inp, startUtf8Pos, ParserState.BAD); + num = NanInf.nan; + } + if (numstr[numstr.Length - 1] == '.') + HandleError("Numbers with a trailing decimal point are only part of JSON5", inp, startUtf8Pos, ParserState.JSON5); + return new JNode(num, Dtype.FLOAT, startUtf8Pos); + } + + /// + /// Parse an array in a JSON string.

+ /// Parsing may fail for any of the following reasons:

+ /// 1. The array is not terminated by ']'.

+ /// 2. The array is terminated with '}' instead of ']'.

+ /// 3. Two commas with nothing but whitespace in between.

+ /// 4. A comma before the first value.

+ /// 5. A comma after the last value.

+ /// 6. Two values with no comma in between. + ///
+ /// the JSON string + /// a JArray, and the position of the end of the array. + public JArray ParseArray(string inp, int recursionDepth) + { + var children = new List(); + JArray arr = new JArray(ii + utf8ExtraBytes, children); + bool alreadySeenComma = false; + ii++; + char curC; + if (recursionDepth == MAX_RECURSION_DEPTH) + { + // Need to do this to avoid stack overflow when presented with unreasonably deep nesting. + // Stack overflow causes an unrecoverable panic, and we would rather fail gracefully. + HandleError($"Maximum recursion depth ({MAX_RECURSION_DEPTH}) reached", inp, ii, ParserState.FATAL); + return arr; + } + while (ii < inp.Length) + { + if (!ConsumeInsignificantChars(inp)) + { + return arr; + } + if (ii >= inp.Length) + { + break; + } + curC = inp[ii]; + if (curC == ',') + { + if (alreadySeenComma) + HandleError($"Two consecutive commas after element {children.Count - 1} of array", inp, ii, ParserState.BAD); + alreadySeenComma = true; + if (children.Count == 0) + HandleError("Comma before first value in array", inp, ii, ParserState.BAD); + ii++; + continue; + } + else if (curC == ']') + { + if (alreadySeenComma) + { + HandleError("Comma after last element of array", inp, ii, ParserState.JSON5); + } + ii++; + return arr; + } + else if (curC == '}') + { + HandleError("Tried to terminate an array with '}'", inp, ii, ParserState.BAD); + if (alreadySeenComma) + { + HandleError("Comma after last element of array", inp, ii, ParserState.JSON5); + } + ii++; + return arr; + } + else + { + if (children.Count > 0 && !alreadySeenComma) + HandleError("No comma between array members", inp, ii, ParserState.BAD); + // a new array member of some sort + alreadySeenComma = false; + JNode newObj; + int iiBeforeParse = ii; + int utf8ExtraBeforeParse = utf8ExtraBytes; + newObj = ParseSomething(inp, recursionDepth); + if (newObj.type == Dtype.STR && ii < inp.Length && inp[ii] == ':') + { + // maybe the user forgot the closing ']' of an array that's the child of an object. + HandleError("':' (key-value separator) where ',' between array members expected. Maybe you forgot to close the array?", inp, ii, ParserState.BAD); + ii = iiBeforeParse; + utf8ExtraBytes = utf8ExtraBeforeParse; + return arr; + } + //if (includeExtraProperties) + //{ + // newObj.extras = new ExtraJNodeProperties(arr, ii, children.Count); + //} + children.Add(newObj); + if (fatal) + return arr; + } + } + ii++; + HandleError("Unterminated array", inp, inp.Length - 1, ParserState.BAD); + return arr; + } + + /// + /// Parse an object in a JSON string.

+ /// Parsing may fail for any of the following reasons:

+ /// 1. The object is not terminated by '}'.

+ /// 2. The object is terminated with ']' instead of '}'.

+ /// 3. Two commas with nothing but whitespace in between.

+ /// 4. A comma before the first key-value pair.

+ /// 5. A comma after the last key-value pair.

+ /// 6. Two key-value pairs with no comma in between.

+ /// 7. No ':' between a key and a value.

+ /// 8. A key that's not a string. + ///
+ /// the JSON string + /// a JArray, and the position of the end of the array. + public JObject ParseObject(string inp, int recursionDepth) + { + var children = new Dictionary(); + JObject obj = new JObject(ii + utf8ExtraBytes, children); + bool alreadySeenComma = false; + ii++; + char curC; + if (recursionDepth == MAX_RECURSION_DEPTH) + { + HandleError($"Maximum recursion depth ({MAX_RECURSION_DEPTH}) reached", inp, ii, ParserState.FATAL); + return obj; + } + while (ii < inp.Length) + { + if (!ConsumeInsignificantChars(inp)) + { + return obj; + } + if (ii >= inp.Length) + { + break; + } + curC = inp[ii]; + if (curC == ',') + { + if (alreadySeenComma) + HandleError($"Two consecutive commas after key-value pair {children.Count - 1} of object", inp, ii, ParserState.BAD); + alreadySeenComma = true; + if (children.Count == 0) + HandleError("Comma before first value in object", inp, ii, ParserState.BAD); + ii++; + continue; + } + else if (curC == '}') + { + if (alreadySeenComma) + HandleError("Comma after last key-value pair of object", inp, ii, ParserState.JSON5); + ii++; + return obj; + } + else if (curC == ']') + { + HandleError("Tried to terminate object with ']'", inp, ii, ParserState.BAD); + if (alreadySeenComma) + HandleError("Comma after last key-value pair of object", inp, ii, ParserState.JSON5); + ii++; + return obj; + } + else // expecting a key + { + int childCount = children.Count; + if (childCount > 0 && !alreadySeenComma) + { + HandleError($"No comma after key-value pair {childCount - 1} in object", inp, ii, ParserState.BAD); + if (ii < inp.Length - 1 && curC == ':') + { + HandleError("':' found instead of comma after key-value pair", inp, ii, ParserState.BAD); + ii++; + ConsumeInsignificantChars(inp); + if (ii >= inp.Length) + break; + } + } + // a new key-value pair + int iiBeforeKey = ii; + int utf8ExtraBeforeKey = utf8ExtraBytes; + string key = ParseKey(inp); + if (fatal || key == null) + { + // key could be null if there's a valid JSON there that is not a valid key + // this covers the possibility that the user forgot to close the object before this (presumed) key, and in fact it's meant to be a value in a parent array + return obj; + } + if (ii >= inp.Length) + { + break; + } + if (inp[ii] == ':') + ii++; + else + { + if (!ConsumeInsignificantChars(inp)) + { + return obj; + } + if (ii >= inp.Length) + { + break; + } + char c = inp[ii]; + if (c == ':') + { + ii++; + } + else if (c == ',' || c == ']') + { + // comma or ']' after key instead of value could mean that this is supposed to be a value in a parent array, + // so we'll try bailing out here and reinterpreting the key as such + HandleError($"Found '{c}' after key {childCount} when colon expected", inp, ii, ParserState.BAD); + ii = iiBeforeKey; + utf8ExtraBytes = utf8ExtraBeforeKey; + return obj; + } + else HandleError($"No ':' between key {childCount} and value {childCount} of object", inp, ii, ParserState.BAD); + } + if (!ConsumeInsignificantChars(inp)) + { + return obj; + } + if (ii >= inp.Length) + { + break; + } + JNode val = ParseSomething(inp, recursionDepth); + //if (includeExtraProperties) + //{ + // val.extras = new ExtraJNodeProperties(obj, ii, key); + //} + children[key] = val; + if (fatal) + { + return obj; + } + if (children.Count == childCount) + { + HandleError($"Object has multiple of key \"{key}\"", inp, ii, ParserState.BAD); + } + alreadySeenComma = false; + } + } + ii++; + HandleError("Unterminated object", inp, inp.Length - 1, ParserState.BAD); + return obj; + } + + /// + /// Parse anything (a scalar, null, an object, or an array) in a JSON string.

+ /// Parsing may fail (causing this to return a null JNode) for any of the following reasons:

+ /// 1. Whatever reasons ParseObject, ParseArray, or ParseString might throw an error.

+ /// 2. An unquoted string other than true, false, null, NaN, Infinity, -Infinity.

+ /// 3. The JSON string contains only blankspace or is empty. + ///
+ /// the JSON string + /// a JNode. + public JNode ParseSomething(string inp, int recursionDepth) + { + int startUtf8Pos = ii + utf8ExtraBytes; + if (ii >= inp.Length) + { + HandleError("Unexpected end of file", inp, inp.Length - 1, ParserState.FATAL); + return new JNode(null, Dtype.NULL, startUtf8Pos); + } + char curC = inp[ii]; + if (curC == '"' || curC == '\'') + { + return ParseString(inp); + } + if (curC >= '0' && curC <= '9' + || curC == '-' || curC == '+' + || curC == 'n' // null and nan + || curC == 'I' || curC == 'N' // Infinity, NaN and None + || curC == '.' // leading decimal point JSON5 numbers + || curC == 'i') // inf + { + return ParseNumber(inp); + } + if (curC == '[') + { + return ParseArray(inp, recursionDepth + 1); + } + if (curC == '{') + { + return ParseObject(inp, recursionDepth + 1); + } + char nextC; + if (ii > inp.Length - 4) + { + HandleError("No valid literal possible", inp, ii, ParserState.FATAL); + return new JNode(null, Dtype.NULL, startUtf8Pos); + } + // misc literals. In strict JSON, only true or false + nextC = inp[ii + 1]; + if (curC == 't') + { + // try true + if (nextC == 'r' && inp[ii + 2] == 'u' && inp[ii + 3] == 'e') + { + ii += 4; + return new JNode(true, Dtype.BOOL, startUtf8Pos); + } + HandleError("Expected literal starting with 't' to be true", inp, ii+1, ParserState.FATAL); + return new JNode(null, Dtype.NULL, startUtf8Pos); + } + if (curC == 'f') + { + // try false + if (ii <= inp.Length - 5 && nextC == 'a' && inp.Substring(ii + 2, 3) == "lse") + { + ii += 5; + return new JNode(false, Dtype.BOOL, startUtf8Pos); + } + HandleError("Expected literal starting with 'f' to be false", inp, ii+1, ParserState.FATAL); + return new JNode(null, Dtype.NULL, startUtf8Pos); + } + if (curC == 'T') + { + // try True from Python + if (nextC == 'r' && inp[ii + 2] == 'u' && inp[ii + 3] == 'e') + { + ii += 4; + HandleError("True is not an accepted part of any JSON specification", inp, ii, ParserState.BAD); + return new JNode(true, Dtype.BOOL, startUtf8Pos); + } + HandleError("Expected literal starting with 'T' to be True", inp, ii + 1, ParserState.FATAL); + return new JNode(null, Dtype.NULL, startUtf8Pos); + } + if (curC == 'F') + { + // try False from Python + if (ii <= inp.Length - 5 && nextC == 'a' && inp.Substring(ii + 2, 3) == "lse") + { + ii += 5; + HandleError("False is not an accepted part of any JSON specification", inp, ii, ParserState.BAD); + return new JNode(false, Dtype.BOOL, startUtf8Pos); + } + HandleError("Expected literal starting with 'F' to be False", inp, ii + 1, ParserState.FATAL); + return new JNode(null, Dtype.NULL, startUtf8Pos); + } + if (curC == 'u') + { + // try undefined, because apparently some people want that? + // https://github.com/kapilratnani/JSON-Viewer/pull/146 + // it will be parsed as null + if (ii <= inp.Length - 9 && nextC == 'n' && inp.Substring(ii + 2, 7) == "defined") + { + ii += 9; + HandleError("undefined is not part of any JSON specification", inp, startUtf8Pos - utf8ExtraBytes, ParserState.BAD); + } + else HandleError("Expected literal starting with 'u' to be undefined", + inp, ii + 1, ParserState.FATAL); + return new JNode(null, Dtype.NULL, startUtf8Pos); + } + HandleError("Badly located character " + (ii >= inp.Length ? "\"\\x00\"" : JNode.StrToString(inp.Substring(ii, 1), true)), inp, ii, ParserState.FATAL); + return new JNode(null, Dtype.NULL, startUtf8Pos); + } + + /// + /// Parse a JSON string and return a JNode representing the document. + /// + /// the JSON string + /// + public JNode Parse(string inp) + { + Reset(); + if (inp.Length == 0) + { + HandleError("No input", inp, 0, ParserState.FATAL); + return new JNode(); + } + if (!ConsumeInsignificantChars(inp)) + { + return new JNode(); + } + if (ii >= inp.Length) + { + HandleError("Json string is only whitespace and maybe comments", inp, inp.Length - 1, ParserState.FATAL); + return new JNode(); + } + JNode json = ParseSomething(inp, 0); + //if (includeExtraProperties) + //{ + // json.extras = new ExtraJNodeProperties(null, ii, null); + //} + if (fatal) + { + return json; + } + if (!ConsumeInsignificantChars(inp)) + { + return json; + } + if (ii < inp.Length) + { + HandleError($"At end of valid JSON document, got {inp[ii]} instead of EOF", inp, ii, ParserState.BAD); + } + return json; + } + + /// + /// Parse a JSON Lines document (a text file containing one or more \n-delimited lines + /// where each line contains its own valid JSON document) + /// as an array where the i^th element is the document on the i^th line.

+ /// See https://jsonlines.org/ + ///
+ /// + /// + public JNode ParseJsonLines(string inp) + { + Reset(); + if (inp.Length == 0) + { + HandleError("No input", inp, 0, ParserState.FATAL); + return new JNode(); + } + if (!ConsumeInsignificantChars(inp)) + { + return new JNode(); + } + if (ii >= inp.Length) + { + HandleError("Json string is only whitespace and maybe comments", inp, inp.Length - 1, ParserState.FATAL); + return new JNode(); + } + int lastII = 0; + JNode json; + List children = new List(); + JArray arr = new JArray(0, children); + int lineNum = 0; + while (ii < inp.Length) + { + json = ParseSomething(inp, 0); + ConsumeInsignificantChars(inp); + children.Add(json); + if (fatal) + { + return arr; + } + int maxLastII = ii > inp.Length ? inp.Length : ii; + for (; lastII < maxLastII; lastII++) + { + if (inp[lastII] == '\n') + lineNum++; + } + // make sure this document was all in one line + if (!(lineNum == arr.Length + || (ii >= inp.Length && lineNum == arr.Length - 1))) + { + if (ii >= inp.Length) + ii = inp.Length - 1; + HandleError( + "JSON Lines document does not contain exactly one JSON document per line", + inp, ii, ParserState.FATAL + ); + return arr; + } + if (!ConsumeInsignificantChars(inp)) + { + return arr; + } + } + return arr; + } + + /// + /// reset the lint, position, and utf8_extraBytes of this parser + /// + public void Reset() + { + lint.Clear(); + comments?.Clear(); + state = ParserState.STRICT; + utf8ExtraBytes = 0; + ii = 0; + } + + /// + /// create a new JsonParser with all the same settings as this one + /// + /// + public JsonParser Copy() + { + return new JsonParser(loggerLevel, throwIfLogged, throwIfFatal);//, includeExtraProperties); + } + #endregion + #region MISC_OTHER_FUNCTIONS + /// + /// returns inp if start == 0 and end == inp.Length (to avoid wasteful copying), otherwise returns inp.Substring(start, end - start) + /// + /// + /// + /// + /// + public static string SubstringUnlessAll(string inp, int start, int end) + { + return (start == 0 && end == inp.Length) ? inp : inp.Substring(start, end - start); + } + + /// + /// Try to parse inp[start:end] (start inclusive, end exclusive) as a number within the JSON5 specification, then return that number as a JNode

+ /// If inp[start:end] can't be parsed as a JSON5 number, return inp[start:end] as a JNode. + ///
+ /// the JSON string + /// the position to start parsing from + /// the position to end parsing at + /// the value to assign to the position attribute of the JNode returned + /// a JNode with type = Dtype.INT or Dtype.FLOAT, and the position of the end of the number. + /// + public static JNode TryParseNumber(string inp, int start, int end, int jnodePosition) + { + end = inp.Length < end ? inp.Length : end; + if (start >= end) + return new JNode(""); + // parsed tracks which portions of a number have been parsed. + // So if the int part has been parsed, it will be 1. + // If the int and decimal point parts have been parsed, it will be 3. + // If the int, decimal point, and scientific notation parts have been parsed, it will be 7 + int parsed = 1; + int ogStart = start; + char c = inp[start]; + bool negative = false; + if (c < '0' || c > '9') + { + if (c == '-' || c == '+') + { + negative = c == '-'; + start++; + if (start >= end) + return new JNode(SubstringUnlessAll(inp, start, end), jnodePosition); + c = inp[start]; + } + if (start == end - 8 && c == 'I' && inp[start + 1] == 'n' && inp.Substring(start + 2, 6) == "finity") + { + // try Infinity + return new JNode(negative ? NanInf.neginf : NanInf.inf, jnodePosition); + } + else if (start == end - 3 && c == 'N' && inp[start + 1] == 'a' && inp[start + 2] == 'N') + { + // try NaN + return new JNode(NanInf.nan, jnodePosition); + } + } + int ii = start; + if (c == '0' && ii < end - 1 && inp[ii + 1] == 'x') + { + ii += 2; + start = ii; + while (ii < end) + { + c = inp[ii]; + if (!((c >= '0' && c <= '9') || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F'))) + return new JNode(SubstringUnlessAll(inp, ogStart, end), jnodePosition); + ii++; + } + try + { + var hexnum = long.Parse(inp.Substring(start, end - start), NumberStyles.HexNumber); + return new JNode(negative ? -hexnum : hexnum, jnodePosition); + } + catch + { + // probably overflow error + return new JNode(SubstringUnlessAll(inp, ogStart, end), jnodePosition); + } + } + string numstr = SubstringUnlessAll(inp, ogStart, end); + while (ii < end) + { + c = inp[ii]; + if (c >= '0' && c <= '9') + { + ii++; + } + else if (c == '.') + { + if (parsed != 1) + { + // two decimal places in the number + goto notANumber; + } + parsed = 3; + ii++; + } + else if (c == 'e' || c == 'E') + { + if ((parsed & 4) != 0) + { + break; + } + parsed += 4; + ii++; + if (ii < end) + { + c = inp[ii]; + if (c == '+' || c == '-') + { + ii++; + } + } + else + { + // Scientific notation 'e' with no number following + goto notANumber; + } + } + else + goto notANumber; + } + if (parsed == 1) + { + try + { + long l = long.Parse(numstr); + return new JNode(l, jnodePosition); + } + catch (OverflowException) + { + // doubles can represent much larger numbers than 64-bit ints, + // albeit with loss of precision + } + } + try + { + double d = double.Parse(numstr, JNode.DOT_DECIMAL_SEP); + return new JNode(d, jnodePosition); + } + catch + { + return new JNode(numstr); + } + notANumber: + return new JNode(numstr, jnodePosition); + } + #endregion + } +} \ No newline at end of file diff --git a/NppCSharpPluginPack/Main.cs b/NppCSharpPluginPack/Main.cs index 67e4129..661411a 100644 --- a/NppCSharpPluginPack/Main.cs +++ b/NppCSharpPluginPack/Main.cs @@ -54,6 +54,9 @@ static internal void CommandMenuInit() // first make it so that all references to any third-party dependencies point to the correct location // see https://github.com/oleg-shilo/cs-script.npp/issues/66#issuecomment-1086657272 for more info AppDomain.CurrentDomain.AssemblyResolve += LoadDependency; + + // next load the translations file so we can translate the menu items + Translator.LoadTranslations(); // Initialization of your plugin commands // with function : @@ -65,39 +68,39 @@ static internal void CommandMenuInit() // ); // the "&" before the "D" means that D is an accelerator key for selecting this option - PluginBase.SetCommand(0, "&Documentation", Docs); + PluginBase.SetCommand(0, Translator.GetTranslatedMenuItem("&Documentation"), Docs); // the "&" before the "b" means that B is an accelerator key for selecting this option - PluginBase.SetCommand(1, "A&bout", ShowAboutForm); IdAboutForm = 1; - PluginBase.SetCommand(2, "&Settings", OpenSettings); - PluginBase.SetCommand(3, "Selection &Remembering Form", OpenSelectionRememberingForm); IdSelectionRememberingForm = 3; - PluginBase.SetCommand(4, "Run &tests", TestRunner.RunAll); + PluginBase.SetCommand(1, Translator.GetTranslatedMenuItem("A&bout"), ShowAboutForm); IdAboutForm = 1; + PluginBase.SetCommand(2, Translator.GetTranslatedMenuItem("&Settings"), OpenSettings); + PluginBase.SetCommand(3, Translator.GetTranslatedMenuItem("Selection &Remembering Form"), OpenSelectionRememberingForm); IdSelectionRememberingForm = 3; + PluginBase.SetCommand(4, Translator.GetTranslatedMenuItem("Run &tests"), TestRunner.RunAll); // this inserts a separator PluginBase.SetCommand(5, "---", null); - PluginBase.SetCommand(6, "Use NanInf class for -inf, inf, nan!!", PrintNanInf); - PluginBase.SetCommand(7, "Hello Notepad++", HelloFX); - PluginBase.SetCommand(8, "What is Notepad++?", WhatIsNpp); + PluginBase.SetCommand(6, Translator.GetTranslatedMenuItem("Use NanInf class for -inf, inf, nan!!"), PrintNanInf); + PluginBase.SetCommand(7, Translator.GetTranslatedMenuItem("Hello Notepad++"), HelloFX); + PluginBase.SetCommand(8, Translator.GetTranslatedMenuItem("What is Notepad++?"), WhatIsNpp); PluginBase.SetCommand(9, "---", null); - PluginBase.SetCommand(10, "Current &Full Path", InsertCurrentFullFilePath); - PluginBase.SetCommand(11, "Current Directory", InsertCurrentDirectory); + PluginBase.SetCommand(10, Translator.GetTranslatedMenuItem("Current &Full Path"), InsertCurrentFullFilePath); + PluginBase.SetCommand(11, Translator.GetTranslatedMenuItem("Current Directory"), InsertCurrentDirectory); PluginBase.SetCommand(12, "---", null); - PluginBase.SetCommand(13, "Close HTML/&XML tag automatically", CheckInsertHtmlCloseTag, + PluginBase.SetCommand(13, Translator.GetTranslatedMenuItem("Close HTML/&XML tag automatically"), CheckInsertHtmlCloseTag, new ShortcutKey(true, true, true, Keys.X), // this adds a keyboard shortcut for Ctrl+Alt+Shift+X settings.close_html_tag // this may check the plugin menu item on startup depending on settings ); IdCloseHtmlTag = 13; PluginBase.SetCommand(14, "---", null); - PluginBase.SetCommand(15, "Get File Names Demo", GetFileNamesDemo); - PluginBase.SetCommand(16, "Get Session File Names Demo", GetSessionFileNamesDemo); - PluginBase.SetCommand(17, "Show files opened and closed this session", ShowFilesOpenedAndClosedThisSession); - PluginBase.SetCommand(18, "Save Current Session Demo", SaveCurrentSessionDemo); - PluginBase.SetCommand(19, "Print Scroll and Row Information", PrintScrollInformation); - PluginBase.SetCommand(20, "Open a pop-up dialog", OpenPopupDialog); + PluginBase.SetCommand(15, Translator.GetTranslatedMenuItem("Get File Names Demo"), GetFileNamesDemo); + PluginBase.SetCommand(16, Translator.GetTranslatedMenuItem("Get Session File Names Demo"), GetSessionFileNamesDemo); + PluginBase.SetCommand(17, Translator.GetTranslatedMenuItem("Show files opened and closed this session"), ShowFilesOpenedAndClosedThisSession); + PluginBase.SetCommand(18, Translator.GetTranslatedMenuItem("Save Current Session Demo"), SaveCurrentSessionDemo); + PluginBase.SetCommand(19, Translator.GetTranslatedMenuItem("Print Scroll and Row Information"), PrintScrollInformation); + PluginBase.SetCommand(20, Translator.GetTranslatedMenuItem("Open a pop-up dialog"), OpenPopupDialog); PluginBase.SetCommand(21, "---", null); - PluginBase.SetCommand(22, "Allocate indicators demo", AllocateIndicatorsDemo); + PluginBase.SetCommand(22, Translator.GetTranslatedMenuItem("Allocate indicators demo"), AllocateIndicatorsDemo); } @@ -109,7 +112,7 @@ private static Assembly LoadDependency(object sender, ResolveEventArgs args) return null; } - static internal void SetToolBarIcons() + static internal void SetToolBarIcons() { string iconsToUseChars = settings.toolbar_icons.ToLower(); var iconInfo = new (Bitmap bmp, Icon icon, Icon iconDarkMode, int id, char representingChar)[] diff --git a/NppCSharpPluginPack/NppCSharpPluginPack.csproj b/NppCSharpPluginPack/NppCSharpPluginPack.csproj index d7ddb7d..28ce028 100644 --- a/NppCSharpPluginPack/NppCSharpPluginPack.csproj +++ b/NppCSharpPluginPack/NppCSharpPluginPack.csproj @@ -24,6 +24,7 @@ 4 x86 true + True none @@ -35,6 +36,7 @@ x86 AllRules.ruleset true + True true @@ -46,6 +48,7 @@ 4 x64 true + True none @@ -57,6 +60,7 @@ x64 AllRules.ruleset true + True + + diff --git a/NppCSharpPluginPack/PluginInfrastructure/NppPluginNETHelper.cs b/NppCSharpPluginPack/PluginInfrastructure/NppPluginNETHelper.cs index a15ac00..362c0f0 100644 --- a/NppCSharpPluginPack/PluginInfrastructure/NppPluginNETHelper.cs +++ b/NppCSharpPluginPack/PluginInfrastructure/NppPluginNETHelper.cs @@ -37,7 +37,13 @@ public ShortcutKey(bool isCtrl, bool isAlt, bool isShift, Keys key) [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] public struct FuncItem { - [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)] + /// + /// The maximum number of UTF-16 characters in a FuncItem name.

+ /// This is one less than the number listed the relevant code, because that is the length of a C string + ///
+ public const int MAX_FUNC_ITEM_NAME_LENGTH = 63; + + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = MAX_FUNC_ITEM_NAME_LENGTH + 1)] // +1 for terminating nul char public string _itemName; public NppFuncItemDelegate _pFunc; public int _cmdID; diff --git a/NppCSharpPluginPack/PluginInfrastructure/SettingsBase.cs b/NppCSharpPluginPack/PluginInfrastructure/SettingsBase.cs index 7a0ea27..53d08e8 100644 --- a/NppCSharpPluginPack/PluginInfrastructure/SettingsBase.cs +++ b/NppCSharpPluginPack/PluginInfrastructure/SettingsBase.cs @@ -181,8 +181,8 @@ public void SaveToIniFile(string filename = null) fp.WriteLine(Environment.NewLine + "[{0}]", section.Key); foreach (var propertyInfo in section.OrderBy(x => x.Name)) { - if (propertyInfo.GetCustomAttributes(typeof(DescriptionAttribute), false).FirstOrDefault() is DescriptionAttribute description) - fp.WriteLine("; " + description.Description.Replace(Environment.NewLine, Environment.NewLine + "; ")); + string description = Translator.TranslateSettingsDescription(propertyInfo); + fp.WriteLine("; " + description.Replace(Environment.NewLine, Environment.NewLine + "; ")); var converter = TypeDescriptor.GetConverter(propertyInfo.PropertyType); fp.WriteLine("{0}={1}", propertyInfo.Name, converter.ConvertToInvariantString(propertyInfo.GetValue(this, null))); } @@ -306,6 +306,30 @@ public void ShowDialog(bool debug = false) OnSettingsChanged(); dialog.Close(); }; + var grid = dialog.Controls["Grid"]; + if (Translator.HasTranslations + && grid.Controls.Count >= 1 && grid.Controls[0] is Control commentPane + && commentPane.Controls.Count >= 2 && commentPane.Controls[1] is Label descriptionLabel) + { + string translatedDescription = ""; + var propGrid = (PropertyGrid)grid; + propGrid.SelectedGridItemChanged += (object _, SelectedGridItemChangedEventArgs e) => + { + GridItem selectedItem = e.NewSelection; + PropertyDescriptor selectedPropertyDesc = selectedItem?.PropertyDescriptor; + if (selectedPropertyDesc is null) + return; + PropertyInfo selectedProp = GetType().GetProperty(selectedPropertyDesc.Name); + translatedDescription = Translator.TranslateSettingsDescription(selectedProp); + if (translatedDescription.Length > 0) + descriptionLabel.Text = translatedDescription; + }; + commentPane.SizeChanged += (object _, EventArgs e) => + { + if (translatedDescription.Length > 0) + descriptionLabel.Text = translatedDescription; + }; + } dialog.ShowDialog(); } diff --git a/NppCSharpPluginPack/Properties/AssemblyInfo.cs b/NppCSharpPluginPack/Properties/AssemblyInfo.cs index 61677c4..2d60796 100644 --- a/NppCSharpPluginPack/Properties/AssemblyInfo.cs +++ b/NppCSharpPluginPack/Properties/AssemblyInfo.cs @@ -28,5 +28,5 @@ // Build Number // Revision // -[assembly: AssemblyVersion("0.0.3.6")] -[assembly: AssemblyFileVersion("0.0.3.6")] +[assembly: AssemblyVersion("0.0.3.7")] +[assembly: AssemblyFileVersion("0.0.3.7")] diff --git a/NppCSharpPluginPack/Release_x64.zip b/NppCSharpPluginPack/Release_x64.zip index 9de7b74acc6f479c1db5c8452b415e8da1ee177f..f84fadd67a59dc581c36beecc5b52be8fee481a9 100644 GIT binary patch delta 130443 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≺u#k&t)Eyjeu#Tx$8mI426ndR*kz=R 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 XePDlvF5C@E@ z3B80C0)&!;5{HC92nYj#By<8KBmp_^&1}0idpP7zzR2F4nfKnjdGqE?d$ZCUx#-)R zz;T=xo`VND?mmwGOy=Bwy5WB*k3CS%-K{*^?>^5F&-Pnz>Z){ny{>&jU%EEFeCfJ% z+J^YDm2rLJy7;Pf@##k$6JM*XSlL=u<{xPAm^XvtR-EJI{BvJjY4ZJu>mLvB0gl@X zQu!&Y{85Om>w?E?L789tC zi+c-HI_~3YxkLDglXC1bAwA2HZr!kQ%LWMRuOaoMb@%46IJq^wV(EsZ9QPLl8~_3y z!s|^!tE!K*>S=vB<{>E1i3q`sd32Lo^_6QhAgrZzqx^2oqnpb8|L1@5=c7lm+jl z3io-iWUQCwblr4DcTW`#9gb}pAb?Kl;p>fu$V!9egN@{d?)bpib7`?12GdO z)exJzP(}izFtvXPn6`Kl4#B$ogf`mTr9h-ttOJJWWLCYQ;WB`I_Xnu0E!jR0kb~r z3wgB&K*FLF@@XlErIur?1!5slYem4(4nQ079D-FHp96mlOTcOh&lqYq(@>~i~2Ya zTVD<@ZB(`$bOp1u*kG$0F{%Wb(8fSIF!~cvn52zG^@-{@2=pCjd*dM{YZKs2c*|X7 z*&O@W91(w`%E)mNq{~KM02~!$Mv=uT$1cJhSsUf0%F_Z`Tn}W!3<_n;P6xvjH z(bzP2WocFv^~-?HXt6%pxaIKp0CsoysHcNEn@QV>+AMfScQyi6n{7wuV6&EIH$q=*gu_WAAVyWN165?xG$PFr zga$FHA89JHX<|q-m(U=lE0m3n+i1k#NR&*3!A^JZfWh%$fH6MQU>D`pqi{@=K^L77 z1f+lGVP5?PG}QSRjo%82iKpO|J{sHU7y|q!Xa`;a|4}Xp6CboIncv5DPq!M8CAkj`_8dNO*WGN()*-N*{+J$tcpv2wX~w zU54@Hxs1y^7UMdP8{?O`(iso38MnAGj%|N&=emNh8ewsbRT!+wVr7nu@k_AspING3 z;-+&kgAJ>#G>hx3CWAk|Nx@Y0r$7t_?15-L-$2q+;pL!$>e^IIMXAahRLzB`Rzb8m z@o<-5%{`JaU!E};K$!{fijM$$j8KwOu(Kr^`HToD3?(C!F*N$>S{xV29J?CFR-u0r ziFj|Pj6wP|tTbldk7iDWH`Sbghmi?bpaYTYrD2((^+n05cr^^g%VfaP)}Z9p^!rqz zHC+qHZiUE0XZOUD!dINg5`N(jGBpZBq{Li-4meGb*o5!bYEggzZr7?>Se#S|k=^i$ z?ly(P1x^(zgv|Sb8U*PrTsu#jrxt$`M5lXjawh9194N>L!4peL!%IXlMU@9JTY}E4 zlsbEnGm+?+U`z!=Dq^L=UM1wE8m}k=)?#DYE3|`0jM(pbq1i`1Q>sjsH)I) zqyXc0CC`zch|YVt_0_%N2<%?ZV3Awl71iSuJSQ964cWc5dMicF%tF@bQz>{>Hn=+p zdFu6T6uCbO*`R+L!6e>Cznqdx%OdHk|B-@6Wq})YuaAJoWPxLfgJaCECn(XlY@&cZ zkHW`i!-LMuW%>q6G{Gc_Mx%eRj`Z``ME$YlNDFNzwB6Wdv2thr3jIEse{yyqmHGh+ zpOOs^>9rz(PtS%|>1!x_YBoHqUrpg7v*FeH8x($cHoV3uTtp8_glI+U(Mbwut=ZpCIJ*p*vT3DJs59ojP5sIkVgUDC$ z^%_znks|G&s8#=f$d~c;ifR3^Q*8#VG&&Q5d4jl~u*CXHp1XSSa^Fp$oy@sr3 zFT$}cvlHIIrpzuJ9-1=WBI80+=Gz$hnybX#n!eD-t6(s`7^~C;MOMN3@H?0|gCs&; zn(D^!LsTnqmvRYR;ER7DDT3o%(lN&z3B9*#3M%R<5DnI}mjZ3(D9kLWOL5kLa2vpk z)#n1TD79CgIQMueaoo9$yK9-pPuGn;?pRz$lCkJ$EbBC~`HX)Gli7&jV*FhQ$K4L3 zV*CS$E}S7jd;mOU9{WMo--PEOcoJe<^g^EfB+suUi2jg7U&4RrEl3gR9)ROTlmzM- zsOUFvW@^RcM2H!ptcF*hs}0_gb~_R@;rg*3zA&a9ED{bL zLBc~OJjzIZh2)KNA-$bHLB_^J1*cw(rZNc=ge2NQIGa3I!7J<~OhaD6mCCalH(|l7 z9DBP4Ly(G-K)Zhur;KWd8)Gt!T}9`G0L%+xIr^hdgszkRK3ys8!9d>&5bXyLMdAF- zJvG`j5b8eya3of#ov+W9Mv8bu-|1ag5(-8 zb3O#C#mof|tXsHd@c_e7G)dhHT#eMi$%_IcyZ$y533-1=EiXD2N}xF}S_x69R=pPT zTyzS~Ui(n7H+qfz{#;-ZL>bz!(l>+FD7*J%sMuXzBN@>yg{YszMNw3*10Dnm1IcK# zlX8p8HKCE0I5=_n^07=^jkXWO76PYI$2Bg^E+TMz-An9bp zKsZRrTpE9?9%|Ca(T<>8-~RJLw1l77_I3j0Xf*1m4^p`Geh_&qihMJQ{6lz&>W@sB z1#Tz$xUt`Dh~Zw%Rtt^Y2C)D!)3C3~r{01*Zl!(*vX2RSBVjQ)T~X-Ga$7N2uF3^ z3SkAvZ%@^EskYkV`~7W+E!7F z_Ii?@Xm>Mqrv}j5@#rMOauJep6rb|(v5BpoM4aQzCeogUN(Q8$EJhbDEK?#wghFUB!KXH2$e$MfT>+bv=?g|=6m(`AUs0C za#9S*Q3ykFWN1B*$&_e(Ynh#xIP4D&%;a5|Sq81k`mA#3<9B15D9LC@v8c3rurE`h zt`?BU!i4=*e%g5VV#_`qQeqPgYDN1ogmr&IhthgaF#8iAt}(kIwOUF0z8TjhLaZkk z5>ryh^h_9Y#4+68=XiqH@f)DM_Ci<%f;(F4Lu{>xx(r9k`*7(BEtkO&X)aVty&r`V z<6hiDUL`^sIC6d@;Uu~TprX10&0`bx<_B=_94={B16+F$4Lw-~`p>iHCo& z*6;MxSMj}(I*^QtoHNOJ`k?%4x%zXldtrPmcj9H7->gfeht`GoLe-zrF*|PU?gr>x zPyqtaABGqif%Hg)W0*}iD)Sktfo4C&QiT|8D}{|d6_O$uLe(9lo(!%1&C(hz?S!ve zb5w7C;Oaj!^|p^&>Z9uf0rYkhM}L3RW3u$Pkxk zfcfu9;9s3J_oN@EUe4K7F#9}#l8}Xg_9PaVOjmi-r^qVr=X90#3%bhtC0T#vWuB&^ zvY_cldC;@+m(khHg{F61N4zE^z~ zGSl**$mdXLXZMs>d3q!DRx8o*Tf4@b2@~czZV=af18pnxm%RX^UJb6PZ@{70^os>0 z%P*EfKg=tf?H99wUyEPtSEPTyaMW-0RgIznUw_mv+8g%kR2L7{3j8G8lJi#J`1aQUox!eNs2(_@uOg{;it| zQLQ3YJqV&T;~vCCwAg7Z^#H0vSFgcNcWbIX-ft91$B(E8dALM^<$WPyhLpn5J{fXQ+Q6=!3D!SY`S*ICRMBZ?OW=ou?DmO(gvSB=;(j-RkeKxn6`9 zB;q&X!1@wGevd}>GC5oL134yn1;_DM;nf|3(t7-IN|foqP{sAuq;QkT@mdcWQa>0c zF>wYa`jZ6N4R;P8@w(1|6b6jw-jhsMolOKv&U!irLtIp=%)NhTK!lBGIC~?iptIB1 zauPN0h6>Da$LllisF0xjsp^tm&hp< zl$YW8BW=3NXj5v;_d)6Ua_dkN=k;o$EPC8IzQ)AhM3g>&v3?jEg6&G|s(T>G(?sIU z*kif}k+(|VgGqlpLEcI7P9ftJz_>B}I`V75)#+oTLy&_OUhDMWJ7o4Ga_&S{*(62~ zbnaV(XYF`ybAJV9oFPEEFFbzZyeC;1e*iJbaQs0M2K2d6SUHBFfNgZG@DBhx)(RrD z&Pr?@NxR10Bh3L`b-3SXk)vcaU&+x)kSAinHYQoeOWJ=O#A;)$t(Bro*Op|56KQ*s zPC@#^P`KKQy=yn0l4<6aYW?Q`*40|H;a(I@I z5{vjqyO*zP7xhy?#6;I{EMRxS@TVLOVIOO)aX(JR`Wm1UBbU(Ka?}WGAvD)60ltNo z68hOdC#i1$pm7mJo=qAMZGNudPZgpIXY_{&2eC~&U>EQ-!!rz?$?zNr&mwrf0nY|_&V*+dJXgYVBRuyQ zPYucwJ7MxI5a;#X*kDi4rq{1_Ca!lT?sg^~b0+pX6Fttvd(Ol^oe8!nYh`RxX+n*(wX?JGx3Hq@sTsp z>r4deojPzN1lqTa{rGq2m=l8DY@9+g7(+ps5{tK2DX|k;A=bZDrpFBJuS?>vh|t3G z39_)~?d5%f3@Sk(rO2`V#sCr-+7Aa2nU8-++65kfBtx>nUp*c=h{5z-XC|4BUDwkA zktZMZP=iZ`Bk;XTeJoCfnZCUq{In%%oebe#CC$;F9Oq*CV-aF)7`qU}=pF(wyPI|o zg;-QQ4x{ae!F1%3#$GQJ&^?U!q+?`FqpP4vSkCCJB&;Rlz~1iRI0+ob3*PkSAc%i& zUAhJeQBT6TaiRsK>7%VQc@v<~7IpNDKV(qgzIq8@eGvW=k_!kgk}aS2iP>qgNo3IH zrBBG^S5(#n0BL@6e6KAcH{BC2u-XU5$S}~xC@n5xaOVk2w(ZER6&V|Gt{AP)!VBCn z^gGEABCF_XsPib|hY~uEgwUG`SK)sc|Ezfo(K#2OzDy^)Q*ssO>zq%h%e|fRu+^uK z-PRSz|9N{(RdoQ^?swkyzC$-auTta5YMLDVP8Ed1z+gaYhpC+o{S1Y$U$zhBJ;UR* zoOrxa#uPpY&4@-PVzj<%s`JS9o9WBYLZ_gtXOY?KZz9x;LxVO6*CAmuFVugjJ5Yk- zD1;Z(^HFxMdaiNiH_bf2!w3SVn}F%gB5&=Q0m+s|eG=?B_E(sP(%R|pO6&0IMm!J^ zX=l=`-6UMCUWlu+vmhfuXleX>16sh7@JHbkw;SuJ4n=u%-qx?S5p9O1uY@!b@9sJb zlGNw18D6Ohy6D@20uU6wh#!A;DV-lf{Qj_Yg1!}A*J08x+9w_HcLbRADrrHx(Sg&B zr8y}+CKT#$fRh5q8B0P`hdGaAWDM-+KkT)Mq7wUZGa7Z{jLbVbFiRyplASuL6*}>89 zDFou`4pjt(K~;jckiov9KUZUX7)2I5uwRjtU8__D;#EA!6~|A&&74AJF4~1eN=*i6 zQjNe6Ofn6x}SK58!_4LHdM}Z+2IHFLx z9P&ZgD3VM>BMDyWJe+^(THtul^+2L)1i^ea`VI7O^2P|lQzc8JlM}^s9!bWCJQetJ zXy+pBTtaJC+ol!OGKd(%6RlPeM)Q!-Ja@YJNH@Pofd-|lm3xd21RT~gsSG~}Y@{lH zkYLC@mgi1}8a5IA9DxmdJfE3^*(#7}G6+RgLW~#_#6!6Lez$+890uS>qvf^Av&VqL z1o>#^5m*}C<5hEYE!2+{7~-+MndjB-gWdK>y!tWnqqG2*Wllmod;xL{&g2i^R-`|l zSpbP&!$&TAadcec9KQNjc!+D-0xaV*>###*I?>X*;1wa0d}2->!ui38W_?S6dwm7h z%tS}FPv(23Pey+`gRZ0WUjRf@$I~w$yUBto+Qvtz8%C+}Y7c|BW6neO%m^MoHtbq! zejm4nd>?l$PFrV^@8i~zet}!_GJKsyEI;Jkm5Na>&oCtf>lLzd4Z*)%tD*}pAv;)o z9I#f%h5~xV*(m8v2(ewymZv2diw5-1EM%8zAM=rn!5)8Kb2QMyNvR51e^PL|vpMtZ zaWMDuk2zlml6UgzJo54A(>Mf0)FUMbsyo-?@R#STIZkZ`v_88(3_-0BGj@-t>m9&# z5YhEU%yb6U;Pz2K$MIwf=;6s8^br8*&yIEqMR92!UI9@PAP6RFWi1A*H{6ac8A;K+ z0M*_j&X#|f@NPNKQ!Q^C0Z9DB6plu`##fzc0;FoT{Tws6fvdP`dafXl{j~}*68|{$ zJk*UbJP)*HYQ0f2zvD|=Somr_9=Dhxyt6#=W;sK+ib?kQ#Ui3%`}~5`de-phYyu+36s5L%A0AkU|dg4&SgG!REa zI&qFcUF)E32^fi5(jx`0I!iK^kr8zcMz;wUErF6_3JKJ|d!PtD3Iyuw9wWF_mS`p?Fo-`GmW-^0c2NW)odfg{?V zJysTBEb%X!X>c4{alTi4#P<9;!A~OipXjsj^A7M+7WiMJ0IW6oSkK_ zV>zO3E-dQi!lG`WqV98uYJ&C51WVK{mZ*IUQ7v#E5Y@_Zk1gsJhp1a<;Xlg}bxUDU zw-gq2D;4#X98tFtt=gh)&C{v{?hAjST3K2qTB2@sh`N;){&OCVsD<9+Bemu@0f5qzPOF&gB(XM0Yfoea2)h_4p3qRC`Q$MQTfIMYEh-!Z#>L(be zpIUxxk^2>XnTux`GjV38tD08a^InmJIeB#o3SS6G_?0F5=&iwYB<)ENN0NFp0MU{3 zHc8iYq5o-bQ@!qOfwX!ZaayZ$fk@PU44}@xE9i}yLB5d0k5AEm{S;8?gIi$@kp4MD z_YrIqu#+t8Y`{hx*jhL{Jj{Q>F3!fL|AOm1@-B;nyz0)qHX49hlA2eMIf9jNl5MRUz8j@mG^D8rkJ z=X$3&YDjxghF$G>xy*kvlqSPh#^WBwpY)3G79;IGUc5N<2|ZwofO%+Dpl&nI(GaG{ z9^q`@iOb4fw5>IG0Au)0$!|q9H3d^X_?5U8U*td_smPIUA@o4N%qOV_&3w)30eC0I z8V((y6DbngC}sR~nS23tn)%sJ*A9R#gw?M=EKX3z@US%H)lYwbfP%=jTr|$88jU(q z0vNpn^*!7r<A@mD{b6;Sff0u_gZPX%p5i86ldC8s2@7+mWE?SUPn?Dq;%{d18732`<71Ey< z)7GnOW%jVO^_qniv`fJB91>m{HE0eLt!S^uV)VLuRo{OoMAB@R^JXdK{1J)R<-Ap} z9E-yRepe0``k5TwwhHhTYxzIfB*hB(b3rjJ^k3NMcM7A&^6__3L%&g9hqNWmd+u6$ zpRKhI+&O&6miQxy*{wge(FLvJuMF$3y2~f7-Q`nuHD}AN)lB=D)!bl@UWE$S=yx@Y z&)6bva<_lq&1?}rXSc*ZY_xV0jtSq$LjRME{!}iAKF6$_Y_?Fb`u)qj>wLkkz?WwPajLqR^?i?Oxb9kaC2g`n* zv^h{K${#77D$1qTV@dLJwj{rBugfnB8~Ppt{d9j(4(S_!+G6vJ%rw?#-3KIIX08AP znb}{x?EdO2qHmi*EJ9%yAr;j1A+J~EBK^dYNO6_OFEdwNfg%j-*1bbvwys5YC!5YT z+PjqEMr%{u&7iVO=ANQNaK;zE*TRw|g3bHKB}s5!DH7bTxQ?(76eY3Cdaxvk9x93I zCrW<_gF;Ydj-X}iF{9jl%&1^PsTlGbT9b54Y z?z2Ik!t+T1nS~N$?n?^Hml-!2$N8;|hE;$1)$EjT)+y49A?DX#03UzIW>ZDDUGw)$Nww9U_~P{v={I%PXskWRnr(ruvY$kSAe!jhty zy;>UN-ak@o3u%#Er>@qbh1hM|CYLb04Joo0vKwb8vMHf)+Vh6NtV(^`z1v-!*M5Il zEi&~#{H;c(Vo$NH;6jQL}vT!OP`l)E{ME`5wIWxO1N>{#_0%QoO~#U(x@dBzu! z$74|QId>?YR~ce$pP(#NK`^O^n?>sN|>&v2XTXS&OESSj`Eap&{e zf1!RW6_@^ds>1X;zwh2NKaiPDtgC<79qAhP0`{^wT$$WQ`*?w2Y*_Ad)F|8c!u9ag-(aHjL`yA`u!pE^W951_`0d=@5 zZDCO^)mvIkepYD#KN9m2y2)`-&9`xd%P6|L6yL^`?q+p8dzp6?dusYV+qJ%j zjs5`}y-#Mko33-6xRc#lcNIq4Cx>z= zr(_S6;&Qmh{RsZvQjUM%e_YrG4yn&whq;?|!Ddht1&!?i{XW zbGXKx!;NeXH@R~-z}DpJ?wWjq&EZXVx8rXW*S_!qS^_QGa0+b%^I)?-W@ZT9Tjc-W7HBa6XLP*N3|oFoIpcNOl3EiWhK>5NQkO z&)1lL!HtiPws?PK&xaqe_c$N3r;NY4o-}{rdeXd$UCVE|tMLnV9lm6vd)erNY&54Z z(H=IMXQKr++RH}!*l3ZBme^>SjaJxbKN}rjql0X885>>BMpv-Wm27l~jjm#&!)$al z8(qUjN7(2n8(qsr*Rj#{Y;*$~-G`0t%SJb{(J?kU&PIR#j*afeM)zl<2e8rYZ1f5? zdLSF!#6~x>(Sz7%m5m$XE_Y=g&dkELH;&vSSjDT4p)k;NjI5GvqEeVr0g64Q= z`<+S3*X!$^T$G>H3RB%%VVc3E=+{t62|kb+Y-5xIX7`x_hCD0RkS)w?8DEAu8bC+a(DTC8_?wUE@UqX$J zX4mK#cN1Q~=5VY#hvV3j((!C`2OGVRjb5ZMowbYExldrDPh_j+BzM&;VHa>R8@-HO zx#ev1DQxM#;co1!ZDTL;z5B!LX~yDonk%QDmdI(1dk1`^ln%JjozJ7C3@K~bO}LJY z*4TgO_3ZWB>5A)dneI-q&iyOHtK5IjI$g*Z5ApnIgW_`jw25unn-%xZt-j+g!SlJr zU3**I*VNnCjhtblx3kfmY;+eJeFhud%|@TeMt_ryK8uY$n~mPVMxVn*pUXy{$3~ye zMqf|}eW>4=U1%}OKl?o1KKnf6@1;5zXRCh;3!JT9#2%7%7VUb-u)P4oIc(SP;qI>C zBiI~{bmy>w&0(cGhh0jszaa80CBM$!E={gg(7gs9GU;Mt-eTv;z$`pGYySrV_o(yhqujYO>hhMvMc%04Q33m=pvN=5E&f$OO z?B(DuY;>Ule(65dJ?(B&&$yF3tGKQuo@eXgH}1N4u@H&v_<5-i+QJ@FXtiUNzQBDj z_yb$juedK6df6Nfx^sAyt-~I79lplqaKPO|@VddFl<$B_Sr@)hWL=1#|G%jeKKuM5 zTa#}U74Zln6_X)cxKV>(>XYNh;H#UdAyL0%Qy@LCPdnGycZ?AjYH52s@NRD?i{Mw9BSM-MA#gn?i^~_9O~RT)U!D> zxO3>kZq2^#t=Y)t5Oe1cXLIQ1&Y?e>!vJ><1KAv!+&MI}ISg{=p!%5ygoD}W1iSpC zd-1WQUW8CM%vF@E>99xF*Z1e<|lUjB=O>%Fi z$?O4o3LCxHU+UjkDrIdq)&KSW4d!WXzYj5;t=$=H^h~z$5A(a8|IR98VHW>+?5TA= z8+|le_!HRZ6aDPp&N``-rOpz++pp4|%vRx2zw2Ig8S{5m$nT8~Dan5)=d`M_luw}) z!K9)X6hWiJResZTCp)dG4D9Nw`vF(`v;2UE_Ioy`Q6{Di^6mWo0JE_lV56_8U^dd; z3fDpA+KOU-`|`ikM*AuXx6z@GCD&DyJ~oxoX4j+EzD9mG6y$eEHhE)3woQK3{5MtP z+w}C(^V9m=Y%%c`IFNt%QHAZCUuNXE#WpfRjC8j;=(t0Y<2FN%eCz(odb!=97el@~ zD)RsO!<`kbgWla0t}By!DqQ`-_qvlj=uYxbh3gXN$99eW<1^;_DqMbd?o&zs+=WrQ&k#>JMyMQa)m$|#$zavP< z>>Y#qUy}J@h3khczjr^GdRZyuk8iwN%I`|PSM-;orqXM2?*d5o4j@f@$G9M7`#&Hh zbl&9Syfp45*VA_141fgQ;Xj?DKTi7XNKQ-XydI(ssFy--u%JE%zmdFpxrlck{u4zw ziC3?H6eY_bf%<OzFav1_sk-hS`GKX&|;B-0x5MwtpQx( zIY?z+^&00XX#dFU+m|ufiTQEvM|~_X^^y4(KwA#C#Lr?^X@QOFWAh3OAjG~~_Fq^; z_Fb~O#o~9#(m8S~ghOF0GB5jyc96St7ty+Z!C5ype~Eup_b1!D=Ecj16Aj`&!ds&E z4QG&0(%yzR+|%P1h4yDDt>B=w?KZ0XxGpiccV0dGSA2RctK{kER0-xn;a#i>O`}+caY1w@S+!hMY9p_Q-pCr zF-2(~pjdwoiV5Rx)vF*JM(%d%MLSszHEyAlB4Oe%g^&}jZZm7@OZHoM?UCXsDhdC?T{`NBMuZkBI zn>U7;edAao?*JNnGzlW~N8Ja^x(|YoChn&>IL?2AIO8V==K);eIn%o02LZ99vo8R7 zp>es9Y$VB8rJ0U->^{3bYYd|dhIrw(8Y}f~(2{;0ywaZlYMa-kC)2fqs6c0GX$DJVB@k5K7-&`<+2XEBiP3s1^2WMM;l4WJiVaSlc1N;36V+< zzp;NGw25C#4HC5o-dE?1gnh}X5ZoEQTkw(#h(o?;2i&LZ!<&=a-=>%K{TK%PfRGvn zccw=nSNtOodg29e;~xNOEx=X^sIvg40sw3T(pm$#Ft86s`(l(_6sv<4qWECUI>L1Qe;-09w{ycqJExQ0$2) zjYKM)^mPH&Ye-`A1*)@92qmPX28I+hfruo$AfCc_3yrs8yba?bxsiG7OT7mV_SAob zM0zW;Kjep7nf=Bs$+V%Mj$)9PNRd@MX{`Fibw;x-s$bjzz*-AfYXj>nV4VR}{{?)@ zvK#7oE~lXap#Uu`6p(4%0<__jP{6dO0Ih8>6in5Jf-Nys4TTE zR2HEvQ>M^XDFg0C*i1rg2n4dG+6jM28%z^JotU9c%pfObkb$w)+y7v3^>R~&)3NG@ z@PNeJ%kb2gV*or0;Pn=SV*~?k+{d>LLf{vwBPIcVnagYnb$}xc`nCyba|mj43F<5Y zJ8iaDcbpDV0=X}o{+QQ~-+@b@D7k(-@7{4fGZ8Yr15RuH~xP+xUP`g z)2U5`q;dD^1VS{yB6=H$$mN|jQKDWQfqMcmp{ob*s{Aq`)-X&4a|EP)zx6gD73MQz zfKw`fVZr;X9~X@KtXs41vo@})CL*W*=z-`sh#JuGc65SGKq{@iWmJ{kf=uJ)HPFL` z4RBrqZ6afHV>QMNwswX-!|;CwTPq!}#A~3djT>wYFum8>%AyXlZm=Ck%eUgO=GegW zU$EGBJQi$7{9^lBW{Xr`MoPBQ@ehC~Hoz#^<_;y>@prAbz9ming*0f-IIr*+qX$AVtKVw(D(y z_47$7RyuwpmJ&BgF~IcFXe-MNb}18SDONoGN4)p?9e9~~H!NMpvLt+uQqb18)ou;fdx~$vdy02>a_%WM zIOp6TJRuh_J{K@97chU;<8tZnrz5OOhvkt(?YY+ne_#$y_b~^jX=H?%isgNVRsS32 zJ*f!%F$&jS#BoN_$3w}<8vRrV48$3zjPdyT3A~!!F5QQSH>%FDuic;IA=mCljcfNO zd$|$p)(z$6>^IuV{=Ut zG-3MHsOS@|bbJSwdl&s=#~?JB8r8jG_C4KGjGjT`MXtm*k+D^=K29;FIL1PY=8S9^ zrWnJKMStf=t6NTW6h4(!bBn>>g6YqYYFg>|Rh(n2HNf;fd@D;9w2P1brVhT1_&MXC_r=NP|Cus(Jasf9(hHCF4a z!ZgPaIjyif(+y>r@%R%^j%5}WSf5KuveL0h*@N+PW04{NGn{IJ^Q%46sJ4F@k3R&WIdyDd^ld~wD;=9} z)!cy5`|mCKu~a^{v2_EEt%C}Vtuu26${D$U>A8Suxqzv;fGN3v$reDrd=!qeMzr8K zi`&V==yq}z-A>NNpxoOz2SV@)S9sJ*y1@i7lBWX5lA%%7E z!Y~{^TljxSLco`k2AqqnFi`#!zlwnPL|%Icq5^sM@;Pa6@B!^(5KZxXLLjL}trS^f z^IRQ-BVj$LKLDF&S`;peKQl-9#A+f05h_=ddmSi2tGB!w>fhj%BB%{Rahds~Xxta= z;VO*s?4tgTrOY*zhTHLzJCC56Q-3LvUuSmuHXVN+O^2#)^ifq~XggCkOX#G$MS*N2 z4z5U?D{fV6Uxe*XwX294o0WLduZBCPRnn?<_>- z76i?8%1XK9kllu4A0X>IA1mV3I?Kn36ck9QBWgYIv0^I6$4Wu_yRv<(nC!&-iM>YQ zw<>?x-c$>0IJ}VgR)Dl5Xr1$l3LwPxjsYz;K(>GDC8mGNbZzNpOh!lU1bES##o~jn z2EWwF=6P@f?A>M~J>CPZR+?Jzd&LMcNIJ5IAbZyoTrFM2VW+ti=rTtUx93u1*CUBU z;8&0@l_$uJn1b@y_pgsK?mq7e=qg}!F*bie7l+O-QGLa*dyr``(2fS$_^NiRwx$RwVvH^K5$}gkvC|O)S8T@ypOxQN@$LRE@q#!Z6^V5hcn@qRiUqnUne& z2!x4GkC6lC%@S6ts;aAsm}6L%l6SS(QNa)&!;c;|C8yu`zUPeSxMTwRj~t z5UksIELnSrdzzxso~BxPkJ*RTLO6deoA-xOZvCjxSAiXwwr5^ZEoplIDyl1h*f9>2 zOWM@{*S>^Au&2DoFQr6@x{0b2vfa;AZqyR^*c^V${%+nnO_&MlNwmRpkkRz#Ha5%Z zI2qnx&jf+KB@K9w$1$RMKKw~|n5(=3(Zzi4yu9;cgdcD=%fg($KS&A;M$3PamEL&@ z{EsfYB-*h@iFTAJLi>BNtpL+QpCwy`*V1dVMbMi53|;MK!4PZ1)H8r4{RX@e---36 zzk!F{eCMec2%W1i@OG}oz}I;i1hC`c+ZAsM%=dhBVFDcNRRZ5p>4As@(3%9SFyP-J zV6}#_T1#22gMffF3SLjarz3y(ZGK}COe9so3o!XL;{e-$^9#Q*l>_dBVEw5GIOWrj za~tvLjR%XFK>iN@&PHN-v9aIR=AboIc_Qk3;(IkhAxc7V*Q&5L!Y3B(2)Iq3I?E72rkbulRwEDIhsMdsCtI8BZ zXFNRB@HE4d9B<|jBG+O$fn>sn`Gu$fsm+B5wImGkq9jupPU5u<$V64Ksr$k!y%Ei0 zuK`bE5nl54k+(WHi_m{&kZ{25v27ZJlc0W4IGOAkf=85a2&dgf#xAj~kr%a1Kn()% z5{YS>sfr*p&+D`;5N&@fLFVdOW4z|ItpJTK^aF=&5Q89t#UjmepqY$kkdKqmEw)&@ z2O`aQ7-^Ie6rmX-ZJ-J=5Nl5$UV@Sc&$ghbkAUMX3MPkLI6tZ?l3cqL>*PR~dm=J*# ze+|u@8HsH&%7cH+6&ZqCf$gKw2*$u`%%_mWNRNeA8LxDXgHVaIt>L$iH_1}{AYszr z2q3M*aaw|*K>b{V@iys|q6>rk_6g1$6RaFQUJCglgtT)ajtD(iYz>V+4{@a>pvNQT zUr}|I9Cwy1hD52I6fBwr^O3A#8=b{UP^{!AHo2OYXk>pWA0_p4mQ?2~NtQx#DMcty zgyJkh!Xiwsvp>>y3@>+1Lc~}eT7n=jsZGWvor38oX{M;vUO-^w?;v?i2=X0rUvj=H z%i6ERvi-gY?$#0G?;xYb0jG# z_GPPAjKW_D#x2WH9^54uYnKqmhshp+oGJejy2dmsUqFH-P;?v~|3>_;-tIwzq$OtN z!8>^V@?FV*>mEdF$MWd zx*U#j&YbA8=zMb4oXBU6#*qUL;Z?Akq&5Q^?ifVHz9gDWs(c31+Em&*LsI7g(gO%K z>hEbWDJdN}&un>`HY#6Dct!l!%Ew|W<5)PQ56nj#{dv?wAIV6svlTo=k0Kk!>?1 zPUvi#If2^D63b?m7P6VX9(b~C#$;yL%o3-~oSbblC+FGBOxg~X%`DEcnMIb(EHi9o zIo9_iYBMV^exhkJD?McE(O-hC$8*lDN4r3r*u7qKJGOWI7Tr|Zy^e3r!Vn%tzBzvz z44M664O``NHEzXk~DnQ001M}22qk-`!*Rj zI)bv){-Q|gJP>%z#11qMnn&L!61iYS5mYrL{ZN~}-q#6{)(eEeb8MZC(T`y*9 zsK7nh^-?y?NTk_KXb_|JM>Stb1~h@M?iG_}GpGYhjAg1b^{MsT`o{F@kmyE31%n=j z2K|E5pc@5R$wn%B;vBsla?yXpMY!P?GCR$vdbW9wmBifz{q}IQ<7>#0U2Q^LNA=?{ zvwl6i$=7}AT-bbqQ(WDPO?VgiqB0mM8@%gVLm!B(0w*OErh?8CspTW`-_9=l)JBYi1IZzxc0HPjb_0KT-$>p!A>Xp9 zGWBMR1VivOQ7HI>P$1fYpC0+zpAL!YXkvpuBr{{?M;OTZIw+^XIFk!`K@^E70ptlu zdPN^@eVsZ6vR!lv08uzOA6W0BS=47uU4&p4Pih!eBH{96BBX@ML89_Y*U)bZ&->Zr z#dYenKpw8Bs!(qMQTBg^%0bj}q=T>Np3`ff6tca7&%4ed#}g)VeH@^|etii9AqSi| zU|^{<>3sP3D?;~NtD&$Xp#7{*8vWQX$qHGyH0*`Wx2D5yW@~>}1ZX>DwXiJ_3#cn1oTXzu$+6sNqkH?r{*-8ichqHemxL z-2WPub_YNm^mTs*eZ*u;OS2QTMk%#>0PHNOzF^LJN20d2Fq?WOn+B7OL7XRjogsZs z0qOggnT=vC9od{>z4<~kIipeMTg_BVMJsc>Y zhnU~a{#6?w7BFoq_GLbK6v%6{$b(iT~$u+F&eTri&6fNk*$ibElsu_^D}0fLbX+Tk;aISY<89i ztU${mVejZ)p-U*_y_WFF+(~BT%v}(WfiEnQK`|`BQWWP>pPGW?hDo@ikb5SF$?qQM zulKR%P9T3YCeEk`lPBb8fgCtvN-#r){EpeN2fnAK>=l?8CG~dP^^PYTSM)8JqvD)z zz0nTznJF;)4T5iTyI#gR1hAe@;)loqsOV%;(Ywj&AajpZ(K0GYd8jNDR9me|R`iSu zhloheGeioaH03Bw$XUOmLKT#2WvDV#PU|;{Fk64vSPHXB2QzE{vwEQb)UOTdr#}sR zB)VGLVXX^31fVP}%mGUg_*BBvhl8IcU)3nzv!`Jv-mjlnFke7lSr8u7*8)6m zcyf}I>6;5?E!WR12(QpDbf}^sOT0?`dj<1^^dGp1QKjEhFl$)9t025u|A|9Wb!4z~ z;%oF@6wDXVUnmHV>aRQa)dRoms@3Z67tDWGr~j)Uyk7Uk3&9)oP(gSfy`dnyuRf?C zyip$!&$p{sOrKVeJgy&85Z+H;8ZTnlvHtqMS-TJTsERcVmS-AABD2Q+=!KGemkRsAVKtQS@ND)DbihxKJDIy?66zK?va8Xo1iuao{&z^tX zL?m5zJX_!UuPSP$sy5M@wTs%TgQ`+mdn++oilBD5w%SFl)@Z4!y=w23Sfy&uBx2P{ zLPP9dKHuM8$t!={d(Ly7=RKa>drq@8FbH(`t&fxh`7Sv?oWil?!3WOH;^Q*+yRm`i zy)Q-g=57|AT%cu3EvqVp0|c6aS~ zGvEDDoU>_h$z_}B3oW&IXPQ88@x9a9HI>+q z;JHklqmRNT&I^Xi6FB_?y0Hn(;8y>=G2fbS=NIEKOPnHsHv5)m3+k3_sT+hC37fgP zw#{CNNs+wd%Xjf*feg&&tfol5yaUZT^_}zL(LefoXTVvZokhqzNeS}hdiFoxxQu66u6IMtrtU7m^%o3sVR)6o3WxRrJ(0@|m?b@oQ1CRbRNMB=zgB&n}xL+Yd%?RIarBl0KX7kAtmEZ+p{1q{?l6Du z>I~38;nZ+Z-osT~{`u=OiS}iIwxD{wb5?JLeYZnntZq@zIbwoNZsKgPdoz1AS9bou z(4c{RGC6i%let#qEr*p39e%_;P^wWcRH1(@y35pkm|9UZ9HNh5-mGvbmH; zyoaS^uI2#E6=Z<&ZzubOXQ}JG=mImp!5%pef|jsV-hgj^%oEGtx!QX{uwnznqo&YC z*PrkH)<6H5K+tVWI2ifW{1nz?-k;AiQ3SAo@d&ggSWQK4dZGRk{rtcDUrpPf-X$mE zWy^w{)aBS4his2$s{i&|jkdnB?*0NcV8n{GBlYrrwVs#4PKC7J&y-_!(3Urx&eN|4 zVBj#XAfW!j%~W*gMA#_rO}VL{_B8!{k%9C8?bzK)PmKF*569o4LCPSzAK}3 z2MY>VmZswM7>Ib?9!XHPI}rod?kixE6@3-nSpi+%Q*pFUT68{AKN~VtnoXEdr5-@aU^_*S-6QjHVVC<>16eDSG%Br_wTsBmZeZ%N+j)%_e!w{}?;_O~hW zJ!b`)4jNwO2NAMZOW~BFwTh29*eZvon-C}=kgEuQl$MoP|2PpGqyS zdGDO^ej6%PAUTK5EavsLjk7H!q%#SIZrea0$kQ=|&+S0^d1tM6i~WLA-ehl~OlN(D zQjzJbO0_O{yMTH?r6|VTr1l{1%E6F~h}H(8Wg>?v+qC|p+rNdgEA8gTt3mIaLXP(W>c8*U|ICF0 zS?}x)?@xbgZ4*xGHzT)S3rf9+xLYA0gOtHs9VrpM@#^A7#`5f>LdAL9!Y#6F3i1)> z1{(8&hRl&1iE}?AuF_Dh2)1)2kBXg)^75EHB>|z~zxVwLZeg*<%EqtV4^FSI_jUv0 zWh0z7+|;BnvTJ&V9EezgO)Wkf_~4PSux z7}D4HB7VgcHkM5Kl8lK@BF6E@6j#M%Fp79he8>aExUle z{BSz@yo|OYn0&rzSN~CC{im3B^UE_kuVi&L1C%X(@h|PHx~i?Ys=3MPY&khE-8a># z^$GX+P@=B1dw!*UIXjZuYyM{RI+4F~4?p?CG1z4itoZN=ob@mmYJ^yaOdj&8{^R|% z(~&jeyzARV?o4ZX2x^dPWRYZkH6IAL67G!X)G7$0E%ru;m0UFTocZ#GxmA69083EF>Pv0x_lZ$f{zTy>MB%|A)X zV8RIw7W(coqYiI6MiRUOmupX+w|+@qIL$XV`E=;BZS~PyqRVgb&#rHeMKFUckm}Kq z1_`t;PlF`6ej7gU6vx`$os}?j$^hXG1)QJC)P-9+n@svKjv1?V7#!Y*dtd7RG1Kp! z_bsgoIVbbhF1l}2;bxvoiv6${DV)yQv`Fq zmR5~jeqeZs=Q~sq?V7G{NRECp3^blx+;|^*lXCb%KqViO^fgGu^jF*tkW#g!{G`Rh zT2La(&DwOg0r3){B+}8rqnqCxbk?7K?os`-Mt6!L>u#u$|A+ux=@3Gnn5FvC*5@MpYtma#tyvSd*?TU#J zXQt!JTOiOqw{wlZmexUl_cI7=TiTq_Jkz7i!;AA~c_L#twY4vA+yVZoxBt+jtUfOk*wy%{b z#Ha(Zlc?(HQ;}F3RjRNpwnpvO`ROD@HVEnAg@+0w1g1# zLjHD;t!itMN4~i&P2EzSRxquaBg;Pm;XwSy_O&_h{#yO*i}4P}e7WKE%`)eiz@iQz zEW;s2wl01s#g{noGx+d6`b&pcK91X*d%J8#skXz;kl@qNoB$X&;AXMH|=ICM6bav=Hgu5qI#({a(em_L_IYp$=NetNxO zUz7e*w#9EoNX1%eDHyF>FEY?lnyfwf<35g@C>%RD|M#9x8Mr!m(eg~7!R6~Rl(JOi z**v|aY^7v}5CN3@%(^ji@#Tm*+5WTkUs#?=nqT7m9s<%vKWnEet499r3viZNG_Q^* zr0*Hjii(I^2?vvBK80^7IwaUC8*~f}nbL<~)L%#n*#MRI5CID+|QKQ?(DGR$s--Qb7&NS9nbQC+gO^JwBT>aW&EN+zV-7fy?5ustzF`s@4q2CxCJ?|_y8DuSfonXUQ z_PBj}iF>O(54(`9tlRi+#M3U&DVI6LB+KXi1;_dlfF$$XF1m-c8KplMtsQasTg33p z^?4T9Z-k?`4$;$YIWJ;`Epks}INHOOp_k3q=PUYsT@#n)Z&X%kEX}`ZWSFbK?s^t2 zuDb+|j6bkg?-(E4ZLeJR4H}ykY4l5OXl{2tp?bsZvpp^89(@1ZcG%JoGukb^#!{Sb zoG8c1l)uXw;jn@b)dU1TWQ+{-ry5X(II}h<@t*Pb^i+@9m(7Ecs_R^o0m&@5f8Ue|}@9&=GXa$Uo0A8&=Vnac)*75t5yBX~oE^1h%(zOF8 zpB)p^R$0Y-KicJyjiq799h2O%K=7M(TmeQqCXN!{`nhSok zt!oMRhN1b2q@Op*pFGtu_dC{;k-NjysT)0HkL4IHRoPm z2mF`e8m;wx?zuIV-JZ)P;Y(Yr8>*DOD{aa1o+dg+;6}u`?l$Z}{Z*&rl{xvPg~m|7 zMWa?i`jXeJ`{Mlv9gS<%rN92PYIT6?x30uWFyH6n*hZu{1Wb~{M>6@JQLy|fv@g#W z+AMmsMtJV6(i+!p?1sUpr%9#!Or7B}0tL&2p)e9lDpN6;iDNiek3O z&%A!m=gAx%(!GqSSfx^C|Jw1fXk@$zA}$-(XB`=wiSdEY=k@UKE4=u8wbvo9R`Xra z27B>$MZ(nn^+8R9Ln_=?I^tVmZW|yGyBt3{J))E?8EX>+3flF1dNMbtDm(TJehY8I z*;&>@7Svu^=gZS_Qjs@a<{A#+*T4 z&}vyK%t@%8%Qg4p2e@YA%_ebx!@I}k6q1x^;x(!V_S>nM_F1x-VM+>~RslL^58Alf z#w`W|J)&1cJkl8^WJZK{zhJRddnNQeNX!~jD{9p`!;*JBKwy5%P z#<%!fEB?O_p_!-A^Mh`wc;D28H>vEtsmTssbNf=;oQ0ya<>s`n4oWBsKk@pl_bfH% zXWIQ#9bbdkRW0R`Co8%*!Fu2+@9sCSc3bX!e(i=dA#IUaZQ9gQ-#;1OQgYw%{(U7h z_Tg+wuO;PQV_F_R-!6ZeLqRUx?d&%~5!x&ZgD+AEzNwnE<9hH9J2h$eWj+rf!#1sD zz3*u-4D2o_(-Qf` zcUK{)?!L84t-pM0;~koEcLdlyglzq*0+bbX_rK?I@tHddA=*jT)=Pa`mv+E!J3q*r zdf@AoxEh!1(4y-#taqYafR$^G3&6@nurZmAC_BC1b}bI66mw5j;xSnkLN4J3%_*1<9e znXZA{K#;y|Ak+9?q_R)5r8QY8nL7ztKJvC4e4>1O|NeA(a1cWzi_hPB?2L@1t2&#- zV$sodczY#Zs)Oy;>(>FUBa;1XW5Ys^L@i_a#xsq)|7O}U#x4Uz9n=+n<5Kx$$6IYT zv^ku0%0)@KXRGg1zz5X>{Zt2JUjE~4iy)HLNb%IuzW82@h@-htz33gk zpm9D4X4{(bZ|=bRg`R?`u@wn?nEwMhZD}7HF@7*pTHl1dBEFXRzR2*LKRS9?S%3N@ zSHwd*Ac^j1&C@_KefN#=pSQL^jYiYsUtLH2t2h>OKxg`NoY(bHE!b4M-Dyr~n|t_a zz4;e_4UspmTW*gN`dm*+V; zfafkQ6ljFd+f8hy=qEbGE|MN}HrJu08_@TT9|MhdI2nsGE19E;0i8ni{33cg^at`ro(LxTn3?o4H(KCf8PBTsO;ff7RQ z8c7^`9PT@{DrGjF7)#>K2T!*>YtMe~J1HaXxzltciEbwMf}kNSf7M^YC!L|3=cmIH z$(cB%T~X^S+u|A z`vcUk;Mr=Xp#l-!W@YLRPhV|enGnrxQ9PU(BAS*wF1<^L%%XzaBXc#8T9~=EV79K( z`Ky-2XzJA1NW7%8C|g`%kNu*#a0=a-Dsw&=X@GPvXoa4Zk=slKC@Bwnqmmbg^S z%FrXmm23zV97Qxj6)Ssuh>Y(2szeHK{{)fS24Rbnp!82bv&GhAg$mqbE_)>oyT#MH zKFgBdpQmso2Cb2k^s6i7NcA709!~r5+i=boqL|Zn8ia2@zm`eG6Q|Kw}ep! z*{gHKL7-Ph`{beQmA#2g-0Fxle+r;anQao8h4}N8CQfF5@ZcSAd0P2cyufD37Ma-| zAdn7(woMP1YWLfP7hydOEVc@dEu4!md}idFD5lw)3oA0SoT>`fwJ_IU+@=8P$zswe z?nYj>s6Qt;B}Z=7u(b9X_m3k{ZB57>oq#HXGo}2qYp!3Kc^KGU?~V0Vgal}rw~3ug zg6<#Hzxg-DTBY3)=~-4`#iOpOS83_0*ldHp7ZQ<)b2f@da8KyxFHcCU;XbVWrwY(< zI^?O_+{!)Xc9AA*H;oJhV*ucT(ws-LZQtF$W3py>`F*q9g8Ce9^GJJpSnM4|G$S#$ za_r2FxPvq*>&`T%nEHKol_l=%!)+$cD(Y75F^bxezfH0xZH^Zy1C?^`QT6AlLW#d) zkXnb|%nBpa$g0IZ_T-T01$j#5^|rDpO|nI3n=x|QQNhUmE0$|BXu$XErap$bEjFw- zA)w}N2103;CJ2SZIp)NR;vi>qojt=u(Uus_csus;Bz=3WorpplGmOa;Qo~S0UIs%IWKXJnQcbCqx zEkGo>!sU3VcNy8RqPRv3+p6s>JH1yLd-feI&fk#I-Si>pR#y8m#q zI}-}7gzx%aA4B<^aUUee!68c1y-q|GhF(tvrc8{WNd0jBsUB7|a5tRa46KJ40{i!5eXWi}6Sla$Gk1yqjj0 zEgw#%K)r#YS$uzrzh%?gB@9;(iy~Arb%ZkE#24Sk;JB6_9f?|jNK>-s;YyCjJzh-S zz{x2Udx7sU4nrV236G&FqrFp2^qqZ%fIkJ+ezvR}R0i?hN#esZ!^n}nyF_LiMCcp% zYu$dzS@zQvvz&NW{5_k8vP*0cv1VjE{nN9|wq4^2%*ZbKCZ^;SfwqV}cB?Tn%Cc9F z-^K&|FBLeE{r@f1O7agIne}c3-Jbo~E1&H-cM^d9i>#dZXJ# zSDsu^t<2E1-;Bn_;01A1$;8-%;J+-2pR1>))cKFb&cVbSZMXaXOh1KJW9 zy_@%Hgb%w-q3rJ6k~pPOAOPN$6-Qq!d)UM3DOcI|%l}5zD;x|WmI41nWNYZ(fZj_& z%r$ZNp&N;!PsB*Mu0#||>hEtN?}YP6`QKScbgU-x)c`r6MHP5VF}^BsnRtmOop!ni zi`kn&s8>0m2RQDt>wcISBDq>uo5%iHLSi+o6Z##Dvk`TtEfnaqAK-=DV(Isqy`JB1 zN93sN(ub<&!LfLW=r%{O_eG>M=+>KM(pvG)iSj_7HgW1>kW&6NQXrQ8`{faCHMD`y z>q)(Dnr@h)1kY}PFp6!ll>%ITV$saiY7Owp&F&fnCesxsl>}BiS#+nHSoj+=9?MsL zT%l>6qN~y9UG zoe;EN;#9T3A^eU4yEDdXkpu@SN+#^ykUP5FF0~EtUL!~>yTs?)r2p$}G9k3WC z#5q~+cb^U%T^%HP*lv-@_V74*wC zda+Vaz9Z)HFn#okoJ5`#skQ{rJ*?m;t4UY%ETe4~zUf8T20{`iG}4*9LBA7u?#bH` zhQ&y=MS1dgBm4G<9D7|nc!_mn59XGuz4A_Sou>@Af17PTwgzCE?rNB&MWC)OhUQ}^ z+G36y_7(c(XSrH2Phs??7zvf6Oq?40t&9nrg~-LwgKxTmL0@1uolufhNWy6nk3~x^<4H zJe0ng+i4|Ufjko}s1j<6acqm)k}0G;ctxh$_s5LU)gJOTRv+TGLt?%Adi~8r7Lv~J z6x~B${8_5dZgk6#gzf?}7S~roBP2wik;mLo0g@YWek1Lf8`NS^#x+t6-4aB3uH-tX zR7boe?runo-|zP1^S=L3w|iOPnh=I}F;WX3L?WPF=S$Ml@o+l@CL}@<&(WeL54RUC zPZY1_Wat)FphCjyoBIEhjK-cEMM}65u;#JbamvPBWJPMXtf}7ZovM~TEs?T zXv!>4;OClKZmEqkCu`P47e@QwS)J{fd|`sxAeHO+eu@FlM;Mo0e>Rb_Bf=HRm{|i|j>JdZW7K(bo>6t%=i91r4Op$D9+8b4OUP(jvcuGo zH0quK>&G(+uD5^vcv6%e?n@~=+@85CofP1=4gZY0l84}&=Q_>jJ@$x6d}zzTSFZ?9 zPgm(&oxjRf^-HQU99R`jb)BdVcRWPc8V{CfSGxTmYhP*>PqvX>O=ggkV$uClPb6c}{Y31I^2MlM?HI((KB$g~pgutf}JRsQl^ zX4SUA{K&!pA=Q&DJZ$;>h@?2h3|rxV;X?Z)SmNp!mn=hH%{XB8r zs3&(wFY4V9@ zUX#|p;AO;-V*HP)^gw+8j(Bx7gG6c9lvi$WC0CKCE;I-)+7?ZQWIM3GY0^VEOV+wV zt8h~YV`UY_iT75C0<;j?5U%fb)^Ed>a2^WOrYQHeNYK3#ONhvHzX=JXNf5v^gJM~X zamLB5D>~|SYt`@__Qy7{$**XiG4|?l>bz1UAr(G=D^3RRlnsgAc$q7;-Yad!li$s# zz&V3vC6ZI-$+Gm&!MIvc_i~a%J*o2gZ12q|LbS^hcYjA1LWSM?nTSl$`Oa$P@!TYd z-|g7Me1tMTqd%}lwLzZ0jfwD7A+appP$gE~zE2Y(J&n*)xFWQ2(<(+8cipBZfBZPN z=DJC@5KzPEgm!JZ+DIab(1)1`{dmT=abqh_bCP*b5-QP|c!m}UPDnMs2|Rk1G9U4f zcyqL8t%+J4F+t>`w2@jzq?)njciSmYsrT&?1#J3k$B$J{qlC@KKcf#6Xq+(|i}6Bu zN=j>4xV^|UJY$wS25ki6l*icpN1;g2TR?ppK0V8cKv`ME2jS?JH8x~Pv9%X}n>2=g zmGl08!XHCaT}G(PBvPA!Iqii;`dB>~DiP%VWK~}eu<)m1;U&cDa(yhb>_M0tIicQA z_K;ALDpg5TUm>UK?Dl!DZ3cElV`iy?{Lhn2?tP$kVs|xU7POwaeSH-jSj>Zc6H$u=!`Q7@rESJPza(h7_P(SpSEExmYi(o zN0K5W?-OZy@67p-oYS6mCyoy)*pY0D@+$~g3R?Pe6lgLdK0I)sxPH=~6)9Vzs1^|n zy{^~aPbAyx_4Ws7ABV^azM_8{b6y{41EZBkOQ?i8;{=sF*daA^(}=@a&KOc{F=e8t z{BLyjW5+!gvUt*}In<(ae@8%|43$0B{w!F?S7mtI?3D%76%u!P3hedO`BU)$G8tVK zvm8Mfww!n@>9WzL^?@ODovvcx%y{azF~KBbiueWi-;iAK$U4od;a7{>h29wLb@RVg zg|;3E%HO8khB$LYSFIQ={kFn_cFcASm1xmI6sr36*hr$Ta2W_U0v>e9V12I z3fSwMi8Az?l9XH57+z($?q9pd2d!nM_u6TvG=i_RbrBpH%biD^nw8QYb`WJNGpVumfyd(#$eP(-OnSiS6RS3&u~UTSct%u>3QX4AKP3t>EOW zKzRbGWaV*df1GmoMkf1fgc)iQjCA^Z{*Jrk&L(2&O}B8+n3G2%&VP+^dwe=Qlw+O+ zTdik@(|Xc}L>J>YlosK4b%7oiqQZYB0^ZyNKEgP@(_q8gV|KOU+=;+I!6EOdaLQ-& zw5#?(H57+^DGDTc4{i(Xgjl&l0^Y`{dUB1z*NBXJ{Z%+2x?zY|4d7n0H(F6Ia-z#{hG#6; zR~m6OcTKuZW@+*fb_(psKG`PjWR&I^vvrXoPgb-~jp|`fCXW8>#(xbci6`GV(n!vt zuTtTZfDe&S22=O{9{PqU$^Ir$k$OD| z>SzzPtWnIBLMiaDo$T9$-D=MNVsjM+0@SlL`l=@UM6Ky?-3M~*V~#^6<#AI2iM!|#w&o-yU6{)9uPClN{BAvzkUrV zSKjlG);wtjCr?-9kkIQ;o|KH4$ci;r;5H>K(2dS+EXim6c$?5u0GLs8Vhm?#V=(+V z@nuljkSM>J2h5e;I|(Ec(1>vyF-%8LH*~Q=Z%Xv&?8TA@HB@?V<0eoQL_?NT zhVgt*wU9{CZtP-aOJ=mKsJm97`KU&JPKYb6sryjjiY>yYiKpsI-S?Vnay=VRvC%%+ zC+7!@-scASU9^Bd51%VLMvC4Q%|z5yk; zAFbtq)DuEA8zCoK(!r71Tusb`@O}9LM*m8A5s`wZ;6$4e%R7i9WJFUvzsjY*1>F|@x16lW9!ro?;=Nd zSVG>*Gzr_PGqE-jA8JtTpQJg#Y6BYnQuP9WB~Wnk@q$+%U4$#|N74&tGau@7<4@-` zTd60P`(MWzr8inX4&}Qf%~1cX;`OoHDl>@D&eaIE-C`HfEPA=2opB)Qo5|BR^f~@s@AN#i`*FpZcx8E)e11kf9&t_YJW{zL^sQT|)gN z(7fbmgnc)0SvHmb-KqHV#g|)#$m%Uqb`T=~ee9=F-_vd@w zv)re_5iMebl+y3+56?q<3@_6IgM7SUl)%f&2j|j03mi^o3kHbc?mgp)$U&9Ok8+Q2R00=Y^QE7XhDI z%Su%U&vR|J4)lv6PW;xBAc-jitf48ps(4yVP)oLT^Gx5IJ_q=|xf{$gE zfHm-o^Pi|J9NyagE8bcu=F|AT-vvs3dC+R)D0?q?%;(RgeV;-7@2b2TK+U6ye`U@Z z?Vu>nB@Bd~zkS2~~UqEd!6&o1Lnk zC#Rz?W)=i}Jay;g;sAebw+G4jsE);JAzI8>afc484&6>o{7ma5jXwPn*_TkOGk zE>dx9E)Ow*(DjG+Jj!|2XwgQw!Iv-87#5#amD<|1HrO~(!N~U$0lYUIly*sEqiz(4 zNfYYAekd&LVAVlMts)Ai;~a6iUU@(0c_}X9&bXSLrha1%B7WG){v)2>{#3k&31my# zrmV=nL5O&|((wZQ$SC z-c%LN3@yLMYsS-z17UD%_;3o68Y#w*vUI*AHu|BaGw^(PK0?!(Lp=kI)SE)`mVa8z z-x*=8*K~;J6!dsMFG7>DgjbK<7)NTH@4NwSQscCDcNwl#ys_-h!7C?Bq#kJ%9j5%q zg;NZA+BbS?C%XpbJXPafYhgWxO@bjC2bgzA8;sPX{>@V$p*Uqiqsit+JJO#%07fLk zkb`X}PBBVtO*du=tekm~G@ds5ws$HYFwmZDb%1vt?`_}FqGX8IlZ*mi^4W(UKEOLt zZ}{^t(xSNM5gP3lJD=x;`e+o64w3+-ewR9?pZf7EP*<<8E_11CA<0%MP`!lk4Hw%R znEIJmWp*Gci!nqS7JtF8mC0bmQa0{axe?kVqW2X@Ix(=)IS&BCHv+aUQ??FZ{a4MI_3r9aMcRzPHQ@Yfvg7M zL<2AWdC4tCa^3cbMoym7?bE5SCHW_+eo~SC@Nhk*I3-Qv$+5JGrH5qU4uyx{0&kjb zIOs1v+ff>pq9XUf{DKC_tA86AHUX!VN(U~O0!B3sF{|dQ(ooO+*S0KkT$QD{#tdOh zgAD@`>JhE4H$EVH&wqLk@!{@zSgE{*PjE`b z`g_zK@qVLNCND9Vu5z-~HCq9p*y1&tS<_FWRL3kixo_j!q;+V0Q~r!zsPJLX(m=~) z!rQAecXvnf^$(*sKl&yiyuG9spCn6?LgJBr%OPIkLM5Nm+t zm+FKV{Wq-X&ru8W{f@Q@EeQvKd6{XbM~*q?v1w(fRMMxo0H`~Cpy7R{AKG*P((`QC zssgG;IB|5K@DKG>oMX5MT~uBHG@GyGRcz>gXhlt}s)jw=7io)!DZJ49?(wTb??U{= z^Ni5lS`v0U1}m7FI|D95YS8k%PJZ?1;jIw2Y`RVjHJ%@Qpq|_TQ*xgomxyyAB;90M zGaB!}4$~CusvA~9)P=pJmK2Dg;v76e^9(e+7Tf4L9TYB&U8Ko}t}_A8SFt!|Ra>U) z264-e-e;vS7CqC^IpmB3y+X0C_Z)?U&1gWo_}c3xC&dl_#*7$LMj*^mc)kXCM`zq- zJrc1Q5@Zg(D9t$tR2n*j*7^!5QeJ$`@orNZ_CV*(Td!8(YP?4Ad(S?19Ym_go%v*g zJIWA#X#(g60f?nFR{-knb$j+PLpW`!3`NjTHk3lOBXf~%W@=AdvfJ$^@Lz z)#<=Z9MxJbX3BIrCT&>xbV2_x3=mXjhFONtT|SYx0n-xfof+&8Ctp<~*0APc363M z(nny2tMzv3SNl+RkMFl7iuEHMn2GnA{rZrr3dFeO%W*H^oQ81k_K>@vuH-Z~{MR;e zMB2prnpz8IUsbQ1r>Tjk^-+H>9^zwFq?Q-&nQV3kGGh>D;m>m>)9i-h3n1@!xW{p3 z=Cs>$D5P)%ApFf~^z<1(A-tAd%{OyqWL`3a#S19R^g1X~g-CU0196MjX7r)!`658f z!r$ZK!JpQ1!GyE?!2;YIyoC;Tr-98>imKQf(GN4OW!c+Y9!Ui?sQA z(4?`KUzJ2fuYT>O@KRpP zvxeu&qC#EiqKey+>7uA7foBHU->LGDtD$Cs2fcg)+Pvn| z5rDc6JgvC*fIwXH;y$YbcRtDs(^m@ia?o$PH1$0}4%$Q4heo$A^+*|F~W%_y?rWxm41ZGo76rOTAI5sr^dmbO$P}41!5nN<`0#tnbV`k|Bg)#ajgO}TJTn$~HXRYiSlMOAk(bhmxSk($R~Zk3fXh-wQyZ`9|IY zFvp_6QFq%YZ$0>b!TKnkc`dpTdmZUL~DDsoYbbWKBAn2E@RJh%NNG z%Jmq`t{`ICr8r3DsS6H||A2_(&aCBWEjXmkrgH!B{OHc2&8hqxDPbCcXGx)m)FK7G z&QSHKa~UtbGj7F1qP0`t=k}M_F-3N&%hDNjNzN{bREtaz%eIWf*V|_le^H> zo5@FMcYXB~Zk|g+>2j{mJk>wdvAJ?Ih{{3I?#KG!0*a!&LnMaca1*PR)0%TPlOm{k zj7fuf8A2(~ClssW#k3gqHch`f_}^Kk<2>1pT?=5YMhkp9HFbFIAH8Rrl8cIJ0gOYg zRPmb%jYTx3V)_7|V{TYi!1-zfj)KUr1H(2c_*+l24J1u>+!5+-uJ;&3qRqU#a7nt# z*RjQ`vfZuHEFrNZ;I7;OH45tBGjr&UZVRQ%^pLwMRc%NH+yp;vDDeQnH+DabZZnC1 z+G4DPei%^@zcmzDbj|z>cDc=Um@1QB@x6x>O|&Tz==EHcva{Q|W@V~u6$P^Mn@M^x z)_p#per@813yx~lt^4T|d!EKJw{G#1-a5hw8A0}JS7&sax|ACyxXb24eGvtd{qWEc z9CsR}i!}Z52PeCK{NM?JgUfiBJ>Q%@%KL*GKI;?NM%h|Uve=e1m%iGqkM{0yg^zGr=? z*A4_2g%Ix^o8W|vxijjcK8)*^NkHio6I5tMwZCIoCo`eKUJq0XL&CRH(=^n4nBDjO z4Q5AUPVX!MCjGrkImZLfQO&Ej2sv9IKr0D|3(@-(n(V^*LcJ$*kiCGmBp#Pf62G)% zUDtgxlpd`nNfg9&jeR&s-R>$Hq$rFp&4U_yN$s08F&#&3+PhGnF*K_Lu(rLo5@=~^ zA@dMeC}MWrFVO#aei0!z;3~C85X6oDzO>?)%L2|WSw$r0yo>f zqezF`>fpJ(P!KLc-}w-HEBDK%oLptsDzQ3Az+%p&1wvp^)7@Lh& z63E14--Fop#oAbvI$sF5VQt-hy|_%MuW6H`R5m9 zIRfP{xszpvDR)=(oTEZ;FZ_9Pt_k%TqJnWMM9MSSoPhhwNYqUnWs_PP6R=0k6NTuR zL2Fi*j$N>iUa^g=>j{%;vPFkO?V1Fw81}BsL?L51d%aQ9IKd`W7|kAKOz?ZGJgOM| z5US~aZIK2{1&S8xoj_;fIQ;LB4lRki3z>6Rg`O&dN((^ z7Z-#R_Lqajs0fxv&tHv^g{pxjjhxX|tJ>rBMlGJiwnq(`-03`(-%cgVGEt_3g~0?P z`6enw?Y087=+iXvRY%;egKo6{>C3E$sUi3zt?#LH3X|cuZ7*!To{F z%_Uv>7|Yi}rR~s-=+TRY7met~0ntLs9|)o9%O`p_#f=q-GPTb`=xs`8Jc=m0%Lca# zElWypc3x({m&9k$W3G+H%4qdL%ff{cb=2mQM`w>h&X`~wf>avH%%DsXv>ldGSRwwV z#dO8CARqn;TSz<7^n39c)v@|Y53v-$vuXBh=$L)4iO!(BdTQ}jAiy@~bs z**jBN#=O$gB_ruGfi{rM`VQ!rvP~1K@0ac)9h3}4TBnC6_a>qaRu{&XjCm9uGa*!` z5Kyq!^5(J&wN;MQy%YL+P^Cr^sN<`9@AFRzGpC=o28DNKa@Cr7Rg8|12Dxbc0Wy5X z32??JUCSKb zt1{`99ViUO{wRcU?uHHJ4S^q2R#KL!;DT0{86O+_`HRiP1(+s=v8GJ)(V51h>q!#F zYBvV7xeGG&LyOMy8CAaVR}Yw)yF4-i%oR8n=_Ian(q~2pbrVo)P#u5uMWzmFPz2BC zqz!>H6&0!w3ccu{?gcbI@$Q){jCPsq^mC15cXD_4*sOkc4U|ifzFFNWm+Swi`tG=< zvL?_~R8|pC5$Ujsic$rn2eK+frHNGOML4ilkroxDNQuHK5IPtLH6kU_f=I6c zLJu9103pe{+2woh_x>O==bV|j)6Sf8lgqhcljgb8E(VCOKi5jAq5~>HY4Rc}J|`wQ z+poL*BYv#s$F7{WoC>e}!-i9czg&~}zMS|@9|B(eG@zf4$jlU*_gW6!<=d*974?SH zcz3aOC~@_KR!C_)F#O>U-bQ~DKPm?9i`3DqdpTYS_g}_<8xRc>{12!09_-};+J>Lc z(=GiVu19h3ey2)r+FO>{hZ|Bp?|AdhO)qNl8%D6=?vz{*%ma4}KTkHn2l&xdgfzJ6 zDFEE-sk_uyXt-i-Rka3@jvYkg_#TMm$8F@*LT{m7@+{NEmTiKHhTwW2`6WYz6#LT&=9ssO0kGgzN zCvg1_V+Um=`eDjmx~`!TCU0dngKNH2Hhe%{vTpcNi77OZKtIxT1%~pcy_Fj16gMS^ zNh!u4D_U%ElW00?9>ln!TYgKOwe(V8!pJ9NlUnAuHS2cNWmAU|yHDbQso8iccNL}wcJ^&(3UtAeJ@ftE({fIk?^{JO>>G$OJBjx&}7sfyDIo5qV zYE@idXv+>A8(m@)8T@e0(ohN0sH3M_*6SVDXQ<-En9lo6jonV-%vm<`fnvvpRIuv6QHRV97Jiw%ZGu55A120hV&RIh| zu$n$n3p}K8zz1l?;$?rXE7by)+^;YLv`QpL{o7~p_yOX^>na>kEwAkdGOG`occH0f zRE4(f#$&Bb=_v#Xy{#rNpX7kV^*}$yOYtLOM7q|%pBe_jXMBxFFIZNif|Tapef$%u z|8<>VDrX(9hi4SpO_$87Hgzs@Ks2dw9ksj^ff~yVr1@N0EXl_!^{Ov`eFXb%LwBSF1`Lgvr=9^dHsSWm3H6(XtO)h<%-A&e7k1F$}v2_7f zasGD)`%q+O)9YCy+20}T5y_e7bBk_m)XkE5J3gKg^Y<&!L7+}$e_5^OXzJWKm>#qV zlF#(G9x4JH91X*b2-m2r%$gjXZSuajB_?}z&<`yfY^lfZu0DQN<2dJKAosV0e(E&! z=9ZS-KME&p4GlzpKXRQ4e|$ZsDE9F6zsELo>a@U;|a=BraKRm%Ht zn&&c{Johaks_-rL)m&A}{Q%=tu_CeQl2Jp;4^u{?!A0Z^$%^xakD8}jZ88a@_b7qM zuhoblp!OtUkeWJl$}XxWcM-~}sc8E$idcRXJGat+nO0 zC5h(Vi%DB3()YI8GTXYo%eH!8HtbfJ_q_G6*F>e@5^m#st`ou^#m zd0$ifl=bZMYmTe0?EVsaoiiwf=FfCzZ}jqS1Cs5mx%MftagQil2bq|F?mhP*Q&hZw zFTM5^j1#T`tbW`cDp3K1T)Xy&58E>Qp_4(F06r(2U8?;20m>a`hk4Qk@_?-17iAK> zsg$&T>9g$r>n(W#83u{#<`4X@971Qposcl@{~9O&lwhv#pCohNp6UR0Z~*goT&pex z23;L(%fys89m?(}snE`Vx|M9ouI___o`;w51eG9aw>kUa6&6YbnA#V>1k@YT zWfw~A4)qk{2YaJ7udkZ5Rinmu!A2H13XCy{b3sgviNuG3-%!~kvVt#C2Q}sdb)m@3 zACLsVOGWg7mU;1kLh4k`SZ1773fd?JoG zJFgpH)QBiyU-~HMb0yI5kYvyzCD4r_@gM>)9j6E?!gvOX5CT~zpMr=D6JZK%Xe&ff z1OU)qOb-HwIUoY6?;i(t*!(9K4hD)T9}dd@7lNMNf5l`t3~OCd{`(Nfzx4a>!G1#l zrQZaQc|QSc^zZ}A37nf@>hwTLNFSkx58=0e5mYM}R0~W=l2#x9kal&~HUsxBu9Z?# z55r{szi`R8GqZ=}&m;%GF#(v$_`6SFKrb$FZ8ItPfgmCUIkx&j-mH8M0|@{ z&sG77K@WR?`ZDzn2S=EbYYg;!iOy0ZGb_MpwF-p1l?Q(VagPD%RL6JGYjurC>RBdn z);+aE(1gB2!~d5;M$9pFI|>UE(sI{W6DiA$M7$rA8C<4BaK0`b>dyx%kkyOM3Ajp# z9!*aibBDTsj+X>Eac&0%Ys^Ur1c0_JfT8p^U>d1G+~n>FD%5t135CdrqeRtdyoWWQ zhAHb`?Fo?orYrQ&3lYDA($?zecPZPvJ-@<-*!&sS|8uXuEfY3QfmYb)xG%`#ifNf3 z&c>X3%$S2wQU#c)c&IiAY=*(6R-&OBk9^}-n{lvl1-ve;9;7CKS)O`xt;D7S?3H24 z_y+cNG7+ZKP64mqCCp5Z1I;UW{9j;79KjAGvx8|kKNC3&SwuVYx;#&SA?AGPWR5T^ z9J8iGw1PwI;ANSvWCvY2@e}MwOw3TDo#7m$T?I*))8#7@hMUweYYZ2Y>IXZ9keQfY1O~6+YYh*LHI3fzKt%yN;b2b6&x{lA5jIZeI)%O}#GAjE)SV$QjL>ndou z`tScdpw3JS5nl6cX4C2kTo&ZBILyO$pg?9x5IvNGZCgNLnRV)=Eb#9L(_2v462i`% z%zP>{n9SHEABH435#zsqaS};2KI}joPRTqb^#9j0<4nom4P##-X6HYBXz826>XRhc z;q;LQh0SIs~87162>C#@aoX8eu9-SHRB7}Nfn1`qV8wz-DY~X5<>XT1rmp@C_J>h z@UZQkz?Bsd3tH3wN*Q8m!9+kULL&cz`>g-DnrW%m&HpU+0v7~koAHEMdu;Qm8Hq!x zz;@JbEZGdC_F`7rfItQ+ke6rR-=$&#G@7|oFvI=t#sq90Mqk4oyjkMp&s(Hl1X=&z zqJbsS&;EC1k`Z%&xeA}8ge{Sn%LR#9mk`Xvcyvg!-Uj?PnSH@aF()+}2pgGu31&rT zWL6J%Cc<2Ep@%+D`X4;>1(<{3%-I*1!1|QI4CUx$@Z&J1W^K-(qe6*|&XB>SnBC9` z3ZIBKa|uFuFzxCI1@;eZ^Z3>b3KnvJJUlG>J-&mSpfmgU*86GK2*$M{Hyd-Qy`VM* zUZ6Io+g{fq+Jm02xdy=V)?8(?zfj=ZLQ8= zkTwpAV45oSF9Epz8#2?FbY>L-4n#0#k)c3oU|S4`1T#$>U4Ao~t}gv=6$cA8BD8*I z*EJEpwaapt+C6+;;HD+!+qMAymo#${ziey$<^;0Zv`hepG+KwwYMme&Q<dncO zO$~7L->Jr|{Qs5pz{BZd!(7gsK^1KVcVA)u)7a-wa~@C_bAL&^--h}o!Q8gR!NgYo zzcL@tU_-Gx%(o#B`g{Br@qah0&%pB|N?_)zA#J(e03yi0f4CdrdI_gqO38?qtL4~QrE zEXTrcL!|Clg^CJ5;h4w<0nfocl}4eJZEvwH9zIoIcq=qOW((q@z4{^t`Y0|bKq%-Y zBr^d4ZW-d3pIHvYBO+pkZic5emH1T0t_()4+40n!u1}x0`|vs5hED^0EeCcCb7%6d zZJD$m)n+w-xbA_-`bXVhcIk>Ho1J;+QNFRf2&K@r{a*(mN@J5#WRGQRB@9wGraLk{ z0)*lAh|cTd-?z<|q*|s=H>{XJqj5u6gFRWl(C`({j9^A8=A!0kLimct2FGe+0KWS( z)Tt3Ar0Ivvgt;e{`1a>c&LR*dWc3(XbP`mnho3mouYaxPj znTPXq6=Ff7N~zyq7X0jLME6bDl7WQgmG33L5Ey!PmS{`hDrNQPV?mkPTAk5W6gJAx zP^?9sPiNG0+G}5#o0|7SJpm1(^ zgYvNon7SUSE_$ahS?5(yJW#8y@%X@!;Y#j*L;scstyGE*BKOI!V#%*2MeK$Ro5d(9 z>tc4p&Le2Rbxg*cK)+HA9=`0m@4KQzc{SPNyW%y~yYbXw%@w=S5D1hPzJUQxDVLo9 z6xE^LG(r93JU&JiO9obb!!IxEs$H1J2g>$%=Bew|>yLGsd1p8LNqbof#oHcFeO3Ma zfGRUT7HCfo=VM#>K^-}u%3T;$u&2{_<5wDQFf& zizIji>@t-!uRK+RlY4bYVoC3TQt{KV#KKO1@t( zec$i7yi|Rut|#{~)!z^UC)@Wv9|XSISEy@-X8v4CcH|FM%!G$kPTdc+x@&jd(g|@I zHh0^7wGRAg;^AlT%-oAZx@;a5tbzdzHNRZOQfETyhuvJ+HaBmNt;AiVH~f+b0H65{ z%l#!C3LF`KwGuz!vHr^HZLSk#_@vJ8MEi&nW%SN%>%Yj)X+n^f))4ZW2I}3#ZD?y_ zez>M|94u+*ELD8G#c+tTrUSMbd+!_FI=H2zJ4Nj$Zui6@o(~o^ZvV3=mZzpGC{MtWI zgf;Tvv)k&yrGR55?L1spXW&uxYh>lYb;%w^KL&i6t?v5)LYReNT&fYpF`KYaXz05d zxxb8gME!K3qjUQLj_OS}$FBQnl#sILLjLe?_O&K#Z*LYvjlKh=Nc9tX>l;uT5&aVR zO-IKK4NVcIyZ3gr&>u@up1hhHD-YvIS@(65M%>*44EJXc;fea2G;bTXoZQ6@vj z(ijBt`lof7pR~VB^AJ(XwEfLR^WOs(*!@UQ?*jqOG_Rxk?Bg2bRO0eWh$l-M?Y4s7 z-cw0Nq}w7fLA)j61j_N^xROcMCaNs#N=j+-)+(oU5`iSMpC{rLK9*1y4GV-sKvHO* z3xN7CxdDJ2wrrV3yw=}dE1v1qnYsRDks9v}jYjtM+y))PMiR*`<=nFlujf@08KBm1 zEqj|l#5M)}iEOP|$gb`B2$)I#v0dGnuUZ(TM8uemZt3zf< z%C($A!}mG-A&u~qmQAU-di)e5*%ffyv)VJ-jM%x}*8OQ&(k`d)hqCf4&6UEkKS`;? z+;^zY3y63@Jm3EzdpUmLBPVGfFSxOT(>t_(GQar&PfpH9n(CkUvGr~5=-cm6ZVvCptKk<1${KTQcWBB}bR^{H>mYyvygP1th! zBPSEd9t(0~=Tb;5W9tGZFLeG$Ck)cHCB(asDI;jeOHhxfw|3*%+0}vzgpPL-dJ-52 z)7MRN#-S;);wgC$``}R?V=CY7ainsRHjdA zNOaA~q`ylBCiT)%2*ob`tR&`a8>g-CKE3ipXQD`1qYY6cHFw58FQT#OE3|G9szjD~ ztTH5VBb&t~82B)1jsLrKyHjx8!(t6ZssCEojN)}O?l*j3{6N%ho*y2vUK`A*v97{F zEElB4Q&&VvlP~#ihCEo$8v4AUXYx#DHaL*6Fm2~=?4@MPvgZ1QUzJ{_V#{fX^Nb-$ zN+M3m+-acH@3P0=`1p z1L;a9ZDaPuQu3Z|akh~*z1N`>jTk}qtxpTQ8VE(w{&cpQ{0)u;9`5zAi=@BhOZaRF zmPbK>CjCtoNz`ANJy8}Be5A>RM3>jru&k*bg|&!vZANx!QxMI6 zLg1+R(eotTeqw$@IkY){vL|wMJa2|3s2%<*BuE-Xqoi=g1L)NsE|7V7Qh-{?hf&{F zn&AE(f9E=27of=?auh&yY+v^I>CqN|s-rhF*7*W&`6B{3DK%1oVk^*P3#0)MEi1mP zZ_)$Vjkujo-5tTL%$PLbDfSR?@j=EP1an7P;>IIGsi7z;I>Mov<8vHQkef>7>@+g6 zTk0T*8n$k8x6#hejO9n!E{sl-bnwlPec}0D$_;p9Ofb49lnHj!yK;eb2jOte?Zwcv z|DOaLYd#2GIb;A^7`pIR6GLJ17f3?tbabty#hM1gEU2wiTYrd1ugM#4sL{{@YZV+R z?{!hKG=7e~;6!A~lL0EelUpd1ju&8j68znwQ6GjZNlE)$XxOzBNjcd+@dXf;UMFG5 zvMW7L`+bKQ879UE9c!qSF=CyCx&}06%_-yaIaBRIKcj1a`e4P`p$A4pCy3kKl2y7& z)oU~YZtP!@EML3daujI*#fkX?$8B{WDt-+GvOfqh85D;h26iv={`S)T)E>V*)b5U! z0%7u^#7EZ+s9h52iAp9AyBh4ie{`O9j?qkgE@ixTm57vNqv4;-++wD#HLbP9(10YuWAf3yX+r>^;8kkn%mp zkvJa-Df7TOP6}k2XyH&3HK$?pIWx=~pM{lQYx2xopC&Iv^Z=+Q<+`)ySz7u`wtqvT zv;upRmoqNCO(Ew2r}B?Do*A&&>FII&OG@Bw=ZW7HFTOnkQO(X1y%o1!(hZsL&n6)E zvZcAz;}^cfkJ__$q!KL8p&($LQ_WBGV~?E&E461ni!9?=|JnSE7QQP_h*ZtAE1J?U z&6}V16D$Bx)dz{Wb6$%f#tHxM%UqhZM80D#XD{YQ?x3W*ebe0TliI*2 z(vxvM{9b!ey9R^bcSCp?U-gI!gpVJVPj(@qs~DHTe_b~+XvSw|Bw`%Y9yIEcI7e}H zChNdMe_Z^Rk2A{OZmVC?eh5unJ_bJ{@~*CLkFedShuc&ev&yxx(fTR!)4yM?W~^W~ z*@VS0IpJjPP$_u{R$8FH^~lG48FN?R?`_oQ(bt2aa5ql>_AY2tX7sWn((55$nkHXr z5)wL#_{n1OO0{4?MamR?W*zw?ihBEt7(*Y(O2GvS6jm(G`95vT`F6lH8liyfGr9My zG!Je5R9F=sMcNG(7nv_a5|zLoH1A#3{IlFz;kWG_)WzWB5M!$AfMHj{6n?k<)iMm( zSwR2#wZOxq$4LD?Np3*b#0xnR$7tK-Z=fUGVz1r9J()P~T;Nik(%w-EwHo;Pv6&xu zitCe@y?wKUZy*RMRbcjav5Ut;LjK@YkzYj4UZO(fyE6Laem-<#V+%<^Q!sbawdmr^ z&4FzbnFkGeB>n-SnUa6TvXp!JR-XUzO>TXXArfw+PssS1ox{ID>Z5c!HTEHSRbsr# zCvA(oqBL*{;Yv}y*30`T?Lo_8C!YeF{`?M03mgNAIEV@LtG}Q}gCXjz*D-o@xTm{# zO_WTvLaLjZ2xd*%B#W9~UHVUJX=#0l7qx>(x)LluaIq0turK;6kEm^vvwUzuIihi} z{P90$a-Z5l2Wm~^9|$efy`rJ7`)F=?J!#(V56On~2HyMdS#@IQ=M4RrY0NUPprIjS zw}188M|erR|NgEF#iMC+fqp>_k6D$9$euXwA(~}5ysS&&v2$=gzieU?Og%S-CtAG- z4s@JsRW6N(+42zTrQ3qli%Xm1m6L|T)XHf}vN99!x41ptC-v8VF9kM-tF&!>;hIVE zI=0_ebo%j_u)|!=$H8ouR-;7VqWPe0ER3z#Y_=#sX&?*fYtx`bx)++hlQ)pk{99%0 z(F^L%J0G_q^;`O%=3wMol88@VlO=}x`XNZurz&=?L~m$GGYQQ>;QY~NB9~a|TuRuS z)gNUopX4Vh*JNk4)@mylBz!l#w#!EaG>5!0w{<(MMpGplr4^TmU!;IN)HMx8n0jxp zkNB#WPD9wofk-zQwdw)58!*bb&?xM(O?uac_5X*awr0LWebc7@t;PUFohEIBD<>D( zu?}XqbH3+#GTyn%u!BATC~Q(WZkY3GDg%vw-1=^L#H zSD(H(x)+8E=mQ@>o-?V7A8)KQK(yHmDU7FA^aa_+}TJ1lm4 za1-@;*%~gg1bY-_oUckhXM5V~70?991CRb|yxD88I!_=71J}9Q%jvQeq65lm4>|gh z-g6aPAi2H?6VmE9K6?yM+>;u({8qmtSJhm*V}chLUouvY3^~&2Mf|9QY3=Pf*1 z=4#$Uk2_SuZQwV_G{H`U1kIaUE!c|SPL97}>xDp0YLKc`iNHluF~qh z)UIu;6FsO)1inX*1t9bAyggD#8t_U(IFfdfH}yH}WSC(7Rqs|<{tKAGjgk}OYT=Zj z=BLn(h^+x0Hpb_c7iue7y8(d*B|h72eM^bgM9wn`XB4dgmszm?1d8 zMSoGDJWxqL*~o7qvp-fCVp3|fs!yr{K6>$*?geJAssB}hcik!#e5P>+)msbh?EvS53V=C9GV|b} zre6yx{1o#u^7?rCLbum~^msvao%aGw=^@%!$BV8!c>oJorYI5vCsQY))OwoT=wTAu zSpD{(#*ZCdh|!U3^tSq^iVel;Vc^A@?aUXq7i$-D^ktWAFWVOIgHK&|9%sPU+k-hT zEXDI$JO@t+f_3Kl@00<^5Hi2WJeJ|)L?8~puYVao=b`+%oj)@PFL<_)4gZ|v& zI~jf^W*9HfGG^-Z;(+ICtQuqMZ|mx9RlHVK;CyOoEZTe?=n7z$G(1b;^6xk~8%XE0 zS*SdSt<@dV|8~9ZTew_yZKY7BuOvge!MIYhe~HW!*Hg#7ilfkgWVVFkGH-$VnW^Jz zO)sT_$7!loOE|*hop09--Na+#mm?-{dqP>zp31uUtdEztOs(lAV$L6u+EAn#k}KGS$9G z>T6c0@!oo{+Cmnbl`nAS?OssA=BqFvkq@0>0-QZEYFof&`#}VGK9y~!dhOiiu~i#Q zq0PJ&ZE|3p!-6vO_qt|HwsJCpqPnSn6MKsU;YsLsiBsy8;i-M=I}@PVtl zB{^28&1PRdmdDrD6`U*6TYD>t(K~8A3)7<#KY{MWUj}DOuQcil-Vl}^!vClUg@*|} zacUVW@B%(qYghu3y_ygyOjw)vzg$qY<3+s;CT^{4zeGnI*d&SmID-8ZS}pEa53 zm`iKBJ?H%efm-c2>r(jpvtX3X{rE?w+3$U`A4zAGB2}@8O=M$XlH%y^O!Q zy()*lxNRfXCnc{g*C*jhZda%9G{RY;M5gUOr&#@QXUn2FO1n)o%1ltoZ`$HBE0!%> z*@(BT{l}@ycdiOHX^s$MG>6eR7*Z5ullmHH`XNxOJn+(cpMla{a0r~=F4;CO;?x5whZ_={WJ z*R*d^?Dc$QzTV`tH;|9|@G++R{x+|fd-iw!ZpffpcAILqU778+pyCs=GNbKNicf8^ zF5MZ!IU_A*-J!!@_s)zd@GE^7${#Mc{zJMOIP0=p3X@yweeYP>79alc4B5Q{_IGm2 zEq#udn=w;m^M4BV3P$CAv=r>id`|diIQ44YFSGyV^!s^v<>Ea-+>^%G%8vn=eb&#n zKgPpu`Km~}g?QiF_O~7c56QeaRF@TJAW?EAzQ2Tf=(UwZNwQ;cP$R?=hFWU1=S)WbJYVDDgUlR#gwPR(vfvf>U?Q)$!PV(|v ztHuP&aB0SmBNNTa`Jty{{0yhc3^KQ44Inv2SwWgks+)JQ{@X=aztj_xeQ@uAO!;Ce zTRPu_uX3SPlgfmIa%rd#kDu2}jwe^D-}-dL+8yh+p%x!PEs}K}4L!Y|&=GCWs&8}F zb14&DETN^fu2rn@3fU+qwSRe(q~b^9yalKKxw8!a@u~5GXb9|mnyuiKFVGiy28@$M z{fN#=<10gEohXG67zZk3^Dc1*nBglL!ob=0;bq|b?!HP3?s_^Xz*oIkJd6x<$e4^= z4G{@gY#uHs{Vq)_d^T2WD7)6X-fBzxJe&tTM(D&oDXr$EmePXC4jopriq!eb{kN0lK$2dFyVPQUI8YGO& z&lvg($$v8zseL*JDI1yZcE6;XPt#O_JqKwTT{nyzy%DVtjj%7C&a-gcJw7P#wY+KL znj(Khq<%Es0jP91Vs#p5Gi$ah@7_>)rc~q@Gkx0#Xugs|kM>+qw7#SPpGkQ4a!xN&b8{jF^3FiwPP*^c$yr3;(y#Eg8VIA-ge8>iYupxzYOyrZ00fNTy zFzbm#F1J6#2L3cCfMuG=E9VL)RJw8F3PhTNNxaq%;8-n`aO&gm6z6cW$Khtq;e#fy z@RGur{qYB_q?&>_b6Scx`0_kt(13*YCV(8`Z!NS{h%;|!y=F@a$PF5(OPn!Xmu(cc zJ+8fp&B@ny+C*aa1pvuqugo(fCAwZee)mm2X7j8OKqvy?JrJ&I(Gr1kBqizB`vM3s zBO5O-dmYr}V_-HQaSBKzWUUzSTteF!99#D8e)7XVmt85rbNuGo52;*{>O|-KG{<~} zFGdPNuP*dCJW&EnbI1H{hUkgtlrCL9{gMBMwRzT6 zn2mpWM9ZjWU-+=o#}?bZ$YIxgZgPe&_DG)~$H(j+7yCqD!0^uLq_h-R|IVePblX-~ zpMbK%==XblW6D?HYEp1DQMj4}T+Q_z{*K;Ei0zGro-VCE9rWb|na*?x9~|;tUB-S! z0@|};Cb~T;<0_|TdKlW{RIX#m-^D6X$Y2@Eu9%z&@O75m3X8HLF}B;Ud2b?Kp7j-N z>!Qj!Yq0sw11uI#J)6b1Yb-n(&$xG`+85Ud5WCDB8us{~-LQ*EoImnR4xi9HKUUTn z##;4Jr@T9ivnpe~m1CP__-XbJ>FwrWkBHNuU556h!NSxoLnq9hjIwMK=}Zus4QTgc!QIJY$_6i$yituu z=PXOjr~*&R^pd^4LE`jN@b;B+fy0+vt2)v>d|c|BUxdZX^$b7VlL&Z3kDf>|U3n`X zI@hHUk0$R+mA(}zJK$ndNl84Ar3Rv_${U4YK1e3YZ3J5oh~wsCx8BOx2v4zwaVHhS*-D8%vo-s&QW_K zA??}Bw9MppzCK!F$)%F2?1ga}Q3G1t7NV|$9qIl)E)5XJJG~=C9+LY<728$1eGK9= z`^15TZ`|SOs8ubYVWS=H70KGub#WyvYdN+n*K03?#y2L0YbiMZy=OSihjX&VH^T2| zL0cSx-=7VBZxsB#JO{Q#(4r7D-|qHjy!ZV&oB345RXe-=S#M9PuhEX~ruF&m*oE6T z>-X}haS{41HH+2ghdZp+QkE^K99LMw;&CH@k&~)Ln=`ZWDO}A_kc%UUs=a@@6{j35kM1vQem4k(-7%W6Yun?`ba1g;l)Nr(}2rNV>&d?$N|HGD; zIP6N}AX~-2zK4i$SOU-Q42lrS{EzAsL7R<;ca&Yik70`|l^w#*i4|k8*NF)4(b`w? zgA1_1{d2fSjHK;Bf9tZwsQAG^@Amy8(pKD15_lfZfZGp+LiV9z&+)RgANqwN)kV%| zkHpW8y19b^XOLCRzZ?s->sEm$eq$O*!ejRqQ403Iu4XsI>O&%BGtjpmD#D^>pCKN5 zd|B*v@E=cKTeF9m-mtto>hdiWO&eqFH!K~6#P{R-m?zO z+|>&!-@}O3_lMw z@z$$B5 z`($)C*|)qk;$qdPOp{`$Qq@@L4-Trr@KX#&-3rUF2Zk?nrTVzZoOoUS-=#DTxp1=4 zN;N)`g&Yd|B`prQ+~YeejlAi|Gt`w&J2IFwlIJ~6zhM9ji!|S(aw$6_uurLd%1#V6 z+$f@1g?b7%2A%^?C8D1IT&XJ==w|?@`HIL4(uQmHQCT6{Q|1SI9hcJT7ql~Frb_)) zT&^H0=`u1&&{8nw(**2Tt&q-V>_yj#PRq;aEa@*!_9mB*Qlaewj(8a&}VN z3LL?9KY(7%M%*S}QD7K{fS_HAwvL*jiu89EZ0qn0TF^>JefTP+PnyzqkYI%x?%X$c)&X?LvU2^^br=*8-f ze&ekN*Ri|?Y7sBxlMpjS1Rmvuw6UZP`UV`OL+&{vj^wXPq@k}s`j*9UEnDj*>eV- z!2;|Hw>ranmnLEZ*@~F*4)XqlKX63w7H-M>AR7;&b5ZhzJ>-8sDGw&!b9td-& zVBpO@V`pnt^S5Ijw`CHP*Xl*YGNIUe3o@_{mB>Dv9U)=6TA6sjf>YsvP3}obE8Bh7 zTIfX2S~oi{K)qY{WUT!giD7Xc%cmf%RiJ_Ht4T0SfhD- z*(T>GyR=b*c52YNn~#4*)rkM~Ds;(rv!Q|E`Q_$-q3W_`f6;*2#z>nI2Vf;&;scAGZIMch~RdNZ2@ZMc0 z&&F#yfhd&eAO75T>tJDSPv+;go!@I$p#95xBOsN--1@4u|A=?@T$}%p^tksPtj{#s zs)X0G?sq=ARRiT&Za5Hr2H=aQ-uPBm*t@F1uf7J)9ST2pVuGC)2Ap$RGj!^pJ?g5l zD*qkMVOBGj_nZo8Q&@{H8=Q#pUn_NNpt=uF(N8GWQp?-JSrqHMnl1!u6mNx%j&B(c z(`>ec*3Pc@;S+7vL>#KA8Y?hE$5QI86<@|F>I9tdJd}fV!f^TxK!q!>M4ZqW?^Irn zIEx)Gok3ICGv8pd-ea@gVY31{)wZ|FyJ}n21~RF)VRrpe5&Dwo*3#En)j>m+K3=i= zb*-gH?rL;(&2r=O&5u;a&G;@_RX&CamLv*Tk~}?L?bjvdpSLoyl8m@j*sA^QeBICC z__@;Oj(ZZHEas*EovobkS;_0ORZqgA$>4?lJMLDAh{~2^TQH`ag6ZPJ$2aRi^x-aSJ_K zJm-`jOaONt5ntJwI%U0Ss%#g=E`8n(WMM&@gvm?u;LWV_A$H?E8s>59e^pwBah7o7 zLWe~2Yk zVl=H0ELSM+L?oZ$bH%v?%}uYWlpytB)~4ywX8}Mc(I>6oOPu_3F9JYQ--*;r%HQuiOgE4q7XBAY>OA1-XD!%U5uf*-x=)(k6coC3p)UxCHKrRBxL3zWF}+@+Wzc4T|h~<+PiQE zing(|K>kj1xP}rxo?X%aVH4i0HqX+@%ve54Ef13HDi0N0B)|WJtz>Nw-n{lQ`!7PQ zSe&fkQR8gMdB_KgB^AL!2(_$D6qh#${uy{$$-sXv?n$|4K!EQqJ(sFNX6>}pfvwUU z;XQMsr>P5WoCD+?hthFF%=p4{LC%hFj`r}Rp9lF}@b&|Amtl}5N=!Xxw9f~ZV67&x z?JKU*RlM7m9(XAXUlQg$6)afOn*a*l6R`mIsm>jaym z37?gbD~t+B>{*qh)pPKhC|%ofpf2f#ak))S)qoFF!Dq};1>>2j%s7$m^?vVax>w4c zS-My9UO@W#8|wPIJ?Sz!toq+gyD;J0yK$r-xMp(A% z>A5`gG4P~l!2DMuqEQ2N>y^e5>7^4=!u}JU#X(w~dx>&=l2|F9@medBIuA;4&V8Sr zEFX{5@jDbxm|24yUTmAi2XYPD>;t)k&Gn(9yYzl`{nMq_+12H_Ihy`q0V*TU=7Y=0 zth_AWxus_o5Fb*~kxm5UFc)1t+c&EOB|=-wM%8D=B|{%`HVeO{{46(5iu5sf3=c}U zp5D_Q_NB|b-NXHHquD%h4t*<0U@r55isuJ{Vhw_43fd>=f z#O&y;nt;2)?iM({5m8%rr~j3iEAoAE@}lyUK7}eZ13>+_n*%%uYCSHR-F+pvXii6{cs)=Av-z9&q zNO6X73QU9&C!NI(A|pE>BE>|=aneGqVzqwXGQEd*Z=+1a;^ zeF)$?c{ht4fG!HB-X1+l1z%^eG}b0=cT0stSt@U%bUs{OmzOWu9x0zRPhfAH7+z$v zPnLPv-Kbo(D>uBX#yb`UK59qh4cJX;GQe*R&lO@l@dd*KHI~qDS4TwYacVdMdjy~A z{VPy|V^0+}9C$rxx8%DKen5Gi*bKv0d;bud91{b=Ph^5e+m!Jkg1EbWKhv8F-?A}r zx!~;5E~aK029;Q-%U{1ZzN7xqs`1e{S^ae!gOX2ToHS*evpnd@onV}+r2#r{1|PUI zV{pog0GlX1@Wwpj595e0FV}M-gv|E!Ev^)k$I9B)+bkK-|#H- zPauO9;}DPGx1#AdWiSZf!-FTm1DA)F7?%U~potUo9!EHaJCwFyk6=JnD0Z({=+c5a z0C&uRU9$s2$-4y)&!r1^cL8ikR7^Y<{cPqAKGB#iGX0IAk-2F&Q^dHHxy?AWK!X!r z0vtRv!|8VnIC=#*VSdnwUIxw%0SBcswG8(04X>%M43F_G41A0Ze{k}NQ$N&RQ^8(K z_j?riIqSp`k&vSfJ14|%@ZNQ}T*l+{;*Ko0@;ToZ{6(h)V@zLgm8*K68a&2du2?2Q zJnHHYKJ|yoeGK@#!BWzSs~MzFbU%CPMEuJJPt`cbQweZ%}= z=f_@Rn#fb@WuoZkSxrzU^NrGBp#uT(G4pbzU4HU$#%o#=K=|96jWv?d^w}P8c)8EY zu6*v>)RSK?oSM!Fa;`PKwm%~lX_R^Ds<&!dYr6dv+zC!>&6Gwar*J%5ldARU>;&DW zK5v!X>((a~32qzDtl1)t3`N?tCEBxkp1{1cYU=b>3%Vly*|tBrL`z}EQqw|v!g|{(n%fGzJukNrGu}eAHEIumY zYLM?E?N~P?ROm)Q}R9P*8rM#x%tYH&!QFjT*8M{cd$F$osPLV{R zX}FW??&XzJO7?-f$-`Xqo8)L{eE7843MV3xWqRBDM%Y=7s5)=u15?410J}~z{(HGM zG%3dG`|AxUWj?yJL6nZSYM2u474WKZn(8eLdA&W&3cGk9VSO5!q&ux*%>h88B&MM= zZo7QeY%+w9U9IsyF>x8wO5PInFUF>;jld%cP|hNsEx+m;Gvq`^JBt>jeLv@QMNZ0z zoap?)d%f_x#iLWk&Y`mA0oTk@gkGCED_GbB2oAo_ibXl+{j=w3d^I9wF!gnvUgGbs zaxm9|8a>gF^PMKWxfW)ZK?In^J9hlhC4jR!xx;)Jzo5GQL8?G?m!z4oqeU0pv3xRmy_ zPjVwdCRghsJ2b@>ax!Z!yGp0NrZ<16Q0>jK2&h;zkW>To{lrqj?}Hx-@oOy=m0E$0 zBRracj_Hd~lS?^_2LflaUbt!Q9J9QXBlb)9tkCnd*u_6~G&y2BbTmcmZ(LISL-cI# z5#IP%1B{8L-~QaCoW4@IOR6*^6H)y?RDEM~CQaA%9VZjpwr$(ColI<_lT7TH*qYe3 zZDTUAow;J?&GYM9U;n9H)z#I#Yt^di?sMwwFJSvW!1V>r$O^G*gvfk%@%{%`$@u=2Yby0p5Uq^mbg88ac7NEsm~xW6WUrDPf8Bdb z@_$c~TRt7>UD85k_`eL_N^;o=<)YNEpc^OMRfc}yUT(V}-Bo30(OypnHQiO7U(w!& z56c&jF5KLkNa*S3!R(eZc%HW#N+C}15-qx6`mV7B6$eDqmvYh7WOtOcxt4NCG#xgHST0vq#mQL=E|N%{t|V^3wlYw)Uo@rdrCSDUY!uGp%V^o zod~XBcWWDb&ch7d6Xy){pA7O~1Rz8dDeuU*6G;~-@23mQy7=Ux&-W%~#0pWL5gYcO zp3w842Ydx~D012}a7RBbx-8_Ue<9i*K8a|coS%&vBk`o_9#Djn1f!fe@2`3s4#ID(C*4Atj2WBHvU}h3bNzVuEFdzot!mS z(ro|f;?a(2H({uw&lIS*n(|uLBfxNGU^J}DnF0U^S(6F-tprO1;CpFVHc8 zz53hAAdtpaW)X9*epVxLR7n5ptnDz{qu45)(a?RgwoB0-;zre4Uv+e=OXpsIh8b}I zSBYTcF`1Qw{8aQqI{YRpvagxY-N*n=tfmP?>VS?tbBS4m8I$LiY>RCjohO0TsM1j8 z8m$h#-B8C`U{yj+7-Bud8jjsy39#1w6<;4k-z?3QxZVMI}LJnI%-dthY_iIW>4gY(W~L$H3%M@tbu~HK^_7>1Zgwno$vNUqh`wc-WSX~sD4P) z=JY(6eo&?6wfhPeirH}vdj=PR*$DxW@T}AQ6%9D*F0@*qldRM=Lvk*hN5F8i4(zJ= zVH>Lao)trce!aLezb7Oes7M9BR+2LiTyHN=#P7}BeKczh{S(1=KX1_FEe0p5)tn&^ ztYi<{oGFl3Ys9aP?!%+%E8ei(-m1BSKg#)Dt69LCr+wshSR9DeKKc_fYhQRc^@+KT zQz*^>Bwa7~fqxPCiNwDT53FH+vU`qxMhk*^O`ZHPU-xQFfww#!luvG?kydA#4`PCN zY%R6VHZbXZEP@z*X91%SbdVqqF7lp+K=dLAa%QNJ2fucx{b`qncsl|fWbVRh6d?~v za^Vfcs~Hjws{~mY#N@@DgP3=uzTUZTuluT>w4M0_ap|JyRkKb2Nlq6=J+y5pzdb5< z>hQUwCnDc3MKhDV2prj1a|RdT5;WmagS|AJjP(ABq1t*rkbafy8<-t>j82+2);T(} ziTIwSy+W0#`X2FG_7ips#n$l35LXN3H>83OI6+T}skMwcbL~Q$PV~-tYSg|h3CLG8 zmkVVJXA&0{B&rI)nFhp4phWP4JZj&CLp8xXO5H`k1zL$>W@uajUWrmDVKIt%S7FaT zThV>bU{5Vu*&rDHON)VZK0-dqY1eg6%0Sj1MjL&wEwv4O6l z2J$_T=i}NgHKR9|cKGnXUvwlw8Es;&C^U>PtGnVO7wNsHZ~PIUL%|3op2HNB!w zhAymr$w;9XY1rUQrb=PiMDvWNN+~Cjvs}H7YZ-|2D1X<<;5RI)WxyhO!Rx;2=xv`b*ec~83Eywr_Km$#sy`kWk{RZg}c$Lqqc87;RSv+fSN z?9QvVAlp>xcA`YACV99h^suiO!J1yvC&L$3fA>WcdD!6Pi|DF}=F1n+yhzT|FQS`~ z9;aVCh2ZfQzIX;ezBfo$)9oFD7cZVXqrR}aJQvn?Z3DSa#I(iAwqJpW+KZnDBvTD}dMEr<;ExjEfi%r|itpr=2ZPm=~ z=5q zMHX+7J3K!H&y(tdJIZdy^Ya--$?79aJ;Td|uQ852BZRyRkV#C- zo#hGssOR^i@@-%|nGPiS@rT(|0&g-mq1>MOs3FbF^5I+6gi+k`AEB!8KzO@GZZpFN zew{qRk?@P0we)u|E=wSG`VXA__y>Z1BeJRf1FHS(6@Br?AKj6hKh*W~uYMOZA8>vR z@@rWEM6V6Zroh8Bz>|onJz(;nUik6HgKh9nt24zbQoNOLUwxG;#r^D=Gnw7Mcokx4 zgJbs0)j&oSv2~**Pg>lre@lJ(i#76&SqoxX!||T$1De6OQCQ_4J7-2e!WwHBXL5b? z{Et6|fnS{BL7tw%bnOsj)9(~A?{0fDv6PQSnJ>pe5?)F`Qo#o=W_LRo!cjKP?q&GP zG17p>70c9NMLnArht{D`{BnCz9o1@3bGx#c;nku}-YWywfnGhU7ZTUu%;3?6pHc%)EV6^4-m?@M|NH#Jd}SaX%|aewL??bwArpbC&1#HNqdm%K%3R zY*(j!v#S7u3BrqlkM?~RN@~9dSI4lIW2Od`&kf`;rvo9gBP%6+#dkNUjTv3lKlE&G z5%*R6j??J}kY#-Z(SwFU|^wN)fca$%9AfUHlE)X-uI{zKIFnOb43jKpVV`iOBK>!VfU z-%AsgX$#b=*Q$<*^$fzo8F^mLLPX_n^(9omTdM!X_-N$~NN=x~5fnhyWB=^f9ODqPr--Kh3UXakM!+1@$4w|VHfrTs_rLYVfyDt5BBZ3@yzJz!Hd@; zY6kG8N@g34mq16erVD_Bn5O$wj}P|uhnVdG9sM)B+pR=LDmgEhg@ujU*snwV?P;fk zxBLmlM>}soAb)>W;;)v#rq>uOmrB}?S05EU?B=XxCaeR-mqRi_ zD@XgbLbk-?wP~P#-9`M9ety;%hiRXd7j!|{y3zkk9-Y0ujz~kMM0v4L@o!>G7$dagZ~0Ud|Y?` zgr#8%X*_A}dW8vNf2i~LfqaLvFrD-nu${EK+(3@QrY`FK-XND@ZR~9ge`C<#urhY9 z#+wwVbC?(#FnkLDF%JV+pXvf`ryIraDNKePwx?RfuBQ*h{K-T*z80sT;!+?bSKHU) z6tUPVWy|`W9{NYdS zQ&1=!9AesBX+wJcxNaV9K7gBGRrV^kHU~GGHk;j$0LIDS6zB9{`?ub@AZC^Ag>>z` zcaE;@itESycl$2kxW{`Zhbiv+cljHs4* zskiH@BLsirzHGQ%_5$YF7{D6ZRn!ejfZ0N6@V4T}ey0;J*IHsW2V&Q5$4BaJryZpS zD{qzc7|hi{VAh1l9GHptSM==9a3l4(=OY#S2v7P(;f5NTH+GyfJ^atVryVkvnI&!D zcKC?RyJyG%X_h&Qe&-o87EcCpmOZmJqjKlj!;Mp**R&@1n0vbU-&<-sQtmd_>fkN^ z5wv&U>IUrWbw<|Cb8Jr5?(IRz3-NipHjfMQ@#H- zfL~KUxLJMhmYu(K^!AqjRpve{hbq^2y&WQv`R4gB2PxNDxH{sPSDC->7QA#5cNRX! zQ(J)9XMOWu*PTs(%wDSX(>!jCy`z5(an3HC74~ei4}LB(=dti(5)1K+-&N_3PrsY+ zS5!DoY@tW+VV@aXWb>%KiN=-8qE`AOb{aj^Gz zcYBhwGB0y7Z&%CO`wrL0JKQUKx6=A)26rZKBqkS>3RwH!U5X8dWJ?PoKLUT6F{Ih|J<0oLueZ8@b^ z0$#_({I!3d_hz`g0^8hb7Hizr9h55bJdYRSmH2rb0@lfu{oZV5`7RYp0}h*vvmeqH zXWUkR+q`=;>+Ts{C%2WqIrmJ~f+P9<+)91W4eZw5wea2BVM04%+pNN!SVm8ukIquf z1;pu{HYd_Y1+Y1A1$pVKq!hG)R$CQDtPRX-k6>3!#XAdqR*NjKzj&? zcQ&tjKpuMeXVN(G6d37)^C3v^Nfg{Boh5Bb?Vs%f{vn84IiNm8*%V#dA&~oY9n0iy zh5d5b{%eld@MMdm(QUGdJIg@|K z$Arm0+>iW?x#FO)t;7r?PX@{}OytKxV5IUeug%PGvWS_^fda zul!O~c=AeNpPF?=eCwRU6^?(@7X2jp{P0b++u7Eg`8Sc1mkmncx8@zB_MGu5Q8tP5 z*|GV`i7Wdh`aIhx-WqigM?N0TzGS%x{!8us+I8>s5dr`_tJI!>KLB8$7szoFzH0)q z&kIU-115WS-?Q8}5kET*Km40A;+-7$9*wIBpVo_?$IaLXnfdn*1E>Z; z6B<{oM6+5+&sB9s%+wKC_iF}zZMn>GhXhrq%S6gBkLKSG+c~67#g}$1_;k0ohdazh zr58aeYMBGJoIloMY!b2gr;)G76c!+hD`#mAq>6*M)R znp-u7tKRJFz-;toLnNvFr2ZQtCOXE!b$dah8EmCcnveLTg;sKo@n#?1fXw`M7hPUfSp)=oDgT^;_lZZ1^SU8*BLPf(f4>0m8NA zFH$YS*%A4F(5`EnQ{j(oJvO4g`-d+d&41<%!10WV%*RSV)mBIXQkGWo1!-@v^FUCP5{>PEk;346B?zQX$+Jaxjl zO1mPk#F@Dzfxm(^5yBrW2Gv=UH&5S59He3HlO}$B&u>*Y^{(R}OpY?TU|``?@EI_G znS2%hPj9W?f-7^|%j0tM`NqQXz=rNI81~!bB5Os-?ef|MBA_*z1HwDRvU*g;qjyT# zg=7Tx80~jw=SuN&f>v*0Dfn_L%ZAjEjZ^kT9}v!-%0}rJodlUscpR(b%|txnB_LS; zaW!b){^!lYPZ+=|l(7wC1Jk(ceRi%Gj3VDq$*E{pCuD_eMrA%msy^ltjkoR8peG+k z>OKZLWDzdn1zZhVCRzxlPieIh>w~RYn5<~UO}nofXenXY!BhW;2LBaNL!&b(Ay#8T zA$d+sUKAOd{kwGK`{OuRNqC)2ExF)t<4UIEEU5H3KVJD1?9Hb@JA}$zgP~F1`;Ja- zPH?*(|7FSbsfID5drRGChgA77blgqrhU{4-looS4f55mzVmSf=K1#!O`tW-fK|-O6 z96~$1x{A5`Uo$=&GUUH+S6y74vnIT_Q!8{~7YeYJrVsO{h&Gmpo6YI9JbpMs&Wu~Y z^nAIlM_LlPn{#Z(X;s&?1?Na#i=qzmv3jG}Jq-tAOBcaLT64O9NvzD68K3AaVY_gK zq7oN%Ja9!Yd##UOXy}=4GD5|R&2{c$&66HqU#PPMYYNxNYLqLoWFQr=)p%v%Q7f)s zJ*AA0-0!-XSxZHReKQo9dTA*QqVHfEp7v!tbsBC>-@q4b379k#h3-|iw-WLsusZAF$ZzTyVaqK z)2e@PDZVO&sFXKd&xfF$9vG3es7%a^e~XLPJ9Q|1c$`&iKO_4cV8JI*9Z<=cL9YMy z=q5U^%KXT6^fK6v?PRW8h(}W8nO{W)TcP1~s@994pR}|7@sr}uh zrTUr8eP2F~x}tHmzk1BmhWT3Q&xNxd1`o&Y{jMGY>1Rp{IoE$|AFa?KKCTFOmhhK0 zE|^Bm<5D&podbU8l&~3`cVKC(o{I4a65Rp!y9>}0{ zbzL~0Ayw?`D-5}*sdksd$1P1CbH^(b%LWn9@qO}*?w>Zf3e#w!Sabb7M!5IPOsI~r3RyVmifVv3ouP}bG6TkxhYUjbI$U6}|v zT5fy|sI7U^*Zk&*HUe;5SM3yuc5N%F)3yn$Qypy6ycbk#W8GBIv}_wEYYq*!)hB;M zU@_!5ybvqVPVj<&@u^`BHq%F@lSDvO&4Br(GEMV_m*4akL9s6^B zQpbYV%D!d-xP009xSd`%(ZrljaF<1Df~km1huL8JS5hLBCV~y$!x1{nw#srsr;;HH zb0uoQqXiu;wv@=G)LFw?%4{h*!BNgsYRM)VibwdZDU>sjS0Ah}&i5sfJQ~Mm3hG9? z{Uo}{sE4##mYO4rHGyV5zH z&1}uq>CxXV+wKKhFnJ$!>k$d%J$A`+V}!ZUf(98g1Ao~uVXA< zePw(43-;Ez$~+b@(yykJm*`I12hG2~1;?4hGg+|PQNt^h)D=Xgz9;a-<{H7PICDqP zGhvPUT4=JB0Ru6E&nCRTJaQM|<~@^OY8T;?{#*8O{#Q*!;8_}8kCdPVlXPGISJ38t zhjxw2P^M&#-34x6G9v8(DC08}=8g9<6%{4kOvC5Wp#2kWZ9radF4K+cz@CeQHTNCo zN^E`<%hTzuvANtNE}cn5+kCia=gLBW@YGQ&DR@dT3}DcrG-YA&E3Y!~=NtGodMlxG ziBFRDI(5y7rOCvF`yUPEF-NRwMPQ%a4VNrQ7UcUlMN51UWLip;sRo)XibTz568S^n ziBv}gD>#1Jgv_e^LD5TuebbN)*q|yj#;hveQ~3``X?hAsXF4L0s2ffR%o3cGG72QH zE65nO5TJU{NfRw!hP8}bc1Hl7e#=`HN*7bv?>odE=h~F+_eQh;Wv>E5j9D0MsZvGL z)|O^z3~((Y0g^g1CqZU=ui%&~J4Afs9>uTY|!m>}XK)Gn?V#!L%h0M@(noF~;6-sg`A;%nH zNCR0+kqsWTY?;z>E6)mJ>Wq1(h3ezMCPt^}S~(C=nk#kuXC?qL zAsNFu*0}Cwy%%e3;MLcU9J-0W<18ulm<5UjH2t~q+-K1Z4q3>qMbL+g1oVjQoXicx z4EuJ-61bv7ZzjqR9TF7e`odY}*NTdfJc}glIz+Ks>!b|*LRr0PL9Sf6dvy)L)!%AE ztq#U*d5o2)BaA8svLli$S#@2mX{)c?BBs54KJEV6vmU0kg{yW#jgVkauyRXIrU8?| z^jdA&8#gQB&#Tws&0;^UjWdz7D$h5|fK7tC5|N}>1@n3u^Dg7gh%j&~LIfwb*TKbF z#I==5)zfbY{ihHP3etz#LDzw!3T{6vEk8HU>ei2ssk`$E+OMX zoVwIgMsqArDe6y2#hpT`>|c?>fQ!G<<76V&`@zFpY{yKCP0wD+mBWiLUVir}yqAIh z8Jp(#gA@r?kJJ%7^88f}I-IVI#!PmvAq00rU~gK^p?844Hu!3S2Y0{W?Ssc%IVGq( z)Q^$|LH}ESZdt)WHc3<^6cvy_YpPNC99^*twu;4^G$I8(Gy%SmX`iSECzjqOaL`J! z(%ejHdM@q2$&(jQ2^-He=dW$s=X1O{UIuk7Vol+jD-PE27zkCc6CPTOXhj=sZta1MCz!0AR^O#}M^oK7J zc21fnJfE(MP`omOXfMP!YH-8dMS#Q%sw|*NlXl9=Z3(*nx3nKi^ITInALHux$oMMI zKX0zl#BSl@AN|9sWXNCfhZ4Vy)?k)T7q;S8TFs?QhZHXg~ZmBHl(8@8!V- z3BZl?ClB)qRUkP2@;qj9w1~e7!kNW3D4A>=u5BahUU`A zb|~(>Y6f1=PI;F@3fsN}anbCB?)xFGwtt$xRZG8rcnp`N57Yq23{sB&{jTf4jz_6u z6-QZ%JwEh##1TAR)fAi&X&t!C@OC7bBCx2IcuGwdd=!PxRt!>OPFRJow`%1I*w_Wb zZRlzE88aoZ-?n^T>lZzCZkQ*>^DU3T*-$iCRIIh4=G`_>k z>F|SZ5;RSid%31b-L|QlM+eTOM}T3UFagR zqO;z;{&uCZ9j%@?epEYU4f?MmOLCW}I>ujoWk(aviKwR})fq4@>$BGpM2q;7 zz6N!z0q2Yg()~meClliP2fUaiFYYd?~Q)aUYC6v^(!1LC6 zK;zLJ;5pZ3i!%Ksn$#A1!ojmaV5+-0JY-BbI0+^YG!54>I|FIw@N*t~Qf{;|+^~i? z3A2TjFU8~WoaR3wBPB`pMNygR7Mt5<)MYJ1ua?I81;3MUCg0t)9!a5xc>N|Bf_;mm z)XVS{!1~Tn71O^edEUno3ysdCUA;MTX@V|ZDM}iOf%@U+ssE!AmCL$1-V4YiuJh0E zz_7Ok1z$&*_T<5q3pO^TZ0itfkDrY|qsxL77ZIY=Wj?FEl`Wes9b6bhZg!~7L!I72 zsrTW?Q6mik{K&7 z&7d{bIw!iD=+%hZQ9^C* z9#W&F43~hw?^+R7u^i? z70gmtbO_j+0?G=~QSmr`992r4GRkr$PXCQ}cCI2aVQ-G9cb?F*UWJ33r*l)V2h{1& zshUjZbnrXPA!8&NEC)wk5DFV3SkmPRRuYh;ABU}``3<#AW1ekcN)q>9#ZFihOy?i- zFXDVjSBxn=F<2ul`;Y`(FmlW5D}e(AmD0cB%U3~eB3QnLuhXF;TLr~y+R{I*A?bcU z5VKj3~}V@LUnaPUlZptC;;_FzJkzX z8pv3({h|ev%-&kQw=%}5DV(9xNM1=E;#WsY^zoJ~y@U0e3-g#8Gd`%%KrqEeIiH?L z!RWlAhA%7ZscA}V_y>)PmR)V>ULL%){%HeS3R~xX<+6wqQIcvT;W?}sUus=0*IqVt zWTKoHv>Nszac-=whXVK3dcCjY_<%B6j&Vvcw{DlysGk>bPawye?wEHZim19 zMZqHzwIjHdV&XaW0jEBB1%cVzohpW|98&7!dw^?WaSqcIkyd0I2CD)u}i0CfE%6%Ow;hGs{Z z`PrY+G@$&+-YFe7!uggah)Re@F3Tl+T=CuZyc!G;vNSse2Qdaq4P?3VE!uEI9Fj;ZmUu`CbyK>j3qY+9Bp`j8H*R)6`d%C~&oUe@SQ*U-{! z(bmOn@l^Fj?a7gK+EE@4Qs3xa%8;y`c~|T*yzM98IikoVazE>L<_NHVJg3|aJJmDV zgZlAb11H`njetX}1i^WT>d@9`9TO4hu7o)vq^rp3B&4i8D)7wmxagqDMyQl%9uG#o z%PWcDHY0U>e5C|>FHZB-$ofoDlzRtso1tBu>V8hI+eCNJ$GigCfz8}S#RaWG9pz6& zrccq*g=J+iVd}%ksDq1YTuM@nXE=u0Th$%i4VF6-8Mcn=m{Gag?nVQ<+8VHa`-P=1 z433NE3j6h{z!Z{v8lzIE1p-%siM(+Csa%R}RhN#fZbL=`li1Bmn28F6Dr0POGFq~$ zeLc>Zisyk@#HxQLDr&WkYxPiUvD&(0=m~loQbHFEbn*ul3@H^je3!;?1Il=}@{Sja zMPk_m)IF*YgVfURbe}m2f*}w*@3`VMh9pPu_7j{aAWswF5F@tijv4eX_g_Bwu~ZCT*2)e( zJTN)yINS5S%**|0%($2<2q@rHq<)nAJLtcA0e7b${Q+-U$a!gm+`R7fM6yx!%S)b# zM!8G;NF-U}zw?!r7Cj3ja?>L(7@nB+>7?5`aW1owTi@WJak09@*q^B)pn2mqUZmw< zBFHK5mB*GpNr{lks|&agriXekmbdlx`r#5>F-jp$P>Bi!=qGr;EyESb9My&6NT<1J z0?UM6%1m!<-|abm^J)f6i-vN-^k>o+q-d$xRYF#lNvN<(s`!>Dv>|wtxo8$CoQ zteHWRHo>&M3~zA%%0L3mHT|>zxdnFDl*T@iz%a<2@2jjWBUBzG@+5Ao_9W}7TFNz> zr`uqF%f=-fpJQ%S7&b!GwN(h}t3F7i0HQNe19(~jiSE%tt}L5$I$~hZ_lwrfqCrgb zFI1~gS8Ro7lu|56_Lg$c?UdU6>&ESQhVSn*iWY&y0ou(cSR4(!wrEN4Jt4+3q~v36 zJp`bttKx_Z?7f2Iq`c3VyfN9Eqy^HMViQpLr#ASO@MKF35&s%BL^O;H#)Q@j!2TPV zb)cc3ENFpJv`CCBBR)Oao9>5Myg4$TF`e6&FPSJSE~LQ9^kJm(p&G(Z_o+gNyx&o% zxIwIi^cY0T2nbSsh9ZEHKtG00Fk*SZk2Pnm!x2 zw^A2(%+@Qh9g`Tc#grjoPD`qmH+6s~`n5o?CzB_E6_s0yAi! zmm@TozgxlYBC3csvLGxSYJFItC7u@7HH>5ljW@?&5Npjim;nEZAIL!q$cNxc{-&CA zZe|@Eri|QLvSO6nc5)e56vS?$Ff#1XWO$iQaL2Y6XKg88d`gMwwO;7*_fHoQ%mpRg zBh*R-CkO#`=>LW@ppl?Z5$DAijWXhTDv1_wX}iw+!VLUzvSYWPL9m5o9jZvPEM9CxGuCJ}E3n z(`Kfm?IS8aFW-!x&|6(*=*M0k>SE;aswx2utW)5nL{~w!T0(`!7~J= zZINeFy?Rt2{O+HQb^upU-pu?x2QN~%lV_2-uW6!idT zx;u8XH!I9dG7x&)jHKNMjFZR{j@;O2J-LI*!KGg!4hERN z5((=ag_?y%wC%oY&W}be@_e^(c!5FHRFtlC=E>i$qT9pf(g1up<6Yo~lsX>zZ7~YO zRS34~PpM9Jz*{oUU&}qn_*E* zwooTWNruKNlC=Lfb(RF^fM*QBn5r%-51)Km1K05S2h!Jlxaibj!Kf&+@1Q0n+!lDE zART##aWpjLxuSzox0vg0IA{~e)=Ffls!z;rAWu(H+kk#z6{E{;LkTS*q2`gQ2+~SiJq6dOc9hInADojm1kXHa(*7*(mpMry!>9$oraA3-6Vw1W2Am#tS^b zWkU28SO~2$b~@a~in$PL&ovkS<9WD%iV|EdpQnPb;$6nbhGNhDkgMq694W02S5{h1 zLDst68x}W!#)b&ABaixHV;oHh=r!GkdRgqkP9_(zOrGG|rs9na@xT)Vbd)8qOB}+- z$plc6{pN96_)p7glTSMq-r>i88@Qxlujaw4&K8?dO$1)Mn^rS2>us0E;T#u(p9twxkKK+lYI{hxoK zJul7^&YXB1_uk@MMggk=hWJ2r@1c-_Smql>m4%GEs~efJ;_vkRo!S0rgWQRNbhk4N ze09^|YhEuj7_zC4iP)Z<2T2&y2K${JN%OMp#=-4OFEg}BKamcqvH-G_#8TM%T+waQ z8FTY`is2*(xB^9~A@<2V8A<4Y)0TM%I2@GyL)ZSnmyvD1K<%t|e*- z&%kfv!-x+aF+;SDXej?=m`Sobs)%g&V?IcW&}ywaJ}mkH#(TIoW#^ad^&^31i@LbW zcRxlJ7cn<+(owo!mmlYdLI(+Zj%`3j;oSVBfxQl*adyF+rsd;i|4uB55A~CDJ_Iv z>pliml1v+E#%8E3sQG!O~rQoeDYb_026wIw6=cOxv9@YmGEELM@Q z2M5G&;Ma+B_7Km`Lyb?RyK*~oF#k02wuQ_GR$SMwUbY>RZ^B|-p3^1I*GsV?J<~Ex8SrVO?HAQpsYZ2M?sE^bP0s@N*U$nIlltCO`)$cBud1fb z8zv7p?5s_}#=n)Tuf;~4hBof1AtcSd#oII&+6wJd+sXDV*Y;=cj)zKyU3z|u0`fPt z!zwTdRv^!ijT+}sa3cq}$%v4D9q2&bYuI0H3T;{AljLt9nDCnmL|e^Lh|2k#K977U zT;o`|Is8kYE_2j`zaBcN0{SVQhDKgjSDg5;OMXxSs)7PuS(i))!x#L1;7gaC^X0PZ zj^**z-ByjG+|qM0v<}3xt`1(>X>tk%OfjIRUfS6VuMtJ%*D8M#Xnfhe6xCR^mBqZt@rx?~A|uyesN zU+*Ru?HF!cS>IjE#Jg&R<5e0}4uWQCkDbL}$E*B?U~RTs8QUb$;&Ie2`5EAX7a+rk-Aw_bBJ?Z%~7PzoUxJJdZ!Px`Th5D3*)|_ z!C}Z{oOW?cc{(cJbl&F@pox*_zHEdx|EWH~9HD*rNcROB6HEvLQw#jK&#PF~q1a#I z7YsKMzNtY<)b2DY5nj7b@>MFo?tN9VtxF!Yi*h^8T_uH6gd? zODHIhQj2kIz{Vez?l~tW%49PwCo6RvYs?%P)aTvP1^z5TOPm+P$*8nz37qaOV;!q!|7lsUpnXFN z2cG-ftjz8v|65(`MGQ^+APhN}C4Pb(wTt09SVag44Q)LFl0L*?GrMM^L-TA`l(GML zw#H?)jL7Fm1GzbV!^snQ6A!oDev1LIZE1c65mqdp(T zzsbK!kJKLyL?Cvb%P6SOutPR;n0Q=#`HxUcr1(PJYPb1QNVzx>-=_JX*JyR9_*JZF zChtvMQzcihf7b{xS^R*nzp|Lui1DE2xqe&`gY4@B7fA4~hDX7WN{#JClR6 z9(G|H$F@$iJ1zA-GuMc+TNyB_cev9xQHrjz>Ds$xuK|C_mHPdc=TD~x1Gy^VL(kp+ z_R9*#7ZdT77VN*#6EiMn5jyxZ{te9*05h5vSoS*6pM?c+x{raK3>Lr=M^s+FIHQ4w zLpCr(0Z0f#aR{LS@@f>&yq(yUsUy-9YPa&aCr&nB-w$ReD8hnOr)HTy2xMTUuPD%E zPbowp_9w+vdM>x8moMbY*py)+e<@!67l0U0U&SHy)sG}7LRPvgQ|x7gg&RDHQ7Z3h z)o~Skzx=uhPzVZ(q-brY@oHgT>hak%AM`i*fl=K2qq1bO*JdeXHq{DEj8i+*!crN{vkw8Xja1(6JX{m#v93xivBW!7m(RK>Urp#+G z6tEy(C@9V_8EH$@3$}|{l950tH)J_2!p{y-1gwZDs$XC%_uvRgLiu&6p%#^f?dH{g zCR-$7WHi|52(*buYr4TnNW9RR^w3FdfU@oOTcLOtu>V}JNDclETtK704^SYUREa4` zt3yDxQ#5wUX0M&BU>5A&8T~}4nt?nQSKkyHu@s+lwz6d*4U2GhkLvx7=A*Nug99?j?%AgGYmss|883Q8&k z2;RuBQz_P}Hwxhj%B%EbzJ_SEc>Nn(@A?q}`^D`;K(y0dJwQ;)sK91rKO|w0=+t0t ziaBn2;~PhnyfX|!^{C?52w`Wr9ZXUo#;Jc2BHdp5_O;Gl2;Hu^htpeFN%3wMUi4oL|3#3kkJ?e7y}Vd!y17Kg^+yt zJkAzFEdt~V84z0~$f_;4j*Eyl+=Vb8I~ZKGJ4s5VdM(%t9R=G%K$ReupoP`Ag#drz z76OP{2q4`;KyeEJq+19e+d`neEfI>UrU2b4(Q|RGs`00pah@uq;XPPnTFqFLS`a2O z&hKagMA?)1U9UlA=^orwU9k`eFdNlB;NRKkH=6DJ2)k3z-OeOBrZqm*Yq@_Iq}UF|Q2~oYwNctH-@bBZukWX6Of(C1Qb&!- zoq`6%9bDC-FuZF`Ej<@HXtv9o=b9`9gaRzVNLz);UylC!wYwDbh=5f84^y#%?MKeA z!Px@3TYz8-sg?RPDrz{f04mw-YQUKpN$NRN2{k#A5CvUB)POx17$Fs*DN=uf7#XP= zU}^A?K2dC&F z(TxF7@*IL&q-vjVrrr|OiAsM^L?_-}ty}4|pjJuBEGnx{7Im9PH5Uc1><}=h^80G0zzioA{(a3iALTNZ-ji^V)@_zx9yst63~A6#JuU0U9RqGm zGa6_-B6CjeptuaU=8$*9DRR@@}VE5`^ zZ4X;t-4=lq*gr6QusMhPX_%L%bzGLkazt`@W5tXUXF+h5+f8Wd5ZkWo5CMN~6z}G+ zPT{~G+G`bt#?OdOl#QIl^2B|r7>s3}&BBbbpmORT_42G~6l}36R4I*v6vfb{krAmA z&+-R5S%*) z7y&d`hp7b%&;e}e0V4PRu|!yT9`CgM+ai#{nI;G;dp=4zKn=(WLCuz=(|QvCG@&fU zYb`Tv*yns!Q@Njd)ij#nMOBnDi-C_eNf)6gPO#XTF`gT>UF?5^z8PC$`b1Ud^>mE} zXiCU~#X6SKW`j$;L)Ex(YFLj$#j20Th=8muS0}2x#bDl6`R2j9=x;lSG<<+d@(O3X z0{h~)!8Jz#iKLtrz`%pj+ER*E|2ri_=}vdL-t`#IDhQ?~9S|Za@lSX^=rkF-Ng%aGr zWDxLR2m=q+kqqRy{0icMh$9}yfWp>VQo1r4CyH~%C3l`-$1yqwvFoLJ6+tYX4YjeT zS4yi{NNsqcHiWb)U;&~kSb#)Im|`e&3%plPA+)WeAg=#eD3uo5vZ#`2&S=i)!Xa{o zINhw#u)u%HLHM9uXeH|i4Vm@I9bq28LKgvCc13m(x`&B`b441q=2o61v^!jsc19Ku zYbm<1UJf~+6(xf~x``9tEjCICcdi-_>5xU?uqs%m3)tYbtSknf4mtS(PLom%9nfjB zub$5HVme)94J{-u4hLi{G!^3ync2ALxasYKDK39)-u75#Yb_Mk?2T{=wqi+vl!vbv z#Ow)nBD#$LQ^ydq(Ipr61aPeL9Yoa?yCKe=;9{R=Q4C|uo(#;Rl@mx5r*g=EtP4-M zJlOHDs#UIRi+6I$;h-bJ_6!)kHNBrWopeebXQKhkRV*VyC_t!U362^N(Vc@!c&p9o zWXXRZx**AE8;W%5ts4{RB}~ zfya`e=0PfJX$<=x<&cS>Zc&CmRhtDteX2aiXa0bq1Q*VEkl6$HANK^`c;!x~+TNqfsgk?*0z!#h@ zP93eOCEL`QHVd;lmV(}mr8b3iV4_Jud1)bmiUxx!DB}Ax2gNoGk85_Qr&L>2k}mF^ zij*J}g!LMJND`-|WFc@_wKq`qVkpZ+mw7kTw??tkqCC*w1@708M^YMOy4e13$JBp8 zK7$lmE##97BwRs2-RVPc0R)x3T4QWirc^XFN z;i|S<1BKkmspwNg!B?i-*Xsh^<@MT68MNXVsFQmN)b`2=17azqp$f)BlG?#4n>++= zB1JMM*R2(I&L|VeIZ+5K$7#%lxZVKF4y`dcH2HyfC;YNRj+Pt%X z>{fIn+_5Br(O^nOcWE}^2?8q|+>(RS-)oj?Q2cqfA>k9W~c(HbAF z&KZQI3I=yJDLevGUN5wir~|SG=s@R5aiH^q8AfMXV1dAD*Xlt{mI;63NoKBuR|Ii5 zAVR{Kg`oE%0M*~0aAm@4Ta&O`+pNESvUz7?^!kmRlM~Bhcpdu~3)8=|tvrc`KaQ`v zDdQ9*)`{6rwK!{4vQq;^Tcm#zoVYUPfZS)1sd6}iT6MPv_2~8iu?tU690vmglL3-% zmI4U(ArOh|8)?v+s8N3^Bed9v(z71-g;Jr_MS;qejfhhm>{TlDILVfnzPbhS9>LS< zMXe-mc4}Qu=?bkpDrClJQ6Yu6z|l{=(8#tWg1dPOLX&+a0*Hk8 z@&s5)UR@>{p60PjaK%J{A?-^-sypGQk$7oaB9a%avJL~b@o;~dv*U>%D`SIN6(w%h z+ixX2GBjOTgkp2UowFD(Tr#KMEa)AVtjX2iiDe`5Q~1mI{D^Fd*z>G<%2=P)URL{L z+alyzS7t**__0C=i=PjMacT*%cBcrUJtIP}92KO(xnO*wDx0#J>6OyeSk_l+k>0%0gJsjEBx7h{GlQlQKy>oj7ubVX-eLBR@@7Po zw@0WgKmiJ_<_ewgS65bFM>%rcuG88E%W}D7S@o7X)?v9bbh&}pd`T^O;#+88@ zDI{%Vwda4*oN{RQ(BHvf7-N;zLAX82El%M{uTRg|zC9l5?UaJB^AzsT^Gr}T`Oftq z3mj~7V+c`g^}mA*L2yTO5uJAX5TJJ;eMg}Jw)11MsW5hF7t3UAP3Wm!L##F-g@DJO zzWkg8XBN-!)8kON^H2xD$&Ad_{jq@#ZV^H>=6y(=Fw=snl*(}JN zRm!BHBjZaPo+N>@zA3Bn~pv7c-&yK?F!OgGAS!%A`;ZS0`f2Vv@N#+h&tfIgaX+j!;~WigJR? zfcSqQ9Ym_mFR`ml>KK>>3-~mObu&}hq|j;}>SdH-&V{|K((K!Dv?l{QF?vX^yaU8v zb$g6g+##ShEWk1qE2fHcABZrRv8ST9vGYCDnyiZn&6D7xDKtVAePQVTU zq{78-2r`1rg5dONS##x0!&&a|8vt26KX=TOHgxK`SBk3tnWdt4R^NXTlbj3Hzlq@dGf^Q6P<~8$br`po*2u@9!N)^ka(%RUhAOlLIqC z)I+8V14KiorJJpgMB$iPI>bZ5UZK^zh9;j%lzVT3 zU#*IP43PVEAi@b6Wm}hJEg65jG6*bME8<2&M~urjLnjV}Y21B{DX$P%*YAh{#|Uv0 zwxFiu&*Fiw>*P}<5E{g!H1fqgP}|Wk7C^m=G61e##r)!6v64hYpchaluZOYvv}nMJ zv~QfIRPoj%4qz8%(Aaq%n00;D`0%!2AF_7wJ`&$^^o3>@JquwKO>^yQny{#V4&Pht? zmAp{SdWX-x!p~Y&0Z5_+PokW7>0sW#ZD$cjYJL(|V%1XtOC*+i(qu0ul=})_Thzid zC|yd#{(!5{4Wd?V5SvU*U!rd3{?(XioaM@?SlPmANz@UGA&$~yioqMiJO3q^m z;S$Nh%-BUL&WhuFN-AaCQYN;MMGDlXy^(7Tn$*pb%%gudRETH7S*IbX|x{@$PCW2`80# z_}HCBj?rj+)7)=~+%uj#wJ${o~Ic zhnU?X&2Dcg9QUWZteN(xrh7BfJ(npjQ34o1`yPLzKE$XmDY_RF)vtRo(Y=%yE!nx3 z5u;ZD`IKPv0%HH=!}wn`ZHY+(3SVDLboVxAKnvbsEfM$bO!<7w>J zx!QlhapoqWo-gdr3ca`1yjRxj`)dBnYW|yQ+IpM#1+~}VVlY~3;fp#>^px2{>Ay=zI=F1e!%Vc@KU_H)9x;_yIbsf zeLcFj?p;{VQOsWd^san**F5d6Pqfuz?-J_mLA@`?RgS2i(_Ss@-d*}#yX5^kNAl%@ zdvtCJ;I4+zhea@qrbcL!-eCfcM5q^?FZh?7$gr5+DnhBNQ5)~BP_*{O`#tuksFZ&= zIs#)auLL(z;#W}y-9b@$Kuf=M!qX;PN3>&x{@n{UG44FF9@+Iy%X(*HanQ7Xywn~l z^^THy2S|A=GdPXOgN1seFgi@gV}yFx%$+i0ff=4F^N;IzM{?Y$7yqz}o^g>QBk1}4 z(;0dwqkk47I`I%5jtEfl?J)@d>_dOJ&1<(XgZ;qN1@_q5dVE>kUx`evJ%+1|{UJtw z$)>+lqf0b)PHE$|^G7>tQ9D(nNNJ0~!dy6aF!t9|qMuB;1@o=HrLljNHT>NY zwMyWMGztKXbxgFeyT$xTc?*o-i0<8~3XlIiw7A2k}R1E{F#T)n6}(NEL)y zU6*v1D>T0T53Q`=M@910DjLh1n>88q6g3POHh*(Pf9oT^c0&Ht_Zo%({IL_{fyzc( z3op`X@b^R*{EdzNlt?9ClPrHlzu(dSc@_EnmHrQ;NcBKj82L4p>_%bD@W)^H8z%g< zmb^se{fdeE4U_&avuxaWL(`3&hU%;VA6a%k`y#D8EM>#!&z!hlK9OH^kw=3zq<+B* zf19LWqMvlZxfKl5)}>g{5kpPc9O@uG7*If|HB=Mmd9`#?Bmy+$()y;n@Q1v~*oR|7`;#cyg{7MsOkz?0Oz;yiH9Rs13xRzh$chrf zpHGo02kTPZphh87b5rbS}Qq`S|NtQV3L%2ZmZV+ zi6zVBYDI`aG)Aa8oQK3?C>l^p!Dyi5_*`1AN<&*IhhZj&o7{hk359rK%SEn>UA`X- z0Ua)@Q(XM4lu6{xIO{;xeFQ;Uj0>z5L$E%^sc=Xa5Z8%QXNYSe+ z$E9g=tIPo+vBH|C7;d#C8M2qrns+A1eXgUf$lx>}Y_?I&Au<>e7!>5Ni{ zY`*Hi<@AHZ-j`rzwqJH^pLXsg#e!=A*M3q zvRx{JgV?x^~$<@;a z9)}I(02Y5+#&jN=$$?BEM@Rl;n@m>tBJ8^oATGGYni%6+|3 zh6BB|PG{oPiykQuV=$|620pS(;wnp$ldLJFGN*sht|;Z2vUQ*>smSXYGKSd77nAg2 znUnVf!=BT%91Q{;64;I^t#h0vtJe_?!EFp;;n-6ib3$N_Ei;}{&EeV<>YGrO&K;yW zIvYoEON)*cEl}zLjiu^ZXLb;=UM)%Yk9L|73i1GMbbcS6!%+2^SkHfn zxC@nPNWk*oEkX)L?LL89C?1Z*1?JZgu-TZ&6%(YjfRwE!eaa2G3?oQV2g|3ElgUs< zT4H$jFrb`(c4sp4(6j~;QHk(45OQFrD&=yi?iz&1q-=%6r_monpnN;d*Ds?WE zI-g2iNTn{OQq$ABoSuv6bn;9(c{YEYJeN+MPbUX?LEWg&%`V1Ci<#*JDMe~=K2BPK zIVDJ$Bq_z?Vv@9!AT3NMNi#`OCP|u2lID}7g(N8`Iqsx-xbCES6z&<+u~F(1Z;Bo~ zTNaBBs^nI_e$!2#f>VR_g;4isn(VJcg+Z2ad>glarqPT4&%?o zTa>$x4%_qu?cRx{l**n*th77i<~ir)R*Ro-=f<8(5VJ#cQ^XOt58>Er0m|(W7f^o9 zi=yOdO@F7}&-}VWxcg%<{&;`ALwz?lf-GjYHXMmtB`(KVzj(3R;>BO^6rlStj(|-V zhv+7f#dS}?5oG(sVca!w=q-aZa4W>ixO3`0kR!O=6fgh2u{!PA-+fO~Pz>uOXIGqx zg_tLi&FK_`hexX?ip82ZNI|LG1WVPj_f5RQLqJI0M!)86tw(}uTXKIT*Lu`*u4S!~ zCrUTPKFZDLw!Sf8=48opM-w3Ic*lucm&&8VOfi(j8sohv^xH4MK$;|T~ z#T6~<{zHk)tsp)wt0I2~(%#6P2YEOS4Ii3jSISH-I5&Ln>w)`87&NGy}HVe_w(3jLvdmPd%tmp*f;MrkX}utQ@)(*r=Tha zNTLPi2-RB#(Xc(bDL}XN+xN+{M5OYFIQ&)%rK~h5A&RrVF$#aoqjGaUF=`=9fF&o0 z{w|m!Xcm>8o=VMAIy1^6d3wdk>Q{f^o2)_+rBu0PDvz0v0)wIxr3L$l&Uwl;I#ugd z&gs-WR3@`@>ykNiorM;XSf?Eck;syiN5Sfp{CIR!Ef0St#025_Qv5q9<-AtE9w@DkP$!_{JD%s)QwbUZ9AmFm_#@gub0M zM#o62=yQYQffMQX#wW^!9Pc!d$I*|bAvzu_+gi?kdG>#a4K;7fY@soQYAsuPqiDPc zpBiR$wN{B(N{*WFgBE2Q6REp5Q~23e4DiligFRE;owQ^BUEQk8?tQBFz) zOYd*-r84^j{Xvy@t#b0NR6|;+tfK*xRKK#vLXWqXAvrEhb4PVi=>$2H)+(s7Ng|a; zTXEVW8mNDdQY-@%5qF&LS`QUcLZTr0y=3l|I84&lQ=uZwVXEzC6KXH>kd!DW$hJNF zZZE`zWJVW~qRk2$zTW&}DJ6)~szgNOKswy0))sAsJ(5Vc9Ah*f$5XUM=v~ctrd(6( zg`)=zxfSfflW|04Qx7)E0ncdR8B&$abRn)zJ0XA9IG@8O8JnO zuW&W6rctB@lh#m5hgE<Z#V>Kz znPeoL4lC48w3D_hNsUEZGPvmxohD!k2IQ+;=kxB7Q_fJ_GIG{(C`I>!YAU&=2ckK? zbwp`;iUo(0U5I(2RGcQ&!qSMTx9W|zYCM0$Lo8}{?O23F&I7qWp#&-^Iy1~lrDQv+ z*er5d5la_49Y-T3$BX-N{c|P#n51!G!)!So$?xXr8!R>iK{~7D>;@85qg+4EK2!DL zXJ4N*S6V`c(P=PCRXp+&qb4&Soma3_#Z>_@suKEDJjhdioyQ$?pjlld)z0O4X*GXR zPQ+MUtK_n4_L^UzyUZZEW_IJ12J534!;K1NI zP?K-rv|(v~XLq~NYj@1`uC=|5?+s4Yv8-L6HYaY5A@fbk(3vx%!z;F<}xzUkQVj3)c?+?gA2|%&H(ionnO7&_3rfQ zDj=_Xl1c&UZeOcZ+&|oFcEr}MSG&QrX zKKxd9OmBA&y3e=w@7nD2YP;Ka?t&z6zj-$_rBKlB9q+Jv$F6DbH+$_n;1o8r+^P4P z-QISi3$Hb}%-q84!t(NLVYWC^$j%j)3k$iWm8Hep;&O3mWifxhP?(;<4$^dCKC`ee zvphdt%;xg5OLO!2`K9H>>|DXjtt?=Km|tF)hu@Xl^7Kk^c`moGu(Xt2Twcj!XI8RH zh1rE-er|SUX+@%0&MnMmmhy9ROId_umS&b_(9z6h^YaUZ?EK;)BF;`1@=MEwY<_8W zaXL4jU&?0ki?e^l>0DuDCQ~d-7iKg0;{4L=^n78_EYHo%W|o(8%Z0@p1m|X#^Go^s z!u-ngQf7KCyRuxse=AG*<>|RXF_WL4&u3@n=QGRMB7_&Q@w>dTurj@{Fgr85Qk=~% z&d=gV=kk0mvoM>TU0Kd#maXc0LCj{0)5U-J`K1CBm(S0e?9BAs@?2qg zdUj@RaeA(pnad+1OA9Ltvx^Jah3Vx*2(Qdc=W>fnOURF;Ft-HhOd+40UYa)fA|fbG z&&`9L$!4-kS;!Y=vYDC8^z!^dadEDQz%!X*ab<3PWwEeQoXKaQ5G>6u%+D9*%nIU| zL8;}ZbD4k4$~<^8P|MQNTrpc*&gBcmx%}+H;@q@+Q5Z-T!pNb7GIP0^xm>|iU`2Q9 z?Dm=_s-h=OwOdVe)usTn*JP8e70}gTr3Bo3Yxm$}yV2RvfTUr!J~o?s&ApRNsWH;& zn`+~(UU2_VbgkXkIZM%e``{jDDS8J~NvV0=tuB9Bu2!Slv+2KiqjlIc#k)7R4|`3i zy6cVo-GjqcgOzf-y|>pu;{>nWhBShW4ysz^pt-+Ql8PlB7`pU8Y;Z7GQHL}<1HzSd zgo1ziASB)XtRLy|kW71Dq0aj%ff-5lOladf*rr3!#1;jeTn&i&%L z$0}bX5Fpv+I<2T2H;smgaq$*9fsPv*^TxwTp0PS=7@6)-LC56Lnw)%`Rw-8kQb9w4 zU2*(_>3ZDmIm48FEmjUqO-KwA#IUV^y-J&8>Er0+gfx4br{Ea4NLm%mYpwMX?__`E z8Z5?g35Cij+)~*ler3Iynr1zl>IgiL>To@U>Ie+cm9ASdVvLSsuLw9gmb_A}hQ~rz zxtipN-Wm)~s`@-{HIBsWrd=NML+2t^l0eHQ&c|To5}pdV&^*o>>da;uXXPLHO066H zN3tM6tvI8#7id!z6pDCdp+AVHCsBV{qfew3Gf#2`IFE7$6tBsORy9NYg=9P^Fo2^P zbIG@>poN=D?Jh(|X&qnMg+ka;QzBQqCARwXCmzYx7_}wjl^-1R*&vJUicDcykG#O# zV>i+SSFIZ3HKtJHF@xe}f1%Y{dXnQ*?5ZTUWv!@qWJ(5+*{L|X3n!H$ciVrnYoZ6q zbfp~S&G(gC%i{keB~#{tO+2@;)nuF3I9;0;4Kr0Fw6}7FRM!G?(ix}OC2ZH~IZ{qu zEh%cFmrQte6PYisB2zBaju>xaLJt^8+*JNnE1H;u#A>C2ljDQ9Ib?hg@0QscR|W>F zZG1Y{Dj}pw&om$>q~mc8m<4~19kU=@?5%sjZCOCd=KD2Un~QEMohzdWIz} z1g<^Mr9x!kHgY+~_3320Rw`%oJcXm$^C;TO`w4NaP7rjQ4ifiVuw@t3^+eRVELMde z`j}h#-P=vsmih$tks%3s&-Dj|Y+Iy(lh!{GQ^?k_<3M(~VqfBMO@)7VwgLkv(nC@* zQn%woqW$qs9k344hnynEiG=uAw~9Wdmgt4al56n1^EZ&4t<^R?CMc9I79wKWWMcKk z;IL1VvyivK*JE>;pR*N@=u*g6JM0hQP{c7|`pNhrE3rGIj=`TINB;wB=7WRoDKM<6 z@l2zZkc`HnA1(LFC_#VJnA1~j-^$@mL#hb&(d0NrzxhoU(%S)>+$BxcDM_ucHjsys zYA~G_6pXM2$b|;BQ7pPDkeo0HySO=sQz>KP#+!Ud=(I~HzEbk1fc~4v3?ngh)w5pl zCXieD>7(}*S=A44-fr*-ILSu5Z!5__cpbr^^4mmJ&~laa7}bAA^VJMy$1w`$(4^^X zg2y4_6EvSGRE{>dy;j0x+ST)r12xFrx(>0UNaHfLxKRNHh}a8M|AcM3w^VMTyU(-i z)Sz4@T^rVW)JTH#^=89bUdK(>G>+=hEsjoFM<549V&-_9Bm z%J^Dhhn_A)y9C{>CTXP>h9e@E0aeRe&q9P0iHoFuP;zdo8q--igBoC(^uW{x8tfE~ zvn!WG9UldKfa(b>KA}bqy!LSoBR)pa|?^zNp|N5Heu6gcF&z*|`3I}Ml0NV_(oMNd; z$WRM5^c(Z7S%EJkAPoVw9$=dZ zrL8c@4%L4oJ3>6kD`AqAmQ3;rlkDMMl2?KxBMkwz9$+rXuI^zQ2S-@E1OSt|K?>Zy z7mfk43 zwjN6hpO0a@v5aertCNaQ--G2`@B>9On3;bV4)uOE!DRliko3b?^04;!&!ri&ryoB1 zr^}h~9@BpaMt@_>`HY?>PqT{XRlpldwDID|Z6a;OTAVER^KUtTr>|+>YzxI)jq_5e zm~MYXfoL-iHx^k+92lscVjM0%rL$~tCc~mC!AJ&`%5f!{9ugUekjP07X?9RZWF$f& zCw*xNJ)pk=7;M#4HsrZNuw){J6HR_Q%$)|#_X^Tz*F{9n{Wxuw>g%)9x(~*m*jdMz zkQfZKhGdpYE3i{?G2WBkB&}O<<|&{sGbw*0OdUe13=k8Pq!>=m1q8m16H<6bCLr;3 zv5>M^j8UkKkfO^?0Z|{FNYW~?gy{wPg6v#|42~WGQus&)M)WaGwCfQ}w zR#F)QJ?N0oXI3^`VCnR7NFEfFOdniO>GX0)4ucBK!UdI1FNfqoL9MS#L_$x{7<7L~ z3xcKTm*bXSP8fbUY4?fbB?u}M8htr#^W}uemqUvW2%AL`;`UxnG52!Z+7qM-6Ewiq z%L!92543b@Ice%-ByBxe;K?#o{UsPwq7p+*CaF|sl1!b3RH`kF%5$m?mj_z%H)s0e zq;j01VTI%y({G$qj#1LpQSh@666}A`;m|JhaVJMa&mngS(62a}-ez^Hi0M?GEe=@v z4QOsLAcf4D6Vgj-Ndjh)m}V5BT;%GT*n(w%9_~T{A=+pQU(6#zANf&KpVw9b$E`Bq zV0a;=jP?AGB0m@qQsi-F9jpiR==8Va*oSZG>$Z_kGLjXAnusO^>`4YPlU{#qV(2fO zll0_FgWd-6oJXYmma=N)Ji`jo$MEnzBYaHb{$^x4|I@scgi;bLWKppGx1i|*!HS3(j z>GXTkw=SnzluCfqc@iol-B`8>L(;}p^~OOIY>mA5EviibC;FBsPj==iIJ*^+`Cddw z@=i&S7G@-*IeP{vvNP+jZvb#EFV_%!x8v&FF(HO%x{SRTl}=Va`c!|P3dGQ4xLnd? zE|N5TG9*e~p3iKGj)?FvP9nNSqz|J}0e*$^b7QYK`)>L5CBBf5N@U$iaG00<{Ga=CqQ#NJl%4^6(f_D&n&a3T#92y^%7&YNIE4k)S_gsggVF?4f zy>+`Nn%gR^p>je!wUUzbigP`uN-h+0QsY)CnhHl?Izkd{MmB%mBd--{%qyGaip_#Y zf*L8cs_*Nn%Vv*d(`R|7mg-xZX#CuY3J9we4=bb3!`U$$4NI)&yVra}5`SQx*^LU) z-Y-h*Ns!={xpb9R#dS$6Sl-m74~ihu*xV|}aDXkXy`&vp*(MK75_=JQ)hiVF$Ly$y z{|5rvjQ-)&vG%Oi>$zUkm(AX8`a`Jmf9+(%O!6Ihy2uM zV?q&ohd(+aT}W{Gs%)_Up%_b_j!4s>yTtpCGmonCk0or2n#>oEOY*p2k{2GO{D&#* zA13*SLV5-zCKHWHq&b!)cX`qwCJ+?~TSO>0Wa=F_4rqTtj0S?Ch)y}&75r3-?%!Em zuhh=Q-XvcMeGYnhXs{G5DK)v=VBU;nC4Rd#8F2rADi2%z!#r>jn#_XRYL*JFy8nkV zT7XHjW_&PtDcX>$J2d@kxgj&0R&xU zEvEg{)3ATZBIq9okNd{-8Yb4CVPd9zv#nA*>l>TpbPkmgZJ~q=PO98^J!Hn;`Ass_ zUbwTFTJ3^Uaq%p1x!qpIPA%iU2zJSh=jLxr1%&V%U|9B&)ZVmtk3#!y`!{av@3fj7BbUW; z?Yo1z(P?(OO7?`e4*Im+E^dG~T76!vakAXF>+T(S6RI!6K#KdlW~a2TLHAjk%{%UP z!H|EOUZp!AsAdbYW^2Eb&ZwSh-)*CPaClJIZM52V%pLZ6?S0ehG@CcyZQgB$SB??< zj9mUY*@jC<`*&VzoNTt>j6U0^n%j3KZ+8zD!`9$u#`L0uSx3g~G12kMWQ8HRTg~;3yF(bneikAU z)7gmGSaJ8SfpUs28F#b$-Q5^TA5Ad4t@tn8Yd?!S=#aEx`6>$NV54<-$KCyn1`Mct za8PLOwXY=x*S%I&ib9;%LTzjxcD8?;-I#=Dhy!H?-O?QBAu#`R!HrJ)pxNo|HoMo_ z>@z(v`S1LzrfK%^2TL<8W3HMvRddQTfFGC*P!7!<%`PN1K-)HVHrFDyYs{6eYmS?H znQ3z$e7gvtXL`bed>52Ez}*7XT=t)ZXwG|U4d=GT96_i^RfJz3^cj53YBhfm{x$LU zPeO*ofl{wY`p~&~aQ4A#nigWYk_qthZsHr|#GHF2<6%cClFp-7GW?!r)pQWvjxqVN zIf%twHbql|mNp>M1`nELx)Bzr3={N2P`BwelW1_5hq^gw_TaSAXP%R zI|zd~=pFd0fqr*jIn&11+_`^j4&nPG<2w%89RPQe{y^P>B;te%(tr)>sSVmLQ+iiW z>6dZeks)3Klzqs+7qlUm**gKBUHU(1TJ(cBhzF@B{S?1<05#&>O-oWOXh2%81G-uO z#zKc?TXoh&NQVsR9x3td{F6}4>5rG;6j8LJU|${oBykNj*&WRaXbgYA4{#gweK8BT z4xPH--cKfEU=e7M1F9Ox)yz`aCna>Nx(?&Gn<{)?(ne~BA)4#v@fC&a*kVekWsov1 zbtO{}DVk4H3Z2|t=F^;;HCIAf+DwhP;FV0gBAP{^w5SjDg_u}*7@nG>&F6~53#z&B zra4quq>dWtqKaM9$iIJ~n{EMoHwP;1V$Pk)!izoE;gYsr!~S3JQ+q(}eVRGAw>D$h#WiFCwtuS7-&HyRw4l(~Fds$h1BZL7xbfkq=Q zY0>=M*kC|v*37jL-Yvw%GH<9&9MabwLua|E(VHu;vK*jK+N^(SiW=`qtkirPrPG(I zYQ>RdXq8)7?F zY8x1v5HI#kO($(ct;@6Et5!74uAw`C%^aEoV5kk$X&d?;n#rD3jS*j(y6sb}3kPhf zu8n`_0+|0pSp9#s*jDU;y2mtknVvhFUHr8{W!LdfyD)Q}zRt~ZS}j*DQ#G&_pE**C zT41W??jY}pAn*>A$BcUI^mb4@$)H_R#AXp$J=dILvdQq-4{5VzW9!mUE4DwW&QcQiXpx(W^?g zgLdF<42eStr$3v1)?UgXF4qDHpHeOAA>EKPy@;VBVUoLVb&{uyDL_ zPicR-AA0F;MX976Y?!UU7O&xA2QRPj?kly!JoO?iX)W4!B^Tzxh3bu34{6a_{)ml! zNN<4}*4&2FH}Z9YIIzB63sZvYp+_^c zC(7>#{;t?{z6Pi2{%su=6QVk?3SJ-o!XfpwSTJ`~S(iBUmuKnU_c;^!q(pgOe85yb zqw*yx?H;V~99y_fN$23sgnP<$T_yc#Q{@Iw*RUL|L~c4~L*7etQ-h})lygHgE7gCY z1R51qyq=`Qj#~<*B4Gm7@ZCZo7q#LZYGa3Wg4oQv6w~@O5s4SSp&b zTUuSSBV$!>>gdaMeQHb{f3itUxYA-A2y^HzS#JV(9&5h)(c}V@8Yq!#U4|?SMF-Zl z(PZbM>oJ@HL*@>QJ8VWcn!EBnO!R;6nh0?naEB#(WBj`gV%h_gk{dd&o1U1<)4Guc z+A6;p{m!Z_n(P1Tt1oL@1K}FdY@Qt#;ydfL6*Dq}VZKhdunKi0W8J$F?lv2?J3v}G z^gCfv&_eF^sgb)#YG`$Lh5X&2jeD9bQk9486;TSS&_>DJ#M~5VT&E>&n45o@O%5Tp z%+1k7-2%37E3Aq9Ft78F1`84i^9K0W><{57!O<*Dt>s2xgJw&r;%lmkuMv)080THR zQSN^Ff(~PF)$~B;)Zl5a70%@b&q86UtEyi08Kx&a56rc4bp!$fv@NmD<*H#!D2_cb zi3{J_+y+=3@S5g2fOo?}=g@x z*viAuMvNI+k5&)DUMU{>KK)!%8~?^Y(;Pbee4TqmZJZtO9EeJ^Zuf$&uR+9sAMUifn(C-dk=CWXC6r zShK6ETujg!Fi?s4v$qZvaSzZ>As~$efGq^rVt_3L*m8hn z11uL{`2Z^fSTVp>paFJ`Bj?(!nQQbH<}Y|VloMuHphVv*7*l_dZ56dc4vhBI!uQ$A z?$I`|J>#wXlFwF`t*bxs#|rK_9A-e)u6(hUYmGG9*Ej#_KgrJq>zP|K!{lDn`e$8?m#dn%SoL*Zba4S}0@+lr#Cri4h?rb=0< z@Vz=FWY;7v3I7|lt z@205?CzR&O|6C^OxVljAJ~sfOCef^NylA&pcGH?mHpQe`7r$C$4Da-rnwF;9!?}uW zfn2Wv8Wnd{{0sMju7i>*!qyIS6(2NEs8)Peoi#EXJG+0T%mQT0-v1*7{n*eIo^5oO z(+Ds3Z$_D#X|*eJm;YBPY>by*@qB8mL1n%cZI<)7eVqUQG z$bf8)_;t(-xYselAHsLZ%(FA51Sm6*nuP>>LlR%XAt7{jgnb229N+RTySTdq4em~G zCqRO`TLQt|eHREJxVr~;cUvGpaF?JxXd&d)b%eO=3R( zH#}Sl-uJ-MtGA91`5l}d({>rM2S54V=^X7L3!r4?4^!1e&4kzSmBvTrkA54g90AQJ zv!_LVBR33;sV1Fr&!);2yi;Nl|$wFDwrNwAW~Nd2-bm&&KS{K+~hga}(l-jV-l zXczvG*ykIe%3;@$g0y@$V7Vdp;w zt@+hsbRHiJ7@yvPDLm6d^@ zdBe?_lV;(Ie`-Fz!lt5dw}M2?H6p1-0Ry1=>Xcl$Ps`%UWs}}Nh?@bl6FCgmN4)P0 z->3XQeoZrF6zAf6z9|^sI=38~`%DeMcUw`fq=aClS+)3{J#15`b<(o5bNgEBzNm?P z+}s2#>V%ntylyTt7$J=BrZX5TD%(iNzMJ({jq>p5cCwG|#=!4!9KUcps#@a4-7&hM zSjXKUVX{QK!7XPLd<+MfeqLLp_4xGFiXh~YKnlT8<_Me~clB4l%Wel7-;hBb! z#zzT4IPD%Z`kD@R*@b;kU0H+DAyyuzFWX*PerHS5M5WIu68pL!d}64!F>qS$D-nIw z%scfS$I+eoilAIk`;lObqmUZX<7OX`Y>3mP>bx`Ak)epjgYfV~6Niu5Y#FZ;W`|%P z`yeu*N%12#@zVHq3Ug?a8H0z|}F2FU0lFRe9{7y1#3Dz0sW2@kZfu8E&y$T8!L~YCU-POY2$2QvRaHB*TkuCaWq) zla(efxz)_YRou4Gbw0d{PuL5roSK*JD@|Yei{79iGl{Jd=JTmyg0q9_@&A1v_vxX`OHeLZplv`$UbF@SN({Ob%*b0oC> zK4bTV&?d8)?Afjx&xVabe)Rfk`a)u6?*T+hkXeHNl0AjzBlf~>#@q69qY9QPTXN*= zHt)f2PH|XYl^L$RFi_pfHz5Mi#oWlrxe)4@ZP&;&cQN%&&RRA8vi?9B4so`kF zoh-X-A$~L4BPn&6u6-3DjGB|PqB=DpO*Nqcx$Q}lu%zdC(onBaDCqRM8i2oWb8~hE z`PrUvI#(5z<4#>hh~eb1Z_Vo`gLUZyw~u!^k#{=;A`|mEHfR{F^)Z8AC?@h}S0c1k z2SIu_P|LL)26X$ICglzdZk!|9V1y5QZzb6eeoY#2*y*M4_kS2F)W9__gd{e0bZ3~{Twhp+CA+=O?Y|S zh{`XzOmGoHk`HC+KM20K+8cRnPis;vbrcx4-_VyEHy(1~8$UHBZr@yr)nU7n80dmL$K4_b!pk9MwSBe{p6MvqWLQ@3l2 zEYQa$n+k5wO?@EojY#cPWztFoN(tZiFJ8M5?baN4S)>^)n-NO1SbC<|hWXmoK6_0f z*=x>5e3*+)C~BLxi)GtPj%_w;`_iK-+m&UvY4#oc<(r)CYfojBdZxxvD`Os?slL4vWe7d`gJP_xNMzMfB% zaxPOn9YAe|B>3^!nqMlke`oo*i6BTa`p9BPbuxP?s)Qx7Y%(8ASqmW`!07^U;f=>AuF}|3?2!EpA^a%<*vZpc`G$^Sz(34AFdjW^!Tj1-agvA6Hi69(Cvo?aPO*o;_R6eiYB!c6fU;)0w`4+Lht_C5tRej#UMWWa`Ba z`SpZusr3;z$9^gv?(%=gJ=AnooD4ykW{ZwEfsUiGXZ8AC&)OO#ZS_30K_|{>EZx;P zg+j{v1A+#pnDLh;f+*3N)+^_Lc011B2A`QCNhdBATd@2iML{Mr<2pGqzwH(p=l-(B zhq}LTZ@i|8N6sAE-9mPt^)Hp#2`@1(*Ri)kFJdq4&wna9pXwJMjc!Y`K9Yb)#l-pe zILxFWuzehap|L3~x7UKd=bMVguH{1h>*yGm#>+y@9PfAnvAp|J zLb=AY@EHM|?>tuOw)#^$w~IK!)xtP^uI_%};GFvmUuJBU&8kK`OKc#1ljCsUaJHd+ zk(+#zAxuU0EjDd4JUm>TmroSra@D8VLY~up@-u#`UnW)5a~d5(-UU;Z8x3DPEGCPV zXHQ-uNktHeA1F*EL7XETfb?sJgNsLcuPBT|j2!95#^z-XFV8fwMCyjPCxU)k-Ww5d z_uhQ;i~saADdt4O!rJe0QNV6 z_9a?5`dA!}UCgDg{CPQ#kFP_Ip<&*l#Uahj!;Dsq%7J(8Mu&ue-f`4TD^g36plh)# z(NDfB_;C93=XUzqFt6Vpr9|-OuVomf&fCES#3|rEE|{v>yaXjhXfdX+EV>iv4Hcnv4oT3R#AsF!94y2Co z^fy}mfvYCz{rfu~CB6pEP)x?BL(iylmAss{r@GXG+=1#iGSG%;L4k{?ABaP$G}1C~ zY^{ns;Z#||m+F?6i3vb|NyIGC%ijf`$u+IkBhB(5=JI)kv!EIRH<=HnvSQ@1Gk}#~ zn`n5f={^QY@TWjG^3{#LgbjGvTsH#YbX%2oZ+;OEj-&jL6rcVJG%+(WP-McQcYdZm zza_pCiLQ;oKyRfZ*{ap6oeYZL^gtM)7_j=g)Jg!YEB!4xKoAvK{H;h5d$3UaCfN;R z{0yNpiWd=^z#FuCtFbomCNbsVDkN@%wlY1J!26{_0sn{c>d}w0C(Q1C^U^=glT0TM z7qSGmx$?MjRB^rEtm(KFO!1-Zaf1V`gB*mzw2J$-KTtTTOkhPMzDbJQes9%Q_L<|p zcqriY$|A{4ok!L3$8!0`r3?E{8-09~FOX*E-`~-byc`4Vjia;_UPxzZoXLG-oZiKJ zO(8XKt79M_NmvDk_F?E@P7Eb6;i7!@MESw^gES;4VGs!sl~fGbY@3`3&LxQD;S)B- zBu#$c(4>%jHg$mX{-J0r37?GA^AuHl3=tj*se5DI?FK!j2M%yAM?~uVHK@$Rn<}II z#hBp?BHRqJ%Jn1UP|Y6c$&hYbC}B0iPEu<@J{~ zc}bas+(BW#7h<_3MOb_}%Y~*@HyN(!05A~WVJiV7&wbkZvXV!VAHaoo_xb9+++Piw z=2$dIG8XZcb0|D-NSeL#1$(Fnv2||l=><|vFc3n7OQo@Yt3JJ#`R52AUr1QjiTt|2 z&F#0g%9PkJn<%tzdhc_gG0VjjcodjOvf(_rvikS4+lKej9jlXG&&IaZWZT5Rx3TCb zZkb{bzrSPi{Oe1nr`q`yG3$5Z(XUU1-AlVBycJC=?4mgfM~$~R-Dz`I`R~RXC2!(m!jcLHI@85>bYFBJ2`Fu;{{5t%`>u#jndfMDLais0m6}?RV zPA>x&I7Ewkm33%kB>M)<7{5>{=NSd$;~q`bP#u0*uIP_p{A-3;(R65Hnu$SG;+zQ& zt01_9+n*8o#mM0OHntXQs!m}t_!)#jAuOkUhq1-WQ80mS=IuwBfI9~-Kgdv$Kiuat z_^>8A2xpC6tU_%W$cQ~S|IR-~=m%XocD^YUzIV{4IV!rzD;cmuPFp3GQsFQNj(}`H ze&i?vXgQV8hsq>l!K_8k9^3nUl0aQW<_<$yMLx!ym_$BfQxJQE7BA?Oxz91d{HP#a zh9|mGQ38ub?#l>e_kMKTtmdzCz%&2SSdW$WvFO`{n8Un>;L@P;AX`fmTIwY_lRom~ zMcGNlyqCBw*y#kK@OX$y!^$cs)$9F^zM47Cn71ei7Kp)5eh0q(ie>0MJCo`g?kMy$ zwWF1th%zt8dUG3(o=`ePavE{k%AlObME}vnqPzm{}m!UH$;M1R9S;Yza=djR&ydPK-wEVyO z%iuiT$4n7COMbW`|6-~7@;=1Z|5BQ!v2w4xLjSju;3ep&kOm zeYS@?P*lmj|GB>bquN6OWr>1OP$e;8g5SY-&#gZoHE?evliMP2PWDKl0J&d$GL%R^ z8EM9Yut}&DCE;kdeg8Sgy&eiB3vs9gh~95z#2s6OG)AM8;g-q%Vh7_$_hiKACb*MH z!GuVe-+MUwuq7h=ErVZ}W&Ril7c8y;F$YYckW(u|)B$_A&N1LiG{Ic38=?}5 zU=R2sKobb!V1h~mIoO~yz!=olG;kz(>sPQMT5A$m5xq4EyanW7g}MScIH733Y9^=x zu$m3Z0<30%+5)RNprpWRW~c$Mn%&F*5(SO|>jT_?yNGNkdIYs}X8I5h1S4I@HG+{T z1QTIZO;SfvMbbo4N>UvX0oDcx5UJrg;{!kfgtZK2#*+GyvXF1!Ow=U;H9|G~T6*X% zPz9wm6l{nF*`y_!Bes4Gy16+D?5_%$%*>d~sB@5WtuZABzqXU)C2eljxzU4(;ml&9 zt3U1%^h^6zfxW(q8A(E10JA_9MRQPf^KLBu_7~t(NsPkkzSrbt#E##O7j9#XuOMDb zoV0~lDCj2~EWF^?PqImLSk@)Hzs8g*>Rlr^#0^fIwwm1~K*uN-ALauv#evBJOz~h} z0H(MwZGb60%mc8215*ZU;K3XK8@MoI0Cs8|6*bf^IM5V=jqq0u5{vLx52A|jR|_(U z@Ye{!iSSngQiJf<0OEv@Gzb8-<5{ahUTfb!BSKsHx+?O#@SOo^HKo@z1wF)rR0x0L z^P?hb!4jwsRsaw#OcwycH~T6=2ld$lc$a~_P##nOXLvA2z!@&g1aO8A3j|Q%z@z|F zc(6|ZDqNU40K^ODLX6KQ`;sDo$a5~!h|XP^l^bRL-FRLB&y zul1GNTUwsOObdbwFbBq$rc~~I>W@Hxl68!`SEJiqvXhDxSk_MVE?2jULN<&x?jr2%} zah=rxLkLE%_#Z$tl7`SD8Yw`=iwbjTp>048_Qp{ZK@Mm=kb@C=0TgHG1sOrsWbY_} zr_4|jAVzV>OkL)*AG$9UKo`eJm%y1GpiAV830Nd>W`Awt%EfLbC;3enrzaMli*-K> z>;pgt5+Smo>Jd3p02T?I#Q*|0&N2W2yg0%*5Plr78jc!4EsdErWD&vNSW@%CQvsri z_>>ObL-FQN)`wgouD*vTBUYm75vviY;nq?^ErALNp;jnM1dS|t3}%t-#Lm(Xc7#<8 zNEO1W9K-=}RYlSma)QW*@K=AvOT%b|kBY$vj`TfX2yyiT#D>=w`O~U8ggGM?EP@JZ zZ2+f$#Q=}MWgr&9s;p!fW+*rZECcW&bQS=35j$f8_VOvdADIA8*`eaVQ&wmoPz7C( z7WxdNd|zQbQ4HP4UGp<(nF_#lrr$RFu_5Wn4i?pJq#10SmH%| z1ksO>L_|?ph$f<_GGrD}R0aZyL=e@4G(4}b`@qSmSGxG$YMi3ryv=)$AVx?)h|8QX zrC2&cKp;XnJn%ljNC^wqPVMS9*SxnG!uqRY)iqZm{j8X%v=p{V@zBfYUcWpzpZ@vXO{|Z6}z6H<) z)5T!~zeTVG6R6FKM@l)wp&f$T^C&+wOd3x?#LauF^Qb={cLd3qc}@Q|Q9L_riIcm}XtuLsl@2J*rIu=n;t38&CH(Xapx zl7>@Qzw7;&h=;Fvu8eGHC5!e^w{3O9uA@M4mxafrS_>kyYv@w zBO-h&IZC$*4$>wW#y4<(uk0^l``k(+EX00DJd}xxoE$R-FciE6Ifo)R(~tmE>an%s zFkO3xp#(4xkOa{L0g*ooP|!P?heHrV!h}>3j2HQ~1Ye3d)y0{V#GL)Z&x5YfJO%JV9-*LjFkx@_PSkavQ%IQ^X&Tl#fC`M= zYY*clQKLUhfz^*(oDu_2B^7;0DL5TS;( zz)FM)h;1!WCE`Yq2h^{Y(jE@$w}%uQ0a!W?4o?d21CkUDunI!`7Lgp?HrODK|9g;@ z8fXaV>~$jHuchE?(U%DM5Dv@)rcjQtNJAL-$r1d5xt7q6F>mU6DXfuh5Fdkf%|Om@ zf;f$E$U!MkGc}~aAf+jQJ3_Xk)uR@`SV~}uf*jcwobwj_3fLt@HARd82wNF~7o^OB zQ$e7Ge0&R(3-)(LBl*IqTO2SMyyDXZ+IZ~)pV(^*b#%u52d~cnN;vH0Qn**MK#B#+ z_ijN^VRYVDN&wZMl3re@K1|db(1~IKRDpAc{{nH5f};zLE6DfOy~iV;?>Z_y?d{DY z6hvr5`oDk#HDK8jb{4x6X$7pJI0BKseueLS+P=bn06mr5aN#zSkGYY{Z-~)xP38c0 z!9GyMS_C#^)?R~GB@zq@y~X`1$*xAs2X~OijS^CvCu9vU2x@){?+#p(B-%$u0#loj z2$GUxs{n=GViSO06VyvW8YJJ4U~>RdgDN0RP$Vu~C7>m=l~@#x5?M8b8A=Z`_|fcM zfgb|GhlHCU2%^5X??$heBG?X2l%o8FTmn|lgChv0!GRxuYN-Jgq{yR?N`knd?p#D! zfC&VvpoU%{s8LW<4`Ol1bvFf5(<)Yy!jgRW8iVk|&osJYY%DnBU?S+-DLirvgP?^x zOl$PzAQ>sYH~^2-+OV`(9MWM3k{NL=t2GE^rq?kKcZq@zNf|k7`QiIzXV_3!dw9oV5(lZ zT2y-^O6OBTBOEx?x2SX>Z$ALuNwKSu6$T6Eag-v@NCr&79RocPF{Ol;K$v{Mj*!7T z)Ft?1)IKxLT7e~GKE!cIx0%Eg`9Hto@^p_Lizt}0mj*_thmiuV>D8#kU_;&jJN2T~ z;#L0RvTBL^kr#r_dVOmFf8hcV$a)!S-*`iOB%NQ;0e&BckRXNgRT47}_%G0ZK=hC_ zR>Lj~ddLGTAs&O!NQ2#L$*d7x0dIy~%ZL)v1z9(vnwpzC3-eW@;)5Fx_dcTDbl@UX zf}iabff~ao(*Wzp|JbO!8ABTUZt!F;u^D9=HW4`V6*d3IzY?&)kM;`u&sOc2 z{Yy)@bU_w42-Iruh2V@lBJVryP27J|LJpj2a0z4<`Ub}Kj}=UY5JMtg(Zl17*okHW zUlSq#$%L}Q_|wpegASk+Fb;3*F}Sl3Y)IIDc%pX*iVtJH!x#g&_3lB@xv>A`LSXcI z2;IQQUKS__u;=m#+qqw}FB;0=%$tVd2>2I!sNH07VPzptAaC^|LZzK?TS<(79EiHX z6_9x-Y257(XHhC9MlgOaiZkAKl+J=(x@z>90LiYnehq}y`XGVStJNH*oXhTt72 z8H`;IpcAZZ_D&CeA@~d;3=`AC<_A+jVnJrKO9-zXt~FfxKa+(R0a+X`V?i|y;B2X} zcJQyqt5oh>a?#R+YE1najFp-CzZnUC4%pOtT55}tf#SF5fj_$V=lE~ z^_^Xe{NQDiMw#Eoj~4bdvs=?YG@i|Ng0hj`PmqXcfk2CV%k)-1zw0nk{1F^(zM5Hh z(ALa-P;6?FGwiRL=ezgNw+pEcsQgvD%Q%`{!rffU4V4xNSw~TU0KA!!<=$eRT2w+-40&U2(dfe(lSu_<61;=xD5wB z7GrqN35ZnnJJF7yO8J(3n{9o}meop6wYtmr#Q=i=&7W4oh>Dc(>BZi%>-Q3k(y0ne zK_heUpGv+_C1ogx&$8#Tymt_Jbe*r!Xu_zJ&hIQE>^+=U9&;KEB)vxz@o;anupiH| zw(~xhh_l)LM-?tZiXKTc0iuFiU%dBYKr(vG*G(&@@Bv8eSxsFll-S9t<}P)iUTe z)EtI-N8pdN3vPqD!4T7scS8`(sPFLDfTlqMW~g_h|8SKn4D*ht5^nfF`adQK3jQaK z_}}zn0sh}~GKJ`lC?>@@MRo-Ukdm09B1b|32btlJ{EOdl&6r4#Vi4qmHlfze7=lFP z$T7(O1|u2?BAO&M6OdaCLj{rkEtXu!EQG|FK@dF)a{{mz%=2HEh6!-tt^z@hh%G@M zp`Omj|HNlrA%2i9sJOF)H=HQSGb$wzJ47B*0Of`WdILpKbAYNLR*(j$5Er5-wh0_( za4KXJN(f`|#_YsehjR*UfvlLZq#>;XCLDwRCy+|9l)@hd`@Y4TL&k(~nCVX86o!D- zBx!3!tT8gcVvwA?cl)o6iT@`O@P!e1lPMw2Lfm0k-o%~Amf+i7WT?!4RG%kHyZIkq zFC%F;h17_60?E%4`vsSt2fvRZ95j)KzK_-(bee~}k6JJJZ>9EXLv5Wg(?D?5h>Jl- zy&JulP&sG();CHBEnvf52Q$1@iq-$7=1!mqVolIuFBw$%|0RnadN=$Lf_PU0-iGJY zUf!fsatI5uHdZ;gmQbmy+D;zY7(xT&HL|%w@JADecY_$cq6G9`j&nsA8TL*OEhR{$ zdg_h)Kj8#d?{NV142tAT+lso1!4PZ+se1t4fUg@R3E_tyO@7ks5?0u2VSxVT&^qx7fNW4}hO zEA3Atf_U5D#1u4KEevL>5ilK19r6+K}Wz5yhYc z#0C#REYRGDTgg`8PZ4i}K;Xw-HZC%MjNPF7x8GB6N&y;@%4+CyNM(6grRax2eE+aj z2iRCjCJxIJ{$DZpG2#uJw;@K+QRE)oZ%4Dfv(k{&|i@PH>_ zVJ*5+2bF^~o~=n;M?qVGF~xZHoQt`!mC?b}A8XIR(@SoVYIa71zSw4_PFacNpUmQQhXvgoL}gt`>Z#AS%>Rn=ziG#Emp8q*Y`nGLPSH2 zi$BX4N3-|=i%jq>d2E(ZJLn|olh1vT27avDR@&cSplnpcw*pXGn}&TGb3_hDY_o-4 zjJ+=bB|)TJh1_e|vF6I`8P1k+x&+Q}jhy&tSYGdZgyAwxWhjhA_a_T|0(;Lk?YXlG zn*k|D#6W-Y=uUq;O-D(=pF%6W*0-cW%D%&Pj)9GD8Ohn%Vq)h0vBx;aV~7ae zNBpRpE{ef-&Hf7dP}YsFHj5DBkxkq2@}7{~ztI$PliO$dB4d)$SmVc4@`s?qyw9g( zI`w{g1L){CSQXT_;>MI!67vO>1uaMJ67_txUa4|uMKn4%nu+oX>`WPnRI$mWpCesA zn^#ilQAeQ5Gl+Iu?HFNR815Rp2A#cw?;f zUU8tH=zN9Cse6tgkP3qd|lnl>GV|4S#uhjtxB2cM_yH;Qw-_Bn7BP_3t#p~Bd zSD4+(vL}TJ9y28Y>!F9Q=Unl8|AoS5bA`1oqY{_NfIh9Njn##}$*M71g&itSLCfrT zr&Ob?EYTIYm>f)B3>;eqBZgA8bF+xCdt6Ohx#WJ9{#CDYKGLaLIkdtyF0naUjXLIc zSb2|Sn+PJa@lad2p`}HRw&$&1ld4*Izue@sC@xSC@HlpHQ~cLq3AQllLE1z&8y^=QnD$NO1Eefiz>P;kU@<= zp+o%bpvkGnYY}$ST=;E?REIS!FEaeO`o!$>+qd{1;!3Mp>>iWUq?ga@ml5!rkVTB& zd^T?e&6Ol8qcYQO?beY2frHW4g<8t zS2u!XY6lr9`7h$JPRon3JFdp=lDuDztGc0nk}0Jz3vPJn7;}ml!DlVU`8dzg zUiP%s>?sT1V5Q&%yo))s;;$^Rq~-G$%G({tGC@Is~5T9@`E5zlNT z(I{s7GcPkxlvnXDeoj_#VjRaj}d*SI!~hO*Y%NtCM8rkte6*?iaw?47H+ zQGPrry{n=vcY5tn0-UiaE4LV_zkb9#1l=wt6yLm-UB;);%M2w$lv#G@?0Q+OOFLUD zV>N+RxiuN}Exp%c#^Pg%0+Kl}RT=+h?zB-#=^8<4=# zDd%gCoBPo~gR6cE_LAnlT03Pc5nJ`Xe$Z|3Qft|>Crk9Uw0Awt`FEdhyScdYVW$gy z2)d1u(FoKw1@&D4%(5}Vli_>xd$K;6ETM5g)>z@yXQ_mPKLP7`lzX+jvQo#%wx^{j zJ2#$etEX>%w0dW>jr2cCNCd9Jx{mMM_kAm!K8Y

*SR19nZX-XjmWHJL7Bnaw&dc+2dYwyUE+)>$K*V-vZj6Jy_2Y zpt=_Kd!lxl9i(D^vcWdl>_AdKO+%@|4DZ{Bv z*Ci3P!PWoaL842R*Ys9A!?mO3@aR7Ii^<(4Yszla&`UMXM8n^JzZU_8%ug?TPnR2h z>zPk~)`V5L1CDgqZ+APdON~LQPeb%9LlrqZVZw@!*CL~xUX~%O0D+HLL56 zf}z`r)QZzU*mL>N4}B-Sr%82+Y6FAy(+##Xhm(%G#Ip7F=~tgM{*$53paIU$w@xbF=GNE5Lb0-`o)@sZtm^~)V(MZmFaGjAmNeZo zPxs>l5s*Lgro?4ntlELJ=7pBF2rr7z#q{$v^IPX7Yrln94Fai{u!87E_rU*PUNUmj`2%FEVNV`0xT{Y`GoB-QimR4F^!RMpHs z`$nA};IS63eoqdy1!QqN{S62hb8K834Zbz4kNt!>e0*K_DXq^W=>^|uHdewrQX+fM zuGd7$uE+Qfd$vfw_~6rKhI@b+)g$S*rCRHtZycoEOSK<-L2OD^exZkzx`P%XN7ut@ zBjU>*OGi@ua*?wYqb96Qs~$OBD%;-lzbkH| z(w`7MO~~k8f>`FK+<&xec4+fssI?ZAT-cThV(a@oJ@hkmtuHKbsdyCo`mBE=eE!sr zI-k3p>M(0GQz85t`lOGAdG7G5+P8`Nj$uBmuM#`(>37FY|MM49gWSt7^h2jehqOHY zd9?#}vW&;DVY?-#r+ZpVL9=Mi8xt@D{QievW=NZ0*UFF z=}%9Fvj98I106%tfdEn+<6b_=15p{%W`4hyvP`xb(p|&$L&c=29QY&bm3>2V-xU9w zm~R>_X__xBWznZa22@ zsxvz#C(xJMvnJ+{Z=dIvWpd$f>?<(Yvj0KtdFk)k8>;=TfND;O)$UMchu@i;#s)X6 zQCZ{^ai*k;H3PD=q1!Hgu01k=Pv;Zc*G}Y0JA^E%?19s<0WVjNfp;LL(VK-0uc1TC z>Gw#0UhqrAt?3-A=G6~M!A7sulRYeyefi}p(1_z{NBizoQTOY=Eo2v~l&6xnYPuWS z{a_0`@)pBji*2LfZv+KY)h?qzS5%d}v8Dz)s{q0x*w@r;&~WyatI2_i$Js)gazd8j z0nmZ2rJ|eKo~@;2_1RT^1T*P~I@RW3!c}Y-E9exVO~0D<#nr2Q!fD?Y@l(*iAMMis z&}j(Z^9qwdo2$TxvhMflWYV%-QYStZxhr6T?0WKh$@2?l6Rplt?}K2I_oV6Dkk zR@iA|H6472GBucB*hdgD+F_eG)725~xni*4?nZjZR0nMm9VzPHAKT9a zQtaC&DFy%8X&`5+F7MGvR?_fv$Y9DhPOnt3zS6w@!d&)`jLF>jzPU~Ol`I8kEmr*s zz@EkwJPz&UktEVQOf}@(8n7U{><%#DYL&mUb>GOUc1I{gH!Q_IIpS z^NeAyUocQ`{qupcPJ2{$rTd*#qK?hU$l=eChz;BKq)~GpecFG#RHp5Yh%R>#HKeW@ zmk;5(ns0L?b(lD2tQNR7?Cg%PCmFJ|C^&X?;RiMnFo2L5n7_7!1yC~NElv>G9qcDg z&Ssidi9aE?cCA^S!rd=?L;0wE=juOPu{w`Q5qgWo@3u8;pm@fjRkx9p3twU6Ug@dZ zW_MH|uzQ2W=a$JZl0U6cxy6Cb93zqxJHMOipK+CO)#O+ssoBzETUJ*6XXNaiBRuy! zJHg^%H!~>3Ypud==fnGc(#47ExHoZAV{68`E?&V)zZ}Z#F7!=ZSrqR(1oQkyIVn)F zgyJ+O+OR%&8IQ)E+9j0|@nX6Z8Ko6!u^~%&Y5yqD(p_0YOU^xNGCDeKRS=W9RjKtu zW;%Hn!Q3ePp~)bju+)z4w;1=w!31q5PgNf~b`NwAe$^^N4Jm_Hcm!_`$W-#yMk&9+ zmP6a6alAZF;}4~=p>O-(*&e54wWs#8C$@Ka73u}{TO|*?LjSU@&Wm}_H;k2q1TV;V7bOO&@6PxGdt1}7shn?R zL9-76D{cc4?M6E0y^oql0ieK*-MwpOdy&6k42?))17YGk;muF<0$LUcCrHMDzoQMU zZj|19Y6y&#!0>MgbaIEB<(K|&9=|#&1j#>%qqT5c?Jj_9;GZV02}Bk(kBwB%!$dr* zOP1Pl{%nvwb-d`B+H}}^jol>lf4e|cECufMat$88H>{NUWF)$Z$Lt&S=bTQw_tS=-im~IGuCJJW`<$0eP>rdtM29 zo$i0J^n~#ct{X3A6O`Bu|85%gNZM+Tv^dWdFOT*58^6}oe8SUZ9hb+K)xcoJYX6OpW zLB6(e^t&t3E5hQe-T%9n97u}lY-04A_iJ9B5B>}P64_Esq?c!9jhCZ~>DjkSWS^(P z+seM~b-g0cT5HfcE_{bCajei-M>+6w-NA1}XcV*Mu%86ahl$>Tw+TDOF1v6YPLdlOzYKq?i07Bg4@lIA^_`xrS0x^h^S5T+&i(wf zUMJI$*|3!wDMnY({Kw$rvxDSQ=BNnwC|UW%ql4`^OYSghPJP))V7JrVgsR(0 zEz8T~(VhNNvT$IVNg}9%ts;5yur2IxY0=@jNVqnT#p=3TxK{XVf3f7+Zu=oUEBPJ< zFs>4-Q8S$3bd5Q(3E1RmI=l0hIC45PT;QBvSXgZT*z!=*6!g$`EfZ>(Ax|}pDV8!x zJ3rA<$~pVu)ZtyLD_Ea;U6-)BE_~b6T^9K1*4U7LiY$9^}i%xw$n7*~u}K0n?bj9E=#-Ns|}{CIgH-TSLDWP1PZ z9$Bxy;tdfk(xA4oLC$r>tYbDM~0Ec+s z4i$go^n=GNuVTZ!?UP;#>iCCBkYdX?+I*@#L&-Z(li`F}rIU4Z?ZY;F^SbUN3omb? zpZ>l2n-ib-hV*R9oCS#;fhUEP1zz1F`9rr+;<0)wjh*^Qz)s|z+|lG-hUvl5WuboZ zI8Aa+m9lQYi@o1nnAqZs`Q&a4<%E;ybI-U>SW4z4)>@2E&FRZhR?Fo;?d1T>O4zfT zSG$Bm3-!HM?2EjWP4tKxGf1757yo z`-DWFe2wRlk_Jnpc%iC}bmDfeBkS3V^Ney+pBp${)946`^mHW#l*~WaLX{QiMLay^ zM>AS0O4xh9R{8xu2=Ge%N-|^MQ0^UX#2MuW%_8oK^Ezem(2N#8Y^j`BSt2FpyZUlA zq^7f3DAd;eA@5jJ!bOZXNh5cksP8nPX~>^x?7U4lsJ6D?oCT$giRc9K`lYA$&WP`R zceLbJryS=Du=I>$9v@*7N|dm57Et0R+A#F!Tob+;|JXSEQT{gXnb0b*q9Q+}-O;8R z#PvIhf{$KHAoqzM|Gi}q*2{zLjqI@D^E`5;X{oB7>1@-r$n^jPOTk9$xKg2TeREv; zf|BN;Kw8n5sMncxSZ26QnuS*G%I@zT9h0$DcY{DGyCJ&?3hVp0kG~&ah&->oeEnV* z<}nzKIi?K$cJ)PK@pyQed?+@l>NIy_vu-h5FaI{LdNj`;R zo#gkqIx6Ox8C7!a^79--aI{>(cc=8R$L7UUShz^6c;-yZpFdKS=ucU+4V+J&&pd3p z5Pz{hPw#0EI;{Cyeg~hH7kF9cMs`2pu>I0+zQ=!&z4FT|Bk!3iHk;AF{s(Z!4 zULf~zmhRtTA6ZMworntC*+4@~Er&0mq4%@zU)mqUEYZ$&tGKe8lWCt77!BvSKYL^I z&SsIGI0T0NCNSh_o{?cS)NA^zx$Z*$WN(`R`ka#PZXwP!n^3&h>?_OKW}p0BXMD-s zfK^3Fr6S+{u=1cOJ;Q>sp3rOr6kB}Xj5ogh?u%8qV{z$6;!Kl{l=Kh9*_0^@KCh#B zq$wdX)QG0F$!R+BQr}k;DCz7{8#)v-x22OpxDrpKP%v`r#Pfh_Y_}SvcSecsO6I?%`Ecg zD@q3)sWoFO)QMA|&!LgzU$|4%*BWV3^^=>kTU9&0`EdF>+#(SpMF-mUn z$)L^pq@>%iqM7DUfCbwJ#G^Tpf5OYId~MiaYWcy=Ej>nW&7yd~t;v_mH>>K9H!)Sm zM*k(*XJmW1WkW8v>Suz`uQA3rwKqN+jk=a9E}O z;OVaD=LjGF7PgbbQ*y-0GxraxO1g?XGc&rLUv&-})7GO|!N4C$RtFUyZaH0y4w7__ zwV&^8U;Lv%Indl1(9SUxbI7io5UAACg*=kWtFbzAha*8m=Q@{Fm&Pk*mELu6)VQK` zWt%d|Px@50&Bpbk@23KGDW{!y^(Ugr=T&*WAt52sGqHB2j=5(%7Tv$x7>qqvzi6IZ zGRPfpVp38LTWY^0{jATPvF$oxZnb6G8O1yZbA=oE>i5H!lvDG^cm zy|7umWGk|HGdFc(+q;OzLc8t6O1XpKA@{v2i+1~H55p7bpgnhK<&C}TBxCi`@lpOY z>!fi2RRB$`Hb(>7PJ#W9mlNZLXY8$8#1e($x$;T%r-*2#My>Psk*=MXmm>371a}PW z)}9W3zYL{fZO~3n^TdZ~7gGIzt0blTXIXkGU6vSAVoa8;2==Es76$~ONUHraO>B`T z`b4YyNW+P~@_3-JK1Z?!{!rDJW(vNxQu9tztAW0+@Z-M90BdNP|3Cs&)y#IL+zMyS z<=gBnl{wd>E%H)OOp}#$BwtK@_Dzv?JK@HR5t)d{2&gVl?B^k)W4-K*POa>LZ@Kto zrT@T0T)F=*D)n{wkBTwUqf`T1*@H9hAmIvf29<*m+PW$)&=)V^{+6y12Ygkt57CdF>$Tat@ z2ZmT}4?YUC=o>ONMxP$Cw>WfsSrS{LS3i6ymJYIg_qXBpMD!ULwmy6y8k=~*Fu<6s z+-^UEnRvKj8rU;Kf0Qb*^6O|gd0bm3uwlr)2zW=X@F#2q_`NHTUA<4*O z&j3=v!4NeqD&kP6SD0oyBLl+*mg(=6nT*w@f3iKMo_UM$xZR$&nn1edbNbx3uD2Ki zykQ!_Mz2?4l3|K&pMF+_NkNY3P@a`GQ0?_b-py;>kkxW96njtSRt2hUZlA8H%48}h zd%5l+F0~9k(`$fgnR(_gPWS!7s6YLbDwBws!Ss4G9jt6153&H^W}wTHwg3qR0OLsb A{r~^~ diff --git a/NppCSharpPluginPack/Release_x86.zip b/NppCSharpPluginPack/Release_x86.zip index 52c4c2962ec6d143a72715c91d588e605de48852..dff3eaa8a4537dee242c20d03e035143e0837638 100644 GIT binary patch delta 130431 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 z z*BiEN+YW74Xc1Se?f{LS+qmt6-xXlhSb0p62>06f_5tF9wnT?t+7q&+$ZhefA{+3A z)bi^a!40Vu(|+J@Th?E)PQHI8_IVv!;<%k<|2g&7_WsviZJ(N)zxlCKuZ*|3-g9Vr zSfDjCkaJb`;@GzCM#kaL=mp|Ir3Z#@7l%JA<(K+~l@$}6h)^c*^&Mv8NEqZyuiAr1 zF&1}gauw_s1@9T5PR_Ee(rrJmAm*N9n}hw9<6yZI6&!zIB5O%JSTBNi>ZyzKz?M-2 z;`~G^u}_S=eZ$(nG;G*dZG55HdWEJ|aq;~4)>r@EiVhDSqhcc`cFLPskM9eT z?f!kw8zbg$!C@k92+Mq9KV2RQ1X;JQRa7SFxLWVDx{8IgHj%xCAbsWUx%7R*a%`Se zCf#)DUZ>x$(APIZR@d{1RVbHzaBzCxvRf320yb1&qwTYR3T(Xny{hZ5A2wK)EnfcA z(va$3Y!VUd!xp;##4>Dcr7{~4EX?-1pJ0jEp4b`V0nyp<|i$rkk7x1fWohtUTnB{iu zDpuG0Hn8S;6nDO)AT}!icGD!L!!}^*`Y%Jb5NAMZ3KRLjSu2=U$kr%T6(#19s7REM<{SIBu@B1cX<$hnW%up++uAUFQN-AS`|m6r1;&b%BZ5D~ z?z^9EX((XyX0Ol0x_3r(NC%(8YXh2P?usP*BA{O)nyfaWF_X3vw=jHx_GEW3cyc%Y zYU*VStlInMH1;<#BKR0FNY4CHOjf7I1fNC!4u&V+v3esxgJ1OZT;9+T5T;+NeYkgdpGx%Fn||y zpbm#uB?sIS?jzv2C$F@UTbL=W*IeQnM#vHM&?EZ&_^a4r^0w8n6%Xzf$~)R8nnYmR z-j#Rzb>8~_S)-EI5+>b|wcMc+!1Ck^GB-~p`4)vxu}w`IZ#s}u*CN8f|NjYy z9%i-dnpH7!w2LqMC^NYRe2keKF*Pi_13iSQPnTbi@8d0pC%(DEA8%pm#v3dT={pg3gz}vJ&`O;C^ zQtda!r;jYXf{bbGTJKWxH(YVFqHkC!zs1;sWdWElc&9+hx+cW z$Gp%x(OPwhePZ4C*`1$yOF&Uc|9;QW2I6H()OFd>(JiiqI+DUhcvz(I=H8v8U@euh z>C>EbfaLQDC|O2+vNfG}Uy`~#KRUj2i4r9T%N?){dz0GSzc@%B9(?M>3g1+1di<$q zBcQ3(RKC3E2mZ${`GN40sv}3r`G1HW`_57>sjljRae?rdaL_ysa(q`U4I!){2iRK z=EYjr*wb`7JP4w?#2pN7g_T+pC?}>APh7;mVOY_!wun8On&w9DJ`S8)0oO^__t~Y` zCK$}HY^51yC;W=wppCJ+g)JL)&}P_KuDlJh*Jj+Z#g}xK0Id#bTa<5`H#?neH$$#B zy=BmOOdeDIgep$uQnU&btwdXM3n^9Yxo!VeXBQs%>D*o#W{nlN|K2X7Hu_e?=_@|4 z_?THpTe{ylUi(vwVH?a4QSIgSR)m4OLWjx3(xK+~CKBHU&prRm4=$JG-`%Z3%I)lrzIf9bTI`P^ zkzVg>uV?j;3r*x%om2SfCIhl-U$E;`!N9dX8UM<{i#e6xQy=z3XI2q3p%+w^yqc|* z>R1XU{N_Ijn{2{1g6id1V)y$oi2I@@}4M|k*25& zkq;wB-!COo*6^gEPZ_%A77cIrl?wBuk0>sE8UlFIht-ziDQkqy0Fxmy-;S6pdFx!k z+h(%C&|(2vw(X2c zx$giT@ReP;RRtyDP6q`mn|vdOH<`&QkoRl-ATQk?;wwoW7F5k+V9&5br(Ay7?wm01 z2wpwLdL*YPd$`4kv02l4eW!n>)WndL{ONjsaLCTP;Edz_8|q-eVykUj-+_4sweFTw z4_cLf*;FTQ7LX^0Qhs8alwmd|mp%-AU%Kf9gcF@2u87sOjYP<`{(IBfzZf^YkAm8XY>f^dCT3>2j8L4C& zMnBhd9jOE|V=Qph_ea}r@NRva>V&bc!=6*rVE@pCVMTIUFm*&T7dKr=~i-S+~D3MUhNP?6zjL;EZnjT^hNq(+_VfU(EdTm#j5cfc|tRt-#OV*p#al!gcX}LMOkE<33TycaY zuc4Ts_8(LCU$WX?V}GzpB8?3p4r-kqde8IAWnt?9EPk52B|DV{QEkPNs^reO z1~9Z*AH~f3vE!z#+rt{zSD+<8=Fev<&GGX0@u%y9E;9(!Y%LFwdnd4nPN`m!5tG|LG{D?Tl@f%ZYU=??j>hs8&I)3wg^<)@lWgqg`rv zZ3|Yd*Bh6^cKutQ$N2p&r48}j&x@(@A2#;MTX0?KIg8jWA@Q{T7$@!kL+SCZe^i4l ziNA*mh@BLID~a#Zwo5f^4i}+djwt|&X+vt?w@Uqo+nd+@L*`!B({jU!%NtT*y9HHe z@YyaWSo*AUO*!i}$g=OWDEB`Jg=Zs2bfDO%AEtMKd(iOy7Ax;ck3uc-aT%}Xnu(0e z%&PfNv$CU89S^k1)TV&f8RKmYdKq%+9~`0*-QrcQ7 zKd3Re$uN#9_6^ftAKG5pr9|nL37L<6vkoivZd%_RI1=$bSPO%{Vd?)w$S!WcCZgd} zcAHI6ajV68xLuPE{FPl^%wlMbUXjgBY;fSBRKd+AOZY*R)yN6s5(al!aMu!?C}VZa zZ2vY)m8%#dO}wKe6*-;$A`M zhFHU}aW}DyvNL3wO6(c@z5R7&xmeF4j|43aD$*o|Dyxh;O+%*!mgmbRE(i+^%>68h zv_c9E{Ej*+oLMNDKb3pYHc-B3csspN;z5Q=PEfWBDHM=f6l+!b6(z?XGL%MOssCcN zb)}S4pUcBaZ|9G0_=Iim9k^?9HO+WBejw1q2yG^xn2!s-PL%3&w|Puuwy2nEp&r?# zWn|lwJT_8Xs?zx#aWE|Am8F#ypHSH7u->HR@BBA8JulYny25R$b6munzw#BjMOHKe zr3HI86o|lPr)U1njcB4qr-)71PV0sZ(JFXuheG2YIBF6Uy&h#@qC$MO`F&e;v8A-) zML1DQloc9dJo#XcmIiw zD^wzjUK_re8P2kftaxd2bO*67$n0~z?#5-}afQ$MUcph@awgg(^?HwN6bjBn$Q9U{ zJh&k1EdgtKeFKnPlqBQAKbOpFs_1ix=rE!vlHw?Z%tW^?p{NB>HQrYck)1V6;-YNx`Ov*Mw zOfrLapD5e3$Ro@zBqyH=(H$NsX?3tudFH1HQ!U9Ij;CnAAoKWvD-q`u*JIZFz4^>x zH!FS*$VJ56DB952S+w}QSR`)KbuUUTuo=k8On|7tluFX=Qeu=~rX?SSpW6H!t8D+E z_gJVTXOKvY4mQ{kf<3a)F2D&FBvxI_DJ~{v2j{VC!WIJ{S&=dwMeF%^V{ZdNDLv(n zllIx~)w{p_^Sl)O^2+G(I}*npN}{XO`4aEsJ$d;2LSOb&srBf=^TD2d*A)N66fH7< zM(m2w`^inMDaUFoDY^|CKColjj%QLDq>MxX24;WJ;-Fk?%`R{)xBeRoi2QM?&`#f?ul80)zgRr zObs*swgc61K%#K>Q`?U~;(8bNbO%YSP2MIhuiIfZ2ChigM+vsf1?4W~k zcWDSqYFjejX8Q0SO-7eS-;KE&#``E2GL)+0BA;fSHD7RCJ+ziIY3^yjJh~FE7POTwY#zC8eVHND^MsS z$9GWbq(DwWMTbM5If2m^0Kj2nt~Kq+hxsRYE=FoL%Qgbcf43#*;epwb$K{hS&twBl z5g9Jfvl;Oc&yst*zl5(|2hBJ;f0G^?`qpeeU@0dHwckDHs)STwE2S0`e{PaH>#1*) zlCPB1m$Aw!w~^b28{M1@JURKu%s2)$$ql_6V;=LcWlz{J3HgKy_O)9>l%yeAKr(X>;U6&mkYZnCXLkF9D~E@&9@{vzIZfGO%MwpHi_<;L&z?%4h! zHies)L7}$n8%1oC{P`|t;yaP|+cksK?}RDSGX1|CryB>RfX|;_3rGADewit=t;#eB zw_`dt9*jxOSNi?6c-5kn)i@NM$I1%LRzK+alfix)bs*y|Cg!Nk!{jcjRTk!!4(h(oTUo)L%F;=_sux0oO z%s*ozwmyFZ^%f}4M0VRQ?L>u(P)^r>2}q^JTo^cB)*-6h#*=@3S_JA^pBVO()}!@A zaYp_NZ=ZjcAFo0Nx?QQEBVb;1J`;X*Etj6C>%~_{yJM;TTxsU(ygjvET^M&gBrpi2 z)QGCPV3QE}tl{DG(~8-+`BbX){8hTr8upIQNrw4HrEK8qnN^EG_3hJiBM?@#iEhU} z@o=O3y5b#n#dOwZV_K0syG^h>#1^J7@H@6(mUicCgd&_^NWyRGnXDL<>w zp7X{>DaFxNnz5FD$gC3$-POcR;Cb0hL!a1`uM|V1s;J5}o7UAF!g^dOT=ZkJ;-hqa zadSCa)io)zsiLVSr|WYF>{sN>K$G8u#7tZhWej|KB+CK^YnCy)g;QKs23B=HDjp+4 zRy70PKKfYJRpwC8ayWzd`p@8&1U%s5*|xogKQ<+sXYPjr4l0iEb;0JzQwOK5s-8dT zmfO$1R8r;)V6VnHa;@T6)h09;`!ME+5h>{PtKG6We4LEOb>lCB~>3u zWVd&^a7zpg_*;JP$WgxaCKe`8wHGRYQ^s99;nt8a@l5{miMz=7A|+uUMe8m$f%hq~ z>}sT<*=dFl!^q4L3zU&7F$^*1{nL9K6KR=sUu0+2=bhH>8sUS^oU%dnyXkmS&6=a!`H}ltG8iV{;A)Wk$qF5Unh_qrkhN$<$zTY z^R_qU``W-_R-NciEOrqV1053(c)sD8Y;7X!YV$|f-l{TKFHprFHW<@E5fWCsHFr8v z#_Xx{vEQc|)^ypxx9_}e-5Ss9dq1DQ%Js9qLj_FTigEp!)L$cH<(d)4#-u5!3`Lq1 z;)@(V-YO=pU?&dGknJra91ZSRBhQVh!29sOX(y>Dwr~D6e@i$C1#d-@srqQg`bAWkYDL$?JvlFMNRc!292AK(0F~*W%|E&7f(HTUNx;1G1*2L8#Afq2NL|RW zs+x0V&pGpQzKC-*1SzFBl*1sUH^&qi&X^AXlKOK<%{Zt2Ejhk_VP(H!WrLd9IcBbK ztT+q~$KX&;<=BPbbuB}=HzW|q&4Yx*Uuqy!J7)>DpB*`3EkPx$TB?+J%;#DM>uphx z&&30j;*;M0he}GT@ToTRt8C@i3)Kg00xpB}t-auB1ILO`kbK%5Bsb*<)g#!Gr#SK& z1Iz;-VnIS2O4N81gm>B-q+xJqUV-Mwb8z6GZw<0TeE;*7BFGv26BT!K1@s~Czzm!k z)1_k)kTn1~^gs>*NB~54fx2xuy73%w9DIv7`08=E2f#6a6HNS^vq8lBEhKnQz(FMk zq&D%Tw6}4a2f(l%laFOc zAQl*DP|6rM4;&%|2z^7fAWwjyWl}^HAy0tfnmCY3{0C`M4S2%I3P1;xS;PBhM;0`f z17Whc<@c5KYvf}bXv(OI<&^aRSbIPHSvdnVG>oI;Drl)t9-}%{Domka3(Ns)PV$WD zg_!ptp8jgXRs^#EIf4er83Sv_(f1qogJ^LWtU-TpEQEap;jor2yPKm^^}fJ&@=|jp zXig5tdG-WqlN@M94kxk?f;PYgooKEM=J^iHUV;`+l(CzNiU9lYJKJ`#B#v`HBilh< z$G`JR-Txn!o&W&@q6BjHqLRxQ`L9XBl1RIdqB7D>!hiF0)SJFg9|e)r=2Rhv<|I%E z)E8ve=Rn0t5)L{cX}6x$MN!TSY=rL_r-CyjaUx0)U33p;2zkSL2a*|b;wT9eI`swh zamxd3dl%~WjRoM+Ida}}2sqOc2MJgYsgb|_hNK;b{1=EpcUvWKcFq208Ns$7|8X zeO8 z-pLa);#>`aD4&kjy>c?EUt%%5X67^8T-5@I2OSgpAd;&MT&@CiT&!Zz!`T)tycGOm zhr>R;A2HE*y{Wr}uMnaKVkZ+yOsRK?iYg zcDZeqz06rXtpERlSJb}@a}IKNx@vd}D2J1=T83?|BhghKNb-Nv5GPb>a&;qDjIKjUl0CuhEL;rKXSkSiutq?heC%lWIYNU~b-7Gy<$Ga~*V z3&)B22vF}d$6C$;VL|xaBo`V6!*f!Gb3vSt1?D>!41Yf=2`tEfUB~pWc9b=zE{6t? zAAs&`ouXeQw{s+Ef|7RgK#Nv5agF_NazYF>aw~@pYxG7|K!qp&2s|s6#Lc|ZVZK-H z@M=kH-Ch^5)r?pqFY|22>n-hkwV7k{CpZDy9&j0~gnTgQAqeE-!n#}FTPz^Dm+(Ij zA(GR;+G&t%hZFLg)rOV$9~j_Q^w&c;BWj>Q5Y9|2{}z0Z!6JZE)NAuKc%J^(je0B3f(FTgI1)J3b&<1B-AYgXLv7>`a*72fJIz3K9BVMr zq+K5n3r^hGaMJo5q3YK*Cw4h&x29W^#R#VtibpGft0A23>)3NLx^i~89>BWl}TbpH&1cKIE6zj&9$%Weaf6G7UTKzQX zC91Gg13${OgV4uWIaoDRUNEA?$-xBwPd*$IH3(;Zg@A}Oxggm4{-* z-tQiG{R2nI=KyZ90ch#eC@A%B>k`U2<8)ZvE|sK${}?E~QRk2=xBu&nIN>Bkc>HS$ zNF&_~Go-wk>gI5BRv2)oDTnG6SdQi08$xNnj^6cwdi!oVQ2w^8X)DLuXTUJ0>4Qx^ zdHn!+5e$;1A}a5%|8=e)n8Lcd5V!wz&fby|!l;&`wtn>mkMQ6P;eZ;wFN+o_xdS!^ zG3;IVqBRN_;{U@G3e)WT-1l8H+4QODSo#;+r~bHsL$*&ebh_^C4NJg0r7{?wvClYv z*V+0lP}ckb?+mQ$VN2tz&>fopC%b(yslNe(fKPV9F8qed6=eBiG!>v`xSgeA(*WB$ z;cYuyc>K)1#24a63E%9|TN>17b?}^afTg5@0la6M&TiiK&BxXbs4PEX$b_(zjgr6I z-+hzt5Mdk;KfD;kj;c12fYAI`#Jo3LrrB0fXDV%?dUN-*e=r}DNhD;ls(1tSXK9)-yt&C}B*)Lkt-N{6oIR$ozT!%U_S z@OPY(9_WYoe=*18E(AR`#oc(5wyrbP7kK@y?c*sN=wztIz+y3qS2iALp_RT5$is{s6 zyR-P&1xCy3plm>>uE(k z^Q$EL%DknGh%0OGu)Oi-Xuq4cKkKEZGk_0udt7!uN3=VUDm@6BjRV`x($%)$o;<1A zA-Xka^BsG$Y1)c$wAvBH&y*@%JASbx=2OE{>dxS9N*ZfK9KT9mr`7RyGHDvXsHtL9 z;nO@wLl={#W?)?QDLEzSQ!BaD(0Cyupf$G2KeW87cgE6fH&Q&W;IuZIm8vli$@%y& zVDo}K-D|KY@q*pfYoNjo*g}xWHs?7Pg;YeR5Beu;ufUe!$J#vC@y%nipW-(0&Hof7 z_CGOv5|rPud!IdWl4~8ncaIV6Ih0YqD>Om@CHBb@#im46N#C^`JQ=S@SDZ2MK}L!Up3nH_WpVg!mfK?s2USef3La@?_je# zaxx$ZBd_FW8#+~f#{sJheI`SO#6?u)i+`6`6pGCZET@J~-Gg5ateBsea=7!kwd~8( zvz5TifsefR0Ev*rF8^n|$0fq>31Ro~i+)1`hjRKnGBc;P77@EGjp{mTjV-3!F)x@Q zfgxd{laJNELgsdZh1%I_Wrsv3dHi<5t11>t9qV6Dyr`_FX{NWA`YMJU`y-T&y;Wb! zF!;m!-X*r>;BH~QOa1%2^}P($#`EL9{rXau-!$C3eGiz-q^KLEPgeM>sx7$z}|% zQ@F`iXMibN<9_oM19oofqfxA*Uu-kko4qR-QvGCPJ?3iud2GXLzomnbvc}oYd!{X? z?fhOu=7d`GTwOc87X7a1nD^sZKP9?~zPzz)cKF!knS8iB>d^Mx##xH4rwpDp|HEOL zt!mG%oxIy{+!+~FIw{%E7@Bm~y50`mlsvQ8cNLiPG$cyMK`$YTmNFD8c8;vQ{&9!) z#Pgn(Qp4pJb8QOa6@A9nT!OIAHc4?ZIl5D@g&N_fsixJ<3CG4TpS)34PnWId&DI2I z(ngjoH-YR(0}0co`C6X!w@zfhlA4n17hLehjjU_H zrKf?a%b03FzRgtTdUcWRN&iN@&nhY6ry%Jq2Pqa+&pv+n0Q<5wC2S4eTQXwn+hsSk z*C@Iie2-OIX&OxI-t;=T(!?EA-xKL~BeX}`^3m4Gl}3kI#yz0WDjfgd0-ALZTP-|! zPaC>&y;0>8&MHQ(DnMd4k;H77n0JZY4sQUye+cA7E-n%@8zx}Ri;H+Jn)HhzN7v@> zsUNq)Lw=bHtgow1M3+eB71=sY7P-a9!9pU%7uTC#47jd5ub?Ox3?Nr+R0&aOmqez; ziZm2jCzaImYp-QBOUIJ1Qh;%{%`SQEpU3abf$DVV} zvv($0XRXQXnX}LHWLG$P*>F-x#RNG$+Tg3Tr5OYy{5m+b5O*lj%P+{THwOII>`5R@Tyy@-chP8tFma_rb)^yPUEpY|wR^IR+ z#pTg&H_cY%8Q*Bhe?Me2S8pA5ce`sA3$Pt(uJ)`xDwG;fuef-dD$$a?Rm~qBB?^ZiM>iLcRuSrO?rUi2@vieSb>{-rk$uu_GZsCas zfiadEj>l#%Tc6)drbvugrf@j2fMFGUER_BmL@-1LLV;(e3hTcxQMw+e8z?I z*dv+FAQm)F)c3yBq_wQRJ#yabsX;E-ojhnnsxDlga74_CGnv6Z1QcM9Yr;XS%gX(q z2KDyxPb`Zmx4c|mPU!Z>JU@k?qV$-kbbXj9;{P z7gy1Fk(eZWhDU9m9XtR~i;*7=LJ*;|C1b;Ci~JS(%G3}Y;HzR23c;ZEq<-sI59<-hhPG91Isd@pu8i7%pkFCa%JJmM5LsVY z{U9XfNOIQ;SSYia&g}y*t-WF;s?WVqSnCS;EiXv^Fwt6y#k!z%(c&=!i2BG&cnV61 zcwHno%*wJ7Uu6tUd8MMw`F1!nb>jo~r_;`N)acz{B;|f;cE_Gh4>d%2%ObjuSybH= z!%XTIb=gd|X9@{mUJvVQruKx~P4wu8u@>gN%l1PM?Nuu41?kz z9a^q+gTk!xtU%(AJ#6rn^+Nb739pK(myz%t664kiBmO7V{ft_34)Q|%229zhxKk>W z4CLwqmkv1#G32aMW@5N*xrU`$!|z1Su({-miT;zyaOP1jM6Qr!o(dMtr^6x(8`uJ3Pw!@iJOoHi7 zo(-TluXmq$kn4Q-gztRqX(qs!?yHL4#DChq>Y#F?cl_h>;|s!cmdZ>17f|*T>T{8x zi4V&n-rjRAsA|d^368chc`~ndrWVIK6FT(HshtWs%9W%3p&$WJ4ZZ3RyuzPZ!QgVq zQEyc;>lJqk`Y8bv(|uTaof@$pBfUR|g^^lzYAdn_;RePPy-~aN+(67e-=8j!fv8s) zG^^Vx-Ww7}h|;iXVWjeK+E8a;+KEPWkJ~<+y50Z7&c56XS}Tnu#B}dQU4;njsxY2& zzYWEmB0A~8Tz4w==fV^EF48M<@nw&R^w@IjFTp-O*nc(@cFZ;KA(ldp*En6r&qq#y zB6r7@73^9Tqx9@rfb3{k`uh9c5OUc5W0LZEKNS+>V7%Tzg)N zJOT;+4w){F*Y@=9y6;3-Lj;hNQ=*oagW?UU|C#TURa`feob6Rvgc@Cqk3HL$Sf^Y= z`?ibgc@9k9j#^KnmBZW9LXVo99bh@mnT!GveD!?5V}Q*Az8$*H9Rl{|O|?}#VyC6l z3&NMomjXXGl>bmx;f>lReG9nXLU$gFaH|)ySl<6951>f;ww>E5HrkcA9Rn&V>{08V zPHx8q4xlVM167wAD%L$Y6gV53Ma#Kjw!e!1{#t#xO3>%^onwJ*`ApTf+R|67V<-%R zQfHG5YJexa(x&a({-r15;~j4HR~JAkO@56DUa5Ggslbg ze8nsB45Bnv_QMOOM~>k!*=`haYn{Li(0eGwRBxejmsan{HNN>3ij_KHOwH~IA}LXi z_7#VvV!HRb-~zjf*Z!!)wEQNal)e6vXoOI}<^buQAfVfX%*m#}!WBz`6?Y>hd`Oqs&Zrkt*i zyBxF}`L4466}$`gWQl714?^tlHgG(F1vq5S`lv*lX)*jXJcOd3u1Y)F@`kAK{Q~gd zHihQOfu&;=j(ClgVBZ*k2agG>zg+bal)`*0MHrOtTf#i62CBKE#HZ4#P44W5eA*4# zBi)fXf(?JgEK+#?{5ig_fQo1&sSd@4E;Q4cUqm}kIHT`=aC*jK*WCXv;(xByb>#nt z1NVV*)gce5zYWUP?XYkIzZuiGb=Jxk}3~IRu>!+Y#&LbDWJqH4n z4GXj;n-E)%nj|Twr&C4}y?&Ytrhs`AFmSOV34dH-)WjH78n^q@X3@M-PXf#6?+_Y~ z+Ga#0z|Ko;WIn>OmS~g!%oqiWx5ZE2uN|DNp|;iVX`Y;JuJ!o`u?0}dzBOQ8{)el0 zj1A`(-d)16Xd^t~_sYuU%0Ae>tWFFvwmA~?CiKkrLS8qe4$fd_t*w=re}f88?jU)1 z3;x6p7ZGfgCF^i@%1l_)Q#njFZ!fA^ttHgrfSQC0RdKNe?(2D($8Db_AZ==R2t-!` zW-F6=3ZC&IWXIyJ*ad?j%l0bgyJaSlQ+`ujFmEVr-s9V8^oW|tfp?~;&I`TJ5UI5l zl8{5&CDGkXb$(LgUwuiSZP?->*>9!(PdBB}YmKzOc_Zp^a$vat3DQXxP3@}T{pR&l zym$Sd(g=)VCeEt|YS%pGRqMIoTZ}oOt2mxhu@Tc=oAegWI`aC)<$w&45j@|Wg7SD+ z_TDUy4})1E1?rVB-%hv$zv(@Nwxm1A&O2@jqMq;X0EgUGpYfRNTvR~Thhxrf zE`3}m%y|;+{znZ3mPo?>OR&*bE>8(j)J5998lt+kdoL9Z=VM%#xT*qS%)4!q&PpKFg@=_(#FDihE z^ySo9lHq8G5&*PW?3pX!5}wMIbDNE-tWj+N#mO!o%L?#&4SpzO7j}vIIYQ8UDo~me zHh-#Mx^QVRGjU*TfeggP za%LI}=q&jiNrkF0--pA~Og$Z7SIFdGzw4=OP=GL$s8FX?>$ybEnp-KpC;lYzM{>`` zqRfwoz__aH*Lpg{grsg)>1X0Ol=pk0XBiSgV^#e%?o}uMca;CTN~Fd;`u~nz=t0gs zE;YVY;%Aa9mDRqbp86Qb=L0>=7r+Z-Y{amZEiv@%^xYUz11T~$nuQ2o@(4x!b?3Vl zCGdmONgw&-?a$|VYps6H22&7ZYjMt?xbA|)d#HZSGB!{YSi*~GeG1H!LKtOIq9 z%6B!i^oO(y2z;ZZ`N^T(|FU74&29*x9`5gZxoOuszZ!*_5nsgtH(!*7CbRSl*I1aL zUO7iGG_^f^TR-l#Y$^W4JYHXtMf$X1^7nb|9j~A6>ageCb}+aB@$sNQ8UG4w;C6D? zJvWPI-prX2=vR`txOCm=hcWe#AMVbFwRJD+SVPM&_bkR5h$6EF*53(le$^ye@dcST zms%%>m9eJI>|Aj}0dk2d3rhUf`I+v5h@xbCX|z3L?GZk*Hhk~?AG3!pfyz?si~4Y{ z3G_)gN45m~`;Y)^;oeO4U@~dx@g6ta?S(v?ye?V7w>B?hq4Ee8zlt}1BHs&h4O8Ja zH#lRO=HwMo`piDYi6aZWDkcaEl(DnY($LrvGQxge?f}RC1c4gAlwilNVadT*iwQ`164u|{Z3`^A472LMsZ~f- zv}LbJAJ6N#w*%|h?tM*s0$= z16PbuXtXNR?3eJ&FtRV-4(9ntB%1xIQ?zrkrig{UkbYgRIH$Ql^Gl%!TIrS&rk^jl zC^`3DiN0?BbH>A|ie4@CPut=?xZg6Zt#LUON~GZ0l1qF0!% znzHxub=xmYZ;}ra>1kxPRIj?Q;4k&#UqPV@Qb2g!a*OZ0U)@#sSw$s@lrAy3{_=|* zF>h$u5xdA&v9-Ewfjuu979DEl+L!D)v<$~L-k9>`EO)W9;L(CcU=~A%J>AvPK26oL zh9b^OY~|fqn=~h;mJVANJ)cOf6CR)aoR6~nGM7=+{}tR|!> ziEV{!SKX%PoVXajhQ}N;SqZ1C*0#(o0FOy=WAo=+YjicBEk9~h*Rf9RP2sa&kKeD` zZQPBW#d-63pW*^f4v$&QKy;JJe+X5>qYWLClK5+D0b7*STPxyDx18ji^tF3mFczIf z`D6NJRt5OJrpd$yUpXGRG^fRW($-EM;qeR&rRdk3p%o|gW`-n(X02|g! z1GScIYFrJRM@N|<)Z+b#xwR=Tw;4u1-q~h8M7#o8=@IU76O?VS9-7(~F9K_G&-s)6 z5Fe_i_~nn$w?Dj0Y4;G(lm-BCC+QxEbSgU$Fxp@v5}(j&X?VP65n{7if1<)B-G8jk zgg>&}I$ev{@9Ixg(j&D-PlgNtqt0fJPQ6i-Y-t?lmv zH-_DW;v8;Fa)q5`M{W~)PseHm1cX*7dflY2VTbw4kaYC%B|$aJA6p3goIUO-8fMtr zI~7aBQ_{Wo{#ZmF?m5go%j|VB1-@LO@d@(dkELP|k3w5Nt<%Q^aG}c-{91@nqV?By z12t|85vdaV{tm%F523ecL6ARf?5m8b?V%ZkXS!eLc_hWXQ9 zvS9u$W5sLVZXy@H!b=wPRy}7xx-$?Sy`Qy-sd{l>SFik#ti6gpRi&{^mgJPp#*p__ zO-XIU)9|p<(3h%pQ~z_+PT`m5Ks`2CA+Zr{SW;eoG{*;Ev0t``TX;HME9&)%>h%sgYbY+-3%YQ3 zVU$XH)b{GsY*g$}JZazIoRY4l_6PHSyR`RT){Oh{Rf zxEdcjzx4l^sWB~4)t046;{Mf~oCu-X1?yynu8K=9lD>{IQxtOnN3L_l%W7%yF~FQt zsMcY}bLq$}c8TCg zl4T>iQL=UX>&ysAG2Rou>YXdErB_b}GYd-a_bOZbyTIWsUAtuY~xvGW*i@&5u`=fl0 zKY~A{R>UcNJY=wIHE`GFz#;6^q?RZxTeq|g7XyCw|42@4_&}C%+&>WmXPbEQ+Pgy- z`7+iSr&Var-Hn(iB(46$vLm#aes+zBV2jwpt=E9H{aRP<>v3b$iz=?iie(hm?Y~1{ z25C9S^2RB;;xpn&fkpMfo=^}ebfocd_UFMTTIQ5lO^ZgYdz%H;$9DzKEbVu_IM*-} zwXeCU#=qX;qm|$Tg|i1|Zu7d&h+dx10j(cnb3QYho)QDSKgNLhUVW-d-6U>Q;_%c} z8<)*jLjEbWmQ)k+p9)Q^IDpSb&`D^`f8bt6wy@HZ0B_V?A^b9dh+%)Lt6<|Is`2sFYa(=3_utcArx6;A)*9aSek`TRR@}!_7 zinv|>WX)usP>M3IfU}cyHUB%{;|B#c%96?*?&HTQU4yqpSnTDS1w^iQXV%!{l@i?j*A0vd<{rUZ zo=bbF0ZvirbeUcUL5v&g(4zELL2a8gDC0+buk520S?`JIALW$tCY>|#?x>ZYZ!#>M z6zr6dtI6ca?b)-l+@0g|w)&foUwzzQ`A5e zu#d0wNOLPQi6s-}t#u zo(YVVoDx!PY-WKxQ*u&qBz-R82Di_$JrR zuHpB~+rwM*-G`d5W;nJg5*gh4o7pY)|5Qp4pSfd#d6oC9JBC~Q2m`^O<~4m)7`0-XV2u;0hKc$YX3afRQu!tY$Ww{1DtW$!5VQHke%zcYwG*mJonfv@mfEZSqV^~0SQ%UewH@)in2JK-txbcTZ9LLb~`(RW?NKHT~}P{WiC=?Mt9T&wN(>{Ev9D@|MWb1$u; zGm81_X^Wgu@zmYD0A4W$}O0w@T z8%fzeKI3*Cm$FYeWi2(Xu!}vFC^bSM{I(b?ty^R1xAc(uSvK0|6Sv)s5iU8J9zPd~ z>+Ca{IA$lDusKH#1xg>RwmAGt#`5IXBHkdGgT{?Cf+olg*{8Mu!2}e?UerUd{K4kt zpna5SjF6MfWpi^jMz4?C{~9Xk`D*qOAy-{UgPuuD4po_#eqpUOl`VOLbe^OIl$O{q zyP47)`KR>A@Co~0?zB%#>m%fHZ$--GO5SvPVsU3O2Kg|?Rpe$h@g7*ik=0Mzpu;{v z*HzN{o>Cr=*X}YRQg(?>@vXK+N3Ebzo)uczvBls?(>301Pne-zM{J%_Ui}gqK`g!d z{DU&IcFDa!*G%jlHrHVC`ay%fE&A6*I#1T*7613_0oNWE-g=^Mm9F7o#}NC8oRe31 zndei)kCMMv-m>$Cop(OD!Tv3Bq%%ocKTy>9+H7U5+u2MzIAd{ z*8g=Th_%p@*RK5Q^YIZZHK$W#rR!4w?&nVTMzY)rPihyUUTm-BKk+~*Z~ zV39r&5@YlgQ)!;NqW$K zLjj|)Zhg0}6-!Nj+!}I7mp$LiKy`fOJ>A+6%3nd>e{4UhJqj6r1H?VqmKyoNqY-hW zurV5)*-%UVZWH`ZchDI4UoMrg3D;;5aK z^~@Z(>}_mK&1^ZRWj>e6`lvtZGA9K+xYKGmEk}03N@o7`ei3}7+zs!o9()V%d=uX# zv3<3n%mdA{EmFAA7WZbJvv9)iyM6$J`P)UUh#i%;n?WOG%{R}Q5Yna1w{n~Ko^OQ2Q$sSt*~wO zq*s3HWmm9cMHmfzH{awz7zvFAT9p#AAz6KTDBV?;hr)ZZg)DgAr^1u#mAa)ErmVm% zEx(l_&{$Lf+*0`4=~WsaOarn{Rpy{UJn>m(_L&e^_7_cAkMPRJ)#WkcBO! z^44ttAIna&?K9dKXAjx!BF;^)MN~Qe%?P9gAa}F@#J8TR*=EBpk`L=~@6IvcLKJ(% zK{Ws_1vs=0;&FxNuH0i%%MIt3GJjKfgbyol$#9;6L*i1*xed64sxZ76;BB3~E=WCn zY&p*5{miSwsg=d#AlTc8*d-UrF?ARWRnP8x5i01pSpu~HZtiR_s`q%`EvBb0l;e(n z(v>!1e-l4ocazhfv%ATMtGj8Bt4-St3;d4O@7heiA97tboM@YpbG?LKt^0PDUgf0s zg-Om+x7;ZB+NTVj&Jr@ROL0z$f6 z^4{pbkm1{qPQ@-^u-D6w)y0?Z5SLXYIfokDy_ceMZkffq`8#x;I1F(B z;YMg1+gj*9ZZTtb#+*uDrXvt{r06(_L;M-UA&`IS-EK zK?@_tPD}_g=k(37VpxX|*5FubI|QeOTx^K?7tIL$eFEZ^IcJZEeWONF*zz8K-6@^R z(;F+9c|XW|l%re3;gT*F3)o?3r4(wDDa#wVk2bfw55K@3tA$J4MKl2J?wzbS6Yq%= zIZIjizf-Z>4R*K09LMe%kEiOFCVAkdy8~htHS;#;3MIE5c_eJOiZiQ9X#Ob3-3VDJ z|B;>Bypgscb-UYp#OuCju#h9>d4g%MktRyO+Ul*uWM5!e%oJ;sN#`m5uKCQ%yO2R{ zi@R{GH{#~^#zcGB`xl=A2sF63aYM*m^9aPkO^PlJG3>`5= z3?}of`rP5jNYV(~-lU$0@TwFi9xIV~w+|qyG=Pn-=(8@MlV07e~6gsn(@-}_= zyIw)jzs=9rZR-isfI#rk*EYSMn76z~89~tYw|op=CDD9id0_Y3olLOtLX|f|Zv_*e zV{%}-CSKteIIvR_Yr%_vrI=00Ou1i6nVT0f6;wZ5&lmO{sfpCdU-zCq;4e?NW+Ew+ zMNu*qm`Mt)2(Ela@3ER#i+nxkY%=IBRft~HS)llr@%UE+F!EYb9Wfox;QOD|AC9J9 zt_K+<_uUsjxqrf>?I7H;e}YP7K!}MyQg*SVyQOmVwppYHr3wHG*N}@{ZX-*^&|;VK zetcyQ#lT(e*e-*_@2)_-raXi~>+aw8|5AbW+$SP?DRi{*G23jCKS6=YNjG%7@*Tz& zF~o?gBtZdgX|>qgKZ4w{sCT$ODBMSqU*-eae-DW#Q=WR=Wr&J4+h-X5vj2E>QQX

r)m#}wxT~l#2eX@1t-CjhGRJi%9M4D~Hnh&AI^1W3m6QRyBLN%2O zImHhNJLq>HOYF5`_wF#5d*=A{$wYOfDnq+{7~{;(KRBc+a@VVbv!oVyzq0O1=C%W7 z_QVr72W5uMt(qzU65jbI09ddWii=?r-_~TxDa zg*tN}#$z(uuKAE1Ysb^Bi+930ok{pxRCMyvQ_+9Y)Pkoki95-k_-J9Q>}g@u;Bffe{`!v@=ZMZSQE$Lk=w2b|vmBQH6CpFIvz?nx!daemiNemSbUth_a~jGN7))He=fj>q)-skDWn|`OEuHw;|^1K(_H^bip3$4%yr5 zSTC|51NJiX_YoI&)fq#C$J9!s#|slkk>Le0?+1>_c@{K8vVxK)giWp$vY&)1QSmhzs z$&*3P8ho{Q+jD&8-`6#1xjnpE5vpO5WXMJx0!s0h*2PN7aMmIYGb=$4-O%tW#?$!9 z8ThS9YT*>O#+ zHxvl)xnxdkA}2O=dKQV8lI&s1G1`vInM`<+n|lqAh&vlu26I@&b&YHnYN2qZHi0fN_pY%;LvI@^wna_ERac@%qH5!ac3C(rQ{st;JovP71j;0@2>kk&H9OElT4bp6uCj9CXIZgDN({;ePd+ck9JZmMmk+&dlV$09E_e!Yl zZc*`~nNCQ%2*iS3NzA(sCQ#NjY~kIl7?nG$3>|_o#wk-ju;}hy4FX1CjJk^Jk*R{9AXyyLU3r*378UVBt@do z6wWV}n%%ehdIIR-caW>9HLjavMbw&0kssXBa}W?%73*b3^@Cqjxl|LTUs+a0nBDWY zwSbD$u?Hh_!O>YgiUiRG#%6?DWx>fyf&}CuIXb@MeB}xEJqRZqLa!%hMV?y{!lD(8 zip}j=UonL$#IaL3grkA*q@J{8!(A_E(}`%N2yf3cu)^hCe&U=d)ke=AUEqy8@w60e z1EnEAovdHJ7{RpM_TnZHI>$2Cd#vY@%Pgw=Eb4Y{MMR1T>Kmrr)wf7gcj$+|7Aaz? ze(6(~{wYzQTRfRtz&Yoq{?Oz8C=LllP8LD?P-pG#(^63;e09^R;fkCfFUr_ek_q5( z6M^0X%=2nBD1N17|2wFom7Q8FCW9SYO^!Cx5-xCZCLY?EffCAceLf@In>OitepVKV6@ixaAt;>~7Vjwh zjplBem>P%dz-v*b3Ori7Eb+60^J==0&(Ir1=Q5SzVL=~LBD12qcNDk$z;1jR4p3;! z*Lgk=B?&$IRZcDhdIZa`{gd+Eos>J2R!UlMI_$*ZL3CTe{J+&xq^4kp?rDMLYLpPi@G&6e`q^( zXgdzCqTp*agV-9qK4L0L)wU3o*}O-4*OzjtQ=&5Dx_O>{j}>Q_5-nW*#+X@% zqD#|uFLQb&?+S5xNwOY~zEb+-{_U0M(dU}}Z`)OR5$@aKtz(0h$qQlgc|gavQAL6n zE5;RYy(yI_z?f|O5+wd&sgm181Fg08TA}Z>Ax5w7^k)JG9tl)-P0^pE>+JnRcWFhoDw$ET1OSBWn>*UNBpA$Ly?Gq>Z$&~ z)))ny4#$TZlYxlgeXAf+WbwWs@&1#ln2Np=pjgG<3a#K6f>2VFN>UWIe+3cJ zS#5bfG+rQMVqU-D`WC???kQc>)fzFUG_S|{CHYnT2GL*Y)p3I+fFgjr5p&^d`uZ@# z54nAH7IR*;1OovJxA~P~hLq5)`!=MD0!eoDfx@Z-66Hsxisk}-DLyS0LywcVbIjs? zi;`=A{-@0`Z~LT`*V3(gGCk`9wRWJ0lu5CQpO~}4zLwzkvetJo;3ar?z!#lW9{Q&2 z0{EAfTs~Udd2CBK?bKRrui{iz;9(9Gsl9On_zIjnhUqqqb?VGn( z)bXX`Uhojdw2K>N(Pm82x1N!2%NpFn6ieg#($?& z0+yQ!x_-3;Iv08c@wQ7~1RAzs7Xwrfg@M`Xwa1#{K{k(a1L!3d>VGeXvRf@M{@$K{ zf;u+15xkEZLYRbItzeS17Bhw+kTVwHa@J~-K?0`hv4CBxLM;7)sQbZA{ELM!$eTw2doxJ-x>iMWQ%(A)JbIt|;Q7Xn%U zt)640;!u3yVQbivMbz&VvVu~G^2Xkp;7RGSm<9^-&Mx~>E<{);B=|mV-!4TeW}>at z6sKcXR>6!9nJ^_PU*QUgu*)Srb>EY-tp9 zZK$PWFNT89_~jU)Namp`!ne&S^SCwUdfSxu$gz+lN#1+<7*c)$=`>mtZunyWB(5%+ zyyJqXdY%q7tobh0Ron^)u{Nae8Ip4g4~0iIFgZOakP=01V-FPVNoCqN28G!H0#D9_ z?K=S(XG(#63W~nu%*8&II%|qoW5-kGO^H-#`4b>K_T0uc3HT@DEX@u>$`l2M0;)V=PtUF%pn4K^7vo#cBPua!@n`44&~~Z`_W_kYf+7Yc0IXURYP&vF z4LXF1!ksfhJE@?|11fs~W$PB{81Iet>NG>~tWzX2kAuBCK;4?aB}o!X0|B!V4cJ&7 zf+F3{%`K0C3kno1Ts{@iu;$h2K{fI2rOFvzTzu&Fou?LfUp>NcB58h6?V;9pI;;2l zBRnUHr~jh5y=`yizF)NE|EoOoUwKb)JBKlyXXn>;5K{iHaOw5u4xvjB_bV!qvG28z zB9-rcy?3b;{Hs!T*}Ai?U9^sFp*^mB7RwpP*nH6f%X7jJd@tTuz^@79^U9|Td z+pdm>R~atNfdTF-OHaRZYyAu5zV7I)Qpu?MA47Y8J0F;}uxqnjA1shX&mH0Wo~9D_ zJLdX(18?cSewNoV-w(cLu)LZXR`Q;RGhb4%WIR}Tvh;ZFhGmS!dmX6q{g2A;#q_UQ zhixq#7ShM%N(YLWe+c+45Xj#2L3V=y^6q>|fP(?@eq@Os5c+_z6FT8HzGTy}wRC&( zzs1g(rDjuh%0Kw9S?o>9Ev_&U=N@R>*7tX$#3Qk~%Lt@|Y54XdHUIwvu$(b=Cii3K zJ46Xrcj8+|+m<@8AQf)94~Jk56}E^EHl52$&%n&?9V1JwU^a?S937@J%2rtSGAhEL z1GN11ZvmJEAaqSHX@c1)tiyCb?DY;i%Ny3QIvtBRpTCR^%$e;IOWO@>6xnh*Vo&Un zxaVaMx@-y8z!P#i;Db)#N9%`v8^l8T);RQUCG*F`?*a!>Z$F*K?)+vrRfn1FfkeAs z_q~hyd`Xs1*!a_ttzTb+T+aQ;@FRPxd!G(-wB4^50S*oucigY>g#XGBKnjk(E6c$l zB@Ue28ADl>AD3Y{m3W#TFLv(y4yY6!|J0fTvbWg~#)6vup?iD==4kpa;&B?zd*d4S z)!3!i8%o^Q=Ob}B7T)|1qLOlyp`vdYbtBF{$mS?!(yNC1<`j5C4#Xutrb49;WF$XX zcdh--XaJaJ+9!UK8`w^-OsQutJ$c%{o1ynKGg$#N*@*xVhyN+`O z#i^5Qses${K~(K05dRJ%mAv&#{T=&iOS&R+DO#O9f$?eSx`I zuM32GXiAXcxq&##Q@4{~h(LJX6+cRg3)k@$C!lw|{}JwVS#mt#&b$WL5Fqq6F|x}# zJv(ESVai{xBSOFJ+abGr`9f4B!(F^ZDE~-C^ym(!{AFplZGDS&Zp?DfiRRoDL{=t{ zVTYW8in(`hSF#3l+86v_R%DxCLTc%AiL6$wTK&o$a2zC>c1O<5bSlnB_P>|baQOiE*KI9RQ|DUGM_a`DqJ2gi#U{PhmLG?#nS zN3fTh2Ep7N5ov|kPKZDX?1BA(C*9>e<$cWlTGs8~BC)ktE~aKSGCv**ijwJks6lW5 z#hi5SG(Y8t5U|gG!cQ}S;GUi4NNfU_ce699Pw&U7n$HDY%~Pn-9#3Y}+hzAv=1hcT z+ldC#Z<8+Ec$454@^f!rc`q>0b(vLN=^7hjT8WKA+-Bqhxz++z*Z zbF^1dnHzFTdC&`JFZYSZ?i#^m55MirR@R4HBM%VK=X+$$^Fh$cGmvQ7qE+%B5k0sT zfLq&Z-t{5P2R2eXEswq=4?lHrqAE@U)<-s<&)A))d3$8{g5%%mklYZXp%D(^C z2C{p9?WK8_gcz+hQY6Z?ivrmvSV7SN=oYeZ#nip%gt^W* z^P>l=M9S^F3i~T$vGVr!G|_b1o(Zs_baWT%6z*wHEZ7{%5@+;$DX_-_tPiErHJ$^a z3|Pm&R#2&7!@2lsR>mdE9`0cimFVlN@i_aQqy|Hz=`$g*Rg`hbXR3MGV@J696L}{` zohSZ|8d1@aN}~KTg_L1gQRiM}xzw+>v<~EUJ)R#l6+YWUz&&gx9~zclfQ?70yfNgJ z6N)!aD#KU#sn>Z9OiD~Q@vzFav9JQNLb)vS@7X%2x;bUtoLtUk(2=T7SG-QsuMW01|S#mJZB4i%!56fNu|0@Oeqo$Mwd5nW|SDOF0VcoxnW%xaZ;@s*yBp zvr#apr1KN@yn#cRBh5Yn=TpjSV&A*+hM?2HrhIkEL85_4nO?zRvAYaw*1&`B&cYtQ zjG|td*v27v*3;@pF%>aL}RfxW`hj&#q9>M<)#a-TMsu)ZNE~ zXs$|S&yH^mEWx2GnXV%LR*cESL9^BAvi8=3f%bi>IvalW@Kwr5>g5(dL%sKeFrMUAk-GC9_0%KkHiW@ zfpD)^T)?R(m*Rvkd-Fp%b%o#vgQya3CFy8DHj2wz9x6L5=-EZ;z9o5g2i?gjAu*8IgazoS?Oya&MSkFlGJ(qOGR|pJSn63a8j?d@HQFp?6t2v$XxS%=;)uHrf7Aq$uo;v9KFbh;*s+1#hfhzm$Dw)m1Ja z(WV2vI#nq`qIcJ=bI{pycYgtApG{P2KXPRBzl-S|Ud15ANIC>v27A3d1#AX|=SZ-k z=X{le;jUL_$0`VVk0i{ktBZTO2jPAJiFD}Kf~qvWW9fJCmLaL=3fgpTu8I!dU2LCT zodu_bFs>(AG<>FTuqS0Nzj|e)a}Fe#TRvl3elr^G*3WFI*8~;dZ2#q`=qZS6$QoMG z^#K{aqWiAocjb+N-|Oc*pHj!68&9*|l^e=785De1JM_CzFx>vS_+OSH-}_0Y5aYbz zt}R2U$)A$lGvhs`X-&8A2I|<)P0U;dQ?>?MLGHS-4mw-L?l0!wdlWTSs>+1{JVkVs zvWHjv^S-t3jPoD;{MNNFj=-h`T_PK}fjH{23ZR1GlQyfj@ zA4>jH8XQjw2mlH&VyqX6n8&GN1Yq_3eMuNw|}0K_z_}s?*;@ZTc)UraRG+{vJBg zKSEdfr|3@ip+9{QhSR^oX!_TfNDpHseKl64e~;Daw>ei$`VZ7=)2Hqw^XUod_37KO zA^m4;Oy7%5=~-+}Ka4Hu$FVj2G`6Leus!_(cBKD~o$05dWIp{YcBhxIC;c+^reA-< zzVw^epWeWM^!qrN{s@QCpWtv>;TlHL1vr}4<5=2^<7o#@q+b`APp^y2r{58oPyb6~ zKK*Zz`Sgy+d^+ziGM_HQg|q<|(-vGxJ8?O^2UpTQTup~@Exi}l(<$6YSK?;68n@C1 z;dc5k+({paN~QtTnd4EL`7#RvL4T$T! zc4VH#&df4)WnRYa%xl<_c@ujx8`zh5ANw;O;XvjS9Ly+(lmAQs4rlZ@k}-edXvTqK znNl3jcyS^V!pTe&r!q;L&g5_=vmef8YH%)dD9&e&z=g~)xR`0grOb)AoH-d+GN?Ss4 zTVhW|_Cq4A+5cc$_VNVz&;FNsM^;@&{!A^$lCCUT{i$$7CV7scva z4r_AzVQsDk>vD%;eeQq#5c$tN9wh&{kEl20#E$*uoC8~OUyG3cocKnoEq8N{{O4}N zj@%S>=I+L>-2K>{dkA}S&x`!$UK07wt&05T-VpiEy)E*edr#y)w)p^*Pd@j0%p@+1%W zue_3;4VBkmW95JK*i<==%`(zbc`LS7-hpkEcVW96r$dg@DaYxm6wga{rT9G9Q#p;j zmG@y^rTj!$DLxMlR6a_5uyUcquPDj|ibJWOJdZL(d4h6uy(rI8?8k`mT*WWT!LDEw3FZ%4aQ2M~Lzz%hN|*x7&XGZh4bzfA7efcH2eyPs`Eu5A3!-v|BzV<74%d z^lzjT{jaEhb+`TX-SRCNSB?_p2bLmA(SNc&FYojA&~AAqrAmG5Q5Wr&s(eLxLUoog zMER2HLdt*L{*Bfcv%lc;c~6WbTfR$F87>*w*qDL;QO&`-t#MGwicR+i7|_bqz;|D}kx z7pZKbysYSYN`shB+wSEA6wyJhWe*}7Zy?w0>!>?)ufS*mEw0z2#?i@P4& z-8GYBGGSsQnLqonkV$%G0+}R4c3IpH?(VJ!cZUNU+z;-~!QJh?+pkNyGr;~oUG;9g zvR8lh>Q$xtp>&ZyU8I-9yNJ?onZCM(%ZmK&c;UXfg^!B+{u{saW3hYAPl|h;n-tW2 z*k{E3%1vJS**Lua&Dj0$w_^8UKaSlW{v>u^_*0d;x>x?K;BUS~U)_hP`$D+nQ}?^- z{!qis?^F)z-d^2@!Ikirs{3Jeukia=p5lMr^Tfq(es{W&xWxN#h3`R1!$tU;ZvHUE zU#R#?Nk8$HA5i+kN`F^r^9RjG-7Eh=!hd|r+bex{bswbe3)Ouo`ObH%4=DXzbZR%a;q0TH|G1Gy014kzu?>P_X~5$3;!AJzwvkZmG@lm+!){= zF0V)l&5PyTzHnb+?y))BeBkCwHeY|W`T5N+Z~l1mH=BRoJZI&+mCIFbU%5-=xs^*- zFJE1+)~Z|8J6G>f9aZPmM^v9ueRlO7)%RCFUHxM9o7Epye^&i<^^etmRgctGYv-+9 zpmx#P?r1qNHJ8JK(eYEzO+TUuXe$IdTvHFSn z#p{==U#)(F`pxRMub1kL`km_C`n3M!`ZMZpt$(=wsrnD=Kd=9({`b0RoU3u7ak0jg z8`p2#tg+VEZVVd_Z#<^)q{hn{Z)&{1@x{h38h>i6-tm%mywM#SckJBp6?gpR9shF2 z3pB6Zylu1CtTpf4jG7N_KBj;9vgYfXZ)tv{`K{(Zo2#wcw;HWyw_ebCUF+?w54S$i z`eN%Ft?#vtKt9I2_Zo&$`ZV2h0y{UJ$ML*?Ic6@1UV35NEW9YFE0_zJtDDQ3YruDH zb0w^QS2i~`S1~s;S2d@w0zU>TmRp69^X7` z#jN40LqCMO3HLYZ{sV3U?(yvv^Yap}IjegOxUb$Y=GJg;Q^q$gjv14KTLCTnt>ea& zKyQOS3vLJQUEuD+-GO@w?k?Qfm5iCdy&vdPaMSS~0rx&|pQZ8Np!BEI{ej~DQu=Zy z#YI`*GC$HT->-hfuzY`Cg!>>5e=7JM0rwSjA$zz_Q1>Y*`WgQvy$hdzh3@q(8p{d& z%sdzLhcx~t;R^nFb-$tRPvE{7;lI9>A>Z#nzcxj`1uniU#{B+#QshPXG5p`4-wpQ$ zXRnwK{2%m5xRUSP>7E;X>xj7k{_vlydGMbT|D7AYa{{@jITwGP7c;APUc(#%_cif6 zf?jnV_^*xU5px}LKKQT8=k?7AAlKvbCgy^8KFeGf__OgmVxD6z3jcHQJYt@2E{^95 z%q4-m5YHp#Mds3YzRp}0&)1vFdg62hU%a>*0U-OLGG}e`Rij=daC8@cfOr8J@p2x4`q|M{kAaD~{d<>AdRb?cjeU zpKmyt!}Ez1!8Z;a|t|h$*e!8PAQ?yW&}1?cjfTht)2go2xxMqtyt{{nb72 z5AehnP*(?d-e>imK<>-u<5v%WJdV#Ntd4;^5ziy$NvrpQ|H*jb``N2AJYToE!1JxE zr}2FI>KQ!Ww|ZYZKd^d#aQlCb3EPL>BQ6UyvvDAJnwemS$N+4#LLd{46_T)XPEwp z7vOo16Hfs$Jn=LOo>)0_g&GtIqEJP*(Nf%BQ>0Vke@=Yvjc;`xvh z&%*Oz;5^3_FazT6!uWe97U+MNo3FH1-nR1Tl^=hu96fTrBey)Vab$SpM@KGpj@zE& zuIG69IX-)iznnqmRD!=-ZCI z_vnRIufBTQ)#mCwRv)$cg4H*#escBmtKVMz>FV!R&ABgp?rWU;hUdODHj1@#N9TUs zx!-?!?)RSi^XLBFxqo`@-<coR!TZ&rWbzs)byx3Y5L=Ej@@zH_YH0zQdxu9ckn zR#yhPKinJ+{=ewTMQ;&f+bf^Bm0%6D z!@Z8*9nb0Ud*eAf{zyFM$DfJk;`kfzJazm7c%DA~IXv%u{G1Om{C5tsil_X$2j+hr z`FBov=)beidxa~&S%T+|EXS{L2>%Ptu?*ii?-|Wr>fryo{AJ|nhuxRuyWz2zdLF5t zDfK>5FFqbq-zRma3&qrh?1 ze=o+|`4arS+`P=Z0`sT*yY|YpuMP+Qu4{eQx4s*lNPIW5zFSz|t*q}h)^|JWD_LLJ z`ZlevYJGR4?;7UDn2GDAit^pre8=1s{vJyAQ23ugKX5w>);{$Ssduc4c?LY>pp) z0%%~zZ+POy>o+`c%VW31-%Wo{?5^Gre>cb99Zr1j*lqE5hZDD0zct(&o~RrAyLENk zUksz$n%0@wJUX~;b1|9^4x;Pk#|M+aFq*ca>8U|4nwjFg=h0|37>{!E`E;@*V$SXyLCt8`y*GU`$E7I>8-jKQ!@>NF4Yk=uyThm_F->kZiw=KwhG*J?`7pAK z7A{1y-gGb#)@)#YJlY-XEvDVWf>DOinQTB~3MusF%VJE_=%%Q{TAGtkvk}g(?M$r_!o*dQ}qu$+bXc~}SG@YL* zk9NnJ6FcU36piLplw)Y}h`2YNdTrW1GqIgc{2Sd-e+WTGbD@9Mr{e=fst|QFW!ebL zFJ|-cflX$X!JdXPS2Db+ud(q)(6wsygn^NyIrX} z8mN;LmP8G$W%B#osc9ikv|?+5p?alWMM)G_*9-0}T zc64vZMSGNVo1MYPHbi@W8g=_3KMuFyxOdN}Z#dGYQSpD?J*foxLv%1cg}B{OFB-ZU zu~CR6$(6B9?jnC}Hj#|$?c^uKUWPJaSRhk_e4+`fEh87?U^a(jMHnbKh`|V+_SiKp zE7%>3W}8u5Z%VN|t1X7Z`m}g3fjE2-vLWRWip~}RQBkl#-zXyeygWM9oesLAxppw= zINiB$^x%IK2HoL!FCLj_mf5Vk7p;x&?RnQ0^Evvrhm?D$VrzeV8hsXGKiJ0XfV`8A zk3ymAl}pp{VuB1^2bLDZAnJ{!p;)i2_WI3@z?uY|inJ?Zud(;KWaE}vOs8l$By?&p z9ghy+Px_t2q+i5Yu21{X6g}4;j>M2`Gnx#$y(oW?Q+u42Qg(oQ^+N|nKdMP}%4pZg zc*aSAUW~uBGjk3%O{zT|9GLBWltugf>A@_*NOirpFzudZri1%L?CbgA0M)W&bubzn zEDkI!vX@5C?t^(J87R5MeBA1Fhmp*S^gmKZvK39pTUCNy1~IP5w1qrY|geUUYmp=ERI zbt~O7;{_J1=`@}LhmrKQOhvKE95!ucayx&7Pr_Jxr8&Ifv1#nY<9u5(5|`jq0Wjyt z>WU79HbDMTQrn-=2?}Gly6PIc>@Hi-uZt4wjm9&q<}=KNJBz)&Xj&VOAphx7e#|4| z#ZT(x`>o8l!oISOi=ehvr5mwq_dbtviMr1hcdOq+F*XroycHHny){=_*;LQ zqLDD>TnW+v=%N5c4kCnnKk5xl1yk_dZy+l~V?H%^f>vh6lMWX^QE#f<>1@9{)P=Y` z-iQmkH5wT3x5vPt9iqHueHuj?DyiM*h6bUGWwRuD z3jOHb^<7k47r6!s5+OU9J7Q!dnzKWG&~i#rBH!%x3vwT;RX}z%r+T^b!FV`%W{KqSH`CiO)7T-K5xk9 zjrhE=wB^PQo0SD(F7d15kCRuz0Hs;kA}nIy`jcJ=7K?K-buI(+0pn|?yC^VR@|UXjOxBAj2AMo$JzxM)o)tED4Ix1 zq3&3@Q2M^l)kLizi#<->!yzVobcMd*l7T)~9z{v7W25Y&#kJq9Ee1oZQPOM?Vw7hn zS#RHXYY*b1l`(5kPn=>@K$(BEO2hU(meAG&i<>~AEDcV{2*VOG7cQB$Q&6p2Gi&4V zFzSxn(tsLqWyX5XGU}cswPanle9+y4Yd8T{WvEWOlYN;lBm_eRU4p)tgGsF~di%3M zmwDBP{WxHAG(J6|mvI~kHZJZYkg7lPQEzQV=u2%G^z2&$8FWs;#}a?mTj*G*Pq>n^ z5Ue0Xi8TZAKosg8Iyc}i8POR2KAFQ(iDi7gKkj2WVvahbVvuR8ssuG~ghoa_(t2in z*xmC6KZi6GI*h!9%ntR%yuRC%`QK@hWtpDls=bJsGQa7K4W4)+Yti&&B1QVFQZ6;JOA5v^)G=@O7V`{d;}HtaI^4*g0&l1cm>5iLAu1J>S`K>j zXV%CRn zh1)3v(DlxMjnOG(gw7}-788=}4Gy5TL?QtUTisxw??|YvzY0z(8K}L##5%)2OPnxzq8hXvK9d+*s+f0N4^n{0E z_1k%|Gh>OhHB^7OT-Z zCdh=rp@i~S@R)Ke5$HtP(ZYZ=bPlEhfvO z->}o^#U;Z$0->4Oc-~q}CgUk2XZtu9Z-mOQSn6lW^fGz+nDu|NJzdum;H}%Yy>761 zMj8j54wt0i8PsvT?I&AvgBuD7GTZtQ>6GHDFV^-NDRY^e9Wee6G7v!H(E zg9)`=zlNAwMahZhD(tu>JLB%OFRM2PhZL0h8RihH`vatAsU}V~jry^m_GjCJ`My(t zWbUWkC9Z~$jG z^XPxl$s3T&1$$5n_n8+5R#!Nf2BX883I$NoFiMN0G)-~ZV+es!y`oZC*YfCAlCxzF zDR9tQg8QlTUKVXj)1sPGtfzoYbpZ<5_Mi`$&oaoKr!|sLINaU4*pwkB15RXETd-+~ z`PasCSYYXGqvN;G`%iOakR4A8hI>{X`viXx2ZLjA4!aZC4KN-y^w13Ng%P9{;EiZF zLC;CZ^+7c3t9n?DCkGUqoikSH>GjO>+D#i+o3PH%Vj!#O_@0PwZ7`w=xSbS;%q|Mp z*2Li1kUd(!OJrFD1|)tU!XX|uzh@CAFRW`g8HuK%@VS32Y03)1k;SFXZj+#f$HhUAcqjlWMIf9sbSJCF zXAnv}8GujJuBGM6bS5uMSAQrNOqq5H?cCbXfUWq8_wHg!hs{|!3RJ)|iol53MU%@y z?Q2!Bb|_PMk^uHt+}5a77t8*+x^e#4&t}LR&%rZJyYI8y#-I)DKwYpmU-ZbV#i?C7_Kavup> zBG73WpQd>m^S^~>(@FOUg0m%zNZZ$zbx9?L9*gmZZbu%i620V={_GzdFskTGY~g$h zlk=o8T%gGtm;$cbM<2XrG#y1lZ08rS?ZQcD1|H0Mwq##`UECx4xe8U{Ge+~6ji>n}lX0W?X- z)L`pG|G(}QriIy3<{KFHpJ9B8gYjTCclNG}cyYmN#kM43uyKPB(m~5>2M#W4aUjJ} z5PPExG4BFI3CFIYmtB9?1{!NFXHG0REyQBIyRJK|#libQyswGl&1e#l&g^_xzMy(z z2~vGFAhmC11#-jdFO%tw1uY{!%oP1bqlA8T8k&(EAedrkuYky9im_4`f^Co#Dlr^k z0iVsGdtvgi%mQJ6?xQ}?`!Pz*941JdImu$=TGB}YRT@BhgQ0&SDNs3$=o(HP+A6BN2Fg}{o;pky2%iY*03mk~>o z>V;HdwmIcEnZ$OVSqyM3i@j7!;ls$LeWU@g&g;n`IZ8_}k{tFcu)+=L)4nLRWr+yp zSP>p@Lc2i9z!(r`feA%;(P(BHsudrxg@xgcOm=*P;*x(+bRxApcC$Et+(%_+B2!lN zj%uirZO-lbFaZM2CNFwUiW{j?oAP&L(OG{0k&7GZWNj(w&qpF zqdn|fP%sZ@0gy!ID5jme?$D~&u!+SXIQl&p&PeZPi%>lD*nYwa-hrALWG0BY1MJ^C z3&aLwEHaq&S+?(Kc_Qn!Y1N3?87x;fUK zHEc5W4nTjTMn;TyLzXaak zhP1k%M1u*AP$?WKJm=5duI9d^s8}Y^uxfu7x6OWt3Z&hQ3kGxqvWuUl3G^J)7UP9^ z32X|*_1spa-PtY|+8dVID3(hbZG-Ylk$Fdn7k(fVYEfwGlvc$pP@3lyXXq)n3h6*b zNF}1I8Mr=5BQx$vO@yFyy4UUTrsz-)ictX(OH62m%q|`yQP+{KfA0@HNUe60;5L6? z_Y}^6lE@g9+?BGw)gDN zFpoOZiezq$6U;;i*+86I9u`PdUQ?ytONg`=*NnZek;Bm^Zy|r3j%df$cLVj^44C>X zc5`6r^ROFQ-;KOwgEW9bsH)nLv*snO-ji#X zo&EX2uru%OWy2Q;9Ze=M=u>0KGC*VP>_ofRW_9M65D>7m_XNd28>A5Ogk^sLQyL;y zSR$}xG4f>!2G-^9T(?ZROoVPCf4?6 z@#e;EG*PISb0fl~ruCC1x$>?w_HekdFoPOkLmbkVeWYvwrpfh^bsW(rO%;Z?Cg;IV z942z0Kp+H^E}AJbwQYa3|M>y~&yt8(YS8t0$5`^FaYA$)-fq?IuR}?_O>?WaE-%jV6uAK?h&UhF?7uGsv0IHTvdbFX}%AL!H4z_Roo5>XR&NY zV^aQ}J>u;`^Z;%o%rw5@hZYJz6u>F6y=7Mx(2R;)Ea|IqK zE)(xU5nK8+4hi;+$jfTwW`Y1rIQ&^kd+bhA=h(B@OL?v|A{sSPbBe%i4R>m~iyp2= zq{x}dw!xSX!Wt8p24sMVOt&{-;+O)4i+*&Y8{%5uS+kqo7!G%NxHGk5W;+IlOzr}e znVEYnAjZDz5!QcX&A^3J;H@$AF*aj2-aD8Bd*NI*V;(8@M`+Z@o$NGn(2lF?owc*` z^=dU&D+rO_DCRed^lsHWqFBqVRbp?cnL9i770Rs`-L7`>&0?-y6ko00F0Y?$O52rA z@noxgcBLr(MrWg3YqfK=d_r#53XNQ|SZl|0xxgr1gsp#8v02Eqb1^0C&3fK!w~%Zn zm(Ld)?e%h{*h-K_W4ny0ep~5$rHr(Tg;G%g)Ur`;l>u1*;V0W0#Y)3Nn)OOtEX4|y zQng;lRo0uiYLZk15@;eFOVzj9&2}ZBi|cLA+sY%!%37|OVC^PkRVdd=3RDZ_{6@K= z$w7X(e7k>q7Nlu`a&4p7EVtu~EE*S6#hrjCR$0ts<$7(c+^*)5s@2abHY<=(vEWMy zouE=|w~GPRvp|f@zVs*sMcHUglgt$tw72#GgD|`5GALt z``Z{$VpupGAH5Fg$Pm;0EOt6reC1}H8BTEVQ|5nD_>!ZGk?wr}C9`cNvJO(PSZ0_w zu=T_gt3e~^E_#RWkf`d(q^))oaLn!#CmOH#!YK=Cyzp2>YoFMnTp&znL9dAq1T7<2 zVkD;MXVsixr6IE^EkGd-0jIe7r?Fwm2ATM`6qtT`IHi(0@M5EZ`E#{>JaUTm0J?{Zd_8mPWv z2CRE8rr7km!39keNNwn*Co-CleOgAk#}Fq=#Y|bS8i3QeKx2m;!R@PT#HHzk-uGohPQ@Ov>Zs zg{;ob!NhbX^QqIlAws=KD>2w9R7U{MOm92zO6@E**Nt}8la-9uFA&OfcA{9-L=#ZW zdfM9|J4Ir50Dc@Q{D> zzU2Ci_|@{@r_5z`9qVWZs}2@MEFf4BY9*|@odKdq@gWr{rRnqz`d9*aO2@?&bC*#TP+I&3+bQ*L~HF%~RWW@T^7 zaBkJxW4YbIUFNM*yAWZ#{!;V?|1It7|Cd0-EwZC1Pj-aNAY0fqRcWjSO^|lRJMp{v}x# zlD2M~! z_V-^IV1dv(Ozz4c*8?W)?)fAa(|9ow9ny550?em$bHlkfaxo8{dt%DgFb3fnhe*J_ zP8n-h5BI(4!zZjrV!NU2tUEG95)^!?`as(VzxEky}A4#1>IJDzaeVtWMZ}b z9fWXCpAC~FxZHC5uaqMB`S+EzMb%~$i~0p zu*t%1K}K)+@D}w0*Z_Z2(Z<}1$(A{rA0J$o#(!tU0l}D1j<_xgmC{83!uuE7Eo6V2_)gK0ApZ(UDdCFEJ?AD>E@Zp$udI zttGWy&hg3pj|E2$f-N#j8a3XwMt!Lg7(#kS2^B$nX>P6_#C9Nij9$&9^-lfCeP$)8 z@}PJP3^a5C^?-jTbvdV%L2ySsdwU0Z4Me1kpA3}jy&j~7WdYknJS;?Q$n4+|Ldj)L zMfC?txZ5-2{hml@8;Xhsy)7WnrIkhn)hDuG4`BOfVdXlOhGU_Udo8n|f{nqw<+s5T zIxc4vSQCKHRU*FX(&ZDRyUbJrxA@^G1knc!j-RbslPrIup|*Ayx)|{+STjAk;0olo&QK_=dgq%;|RG@wS$L6 z%JVKX7&D-gp!!}4JUHNI7UvcAT|BrYR8+<&R3`Ky8N=#h7`ES5S-0FnDLCD&b0|2y)NliK|$S@UO&KP%lyWOju&NKD2=!eND!$ zl1#LRhsF&gyDnMq8Wd%`0Xbk&n(zC!pdzPpMndtQ*kC#wbZhPUv{Q;YUJ{=Xl!ZZrw=_BhSZu zDJL&{lKXcD$-6Il*qMUG#r|Ircuz%^b-f9Rb<(4_g+!*TrQ1b19|K}GWaUvhC1{XO zB*T9ZLlIA9P|R{{K<7&(?x2v%%O-<>C%!(o%cpWFhCp6;<;7@;6C%<9LqumNJW3fD zjPaosug~KNCLiJidhdW{hXCTn>k@1Rn}yG;#YzD_2gWZa$_#Q^79H)d!GzLtUfu!~ zJBcc@MbQ^9lEfs(-)fLSUu#7_f6l8Bp^blWO;#?wO{$4ftDzUUyWgtM5})m-F;mHB zBBHOnn$fW-#bwFO_aiU|drej&SK@Kt%I?EkCecjpB#$ z+Mft7maEzgZ8GADCCYTwqe<8h$0|RM#QKK!Imnb?`T?oYGF-T*fGlAw3xt2p$%2489RNfxQ-|ety92inf=FJ*fGqs&C#cX; z2i_DC@E|*IgfznWhB*rg!kZdZy!FZ5bU6s9Qko}-8UHGRd$I#Oz@5Qyi%5T$i7wsS z*IAzx;L8$qK25fRzRPBGN^d1%G)H-1O-LMp8ImUqkS1lJB4KIZbw96=vFv}uvM=pM z_3NZ;b8Wj3Iy-=*ls*vbk69IY#Jx@X$c#HAG$}zgzWU>`#A=7UEO3Gs$-zxtUMCf3 zc|ByBc*No(1_b_CK|HiPu&u?XXSW1#m}JPN_4mvkG?Ux6!8nAqMto!~m(w^+jp5N9 zRsytgEk5y8bFT3!mz}m*g7mlx)3D0a$jAgB`AO9LQs6$N?`ub z#*SR~OP?X1B@f~-M`z@FR+12XFM>!|Qp0G$6E)@-B?8Vs5d(>>0D}}tGRE03b`G)= zRS$T>fcRh>knfeerGsUDoTPem8ZRX{7<7M|;y}KKgfK0NO>I9y+ZWHUoR(x5s*0_^ z4CmBdWy4=dbpxuD4px8RutSGQ73CIVPk*5#eEQpT*@w=Zw-f|u7nGk6VYyAvotg8O zmT@2+CTC~|h0~FALAm3SK}1aoUp_g;geRz5?8)RWujLsh3&5S(a=p`-8O8hv22dqiAX(l2HFbq)dMZm{Y%bI~|gx3bL z1tfiZJ9IK))lz>*)hfg`1`Z8>tk?~xQYx64$Z4bX@YZRcsT4;s^lKaxJ z3a~dbh@*e@SepSmY6%nHWrAJPy_>3A>ERoUo~GrzK+zMeHXTsVtboWI%$FkY$Rx5p z#FXD0>t44NP#UJQxARBp@gj462&l+;IVVYw-c5IaJ5Zn=93SN=AqPI{rxcFdbr-BqdPMN8LY4D#{8^jhci0h%7$@LZeT8z>Bth{^i7DfQb;KW zvJ8KJ?S5(*)f$dD&2X3^`NYqZB#o2x-CcQ!-o4c=If!;Y8SsGQ;yGXUG9k|PCX+Muar&Tqv1L=Q2vgU6;-o!+fhC0J}#>;ci>tG#r_C0xd^?l!}vr*dc-WT8fat`jko+Sql4fG)7l#|r|BhJOd*S;w69|5Pw8NQ0z$*X^A!;SW}ghiks}tP1@|Y)wgdwoJ-UAh zcIJDUI5RZ5iDHO&=-V-N5}!stoYkhqRm~j8QzI#6IrxGNGse>;OUz#AR2x%n#;;kl zlB+`){rJ{}^w-$olaC6 zvozR_AFCQ>4z2VkcPXm8YVqhfZ^?fT0Gm^jv{Av4!2&*g32O$iq#O_V7rKOYp;T1- zU;-{2?N=Y6l^mkqd2s;e5l70<@GN7p_eJ?q0OvKN9owsdb6r*M1Y^0B*5VP0e{3<4 z6oYeJ3R{mw0}5gKCLfEik5^D6*Lt^RRN6`g5dFAf`j`q0aZ!|yI%-sRXn7WMr;Xu zrVQk&mS)Rh=sE$E)HqCyI#nvyESQ#0Hgg78Wf|FU&c~FcMN4M75Z3GK2~Xd@jxguX zETrRSE(j7`er?cdx$dqrHwAzEvPJ9kfcvWd5nlS=NhI_BWazleK?W%;V?$hiF@U#j zEDQ~szg#^ur1W2+g=uomoULK(-V^C9LraISFH1)|15#RwGp)me+{O2R;z?5KK5uv= zDZRlFa?EWh+>G;uDZiHUM4kq~;bO9U;7LOvm%Wyo#j>dd@4K4uS^9skOw01}!L_qEumD6cnX#Vz~S|58>TY)FM)@}Oyu_8LjP;7p&0&O#{XKH|0l`iGWO|YPCvB- zD=lR`tW@?*eFy46{Qt_Bo-cTXE)DVqT?SO8YZ)5ydiMpE!%dm){W8OP+`{mf z1~Fq94xG0X1T;%)IbMYUKTiq*L{9+r=>#G2-7^e#dE%O%s4~F~WXl@g2%g!CIX1w) zESjU$QaUcZ_vX!=x8w(?8B2a$gnGzc!0DVgZ48n1AwKgGLK}aO3HF(u)fH6M2AjRR zhSeRv<3$HQG^9&MG2!#x{Wqgt3oUOLWB5E57?8~}rZi03g${UmX}G=36UF-@cdcw1 zhLDIAdrLfu_-V>61rB9sXb4M1Yzyrix9wE(}7z~rqmUt)(USx4h z@bIf@F3)fZzzr>uoqz&=_N|pxmP>+$8AuiIWz2vmDN^3%5LD)dQKIf+aN^t@4~m6Iny5t)`lt4K z`%CtFdj1lELb82&%)?PVDGlkl5~delC)uS*eT4T=>i&9US@1gdr#3T4$r)ypyIZ|()Z7Lmkr3#$JMgz~h{59xn;Za|^gCKXv zot1;r6u-RQ3eHJBtGUghq$=@qt$a?fwOl*D0k?l#E8_{Y443bQA=$vQb;k;xXRYCJ zhZggaX9F)h5$EjoM!g14Wh;j#iihWVy@~n*Me?l;0V=UuYn3H#J72-GQjU|ydvH)m z$*qcKp}f8h2QQ;(2rC|_%GTQ1!dZnN+quf76lbF#X>68H;+fmJ5uW)RY6+r{!xJ(t zSL%Ny)*5eik-~4}TAM|*gjBXxm-LFcW`3htY~cl#5?|y4_iUsiWPPnJZfUE0W4!G~ ziiW=iUZc`%Z6F;f7e&$_GhTpJMEjQ;ZGs{bwuE9%NdZY+wSt-y4Ubd=JZK$sSn&h}*buqr z&`KhhYWXDlK&@PrXAQl#)~2ZHHWIRd6vQo+TWxefX^obIv>JFP4czw0_6^&)QcHwh zZf)f%XgWwsSd z39AJy{=OHEn7a7vAkI!E_!X)=yYVM*h7&MIG*XC#AKfJ$z6~ONr9}KiN7Iq3iXk!* zNL5r%;sh5OFu=RWM$sOf?npkE$7`OI zTp7Qsy5m;4RKgH$w=pf`N_7zx+NFPtp1V;l6pHv@V*R9PN-uy%f^zbXA@LVv3>NC` zmQAHn-v%Io7HX7F%3F<+w>g#3BR0zU%@k1Md?oQ@K0?RBYya>Xr8b|KP;!|4(2fQ# zvnt4YqSS*R{DC=-R8Spo;P-{{hf#Xc$X`>m5+2I(8({Lqz$u_TLOTMrc>aHlFYQAy zwqF;XOom))`70p2I)Q%sq5`uYziY?fH9=Tu5is1t+dvjv1NP-N;kXYWf!Ij!RVmZn zI^G70J4YlT07>&V5$cyNIy2Wv3Lhh;G*U?u2+(5ri2cLe3CHZQV z3$VO#mOFfHffteRq3NW*G^Nq?wFf-Hm2Wu3=ePP{r=g&8pi`ndF*<*l^Sh={-nfy3 zfP^e@lQcz*Nmg)CiGI-}#`0omd6lneE&2 zY|~e70L0LC5L*9avFXw1FBp5)&lkHn1TTYwl3_`VNN6tvnH#YRmOu0{5`|)=hyg2H zE)acptBL{3v(w>*(FIVtT9&qT9PEjT5}T%ASRggX1$8K7f^l|5LecNOG}C%!?T73 zt-J;%l1k(%+qtt_A+!$J;T3DBdw|z#m9wE(A;1;;ta5RC8_|DRD@U~pol3n{$~Bvq zlS#(2dVR~r#H>+h=C;v~P#}q(foyk@YExLt(R`)e(wf)Xb;!vP;MK%aZHKmXj1XT< zyBvTHZVllLg_U*ZPkg`-K_(+ndV$!U0l%wBibN-8^J1>j@PI^YzHk=pEwxvcr5FUn z_mpeAkY*R7-MkmmPsc*lR3BHQ5UXf_7|&OvP%WeRh}tN?x-_wOre3 zS*lU-h_g^9SDH$`-o!#~>2`{Sk|43uG?97U_YI#Wjz&47S4Oou0w$`%X z^6ZFW|CWEm3}*9n2*Lv}rl66g5NW6^f>nm?=|WIrk@N;ss|xc%|ARs3NEtN$`>g%-5u43Qj0TAaJgzEqb z#F3PkBe|?PvYDdu*x_wSYMjAh5W79J6Q{ZiYvY#(pZ7hBsh> zY1Bi1QEEmQ$k?@`4iM#*jPFVrGE2AMI*P#kVIaV4P-mMT<&oD`R|B90b%w%pP^R|~ z_v@I2TFd2ufUuGvvCy)89cfz^34_$-OoBsN!&9xc6oV9-UO&oVk|@>k)xu`+Y^U$1 zX$-U&YNfUs#gkrz!UisBR_Na4y5_zV+O9W$3moSfEd}@j%)=^Mf{kCc{?+oGa?*-% ztpA5;t%&7E_ORaG0=k=rU0=H+7*?J`%oolW7GshL02C&U`KjZ zM@49RR4;l)ssxxCT%d~-+9VZBTPBynT0-j9F1^H7sU)|;p5KXC!Nh2pBJ=pOiFlTO zOwio*IUg5WQqGsdK~6drG4O{}Dh?<%D-rFcMTe9!h^`tQOBzV#aE~Q}a4ci%kj>7) zS?*NEAsT})fNepAXor9(c^1L3QK>^XQ*H@r1vwD018)QGgvLAY^Ng8AW%kLUcJU}J zMZqg8guISl*_HrkrVPfJLC|28$lzIjepk#CnBnC26O?r+%4saKCgrx;^*qc2+m3=E z4ce)r`MCs-8^eqS8i&Z(!`{c^p+&`!oUUQimVWHe(o!_uk_B;DBAi;KvMn7Nf;h4; zY^BNoa~AAgEzIqH?MsIRAO_YCbRR6vK7ShKX=w$gW1$=oU0lqVVdN|b&O)<)4ow|m zTbC8W<6j!Y!#K=S*zo)IT7{wUGoTeDBYUxB;{ITT7^ZJYUq`$Pwm2@y(lSs~DD zscdPz2>_~45aYGxnKtYL;V_jn-Owwg(F`w&qMTU_e6&g007bEb#nO!aTr00*C3Mv| zB&0)BbzVo8X@I7L9Jp4&R9dfbs<)^bH~u@U+o83R3rCNDtYfZLQ1}>sgLzx!y9{1O zdrK#>{%xF!7dhe;sLD+Z%sGw&ft0fX=y*_C8wn+ielj8QCr{qs1`KBrfVqtNQo=$KXf9g;#zHfvtYfzFQO4$`{qN3Hw z`k_oAjc^LZJAug{;6WD#?#&|^$Z@$D!~p?E*pC7EwT($>%AlWrD9#a=oO${U$KWi2 zRuoLH5kV{jZLcNjl+scbQX8JA4L+?3n1`qe<{^O+rWi6k1m38m5ZYE!5a<6al!}XG zSyah1XE0`T;t)AQoOaZxUtr}Ryxq(-l6i!N%u4Yrm%k%nV) zEB6xG95zTBBMXRswUi$U^EmVqYDA=&IPmRcOz-wMv3^zGs z=L`jR0eZ5R=g<7v}`HN#`1fs%uq$KDQ=ZZ1XINZj8~Bfw{G^ z0tv!Y4jGVT;VzdOJ8o7x+7Av3w{lv-!HWooC&1uC=O2_1OHt4{d#WEs<0)!&w zaZv*zI@>#hkF{AHEEz;6B-w34@eX(o3F)-OK!UtbXm<{U!!&$=4|g*qRO2r}t>zR= zTSU{!a=FES^+bZGz+=i#^B|SAG=}w$a>xWw@`r`FOD-O)#ZN(;Et$0?ST-eisNh1Z z2_s2gV5f%$G^4~9IN9pRV;KwqEkP;FEbh)FnR^(h4V;0q$yDn3IvF z5C)bnVL7BY;PZAD|2I26YtGFh^oH=mq*p5Hiv)V@jCjl7Yab-?8+Ry%5TB@s7Oh>W2og(SkJ4-Z`$< zZa=aFWW3P+a8_y~pF!{mPo$G{Bpg9N-RVGZ9t9h|N9i$*Ekz8wD@Y-NuDZV7xg+{i zxqUW&FEpev?dNG2jfbP!b{P~>E2M(|TTmrm=;(2QuJU^9rwm%~4Afe>3)K3`4g+Gz zr=cSHLlWD-qWCKg=MvptXYq})4dK^oTPSsz0!Tiin+@Sr z4<{5qP{pzYWa;FpR6wA^px;<%tKoTF7^i1{*$xLpDx5pvka8TH?In^=q{AhSV@Rcd z+xD1m5>Kk!DZdx$?t)@&%OY9M3>~J22?wI_ys0osSc$ZRVc%@W3Sh9^4lfS)TuFzQXo=uY)IE`nJvX22x7pj|*GlFtBvys>w;{&_(IXplY~r9AfJP6p#qTzzMB?Em;IhJnDkM#ic~P@62VMK2%M8{w+n)oQQ+9 z6R2kyZ)FhWaaVLxw1)e$a|U6qg5f%wWFCO2TQ9Vf=mlg4$RyyAa)HiuW*D7mfdvAq zU1JMsvJ4nUB5_A>iPys$A|$L?2zoy}Q2pHwR|dS+HSycIExxaxEZ*4=J$_?<<17i~ zHoSs$jG5`j-jyf0;g9X>ddfHjiM2vD6fI1;rEu6$v_|@2dg98s1mrr4M3uu4{4V(x z)T93pcV)YcHAT21gwTKxLI`nz5c@teB+mY`$!o^M8(t<1oAD$k88eO@Z08@sA^{TO zk|#i1aK$Chzyly2flJmGhydv;_k0{t*-8_?yl~0>UkQl^u%(|L(mz( z`EJ#Na30dpHA4<`Thz#v1kKj@+**(GLbco*B0~)p6T%p0PwMqn7-a)xtY(2cM{s`H z@;dKXxjA$`9ibV3@5lx#Hp>Vt5S&Z?(C0hN)pfg-bw_M$sSWGC6;ST4E32}_j^6X?IHH@1cR_CL| z1Uc4~-Vk`4tPmRYJf}~8)18oX-zk8&pAjG!j>=NtLNGj0l}VY~D%Pi?v5ddc?)7pz z^SNPI0gm;Vho(OHQ%2Xs8$jp+s?-fg&z~Fvbh|?_&Fv9|YXB)~v<@H`F8~O~dOz`; zvP3Aa`4r>@H_^O~9fJj>1=mMInhvCqim<}anp!a$uUm@z1*?~T2yo$ItDVrmE{56v zMitr@75Tg*QeXD1JUcpT>vGebb`zRQ=F7(%iE3!I4nKp$F z%Cb3-F4P&2YxfZ1+C9jRG%s<7jL|CCNQP)(GJ~e#K{WDe3+zA)@7VSZ(k8)6J3w08 zYpZ)lbLD||>q<|5E0K>Jw`;dfoi#aJlA!jKJJex0GYp2~W(jruFSF)d@qTpsG_lm)xJ@;66bpiY;+g%)Iva#Bbk zM77o3gY-d!4*V4~+NlrFI*_)bPyzeJlsFb-m-}K-(&-j|x?h#>UaCVhj9Y#AefA{A zqwusiw4r0vLXD;#^M^2(G6lE@ww#X;4bv?TLy+@N2)VJ(PE7ueYz%T{l{~r85!n*^ zE6MEKJcpf>ds(W1@g*h1At!l+J$yugih{-j1g0HFc~G^j6hJ|!T0IV?n7bgQT61>u zg*dkf)egdcLrx;Z9(($M6pBL)f?zQwiQBbp99@;;AdQfqxGojBg3N=sNSEm*PI=c5 z;W97=%bgB%P5PA+A$n4XIv$0A3t`8reDKXU>J!11jSkWyZx3-t-45dsw-4wE3$Uo5 z9O~kVZ6bv27{_wNVAYOVP@Tb)r5x~Qz8pzRec14SbfM{=p=*~xscLCzo}s_hC!<^6 z0VTc<9;}n?)T8?Ms0DrKtZDbI?iWl_)ANx?(T)ik1GPz)7%fY}7Oy)d+8iKGA)OSY zbLgUMBe6JUV9@bKva^1S5L$3Kn=FgR_LNzRhJY9WTg1DB*zDvP8-h{t9hO|f=HWPW z?)`>;7>`qzp3;X--EvCN$(w@|1ji$Dw2ER0TDpFXKuNxw$#O<`e=B zzcEB{8Zk@XSRz00n@e}!qzgko<+i7~ieiyMBl_&Ht!3lM?hK~_*JNSg!}+b4w7GgT zG;L-I&ppEA$0ywwi3z&h6B7cxJEp{Oa>m(zn@N3{b@JosS-FP+L0iTNV>tREMQ*JZ zQn)U3kI3*H8fOmVjEQg-Yg4gr4WxIaynLbiXP55TuA^Qt&P@et6@yfQb_x;q_`yI; zOY^9j0YvZsMXX2n?`??SvV}vPjqk8a!3+?!kQrhFq9YHX*)#n-N_*O~K9-N0Dc~D_ zT5mJGR?V2?=*lD?ai1g>k zQ^x|*#79ngEi)qm_7|((KCW(w32DGZP+bdhe-bxf-S8pX9pOcjJnAO+0-Tb9hQmgO z`nx^#Y8LETnzHlg#e=5P(By4IIrlbyxV0)9WPo@(P{|n@B-@fFz1NuHOt8ED6aq&=HCy~-F?lT>2%AoxDgo0v)-S836V{%79tCtxf&>I7 zP~#JWm3l@9K*yj#Q43@A>2U)q(7v&nqT+3%Sb$9!p`r0SG107*?w>Za!D~x@cSJnk z=rWB5y%a*18j67fh8)=|s%cVjDPcM7K=3(OVTixma9PX4jq3Lp$BEOy7@c`H#k$?= zVv4BsfQRU8!6ZURO<#4Z5XIxvA0o1x2@!qUi_?<~$2|$6ARoFAtl6<>kYzf!XIOfi zk=7x=oC$_IA@>tx^Xn=rNZ$^Bj3I0dXG1t$gNK+~Gb-*~5mvxWykRq7x2Jjt05KU0D^}&-N9i`bz<|NCl0E2G)ubOQ89g|*dEKgr(>PbPmv0LWcQyA z?(fqjQwJUBp!`Lj>GtVT&EixgjZSSsM!-zoBT8cjI=}_~VqO{bnYFBctN4q)B3g^4 z*nEo4M&}vYg;6pGPSQtkumeC4)yZc>)Lk9+Tk0&g6h!)vTy?k69I5TuIK7mro?3T= zY0lY_S6N`XoN*F;dL%DCcU=)vLba}{065Vb4U6c~z&wH597GJM`39~~)lvaNB!+wX z8N8PH>??eIQ48~+G%1mP^a59T$SZyQE-{S7{0-~fQK1?&UBsrQ+b%=QI7OfFA?g0gDUprLHpvMduh4`Cw)AP6FYZ1sAu;1SM3Y4RiXFRn)k|@ zeP7LgS2qlQ8))9cXZqS%`ox*OYleBu$O~rKvt{~LnSG$l zzDkxoJeIzHHl|OE>APayV`6+k%)T3zzPXjYwUxfHmAxorC;;aKSw~w*+uk!x+PQphlA;lu6H+ zfSL&TqU#0!k`oEmr?-mG>MGR6yDOCLz43mJH5HW>$3$T4<(1$@O8zR!raLH#M_7F8 zgw`h9N3=RacK3oqjI&2plU>hR*0YU;p=oAbYK=-gQ&P`>lxCTMH6{%U)ub>rCZrjm z8k;$PD>F8jp_g}O*}(3Wy{x)i?b%PI|gMMS>C((67oEm3;vng#@a zn;%)xk9$;GXYx;Dx1a*>>n5lJnT@d)QDoBK2Sk|s6Qkb_=~jnQrSyXx+4ofBgDcq= zQKWmIEsT7ArQEBv48QimkCyQBELF+M`)rB(Xi4@d7JSA=%Z-zU!LCWaHsZeXBBMMc zrDycJChk)w@(CAtG^i*23sLwnlA1|>zu^MA6)0+LX;w_cU{kq*K8PPE6kzHQ-2{9- zX`UMIb1v;?s3!n}oDDzz0v8$#-5Z@d4T%Izr`hhy3xBAa=swg9?Ke=$2S=v{i&*qO z6MPe9SZ&uJA&@U5*;O$7UW#-%NSE>kJqoFsQ=Dj3MRPzmh0ca5;1}&{zsFL4X;!2) z`5_s8Mg}S1FTX%jhm6W32<;pioRNtLe~|?00Id=I0IEt2V55a7_Hw$B^_wi$(lr%V zPxgB(!-ahBO+U!uBdcVxJbxhooJAjAp=W%#OcMKr75T_$v(}b>W9e$vAv++>LuJtV zXswX*LSSNKTp10sZz@?TcPm1FAA;t9f%DTyJmX7=knvTw`^??ku-AyZks%0i9oVr?~mq?GWV6IO{;weGihhK5npDACmQbG)Ht^mcjYmml+&{ z*@~N2F2VNG5P$_ESBnm@_uFzf?|l**I8d&J<}iA(d6Wa#9W7+9!8wS3Dzb&R#pEB& zU=kx1P`ka2L|H1x!h`{!6B2c~ar)*49%WErwQ-MeOrmWtMs%T*5S7Y_<{P5?c9?_e z-B#&r5C#bv3T;vvoO$IqD*8rIo#_*^u&YL#BwD>P>2o^a{8g-)9;5L}VdkaVBLbMgc>@8_<#hw1Y~KBQmx@G&(~wqFSF zNs?kAK`z@B64(fqGRWu6l^(>IYw&#eCDAJJ5)yJJSMx>DTd^Fn@BKws$xwDpCikPr#WCl+ZDwm-Mubn{==OAC@(mHpCyWrQiSYA$XyldS- z2w;2gTOk6i-3NGt;`y<;!1_7>hmEC5J%U;RR31bz`H{I2GlZ=TJ-?o$dI--9#yBYT!BfoO<&H>n&?QIJ@oC>j zU^O^C2zig8$$lj&OtN`2+DPeJN<0SOr$$tNHqfoZe$}hdJb_N>2;-{f?DedN9}agu z9$8r5x8QLB2hNSnbmu7#JWqAt2jgjl^Xu7&^Vj>1%5Ta$AHNT8y*zz%zP=aGo}E~v z+3_M`r`>s;R-BthEq=kB8)q&-&d#HUA`aj=gd?{CFONrDLe-X+MbqP&ewf~`eA{_{ zc=}^~{93*9`feTsS)V=Ha1f75T#d_q^WwC{%fIF^K+j_wfI}GP(L*Hb*E0nN$nlBu z@zlh5p9N*$QHWP@=hSl`2e{J|ul~NUI_}yJy~hZeq1|+H#idy2^Fov>x&)!|=-{kg zABuwrTICzqs+O~F`nxm&Lh*W8&mFaY(}1m!T*y z=S~+uIPuPd+?T8JU_YciY03)ZSrmzji5SJQ5u%=!wt&EKW(c7j1Vr?WXE?MCW6;p4 zI+8(9_Q(U8Y`@7mmq!a@J-7%$V2?mPwVSIAcSbuES$V!LuXJ1YwITYWAU|$@tD*)n z-pH8;X)uRI3@yR4fz*-@c}2jO7dgrWK}7?`TBi_)B3a{xUmT4ax)|MJik?lKwNs&m z0JR4v{P8}IjWM({!~{~#6GXmwuYvd=!fp6YB`d+e$XZ`~}*=T?;k9LYH3du^wGL7@p?Fu<|K z6K^9PnvBM5x5co^dSo-gdN`KyLKvcTEsXQ)@}O2dwTXBKr#6r?-;g(?KmQG8)cIn~6LJugtCD1=?NC&6zgjj0*w0CR3oJWx{pJ~_kJ?|7$)G-^Lu zhSWS(j3Wl;0aI zZNm5ssvzye(3(YakoxpZ1zVo(Kn$1Dnlx(`&yM&Ci5Z|DRLS=$7v8mMh&4N^4WOm6 z&Ynv>KVF7#J~YK0-9GLN$2xJPfmK89i&Xb^FK=jm?r&_D`A4Ux@~ zm1i&}$@o<3%5YdH`{ju39U4gqgMw;X<9B-@E`*s~2&IP=HhsPM$5x6!8C6mcHINB6 z?X`7VVGoiJuEx*?#5_fNgx=N6SIP~=UOH-M$fIDFp6C(XzWo|Szn*S9BUHCv9EiKq zE|44Y+g*%I{J5-tLK?3kQTw95xi)bFkrqodB@T=Vr&DUaeZv7kv{UJB7FOj5`_<4o zMm0wR!5vocJ~U?t#R!aRGF&yQAz1BlH*ly~6ed$NP|Ac=gFuiTh>5!y2bE4oE9yqU zD54D+)K0O~%&+Ta|9CJEk34Rv0LN7Nb4k(6)*A~qCtcQmcRF(^kR5p}Ct>)N8c9m5 z&Qna&*q@a{{_aVK*036J?DCg9$1F06PKOPY721WiBq@#cxMJ|oLyeWB1RLtr8S{Df z)G0O;&r;{Gf>v}NRMU_xHHfBu>p&TL>NV#lxt5E>PJTk%15h~<>IBxNVk60gB0L2o;jfwWVoQG{fsg)j@SP+#`mqQD7m#|D2_2AQC zhAtMIE-iS+7QCaHe6!S!nN~-(h)_|PwIw+rFoi4>6G8^0NM5qL3SF+; z!M>^}SSO3c)hsb*FQ)5cbv<3bFufiOU)SavleZ^>^X2qrZF+a>7mK;+C)dfUH$f18 zG2fMnG!eMp)WLqNSL{Hkb%(NGYqqH%_vja+Gz{7(sFtv{zPnK?+Z8%evO1sKBp2UU zE#@g`V4*Aj%CluMxw!l0?P8r=7|@1`!E>`(EZ3*W-O9X7?w(F&x5*&6F{s0}{9aFf z+)CzGC@D!@MA0-e$CG4slPu9(llfJDf<8T6PZ#r*LCY;CqxI#{`1u|9VS3ACy}nBs z0xRNVzOLfZpbu+87s(BB%Th1TFREe6ev~4rmljJuohSAAg-!4b4O3lQU!wpkbFPj; z>g%%((z$UsZ$J70|LG(p;9xyju9M}abTXc&-sZ)R&CLxt+uIZrUKDb*N-olW=0r(s z86^00K70ZCi^c3>WmeDAK*GP~9DydYEU-WWA)DdyuKuIj$qY@sTrQSvBtE%H43cOh|Z+zpT>j?4mtcpT96)`P%V#T-qCNt83r7 zjxyKop}2}93e%Rxy`Q`>Jac%hlrR{x&v8-+EX_-E17Shsr1P!Xx3l$hHl3qpD8ej} zE~15Cind>Dpqui|O)|eI&t_TCE6L?zY0GUcfMsb2U*%o`hAPoX)2}Cg^f0*1I1)_F zc!|OA`gyXnz3CRCMqP%F3P+Bwtk#ot^0k-aabFQIvL(<(=4(vWlNrXE^V#i1!t{E}1>|8pMWX3D60!}A`Qn?SE+$I7U6yUZr6C56 zjEmPg-d-i^xYVlxkRe%re3I!RCRGHx=)RP4()D7p(kh5A`SBFPbbYd%-MMh=S|-Ye z)sy#-$+FOk)>*$w&|{xW<`=UhO<@JTEvM@{=~1iOYqqh$IN7~~sJ%U1+^&cywK-o+ zujbQBXkqENjd2Tqk|)WJ#iuEYlc_6JCkncy%h55K|A^C15up8lm2l@46;yY5xt!dg z(ijp}kgpnN2vWMwe~8|y*`ZUcU)UUF`ja}W%;5IEtOCOHGbK zrYQgq-L@d-3d*0_bagYE+$lGVT)b|GB5HV|S~ji8Pwob@>A9%!lk1ywo{_m@hJVwQ z^oQkoJjL{th8n!My}U&ICrdQ^;s!&+YHir~R_i!hPQdPe3#8~+euGY=V z?(MpJSy|l9FVO0DE9fwf!S`8m&f)a&Niv7fpFeKa=Md_ptSG)R{Muu!H+dV!@Q1?o6Z>M=GtS_S6&ToZ@~9eMwQ$XDR6SpmlSMCUy)s9(}kQsiGk`2^?SY!eL!cEGz1D$_i`Qy2E%vXW} z3O^aLC@~Njdoz_OGVLRA440GnYKB2w^pfRbh9D$=oWDrUUse`BP94bwy1KcYJ5OOu zTwNx?R_oKLQytz@x1nt^l;ms6-| z(x~lZGDqA2=E&)FLUjt$z&4~tZIO=U7_-Ux ze6m7+)FE7E?_l@f_;|OrTi>ab_v**BgUV6k=&*8lTt8|YRu5|1JFr07uI-l&4t9?B zx9jCfb@ym*zq)^Pd|2MAnZ3pVb{MP22m6TIs2p!M>c@MPgM*`^^5Jo#RNiTnk7~OI z_3GYk{mE+oB1p)VVkE=)3>cM_v z`>3?NS8g2F@V~}U^>}-)Rxefe_p9aI{r%E$xsJexFdRH?95l8M4t95T8};4l;r?!a zwOT&juapjU%e#%^Qt7CCbbMT{mMe$*NEl$bT;Hzm?;q8`xN3FZly|oGj`wQE+q*k^ zhueGg(q0u6IXY+@>>eJJ54MjF5xB9lU8x)%9icu_!padsmul7W_R+Sf){#Mddv70j zsaz@_l@Y$SQ!ee4wvYD@>W6!EBwi|i)$5JD{l;OfQQxVS!4MqnAMEef_DlnL?4Z@E z+m%wOu@Bk~*m88VS1;F(E7e+kuey71xVJ68Xbcn!X;jccrM=3|UZrNbkfK*mClZr( z{xhs25^VLD8ocX-%XsbDZgfy2pjKzoo9Bzk@a{yntWiVNADU`$K2-8Z5;xCvVSC7Tf^qCRgYqo`!=SY9l*vQFkHqNh zmut;#YB9yrSckz>FhtyC65UkWkhoqkaR6_ZI4|wun;q^q`=Pr0I)Vdukmb(p9Ii*Z zk=qDIsPrg4Y}YZ;%Xsg!9^KUEy71eu57QV#LsLU*5R1g>SS6g=N-jO%C8)Cg;}+ zOb%d*u65mMBXe{Vd%M)(I4v!d8r~>6;X$MWz2iGxa`I{3K`y~^-=3`csq_3Z1}NF| z^E(3aeuD;bsd3~# zILVr$j)a{y&8wO{k~pr&=?D9fmzaAeQHJ1wWn;d_)atZQt@pDtdMoKM#j)6RNm}&T zpc0WK*#vV^akxu=r;sAgB9-~sMyWK!gmv>{;hiu1KSoL&p7rHxn=?ePbY1KDTE2#J;+OzVL?#5(wj4!5ICWNTWOdD!Kym~5sZ&2YF>`c=wZewyubu5Jn zM;U#Hpz@41&o&0^AN;Ut{#=v-H#F$dKqO(qxKp8NLp-iEJ0&&6b*MFE)>+;!h#Pf+ zr1Ll+n(M&YOGnjw)_S5kKtRkf&;04_lw+w6aE=Ti@V$~Lg&bRCfRoWb$|)qP?zoZM z>Dose-B96wndL%(A|66j<*>5Q_h$BMuoD3vqK%!h*LZCdftquFajESyi!@Rx3<47@vE`+;W6X8u(=aqAt0kBH9okM+Z zbx^{8>NtmR4K0|iCTN)%Ezo?Tpwu>KnbpK%+V%600yc^Yl zX0Cgv+&EKB_K+})&m~Ui#i1ydz};?=c4{Fw5VZ_YZErQB4H3zUP?nUK{10+GD<+Tw zER)*W_b^}=P@G)3BC38A%mKw;zQ%K)F*7^1y4z)hA*N?SuOKbFVk7b5<&BcdA>XUe@mFP3N&};0_6H5$v$S zfV5su2VqUGD3qI~9274_d12Be;V>PmSSE+^VL5g-hjH^RkLk=LcW+{}6GNhZi^gcS znaOO&xw7!(LFSvQxQ@8Gs0jJJIh;#=V-QVd=e6mO@ApZj^!h+D4`a*2%Hx|uGiQ%K zd@)+LGxIa1|AwG`p4P=oziLw?73qW0PbAxXb5!~$TYZ>^3uTaQmr$m}HwXPK&GrAx^50;##ygB@&{PNGVQfcT-9vL@AL{ zytRZG(BAp6tn2oc?G3P63YEXKOIg6Z2!H95Hq3Dh0}D12WH8hwtE?t8~LAMJ8z@HIfqASP^# zpemtH?DoRMV!RW=o05{{Lzq;IcS1N!Din(_sTl8s@TR2NZOKUR2xHPA79>m2@8l)F z6A6ANmiwr95ukxWq3`5>Wxf-Md?%Fn0O;2Vgz`=x68BDC+9Rmz3KYwFCld9}MoA}^ zV^Jp|mi4&7<2F_PMFcWY!H|m?5O!w2myQRER+j<7u126Ipi8D<`swOLnv++u^8pGw1A|4zX9ep0}5dFoDgre zVgM^iEHi3pE$}=Fj$oOf=VwX^=$qr=W6LDy`;h9@FS95>y;T+*OfN(_*v}6U`PNj3 z$ag(dS@&_ht?nrH&BSrr4)QS}?kMC$x+n-|l9(7r)xt1dF(r=VM8idkX?{eM{F$7d z(>dyS2l`lZ@M#-==i!BYs6rtsU#$v}?#Kqw2fpp&>Qr5HSfHCiAe?YMB~ke4(7{mL zItW@PvJy8(Bs%QZ#<=1k;=TeUej4^bhB|fT;?KJ3@AjP6oBeFjJue3d>w2QaZpr4G zb&J?rkHn{kqj6eit%3}Hba2EI7Y8}zfI8aw0zvlLT6Hde;&l1l_od6R7OfI^#(wEE3w;a9YwwjVY_~#~PmP6;XC*}}tVoDCc?OiqnRVFb zqqvrr8?3(DQT5pY0Yh(b7<;F_7}hxY%CiQ@dE<1srO8^vn7%ewZSyZ*Xcr#Q!*|^2 z(LEx4Qmg_xszw>-!0qkcW9UmixWy;GB$&R4 z|dv+-m~pF#3j6_yq&o@z5D_^a>P* z*N}Zum_r<-0qH@dyKwdf_1A|Qb&A8q56gsq^uiYh!yxwgr_@He7E$>@f_e>sawL6q ztcZj5{g*dX9$n}4A?%16*Nf(oG#89%p(*8SOPCpxyde;6Q1Tg3E0N(?w%p}4uv~z& zNjM^c!68wfPoP2zFjWM@AiCsmuQwG+boSgyyF0v(yh*(xer|lVa&st^q`0^|VD9IC zs*-;gB~CaqP^GceYwN&8Xj}z%)XWYZb%!{NHef8)%nu?jO&e16geH5@B}a^3HVgyU z@7aif7KX==s^{1#wV1UuY8`e(&x#Yqm?MwJVagolxL;@u8#h5_5T1{XF` zsZpgsrCfP-(${s4k@1?(T5`B?UQX}MtH&4~z@A{eY6Il~*_&?;vNpaB;{6|g-_Htp ze$>(V>{{t7%~gAGF_}fTl|iU2=#NOvmE7@4F3kAV{Gzp(U!5fDb+WYH0lmEAtf`xo za}&3Tlj3|+4KvLUJ|0n-tdjB5>1z6XmhjyMRx2IRU zEtb(3xjqNunsZH3Nht2sbOnOcqH{C(+!o|^?ETk z>t&KWohGk#c-I@r@5tS_=L@(5n!jvKo+mRnvZX1CY#?6;)9yQY;TKNeSYHkHe{riS~oQfS`ALlwsIr#f4#(C)>R7&EFX z+qeoBlFEc4`|ZvyLHT!tKnLJ=B{|?A*M6G>^rHf2NEW_+26Hh549SBUXanOS3?%8UDUv$SYuy`Vz>}yk*{N z-fezrw$0Ct`OZ18TQg()IoxafK4&VR0C}4+*OG&#yu|Os%<=aYe_t}zEAfMpfU=T! zD5LrLnR$WyXH4ye^;y~SyrGUZ|4X0}{!&wV$h!O(vCyM`ZMnb!xYsuIPZ;yzPmm)E zt&h0x%ne=Uiw}w3vbI;OHR}}c=`s0au7)hb88y|G&Ur^Vu)klI3f>^22@nO*xqNd`Hvy zo-yx~RL%Q;QvX+h@8H**45IWO-K*?3iasK~_1-F5?;NSkkjrOG;D1lwBw7>m-p?4% z_s*`A^Ie}Y{C#kO9H(eEvt_CsbCb)xW9nvz*6NY}H`*_zk{VE^3j7x6Io;;{m_u2M zF=Xu;G0bjR`{g-sk=>@5BfqKo7i__y$Txfyv%s%^dD%gl*OcLQuDl*R zA*U9UinU4=<1+6nrufkHd+?m4VX%N`0<8 zTOp-ergT@3-^CkJHNW^vhgC_WJAnK}{3nH*sL)<$Re&)8o1pCuD-J8SmR%g=;(}~! z0&Q}CH%JK8R@MzW$~uHh>_EbX2!Xh{~?=73p zpezfP#(dy2Cf^m!p&&EzLt`N)b|0pvB5CW{kbHrf5BANihDGVf5v2C6M@IhJIvv3$ zW$v(xHf0DR_h;n6%1tubxi85z=bAI#$MN5P)<>VPgfnt2Zh7tAP!75dXmgcqaG1Y; z=d6#XUML?|L7rxJU?$pI0xrd+bLA-aM0RYbbND!fc)9nroRkrjE>D6#-_ zbQQ;Z&fg`l&%B?$b8 z&2jyfBNkO0us0pq=Q`%+MXGHE_(OT~b>LkP(5xh>5@Pf@;Q?&P(q<1C3Cjh<5( zI59nrp)K~>MCWRh3jbAvuNr!P5sV10m=cu=$3I(s_FjfVUT!QBIz!FKhhjm}@*;<& zq)F=B@}$Zzu8mknhQDFUCYDpXrUZ8xwQG9e2N24ZRq-KD%E^_+R;eWQN;L^CjGX?$ zTB%I><2teHbjHzmH*B3Nw*EEgQ}Yw$ZpGZ`7{m@siqmbVb~0UrVk*pkoBUj92vtIZ zVc?aHq6`oJj3Jn=<=9@~ro+XsSN@rnQskg#Mu99obh(38)qLlQf`gPLa!Gs9+_hX- z3zw>=zur=!wf&hJt1 zg)Dd(X%7q^Ob$1yb8#7e_KB>tY^e+8%Qn^ev#(lYa?iZX7w=y#a~#!qb7)=M==RD^ zrWsvq*3`7@h$Z!X2mXC}2vzK@4Wl|t$($uri?jO%{51zx9pfJwfqz5w#RpgYMa5XIWPu4LK~+i z``~q`awLYXZ9VS~_fTJf=J4c`v|WJnGn@PMmnLTZ>$qaljTP;5@2Y-**uD9f;dPbs zK->+l_E9J{xcK(v{CXB#^}5sCp`ow0=B)%0sj_>d7*w-+LOvGLuVf$kxn2xvzvXQ9 zw8YMEzQ~N&bqzAAjeb@=^rxsV@1cHP>t~*MJ`(Q1oY}TVx=nDe$ZU<>=<)!xNBP}z z_l~Dg`BidQ=LM5oC)`@j!{0w(*3qQqxw|<3kz_zG#GvgFlRjgCPEjtWGpmW#;DP2& z-y`0``DUw%?X#CrtcYu3mTeOLfM>R~vPgRGqrULr{TiRXH_A(aT!;mdbpuXQ+RQJm zs*J?`n8bce@vacB?o+F_OG`|kcXzY>Fsiy*bVi$AZ_dsjModjHv5SbELD7k{aUSHx zwQpWZ8s^5xjpQQcq8B0Md(OYtaUS*eHqHwbFf^WVInH8(OZRXZANb+w?_*DFENi}T zA|9~DU`r;jz-V|0jX~0U$M)kcxMd+G$M_?KZ)Jt z>RZO^DO|V8<_fy6PoRVFIVoJX_}*nEu<*pcztM7k8xN$2MtX1Bcy^OMUHb6{*5KT^ z!)_RCu3-8i20~cQN#VP9K$;l7Ngz#h-zJbIrf=!Sql>s;;bz>BsV-z&1k+y-k4Yf) z*gwf@qNtkleQsuLA8;Mrat`?*=5lURoUxO`X~T`Kb(q7SrXugXWkxHx_Q0n~*~G(` zOsDYmZ`H%`&Q1fbBjZ-jj9@wS6qC%kcr^N|c4aqhl0v)xJO|U7a_r2^`d@-qf06ry zo{g;y@>IywGxF2(_jcikmkaH~m70@-Qqw{8TCZQvbPlhMNWiPoV{5WS?~ms)>DV(+ z(HW#UKT$Xs^)K`veOP-=sONx1s0>3KuD9e-2b)`5P_oOi8ysmV{MrQf>EW9nUT2ZqW}J-$zy#wwYb$mA-A-3g?> z$nK%uJ;H0-`)8F|hr7#i=YFET1h>2V*qL zzU^gkA&GF^F1t+~CloL2k$I1XQqc{C^swPzRCo_3aBDyCZhpS0vD$0z7qcGZzA_o= z>{h>G8Td6OfCk-G4>hy^&YUk$y>UwF1s(Lv%rPoC>bu{ao0SJ@7=sN{7xi4I^{TLYU+GgMRYg% z7Z6np|H0Q%J?RQmSWhK?MW5P$?6&!@iIU&=+ z*LxpLd}WJ6Pa{f@c$z(J)y+N0QB*0+)*?c?c2Dw39mqB_rtj0F{c)S>QGTaM6|cli zJS3d63+ZcVYsYhio3+2D1#!kkPx>^4Az;qE)9Mu@c07&VVZ0jB)0noC$8-@-SH*iW zaNyT&#^0kZ8;17rchSx2ncMjDjcXM*0q!8z4E$wdPWh1dP8CGnE}z!<}*HqbNNPL({j6=6Y?gPX?LlQm*%oH2l|;;Z;z5=V`+(&Aj{Dwq3yY z6{y$KbUlx|j4$^}%clB8T0LzJ_OH!fJSe;4WHquImTjv%tFh*XTVjnoIsdj<^o%tr zts3S$cQj>4G|Af3aeAv%ehLv}BLj9WPH}H~Qsg*OP%bTy&D*cz?wY}O9s%;rl1Nd` z9sVN^d(Gr)I_PwhIef;-`u$m8)&$;`ku++0mJxLM6}3c=7RD)$=FS@|`uc~Dz(77b!AQ*aNbPPAnq{rI{Tcqz5*D+T*AYM`dCChd|=Z)pd@ zz`|rg7ENvsTcA$;#gv0E^cYW`unow~*@uHe0 zq4~+OW7=HnyOU(sGLNP^ogSPqt8C)=6`+kkt1Z?g`KW;zUSWwV)Zv<(!9v}M%Z+6Y7kQQv_363mR61PRnGOK z-p+dvajiK*6P4ty6gFdya!wEy(IlT#L5c*7(YFn@Rla50bB`pcx-i(c>{MSKF5S>A z3U-1W@}2bUb3ob`&&j~Z9@ej28(b!LU;5lNM<){c#JcOO`|+NN@6}Y)9Q-z`-YMBa z{*aBa9k$`#EIWIBOzNK3x%fXDdkZY(BP=@$`Em0{fO-nhp--f&uZP~eF3FBJP!Pmw zPJUa*&7|>Kw*2wc-p;;YxsQ5%xy-Sz;3mCACye_sAnn%w*BL-ru;0^T8Uy9Pvy*5lM`%mft%SI<}|{nRtnj?4MO~rvgcDe zOGejpJ<<;6g9`Mq{?7T;LmaE~^W5b)+v}`pzx!qt_4rK6)9jpmtd&9+N5W-}$BrE_ zy=|hak*TtyaoD<;RN2j@Z%rO148>KbUFp57J$uhh~6~a^OHP{h#A8Wv#f7WkE_B{g=yM>Ri zCGp)(*9{x+SG*_{(>DkE;VZ=tSQ4njWkm9-_s_N3@D`;XSohMDCCVSE*i z{+TR-6=~M8tPbsNXAwsUa0qybR()F%@H?tZy&1%So?*I$z#7_FXkU>lBI2;=!_aP2 zCuh!tp==Gfr#>0p-gK~2vPIzlfhhq6onkz=S3_wd#XdY!)wD+>1C`l%G1!gIK43Tu z;SOYtzZXn6f1yw)zwp*e6W{wMwb*}bkvXufqrR{M57l1E*6(WVFAiPNblhMjF!$8( z8kPuLEfNhg`gjR3;FfiMV)DV?tH?=7b&%`g5x$Jr5Emek^`uNWaIbEl-gZ18$o+N9 zL}S%b@6t=TlJQBF_xpL_k?bDUbH|lo1E2R;~`$4pX((-W!6!Ui8tpBKhPJ%t?vvF7dDK543%I>9(&jCTWiugo$=E|2{+ zkc_p@9KDK95!!efI=jP92Y@#CFRZxA#^YXeu-8RzB5c@VWj|Lt$mUfdSKfpw^Ok_?Y9I;JG zMk9ejsR?0nzPWj>yh^KSTtj!Ie2xz&uX4j&_1OW14XY@Fk8dv@dscVjm709u&Mt3W zy8Z&U>#vjAk;UX^+Z=wMAF-GWdU$@ybKz0BC-;cC;&IvWFE6!|;AX6cs0kFeYsrqz zuBq=$X@6?NlrO+n>}hmcPTF*m7C{4HvIF*7};*d=;|r5M%NTs4ddJ>Pu%mxI|s3- zh#E#4R?CQT#p?$whfyby>gjDf~WjU#~k}$eL?K zALVW8bXU#<1>dTCSV0lF)k9qILTwGSG_96b`pK_AkH`_jfg8h=m0!xq(WTT1vEnsN zp-)c@m&#lV?b6+$59lE?L9g%YKPYMkzWhxi5_zCvII)~TZ+JU@EhH~c8V^Ek_}7 zQ7y`$MkSLUDl<8D-Kd-2F&P&ZADrm^{x?bKf8e6z_OBU6W0a8=vime#&cSKSJ?UcY_dN)@3TqOfSqh=`DqW=vY1(x(l~stpVEjHR-f+4}D6M&ljy{5v`-MNq$~Kq)@}&V0BlppEx>PQB);4|u&Cq-&aWGD$2x)#y)#@msK!vQp~i6D0j81;(1A zmi7OvKR5Z#$1XkRxy)J4L9VhKW>5JRiidfVsoujKo<0^{X}l<*R-r6)U)T7PZYGUg z6q}7)os)470c<`h^Oy-)&7iKL5cW>^Pm*I+gl9xm;pzH+B6a8aGw{BhjcDmfj_5&d zLUh|R;pANXjjeB=zbs%Tn+>M_t;40Qdr6#Il*eN`Mu@v7Ua|TxN2$BwvjIR9R|!w7 zN+ySZy@1thV6b}UhMj-T&ZgbYHn^Wjw0N!I>xA7UK>CM^z~{!4Hj@9hi7TY-k)Z~a zG*+r7#z{fv_nuOW#)SPj$%U0~ks%M?-pqZqQ*gDjoDW^nXj%=gbq815tS*nd*4ib< zL&KfIzTJ}r>KtQCLVJzh{#EDAv&}W{DLIyGyIkmtsmZa%eEraPjn7QlN3VQaj`ohl z_O=uf;1eysUJmmyyJ&*_z{#n=7(zE*#q+0I^+U8<`3P60lqM8T_RFlHR>fN`@dqHK z(FfvCM`FZWo_5qt{dajH)d=F^6q=URgifOCw-du3;vlpdD0M4ztazI)fp7CLmr9r+ zuGeXhlieeCf&HG1`RC}U-C>GVb5YNcPOQN$;70zXK{mlldo_BvKvRC$Wo)kNqW)6X zVmasa536>8n#Nj3OTErOp?Ni`mN~nrcyarhY~HGbir@UjJR|8$2&u!!(?mpCq{aHY z)p68l`bhae`0=)V0wA4{aG&R`mU?LZ4i5;`Y2wp9)I;y^BQg}{H&~}yS}EJfP*_p` zoalvXOvKtx4sYk9M;H5rPc!&EniBH9yVM{Po#8#EMI^hdooq%OzI7Si3of0K?IC35;%zGVIU%u4Qph=13l=j!cPs+yPa)SlKIQ`n#&;88-OIMV<7nZ(N4W6s>*RIm8G{V=YK_;lvAASf8aroWoa;*mnXHbNKZDdb|E2HWUP+j|nP9qRhb zY~gK8=4TsX>-Q9VN=u|q=wR14r=msmy{YU`KW$t^qn_NW zPWxB#FLCqstvxeE%;wvTxLpt%-X~)IJmHU;DdMYRD(pn0V<8uRB>rh%v_{#H(ZT}F%t*@Ei zzHl!3n|i4f)r4!GRX7U@Ymn04I1evFqWXuI$r)_`wgpxBPBQh=KCx+~Y^^!>YJqTT zPTq@p7qvvdJtAphJjQ3bJ2x>xdFIAC6lI-+D8hYFjZWim;}p*@JJLD~X{(41v-~Kt zl`USfyL{Gi*t43o(q#H%9*QoiT&wS+6_TB*b^auENURR)>E~q4cX(C1`O5u!DU4(2 zi6$rE;V|ObxmOZu$v5a|{BXliwB@T2SeoCk>_#hrWDHEXDG-N(vHF}B-9lNn?>qPS zImc0xEK*VOQgszf%+6Wb64{=!6nV^D_3|yTq$KRNVXbWZ@^S`68Hi>%om&3%`Zw8> zy<}$jL}o$d*McoagRjwSxacFQ9Olk=QM))uUyD#;@k9#qbg*P{)!MS_>nVT#y+868 zR;=U!vMUghctYrY;qrEcmD=d!UBL8I=*N&1;KHw+ddDT4f#n0*@rP#y7d{s%YWdZ& zDfWlyKp6Owhr=Z1tkmm=W37vSMU=~ZlT~C?Q`?vblg1Cn8*rJXrfYgQ{ZlI9tfpUK zkUtBW+m(Hjn`&)cB#83lRZ~w=*B<4(vEv8s^9DyL`)w6wVDJvl~e-xqwKqcV^( z$u&y0mlKq*5{5N)R%Ix#4Kh8t0nuY^@cRHmXDgl4?kG>$?vgv~b`; zYV7b!aeo4ELQJ-sOtseUl2x0U%Rwwu9Z z%Fk%WKW0m4%Na9$ST$chyRnw|XQ`0@W1CS|gD7G^97SJei=J-xB!Y?VaFkaHFiLJn z8n?ZS6WEThLgM62BUQzYq(wx6n@otCNB$o1V146w^0P4{J#(hVw-|d|7mx zFrgO-?Q#M+)w(yHELG_RX9Q{Jw44{GWjOoINX+uRm8opxejaG-MRDkv<=K0 z!YjwLo5F99P>V8M!w;nfsyeMN9bi?wrm>agbl$057T;7hXH%ilx1kL?Ebe`;E&515 z@>5M7KvT75|3s4E&eSw5@H<_EH0}dG2_3uFp@0Ql;yg`qz%daU%~7N%@HYdTWDw=x z&IKubaY2C#%kCUL@s&VDnO+{hVQuixvGJ8J$cx>5a2&bbNE$thQ4O3-GANp3|pHs)k3O$l)ClEWj#p4` zo_k_zgLv}s_dU%wS!VM_W=35h67XC*C?QFP(dt|+`pHwOP-K)`*~MQoiB9or`nKuU zZzG=*8FS2z$<;M;<>G#g8pEg;MJsndIjX}YJ$i3a1?FRz4A-+)0@XbVEjryS)<3A( zzKo=BTUJh`SNYyMHOHzR+u$XeaN((Lh)C;{LX?s*TIzQ}Ra?GgTtDV0Z5kOZt{UO4T>Q421m0|9*?XJDFOzz4?2WHkOvRjeLDAA5naWn0K6h zoUks`%{~46!*OrW8L;5uoI7suTG6@kIlPuNXR=b5cjYPqk`;P7h$ zPt^4;HJX6VuVxz*oNgT-9G$j=^Hg||n-w#|AK-IuFccX2F-C@o%vBB*CHcNP#k42w z1pTV(1@R4{r5O%!YCqI@TG#(AZNB&ElSCsnpF+FnBE=N&1kM)XFPC512km@oPC$eY zSP-+3TvHwSe!hL~ZkEN{Mr?ZK`l&LhnZ`Yk3hf8lCy4;a{(01F9u}HF(XCzenZ&}lxKNE46{RWrn3GebtM#n zW*WdTId z49GEm-^Oz>Ddm3Du1jv zwRAOeY!w>ECafxKr1m&DKNBZ#_CL%)<_X=RF5?kL0NW}9MGlKn&vc3M;gsxz9xXEZgVt?T2(wf%%xcc=$y;Fw<(Ky0e z42cA8zEGts6BGQY7ON88A!tmDriMZ%{7IQ6#4%lISwd$fHDc*5Z~&)))nULd^V8`^ z)R|OkF5rPjKDH7i$vvE3esL-D4}a7>r~Inb?-Z+L{-6=M$yEHyogf=tHSIJ*!b_ih zL_YPm3B*ahxyc#`3RCq(6L1Ow0jcFbm7DB6jPu7U`c2wXmlB(VP3(&!G>YBo#7d~X zZ_wL0_%o_~3zW^Te75~cs2-!9D^SJ?A6B2Ostb&0*fShoPZpHK2nZ@15Gu&fD5()8 zNyc;+c`uK1Yxa9O^VHZ@ez&pqHyCXALH31%K9QRqwm6wFnoqwJG~%XVyMC}miJAOk z_TzBT0#&LlIQW>v>6u%lkTg_-`-vrkQvAwK!iqNrj48sk%xF*$-C6aWl zF6ID=Kz#LXuezdS!Ffp-^dgNV?c*U8%#d+j3xWJ)3v%2>ZFqyq31hB|8noTrk&B-{ zeQIkaDHg7cy}s9!uwH9EgMeuNxSl#B*C!+2((2+y>ZR3qTY0W#E124im0KM7MjMVB zBn@}lx3(DuGP*L{COVrjnxAblKJwMxax(zOJI17lf#H#mUB9w6>sq3nN+TA1p_Q^Z z1yWGCZ+dZvl7YRyfMkUd9;e3O=VgEOYJt9YjPf+tf%P}4!^?^jhrOvH`zZB`FOkll zcLi3QywWOVSbJ>bUaQ2DI%LkL?Ke^w?B_3wa0#GlA>yE|-z{cq9FDAqTq8cPAA z(Pd)vGvh-wb*?W&t@|o0Gx5dtt!0(P%u2}J84Dx6Na{)1BGIe%p77)et(UDTlC4EK z(73Xn1iJ`M!zb<0Akdhc{p3Btr*vb$#E1ukh6wkg%siEdpxD$gGfZ74Px5Er77{xN z7D03(xb(s8zIDFR8b)0HW9d6h#LI7$iEU)U68D&y>0^^51k0n7pElSSq7jbjm;&8h zY%$S3r*3@*ImQzzprCy=brgWFXml<IH3ygwj`eX{5o@ zH`e_;WO#V9hcQgvLb1BOHc}}6HQd0HA|G2%mnKt_QsC#`59chFOz+42Hfhf}JP`y?vtcKK)i>eKDLs)p(KLb~*q65;dICfEn!p7x@uqw&LMQw>0wkcx zh*S%cD4$@Cka36|UViM^F@6~-REC2$2yx~brZ-%7j+s}bZQic;53mib57;GEG>Nb6{e za1>oNi&v~ek_*J<2;YjWcQA!R<`!&SZ$ z)ytKOIT@rbPOyk~1*@J*DV65?O~y!v;7ic`r{PU8M~XX`RFvYtU=Y}d?~XE6 z49gz{1IzO`0+xuf zV76M4Oeh7o4VVpt&w-EtNDw420elO_1YydHfXb33psfNt7`$DD#XN|3V4nz{;4+al z0vbSoB6tG4v`ON~bVt~Vq=&}TP>t|nbUj*{-;TE(DMfuHO5%^o)Dj1+hwP774Z|Jq zFC&@NKl(WmwLH6t7XbazBkkX9|;#4*Ub7W@S&lsssRpd}#2&Y(8=P3{vZkY$omDVX;+ zELLubaTp^FR0tPdu*o}E>Rg<}KxbkPQD$P(w*-M%3g-uI&LuB}nKRReUJzX(g~V7bjLs3;tq=kJrko5|5F^IFf=j?&Iy7&LNAEXh=%}K z;{WiFMPlCwjXSP8fq}n9D5MXcEhONwxi;GJ=x8g|t*m zF%Onh44@lH;n#+Tty%v+odlEu`Y$KBL-}tv;VKRC%Ecpr??!k*!V3@%^wu2@2-%#- zh2{wQG>O)Yp)(qonT@W)+8kH_rnC_y!7I>(>4uJm9t_$6afAQnk}|-LfSes+c&3Qp zeOIh$a)@9y;5T4H<0p+b0Y^tR_YFiU7BZx6BXp?ZK%!VUVbBI9n08am@sk$xIE*kn zeozFce{+8me-rwgq7`=)!5;BVY89-%Y43iyB$fqAud1A&7&NYKi|5D?GJ`i||ifylR*L*Aq}GOQ&}MfwytWCS=urDAkj_QL-6_osl~3*vi=M$jisvd3z~efBOx zC?+`kz=*fdVFpoes+`L@65cgcp@1B~yPGJE)U7Cb=>C{5Q1(y@0XAT_O>al4JF2_) zt;n7qYB4Pl$u`n|tJGdg&(5g$0-dgCx#GTxZkYc{KQNJS1t7~>egfEmASWZt+Rr>$ z!@U0yuS}zT9YKb1GoRxgODfroTM#NQ1QZQH-@V5DVLH(aU~ND;wOF<=8B5UTA{ak| zD3wsW17(!px8Fbz3GK~uX;|>yUL5*87}|&~6~jCT=mlYIN-4qa1$$4TErU!P87vV$ zL#=cO6K29FAX)@9fW0;;9g%C-qDH{#n+T5Y-|Ua9v3KByi*3R}?29`JEgAG(5EA4? zfou&{HWDhmjJ3x+M7aJR=Mvr0iju)&BQ-XXM6V15z#pK=5KTP}%OfI%+zBEl7PQZDm<;f^ih zzg-WGKM;D;#fX9c&K;p6K)uHV8<9CM1#Eqe;)&adV1Vclzzrrk$MYoagniTha5EBI zgyIVF0Q+qE)gt>s3Bi#E{uk_eq?OPiylsG&0{>4S($64YB`6e8EE)t>B^Vh|LK;Ne zT>Jy{W@tYV>I2kf_&4nP&pl{g!G@8&?bGNThR4hNOc2^C`WZAmxNB3$QP>ko0Er9+ zGguM;6>JioGk9VMU}^;7gCaJm&)Kxl4WMg+7C^_F=;xobVAo+Bf<4~c3ZoK{7$kAd zJv^T`Z)A{P)^{b$RoKx71947(Dk}zFIO{C}MEOrr^2IBAgHu zc~A_@OlXe}ZBDnePrH)&9${56u!Ka*r4NISMY0P!()M znLXtUImOq|p$sV7ZCaYk_~%#}?}|QzTwEtbmHhhQic~O*diXLTWKg<>dib4>sVK7u z$%kZ9n_Ae{ikxp6)eaJ>0th)>!6fC*SMGdslzqq2M({!Gt0G&sLu(GA{2a%21q2N<=nww#O$r{#>0 zjgMH-!ERW#9vn~WC}b?_Uo(sds5!c8X5g73T=-y_I89)oRutCH9y)Q|V;HNm74#>b zHfrWQqYP`!5)OZ#@s!8S#^>z!D6V^I-x?Dx_cg>m5_SWzXy2SQ@bf^9$D}5DN0^o3?uY0D1PU>q#Q^Yh2jfY8JE`YmPZHR zdK#BY_?tdYOJ017tL9_0+Rd6BGbukDMYhVo_~A4;fZR=s7zJqAj{28=p>n(SAPvhg_O zU3yguS;Ar(4J+IXH>P>%o%A@nPHr#*vAKL8J&AAmVLeJ}gB%G*O zl!2cdF7c-6JQXKmqoxmAE8b(AKA6x3l;zAgO|M3mBPzQUlf}PH4R7-@sn4@IsBGrT zDrjP_PQYuSCI)nm(}{FF)@-b|iDgeRkM?c$MhV^jI98)gr<{EB(YUIcAX-5(IiBH6 zKk8w$p$fB=q_6+lFvpfcFX}RC);X>1Hu8Nfyw+i9E_^(iKEC@>!)$?iZ5N8fWIXT7 zLLpy%rRVJ6q3_Phl*TAF54nynawIi{@l`;L!^5~$s(-V^PQ zIap6gpS1%8do9vZ9F5;#EL>T~4(5_$v)oqa)t46VKj|jp%zxC~Z<^(7k=Ei!_37@= zQL6H(++!^HkY5jDmb;@MVDQp8{gLK;K@`;!P5=e?ztcEPP{k(aIiDwNC-Qti3utAN zG*`AS738wlYSHFUr=rciz*^$2^E!#%n@7@j5mpZ7xY$9I->F5ksx*>MYpbpU5CYdAi`2)&7D*E5h z|3u#ZPK7@MvH$ax4`As;4Qm+>5X(h47cp!xB?7uc(4~TO9C1=Hk3b6`7$r<15h_cV zvCYB%AgW-$P5*N!&vycFWC$?!6W$+X9AQ7e1v~-r+VpjVZhfZ*$Aln^*aMXk@V_A) z@P9zvBGNiM1UYgYe|L2kD@W3oOxf$pE>@DH+W#!Z4yGc>#tv9PK4|A;u$_ZYkbf;r zI|ggdSSx+dj>&r4|GjkY9x>IrC72id;Z~ahDH8?ngFSQUHLVFBvtj?i0fB#zK*fJE zK%O_=%yeFcp0f-E36|f4b>!Jt^(FL$CxJE(t_kAZl!}FN0ShR>9*M$Q!bN~gYT%Dl<06_C+=$0+m)hJ#Zp<5GKKa3XXBZe4 zt`?55_`2oaQ<}#u6~-$n^z$P>?#MU&ZN49xH}lPA>TDda$g&A!%cVaBWM)`~ zxk!HMF0?ZCRnD)IZ~i-fFCT$0cua&Vm#6Eh$$r`?=>*OV3=90*wG-ARkGk@+(%8}0 zi2iNnp0|E&rK%a@&=0fT)sHO<{Jx_tET}8#MA&w2m)O_WvfGzO8Hr`E<_Z}^4zeV3 z?JiE>(R;V5@ZzedfQX}`cfKYLMp3Y=M-qg8{qrJ?6w?4G?PE_8m9jw`KTrD1f zT0CnmL;1=mJI*ZmR!11pz4L|Pk zVr0LiTXXqE8Qc^1)QTT>`S(M)d;5&G#vZa^vlSS8*|j?|&96_*KOSD3IL%())Gil# zlh$H0PJG^*H+^DswaFJ%=9uFy8+u=5o>W<8V`Ht{&o$4%$i`bM#<9RGP+sk1RKclU zK{@lHZYHr3@7)yCe-aVg3Xpi$LP&Y?+ydzuo2AuP>TB!blBXpMb&rjf#$_2?%S>@| zO42h7Z=3o$;mtp{;1#jebXR-XtL7JdlCmuJ)e-9`b4M_PFw#_MqqrVCeYE3kuriq$ zy}yvvRxeo2RBvu=#@qEzFXuDEFc(-&Rcg}Q!#rx${RH6ym^*6QfNUCeZiGx9ISge# zl-ZOkA?P-%R~dWzS2~ASI|v-gb5)Q;m9?-(>4tw$$EyHUnM6ebi=1LJ$86JbwA3=2 zDR-VcckDistt>_~cjLH?by-aYKhH~%8LGWc42u0%%xFl-XGjR+P#19mYEzkxFprSm zmY(3H^=m_wm1w;a0BJKF_$V%{n(H^Xnj@yPVp3 zu0G45rKg3rk$TEkNp+{N|1$mtN65urb|zl~K-{QUb{OPof_(h-@#9)sknZw~YYLOU z(ah7pJXhE@__|7;sj}``#asMC{zGW@o?K3PK|Z(g+02uTq!mOa~%SzXV;xknjy$7T>Kmi({s9xHw0A z_fl3J2?CQQxn7m#nX0F2)iloZwa@Q8^u-68F?^O2IK@ucu>7cJ(AV=zD%v0lmoZ0w z-G41QZu?@m63~^WR|Gye%*B{uWtIz$C~ zh_Pl`;^$+Js=s8sI((d7NrlP}7`u=8t{RCGOc7rakLu^J_3a#GZXYmYT$cTE}1ZJXwk7^w;_G zDniJm-m6=+NHG(8i3NX4X;DPl`bqw%_ff~+EQa~3jE$RY0~_|xoSW*}WTc~bJr6hb zr~98=v#y94D|#goz2QuS#j|Tw^-_76jE9#dwvZnYl*WWiC^oaAT?PWy_h$Tk%J8y^F1C zj)3|ejba4YH7(!Ld{6QsKPhRhEh$Mx!sD`7lFI*_iK4BqaixUETe>fqoGenOT(j%< z*QWA|k@HI05eEK|+jZV}!|s!lTt*m~frj-)EVp!^6q|l1OD)T0&b7X8TCQ|Udak^X zgq@fs%K3dgQqwo)f`{R1ENXy~*|`37j;&Q<0YzdvpFxH>DpKZ)f!ZF-uy19gXp%B3 zU5mApM|QA#S@bUb=|Q3OlGe%(_237}VlCpkBmQ#JG+0hUw{C{$484QyqPGcD%z@1% zgOO1HpEks^Lh0eF*oP!J+{$XpZtsiyl#4&^KYz44$xU0-931X&k?dys+rvjc$;l%P&Yh6Q&kyeL78gq?le%bu^GMS|J zJg#?Vi4td z!BADqUZ_?JL?Y4gV+rDlz#oYX%~W40RUF!%?ZV|N9uSKo{3-luK?&WhG-e-iRYNyd zi;cAyAK~{6x@uJ^_YXmdiHDXJ#5Q=+yEk#u7rSj!(abQjo^$Za`zh5TH8|mTHXNoa z!a7O&8vPs?HzCg5Bv&htU}kHb577)Ds7P|sLS4JG1ir*8i_eRd|h8n zYK5G6y!HH1D87#c z>+Az2vLVODQ+$ zN$xddfV>zWF1#|KB2bwX=2ywmiI}^S_4#Y!dBp2^(Bh8PSIi^{XJwA}@9mIhMoS+h zR4z3&C$u~oMf_7shzu^K8<=?krt%7_j2v!ZLSNRBrM{7;q<2qwdJz#80S4bnogfI> zPLG)*+pCfgNLp7&8dFQNvrw9+%Ig+D?sx8QJu}cWe&uxZeC<%gW#{?1>18ZM<=DVS z==$%Vt_r!sQl<|5^FWIMt0B3)H}~~8{Y2rq-@Y4a4W|7?3w4w6*hm?G2ml&Ky|>)O zT%ApP*OQ#W@`Aq46DpVnU6j|LIg4Tg|3CAy)vw^{xbF3XYfV+eXsoRBk;bsJh}?4#jug%`eaR0 zb>dJ!$Zrt0Op~mq_X@@0`qAoj-LOZ(?bi6{_1fXuv_xPVXZR$}tZq3f=-2~wfB zp5^Uuno-8dEMV>Y_`rUvtf>OwPE*%PARh9NbhTbkwGwVyi)(+>+>q~jzEF)Hf|MBe zZ8IgLXch{2zumw59ccEK$0YjSt_~e zd2Ja!0bL=F7Hi};$nVe`l5tQ>$$8Z&OsKq1SH8z9csARl7vrYUkzpb8V?08 zjNL3ugNJE=d5^W6;a9Dr`=o{GTf548pO;PmWSIAw?%>lE=6%CVjNfRTqngp!(f8T< zt;zkD*;|lrxy<+yO%_ZqQ^Y50|8pAvl z`GS^iw&xxLbN_}JwgwI@h4Bdk^WlM$V3F4lU_@?ATTYw{z4PyCa5@>+O5@#jF!$0` zUQwZZg^tkhnc}o?+VaIzXqjeCd+6b4@pzO&PqO#U5~A&c(}-OEb*#Lmj?j|x*;mH4 z#*_Np%xzZwGOlacIW>>Cvh*7}uFVWC z0N#dgz~HUiNXCM&;x1zwJrgtQyj7Je_1A4a)zVc{*qXZyRvP|VCX0)h3FBms~Gd?rZmsHNivkN9CIlR zt^4K554(_PWaFzm5y^6sn=8Ni$K$qdhU_JZTBIg-y&M1Ji^Mw!4Qiz`*f-qK2h2KN!U}fM zWuC;C+W_letN6yQONTHOG;1Z{D@aoWe}_Bx58SNGK3K!MMtM|!|?$*}3n#>DkxI9Lp?hN6xnBS-lXkOf*YHHi6?~C)P%``l$h^jj) zxT}A^XNg=~yfU7uz8Z2mkY2o!S{uqYp=6G`OaUc|IH{uKl`3rPX3NszLt(C$;=6#N z-s|oMd5WKl;vN^BvcJe|w33}yr^sz~f_eI#$ivYwaupvF#I2LR;uSIG-3o-_+^oe{ z`+GxVi_b1EBFX&hnxvavyAB1fcKMK)>d&`}mX=-? zM;waTUU&GGSHvepyDt2<%CiS-oAKU}T`I?C>>d94hw4{YA1WV<J8d8ZaMMS()oxBk zt1zHxmN5rkRalDB3^f%P^o<;!)Zm%Ni(mJLM$>;dF;(Of#u8!X-X)u9Oqg(h|YG+zz(v<{96SXLUEL;~2aS zhK~EyZY<4*Z^<-G8gf%J3^fhP>=r@gP&jqV@skLawXV!v3xw)}v4`cTBL)ri7@6T? z?vAbFG<_D0OZ+;EqZvo(_}Wh9xth9s*wKJG$299&}y$nOfS4hBh>2()J60jDogK6SkroE8_`sST7b0 zp~-2>SmDi?gQ4fOd{E-EU?r&TxxD~H_*_0~89xC}s*QjfI2n&z7aSREyv;SQ$4ngQ z$sc**Fn1_2pM8pYStS42|2uG$hUSIq@Ot6tdYOgl)TP+F+PRfxSbCh$NHHD$S8$Me>B`yTarT#{rv8hM+)93?7MYKSCXo%pg;^c`}|8HM&EQ?OeV{|GA@ zE7w)4Cf>ueaB30v7gOJ~Y>bDE^m2|^s%9Ne^g>nK1#OaPj@q$}DYe8aj^46lSeMG# zAe5B0q^wz`JE8vpO5&w53#Cr$;>|O)tVlnd(Ed0)$fkKytJBS|E%8+1m%oOyF-L4m z={;f6FC$NMtnF1E{o@S*uM=;nB7rheB<`V9^u_VVC^6a!cXEcknjpUj3tvZ%xQ@U# z++1Y7Le~5t!e>ZSf~T8MN$8;fGUSLn3-;-c5)j~cSPy=fesBMV*00_*8g zGOb^q4{@=AUWoTk%aIbs6D5#-xQ+V7`L3F{=#>}wv33;O&eD6FKX0<%<&Dm$2QO<goK&mTkG?4}DTM+(39m z2pr-NWnh~WfgF;Maf7{sdH`EI1e+HAATC(On^kmH)l?|`a=PBSy`xxk zSGA_%xqT%f9NW3?Q$gAeI3!)f$#PT_Q|LYIipm5jbZFYdMMSxTaEA+PrY2PEl<;4Z zgdN=jPgd?3`x{~}jz0IQ7Xl~vaaE9yBCa^g=VO&gF&Vy?dg3;-s>pQ8ygl?Bmnk8y zJT_Mna306uB(`8(uq6$^`$=Lp9{Bl+U2|$Y-|OQEEbT!U1A@KAbdd$5U)k>u-47Sj z4-{Nr^1-*11ZQuool*L*DW%sq zq7b+ZL5j3(5s*IyW6~#bW7CmGx|Sb#2tO?9+TwwA%N`Egu!<&|2L&bmogm|_)yevj z=}yosc~d?z<)bh?J-vmc$`@uQEk0(h0W*t&G@~!`RJ27YX7iTj#Rdm-vr+74DpCo+ z+4-c`y>P_w_M5t|y>27>ex*!+Cu(Sm`8{fjyIKqYz@>zK5;bk$1~8#GrZ7G_7N%%y zF!h^xl&48w-@?A7bWTq%-cB6XEd3-ID?Ou}6A-#$-(E7KH?3zxVxani#cr76Ve^~u zXxPj|qFvzr@x3_Up<%C3*0W6)VS*ia2OJ7xS5;3k)?j94v%7OEY${t~%1Abi5%Wp$r*Ks0qaq$XqY)YUyV=W*x6-td_o6T~!ALbQtR{Q3LGkm{r?r4EMnVhEPh1Kz!<{mo+ zjS+7m)up}lOv82D3pHO1hs13$+o~7WH&iW>IQP>D>n&nn(=&uPX2;Rj-4yX}tPdVK zPevzZ3L)yY1`%vP54TC_N>^>_HsLi6r)Bk~&6;Ov)_}9LvKRv^&F{cC5|ZreOFy0+ zlSpUlh(%|dR76X2HhbIk%FRDIo28cHhY`+8Ew%!OuH2{h&wi*eOMaj%? zaO(Z(vr=j0jF0!S=y9OtMTgZ69&k~~b}ZiJk|ZR0k4Qj#>|p}7?W+7x_l|TWGehC@ ze937gWz9j@Gm}@rIsDXhSuDsU5VSFAzkH6@^|I~NPP=zu{2*h?+$JyhrCqe0^(;Yi z)twfy{i<}S#TvI$YD3Q@C0bBo@K8`}urOuCaOr4<}INtWb`fX=pS!x)fW1r&uXR6Rx-x3nB3K$4vK z93v>QkiWi)QH$O-_KL9@MjMbUNzsU$U0{9)cd ztkd?Qv%yQ(FAF@`p5@8v4k!0szkZV3@Jt{^Ozo!Z>D-Fc3}N0HL01*%_wV5jK~GW? zmTPCV!3K>tdg$+nNiQGv%MEhQC(Oy0&93?Y1xRy0)9io1ztet)g}*_DAmOtm(qu{Jq~fcI+ocm9VvjZU5qK zI46MvgPxHD-A<-OIp4b1;W+PrlL6(~z?*>h6$Z*!|8+DD$%tO>lFp!cMHE#N-acJF z6&?ya0SML~h-jZ1*vOBl5B8w#x`QEx*!;{0g$c$%<`1~=?eJmp!6=4Q+0j9i;tam_ zA@UhN)pEeHmCcS2Ql8Q;Bg1%1hTAZX92CdF5L^%m(aMRF;l$}=B z{sTcVylV*DmqGt@Wh#QRU(3Jdee<}>Ydz_8Q;L;XxV`lA+0ck#)I>c7!SwurW5@x! zdHGg|f|B+4EPUU<`N0f~Jm+-Xs#J+v$*hsGy1z%@YuU_Z&f}yNqYDOlUc$174&C;# zvC*f(kyC69%aFC_0^l=sv^yO|_N62RAt=^<_~Z=NGS#=d~#KIn}vV`+eRP{1yw#arpjm8^9zWhqx>Ejut96}m`)m^5wNN8z1AjopY z&8Er9zy)b!MKm1%i&o1lj%;NcGWkiv1T`;OK7M9)e!_+77g^<`q49PA=Uqd;Cef}e zm-=~`sFnK5fX)?{5?s*H_T_Mk^Xdn?9ARFjkl}vTbo4{meBpFd)mRjh0l^QAkth`* zVn$*6uW`*{mdB@BtHGmrSxT4Nd?3}2(T1`&47ph-8AcgkaMT{Za|tqK>4Vau2x#)) z-QP<#8`*jle{15YjwzE-{#G#Z5w3w%++gJxZzj=yW=}Rda=6Hw0d^?YQ`XdwiRG>o znRVK2gKb;A^aQ5|I`XL0T(+3N;PNkWRXkO6c+A`ndA)Q=S??&9Mz}J82}Gp5Gp1Y; zV!ksMY1<- z?iY6TTGXc6l2v6cWe;r}xP7PN78c$eiy;`H0l4rKu8D_!R_L)I{r(}cA+X|9y@cqV z50hGB$5(^vA6XtNLVHOZ52Qj~xQS@r@o!N{Lngm1J*wmGLM9_<3<;|Vu~|H`ZR-kU7n z8M~{OH;OmeM4l$wHH~Ii?i1llq9J+$ZU`hWDmN564r(ctqS-&ry1>U8SP)q$9yL6^ z8_GWawaP^?y*8|IN73PH82rRf64kexQ2QHRY15bu`?+pGP5-+e*=oZ#1r52~sN)_D z`@|(iE(82faf;A+1S29VzR>ybWaw6noHM~HD8L-{78UgCnL4^^JHn@%U6S+_+X$#5 z@JN_K!uBn8I;e&9JdgI)jAFS27H-!R(%CmPsVo%5NRaaK_h0QvPeZG(%!o30x=Ql1 z$baXdg@4anVhwua=+fuFuGrIzqRuALJE72FLtSaesjUC3C=FzHOCFW#ke^E|E_2hX zPe+h0S(Ym)Ny+xB6{o%e)(BAwhv^qKk1e-1BQPAeLybQob zbk|H*31<;jMX5Y*D!b`KA`3+^5=JAX<#!9olcfa4qkLcpcI=~swV za)8nd!^jZ(voT`E;nyq_sP}P|Ne_&rB6GCJkiJ+hTlNH~&{o&#T^ci)E^B-v(;q)o zQ93gB?yhq$D3uX2_4<)Vs1dH5p193-p0dW4bW~_3gL!lFB$!S}VKNiheJ6aSij#iP z>}`bqzE~-2r-$O?*2QbgDS3|YM}fn4D8gsZ0>=?a zAzYQx%^X&upH6{K?Yk`!8KtY_fR)&1{mrs3jRTS4{>M=AeO|xGP(zG4Lm(HwxOd}0 z`_LRB4Z7_jRHlG;KGtsnr$;l^E6%Ga6DK#c%!EZ0%sHh(6RipofY2)WL1bk~`EjM{ zggjB12EqVGf0pRR(mfOFmeOw+Vd`UX1mOen+gRcB(@jk!bOxC7t*U}agggBH$pnJ5 z&X(H{ApLE|Db+rO(r*%8<9|b+FgMBh!M!epj!-bwZ4RX9$3V-rsm+dD14PWM(>c1h ze@+RYUBaOHg*m|&A&(SrHNfeZw{apV}< zb@ZQsAhb;0zKoJ^O4F`K;aDHR|Ly8?$DlC-un3yzgZX{F5}7AEXc$g`zI?t^ zQlB@I+qeC_7eCGK z-lw?V&BL+>65@2?zpDx^)kr$|DavSIPwR|mW0ITKk}TIgYsK)#2AY~zj_}A5cq(gD zJZ)D07ColA?qVs{hd=6~dGycmU!n72%4e%pas2T%25e0g2jvQw$ytyH<;sUn&SY{cZHr9oieS z!lJqf#I9kOGN54xw*(gqNOsJ-<>TJg%>{XmPm(^NJQx$%w*E~NCwRRVE-#8QT&2_L z0i7(8XkS;x(3A)m6za1%(*$KDSmtx^yG|WR(^xq5u!7r?kikY9E1_PtArN9HjPkaP zy%CaiR{XUz9+0+OY1$cn=$fm){3u)zIt0GJuFCv#)dd4XOGw5D0jC95ZQ>6B55WRg zYwF7Y|B46v&s7-=Oul?u>vJLgzX#Iix8IJ&_5fSs-#;AeS^voi4h;R1vR8izrV{}S zjEfWu4FCV3G`F|3{Q=m)XbVGWOO^P zm;+DHrZDWvl4KPNwq5()U(TZv=(NMqQ8=DshIcx$=eEcNvTGVfm%|kLB1~v@REE~z zoY@UNi?2o9xKUNPRhz{Ic(EjEheQnMO#*~*^|@7lm1`hrG#IUfsMW2@ZVOeo{yCmoCO-mAu`-FqHniv4MMe{P3+=`el2FQ=VRqyY7Ohx6{NSR+ii zBdK7EW&H(LE_rc`lh6DM@2?{IP)^6RIUlqh+^M!Sg}C7;8Ha_U0lD~#I?(8F#K2m0 zGaP%yaJ9;1mGamKb@5_9LG&4|ua75&HCyumnHj{WhNw%sw%y+NYf;Pd^a3OswPl(j zs7f^Y&Rix#Z^G|91bPM?HKL%U`OED__uGl9fe9nqSRisx2zH8VardC$>nq?g5KXO2 zg>#!SD zA{|!?jzdL`qJsRomCCgyobYd@@N*w>1Tm}@oyU%hTffK8KHqfPpR(Ba*VAE0-dykX zT;Z-?2uF{&qFtWFVYL(TPGX$2=rE*`^op@twR@Ah^IUc*M7KaAmK{n>&<7{O8GEzg zvMe1CI*(aCQWd}9+j3h<-SKpYSx&FISSck@8|D|gy(wy>#3YkFU{Ce9#k**}!A4;2c;NMk4No^t zxH8%3~w8_5ny~dZqPQzPo!e-bcu4Jz17CcwoCGYM>UAx$Yc&my!o5@W zArmd$PE@`etm<@66Y!qhj@*j_+CBd$0@dwNV?~8dnP++y)N>iPk*eeJ_lQG{X&!Hl zRs6Uq7>0{&gzo2tEc`04mH3c5OOuB=P_&I9vl(2P-No&Hk zQ<94EX6n53tg^74No7x^dNB`@>9X`qsE5aB5%{E|``o!OLS+jf1lm#mq(ERDfFp3~ zlTDMR+mTR;JfYTSM1A&$fJ&v4pMk_b?!{z+L%e3fto1`-r2YhH)UKEUyi<^@#&qH? zA(8*E=L6rh_J_X-JjK-)m5~%X>QdszNbV#N7eav92O1i2&K|#A&`QQL*Hz21BW(6u^XGR9Cx77Ej%<~Y_y$t}w0zr`_)?Jc7pNm} zABrw~$HXD_>sPf^e#WQsDdm+t`d7Os>xyKe-;;M~gr@O*r(tri*&y)dh;N3C)j}&r zE@3^%yamg$s+dyYSz~!YS7c}eZG9yt)z3<-e~_Rs5PyD6+%nTg(F;gIAs*WQ`}}t| zC;A0w)F}cWhxDZ)dPm;wAP8+zyLkJfE|sYNh-zwAsRl=h1X~4HZ45^4&x`8owQS@N z?}elvY(bi)f3&jX<$_u3*4a!y#VdQmZUy6ra@AVAk$%g4n|;FKo7Ja={!6>fM6Ox{ zden*{ndQ;2nw+1Di7Vp80VZEp`Xj^8z%UX>Gt@Woj!tOQckX0H`#zR_6~O$3%+NCu zlB^V=78Wwq!i1WARn1qO3`#uV$imV6axZ+Nuy!~SY7t#}B&Y#LR+#RB7IZcE4jQk5t>eQiF>eYU%K^;_kI3Aqb!#Z=_I+raZi zM%9LJH?(%5sxf&=n9u`RMI6j?9JyqY4*NyuoanJF&=^SShr}vgk;r66U`&=ntnR@h z-tXynlA{bH9O3wjv8Fii>wgyHOAb9~3Fy{S5vnkmHK*4SUbVil~O!$Thi8o3s)a zTyE8IX9+J1d8x~-y=7f;#}Y%HH*F>rjvfR>CuUU_+o;7aLkf8+*E~5=+ORuv)nZr2 zeQt(s4?7jpFA0E($WXAg)guE6gAY>vw!^TbpU`9a?XULYE>zg_3)23}bP&2A9i0IA zNUeF*w6Wq!=bI#ZDL3$Oz093l_q>D`YuTXTBClKldfJQkMwJNh?TyPDA#b1XcZGf@ z&Lgzg>gf(fCg^$~h?s;K8)YEE@xWO{&2KCk&Da-Syt!SLuC?7ycCQfVb;B6pn+Biy z$bw*0)h?T14Bm@Ml!RSM)nA%8N^Ign2Re<7#wIWD8>>UWT<+8qf|2}Tvvw{o2q=smz^-osz_+6v* zGHT6ggVm_pSC%$4l?x9{J8ovJZHz=t%n1i;-vtH0(1qaf-w2&fXDTvvXNGx8_J2X8 zDbaqg?h(CSXa0(@>FbFF5j_k%yf!+*-D5KMB9_EaX#)W+_(QJsVQnEnsE=Bpd%kap zKirEZ_+hwOYj+8kMF;Ra*6tfABC1#Q#nc!!&0C7y?Y(pt;eP@<+S3u1&|I__h$Brq z%$yU=TMBZ05PmG{lkw@~85^N@98}8rb|BFuQhLUs3%~7V1Hu303a7MfYuVc_%swK1 zzQQ8=pRO?Ar?LINTw!em2SzTe4azH0PuP;RB+fl%H7FomK}-DS%|Q@oEr<`GI&{f@Pf_NHSPaJ*`wANS!jJhJxp`Wc-i^^T9K= z$WIZ9j30Qa^rcctO5B1Yc-B{1^-n>n4EFYVAFd&oN0pPdA>wv$oz|X0VWCfQkfM1Q z*9pqO+N8GHmin^q(8Ak7@o7cK53#W(va^r|sj+oRg#w%!b@!1h46U~t6pHW)nKrq! z+R$;{oC06L!D~)zx!^M~Rgd2^MzAl-YLnLGZTdjktrLB2*#g|%q@utt5rp|B@VS`I zv}c00KS~h#?EB+}U8$)USa2xnNHD#kSeBj!QtqNX4oH!g9$mYI@%5sY1~?W3x-4)> zy#)`W1x`(d-DPBMxrj3KJ@5$)Pww)w@06-wD5GDI@hH^4T($T`x?PVlUIs#y zs5Lzas?KQR*$+JcXpzI?O;XJ~x;*qChwAR@SQgsjrrqa8(LyCyB zKSID0@<~pUBX+IpIOHL`AQA4lzwz;2TK9?M#a=<r{rS0t4u{ zVx>?JB=cg^tPZI`JkXK+%+HV{ppl?N_<7*2ZnK0x^`4sOyGet*(5}WSm|TAV;k4a! zPq27;vKEm=UTw@E*)_k?rDHPp-%6)jT0*>hFf9g;ot&3u2 z=qs5S65M#z)b%-?rQTOOi#rO8LwcF}lkRD^eT*z~fRe{Ah8;p--|Rm=Cd#n^TzT}G zr`E2mguB)?q6}oY?q!B<6k1}hg@T2rR^eoRL%m&$8eK%*6bc)0H2O4XTsy5 zNe!6{th#vH(hTom+lHof1iRhirqdX&>5g;nW%Fb`02L%7yV~NwF>PF6911WRo{6`L zemJLd_%RZN!hXc~9d+sbW&FFDWZWz7UP7M_P8P*as_#>k<0h#$zuSVNjbjOKT3XA> z<+I*-I$aalglB&aX|WWDiow)Gg>l2+yNGo@Rj!0zblt_TpQy)Z!)arQv3k&e5cK0V@P-*u66&2 z!Cq27(~_*x2OszJALE881t`SI5%oT4p;7Q}Bg_Q=%jmWycuNS(V_e`NAw@{B+g-1J ze)ILxeeqmP&&QCU`-3Lv>rwS`CvthPxas{y%6H2RtV}x2wo{IdYVHK`Ngxv--WZKk zFk088C2`RvnmwV=i|HhUb2^P-)@Ve&tFwh|w}dzdt36Z+r4_!gyzqK^&R-LURHzU+ zc?oBJofG=ic7PUcb^-n;$nIN(HkqaNTfk|NY1U=&4X{?#4A>U~X;qg{f?WBoEo_s} z*s1dstJ=xaK@WgWIZ6Y>$}S0^&nwbl2FoU^xS%~|0oh%-<= z6F7I!1^9+0M?&s``Zn(3?G|V!{qDN1U!uDOvB(lwNteqTR~UwBx^i2kHaBg@2J>55 z+tl1*Ny(E-mxBWvI{)zHGX=MMhue-#Z-fL+aR`PVW(S@T%+FnQt?JxFK&U z6aEqWnFXYJF)<%cGOUA{Nchcu&woj4MI1W=^Ms)+!$Wg~<7z>swMbIszagv@G!baK z$?6|w@KOSvnremm`yWMAkr>93v8_2YSdvj|`x6#i$W(H+Q=H6@T=M;jZevuK>je*5 zayBpd2mU6pTsgLo^L&Mc}}#51i@ zH}U2iQ6;32YhbuQ+6lqZJiY(}H&6d;yCK>%X}`wDsbAmn3mqv%A~Wpp394J2y_k{0 z$woltyIVHUg{XBk>z7cbZg~sS7-h7nF;Yr;K+px<;h(r3-vV(!grJqtH+^zq9hc(d zmAA3C_jmNOzN|yVIxVzNAE3W$lh`(3QE9HOnM>XIQp()BP|c4KGMIJ%3t|qp2>LU* zz~s|qC%Ay(^w`#jnOi{Uz=aV^KNtfK*+M*3$8779&cSMzc(#8qe ze2v1HWAtZFrK2K#7i#gG>z?Uuepohgomk6`uNw>BYIYIc5HN#WTS{t(dL`RAwdNe` z0E-`J+RQm&DnY;%fJrUfRtTTN2{3CV5LpGDot+ofW)Q;LQ~5#VFHs+@+}RW` zPYMG`^fQ9pLTBSuQtDbPTUnI9=`JX1?b0uriZh7Iy$$9MF@2>4%lRR z;`q(}jScm3W&4F-@llAEXo6qJt5!-5Sc~Lkl;Vko>6A0?Iagyjb&V(UM4Zu>5EwSD zaqh!lgecLpl2+lg8kDNsF{5Pg-60qzz}p_!+obF z+w{*&t)`66l?Ur+mDk?ZA2zKKA2NWqoD;~0HjL>-}r8{`kj_1(s5m1`JEqbM0 zaZAB9w4_MyZ7kXhk8ul}Y8HUA^DqNwRdTS$&dfC>daXyMVaX>a*yN~iB^$Z zN~pI&rqK$b4#=VSe)-ojJSyX)I5Jz&%;M$x!o8;o?rq+DDbk5U8I`WE|AFTOOnLH- zt)p6twWh{ePO{PD=pwT<;Upo;8csPT9Iqy4Vt+$AvjdaE8pmm9&Aw_}RJ6*Mu-rdA zFld-YYkGkWw6EU|Q+L(WjMmgri5@pLaIqw-qETh+Ms)woBep;aZK~AW z3(7urWf0^V-Mb!=Yq{3yc#!=p_iwmU`XsjOn<%*u^pei%{S8M|E$9G)|MF=zlDr73 zvpOBY^c(b*crJ?r5t}~4&+#74!9u`e(*w?VP>5E3vKpe)WRAcViqCjdu=UH7zNf)H zYu&?AJqy%1*Z1HK+q9FcK-d#Vl<}i(iDfHYcE^WO@ZMkfp|EZJ_s6u`z!#0l1jHu2 zD(|*r#Osp_a>?f53Uzayc_KMlA{Vp+Tw5j6gLzi6zj+^G6}g=OFUH^(RNDn^!PKg^ zr4Sxq1!q3z`Z=&k4t+V;?0cLRk(yn__LMVvo$jAt>n$Hfa}|$)B6DPn4&!=i(DgQi zn!UgY2^B~rA7fs3sOcisJwJ7y(utn zNuGWq6J~}Xl{btcRu*@Xd@XcE4(Tiy&tYbFfB#7mOhvG0kUXZNpSgjoh3}o$O=|gT zfI*(bgDJ@0uve2D%nA%va&nm<9||O4j9^myRg<;za>wwS0yu;S4%mN!;$H3BT3K%X zcFarQU|>3`P=pqjk?58Ct1z7YcCXgWh4YBy|CSpw2NkV*T@K3E5b*k>+KF9yE@V{^k z;J*PI|71`0$^PO0VgGM1$A6bqiJb|0e5y29EzFO7B1Zms8w-H|5{r j$p0=&`tn8`fSuvk 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 LfxhP53M3c+$EIRW diff --git a/NppCSharpPluginPack/Utils/Translator.cs b/NppCSharpPluginPack/Utils/Translator.cs new file mode 100644 index 0000000..1e9bbdc --- /dev/null +++ b/NppCSharpPluginPack/Utils/Translator.cs @@ -0,0 +1,295 @@ +using System; +using System.Linq; +using System.Collections.Generic; +using System.Text; +using System.Windows.Forms; +using System.IO; +using NppDemo.JSON_Tools; +using Kbg.NppPluginNET.PluginInfrastructure; +using System.Reflection; +using System.ComponentModel; +using System.Globalization; + +namespace NppDemo.Utils +{ + public static class Translator + { + private static JObject translations = null; + public static bool HasTranslations => !(translations is null); + + public static void LoadTranslations() + { + string languageName = "english"; + // TODO: maybe use Notepad++ nativeLang preference to guide translation? + // Possible references include: + // * https://github.com/daddel80/notepadpp-multireplace/blob/65411ac5754878bbf8af7a35dba7b35d7d919ff4/src/MultiReplacePanel.cpp#L6347 + // * https://npp-user-manual.org/docs/binary-translation/ + + //// first try to use the Notepad++ nativeLang.xml config file to determine the user's language preference + //string nativeLangXmlFname = Path.Combine(Npp.notepad.GetConfigDirectory(), "..", "nativeLang.xml"); + //if (File.Exists(nativeLangXmlFname)) + //{ + // try + // { + // string nativeLangXml; + // using (var reader = new StreamReader(File.OpenRead(nativeLangXmlFname), Encoding.UTF8, true)) + // { + // nativeLangXml = reader.ReadToEnd(); + // } + // Match match = Regex.Match(nativeLangXml, " dict + && dict.TryGetValue("menuItems", out JNode menuItemsObjNode) + && menuItemsObjNode is JObject menuItemsObj && menuItemsObj.children is Dictionary menuItemsDict + && menuItemsDict.TryGetValue(menuItem, out JNode menuItemNode) + && menuItemNode.value is string s) + { + if (s.Length > FuncItem.MAX_FUNC_ITEM_NAME_LENGTH) + { + MessageBox.Show($"The translation {JNode.StrToString(s, true)} has {s.Length} characters, " + + $"but it must have {FuncItem.MAX_FUNC_ITEM_NAME_LENGTH} or fewer characters.\r\n" + + $"Because of this, the untranslated command, {JNode.StrToString(menuItem, true)} is being used.", + "Too many characters in menu item translation", + MessageBoxButtons.OK, + MessageBoxIcon.Warning); + return menuItem; + } + return s; + } + return menuItem; + } + + ///

+ /// Used to translate the settings in .

+ /// If there is no active translation file, return the propertyInfo's + /// (which can be seen in the source code in the Description decorator of each setting).

+ /// If the propertyInfo's name is in @.settingsDescriptions of the active translation file, + /// return @.settingsDescriptions[propertyInfo.Name] of the active translation file. + ///
+ public static string TranslateSettingsDescription(PropertyInfo propertyInfo) + { + if (propertyInfo is null) + return ""; + if (translations is JObject jobj && jobj.children is Dictionary dict + && dict.TryGetValue("settingsDescriptions", out JNode settingsDescNode) + && settingsDescNode is JObject settingsDescObj + && settingsDescObj.children.TryGetValue(propertyInfo.Name, out JNode descNode) + && descNode.value is string s) + { + return s; + } + if (propertyInfo.GetCustomAttributes(typeof(DescriptionAttribute), false).FirstOrDefault() is DescriptionAttribute description) + return description.Description; + return ""; + } + + /// + /// This assumes that each character in Size 7.8 font is 7 pixels across.

+ /// In practice, this generally returns a number that is greater than the width of the text. + ///
+ private static int WidthInCharacters(int numChars, float fontSize) + { + return Convert.ToInt32(Math.Round(numChars * fontSize / 7.8 * 7)); + } + + /// + /// translate a form and its controls + /// according to the entry corresponding to the form's name in the "forms" field of the translations object. + /// + public static void TranslateForm(Form form) + { + if (translations is JObject jobj && jobj.children is Dictionary dict + && dict.TryGetValue("forms", out JNode formsNode) + && formsNode is JObject allFormsObj && allFormsObj.children is Dictionary allFormsDict + && allFormsDict.TryGetValue(form.Name, out JNode formNode) + && formNode is JObject formObj && formObj.children is Dictionary formDict) + { + if (formDict.TryGetValue("title", out JNode transTitle) && transTitle.value is string transStr) + form.Text = transStr; + if (formDict.TryGetValue("controls", out JNode controlTransNode) + && controlTransNode is JObject controlTranslationsObj + && controlTranslationsObj.children is Dictionary controlTranslations) + { + TranslateControl(form, controlTranslations); + } + } + } + + /// + /// Translate a control according to the logic described in "/translations/english.json5" (relative to the repo root)

+ /// and recursively translate any child controls. + ///
+ /// The translations for all the controls in the form + private static void TranslateControl(Control ctrl, Dictionary controlTranslations) + { + if (!(ctrl is Form) && controlTranslations.TryGetValue(ctrl.Name, out JNode ctrlNode)) + { + if (ctrlNode.value is string s) + ctrl.Text = s; + else if (ctrlNode is JObject ctrlObj && ctrlObj.children is Dictionary ctrlDict) + { + if (ctrl is CheckBox checkBox + && ctrlDict.TryGetValue("checked", out JNode checkedNode) && checkedNode.value is string checkedVal + && ctrlDict.TryGetValue("unchecked", out JNode uncheckedNode) && uncheckedNode.value is string uncheckedVal) + { + checkBox.Text = checkBox.Checked ? checkedVal : uncheckedVal; + checkBox.CheckedChanged += (object sender, EventArgs e) => + { + checkBox.Text = checkBox.Checked ? checkedVal : uncheckedVal; + }; + } + else if (ctrl is LinkLabel llbl + && ctrlDict.TryGetValue("text", out JNode textNode) && textNode.value is string textVal + && ctrlDict.TryGetValue("linkStart", out JNode linkStartNode) && linkStartNode.value is long linkStartVal + && ctrlDict.TryGetValue("linkLength", out JNode linkLengthNode) && linkLengthNode.value is long linkLengthVal) + { + llbl.Text = textVal; + llbl.LinkArea = new LinkArea(Convert.ToInt32(linkStartVal), Convert.ToInt32(linkLengthVal)); + } + } + else if (ctrlNode is JArray ctrlArr && ctrlArr.children is List ctrlList && ctrl is ComboBox comboBox) + { + int maxTranslationLen = 0; + for (int ii = 0; ii < comboBox.Items.Count && ii < ctrlList.Count; ii++) + { + JNode translationII = ctrlList[ii]; + if (translationII.value is string translationVal) + { + comboBox.Items[ii] = translationVal; + if (translationVal.Length > maxTranslationLen) + maxTranslationLen = translationVal.Length; + } + } + int newDropDownWidth = WidthInCharacters(maxTranslationLen, ctrl.Font.Size); + if (newDropDownWidth > comboBox.DropDownWidth) + comboBox.DropDownWidth = newDropDownWidth; + } + } + int ctrlCount = ctrl.Controls.Count; + if (ctrlCount > 0) + { + // translate each child of this control + var childrenByLeft = new List<(Control ctrl, bool textWasMultiline, bool isAnchoredRight)>(ctrlCount); + foreach (Control child in ctrl.Controls) + { + int childWidthInChars = WidthInCharacters(child.Text.Length, child.Font.Size); + bool textWasMultiline = !child.AutoSize && ((child is Label || child is LinkLabel) && childWidthInChars > child.Width); + TranslateControl(child, controlTranslations); + childrenByLeft.Add((child, textWasMultiline, (child.Anchor & AnchorStyles.Right) == AnchorStyles.Right)); + } + // the child controls may have more text now, + // so we need to resolve any collisions that may have resulted. + childrenByLeft.Sort((x, y) => x.ctrl.Left.CompareTo(y.ctrl.Left)); + for (int ii = 0; ii < ctrlCount; ii++) + { + (Control child, bool textWasMultiline, bool isAnchoredRight) = childrenByLeft[ii]; + int textLen = child.Text.Length; + int widthIfButtonOrLabel = WidthInCharacters(textLen, child.Font.Size + 1); + if (child is Button && textLen > 2 && textLen < 14) + { + int increase = textLen <= 5 ? 25 : (15 - textLen) * 2 + 7; + widthIfButtonOrLabel += increase; + } + if (!textWasMultiline && (child is Button || child is Label || child is CheckBox) && + !child.Text.Contains('\n') && widthIfButtonOrLabel > child.Width) + { + child.Width = widthIfButtonOrLabel; + if (isAnchoredRight) + child.Left -= 5; // to account for weirdness when you resize a right-anchored thing + // if there are overlapping controls to the right, move those far enough right that they don't overlap. + for (int jj = ii + 1; jj < ctrlCount; jj++) + { + Control otherChild = childrenByLeft[jj].ctrl; + if (otherChild.Left > child.Left && Overlap(child, otherChild)) + { + if (otherChild.Left > child.Left) + otherChild.Left = child.Right + 2; + } + } + } + child.Refresh(); + } + int maxRight = 0; + foreach (Control child in ctrl.Controls) + { + maxRight = child.Right > maxRight ? child.Right : maxRight; + // unanchor everything from the right, so resizing the form doesn't move those controls + child.Anchor &= (AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left); + } + if (maxRight > ctrl.Width) + { + int padding = ctrl is Form ? 25 : 5; + ctrl.Width = maxRight + padding; + } + foreach ((Control child, _, bool wasAnchoredRight) in childrenByLeft) + { + if (wasAnchoredRight) + child.Anchor |= AnchorStyles.Right; + } + } + } + + private static bool VerticalOverlap(Control ctrl1, Control ctrl2) + { + return !(ctrl1.Bottom < ctrl2.Top || ctrl2.Bottom < ctrl1.Top); + } + + private static bool HorizontalOverlap(Control ctrl1, Control ctrl2) + { + return !(ctrl1.Right < ctrl2.Left || ctrl2.Right < ctrl1.Left); + } + + private static bool Overlap(Control ctrl1, Control ctrl2) + { + return HorizontalOverlap(ctrl1, ctrl2) && VerticalOverlap(ctrl1, ctrl2); + } + } +} diff --git a/README.md b/README.md index 7d1b68f..ff18385 100644 --- a/README.md +++ b/README.md @@ -50,6 +50,42 @@ It has also been tested and verified to work normally on the newest versions of Every version of the template works on [Windows 10 May 2019 update](https://blogs.windows.com/windowsexperience/2019/05/21/how-to-get-the-windows-10-may-2019-update/) or later, or you must install [.NET Framework 4.8](https://dotnet.microsoft.com/en-us/download/dotnet-framework/net48). +## Translating your plugin to another language ## + +If you are interested in helping users of your plugin who don't speak English, this plugin pack makes it easy to translate your plugin to other languages beginning in [v0.0.3.7](/CHANGELOG.md#004---unreleased-yyyy-mm-dd). + +[Translator.cs](https://github.com/molsonkiko/NppCSharpPluginPack/blob/main/NppCSharpPluginPack/Utils/Translator.cs) infers your preferred language and attempts to translate in the following way: +1. It looks up your [`current culture`](https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/get-culture?view=powershell-7.4) (which can be checked using the `get-culture` command in Powershell). +2. Next, we find the `EnglishName` property of the `current culture` (which can be found by the `$foo = get-culture; $foo.EnglishName` command in Powershell), take the first word, and convert it to lowercase. Call this `lowerEnglishCulture`. + - Example: the `EnglishName` of the `en-us` culture is `English (United States)`, so `lowerEnglishCulture` is `english` + - Example: the `EnglishName` of the `it-it` culture is `Italian (Italy)`, so `lowerEnglishCulture` is `italian` +3. It then does one of the following: + - If `lowerEnglishName` is `english`, it does nothing (because the plugin is naturally in English) + - Otherwise, it looks in the `translation` subdirectory of the `CSharpPluginPack` plugin folder (where `CSharpPluginPack.dll` lives) for a file named `{lowerEnglishName}.json5` + - __NOTE:__ because the translation files are in a subdirectory of the plugin folder, *translation does not work for versions of Notepad++ older than [version 8](https://notepad-plus-plus.org/downloads/v8/),* since those older versions do not have separate folders for each plugin. +4. If `Translator` found `translation\{lowerEnglishName}.json5`, it attempts to parse the file. If parsing fails, a message box will appear warning the user of this. + - If no translation file was found, or if parsing failed, the default English will be used. +5. If parsing was successful, `Translator` will use the translation file as described below. + +To be clear, *the plugin may not be in the same language of the Notepad++ UI,* although I may change that in the future. + +To translate your plugin to another language, just look at [`english.json5` in the translations directory of this repo](https://github.com/molsonkiko/NppCSharpPluginPack/blob/main/translation/english.json5) and follow the instructions in that file. + +Currently NppCSharpPluginPack has been translated into the following languages: +- English (obviously) +- [Spanish](https://github.com/molsonkiko/NppCSharpPluginPack/blob/main/translation/spanish.json5) (done with Google Translate, so probably low-quality) + +The following aspects of NppCSharpPluginPack __can__ be translated: +- Forms (including all controls and items in drop-down menus) +- Items in the NppCSharpPluginPack sub-menu of the Notepad++ Plugins menu +- The descriptions of settings in the [`CSharpPluginPack.ini` config file](/docs/README.md#settings-form) +- The descriptions of settings in the [settings form](/docs/README.md#customizing-settings) + +The following aspects of NppCSharpPluginPack __will not__ be translated: +- This documentation +- Message boxes (includes warnings, errors, requests for confirmation) +- Generic modal dialogs (for example, file-opening dialogs, directory selection dialogs) + ## Acknowledgments ## * [Kasper B. Graversen](https://github.com/kbilsted) for creating the [plugin pack](https://github.com/kbilsted/NotepadPlusPlusPluginPack.Net) that this is based on. diff --git a/makerelease.bat b/makerelease.bat index 690b46c..a4ebf8f 100644 --- a/makerelease.bat +++ b/makerelease.bat @@ -1,14 +1,19 @@ : this script requires 7-zip (https://www.7-zip.org/) to be installed on your computer : sync testfiles with ones in repo : ONLY EXECUTE THIS BATCH FILE FROM THE SAME DIRECTORY WHERE IT LIVES IN THE REPO!!!! + +: copy translations and testfiles into 64-bit bin xcopy .\testfiles .\NppCSharpPluginPack\bin\Release-x64\testfiles\ /s /y +xcopy .\translation .\NppCSharpPluginPack\bin\Release-x64\translation\ /s /y +: copy translations and testfiles into 32-bit bin xcopy .\testfiles .\NppCSharpPluginPack\bin\Release\testfiles\ /s /y +xcopy .\translation .\NppCSharpPluginPack\bin\Release\translation\ /s /y : zip testfiles and dlls to release zipfiles : also copy directories to Downloads for easy access later cd NppCSharpPluginPack\bin\Release-x64 xcopy . "%userprofile%\Downloads\NppCSharpPluginPack NEWEST x64\" /s /y -7z -r a ..\..\Release_x64.zip CSharpPluginPack.dll testfiles +7z -r a ..\..\Release_x64.zip *.dll testfiles translation cd ..\Release xcopy . "%userprofile%\Downloads\NppCSharpPluginPack NEWEST x86\" /s /y -7z -r a ..\..\Release_x86.zip CSharpPluginPack.dll testfiles +7z -r a ..\..\Release_x86.zip *.dll testfiles translation cd ..\..\.. \ No newline at end of file diff --git a/most recent errors.txt b/most recent errors.txt index f0f297c..ada1aac 100644 --- a/most recent errors.txt +++ b/most recent errors.txt @@ -1,4 +1,4 @@ -Test results for CSharpPluginPack v0.0.3.4 on Notepad++ 8.6.4 64bit +Test results for CSharpPluginPack v0.0.3.7 on Notepad++ 8.6.4 64bit NOTE: Ctrl-F (regular expressions *on*) for "Failed [1-9]\d*" to find all failed tests No tests failed ========================= @@ -22,7 +22,7 @@ Performance tests for My benchmarks (test1) ========================= To run query "foo" on file of size 7913 into took 0 +/- 0 ms over 32 trials -Query times (ms): 0.001, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +Query times (ms): 0.002, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 Preview of result: Preview of result ========================= Performance tests for My benchmarks (test2) diff --git a/translation/english.json5 b/translation/english.json5 new file mode 100644 index 0000000..4ffb0f2 --- /dev/null +++ b/translation/english.json5 @@ -0,0 +1,119 @@ +// If you want to translate CSharpPluginPack into another language, follow these steps (in the example below, we are translating into the "fooish" language): +// 1. Create a copy of this file at the path "translation/fooish.json5" relative to the CSharpPluginPack plugin directory (the directory where the CSharpPluginPack.dll binary is installed, *not* the plugin config directory). +// 2. Edit the values associated with the various keys in this document. +// DO NOT CHANGE THE KEYS OF ANY OBJECT, OR ADD OR REMOVE KEYS! ONLY CHANGE THE VALUES. +// 3. Close Notepad++ and reopen it, then look at the various CSharpPluginPack forms and menu items to see if the translation is satisfactory. +{ + "forms": { + "AboutForm": { + // this is the name that appears in the title bar for this form + "title": "About NppCSharpPluginPack", + // Each key in this object is the name of the control in the NppCSharpPluginPack codebase. + // If a control name is missing, that control is not translated. + "controls": { + // If the value associated with a control name is a string, + // that controls the text of the control. + "Description": "A demo for how to make a Notepad++ plugin in C#.", + "GitHubLink": { + // This is a LinkLabel, meaning it has a clickable link (your repo URL). + "text": "Add a link to your plugin repo here:\r\nhttps://github.com/yourName/yourRepo", + // If you change the text of this LinkLabel, + // make sure that you change the linkStart property + // so that only the URL is in the highlighted region. + "linkStart": 38, + "linkLength": 36 + }, + "DebugInfoLabel": "Notepad++ version: X.Y.Z. For more info about your\r\ninstallation, go to ? -> Debug Info on the main status bar.", + "ThanksWowLinkLabel": { + "text": "Special thanks to:\r\n* Don Ho for making Notepad++\r\n* kbilsted for making the plugin pack this is based on\r\n* And of course everyone who helped make this plugin\r\n better!\r\n* The amazing community makes this work worthwhile.\r\n Wow!", + // set linkStart so that only the "Wow!" at the end is highlighted + "linkStart": 228, + "linkLength": 4 + } + } + }, + "DarkModeTestForm": { + "title": "DarkModeTestForm", + "controls": { + "checkBox1": { + // Change this value to set the text when the box is *checked* + "checked": "checkBox1 is checked", + // Change this value to set the text when the box is *unchecked* + "unchecked": "checkBox1 is unchecked" + }, + // This is a ComboBox, where the text can be selected from a drop-down list. + // DO NOT CHANGE THE NUMBER OF ELEMENTS IN THIS ARRAY! + "comboBox1": [ + "comboBox1", + "this", + "is", + "a", + "comboBox" + ], + "ShowPopupDialogButton": "Show Pop-up" + } + }, + "PopupDialog": { + // the title for this form is not listed, so it will not be translated + "controls": { + "ComboBox1EnabledCheckBox": "Enable ComboBox1?" + } + }, + "SelectionRememberingForm": { + "title": "Remember and set selections", + "controls": { + "SelectionRememberingFormTitle": "Remember and set selections", + "CopySelectionsToStartEndsButton": "Copy current selections to clipboard as list of comma-separated numbers", + "SelectionStartEndsBoxLabel": "Enter starts and ends\r\n(0 is start of document)\r\nof regions to select\r\nas space-separated list\r\nof comma-separated\r\nnumbers", + "SetSelectionsFromStartEndsButton": "Select all regions in the text box above", + "SaveCurrentSelectionsToFileButton": "Save current selections to file", + "LoadSelectionsFromFileButton": "Load selections from config file", + "OpenDarkModeTestFormButton": "Open dark mode test form" + } + } + }, + // this controls the text of the main menu items + // associated with the CSharpPluginPack item on the Notepad++ plugin menu. + "menuItems": { + // The "&D" in this text means that this menu item can be accessed by the "D" + // accelerator key, meaning that the Alt-P-C-D key sequence can access this menu item. + // When translating menu items, it is good practice to include an accelerator key, + // and it is *even better* if the accelerator key is the same as in the English translation. + // Thus, the Italian translation might be "&Documentazione". + // + // *VERY VERY IMPORTANT*: Every menu item name MUST have 63 characters or fewer when encoded in UTF-16. + // The easiest way to check if any menu items are too long is to open the JsonTools (https://github.com/molsonkiko/JsonToolsNppPlugin) treeview for this file, + // and submit the query on the next line in the text box in the top-left corner: + // @.menuItems[s_len(@) >= 64] + // The query on the line above will select all menu items with 64 or more UTF-16 characters. + // + // You *cannot* check the length by selecting it with Notepad++, because Notepad++ shows UTF-8 byte counts in the status bar. + "&Documentation": "&Documentation", + "A&bout": "A&bout", + "&Settings": "&Settings", + "Selection &Remembering Form": "Selection &Remembering Form", + "Run &tests": "Run &tests", + "Use NanInf class for -inf, inf, nan!!": "Use NanInf class for -inf, inf, nan!!", + "Hello Notepad++": "Hello Notepad++", + "What is Notepad++?": "What is Notepad++?", + "Current &Full Path": "Current &Full Path", + "Current Directory": "Current Directory", + "Close HTML/&XML tag automatically": "Close HTML/&XML tag automatically", + "Get File Names Demo": "Get File Names Demo", + "Get Session File Names Demo": "Get Session File Names Demo", + "Show files opened and closed this session": "Show files opened and closed this session", + "Save Current Session Demo": "Save Current Session Demo", + "Print Scroll and Row Information": "Print Scroll and Row Information", + "Open a pop-up dialog": "Open a pop-up dialog", + "Allocate indicators demo": "Allocate indicators demo" + }, + // The CSharpPluginPack.ini config file (in your plugin config folder) + // will have these translated descriptions as comments above each setting. + // The settings form will also show these translated descriptions when the named setting is selected. + "settingsDescriptions": { + "toolbar_icons": "Specify one of these chars for each toolbar icon you want to show, in the order you want:\r\n('a' = about form, 's' = selection remembering form, 'h' = automatically close HTML tags)\r\nThis setting will take effect the next time you start Notepad++.\r\nIf you want there to be NO toolbar icons, enter a character that does not represent an icon; do NOT leave this field empty.", + "close_html_tag": "Automatically close HTML/XML tags when the current file extension is \"html\" or \"xml\"?", + "use_npp_styling": "Use the same colors as the editor window for this plugin's forms?", + "ask_before_testing": "Ask before running tests, because the test can hijack the user's clipboard" + } +} \ No newline at end of file diff --git a/translation/spanish.json5 b/translation/spanish.json5 new file mode 100644 index 0000000..c82099c --- /dev/null +++ b/translation/spanish.json5 @@ -0,0 +1,116 @@ +// If you want to translate CSharpPluginPack into another language, follow these steps (in the example below, we are translating into the "fooish" language): +// 1. Create a copy of this file at the path "translation/fooish.json5" relative to the CSharpPluginPack plugin directory (the directory where the CSharpPluginPack.dll binary is installed, *not* the plugin config directory). +// 2. Edit the values associated with the various keys in this document. +// DO NOT CHANGE THE KEYS OF ANY OBJECT, OR ADD OR REMOVE KEYS! ONLY CHANGE THE VALUES. +// 3. Close Notepad++ and reopen it, then look at the various CSharpPluginPack forms and menu items to see if the translation is satisfactory. +{ + "forms": { + "AboutForm": { + // this is the name that appears in the title bar for this form + "title": "Sobre NppCSharpPluginPack", + // Each key in this object is the name of the control in the NppCSharpPluginPack codebase. + // If a control name is missing, that control is not translated. + "controls": { + // If the value associated with a control name is a string, + // that controls the text of the control. + "Description": "Una demo sobre cómo crear un Notepad++ plugin en C#.", + "GitHubLink": { + // This is a LinkLabel, meaning it has a clickable link (your repo URL). + "text": "Añade un enlace a tu plugin repo aquí:\r\nhttps://github.com/yourName/yourRepo", + // If you change the text of this LinkLabel, + // make sure that you change the linkStart property + // so that only the URL is in the highlighted region. + "linkStart": 40, + "linkLength": 36 + }, + "DebugInfoLabel": "Notepad++ versión: X.Y.Z. Para obtener más información sobre su\r\ninstalación, vaya a ? -> Debug Info en la barra de estado principal.", + "ThanksWowLinkLabel": { + "text": "Un agradecimiento especial a:\r\n* Don Ho por crear Notepad++\r\n* kbilsted por crear el paquete de plugin en el que se basa\r\n* ¡Y por supuesto a todos aquellos que han ayudado a mejorar este plugin!\r\n* La increíble comunidad hace que este trabajo valga la pena.\r\n ¡Guau!", + // set linkStart so that only the "¡Guau!" at the end is highlighted + "linkStart": 262, + "linkLength": 6 + } + } + }, + "DarkModeTestForm": { + // the title for this form is not listed, so it will not be translated + "controls": { + "checkBox1": { + // Change this value to set the text when the box is *checked* + "checked": "checkBox1 está marcada", + // Change this value to set the text when the box is *unchecked* + "unchecked": "checkBox1 no está marcada" + }, + // This is a ComboBox, where the text can be selected from a drop-down list. + // DO NOT CHANGE THE NUMBER OF ELEMENTS IN THIS ARRAY! + "comboBox1": [ + "comboBox1", + "esta", + "es", + "una", + "comboBox" + ], + "ShowPopupDialogButton": "Muestra ventana emergente" + } + }, + "PopupDialog": { + "title": "Ventana emergente", + "controls": { + "ComboBox1EnabledCheckBox": "¿Activar ComboBox1?" + } + }, + "SelectionRememberingForm": { + "title": "Recordar y establecer selecciones", + "controls": { + "SelectionRememberingFormTitle": "Recordar y establecer selecciones", + "CopySelectionsToStartEndsButton": "Copie las selecciones actuales al portapapeles como una lista de números separados por comas", + "SelectionStartEndsBoxLabel": "Ingrese inicios y finales\r\n(0 es el inicio del documento)\r\nde regiones para seleccionar\r\nuna lista separada por espacios\r\nde números separados por comas", + "SetSelectionsFromStartEndsButton": "Seleccione todas las regiones en el cuadro de texto de arriba", + "SaveCurrentSelectionsToFileButton": "Guardar selecciones actuales en un archivo", + "LoadSelectionsFromFileButton": "Cargar selecciones desde un archivo de configuración", + "OpenDarkModeTestFormButton": "Abrir DarkModeTestForm" + } + } + }, + // this controls the text of the main menu items + // associated with the CSharpPluginPack item on the Notepad++ plugin menu. + "menuItems": { + // The "&D" in this text means that this menu item can be accessed by the "D" + // accelerator key, meaning that the Alt-P-C-D key sequence can access this menu item. + // When translating menu items, it is good practice to include an accelerator key, + // and it is *even better* if the accelerator key is the same as in the English translation. + // Thus, the Italian translation might be "&Documentazione". + // + // *VERY VERY IMPORTANT*: Every menu item name MUST have 63 characters or fewer when encoded in UTF-16. + // The easiest way to check if a JSON string is too long is probably to check its length in Python (with len()), because Python encodes its strings in UTF-16. + // + // You *cannot* check the length by selecting it with Notepad++, because Notepad++ shows UTF-8 byte counts in the status bar. + "&Documentation": "&Documentación", + "A&bout": "So&bre", + "&Settings": "&Configuración", + "Selection &Remembering Form": "Formulario para &recordar las selecciónes", + "Run &tests": "Ejecutar &pruebas", + "Use NanInf class for -inf, inf, nan!!": "Utilice NanInf clase para -inf, inf, nan!!", + "Hello Notepad++": "Hola Notepad++", + "What is Notepad++?": "¿&Qué es Notepad++?", + "Current &Full Path": "Ruta completa actual del archivo", + "Current Directory": "Directorio actual", + "Close HTML/&XML tag automatically": "Cerrar etiqueta de HTML/&XML automáticamente", + "Get File Names Demo": "Demo de Obtener Nombres de Archivos", + "Get Session File Names Demo": "Demo de Obtener Nombres de Archivos de Sesión", + "Show files opened and closed this session": "Muestra archivos abiertos y cerrados en esta sesión", + "Save Current Session Demo": "Demo de guardar la sesión actual", + "Print Scroll and Row Information": "Imprima la información de desplazamiento y fila", + "Open a pop-up dialog": "Muestra una ventana emergente", + "Allocate indicators demo": "Demo de asignar indicadores" + }, + // The CSharpPluginPack.ini config file (in your plugin config folder) + // will have these translated descriptions as comments above each setting. + // The settings form will also show these translated descriptions when the named setting is selected. + "settingsDescriptions": { + "toolbar_icons": "Especifique uno de estos caracteres para cada icono de la barra de herramientas que desee mostrar, en el orden que desee:\r\n('a' = formulario Sobre, 's' = formulario para recordar las selecciónes, 'h' = Cerrar etiqueta de HTML/XML automáticamente)\r\nEsta configuración entrará en vigor la próxima vez que inicie Notepad++.\r\nSi desea que NO haya íconos en la barra de herramientas, ingrese un carácter que no represente un ícono; NO deje este campo vacío.", + "close_html_tag": "¿Cerrar automáticamente las etiquetas de HTML/XML cuando la extensión del archivo actual es \"html\" o \"xml\"?", + "use_npp_styling": "¿Usar los mismos colores que la ventana del editor para los formularios del plugin?", + "ask_before_testing": "Pregunte antes de ejecutar pruebas, porque la prueba puede secuestrar el portapapeles del usuario" + } +} \ No newline at end of file