From 7e342e276d93ce8bfed5fb40b9bf93053d802761 Mon Sep 17 00:00:00 2001 From: "M. Sonntag" Date: Wed, 17 Oct 2018 15:42:37 +0200 Subject: [PATCH 01/12] [validation] Add section unique id validation --- odml/validation.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/odml/validation.py b/odml/validation.py index 45a29b6b..a9d602fa 100644 --- a/odml/validation.py +++ b/odml/validation.py @@ -74,6 +74,7 @@ def __init__(self, doc): def validate(self, obj): handlers = self._handlers.get(obj.format().name, []) for handler in handlers: + print("obj: %s, Handler: %s" % (obj, handler)) for err in handler(obj): self.error(err) @@ -128,6 +129,28 @@ def section_repository_should_be_present(sec): Validation.register_handler('section', section_repository_should_be_present) +def section_unique_ids(parent, id_map=None): + if not id_map: + id_map = {} + + for sec in parent.sections: + for prop in sec: + if prop.id in id_map: + yield ValidationError(prop, "Duplicate id in Property '%s' and '%s'" % + (prop.get_path(), id_map[prop.id])) + return + id_map[prop.id] = "Property '%s'" % prop.get_path() + + if sec.id in id_map: + yield ValidationError(sec, "Duplicate id in Section '%s' and '%s'" % + (sec.get_path(), id_map[sec.id])) + return + id_map[sec.id] = "Section '%s'" % sec.get_path() + + for e in section_unique_ids(sec, id_map): + yield e + + def object_unique_names(obj, children, attr=lambda x: x.name, msg="Object names must be unique"): """ From 8550c0f51ca6c322a7cbb00a9a6f5c4acbc0316c Mon Sep 17 00:00:00 2001 From: "M. Sonntag" Date: Wed, 17 Oct 2018 15:44:08 +0200 Subject: [PATCH 02/12] [validation] Add document unique id validation --- odml/validation.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/odml/validation.py b/odml/validation.py index a9d602fa..46c50ee7 100644 --- a/odml/validation.py +++ b/odml/validation.py @@ -129,6 +129,12 @@ def section_repository_should_be_present(sec): Validation.register_handler('section', section_repository_should_be_present) +def document_unique_ids(doc): + id_map = {doc.id: "Document '%s'" % doc.get_path()} + for e in section_unique_ids(doc, id_map): + yield e + + def section_unique_ids(parent, id_map=None): if not id_map: id_map = {} @@ -151,6 +157,9 @@ def section_unique_ids(parent, id_map=None): yield e +Validation.register_handler('odML', document_unique_ids) + + def object_unique_names(obj, children, attr=lambda x: x.name, msg="Object names must be unique"): """ From 7a996a519e3aaa713c66ffb4696b936d91b65f87 Mon Sep 17 00:00:00 2001 From: "M. Sonntag" Date: Wed, 17 Oct 2018 15:55:20 +0200 Subject: [PATCH 03/12] [validation] Add property unique id validation Closes #261 --- odml/validation.py | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/odml/validation.py b/odml/validation.py index 46c50ee7..05084754 100644 --- a/odml/validation.py +++ b/odml/validation.py @@ -74,7 +74,6 @@ def __init__(self, doc): def validate(self, obj): handlers = self._handlers.get(obj.format().name, []) for handler in handlers: - print("obj: %s, Handler: %s" % (obj, handler)) for err in handler(obj): self.error(err) @@ -140,12 +139,8 @@ def section_unique_ids(parent, id_map=None): id_map = {} for sec in parent.sections: - for prop in sec: - if prop.id in id_map: - yield ValidationError(prop, "Duplicate id in Property '%s' and '%s'" % - (prop.get_path(), id_map[prop.id])) - return - id_map[prop.id] = "Property '%s'" % prop.get_path() + for e in property_unique_ids(sec, id_map): + yield e if sec.id in id_map: yield ValidationError(sec, "Duplicate id in Section '%s' and '%s'" % @@ -157,6 +152,18 @@ def section_unique_ids(parent, id_map=None): yield e +def property_unique_ids(parent, id_map=None): + if not id_map: + id_map = {} + + for prop in parent.properties: + if prop.id in id_map: + yield ValidationError(prop, "Duplicate id in Property '%s' and '%s'" % + (prop.get_path(), id_map[prop.id])) + return + id_map[prop.id] = "Property '%s'" % prop.get_path() + + Validation.register_handler('odML', document_unique_ids) From 488c8dfb5813761d7acfcafec0e9082ceb234059 Mon Sep 17 00:00:00 2001 From: "M. Sonntag" Date: Thu, 18 Oct 2018 11:20:09 +0200 Subject: [PATCH 04/12] [validation] Obvious pep8 fixes --- odml/validation.py | 66 ++++++++++++++++++++++++++-------------------- 1 file changed, 38 insertions(+), 28 deletions(-) diff --git a/odml/validation.py b/odml/validation.py index 05084754..69dfe638 100644 --- a/odml/validation.py +++ b/odml/validation.py @@ -65,7 +65,7 @@ def __init__(self, doc): self.doc = doc # may also be a section self.errors = [] self.validate(doc) - # TODO isn't there a 'walk' method for these things? + for sec in doc.itersections(recursive=True): self.validate(sec) for prop in sec.properties: @@ -100,38 +100,43 @@ def section_type_must_be_defined(sec): if sec.type is None or sec.type == '' or sec.type == 'undefined': yield ValidationError(sec, 'Section type undefined', 'warning') + Validation.register_handler('section', section_type_must_be_defined) -def section_repository_should_be_present(sec): +def section_repository_present(sec): """ 1. warn, if a section has no repository or 2. the section type is not present in the repository """ repo = sec.get_repository() if repo is None: - yield ValidationError(sec, 'A section should have an associated ' - 'repository', 'warning') + yield ValidationError(sec, + 'A section should have an associated repository', + 'warning') return try: tsec = sec.get_terminology_equivalent() - except Exception as e: - yield ValidationError(sec, 'Could not load terminology: %s' % e, - 'warning') + except Exception as exc: + yield ValidationError(sec, + 'Could not load terminology: %s' % exc, + 'warning') return if tsec is None: - yield ValidationError(sec, "Section type '%s' not found in terminology" % sec.type, - 'warning') + yield ValidationError(sec, + "Section type '%s' not found in terminology" % sec.type, + 'warning') -Validation.register_handler('section', section_repository_should_be_present) + +Validation.register_handler('section', section_repository_present) def document_unique_ids(doc): id_map = {doc.id: "Document '%s'" % doc.get_path()} - for e in section_unique_ids(doc, id_map): - yield e + for i in section_unique_ids(doc, id_map): + yield i def section_unique_ids(parent, id_map=None): @@ -139,8 +144,8 @@ def section_unique_ids(parent, id_map=None): id_map = {} for sec in parent.sections: - for e in property_unique_ids(sec, id_map): - yield e + for i in property_unique_ids(sec, id_map): + yield i if sec.id in id_map: yield ValidationError(sec, "Duplicate id in Section '%s' and '%s'" % @@ -148,8 +153,8 @@ def section_unique_ids(parent, id_map=None): return id_map[sec.id] = "Section '%s'" % sec.get_path() - for e in section_unique_ids(sec, id_map): - yield e + for i in section_unique_ids(sec, id_map): + yield i def property_unique_ids(parent, id_map=None): @@ -182,13 +187,13 @@ def object_unique_names(obj, children, attr=lambda x: x.name, if len(names) == len(children(obj)): return # quick exit names = set() - for s in children(obj): - if attr(s) in names: - yield ValidationError(s, msg, 'error') - names.add(attr(s)) + for i in children(obj): + if attr(i) in names: + yield ValidationError(i, msg, 'error') + names.add(attr(i)) -def section_unique_name_type_combination(obj): +def section_unique_name_type(obj): for i in object_unique_names( obj, attr=lambda x: (x.name, x.type), @@ -201,8 +206,9 @@ def property_unique_names(obj): for i in object_unique_names(obj, lambda x: x.properties): yield i -Validation.register_handler('odML', section_unique_name_type_combination) -Validation.register_handler('section', section_unique_name_type_combination) + +Validation.register_handler('odML', section_unique_name_type) +Validation.register_handler('section', section_unique_name_type) Validation.register_handler('section', property_unique_names) @@ -221,8 +227,10 @@ def property_terminology_check(prop): tprop = tsec.properties[prop.name] except KeyError: tprop = None - yield ValidationError(prop, "Property '%s' not found in terminology" % - prop.name, 'warning') + yield ValidationError(prop, + "Property '%s' not found in terminology" % prop.name, + 'warning') + Validation.register_handler('property', property_terminology_check) @@ -239,12 +247,14 @@ def property_dependency_check(prop): try: dep_obj = prop.parent[dep] except KeyError: - yield ValidationError(prop, "Property refers to a non-existent " - "dependency object", 'warning') + yield ValidationError(prop, + "Property refers to a non-existent dependency object", + 'warning') return - if prop.dependency_value not in dep_obj.value[0]: # FIXME + if prop.dependency_value not in dep_obj.value[0]: yield ValidationError(prop, "Dependency-value is not equal to value of" " the property's dependency", 'warning') + Validation.register_handler('property', property_dependency_check) From b2d39004a31a88b8eff611f1f5350f7c83c4022e Mon Sep 17 00:00:00 2001 From: "M. Sonntag" Date: Thu, 18 Oct 2018 11:22:15 +0200 Subject: [PATCH 05/12] [validation] Remove unused variable --- odml/validation.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/odml/validation.py b/odml/validation.py index 69dfe638..056c3b6a 100644 --- a/odml/validation.py +++ b/odml/validation.py @@ -224,9 +224,8 @@ def property_terminology_check(prop): if tsec is None: return try: - tprop = tsec.properties[prop.name] + tsec.properties[prop.name] except KeyError: - tprop = None yield ValidationError(prop, "Property '%s' not found in terminology" % prop.name, 'warning') From 38adb0acddf0ea5e827775f2ffe5ea1662df6b80 Mon Sep 17 00:00:00 2001 From: "M. Sonntag" Date: Thu, 18 Oct 2018 11:28:55 +0200 Subject: [PATCH 06/12] [validation] Avoid using 'type' as method arg --- odml/validation.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/odml/validation.py b/odml/validation.py index 056c3b6a..4d35f5e9 100644 --- a/odml/validation.py +++ b/odml/validation.py @@ -8,15 +8,15 @@ class ValidationError(object): """ Represents an error found in the validation process - The error is bound to an odML-object (*obj*) or a list of those - and contains a message and a type which may be one of: + The error is bound to an odML-object (*obj*) or a list of + those and contains a message and a rank which may be one of: 'error', 'warning', 'info' """ - def __init__(self, obj, msg, type='error'): + def __init__(self, obj, msg, rank='error'): self.obj = obj self.msg = msg - self.type = type + self.type = rank @property def is_warning(self): @@ -31,9 +31,9 @@ def path(self): return self.obj.get_path() def __repr__(self): - return "" % (self.type, - self.obj, - self.msg) + return "" % (self.type, + self.obj, + self.msg) class Validation(object): From cce15853527653ed96a3c072d85b9bd5e4171457 Mon Sep 17 00:00:00 2001 From: "M. Sonntag" Date: Thu, 18 Oct 2018 12:28:46 +0200 Subject: [PATCH 07/12] [validation] Add new function docstrings --- odml/validation.py | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/odml/validation.py b/odml/validation.py index 4d35f5e9..efce0bb4 100644 --- a/odml/validation.py +++ b/odml/validation.py @@ -134,12 +134,35 @@ def section_repository_present(sec): def document_unique_ids(doc): + """ + Traverse an odML Document and check whether all + assigned ids are unique within the document. + + Yields all duplicate odML object id entries + that are encountered. + + :param doc: odML document + """ id_map = {doc.id: "Document '%s'" % doc.get_path()} for i in section_unique_ids(doc, id_map): yield i def section_unique_ids(parent, id_map=None): + """ + Traverse a parent (odML Document or Section) + and check whether all assigned ids are unique. + + A "id":"odML object / path" dictionary of additional + 'to-be-excluded' ids may be handed in via the + *id_map* attribute. + + Yields all duplicate odML object id entries + that are encountered. + + :param parent: odML Document or Section + :param id_map: "id":"odML object / path" dictionary + """ if not id_map: id_map = {} @@ -157,11 +180,25 @@ def section_unique_ids(parent, id_map=None): yield i -def property_unique_ids(parent, id_map=None): +def property_unique_ids(section, id_map=None): + """ + Check whether all ids assigned to the odML + Properties of an odML Section are unique. + + A "id":"odML object / path" dictionary of additional + 'to-be-excluded' ids may be handed in via the + *id_map* attribute. + + Yields all duplicate odML object id entries + that are encountered. + + :param section: odML Section + :param id_map: "id":"odML object / path" dictionary + """ if not id_map: id_map = {} - for prop in parent.properties: + for prop in section.properties: if prop.id in id_map: yield ValidationError(prop, "Duplicate id in Property '%s' and '%s'" % (prop.get_path(), id_map[prop.id])) From ee12ab9745d44d160984be44f223a8326690fe2e Mon Sep 17 00:00:00 2001 From: "M. Sonntag" Date: Thu, 18 Oct 2018 12:29:58 +0200 Subject: [PATCH 08/12] [validation] Yield all duplicate ids per run --- odml/validation.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/odml/validation.py b/odml/validation.py index efce0bb4..cb0f6fec 100644 --- a/odml/validation.py +++ b/odml/validation.py @@ -173,8 +173,8 @@ def section_unique_ids(parent, id_map=None): if sec.id in id_map: yield ValidationError(sec, "Duplicate id in Section '%s' and '%s'" % (sec.get_path(), id_map[sec.id])) - return - id_map[sec.id] = "Section '%s'" % sec.get_path() + else: + id_map[sec.id] = "Section '%s'" % sec.get_path() for i in section_unique_ids(sec, id_map): yield i @@ -202,8 +202,8 @@ def property_unique_ids(section, id_map=None): if prop.id in id_map: yield ValidationError(prop, "Duplicate id in Property '%s' and '%s'" % (prop.get_path(), id_map[prop.id])) - return - id_map[prop.id] = "Property '%s'" % prop.get_path() + else: + id_map[prop.id] = "Property '%s'" % prop.get_path() Validation.register_handler('odML', document_unique_ids) From 0288992a35380fada414d69821a2926e58fde364 Mon Sep 17 00:00:00 2001 From: "M. Sonntag" Date: Thu, 25 Oct 2018 11:14:52 +0200 Subject: [PATCH 09/12] [validation] Rename ValErr type to rank --- odml/validation.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/odml/validation.py b/odml/validation.py index cb0f6fec..f6483e62 100644 --- a/odml/validation.py +++ b/odml/validation.py @@ -16,22 +16,22 @@ class ValidationError(object): def __init__(self, obj, msg, rank='error'): self.obj = obj self.msg = msg - self.type = rank + self.rank = rank @property def is_warning(self): - return self.type == 'warning' + return self.rank == 'warning' @property def is_error(self): - return self.type == 'error' + return self.rank == 'error' @property def path(self): return self.obj.get_path() def __repr__(self): - return "" % (self.type, + return "" % (self.rank, self.obj, self.msg) From d810ec8f28d0a4d75e230739846de9abb16de3b9 Mon Sep 17 00:00:00 2001 From: "M. Sonntag" Date: Thu, 25 Oct 2018 11:20:21 +0200 Subject: [PATCH 10/12] [validation] Add constant validation rank labels --- odml/validation.py | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/odml/validation.py b/odml/validation.py index f6483e62..3113683f 100644 --- a/odml/validation.py +++ b/odml/validation.py @@ -3,6 +3,9 @@ Generic odML validation framework """ +LABEL_ERROR = 'error' +LABEL_WARNING = 'warning' + class ValidationError(object): """ @@ -10,21 +13,21 @@ class ValidationError(object): The error is bound to an odML-object (*obj*) or a list of those and contains a message and a rank which may be one of: - 'error', 'warning', 'info' + 'error', 'warning'. """ - def __init__(self, obj, msg, rank='error'): + def __init__(self, obj, msg, rank=LABEL_ERROR): self.obj = obj self.msg = msg self.rank = rank @property def is_warning(self): - return self.rank == 'warning' + return self.rank == LABEL_WARNING @property def is_error(self): - return self.rank == 'error' + return self.rank == LABEL_ERROR @property def path(self): @@ -98,7 +101,7 @@ def __getitem__(self, obj): def section_type_must_be_defined(sec): """test that no section has an undefined type""" if sec.type is None or sec.type == '' or sec.type == 'undefined': - yield ValidationError(sec, 'Section type undefined', 'warning') + yield ValidationError(sec, 'Section type undefined', LABEL_WARNING) Validation.register_handler('section', section_type_must_be_defined) @@ -113,7 +116,7 @@ def section_repository_present(sec): if repo is None: yield ValidationError(sec, 'A section should have an associated repository', - 'warning') + LABEL_WARNING) return try: @@ -121,13 +124,13 @@ def section_repository_present(sec): except Exception as exc: yield ValidationError(sec, 'Could not load terminology: %s' % exc, - 'warning') + LABEL_WARNING) return if tsec is None: yield ValidationError(sec, "Section type '%s' not found in terminology" % sec.type, - 'warning') + LABEL_WARNING) Validation.register_handler('section', section_repository_present) @@ -226,7 +229,7 @@ def object_unique_names(obj, children, attr=lambda x: x.name, names = set() for i in children(obj): if attr(i) in names: - yield ValidationError(i, msg, 'error') + yield ValidationError(i, msg, LABEL_ERROR) names.add(attr(i)) @@ -265,7 +268,7 @@ def property_terminology_check(prop): except KeyError: yield ValidationError(prop, "Property '%s' not found in terminology" % prop.name, - 'warning') + LABEL_WARNING) Validation.register_handler('property', property_terminology_check) @@ -285,12 +288,12 @@ def property_dependency_check(prop): except KeyError: yield ValidationError(prop, "Property refers to a non-existent dependency object", - 'warning') + LABEL_WARNING) return if prop.dependency_value not in dep_obj.value[0]: yield ValidationError(prop, "Dependency-value is not equal to value of" - " the property's dependency", 'warning') + " the property's dependency", LABEL_WARNING) Validation.register_handler('property', property_dependency_check) From 85b1f802d84856a81650dabbec5cdcef58019fc1 Mon Sep 17 00:00:00 2001 From: "M. Sonntag" Date: Thu, 25 Oct 2018 14:01:17 +0200 Subject: [PATCH 11/12] [docs] Update data model --- docs/data_model.md | 2 +- docs/images/erModel.png | Bin 14598 -> 72150 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/data_model.md b/docs/data_model.md index 4ce7cca1..d86784ed 100644 --- a/docs/data_model.md +++ b/docs/data_model.md @@ -13,7 +13,7 @@ interoperability, and being customizable. The model defines four entities (Property, Section, Value, RootSection) whose relations and elements are shown in the figure below. -![odml_logo](./images/erModel.png "odml data model") +![odml_logo](images/erModel.png "odml data model") Property and Section are the core entities. A Section contains Properties and can further have subsection thus building a tree-like diff --git a/docs/images/erModel.png b/docs/images/erModel.png index 3f7c6dd8c4061ea26b00268e2c001cdabb89ae57..51e750f80e6d261018164feefd35f7ed7d53571b 100644 GIT binary patch literal 72150 zcmYg%1yohR_V+~)5Tq5Pr5mIhB&55gyE{Z0kr3(b?(R4_SO{IGGTce<$ATLH@tN%TX z3XJE!_(+t)u{>EqL^?V;Su3kU0g0T6h4FF5<@x!qs{;cFl9H0u)zxFu(~ooCUz!p? z^*t80w`VdlGxH4yz`(@pN#S-zC*=8_P8A~|G&wO53$76}7{?Iy5YD*D-EcTtmR1lN zI&uu!odj*J9UYY(tgrh>k>8(~5X1X?eEFFVAKY4M^+;ki86jP5a1f=A5R0XG_q$&* zmNw8O?ddpX2^ohazYd&JB$dFFSfWukQ&CxYSDpX*zx`Xo@95~5t1^-O-PY!%E+W!% zVl)_A;-#8aM_wo7|CTXaBFDnX(J|50)pb9XQl9ua^Zoz&a&3Ekq@_}#9+MmyY5zGx z?n0~iyPcqnm4lQu91@OUK~9d-K!1OKt4^CI7dShOLjAv26!;#{)g}CLqW$yJBV1r$ zpwn#eSBwa)CQC%)|D2hTVb>rLL;daX?s9TwV&blO9O1v6?a(kaGn3Decps9VpZ^LC z4NXf+Q`d^ zM*nw6LqlaIJslUDU0Esk%I)OuAMq9_e~{FK$fXsRr#+t%I{;|`4fO$f?lt~4&bpCF?t2W1OIz7KMRN>n*& zE>iyqW`UbnH4P2LN<(o!Vd6cwvPcaOwope$M~yDHiT?>FpO5YwU>$0`gfnE~&ri5G zIqDcTdU|>n{J8%+;1d=W)~0=fberd6ayEirW@%QIL8Dacp}x`oM*2i~a%`*}tOP9~ zp-!Q~k`k>Z!~V!S7yRh|Yl7Cq#KZ$E8|MOHVk)h2-9OEtqW`@^RKCQT8dj!+;%X)O zI4mZ1_R)j?EgqP)tc0YbsE7zXikQKzyT(TS%>Q;AW^FO2s3=I2el})c%U+s}uH^r3 zEi@F_zClw1I^2C<_jjn% z-=PL>M$u^e_txycl#v}MjorXxD5Xgau{N@@H{w~lue`E_VB6b86@7&7 zxE3R=6D;jNJcCgr!KZ%rd{NZiac#1UCQnWB($WA{|6w7WTg2cN#MIPOSH1n$e$0Tr zkzQhN#GC)ll#W8Hn03GtPta6#wbXqz3+q=F1KLzAjU9QV2Af_eo7!Xkk$SzB0<~O2 z?Eugwn7)(gh;1iG!xvfA02)y?TfJwT?dK~J92_Qp&`f%-EOU(_bxd|n-VTS1x+~X! ztXeoRFR#O}nas{WUwD=rr9GZ#fl_2-BBx%P$1&9NziVO^+V!lB|Hg3N=$W)VO_X?n z(hT;jgwcojHX44EV0@N�%lo zaU|$G^|v_OS}FO7F=y%4_doV)v&cs~r{RUqRBtL1`o_sV;Rf!J*RK=f_UbVt1~{=(Hg;W)zv6}jIw*#{f^7$9xQQj8)@` zZ1+@Af&(){VLtL7zo);5Q=x%s9~YJmoj{)sUrx0c81S3gt;NkNvtNa8)5B|W?kXhh z;4V)m$nc@QpZ()pP%jKz33{hO77T)vjV|#{V24K65RyMYqO|CrPz&W`=5zg3hnoE; zqTqQWFJr&gn7qfkF!aOc3{;ybpOe;(Omu-ae;C%O4s~N^*Iw3uj#{gf^_KnXLAIk; z>7FHpbC{K{K7KrjXdFItLxC!T6yf&~h6A6Mn63ao4R8*Mu zAj#74RMMP@Eo5IfI!vt8TRSFX^*{M$?-yC^=%O8PIxkL|o)yF3<-tE6swgn0j$Jvs z12ytRIzqfVxei=^HOl?`C_XZ=r#(%H{fAcLk?iNcLdik%lMPNn)iu@mIz`mle64Ts z`GYe35Sh-8Yd-8AjMo;x_4vc8B_^HC7M6hN`|EWKbx=$Aw~i6oY`h&GuBl_G;rSOD z#tyM6<(%8alxVl9fsw$agwedm4e22Jksx^#quG^$qfyx@ge5JSO2h3@Q}fn)jq&1ET*;Y3-9NvFryPm|&tYr$ zIQ)-)1hrs8Ys8EkeBw*`71#ez!FoT>#AdT1HC?D|XK#PkA-~mf@%DAoC{MbT6-70x zk>dqrPe%%Sf#w7PiAPB@vg}J-3Z8wjPddAK;9gYINUSjMqt1|$9Q`cHeV(KRMz&$C zCLwx?1*F|@iPfnAw$prpo01LEyzI=PtP~?lquuwH26>sa3AI7 zP-nTIDz9*Ra(-|y&>Fx}jKQ8)$5t5W_j%kQm?+6myAVc&S#yi9$$K>zs6;&+Iro$l zTC0-Vb+uY4X~`cOo4f6%Rr22V`t$q1Pe7%z|$-0$^xZynvk?c~Fb6BO3a!>*&-4yF>^+5R;Yv5*M zW789Y+Z)FJBnGZOYNf{kO5M?(U4T z=iK1WIyz}{b8~f9dn+y6WD?QoT20@CzkGoj>#BkG6o~K@Ava#6;G+s*W*4$=uA~7= zVv_;1;OpMi-VQ+uvDpy$f{2KinUyuYC@(Lsrl!_h6BZcwCfub59zzI!Ux~7-bW&jc zYToMz%?NMEj@B?4Q6BLnMKx)KjoM;J{)PkQDMqpYvSj3n_ZvKO4ls10P7nLrzuJiE95>sUCv)+VPz0t-wv`ri?w! zbVs%+R`tc9y#dD>F2?l|T*DA8IIxwmv9U3k!_FrFg;3wjEbzw6S|sH8Q6*4?;+yEYw{2C?pZM)wDs zzTb1ocC3GSb@|>E4^vc<9qzOR&6nZdBIO81tGPr@tpFf3i zt)!);ozRPNa{OkB$f}>4KKoVJ&EPD2tHHlDIB*)^{91lIJz$7a`QT+Cz=~zDuUt8N z@X7aCt@c_)I{>8ooQG#sotuBrl;UDyADNgGK;f5K$u`+L-JN*5SgJU+@Jr!~^f?zP z*t^#dF;uPnWXWU1sMN|o#=>?}$)$hR4v0EXnB3x&VUEGlCeO~4qjVvSjUJ8-`iZT2 z?58+CzhC4MLW)jlPIn~!vRKiD?P=hTQE?*L)3~kmEz_fBGa!Xbs0mU73!NatN0-G) zksE}KW;G*2L;MuP1@)=Vy=+GhB&n)nI#x z>DtIORjh!_tEEi0H93a0yKjntN$|ze{Z-EI#q$&Km!ixh@O<-@=AAR8;Pp3YsIjRj z-HEVA&c9ookD`A*?CwQ`$4iZEK^4y7)g3lg4v#ZkAfqPy&JR&Nvy5U}=AExipxVEet>FA# zzyGjmXDzwmdq}Aj&d%KSSqKEjkw6fXYht8hCQ~+eOD7aHMXHAVjriHwxr`?3@DS@I zWW$qsY)#(Ah@1mwP~-O$e>s>dKXHcSKG(n&2>X0ME; zOecFW$kEY}b+XXdj#8*) z@Aqyt4335O+tM44`W1Q7s#PRxEMkJuFkLozD-f2puF&ygK4>;7K6+^XHY#7cz|z_) z$=7{fZ%m7=X@~oR z$LsVXNn4|$u4+x*)-?CDbh$C;x&QE;b2$ku4?+?`h`5x*cK9_X0gp>hjX~1b_{@6x z?AOF=yjy~@`j7cbi1l9ra#_V>WwX@8vDWnsPPr<>v=(Qo?&}$PddLZRuQFN|6CNhz zp4jbR@tfQtQ3(UuR#}(!*#^2z{=)$rA6LyT`HPCYMEVO3A|*cs?@-cwKgQ8iRzKS5 zvio1{wJW!A(|)b{*-0_t1w^-`2jC^(q^PU$P)PDY>d*b zS!J}5Ge^_qc@RB)XV=&XSJw4)*4@_L{&2Pd^dWOdL~QJD&|~@(erb12TF6=OTYa4# zRNSIF2}#KuOF!y=T-%b@d_Si>wy?36PTTss9rAvCKjoRMhpMwiefQzBxj6#XXzJ!n z2+evf4bdtpf4@&SJKufG;RMun&iB~6#6%T{rgrV(2v)y+PL5F zGV`qj%$1A0n=HP7?8s!7O>ty(Uj-U84knDv8C~pQ8yn@*3y~D-8t9N}p^FfkV(sub z;X_|nM#ScM+bC&okKWkm`u6@5OTGHgCq`KSf_!)%kS6LHnVhX&oS7~8b;gq0C!vAt z`uO#ydR1H>LVielUp?eJ&RRrKGN|7m;MFISfzjRFU4^-k)E~U+jP66E{$UASS#Z}M z7V@A4en5He@6@@iW=JL1LcHnemKhmYMOWLs@2{1taM&z5SBsu*?HR&9x|2sRL zO4pwX4hr{UW}AMIqt{FNYnsZBcVz|v=s4&@&1AUqjmK|sa1tMwTt9BnC>tzo&O_c3 zG6%BZyBTv{`x3&P{e8kGAJyzD&5Fxcsv*Z!c^po_5S_A04dBah>Ln;%as9AJjEu)! zpOhy{;F*9Wipm$2Kld(kL!llQkFNADLI>8B@^GxKjY(&z5Cuqz99~=GZlTE?6=Hg+ z{;lcRit;@Vt=^5SG#G&7Sg^XEeq>=~{Us}9xO@feXt7AzdrF4><{5Y5=L(7E)+{6R zuV26Q_I;H9sd3UQUIF+SoKzbQ2qHty?fDwk>BOr{km^~AcKl;w$@3UAH;RvuFdz7E zAV^5q_hD(b`J1;jo?7asy%QlXCrTKld~MXDh}|YP?Q1QxNjZ66q>{xJFmhvOJIYq7 z$u&4^(W=Sil^7GW!{pKzF+6WlC)TAspmB8$x= zw)d?hJKDny6nY?xA~PZcAwFJTH~tpd!d`(`)nin?!W^mbQYD5en1DZozQlaP;q1c^ zLE+g)Fp3w1cl?kgUYshkVSVBb9bJvCwV-A`pA*i1T=>FHaXw2(p=v@?yNAAk*ycTb+-(@RM4YK{~>KKA~j#{)UQcnf!M`N{h*IY)+T>bec zcIa30t?uL=+;y+gZ3QH^WpMgqlAu5~;%TbQ1(b&C(%sQ?{?{Bl$cESM;O6)vr~5h& z)Q>QZay_WarNY9+>HG&{*jFGX_h$;9t1kGeAQO{QxA&twU zL40|TwjZ!s}FG z`Q|WV@dW{E^Vp2vXyN*JVLIZmiK)^{_3{dod(8N5hnJR!Wi^)ZF4EW5R!N3#es#)O z3kkJ@U@vg!IKkVfsbw+PpG(f;wl7jAs4Lu>UIc_jK4B8(C;hWssL$I;{n~CG+Q(I` z|M<5%J5uT^YE+o z+=vZMO)m^YY2HBbZpdN1gY}15Y7_vxE>2?N1EbZe(NsR;s}9zE2SaC!_?#LfaKKW% ztGL#I+fy(*1X+fxvKq_x0aTck=Srw_%XnkcGwIbov1?=f@!IgDf)dx;(0oqFehrf9 zGz=I?GH%zsX4z$d!L>jH%vyU{7F;3LcT`_zv(+4wycQJZbWzE|`WZo0)v%(t5uymO z-3g12;BLEeq+ZXI+yvFv#|euxw;!BnyQ1LrkG73ufNV>9Z$W;TSg)^D{t0w5+pH)Q z)Ib?|Hjwt#lq4z*qH`}!QuH^E0ik+-iuiPJA?lb)<9jqN#{<#!l7p_^ zR>O%4er#@WM+HPJHCK+g+`}#&f%YLu%#dkZaeFy}4x!e0(k9&dyJata<)! zyq1Umpg!=}^DsYa`dOj5bqJ=7*D5l6BfM6g-B&648gLe)IbDJ2L@R=H?fL;5mjpg- zveIZUU$cS9>0oB->TvP+=!9TBYJy|`-Zzw>o2f*^ME-M}x)EZ<{m@TM&ajX0HWc*F z9?&2QOjE}KPRZ9st($tfKrP2Lv==cxz94Vsjv+xxM0RxT;$lc0!2PVjsRl{rLye}# z{JRQa;tZ=i?droRn#GDZo259jCXM4i`$?lPYYq*bk6b}m4BP+atCpHwqDE4<9RN+? zd=M+YxxjizeN9|d@* zNX4!P{}=8ciP!CFEK3ySEfSKQgM*NwV$}WhF<@3^ioXWqbH|cPC(2dmf9VOuPs$nI z*s)u3{U9Eccr_oIQ9_j!lLXBz`#K_Gm{sSb#sgE8gL7z9oN;aw2aABmdU;x-I zOmLr#Gng4Zq%yyD^XhiX|0-P_#7D-`{&6a%v5pl zO@b0>9oQ5+SXt}P|ESo%3vVQmv5lW`CXK& z6d3F&z8eHTBo%ym)gU#BJS-+Dy94TO;!J(YV+FyMV4Iy8B<7TJvt2}>b@;T%+<+qWKOTeuAD|#!5#tZ zOH_&zfdIxtMG)nE5pup9um=3bBvz>%xIB_YQ)GC2a6%yCOl)SXB!G=pfIxCN+YEHQ z?~kIGo1bsVftx3XzascubO0}_& z(>O-&ypRXQ}MpG*s3-)3AMZ*Xx%%=-ca8v==-c$Nz z-h~>zyR8%^;0uM_AO2vrqtJ#s9vFeX6|5$ET(nE{k*PBIr76$kTA3<+*Tf3_0! z!B8ga;)_W1ULub4Zsbic5>jRGS3s7~Y(I5G-_j&}azIlaXc#LGrQuy<@5~S*T3|2h zUCGKTP^n-k!JS>}>py=%@L-FeI?$vY{2rF(UkNyUb0vC75r4cvCM0m3=Q4tXE^W5k?u-b;jtWPl9^|R@HG$aiVbgeq@^M~E3=-4LH6<4 zNxhj&r~O*6j+z9*plrWY_U8B&N@bYp;a)g8na;U<&{|;01hUfpmXnU8gv{DiOF*^N ze#Xjdt(n$c@SSwa;hM_p1Su!I#ieQ>1#?1}5|p%B!&6#QG$!gCB*6mj8SITaybon| z8|MnOzU5Zz@3!d1|81Bw_X;RM1#!?bW8w1cbKb#kId>TD<=a$P-y$hZj=!s_%W`~^ zhiC9&J7BU{ZRI^&G-;*$3&w5L>lx`Ya8BH8gz-am$1;R+zX5+qznx}*uwX!Aw_3$$ z+F3VU{qqHx-gw~mTHF3Dfbs=p_}uK9tX3JDJ=_B&#Wwq^c0g?}SK~D=<@C5~ahT}x z$-Toewe6STU}{z{!4$sS@FzLIq>=ad@7E%F5{87tyw1==+b2a)3L;qIY6zig3M;?v zGxHBg>-Ijfx^)=%;FMH-;TSDJwxDifp6^&)BQ7B$Z*y?4=Xv75yXg^n5&Tx2weW=l zigu(P02puYwv+Tpy@nO2g{u|MajDiH8w{_fgko4Cq(0jAvyQB)*2D=DeQJXwo35U5q|w{e zgE~&nZFCHg3nSCCP{14hv^ZZGdOqxx+Nr3h{JXT3#8OWDHOf)qc$p6ZCe@pXv z&1yn{nZxNzvD9UYnbu$g;Pk1?t%Ps&F3n zEz9+s&(zF(U2`b)ebP6@!upm*%fG8&(@J=nHD_XCqC8UbT@H|4KT=04U~yOs%;MQ& zK4T{j-W?p|n3mRUQWka=d2jGK1uiVlZh7Bw(G5@10SE=HjW#B& z=|wp|Y5~iA*o7N?vW6a|!0B;$AZ1zYHJhBU;?VUI zu?23_TeM04Y6ZP^H=7apHm4EW4@^00KaD7v&bVOKXvm(z9+9Yx%MvY{^|P!2Ro>BE zRQF+_i3F(lE_eyR9~U9k-qQmcDD2};Nr>*N85JJie!eq0K0f}Zi}b*QqvKlqA?6Xb z-%#O&2LhVC?-ybDp%u2pqyvx!VTkyHJg^5JH}5~-;s$N1$YJy!vJZjX3Ges20Z_;D zypTCNM5CYTsyjL+xXL=wfOfJDG7^Fxr8y?kz5d`a0w^Wv<0hL7NJ?*0N3U-31(xS3 zt>?LW#bqQ6>rF)Wn_~a&$UmCyYsaP@?qi@4zUEVbo$0)DI=|smGKD0y~PPmMHC*bkC(tezrWCr$! zTe!5HRh{X?OX7)^_bJyHQ%z0XL*cDYc-l}BSK2xDFP1W) z!OfLJx1}~WejvE{maV92#fC=^QLyo?r5wJnN&21ET}!;T;yaQu;yLbn>&403Xx`!F zwz0*F0>dgE4SO}0DOJ2Yt~e4UGpWrd+*dQ-9vf>jrK1`lmcSJPl2Q5jG+xuQR-{@V z&@-tBkdhSVN+}`z{o;6YHGU^pqXkFX5e0`egIMAHhS5c8tb-ivrP|q^Q7XH8xRCUm zoZ)uDo(h*kg-v_Tyk-> zP5f@Ed#v}oeHGfBVm6-3T&c>=yWEE5eI3!VyT3P?X@zCITrYU&D$Tc1L<+B?Z7zXe zS78@jq897phk#Cq)tlqc8jO9zk1&s!>3AEK7RSSWdGI%|^#_5dM_XyO25Kvtju!cr z*ELigy=G2$&1=9wCxr64TqXb1HW3$>&T5vl<5?<92Xc+`EiBmS0j&mzeQY4Y0d@!! zWdVT|XjVxx$_#n9Ko$X-37~W$4sS0Vou-_Mk-s3w7pcECuihPOHo{G~97KVDa2XIN ztIEzXk;`y=vp24YbSk=UgR0$f+KIJr)!&e@K-8c)Z=YQpGDSJmXJ0_NV zuZH)Fu&RHBNd8T~{@Ov3RiK!~w59cX=ZIabZ@kp%pq$Duph#mGZ&B*WjFN_(@H3z$ zO6e@JN{S? ztg(V^UvCKd%HqsuBAeRTQ;XVE_b>B%!8%|?(7*5S@xomIw#N4RsNRFkiioT%R$ZgD zQhuSj@#EF-qUJ?|*yX}>!>&W%FD$gF!UK^IE}Pu6w{PJ$Z-^KoqayQ_O3McPzf8 z9!;6|Xp()1f}W?{1Lz}_idnkiuUYyRfKPCpTaz{{d%t9tLALSS;}5AkZX*CK$u-!a0O$iz7H{`W z2;!r>Dz(CO*lXlZmuMZFKJF-KdVy_|Mt$F7OIO8RMPNl`v_G=ag?L@LWhhZ6)R^Mq z!v>RakOl(@Lq10wWqloE)ur`qL-GqqN{kh;75i|=H=Mybp~?fbhJ9A}f+3=AFwiC#OJBAbse*kBP)vxJCgU z3CpFu;S-v3 zkQM5&*X{M3VOaefroua4u1^A)buVMK*>`{W7KGS*wK)cK(S8F zdq@7W0FDTpdLc;Uh5tE7C{s$&|;wScp`6??0Dk>_{F0yi~Mez5P%A{P6E&09xn!(ZTQ>Ybh*S16UYiHy=@!T7zx?Xm_j6FIbif5JNWkL zDWH`$`Dzkw^{bhMLH9;pVfL1uExckcvOGh%u8l=!phFxsK$UIJEWe_5%E~RTz5~%W zzQPu%PR6oxMnrjauKZjs)@G?Y{tqwT?gImHmKvusF-VFWSXCzA-e7b%f2Ecp!```S zHef^AgZ(T_mGZcPa>HJy8w|p}+{FsMMtTO(eYyj}@$q_tBITxi>T7;M`Zxzbr^5P+ zM3=~s_3}B}+{;&egLXPIv$PcS8z?c8xzdGMUPCJtEAURvm3i^Mda(IqwPJr+fm6f7;VI^>hJIEip`lu~ud5QR?!Phhn6nT9X^y zw=aj~)TaFnQ9EPoV+P}QZSvGH?`mnfZYOtuabYWT6(5L>6Istq$BJma4@XrLbzwe2 zfu7idz=he>9K2DuiVqp!!WvZ4!Fi8S)F?6kZ#c;|iQH+r->T})S}ElBe^B>j)8O{9 zs4Z=zixHD|64dp0c)wb$UY@Itz5)|Fw9=Ow;A9|tz+1;apEiP_!)?SMz#d-1*lDn5 z_Lgo!Hfds-b9#0I@S)Ol_}gVGAR3+U2s=84gtapD4D-Vb#yj?RUfw(?GueY=0`y&M zb}ORvL}D^NqCkq#RFkjWbnLJ5VhxX5&OSzvG!Xm}KHFpGp?oJ%$l--Mso{dZA_>$| zAQ1YteIFT&r$ku9bg{6f88jw-o|P183*jO8IWFXSa!}kxrK|6+c&fnhp5e>E|=m2Y%6 zdjhz78Okrto5^X za_&Az#~Kw%#Q<9bSK~tPepw^h#omVQ#N=dy^L=WgO>ZiGzCw$AZG{9WI@n}-Dqjya zI9{Q%m*pFanJwg+9ko*WoFLr+!U2kb(4Ah3f{Q$~JwP@dBvr_uaaeEHoY?ZwWn?td zd=gD?;ZFge-T^7ZLPxeoLR zoXAnHMCNNp>HMmFOpiWz3%22X3Bv52U~--*n7tDzWqStfI|R{Ky5~;;4BeuWhY8`% z#8y1}BNpg3FtZS|vH2gU(kqn757u2pnVF*g_4*0jR5#IbEO+^ooh|&%o)Z&O#n3R@ zYXL*>l6hM*muF}6yW&*F2ME?k>dmIz>otq3#U&lHxlAI6NYB@2>;0#L^E0Ryp0snZEITPfun#H8Js zs!+Vqx$ezLM*M>JyZPJ&LD2JhK57v#IE;WMqhE#BJ(@tW)Zijn{06{Rc`eI}&AQq& zy|JL@zPRk}<}9Qsp3}3w(NJ&TA!a^w1Gq`%ZeSKzi}JKXzs>t=B}8tc*d5Mjsn{$J z#&%EYgw#awlZRyj_X0#Jv5IBUGe?pO9XIZCZ!FT3ss~otBV0&W@PvHJ(P>g^{OwE++d&6NY zMbP=|+5dEX=n;%}&)s=fyVIZbQ9&Wn<((tLVo|eCxDF_OjgzK~^Q8QkAeLX7VsMMs<*x4@e6v_Q<(mqEIA0{VUy}Iai(`_ z$oFRxvOU8`)UY1TIMg5euSP78yYVQMbKmt|5rTW8&C-#Eql8~=Dl@P3UF~_BJ&V!? zq&+PC4GfN5Cl!xk%L4u4l}4-rCBe^sNszzaqT)lX}#Z&OV)fnT; zWhFZfEQ76W-o7pShhx5%A{N+fKwg6Y_90VWo9S?L`hlmJ9aNiH0(k%{twsmP3eMTJ zCk+NvwTV-*2LtN?*C8w*$%P|2UVp7H1BY($tQLefiG)5LrdW9I(Uej2*QBS9vF`ZujtjA4;(F#k5bc*b1S-@Q~gK+ZVVg zifZwQH}?!k6{tu&?~ven*{h6M%vV%+->Y5o34LOsPv=vapAHf9Q&#oVw3yKwY-RpV zI3EO*Ml0@1{iCTg{-bU*U-zDxSeg>9TEpWjk9tgpFZ6LFQT;a_E62MJ2M9KfhAcIj z=1}Pc1^siYp09K-vd7=2JcpVCw1-t2gopdeWb5iZ zgvDkyc)o2!fI4O(yC%M081*kAc^%+?buXL6ZLB8SG;jfmUhnHijK}=6y%}nh+?s!P z!R(t%lMk%gc9*+7v<_P{rP}iNixxOc*dWJ>N-9Qyiwt?P zzQ*>Jd?VU}bWpNVs$AmJIF+Gf2S-n!HaOEF>hi!6jm?jeVA#$(uzp~(8D@qX{Z z0$24>{Nu3Sb89~hckB$?#V$K-?*^;ItSbMvlCKn#i~x%4_db^()&fW*O*B1vzgZz< zM}0Juj>Zo}^#q=8lrdV}qfz0{EN0U%dFV3xMHSCRMh4ww4&;hc{d|*8dtTCc%DpN} zjh=`e&>ou0MFz)eEQ(1H8=@bh%ur8>lhrSmsE&%M&kMFyLU<{hHyk&zia1@Z|xJ5ss&HNO*j?ko;df$KtA;jn~!p+e}g=)6v0duJhs~sgZWo%-Gn23+S0Z|g5hoAp(*CCn*iWd|w zJ15L+MT?Q5YienY&y2L3g-Z7x>09N>wn)?xE;--FknLI|>DnZ?wK4b%_`k%Y@L+ z)b#a<`JZk!W|d=s`ZAjZU?tvF!xzIYL`SDffHQ{%UQYKLTkQbiW;h4L(=r)> z8@b^HmK-qF@1A~P+po;FM?mjRG%c+$KITN#8ux zX=HE7P;m}6se>);5>N1GBHA2?v?}3lNwbQbo(QL&#H6VLBJ3?2j-!Wd7<5Qk9f>n!@|mZJr?G7IYJ;OJ1DF>EUFRKSN!^z zW1;i&H&T;PBAeAi@E1p%3n!U*rCcd&iCEf%Sv~l9wWbGI0PFs4Zhd4sviV1p~ypCkZJlJ!On!U3M+By>ekd!f#Oxn`fuus4>K2gOBXc;T{O zHvcumz9IRiTkV?jBa^!N!j#37kHob3tG~eL7aKeC;y}8;ewF{ViErA%rQB$lNiY@Y zg_AQ%Me-UR1Z5=m_3q0XD)-kOm>PStjmB@>K#D@yvt%TGC2TGH3tXnq&;f;`hJls zQg_*JP<{=baUwzw^esQ3l+mh}V06>qsx$ZPDayQ?s%EJ@WSiwZoJiR)YqQ}d*-kF59TUV zqRWYem#ta)`VCGL@W2dQe7^(9f_2>5Y@n$&JKHut0G3d|wSXsuhHeKvLBc=IYSV+< zxi;?S1W5;n+!zV-=K_~3064%`{5-yakY;?okOM%`?R0w!GXyfjbWk7yl&;?ZC|{!kXc1%}0+PJcQ8smkoqqXTrv?pLVbs(ylhYLRHZ-!kENr>1r` zxbETcQG@}k>Jf^+G(11qOQ}_h9;3CaR=3VTzz1(QkW6-Suaza++v9k^`~e9G>F%3# zN7dh6V84e(dy~;c)@%FRec6os1(h#ep`iWqmCHe5n+gf9sNK#CeqyzGN8c&Q8B1&d zzij7@FN(5-5-42Dvi_X_?*E#AXAMmL15>3=sFjM!8r`!_?8{6Kz4&OVp7SqW> zY5UrRX1?+I!(!YpDK&X40#efi@N!!g)9wQ8o4FSyPqlZOR=p_&AxBcKF`EQ9DS*8k z4G-NPsDUxK&Uvm|mH6?9U;fVv0E9gWpwY1$^bqM%eWOVEFviVym zojcm#>N*M23p0I;s02)IRL{7$5Uf%jB%SZr;j_OqSwogu?fl9$W^FG|I_9!JRbiIo z6^HOb08dRyd%;z^Wr#u>v&6HvB8zE_Zf}ah$GSh(TJ%rS>UzeB$Lr2_Xh>>?Hf=P* z!I_bYb`tlAgf7HM01=zZ7@@OQW^}rAq{TlyGjm`Di6)-I^vq!U{SxMAiquXj z^xll~2MCDqq4-b4tFzL7?-hmXK46j~`;3&d+w@bUEIx~_G`kLaM?9XEu00k>>y7RH zP+RV4G)lDdVud%>?XWxewhX}FdBQVgq2Kd-+u27f2Fr4 zBP*wSy`Yj%@%lG1@MO@;$(8&@JbI5$sXpfm>#6-ViGvV)a~9e1GD#EPrnl<*3T@j=U z=zvb^AU|u7MUr-bwY*8uaNJ$cSyAa9X4YARd3n7XpPEpjyu`Dk@Hyc|d<gEd>_E z=Ug6J_6vFyHkD*fyV#q#?>x;*TSlp!LY)=mm7kTB-+S*wjE+x?ceIarQ=p{D<%86fv4-Muxs8v8l8XAc zjZc)v03|m)jaHGUUi-usLqm+-f3{S*^j3&g#bB=M_Uv1PSb|#^G1N(k!W$%~d6d%9 zP)zNkk)?Wvu(+}nxe^JoTOO{3#Cp!S4dXdpoS8FnGS>H4&$TR9*EzXyxU4){=gk30 zde?9A{~t|P8CFFXtr0;KDS-o0(%s#lbO=Z{NOvAOKa?)%?rx+zq`MoWySw9V?|m+R z^g-vu?3q1ly|tpZ3g$F5zh~r2cfC#|5PhHAN1z$O-PTFT_@Z^}<4y$*O0rG8HvDuXzgAxUdKYx5&tQIbKItMuE%4Mw_(EmTN`{)R>?F{*^C!8@9c z2>igD9{=TyTK3bowtn{3&a~{g#lc^ICP;mXRpWvZqsVS0)SBW(eSJs&q$yuo%c!xS z(d_<^)}KvLb#wVC^lPZ;;%|Z`x#NzhueFn$79EygY0V}Y-+3b^|Cf}6d++bo?2X;I zIj%@`qVA$}g!Qc=yf@lU81;wUXDn z$Azx+=r`>S2xCEy8XCec4(sl2HknK^LL%f8_F^Cw2;a;R`5Iyz>-408++iOM;l{Ct z!FHYxJ}NX2Vn%)S%EvpPwN;=SnVy;Lk>82I8&0pTbFRsX&|U82i>h3F7i!Sdjb;0t zBDQVmp^%#!k8-hcu3nWt4BNTY&~P#5S!wJA?9h&yM!eqYu8*Oy)G5u5UqC!BJ#Q@; z@$>6rmE*4Np3MC6n{1o2;=8r9Z@t@BdvnbK@ixB924@;^Umworc*J>W6%-WBG~{aa zF(FTJf)pd!6>W#e+^)|_LwAbG4>l{k`r3Ip9#_}UDJ5mI zZ-XHMr1=IJ<=Lw#JN}M|Q4%@mV6P6Z3#fX0`~$?G)wIbwYOndV!It*#P>ngR6^nO| zAG`FKi@5oId%nAWBc`S?&r+gGSz_D89hYHZNsr+anJbQ?d&T2NDu`3{^CV7H1apEEW#USG`N zo#xk`$MHxB-m*F?)QSuZ{kl!J_&IF5<@Bte@A^sn4D5uQJNCZ*f@B#NXy7TQm=p0q z^TvOyZ-sKPhMj$C{(}dScvI!SC#Ff;O!XmmR3#RAh17E!L*U_ZHmSy5qqq zdC#pKr%zn68?wUoU#TXi$Mw%om)UliBEUw-M5_=OGAqpOe1}EpMAv`eI59IJLZ+}i z^Y`Hg^x^&9xZn#yoqEWOo=$VlW4*!6bAg3vR!&Y=4}U(_Z*eSXe%BFuB&1L-&qpSW z1s;dpWnG4Bcoy+$+sKju5yfpd`NmKPjJ6x{pVCUy+47X$kxW>{?Kl0swFeUco12^X zR#4lbuJMo?E;m!g$X|rtvSQ!?HXKh`9V9}+al}9T6v$gpY%ylBN_BaOyt%>eX|c9S z_CR8_P?X(q92Dm1+9Ugf2lHMU&nZA_ZEnre)ZA=CX*}%M3UBLS;oZN$DMLzXd6i8f z0R~#{0^`59Tq;8fa`zJnbKX2HQidz=F9f${BUa?%njDO2DJJQ%^tc%eBX0LB;Jh4& z&r~_uydAe$VZAB;qg1|6Vq>E=nEW5lG?(2mB3Rr^QQ>*4vf$vr$)>n}d)6m@&p&-$ zsiu$PJ~efK`+T^q zQF18GvbEGptSKrl&X=p=(8gSN+UIza5gK0F;o4*`i`WaHX`scAhn7fi_Xf|G={9~{ zhG%1|sV~+7Hh*Wt%AfS z{YX5>fVyI))-j5NwWL9MI-`jq#i+&Gw~tah4kx4kS<|06#XTWoanKJuZfSZ|D8sHu zN!cSFt9+u{#i-4 zi%UZ^T6%k0sk^74~6RaZ`coJVg`Mut<{pFjHCv7*{voqqd^(F zfx^E?D-j7H^U~a@b?*J#z#{a;V02%-AW&&+9ILh)4$hvG5r^65hq#s{zPY)1L(g%L z$bhAKRji)((<|_(-ANR5e08$ioEvNdnNXP6^xTn63n@$cMBr9C$}ze)Yg17z|24}B zO^uKjK@(^#aOS-+-`Tx$KsoG)3X@LYGiRy6y=6Wc-Gi$|7ExCAi`i5vIV@3QF`>>K zjM2ZD;a_U?!jra;eoo^5q{yns!pf4!=_r73gD;}08ZXf426Z|4Krux95fTRn*ZPLu zioWscBTR$5|Dz!H^YF7A^#& zO9y6-sh4Tv%|M^Dvemg~u^bc3p@1C1?hq3>F2_S6U}mG_ran_mCOu6?V-pMnm%-Nj z&VU~+xNj~V_ujkJ9m#B9g{d_dkn@1Z0|6(E<G_ zl&p_h(nKmxUPh77^@Ut0CWE0dEQFAKsr^N8l?C zI9h%l?3s(JT3byMwp{uB^Ia$9w}puxYZ(4(8r`uZq9GY{3O&uf4IK$@e6FA=qvdIY z;SeLqh}IepZV1W4qcu2&+FLHJ7p881Dp;nN!*kLT+_ZEQLy4ai6jI(|0iszGem@LnC`lG;Fp|{=)QH!VU59lIW zZVoXzn_5Hc{@5Ca8YHQO8kSL1Ob2b%3;5z-f$`aDj%(h5=^j9k zz)#S|6UO}B^5SP%1TVt1^~Pa8T6juZNLuTm4Ux;JivOkcs2{I5<@4&!7 zOzluw*Ml4=4hhi(zAKKrNw#MpkGwh2SL3r__FTBx+O5gv4yRSAR14qvQhStS6mZDM zOUnOqx4={?j)B_d0Ud(y%IAkrAxrN0$z?PXqh7e{^ItET7qcBF(9Zk*br%^cVGf+0 zqSEfbhs36P55||R=yfa+F&yiLUG=UWJ`tOkE*rp&ma7QK-K_8*@wsA&4yKX1Iw{wZ zC{(JApP-|BV1tHgdFnj}4+AsDPVx>Nm53PS@1r@-s7V%6)x|dl=q!}wp@{+?4VwX1Q1&Rh#O5ao)|!#>N&@@1E>iuVy}NLo&OI z+y)H+z(J%0+2KkJj<5j+z@cg5VM9C~{~NZ5kB&eSZ({JQcR0pGPO2WLU`hJ?C(rYj zlSJ-suR9*P0gct|y|nV7xXg+VjOi^(TsJ_$=20FC3hewA?1z!V*zzGfJbt8GC{~Dy4JkFZ=yF_K+Q>O_(?>2RELx5uVt)Rg2y$t5YYSE+pTz7} z=eUD0S+b(COSM=zI0SsS2RWEr9`R>RxQNPa(qmFO{8JHJai07IP3ZJ?eO&(e#=g{o!V$}Y~~TY>8>n+Y2!4}Dw<)McZ!@MJDcY<-br zDf`}Q43%!=k287b5G%wg+g|#aPtDRo3K|To#wMLb-6=dyOtVfv!=^N?G(I*ZM5nT| zuyt{`P^q%qs(*(6Y56@R1B3sbH?qm+8OGEGDEz+K-Z=FBog@Iz$@<1RwMvJUm#j?66Y*JFmmJiZ^phBip6s_Y&o{r)J0Bs* z6?Dp>ydQp@nlHf@Dg`Ui0s=ZfJWE4wV88c{i!MrS zoL1|Hp5H+i4H#z6axPD>CuJ`MZ5wB9$+f8m5pw-KHNx;Em zW?q-=B3(LgA_Ah{TVGVr`s=S7h9CHH4>sJKQo|fQ{4&~Jcf_Q(?6@ngv%9vC=|E72 zMB7!xP2>y`c6EDaIJ{%!LHgLcOzKJ*{3zQ+o@YBcsE9PEKS%%7r(PHOq>eOd+BEo`sXJ`7Z0AH9VYzgW_g7UCLUSnU&F}H~=(5#+ZKB9DZ8YzqPn0(Wp836EPlbHk0?B7JF2TB$CNyfoq#_ zMd+eddym}~^Y8uhm$8mS7&fbU=Gg?bl_bZ+ItPrK97Bs$L?<(@z_T>bTu?+Cb!G8{Jn+!!;^+unpjMXt}5@QN+tupkWx;R z$YA@2CrYgc_*!njdoj{k4S1bN{c6eP=YMmR;phF{Bh@33)r`UG>T&aEaGTy_vS^q) zJhk#W3&<*vbC)YpE(i~(LC~DFG5}3ML1Ceu!W!6t`|acjub|h$Cr=L{5Ms#LP`;G;oz zI{DypWpR36MW3G$*2K(7-!+rVVp8W>4rUb6Mu>Fv#pLE+6qifN= zf-XNK)DuI8zHWyShDzjwHbJ>b(%WE(GQt^OIeI{w%V`+GE!A24T)!kIG#C>2g(4Mh zZOER458GDOkuW^J#@H!aof(&jpk*&qAUqM|Z_oOs%DIph>U zZg;Nv6~Jhis!cTg4*s^hB%~t9qPe=Jd*m+UOL77si%i={<-TH#C;!J~af*Wv&#UiL zt(S9k!VWtQ+VI>K^c~oy>MbL;%T*tb z1%kdr1^m9cmMQL&klPt4wP+3sC*h|4K)NBMRQ{J})I#a%%D{95MMS`>y`?D=Af3T1 zMpmw8eCS{=P7x^P*;biP=2q-QyE?}?JFB2eOIAKQ89q?$0)@#Wd8K@38!`JMUQ|+2 z$8?AZ0OSI<9g8bzH!Fo|s^vUr@{=)UoKONqDv!RiJ38J;Ej*om^P@2dhx~2rK2PvGv9Arn8->~)0;`Xs-~)Q}m*A;<8JJU{jNYa8@+K>+L_3LB6j zg;mBt0Q$$}M(=xh=^#Qw!a?wDsc@G+C;ste5?fBy)MBdnLs-(F6u)>&;QC3;`@W$* z5k=`}DCMYPz3H0AiTvk`jP;eibV*W5=+Oi_kgb1H9OO3BmeKw?_Jb&m-&G8L7BMF` zm)YPENlHD&aJAr-rFK)SDx*$?@gD9JJDUr}lRv#hUFE^8EP&5uIg=E*%`Xf8t zQLF6Nq&VK#yp0{<5s-=Dr5%EKDtX-@}y;AHz~ z$bMRxgY`U`46y z=VIik77vb&OU72Fsf!(o;_`YpZO$N=CBb;#m9^ycC1_&p@2uGduYDCJl;S_@N+UVg z&#Hw*lP{U==G4mwyVl zK3TmEqh))f>;Fm8$_{Rp7x`kX)fWV1W#yq@ zPxbjF@2u?NuyE^?KWx@|HNe!|vZ!-kh3&>a#uK3|fy#H)%_&y!18G!D`ZNnp%4) zbl4rmyGDkFhQzhxkdh3&knilXvZ$zD>>BW!;%af%$8GGC0Utj+59IzpyEdXtc!39k8QTi_AD(8UKNv+=%!VNzGzp56xm+|^B{$skq|p(Bqg+l$IMz;i zq2@b3{MGz=88^;T+Jx(#VaUiS6ae6R^;%a!=y2kvK(^f^E6s)ri~v0C3{%qj8jftUPN3{QucyR zW8<6R_~GvCB1W2`${WEmVOX0iUHK9b6^e&Cfn6@1CUkpSR2fZ2p>wZ2r2p3fNJ<7p z{B&FRVS>KymBmDfmkbaG8;I>|!uq0?{z9%4>j8pVZ4Aj z`)%#cq+<;MOaw8jqENCxHV)ul0K!;hc!UD#J+$J&Gw^tnYMk1*IwB?98TO*5bf=B8 znd_eWqAjnYvfW)gyM)vfknK5tm?}uRc}Wfex(BkTI}5?iFep|7%0Fmpxeum#;Fs5e zj7rKzj13|rYex@iLo)C6wDZWQ3kxx6HPl*#c&|>T6Cli)KIxo<=+X6#Hv%XeaUheE z29%fu&#AxZl=*repw(6D*MAY3U9NDeNc=#k92_CPaPPLOP4vs`xRPpakTcGbWytTN zF3&Pw@yWSjr0d+Ux1N{brM)KxCHa3cwjoUH6ZiXf-GKYKE1}ri!>iOkv%EwOJuQ?E zpjl@BIMGB<_DSa>u2C#IX2`TUk2j4t>hW6lg@jI9u>PelHx)JY*-p$I((yDFD9M0b za`Qg+eaQ;BG@@3UKCwj{<7(Hm_=#>}ni64TR6Lr-fhneubnftwCdyW?E5mD? zk4$z$pT)w{ucmKaf@)JA#+r4M7ud?g#`VcvZYXeH3mZ(a+rLyo&~E1gyVvn)c>r`( z20*1Bs*KtH;DvCV<+BaP*Zb&T57-Ehvt7G{r>R%U_-&@57A_JcDJJ#?fRSJyd`MlGg_S~&JiDp=Bi)`&?58@&GjGv3If;hWOh7gfWH*@3VC zKV!7ln0m{$7j6OXUVDt3>Anav5JT59xVsb`P(mm5+isQ^*fA=o%tn?w^G(OU)wP4sa!V!?3n ztPQu_G0o0RDaculZu7s+a2jl_w$uu7Mvyz1%u7tKf09msgeXC3E2OV)Q0X;d;jSt6mpcVOBeu_Q>q@HD$Zbc zG{G%GL-RGMRqKxOQXS;5q9;ct1yl`amZ zF3wV0YQ#{`FVKe8Rnqs~nuWle7OCKg@06%%fO?8fgI@7yY<$|l;*@(Ng$wYvxUK95 z>ucY`%XCH{h5xIqcqSN4YhOB4QyW?W!xRS|mMq-olDwXI{x65z4#6gj+3MU6a?SiH zuhjRJYAzr(YsR5_zru{DLy@l;tB^uSG~AhxD$lB36XkM(7LH*ZUHsIe#-KM!{ped{z~gUf!0k;4@)dX&*16 zd*xV^$)J+$+dxg6jD2>POIK*MuZS;nQ5o~N}G$oEVpCzgt9nMOrrH3S?rMEf~F`B&~ z& zs{%NEbI9_yaeJwVPH7Vato=JGex;)xHP$_3Re=41<)B=>prGhml@78WM}^uD5GLQb z`_tV`E{~_>StSu+g_upy{AYDg2Yno~1KCDsA>DLZ@$ON(*sEv9U(; zkL>o=#k#ESd2LBWG(J~VZ#)F*)MV&2Luvo>Z%pWU4(9N%|NaV4R#_$wdGkFGPFf+m zswE?PKvKJwSXuv*Yd~~?_!@Xe4d$OhT<@rTU_K6a#|Ca2-j)#{Z%$C&!O7ATr zsS3uL{)2^YN&Haqz_}l5B9p-xHo5N;1Dnla?C(X+(?X>;AOSNt31YC{3~5`S^Lc>+ z5lMz)%gmIS7J^9~VzbM2)TdH6mhV$AN!5r%b>mN9-}e}7YS{P82raY@j0 zwwBML^*-SlZ z&zoRZ(gl9@j+vY$SnkM#U~SxP{m93=%>@-UGXV5-t^EJ{5B4CgytmwoUQ7;$UeLtA zX1Kay^55D3^$*Gse;3l;C4TDSjJC#Pz0n9SH7u-PaZ1_fS5_YcZgE4ol@_B&>`7bG5y|YnKTWfest|oCcy@zRVF=iL%zZ4In zp?xD_;6Pz#XJo}e$c~8$%{e8xFzB$NC*yv>7s}9pUaOF()%Hi-D;@6e0h=D>T z$!-bj0M;~IYxHaOeh5c-MF5^3 zbUM@gu6Kv<#1F!1wXW1sQc`TE<`S31vn9(7!JOkZrdss>UGp!6{F5dj367!z< z{Q`METpo>~DprxyyEhu>83FXY3*X9Oh9W}8%Kd_9op{<@we#;Ja?|;By>hId*|3g4 zh&iOF%Hcx6;mX1FdJ_kow-u4*j*X)^nADBf0OI#$%t~eJm9Y!a#n0P2>#eQB1Uk!pxJi~Hz?QQ5@w&R zBqR5_&E!Dz@Lq7V0ld(sH~w$9ROsY}9@Jp&f9;B=3*KjxF@P*r41RuXeZg9v5?GB) z5FQkk`5ODjnT=ZVL44UHAkF~{)^kkHLSSq~kXTk*a z+vJbEl{%PRQWC0)%($*^cvI+>JU};NGJ*mZ4Ij|C zB}b*+KFTYodRr>1g5tKeOduEv{`=uv#qGnx4*x3WYR`0tl0#{SFHVT-(?0p|f`gbM z?Fk8?SP#Xymzh~%=%N7xMIs>-wZES;1NfSM zt|QL##~1PNr}x;y8mTYMA7wo(`9e(Sx7VJ;P0cLMuEX^EcSk!3Vq#+;zXV4v&hMnx z_16owR5bN0jZPjfVAI3}fX^-lT+)-R;_d*@o3FMf%|-~%`w@cihMTMl+_`MCcLHsr zqXfS3quH2-k%&nmQUA5Sy#4{DJxvD=&A3neZnoP)IDoQKE>#^EWM~)x z+D4l;n=N4>zAquhXSZMAP-J5zq-B&%1)IGoi31F2CBt4XuB&thh@*CJ*E{2lri)d2 zO_SiVTM4fRpqiQ;oSt_p%KGEC59Hw=s4$3-p^p~{%i*U2m(O_YO)|F~8B7($uRQlQ zy+9Ef5O1@N%F4<*Uv2zOl_5=3cO_!ms!897R$5@L!3eqbS{5H=S<+>W9*`Eh3no-}jC21^FpDf5(Z&dY(m*{Y$bB@bb z@6Sa)tYs<{D+`L}tFIp5up41Y&#jo}9 zdGE}!Oxe0P(3E14ViU}(mRRJ7yP`aCAB*%#nT zfm+5(kX2h~V7wM4#pSdaoyQQLtFvGoUK~JIpDEYs+c&z{<2Pk{cUEzEu<%2&Dt>KM zEi!AHJn&aYcUCAnXvN{^Q~LkY+XxDG>+j%>rrJ@9j5}(C-gTJq)RlDJjm0BA32^^# zLXj;fDzw{dXJBDv{mpnX1hNO;HF>6vw7kK%+ZCY4b*XS&!J#X)D za2yY93I+hNyU?#^QkRQ+$c`MLAAZUrVk`}--4M~6Yg3udywbu=6$r8nedA3u`F#wP z`WqP;dZ20PZf}nO4%kZ1NgAZEucl~Y!Sx9@CCK;5X|Ki5?{0~qd11LiCv;FFfN|yeH@F%s+B1p_u-i=CL})b*NfjFmI1|FDib5aBP})$ie<`+H&&D>@P@9C2DRz_%H<`|r5Hp_`n9ly@_YAno zZS-bmNN*F8vS(5DEH=hFINlq%v|~*G3;;R3RMeea8b~s;95m^t%OlIrxck*rRh|hB zQF&~Mk~)t4EEzN{t@3iv0QanED8(WnDNRO9&hawxGV0-`_VgzHyosxh#L+-!`7!!y z5ZR7f9qfx)&VSYaS;98EoWVjbN(fiQ=_5#Wb%B_QxqD`7afD3tKk zP3=L{d}2OXsWg~07h(|muAy}O`Sg0&V&)C~_eZuwDrci|-0J-?jQ;{|j?uB)Uc<=g z3i5eEWf>~zclvt%QmVJv6L;P_k_a$hnamD2916gco7WVsuKT35zJh2M_hD>CMMu9| z_!tWGPja7@6%!Z%uoS&RCr+o*TbPA+pz%O8k8?UlF)f=Uc}%e#FI-?dX9NVNYD0%xRUhYVFeiIQh*(*F&S)=u`>VT6M!4(_PR{by z?oxOHS4yJya8{(80pQRjCqPScpX?<`EW(e1q!){MT7(b z1_lPM1V@ZUTT$Eq_OLrT=OzITJ>@AVB7|jFMd9Y`=i9?UURtiy5r)`TE;rZgC(EtI zJzXEpZ#!=5)t1|ay`?9oN%J;a>}y54Vo5bN>V45$Bmhsa>5)AZF# zYlcFa>d|7`$-$|6d>#V6xX7H9la;3UO)WB5!W08PHqEAUMCPP)#eoim=SEMR)AhBM zrt^ST|3&4}Z77dzF=p-Ft8Ml2ua923_j zJ+P4n^IbAOcUJo;LV6IYEx)#lr!GE|-cwgMxHoPb@1cBlG39zKj{JRn>0O|b$Wp6Q zGKnaBEZVCv^aF*~1Po(;Bd;22c-%szfpFRj`R6yoKYvs#Q4pP`QmK@DjAzu1BNP`C zTR%Qd+xb{iZaZf$q$-yVdXg@EM>h7Fu}Rj?nw0K`WpTAA{gS~fqSVy=K&VTCRh$j9 zy1PM8dDYSTKgw8JFMUM!{uBKmN*;{&pkRWw6>J zH`9PN&E#UHMicIYryb}9!PROq(=}gxymTL+Ew_5}MOYbB`KOwhm&hYW&atqHDk=aI zlf1q0zCV#xk@RL`H=kM^N@Nug5kUjvrrAV^#Ac3A7? zs|8H}DlAF(!TGn|*1F||$9wd`b$6vK2OQ8`a|5vsku<|%6BI)ha^Xb;BO&$Jev$tR zYRSsZY9ccRyS`DWKlm^Dz(MfG1eW?%TH6)t#^L&($k$DqC`V_c50bK2PQT#12&|fF zK;jP3;*1TY%j_!+XKR`4ZDj8nby(Oog3Qd!rFy%cU0o?P#TV;MWlKC` zWv>k$7w5#pY5L?+(UEDgA}&-;TPYF%D!!|dfTz5(-jx|po6qo#Y9?$iF4*A<@dyRt z6?w)qkX^u79*PA#20)gTZDZ;iU6stYM|Xbq`k(ClX}QHy1`Gz+?w0<5{gAdZO0spa zBLX~DOYc!d$0ZqM|qZjS35?`MhjVEqD3x&4MPw0rgwbx&)^S!gdpeo(=_3`oP z5EA`jINh+9fD;4Jx4u|Y94ZZPQk)Xe2O~$vW}YjVa=_HxHz@d2T}y~>A1w!BYI47- zFXAr(Kz?)JO}fE%(@>wx5~--*qN1hDsj(>qTgz9LhgGesg3f#)2}y&gyWUu~|ICEQ zlZS{O$fc;g-g%d47U$aprnTyY-<-VzU%BK6-`;X^V&>0uCv7i)y|e{n#Z^I`7Qbt9 zR22F(3IqnQEN>@!Pz^3x6+tpzrP;8;P)IBlQ~1#fZ~Un4tBff3ZoUV}f78L{K#J18 z!swHr$B$SUbtNU}OOTY**MXXqpMeOwdj~)SvAJkNf{nh8K38v!anpH1iWOq#RQ&mg z;_5@;X4^mv+KW%VT$;XtO{xWYF7O?^ky z$)DqvZgYzZdQm=s%(zq>Y2&_~l4D)uQF|ScmcS0s8$$C(Hq`&J_8!zLJ8q11|D2D} zIIkoYe1LyWKAfxnxi~9aQ5oxJ)ZN?7>el`dFrx2Y#8y-^yw(GQl+FrEh=Oi(zo<1p z(7;b${BFT4fNyr@cP8egr;0Vw5y?}`CNt<6(*)w{{=Gu|;`gOe{sP0bjwxoveu>f5 zr64F>N(Eq6!dY`3&_MILJK2g#63GJ4uI*nsoe9idZ}O#aY8C z*^uZ$cq>odA~)NsaNkBme3p`;>6cXRk8!(qv*fRa=lA3nyCmrE3=H^}ZvsA2mDQ6| z+^DYX=nTKvO2KP+M%^><6FtC6*Zz9xWNo&A(|N-gTZTT6ErWx@i5KU+mX`$KEK+QalpJG z?fB;_9eQxK;R3zRB1hTgdPDS&q5+$}`>g{m?|qN5BY-&rAS#|iTLXHxM$U7!-?#Rp zUR;RbFDD{X(i4Q&`%jv!%BW@3-4W~J;ywnoMfI?_WAQw50Ns`A*;f^1CIHC-af5-m z@xXkOiCU!|Gn8_en44NXb0zOJ-am>FTmm0)aZZ8ZGYUN#kbX#qJb~vBf(F|c*g+0P zqpPUt6fO_g|2WH6DuGNi&RS!@FYqEEDX~(o`wfhgT1<{zh#2>>Md^J_grV{Jjz&m@ zaF3no39-I`KDC7=Fy_fn3?~NyNN5sUrn7f6z_%VQj`3|rQywSKe30_frxxtU!vH~h zm1idkO@r#D7C6BD&~kOWqnjl~UcD4VXWD11VAkpo+bP`t4=Si9JsX;>~C zd#PoojR6^r88bgkbxw1Yb48cW_!FLQiT{Y3DP&WBnu*<;&%=Iq)}XrosQ!OTw&f-A zk)3w2(rc^Zkr(^BECFwzt`V=3jqd0bE%ryjW>lFceu>8jnD&i;4=MaOQ3tp8(=@+1 zO#h6ssIKbTUw3f_$5P3DU;GS8{L`{M8Av+KebLcR@z^kOBbQf`IB$yWYi^TQ*mbxY2T1Z(rmPN(LbcO@a-zWnQZ06%1 z0mucaP9+B@#oETcgF2oxK<(l;n#Cx@4!K(b#ude0{gZe#<2U1QI`HA_;c$mj@0iMg z&x4qZH8NwYvJ?u04=}4L(_vkxL59YLmEIs|n9bt9*i;B0JTLK<Bc5fz&mzuf|WD<_mxN`2pPi?LGy{_J$ ziqf%iJEPF3I5#pkr_oM!>;{(r0t0@=>}nd)F-L;<4dE-M$`y%yw(Fg)VT>Vwslrcg zUz|4_{yG2C5>TR5{{y~w2MRzF;6m>VM_#;}HXv@D{C_RLTjn}gSoj!T&hm9ou+34o z)fwFE5Vqh5ST|~|0NLkQnItl3D>K~N*0dU2;y_5D!aVKHd6~95>aeo5&}#2wku~ka z~M zyOO+Q=JpO$%bBSyvohMWs}peIM~sx2AGPGyqzyC(!2``FQveuYasbu|qXkr}0!I%D zBZXSww5_hnqJzW!s`BIYE{3u3Gt-lzn&J^hkKP+w7gQtZjW8e^n5SQ|e+jjX5h~_P z*ac47wE19>fYbhTBmth2?cSm2y1@pud?TEX)$3OUc;Dh%7H>YF;|qnL&~IL(3%Y(1 zHW1cuG>89OvoKwtvKSw+n(c6;nq(G|*RL!Y`aUtEEb|M%bODP2pW*s|bv{}r4Z+qo zs0_Y&q=DN}`MgTWV$kt6srs<}us_>uvXB$$aq{w3Rxn=1yZDXBN|@9TX66sCE1K|{zz^^5rY6Wk@ZYeQ90%6Zr;h}w?*n}t z+b&AjEmEs)nl@4jZw{Y&P;6iypVTUBd0O6tQ*3Gz6=RL|oLoVJv7B?n+txmQ#Kjjfld?pMBc=OG?}@2W9C0!o?{pe zq{@A=<$-XCl{LB)FYX^K1@vHhQ=Ty7(($i}#$J#u;)c6dP9RPwxx35W^?aK%Qx!i8 z7BjdTJ`cO8$Q%cv$#i&SQ%vOY7+L#K9{T#}93XpRik668!r% z&R<@!nKR@FJbh5Hj1^5+<1oSLCJ5P3>7`%H*r(X0K;)=}`SR)yW+k<6WDs5G--W*x z`&SBA9BN(H_|boBN4Ry#-)1#)jq5$`^364Ksu8gJ|DzqNKkAqW3U+q%j9 zaqN>A>UEY|shi6cPEQ&A0avrCu?d&+z9|TXmQ9vzv8CRTs^duWZGKO-?+G`|N270S z9i*DB2M6DpD=m!*#7#ts9vgxQI3A!qqS?|a9&gi>o?%EIyr4ww9~$avuoNw7nC+gM zLJEjtNJ!LF$c)09K%xfwliqq@YYf9qFuFKw$L-4GsM7Tu zv&X>yvi+vVh{usIFfR`a#3c6Ih#l({z_o^!iC}97F@R0k)YLqKc3f1N_h3KMLRs~3 z<;`!C1D%`+B!={+q1>u?m~XS+@`K$W+j82V^g%qcJ3~5Rj=>0!-Ja(I$a>Y>J%maL zX7DktB&7}AtTASmQKt$z$zVQP9&6z}n%?{!c)R9jltEBfSTU#FaThn>6F|SeGjK<% z)#gAjTa^Ck)E?SC7`A|H4*kCKN=Lw5(oKVBaGOq)4$E_LzovbZl9@U39R|f%o(x`A zR+iVji!qk*u7pG2+mQCYuE5g>CcpdNV@yb4$jodUWOPkDq}{ihZ^ZoP;(zaKhGCq~ zUS}_w?o6ktj_NWOt(Y!2S#%yNHk~ckeR=-xK2q@Pf~o}cHk%&+evp%!w@ovfWuRQ#lPF=57-Hh6fqO z_Qo{uWpNgW*nXQGp`)a?{X6orRaW*g#^wvw3SPWz>Ao!3c3x3wW+F}xU~WIBCdb%Q zj}FKn*f%f7;@wmM*mER}Z|Dck#`q*>d-fOToA3nRR-X@kR+jG&Pdh7e-h=KE;5e+` zZ^^UHprDWLt6;oiT}wb^s4xAo|us-~%Qw)&G~kR%u` zmz**3C9s&7E@seCyU<(2;|4dBBd%OHzZ!Bu=L zhE)NMv;igCKgDg>1h`HjAZgI^KWunJh=?l5m(|fP08tr;rNzL(xl_FV6%s^#T573E z#?POMfgl$_Jlvic12XU%9W2JfQ22Si<*0oa!RHsY{mjGw(E<>H-oozQBXo;!pfPUi z`RGB5+uP448*{QazE~+73<`igO*jsy{tr!G8CKQSwM~dfh>E17bR!^LDj-OTgdioY z(rmgB5$W!dZjg{JmF|@8Zls%UaGvkw@{i{_F7{q)%{j-oYp^LuS>7qwDA(;jyNN(c zEl88_9iV;v1{VPftqxOvpMY}r7J7X~gv=@XGzB;sst+E?Mr(V$l9rv_^B(Mq7m50gB&upUnfyn% zgP&}3g${>_Dc1lp435{)GMA(FSj>^^f_lX3f=}iruawQFYhS6U5hW!hH8?X_Gu5c{ zsAOuwA;ml4f4b{JSX??X1GWmUa?OpNf^> zWTmcpqPIz!bYgMO-@L)yh$`$Y*`wQaR#Z~@Gc}b+uaE>dWR$a)#WOLbaCl8D&$7GL zRMpjesUV?ww3-yQS{z!kRnZdBtw&{&>aU1ZxK)-5;{3%GK8xQ2%C0AboHP73?4DL! zt-4xGk3zOOzBTJ%V;{!W=@F!z2h&kghes^pondcyg_k~D`?xkLfY(}(PJ%0pkpZ#0 z)d-U_d*a6Cb3*XWy;NTtJeHOdBU>`!r5L{LJayBaolLkijo5X!-a9 zLsumDhGWU~)n82wKdx0ztx6p%9#WNT|AU}3rOr|eR7v?a3?qGgG(s%5mU{6p;E}@^ z(jU4N^HDpkR>)0b7bkFb-1x$knIek<(9loQQu9A&M)3s3{rr=coGKQQxg4FSaaFba zC*YshsQX!_OF*10NlHPQ%ubIS!ZhoGy?GT;l2{W(;EUm>F>oz%O(G>NJ%93VK{oEG zuY97wrDDfc#jZv35u%<>c&m3-CdbA7maXm2a-_Ml=B7Mj}tB`OEe67 zruZd?&KYcIaU&uOu-H17I#_0E14d)io<8MXoY~?SG^}xmzi0ktwRGo)$c%l8W59dF z%^iJeHtZXwr_yu_w}ys>te8~3`WpvRhpxh(QpopPmZJ!lD3|r_ z(5$z_#5csJ!F3&g3>LLN-fiFV^KLbhN#7?Xmu{Tkm7+OYU6ms0FM{Ea+voExva+mC zD%x86Q3a95C`^ii0;?PsI1QPV=YEgrgP{j5A0BgG!E3#zskPk{Gg+uMdW-3!qK31! zh&$EJJ~eNVPHJ{R-GydclIux&QO1uz*4WtClZ0@_16a%n!d9z3XBT8NG&H;O%~-N> zrC!FI?_0E(rpp zzKut27TdEl|2ePtIFUoYOmKP!(kZAr>c<~3n` z4=xwLC_Wz2(Yn|^`{yxn8gFXM^~LpIpaOYjP@XVQ`9hT&{%>b=AwZlbFqgxq!v!ec z{JyND`p1KW`MUFMZux3_WL*9(x6aN(LmwNiImPZL##Z6Kb?MHgwa_IeSZ|WaSnciIbTxsH$z`x+ot@ogdi=?mC&l`3+~Su79x)5G`Uu=@L^t4p-`sj&4Gj?e44cJihb zQ1AClIWC6%z9bQ_tDf90cUf8|J$7simpo=L*ZEv9&D=lmx93p!!3~IqWol~rgy*XG z2?E8@>-!B>{DOsL-E?Aio3|Y9T9O2$@tISSZ+!+ zpdaEXn(hMIvEoQyW5$b*5L^+}T*WLnEm^xVwqUHB{bo+kn3eLoRHA^bH6iW^?HwLK z1W??CsY1UQPCN70S_rBnU~xLV<~_q9k1wEN+g;(%-^8{vo4(tasS?lU$aj2Fu|qvQ zSgVQ!B8iW~RruT+!;8B~)Yx19+SjZmzgyKhT`^4@)sMKY{rxQ?Wz4)Qxj(;#b!65n zk{j@>=MMAD@4Lo;cc)l)#a%x`RY!+n>pJ_Dw{qNby%$sh)yahxhe5*(jGb3O+I0?c zXFiLRI`aqpTxx3S3=Uy$^WS-P97SSaVf<<8`chMWTtZ{l*40JB$l<&GGY_#fHq0{i z3-=+eqKZm4Zs;?nZc1)iG^mU~41yoLBWkoC*FBbLbH%G9DW4%T!?ssedEI+cg#Zvv z@$&j=tX1+d5mL?w%*f2J14}CkZfDP{MS2n5YpW~wIea94_a5*1(`>J|GVGJDzeH1W)0^+FkyX2N7=zEx_}gE-g8G1p zjYqqXLFRxaq0$OP7**J*V&~7qh?|YYaN<~}@jt*AapxaaTF+s^I9%-bClSS{t;OdD zZ1NQR-OXGOt4D8nedL;&mP*WN{=}@h4EggQ%5*D z>$be?x0T#pb?*_cntGZG=AS!cGaFxgybac5W><>sH?&=f&fOI0cm$%l0u&}Ld@+2} zGu!t1=$q)RZLT@&lE<69&k2j$j33XK%gM@8adStKqt*<5mq0zk-s$vEM76ZGOFa(J z9t%=wPi+t<>W-S+&v(O+zN$MI*Il;% zsTYc9sc30m|8Unr@V4=l9Nz&M-NNP;SCiN4@?jEPxl|;N*CGHLF8#CVC(3&mH_g({t^?z;1|b;SW0CX>{i{uZ+Pl8 z0!^~oPY0u@y{&lFQll|aq>D@K!5j&*WqC4M_rs09VYwLv|M-tT9-4Q}Zfn-qu*vA4 zxbwg_kd)EDqNU}K?*XZ&D}VpX$MG+onufY|eL$r~#nBdOo5V*zBcZpDD_0q9XAJi_ zJ`+b9X$(xp}sGndFuX)A-<}0 zs5jgANz2L|*cb9do}9nAns(!d?GF_xtN4f4swkogB_ScyK zniHwPLG_;o1R^U6srl)$3sGbr#&aLS`88SP7>F5}TdFr_qo7(%d^#cu_ zLiH|Kzlw^ADcTFFPtE(0Js>qUwJ@b!CAn0JD_uE9JHEm~yJO+Z$iU!<+2s4$Gn^#| zkpW(6px$IgsLq1TP;0CKp|t(kohemzARQ@|hAt~5J;GjN+?$nlk?Yj4$C$ai5b6C` zf+3zgOOOUx1v}G9GILqV&I|YP+Nhp)pXL6g9*_=+X&bG4@Ch%a)_puTR{p@Z-nDd~ zX)@y3HRY+JxY{iMA!bB$JsWO+d`X9#;+OfF10yG)f$W*-3#RV8iP_f-#uJEQHSwQs zRQU+G=lUW?WT#H<*>>R5aP7B}uRbf+|L1tSn8H=+qKN9|-a9t^R)5H#oK6JOu-g@v z`=-rKrYptGdg;^%89M;s;DftMP2cqxxNt`O+hI|0(w#@z5CY)=r#ms{Cnjjzx?%>{9==rjH&Ylq(9w-E)Y2g{S)90eMRdqobPYd>yia()2RRl>z%YOqW4oLbH*a!)5 zLC!L6-;MfRTS)=<+%L{kkJJc@jjo1H8S)sYv+=IAaKi>-8Wwn7I+e5$5fg`m(b3Yf zCc^&lgZacZmcjO?^2awBPx`GGNvqCoccPrBxoY5cvfSy|9C`fTT8V)YvK@ccmYHC- zZiB`yh?67-`jWqF@iOpWkjg$xM80GlM}6Yle*4i7L-%M7)@X??e;s;Yro3?MZ(g&j zM{$4ITHAaP4(DgIr&t6nDPOp9b3d6*x?+a+;yy;=i)8YOixZ%gj+RuI2`L~^{b4Z0 z))7&J{mey^Wjc>w0K|$&d-y+$=DRZXj=sL6)2wkx>KHb$a+t9LBFA5iCDSZxGts>s zUjwU|RcPaPGlZqPCLOTux+)hc5>tn>$Nvb369^l7xO~GDO$tx`do=5vjPu6^SB2>w$?I?H{lI~wvL86L4X zu)yAb&r8xjhnB@$1Y@Z&V+8NXpsuVBC#jPI*-4er`>L_x>jui32PN7z&mS%&_v+Vi z3vH4}bt?e292I4$W-HTU9fWL5=L>;Bel!A1Vf9+^oyjdqN=j1KrjhO2rDatTe&Z>r zsnV9S8Yt8Czy8)Y8QV688cAU|5=x;L)njk=-+r6r5`id?hE+N$$iKpO4f9o|CBN#M ztkAGCZ@B_5YAzDjK*{2|B)I0sW zhE0(?{8(;w@6Ut-EIq>TCbc_ZIyG|-d;;u zaJZ}S^t-PAZOBw*82#X$4v9<$#BrC$KSJalM>(+HZv0uz42|KE?YO}Brcg1ehjDO{ zVp~gGX@y}>3^dqkPs|_s*Mv)j@1 z*OuayNvyCpgKMu_2_{fx8Z`4VGQ4A}Se7dNa+v_;#XKZXUA88f=-_7Ruh16-cgcau z%*Zw8|4bVF9h1Y5hg4El1Mk76s4eO%oIPlE_ZAix z0YeMx{~Jmfy83|RA#0J0wCuCEq@bXnTUvQ2q(TUP-l8NcV04yci6tCX1p(el*dhYt zA1o=jBqV`Bg{It0JU7|g3d~9!6w4P6-~oJ`Nxu!dTI#bDDm*5=_)aYpRx`7Cy;7%p zt<5bk^{^5%les^dnHkqtsNMuX4;RtLpVXb;B;>*P+Z}+-45AP zvqAAu@+(mZF}c{=k(i3p(*eROI-HJw?ylFoQ~KKzF#1IqN873S4{xYL1iMruZq&DC z(IbAVW1DEvS$tM=ujBf=n1?m;TVWKz$=pf*N?WKYzo0z4f1>;8uh|#LOCvnSPd-XH zoDM@4FTFd=tICyBRQ^=SO4ylc(X+?%y0R#>U`HhHOjid10fGc4W`OOS9#MRZV&NNG zJ2Q3v12MWRR+1?FmDjjhzT{KmL;7PEIckJ#FV72IbF@3d?SFZW^*o1L3ZflDW>wvq z3KnfWaB{<0pZ+3aoxi6pyFeJWl&%E6gcgb}IwXK8y1=MYVy0B6$9;nnrJ>s|8Ww2_ z%^m#ns+wkp(1>YCqa7L=%3ZEvM4A57wkJhv-51Bfo12&X{K4s*)sTJd&xZOx&JcX#-f4xvQ)j;Ua=Nleu_I=Yww+np* z2IDo;Q7cXDBIf=yBky@&g6_Byc3JPZA{}gseoi7IQJNUW(bB>QeK5zeKaKS)Ya5lQ zuMR(&J&BH+*84d0f$6BDQ0M3=rrKbZ4A*ke=x^ARSNrQ9KyeZhmhd?o?{=4$5KtwDHoTu>?*O8LTVl)a%~0X$PSV##3aOmbmQg~^+4)4uxVOwNM3fRI zNiZ&KZVGV9;1ic{%+_Ffo5U`0R_iqqf$Aw#SW71vVE;ZNf(Q{zd^W$ZlFgNrk1*+o;df5D5F{DKj{)@-y?vT?I(KGI zRu>TG)YC%>%`r*?rivl$r>F;SIIds)hmf-`rpaxrz(Vavqc!j;&f#wv%fI8_te1~P z*l9(&Qi5L^u^}zO{|gL!ijCD$h5N7Hj=bhmke8qDubVJ^R}t`UkdSf6Rk_~fx7+^z zX#pC(i1#8z??sjrD7|^}f~vpw4I6*wMn=+%_nKkDYF=sKIQ+}nKx0r5H7g2sbX$e#ay~H91+%7I+`vxhge(8jxBc&6Oob1WrVOy74$am>`Z?R@OQ3`rcn!2 zi?WAy&U~AF4T@o(l1XQs^1Px35^8-VoaCB6Z5X9!!B(CYbkLC6Ki>(-lqnsOkd!bc z$x;HC;6RHAaObfjV)92p07bZHq7>=WDrU>b$WVhht&*rYK#6ci=et%#Ii?|WykF|E zXsH*JZdbvTzTF8vS>NdNJt(u8mVCLSMnV24Y2nb-_shvGsz20-NdI8}71yS7i*23R zW9#!|!5b-E>lvgXhTgx{FE*=t>ws8q%b{3bP!Rh+%~&L0^3?s&??0KxrOD#A=91Pr zAi1K(VzmFzhFF8Smx;G+cR#I3c<17el^Wg~IIsai^Y4zjBrwijZuvZcefMJKBs?t4 z&-kGN$TJ`_Uk}3Ny5fcI-IcS2wwYKIK?=YP4SZ`?!Gnx-$;WhPl+y*#Q;hm-g%svHcz9Ll-d9h>+Fpm7$4a|N}W>@#0PVmc^i%fz#pjh4HS zfC6KcWPPE|0u|kkboRt^0YqV;QDGhX^z7McKT*2Jxlw1kic2ABlX&NHddMb6qT#{i zhrU|3sPp-{-|@7iQQtGt0*iAv9>pcw8JKJD8;b8dfHV3&1))MKIoTrd-*-cwex*Bx zFTP@2R)`I*PeD#}wnurt^H(@Q$Obd#DH#_Qf*@bR!*=d7ramzKPjYt{w$G-isku;{ z>7ADgj5{vOl1Joog*#L19XH)!?7#Mu zCmfGMhw#+jgnc;?cj-C#u`?+mKgs7=;Khn=Pl56tSVq1`wqF^N(R_%Fr=U!m1F~4i z{UX78kf3C1lm{UD)&%@gVlGP--N(8>G3^3?1`nn3>;Q9#DN_Gzer*)5LU*FS0I4gU zGuRhFXStUgo>1rd)xB_f@pQqsq^g-dB#BLfG0@+4;oqesuufkFc@;uqW7|)|30M2l zP{{*@R>zB&h0%|jpw?-{aq$zfcIbVa`#1mgvt->mE0(2@r6i%seUA)8RPoX-feX22 zIzTp)r;Xs07nR)La28ft z(QCQXuCkfn$MtbEon?VNru@Ed{TG>gu9XLU=rF$5NFnC3`B-swXK|jG;!|XfoP@^P zN$KI&YJrFR8(tbYk1F{`zMF{r6+X@OeYVIcwQ??k%+?M9D;DtYf&YP2iUYoGya|TQ>dsx94D*F*O%eB{yfeZRE@-4!f$vjtXclLtYr?p9 z*Z4zl3Iut^X;`=bjz|aW+~eH>mX_0@&_N;rU51flt%cFyG}1}i`wb%&Ym+q(e{PKY z&U5FjzPEcu7JaOAzY7<@R#c;9RhD<9s0ggQ zNBV}IDamlP{)4Ty)Z*L?NGwaHEd~XpII?7m!4(6U!mJ`6nP$!eK{o<%Dov(JXuT5j zlaUld6=Px;3WGoq z@Lj#`dG0++4Z%ar`URY4AU(_^)YpyqU-Vd_4gGI#ghcVUuz5Kv7E*d1XUrk&unPV zteXkG$0SnwtL}tcKW}Lf=dw5>GQUKiLF$Xs0g0!Hih5itAe(?#b|=Qa<>0PJzy9G1 zgwzk4Z3C3cOCqjxbRes4B8Vecv~WB;DvDxx&9K>%gsF5qUtkl7_`(N5y7|B0K^ygN zV!%8D}#H8|NjENq}+=7XnBM`&ls7t;N#uGac=VR(P8QZH68)hwS`7G9FX6M0FA zTfTo1b;^Pq%bHgnL|{a)9Kp8p8-T~fJ^QOFu~0n;DJiLwRIvphI@CGbX`SVF=yZO$ zAZb=va*v!Y!s+;v-);9+4r9*K>-Wy*v@Cn-mgg;Ir;bpqTWFsmzc)9O4{@i2^WM67 zVkeSfnZU@}(fgd3D4^fCV|OFkfqQZ^vf_;3$x zaJ0eXVS(UL+fR2;(>U5(^AxPVHR?PwtaUrZ^LUpOxWu97Y-<_-eDPea*;A9LShuNn zySw$93Y7|3nE)2uEGUhwGaHK$Bw)VQxy`*(LK(@bkI-f>*3tm}3k?gCJ*V4VtYG_{ z$}O0!mT`M4uCiTeIZ4#^3mR7|htq%%LH=Y%zgG9H&h%3g~7HIP*L`7(N z;`}uN;Pt`l&_L^&9xeu2PGA9 z<`l))coCDbXtYPvwj_=>IKOkn7B$o`oht>De6KSP2<^-Mz%(9EQR9+7>VX=Tuk8H( zU6B|@s7nxMZ686K#b-ZHT0i1~f2LhyzzX}s3P|x}$@#tM3gQi3c??vl=r7B{l;RN! z3><7D<(d8jVYltPBAwZt#-^?t6w|w;vBDGP2<~q7a}mhvG&b=+3xpJy6sU=_i%|xmG&TU{$6oo@=dtwk^GTPMC=o16hYqYRMpt=lR77{ znYqhFW?ztZ^qqIH{9un2qFAE-VnzCw2gI*t=3E)I>Yu`rRj<|Mn9k!F z`0iA3;`A^20kio%q@4x6<`tH40j|Wu}wEjRF&f5gfTu$ z5atOb8NN>#j>6KpcB1PB`Cf}a{CdRNj$EU`g} zX{M33Cr!GOl`g3E#`f|Q!ri;C{uDD&av55)Y52KOpK-tj;#9WnD~93xRh|gt8S)0o z;yLArv6_W+WkkC1gtm?OK8TR^M6n6@hN#^~%F&X&UFF?C(9F+9yxSE|? z=u=2o*k>?iWfEjUE&Ib{kZl^Rj+#e6b^6NH01u9ghJToQ1ix4y2?RY>!0tYH7KJLE z!zXx)toP4o^Y`$-OJ0ZSO!*WS$G)&D>aEy7ovvT*XyyV%o#k~9JHRt%xgz`c4B`zb z3u_=-FXrgK5fS*No$1CFQ35v9)FQ6bc^JN>1uqCblS(V-cTX`1UZ@-@F~t5#%S5`5 z7jr4C`QC#3&t!m&O^-@KU8hPB^k6CoV4I`v+e#Cb%cz zJ(tn&$0%(zo+!*WQ7-5Kw8PmvWa+ zlf6v{8QL5UuNT!8-c8|;tQYPf;K<`;pYE$`NZs$o-Dw`{q4@5yv=>pNDKa5|#f$}z zScI7tsK-WaKfNut1v><~0rQ{hOv6@!J$(qIyB$c}_MHP2k&xV&?C+byf$?ul@Hxup z_ykBPKSLmg3@@ARa;16zg-{ZTH|7t^EtD>nt|#2Q8FrWBAi+fke+#7Uw9Z<2#R@n* zl4K*xv<~d(N_=`x%NJ+r%=X;-?eYHoD_tmQ?%M}{1wseH{ob3$CIb!Qj&M>7!4K9b>vRX?IY2NGU8>!-_;XH`~ zC!LB9dli%y6TtOSE@|a~0O4-_o`$|sSCF5|r&;A(+3mXxxU6Pm5SIRNDh2)a*Ox5u z?1;jD&X=DNSwRL9HyVe0jpCcbe#x*%M`Wr0QZT}j%?Bi+59V|=5Bag$66WHDm^z`- zD@HK9GLq@E)D#0NH}{4Eex4<0qsXVjy+7<7J2#I#^sy{>$JM*- z<@}$HK92h_upIU3ejby~C-8-wj1>7ku6X)mk zpX+mD*|d7aF=H}3Px3A31LV5z+`F4{vm-L;`9l`xbI+@?T^qxZeuZLAR+fD(^YIq~ zJVoAsG<-&x9zZm<390OXag!HR=ba0~m~ca@ZZMi>@hbD)SW%+cQiekzpGO%cLOT{tP}X3a>XZ9>cHyaMHreP zKEA1+Aw{2XmH=czpsiH&g5a;WSQOcFbF|h7%i9c7vG`rHj(|A~tXa6-o-jIYYtk9@ zvm~PKCeBuT4Y$FD4KC~GeS6v7+bZMTL?nq_qvs zMx{#UeKzXzpmec6LD=g&F$?GlF1Gp0yhRrdHaqd8bZt0qQY_{Bz!2z9Q>ERe5P1ekgK)#Ol9y=|G%yULhP(>M6F<; zXbZn{5pRfy-anXAa;zO08dA>XQ#Bkek4(?X;QBE^i5-XyDe4jspAMkO<9;P&x{bHy zjS;8ejOv*;2`ybv&Bu#~IfD_SJ7inTaet4SDwGIS3^mGBGa%NR7|0qu%j3sHMC%U; zaBpNKbiK*g9?KS0;XN)ZydJ5a%7iA`u?9R3}N-7ou`4iVD!#$JJ|yn?AEE(O3ErA$ z2-=M+L&*7JHhzMZt_iW+l(Iv9j4+?6Z3(LikLCZ!=Ui?<$W%EO$;9id6 zFCLA_^6&;(XxBd$X4TSGP5C5Y=l;!jq9cu)cmVrTbe%ik$hKhJ*s&(#Ckgv>sg15r|&OO7SMv7jc8@~O_*5o;~51EQxeSfCD=hWxvP1Q5Sg$1nn>;)@9p>S z?vx#Wf5`l&GQ9`q|E3AspvYP`~IO#sR1_SsFz47U)R zN56{mBsn<3C9bpIl`=tz*Hwdsf0EYLh4;7{>ErG64CBSI4TWEMI=tH#2om0vM*(Df zL22hfxFioj7ZSzrq4nR^x5%c1T2LFg3gbR}I96>=Vq#a2+1f~+o_UkXg8j_;4K84I z?@yNvZ?Gb;QkFXYWI3OSYc_c$_iAY%O(vniJ_v?f;u4Y^PZXX@KKQT6f1pQ8TWg<~ z9+SARlhk1kTG`(Nj!I*0tEob6W?AH@A4f(5FKc-E`}3~tk6jNMN%4pT=gPMv02WXa&jroHMg-zIby>yIvLA+-6&px zsp`|GWW0x=Qcb|+EUmx|Gz9|)h#7Dnk_9>^-o81GpjiZa>_4y=)d|)@%519n9|E|F zFY&{#xCFReO`)#DT!zRNIt`Q@9G=keOTBt!G?$N&AnZt_f{zcAK%YYl5qQb;0NViw z(|V%?pDjtyQ>7k7Hl`R)5M(shbeINnZA*WUx{^65&clv|3Uve})q`K!s`J?M1E!ji zZ^93z7vErithhXnINLMK1C$?jGNn0s`Ie+U_Q|H-L3&G>tCMq+5OZjkFb$*QpiIXQu6aZd5Y zMHWTTJLS0rgjyOyp@ubqNJuqP2Q&;YcS!8KT0rK%0x9)ZwPR% zxPHzQIX|39E@4JCYJ0#L7+(RyomsHLl2N%yiq#13h&X%mEJm0Y8v#rC9P!CACV}zv3Q)`STob13D zQ)?Kn{__+G)F=i!I2N^M*v*hK0Xa~*COhID*Ce164AE*0u$uf=*U}Mq9#d-bQ1aep zlXIkO?9s7v_hvh_)$xb6wLFC%2!`fOM(X-QvxjYBFyqdWVXg7vBi14vMh6qqHwnGp zVlZL&Uy`uKvGsn3+znlER;1hm#t70e`v?%O1Z@j;Y>`wf+Om%G8vm^vyFsIGEKVge z4Cb1r=pME*Bc%>4dY@4~-@(G5X5_#?Fe8w_#YI`cjCZp07}qeB<~A)yHiQ5E!C}n< zU-5u#(XTbUJ4_KH*%~mcRxXt)&HB?xw|=a8%-nU0j@y;s@BJm(hU+O{ltpQUSp%>B zwA{o$K$qOSN$Pv&-cnDu2_(}F*thY?cCmcuFC-zWKBT1+@S!L%9fh<6{VcYoztb44 zVQc_`J=d;4>_39k5Hb9Uaex8zH;2$bxcqOuSqbDmF`UL|68?e)6FYDVV~gLj=0LU! zn59da3k^x1QhJ=wnd)zoO|vrK4Pg*f#brjmzk2-@#oLdPz}@L+Q}{#I+g^G` z4$qj?V?0JxO>NcmQThy;*)0=!3c*ItDGiapf^^xTbM{trIXO8fLjnP8%UNR7h=jt4 zP2cC}{qJugEE)|yNY}iwr2Wx3`sm0dX51?HDv)q;=ivBH^=m~(_a!E`F)v|`$4T&8 z)CjMJGDGAzKBI^hu&Jrxhfw%S{4PD~ZE7D|%UcBZ&Z}-GZu|~#7A7_)q{yPhI{sR* z^8zw_zK;ETs0(@)wmQMV4Eq%pTW@~?BRH$a%HvC|d){_yJeyT8SpAX`6BGNygRs0zCRhCu}tg>Am^P7a7>{`e^cC7kWEF(d@s=U(~i}@34`UCW!~VPJ#3#uZbl{F zsrxe;(TzLhg#~cQh$Tjrr-10_b2o4Yl zNdAGoP#_=sUnYy%Mu3O)$Mu1nV{D@SE6^qCUmXJq^7#Ol`Za(8r4fYmh=7lmyp$I=p}mygZ<(E43;3>I}l*8plzK`?#7V zo)_(-lK^-a^R-0YYQL?^q_3$cq!y6Q#MTjT#|-Yk0nh+t%s(C2x>OAr03ctL{;%4reG5MShkjcSS}SM zgA7rSYJdvEC-yX0bWNJ(tV^rj_raxLT1w6hW|>Cc4F+J%=Y_UeNe5d40RWOvMjE}& zGuNl0Ht^h#luHnsDePu6G4@lV$ux_e7OG@M^!zg&3PZPdwPH5$N(se)$>d!+Rp30r zha@|q*0c1O#HZ6oSYWpMA!kc->~mxILRrzREYBSUWWi-I7w4e zy=WmGdzF~zhiP3`d*RM(G4|G=ryovKc5a?hr4&c?G1+YoG2a1)pLxB%RVMITNVyC} zZp_BR?S3F7f*E{8??qWCck95j)L-k0ICTUXu)&H4MbryysnXGG-Gf;Q?#Iek4sm7X zvh^scla+h-fK%ww;wN0O?rCs-Hxroce7qgIztSry!<=Vd=HY=*14P%dNjEBcnfSnzvPoYaZ6%qvE4A zqkIer33@y&`cl#nxu4r|>fDh$$$0r{eNqrL!Fl^Mv52RG@RGT>y88e6 zUF$Hd_N~~?F~GKipn_49yQ->+w6^B6z>OCekE>38-#_jLg>7 z)_F_V2ofvOCGe7^$;)OTZkCeYJoRP~F;FbuDU1vQ(|M{eqpe-DH zD?4*d&vPElv^u&sKev2unbgfe^*}A6_&Y*@7h8G_0Y%G^8FOVoa$GeNS9I5fVkUqV zE~qzY5b!fwv%BeArfp@CUVU^s1ACRf@zQ4^beG2y=Ja&%OoK7R>U0x-oY%bfNPhz0 z$maGcex!PlU}zU(O!b3aAS;LiUOTMF3q2aFFd`2JPder3ffZ zZ&5Nn&o!nvp$b`1NM6aCiVY7JoArMN^os!r2{H|?uW8Wd`|a)R(qXn+Q<2<)s!A1B zTFVOR9==t+`Q3%ptW3E~CC5KWP4LY&I$@*`AgOcrBoY>a`4 z>4#D4BY<-Fo##p2ama!#Mpu?p{lux9a4fSl;`sGV^}VFp+^VUs5lfZa;eWD1V}gz*WpOl`56!FM?ZvIfS5dFIp?K>cxX~okZ&x; z9_E{4d8*L+58^7$mRbq6V&#tPftTsh$Tjayfo%Xt|&Qz ze&KrcdB0b^$HBqV7upR}f`aE1y)fFnC&`QiMirtKq3X10``ku%6O(b5>w%Lnxkx8v zE2T(GUFeTjH#$%8&Zc%b`Sj;&YIh`oD*IH&iDesjaYV$N78WNz1H{(WlEmkLyCQFf z4ABUZuhe4~MgUGKCxmLh0Aj^w!j@-Yw9iMXslu?~q-{sHLUHSL4 zcMT-4ydroo7wUcVac=(0NO7>4uqVRU7zsMm&}c#g{Ht1XXI&%R4nUQV)%eUFbCa1^ zZ>}o_=?K0A*-?zB?JvSH`rSh!BBCF#(WVMs`S&sAh_!B$Rk|E;B3UfV3{+K-Oue%= z2Gi}++;Jj!1z{~c0dck7bW>kRdD)lwt&NJ0ZweSuYwo712QITD)PI|t)T9fDY3uZe z4j>Z>^4BIDs~r!|ahGBq?7BeE4YqcFhj$2jU4$s>9qVX`9adtTeWtySh|R|_d|z=C zkK`gz`JV}^JAad-a9CluuyqnWg(&8)8~%{6RIeYKTr?u;WW3S{19eKvuQ`Z5m|`F^ zg{+vv!T<%Q!Pc~;*sI2m==38fR+{P)^F6Ovh7_%zaw7C2V!nc{7^?t5_OdadjL-Ss6tl5 zt(|@A<~_a1^W)j&$oR$OW$VM=Djn*P3-GteYA62^{0{5mzgo|7n-*X9&QXl9(Z8+i z`rws$_m0a0DZujJrdn^Tv%af1e{C}6>LEyV6Z495jJyrAy0JW9rj%k&ZhqHah-j*^ z-=7vOQ2<9(F@ydqsSxFYe|?32R*BcGrdLSm3n{V^l!U970zcVAr!ddo+&2^552)ru9 zKAR6a*>cn2!k61V(u39|CB&i*q+ZuVT{-de{D>87xB9Ei8LL@I9rDMlz{t%693RRk z=Nm}UPORJPaNmgznu15sy%E(ny~Rt{{feZ--}pLN(|<|9o`m76MuRDO8DzE>XKAuo-3-TwD$^9JF{ zT69c^I7VVEK4+ONW?@W9Zl-iy%OM|ZPMDZ`d^|QcM$b)_kILE_$A8kga0SL`ni^fD~xrQxGOfW8~E)jcMZUX^gC5Y83E;0$0e??}E zKp^+^U+%gN^$*XPU1)G}LPWCsTu-1NgPZcv)@3F)vS*Qmwze$nD1xv{u{+&clZc}6 zhXZ3@fPqM&`C^HhV$$_nSP5>m6YanKND-BrIp!6G)2Scx=#n*yo)4at@OQIxgL4T( zub3203q_(nPVw$SWHVss4?O{pmnv*eSFB%g&)tcjId$Fq?C)D;^B46uqcO7eSifEzsMT zVFth`Lw7K$ORe(jFnQ@eXPacl!IrQ{+UMFVy1MXCK;3YJ(`ge<^1RH)2iE9aJ?iNawojozvt)ka|R!337fsdIQ!O z{}ov(L1up|rR62TqRP=2mqYV-zMtLHLUV}o+lZ{dxuyNA2u9=PFT~`^1&;&EruOT5 zCO_&s98!7s@sz{oi))0$=((yW7T;S?yPjc_w%6w9kGid*AOVnM)D2U7BwxO6FBDK( zVQEd3b)=$x5exb6hmUxSf%q~=&svzaXZX`9d+Mif+|c>Yq!np5X3aA&@vgjCBIc$s zY=;n^*w)@2+D;|vO6s8{SA%k1VQHl|@pWr)d9lw~Dp|;^H(4kvN}m-eNocRNX%Y`) z9MbF2=`!rR>Nb2&`2viukgr#3p@JHPt<6bp9lvU$)*FGvQ!pK%rY#%nHnm?S?7SB+ z?(`G+qfKYi4ckt8aQAR^b6VZ*3dD;-t}Nd`B1r<8@4y^yMkJstjCz`?KzE|AQHNQz zlQ4ZverIOno1eOT4TyV&w$X7RV*UtVxW{ZqcOMt&ApfxH)+^NB)9bwA zBHi1gTRdbQduPRAp;n=XeE5ia{V>a+F;N zgvtz}=tx(W;dejhw;LuS8ZAv!Hs_=E$|Hmb^Gyu+`o)erAOEt%GuQB-%%Hb^4T4>q zQ~yHN#nnZ<)FF^%h2R-Y*uq%&3aFP*2U;%ye7RNUBIjjvxZlNX(cw~CHq-RyU~}xSDy_?s%*$_F0Zj)QTi?3e!sy0(m$Yna>6jFr(!g=MNSS;1PuwV$3l}^dc{S9ea zyQ4pdg75mT38xbV-Q93`STk)AmC)dnWP0^H4IMu&=|K3wf6c(RgCS*WYXs=hpKEJ- zie|A<3Jc%$0OXs)vdMu-HH>LfHnucieaY6>-}R5@RMNqtC!hE5nUSC9enkgl>7|6q zUB_Y}rrb{qOv@^@0#5Jg-DMNJsxp)@j3*aQEA2o09&%(xT3a|FFcU!P8_i+Oi*w;LM(JRf;bE&qiJ0w)Q6}- znPqE35p*|he&}U&X@$~pJ?Ugkq)Bv77(`+mz6*M4vV{5UT326DMM+Fs8yVIeUStIP zh5jl{b0Q7hZhoK`{pSYv?evlcz?{3&e2)A2Szj3$-Tr?(T?JH>-PT4B5Rei9X_0Q} z1`+A*?(XgulFy3ix}>|iyX!yWz4v#0Yke*mX5M+@oV}mgInT+#+1YQ{;)~_` zd*kX)?FtGl9>#$;UM2;_3Pc!C*Jx=Aq|*iR02m$z)Na}Kwc>+nY$-r|3#G}$UEOU! z$4xNx+=v|Zx?q{Kyt=fcB*06{15AiHFB}L@ z{TMS;%nK-}+~;E$+k2_KpliG(R8aPVQ9Dx3&TMpA8f#0>=i*FYjgeGzeXHHm0`&?t zcx9!`|J^&Bzm?4wHVrK;JYr&fU@Fzg#4#0cGW?#I2m)C%pg0Fr*xV!JdEKc^uC%x@woFhcBDJc@Bw(o_> zw=Rgd5}pKmfbsR~_MK4}!5!YD`4l59$}QO zP-ZZNa+W6=J&UKsMFR_#?v)lVOg0IL;cbgtv>p)sW|t8^!jQhfY~ki1;SCRF=KWD= z%X)phq`x}IFP4&$JR7r)B(}EQ|9g88ifNYK- zi>}ZgmBi()r5oGTV6s6Rf5QK+N-KkW-=sP_6O%?)d%87=q}lFCzx*y*G{E37Z!n2R zU73LmlzIf|7P5+pzx(qLLA|iLuuJmth9CN8Zm0TGxupDW4O}*hE>QEio~b6wc4G6Wm{fF11#R=3+PIAd=v>* zo(t7G{ie#SS;~|m-f%Sm+=9{KlCR3VR@T~V4F zM?VRrWRu27R#jEW%E>)`z{9{;%FZmf=~}O3cm2p;^nji1ovDguAH+Oo>haGr?Gstj7WxJPrhp=RNlZKTA_;nGEpSIkpFMM;1E z`bE5)_j67Ec#*Y$%FLip#}@N7kT>D9SEP`3k;f<0j1S2ImP&Ju!9%iu$JE7luNQyZ0082-s-6oGs zHVNc^2&Z;BEZQp|_IVbLKCMx4!5C`njRc;GH7WInz1T-!PoHhDCmD?%)v48XR%Y8z zw92&NHNmHz$kWPkw$!SR2U+|hxW`U|p+N8A8IKGckRN_KaDlY<=hq=2;w(11{Q!vC znY97JB&&|WY{~RJbZGtr(2C~VTIW02#il0=FInB&7Hs8o67GN;YPEq4=jcqu~6iZ$HCpmEjK)M~(}er|z& zPmbjV>sBM~8T3;`=u1vn7Qo(c?HKJ|-oR%T6o}>)#Un}%1-*{^qM@QOb;b5{*o<#p zc%DMm_o0K|cVdFYvRH*mR=?&w=(b!>FJKW6f>mc#v$CkX{v@TR3jm8Iu6i<0g9A~Z zJBsB(eYAWxk^MG|4jeirVX)RvQB~XB_dCmld-hz(u-+I$^mB4J07iOx5rRpx6~%fq z4mmN#SCgWdhVCy-a#=(|3iu^N^3Z`rks%a5O&UkZw-z+*UI zEOoa&Quk=C^qheD>6gGSCgNDo%2{f!_XYb?%r+d`Y+&*ocEh&5)?e!t18D7|$dCK+ z_mJHb{1LL>?j`^|=%1<*BfrDIYy7P#RvR^en~69@b?!Rj?clTk*ub;tllF>IJrOYY zjd9dw#=%`CT|EivaS`t0xWV@l?Zc+reYt5_lbs*LU%rblHQeihr4Vgk0D}N$=x%YJ zQlU+fPlJyfl&Zu>g25nW6;v|YGU?1dlRSHDWdkHcIuJD*xK(Ykmu>g9#O9`~20$=8 zWuZ=tnL)n8?ST>PfO<@FjJUEg)_Q(qj&WLYP0@G=O=NjgT-29mdKgNbN*(|(2ehFG z$;m})QMi04e?I~OY6_2J!xv8)xCs=t$y68V|XHb_23#d6lV099BT3YvLn}z`Q8OTQ-Y!J zgSN9XiXVeEabKLSTsJhP5+-=K-SDmxPNHlpg^r52<$1 zqN3B{yD)roXeAQw>CLtOiOvtHJQ&^tf21|~jFDgG_66J9IO1Sg;2(6OBq}cXp7w%u zlX~WFf!h8W+hMc)<%5#tfhD4owMJ8&Vb?=^OSq2&!r>duizd;eGb3;c@zX8Xn2ny^ zs@Gb;ek#9eZFHJUsUw*8yt;#6X8Bnp2KnM?f8vo;7+uDAo|c+dW7q4RThk6oEF-jd zL%x26ra;Zm-}_LxL;yVz(Kh?zccE*7xV;OK9GU1oQ2hR#yM0%i#Ckhni8wW)&CLf)@`xXzRO|8p)EsTGa>yIZco;xfd{8$b0ixWl zo27P84UJ{bBOsjC*l5#47W}R!~9ilag}3NJ4Ww9Tf6v{VIF_3UtA%E!WH!d~)UW6>e<-I7rF^-J+yP9Gr8u zKwi>xO?aks{)Dkqj&Z}}o2kOUXA!25ay4PI0PTCz@Q(0q;VGRQi^jhhRXB!Lg#JW-@YGmOtI7@H8@=(10Lz9e>9rd1Vjh*xKzG9F=mHA!h?d81}w zVqyd{HbM!mV}${I&DH<304uU!{f@77IiB_h`?8F18rZ+(rf+2T_y z%h}P|VTYSB<9U7R)<(fe_3hvwmB$Jf_c`-;2Ee0`$9W=%dlAOy4TMin`*7B-UN3f}DG$ z0ds|%&tf2POe*0EbVq@};whJR6dXtg1cHd&T{8$hl8kv#AeTkz^V*JrQQ$7pYqSKx zQneOs+L*P#G+VOSnDx}>;!|D1^r=5fvDLTQLd3Em^WN0*mCVG~JFA0RP7;-DN~>2x zG?4d#ziu&tM)LQu5CMv50CO(oc%7>&GAZQPmD;EBG|AL;15mP}p6zGIH#ktYBDi1T z`+`aA<1Nx%BW>1*h#_%IOvGS9pYL!fL8I%{%UWt&+p7&dfC;`^DrcVT-<2H~&)`&e z`t+eMPOBP(%Z>hN<6+Ay0zn^f6@RCz8tb20zuqa)6&U6TM>>atwi7{gaw_kc^(zjB zcYawZ6(qlE@eDSVqa`pn2Y!Xog=t^KJF4Kd`(-Ly_(AXBLzU@zc}K)L0Q-#@=+jbh zc+K8|`m`E&NJ6bFfl;>zyA;&(;SW4o9X*lHuCWicb$+)U2mABD(&uIVQ z7b+bFxac$ZwM;z#f`sa2eg1cwO~vyohwU9!B15Y2c0#T11gG{cW9%&9{_Yx|Z|%Sq z`pWUZ?!LEX%XthyV6cYokfMZkHb4)cdBA^{ehreMq8+?ydw(vVA z)3B)lRaaI<1iEz%{KF* zrpsTsJ%*?-q*s9fo}NbwnbKZ`XKJdZA5*63^%m<$Cafk>cYVS?Nt5)h_^fo_CS@RC2<&VBgQUB=eY6C@|&g-{*w`sZP^ZlM-y|UDJHT_U&quse?fN3A=FV}fNs7O2ip3yuniy9|B zErr?1p?Ht_qe_5O0Qj2OZQ?EPG_`TC+g$~49?aJ@>(yrqeR)mj=)2vd5#(dCH%zkm)Ms zn$qD%0AH}Is19vC8rJ2wKORn!h{|ks^aZjEa}56(doM77;wdn7dG5L$TY}s>&ir5pKUfE;k`$O?Cn9 zn*nfb;Cmt=NuzQ|#HJdv-OR@B&fA)>8T1o#W&7Y6$TUA4{yrLRTvIU2~-FZold{KEBZ&tu3|7V=v9B4Y1)%(k#_4{6uI%sP<0J~Y*? zf_A2ki#$P{)!BPGjuaL(SvVa4L`vzrmpLu*$UP`W`g1M6&)+{IIqodIxEyg!U9>o{ z`H{#5sknVvdK@OF;$6!Yf8Q!>o6QwbamySS4$RR($R(X=!t=2$D9L2@=y)V$CQu)m zvlk2<7*+T7B_QHD+8+lLB~yduf*4FXL0O#Jo)yr37hkMwd|9V-aJ4W5SPomu4bfxb zRwz*0<*4l&yNy(9c*H5iLE4J_XgZL$>IXc+;~uu42hJI#Dunq25=tPWQ$$FxvDp)O z9BLfR{OZak+}J2{BNLo|eI|+BmRh^^Bx`w`u zi?jl0k*!oyBRl8*7gf1(G4e{qXnS znW%tz1PC!0_u~(kdsSJgCjlffgGn6N^~+osKo$hPf7R{E)*4Ui@z)h##_}Xv)WnTR zPY_pBd?_y8?^>oIu1150MLY5gFL>u#TXWFbD5UnGv(xaH9}6QW;&soTLCveBnTb@e zT7p!v7ayx{K1Qn20y}O@Z;Sg|R6#PH$>zo%kiZXqjjOIub{A z7yGD2PR(ogWC6DxYr8hRDFi9&sk-0R`dlIKvIag zX^==_QKx_XnfO}JYdh<~9EzHo$x_s{+X2${Kn7 zvsILeY^EEH3ZQ%6^U}p%)Ue?1Z7n-q=&ZHEsK32(Is|li#z(gaiQul9xpId}fGCKkkzmAW!X45ce-Cme^ zjRHx#8u9|wc|O!w@5RmT`q?0(=Y#F+zIW$6rg3Pq%}3 z4v&jvplY(PU9~f?zsrN_{HOz>j5`!GNX;lCP@T>czV6Qf@N4 zVD!N12@M86xLTgvkhLR$QRnYZ;%PN^#enoEWs1IQFq=h6g9H2ShKrp&vA6eQ*fOUD z@h`u3@4RPP$nJKc^Vy}J^8B(P(CBF>JKD*99^88oB@F^A>$;|y{Xij z9M{Utkcng&8;r73 zLf&@H=}4?z+aGGT_8Le5m^MpZA)tJbzS!OWJJyKdkpCp0|63!K+wp!=eDi_YQnMDJ z9o`$ZF8E6Ya31=wlmqTTt=7Y;Qg#|D$5spqv{qNZ3cuFe(3aZ@ai+FlKq*aB9?p?N7)il@?-Ikt3?($Pm3ot(0i9JKUkk>G_Fo(?B{-)oR8|%K?y9D^IlpexY`QM$ za02)#kOkd3r*X5H_FuFM+a67zC)YWy&MNS`JDc`T!EC=m^&0v!3d7-fg#wowR;ZYZ zOMxmepx5g86cB16(>n&&23Og_Go;Z38Q8H!|Cj=vZb)(`(so1@-#lAso*0tJ1#XTyNNU=@TQhj|}r^`R^;GNz_gE z?_m$2YO%tj4aRB!?aNS>F#6k8P<;dIXQQBtJ1Rbvh0RhEfmc(_2kH-D;?9$54faS-rCN)x zP~62lDBzix#wx4I21CN-;Wd?%ki7(Rc=nY`)dK18ls`Jp*wAV=!a^>idgI#j4xiD0 zhR>L>pAH77iU9Vdv0&_p@gLBfrYXl4geI7F_`YZ)BqS^-+$@izc>f;CZxz8c9VJs_ z|AEs(=d(1W^!j#cRkj=_CIsW2SE=PweQ7XMAPZRLIfs9bJ8 zBewYf0m{lj-{AitVIWL$Ux#Se{4?x*VMc+lUZolN%RSO8>nLV zwDUykKxGTs-UQCcXPN&2jR=Pt+JT@M1b4W9^U}2K(O){9 z=8;1@9&gu3klwIS$UqyFn3m#PwZQFWOGf+^FKmAb~@OPymn;Vc3foKrLi#Hm;z&UEIpQW~n3^lZrJ@+-^6;&~1^@a^ zF}2)neVST6c&d*1&rl@Y(vS4#2~;Z4oDytrXQq61W{#`2%723h9|Q!%Ed9*~w|+4M zv75V_4}fsmRmJ$`f_{npf&tJspkbtF3HOlLEQ&X}G!)qT!wcL* zymY{?=+siaEDTa9a8V|W(4Qc%j+ZA8J?m-kK9lT6WuiepWayb&e+Fe#)%sH;i1sY} z;9|2#LPZ=6fkd*jK2H&1qJIPYH6R{!4J;t|ugoJ%MO9@?-${2@ckB(DpFDZ4EBZ+c z)8;^CN$NEfNW~oq4h=S%Y0#@0N-eW4192i4&mvEh)KtK57YGnYU`GU*g}_e}p6*8o z5yy!QkW1?Dqyf+nfb^$(Lhp_G9;Aw?tS*bh{h$i#+?+9g+UcD2#4xHHv9K-Jljjdu2TzXoalttMQTlzxwk`QQ&0_ z5ug(6SD{rg%>YjJ%6SLWNrEDb6?S+!D>{5UF6fp0^?{(Jb_1A6DSA>w5)*iwPVdG)Xs9F_Z9^0 zI6S-tmoJW91s8Nw9Bd_>Ag)PFTr^t-L_Fo^8(5l40!=7Dc9_6q>G_UfDQ-}84v=Js za7;J=kZ=~t(QFiUTbdr|Rbzfc^-eI3b9kPjfpP?Y)+0cO8B1ZP4OfPU_g7mPFNgp! zacq|xJo!OfeA)~wfETYXz-E>(JjCsAGe+F6w%O_oHV;E%afo~Vu(>XFQ@_2u)B~{n zgts?ml4>{u_6c$I)IBkr61mhKeN-%FvoBo|(^DJhF%92MSiPT8vXoU)Afx4o17FN` zXN?%xD^x3W$$$p6qs|=@48QdQJHHiIO_o7q#H)wYA3tygQk4OG2ttv*Da^Mx^{^Ao zfC*)MU_Au~zk$sx$&NX8VFz;oL0JekHj&~lphb9A{{O3Y zq}lEto+gzwd>HDB4dKXOwow5-|FvPpb#ChMz4S*QZV;Bj50)?~Or8d3OSMrKvpQk; z<osw{b^4e5 zpD2+>{QA1n0+3siZoeK#A^RbCwMx|XpI;bZcua&*!XN9)=KHfk;eoRZJTeH=!iNoZ zyKo?_nwWwDd!HI}cSEw3wMCn4gj_DT=X5^iRXOCQ7to=a7Gj8aM*;o|9sE+ zZ35K+%PBh%#2Wg!9>k?_-#~yaO>2Q5a znWKj9H%2iokdZ5j3}Hn{%CV0!M1ZS{A`uHrcMd?Prm(*~AOkh4zS`6qD2(&p=j+Xv zyWcfr*a>-E2TP0VA>%e^w#s!M%bXNTl~{Fr1W7uf2{fQ8RU_b}a;G)51qgvZpET(W zxC;v8n&ALn<*S%9loukE#fI>}4S0h;lS7z2!V#Lyw&4Pc@c$lIWy*o2QV&kAiO_Ty z4}0*Ke%1-JU+cC5iiHNJODsrMi1xaBK|#^mYco%b|2-nIa4tk)qza#b6(VsM3?1lB zQ&p>UuMTGz!LO@a&;xz%Ehhg++u3!CEpu(QN*hm)jPjbCp6w~E6bm#Oe@#q@)M{>koqnf1)Dr8v8;-+Q zZOCv1@=#l;2d_7PS6BFz2MtunGwojdVAlgzLo*V}EQRS!}dj96G$)f#nS!6W_!cxRRb-A{Xb`J-Yn3``9>wkFe6=dnuP zP3P#KHq{^c)kUx+Yy$p3KgV)hveOt@jn4*FL0BeBEyWl-;{(yWA{>sZD-_$bCQ2yH zxJnSPlB?Ne?I{g@0dS9f=Rdh;G&s0NE7d5HYb-w$e@4T_@80pwQEl;N1leG2TNVr1 z2*uc?c^Mi$sob?f!0qr9nO@=5>8$KZ@8fd#=VqZTa(z8N<5p}VA3P7>tHg!2oQHQn1yv?qX!gr$xU226yebCC1Sc(c>@`l9n8h|FFua;{ekhFfdWZOM7n^0oS&M6asQddi#+-t zU$0qhfN_48KbxPR$ptDCNXHYbHT%J*0Q>=tPE+G=qX-35i6!-hoQHyvLe6$aIuy`` zb>uzb%>rdG_(C5oA3lEgOadS?e^u>4FuHW6#vQ|>?x1U8Apj%}XJ_TU__VC&CHG*e zO|iXI6?9%TByp-){SAg2RldLBtp>0u&Ed8J=j-iOfRP%JEy zvpz>q02yA(o+cX`A7^A{H=2(wjjN|e{Z!AVHQQ)M0a#wudG+x&i)J2&2euvdi3ug6 za{fH8X=f1e_#pv%-OZF4C{%O-+tJV@cAnxSzE!$Pd$OEqaa?v`>)Znl(;jo6+Gd^) z=qbDl`*FTLl=*%__oTVi@_Q!#`d~d;Q#hY6J7D~{fBp!1)WME2|Aq|@xrF3XW;75= zxF=-sqs^5ISRz3DWR0_BXI+j4Bh&4*@cxs;Su;>zr}B7)$YF?VaklBseZE894=rlK zJtrSA*!xNa9&PZUvz2y%v|RT$o*DnIKS&OA*Q=qeCL z{_XYXmb!mW&1|&_FNfzZf5+5=mFd}K@78~#RH*z-Xdlaq!XlLDe|MDfQz|0_Z|$<` zR$1LR2msxA(X0xMwZa)O)(93TKJw-d%hW-$ z+=B6|2Z?A8ink{^B*c7K4N|>=z&DkIlLYzl7}yvR_VQ;gDg0o*bhMWUlhZGVdO=9q z8HJnuSRbS&r?$8uf(UNmi>EaD_Quf?scO%4NZWUPnJ7jKzPTx6d&_)98&;!w=K%x! zZH-R*Sit4lWfjxW{u=!`?RXF%wvdh~Ml09TigA>2;k*rA^c(Ebw6_=f3A6%|!qMUx zF+F(#Xll+5He|pk;-jHvK(*=V)MI@Y{tgA;ae#hCfaYYHK}!UzGMBj1vB4N%H1I0W zfn9#e#^*P8N${6_A~77v6FsPW zgamA@pnC~TP1Q`lk!@|0Orm8oh^_8n1XoP^q6SPs# z?SbBul$0y7?Q8%MyWN8PlYxRklD;~~fdCViT3yU7Kt;9C>Xrx$PCzQ&uUHWCCgznl z!RIb<<=(!{A=wsC1_BRZjrB4vRAtM%>nGj@w_7;ka{tkZu@4{^D{4h{O@A#4Ln1fc z!NK9wV?~4{U-*I1jRg$$fGEPr_mF{msnPT54Ppo)gxoYTGUIFk%i_^eiv+l=0DGqZ z{b9@<8B)9w7TOJd01$uqeL#Dm&xsEHv;Po4w7MPY5c^=l{L-fZ@?k}W&1P%3-KBrdwFkzZW!V|Y!{Y<`WazkLctE<(WXbo z8)^??DCQasujId9;ew zStx&EeGeE)lmng)Nca{L;|D6@;3=p1-Z{{}^nq5xbaeqbit9HGcA4Q)zZ;b4eq7Y# z;=*QQikrd~FdNEE(P_yz1@18wE`iJU@q9#$#oqj-Xim9yy-ZGFZm@%i&z&)DY!mY zCUvIW`c0R+;$TyLQTXTds~OU)w<8`1ZSEepX93O2ZTIYSt;x(x7HxXv4?rBr4`p#V z;c<=C8EAlt>~D^a3%$G6&jB0j2`kM+!RF`brL-O)H5*j?=Ruy%j|b2nf=r>;zWaLM znyVa!+{-5=m~DPHb|1$&R5506W!EU9W3MHZgq^lFw>G*q4xvH}!b?G zDm)z7YJSO!m$s`lx5#kK+WF3qO_f%&O;glcn=ijwI;VD0xj_=u*7aF$&c)h>j>6X7 zE?Z;7`qOQQ;Z~*O+4)&%aR^i&e0llbOP@9O4?HWuPlHK}fxicYNW00#fXHv(PB=E$ zp>dnT=ZXjF*Wp(?XFIr#)-rD49CS*VZg>;|-|RS@%!Aqdz{@c&{Ri(ox5@SPlqU;b zlSOwYG0q=@Ig#-_3%MQzmz?!YNACv0ev;*`9tXu9JxAzYH;2}_ZmmLt@X&FT03_||3xKZCB7tw zX#X!Tpn1<>;MO|fU7~1l)Tez96-`CS{>f`ill;zY;tcah0(K*O18rQvy;Vhh1AVpj zEp99?T!D%2MoLRj*kklBGlZ2WmXL98SN50RQ9f(W%*^Q0GFS0?^G9CYga}E|A=@S}OxED5Rq@GIZuw7Zwjbt=2P;irLeAK`vCJPEAX*;C@Z~r08Hg_{)?f zCO)a_R{+ez#UmSZGP~Yg^Egcy4Gm3kO=-ojG<@8$?oau`5}(hvDB>jDVFfH$pYq4E zD9y#oG*`t>F<-;MBr<5#@$ny)7EYZ`znMyjkB`?YZsyAu&;6X=Oc>dvU-;1^a*6kq zHJ;^TW06~EXqjTrxv-Q5TW&-#(rM+X<()IL|96xU`-P!9l-+?m8}`v07niY^u^p#N zxKfw=b_vTtLPD<+ykA!SW^+|$;akiJ@f6p_)k$MCxp4`5rR541#YSTm3}CEaNrs?O zUCDEL6XB8L>qAjp(f5ADeqre>$#$LH)$Y6IOFzzqa}Ds*iprx)kC>a}J-gIlJcq(F zW*@sd3;CeFHM)m|D1Lj2CT+z0{7SBrL7DcY?$UwV%Q_TN%TKED>klb+=bIFvfA=qE z=H|fXiH1r1w1_Noox1+B^eerLw@JMoEj&`HqO1)XUz9^Mzbp-Errw1JB_hJr)qMqf zB~S-LCp|^hyYcQIsk%g?cBx5SgWx&u>CbUQ&Pe7NQ_!G6lICFht530cPd~!QwOvnP z_lFcmb?AB)J0DfHF4kS|>_QMjOX$k-T29!>C6V%tWF>yXT^di0O_Cmnt@y(pFWZ+{ zJk4D*KHYBdt5v#^wZdNto8+(SKM5%_XmuXdoTY4(b*T{eue!qrP5e~+{QM?Fy|lYt z%;57J?0B_|3{*rOJ{hC+GaZHoWxJmB+14Eh84eN z`2e5C7VWnE$dmQ?@({?+%*DI?Vq|=7W06bQSBmyIhL zj@ykkR#^JCDU1BbKx{!!0U{a9Bo611+V^WWTn~5;&y*W<0`zYhTI^6w7d!nAkys~l z0nS?-6S~Nv7P3g=cFY)JiJYJ-LgX=#V0*C{qE#awFJ}o?jeyl z0QpsCUss{*+?<5vpgyn`#+I8Mwo#>`%WM7aV5x9KU#C{hI09WbN~CKGK^i zKCZCa{w|)&6v@vUFe#zJyqXm3h`Jv!Je&|P^K#9(>$HEq94fPN^kf{Be-&>9oBVg0XdSF#4;&N+Z@l{;+vk zb3Bor$tLj0ZNIeF=7UHb&)9j^{rGN&`)7G=o!bePHGV$9U+;-hXa)n==qNGXcqBYCW#RT zUIhN&;83;E2%PGHpn1%m;%aTZsT!A(?FOC3rlz$$_vb0BWn{(mp2+&a6n0d2_+2WB z05sGXRs!dxG`x6&)Zywk)_uHx2R)6f9V%or zES|R9^oL$+ilEzFM{g*CEL*@U5)jv0_{blGX{+Z|5gUn?fm|$ zEi+nZ29^h0J+HQcilB#d zq|d37=OZ45havks>eFDz5RGcBA(;ldHLUJSi`SjV3YStN$E{ z7Fbt5l}}fDU%E@Dalpn=*esW+4%E|3sk^*t{^1i{^ONOmZ8Axpi0@fikiK^a@m=vI zSkCK*)zszte|f<-D%u9`lqcj&@4pb`O#R(oJ`mfB=d#0v=HojSBVYGe5pEQkEh-^i zjJAGyv0kEHl}xu^C#zmm&u7h)JoB{foZYTI{M7J>88Lf5u!NXGvhZ#`>rZFcyK7oD zHa4gm*c(Q@y_fWNZ{@bwfc?n?BbSWK)y+eR+gSB@)sS$2bjyc(ccBy`sfP)N-;?JGdgntL1=V{NP$8EL%?^UiuEhBKBuDVokhL;Rgz{ zk_7DG1pG(u_g%5P;4aC*nH)^x#AbJ4hn%K(opQsDSeS~@xs%_qIlBR>Pcr$$R_MOyo-TprpCDSHVr50KOOwkLO2K-HTX*8SKO$<>JlINbDG&)emXS z@iy>0nFF7oli~j!e3yO&WiB+7Y-G{P=a!sDmm|AdhF<=4IeD5&7*WCSLbz-L0DXQ?~-*@JB*@)tQedWQ1E|T@oAHo8YkU-LDRV z!LFoCtNrT$$HCUY#bB}M^5LO#WFvJrOJk(W;zE>#%HyY-q8Nax(Bc+2xi`76P`ROflc|hL*Rz`t+*{dd;N=;~jqQ zLXyMnPAKZ`yE*jg*+C564Be68*3=Q+K=IrU=8sH@)R;LGt)JTeKE3uhqH6JKnYDA} zcD{0s*Dh8s-8#>G-tu?hGyF8|=gNMO=TJXeDifL>&*n9oGC>Ip!b z1|@C)TDCe>phAV}`(sZ+&|JiNQo=%tghxCT&Nh+bqffWtiZ~+790|^0CF^QXnjAh^ z@<~t~egXb7^YfL4tJ70Gsi|q;iOf;jSKe`~3vfn-ea}jTsgV|OJndscP&`VBFUG0= zc)LoEs_}dz-vgU7`ek?*KO{5+a!x2^B&Q!+P<-pP(}R`sjZTsA=sCDJ?O8S{m-v=A znl+czuZ#t(z6RY{7j>Vs= zjD9LX4Lt1uPh>T7oB^(X|NAv1u;{x~jWf2;%J<`|jW0v2j!$9#>DAR0)Q-eu zfg-i$;-YNa**v#;t+mkoFab3IScxiK91Ehpd~fGTPxwVQukZflud95v2KQ zBQ_u3-RMpQUJy=fCpef})k3PW%zQZcb^)*bb#QX)H4j_0o}?c8IK94uPO@NI3Dx(} z?jFG$=pU}Vw4pyOP=`J{tdlxR;rhUTte0P>3zE0@l{z?vAuI0AA z-t^v9!~5=uB21XX+G&xRtUmk^Z=9rrdsQZo*>>l>v`L!&_}oy*linnq!RYMnzxp;K z<986_NR$It;LHzRNgo$3f@ViU(d!xB^i92n{0%{~X*KL zTP$yd1WJ|H57s1Y=XLkpngX4Arj$j@<*DhNG+pl>lcq4GG&JZ+)$6OY@1|#FR_6a; zGuSY2@r=D-u#o{Dw6?R+TY_q`dbAoLoo}$B0Mo}AKNNhi&U3ayBI*4|Hld>8f0+yS zbslb2dAfAW;%M@@{08pE?gMjZ$sk6l>y~M-Adq}xmU)>b|JJ;y0rI>{H=4kq&?R7zD zPArTScirRU$dNbM;+sE1Wlj>Z;Y9pPOg2kA`1ttd+~lB;@yY&QNtdp<)RvMIMlOu( z7ID4Z9x0Op2Ue=n1K(-4~eDcgiBeY2Hsw=mc8t^A9NX^4sIk2Z*pe7d^2BvaU= z`XMWSP;*kY+$%h^?g9Z4v!x}@6Ilo(@|M`N}x2O&V z{qw8S?L8u%7^YZ1kZc;0mZmko`pRzpZG6dSusAKQkX-+3IDh53Wz5e(@S$l_FSzk5 z>KlVf=i2Hz(Lt*yudW`FP3azgfUt z1%7PGl1u~MvFiNnOtZDM)#Bf|uk9Eg$1pLOy%k?*u2HwL3VeSA?dIl28DcMPP^lU- zoXR;)&B4)7XYdB}_DJB8MUAl#|7oRXXUC51i~BjXf5{CdW`tO9zlWTTSH#}MVA5SS z_$LDM>e&`LUfxBp9#1+;f*(On7hBG#sIc(&(pk$VH3D>WJH=AvZBhz~X=ly_DHsN;Ye)Pn_z)+B%_e1#i_IAzAM+=p} z)M8{ozH)$C}lf z)Ae0Af4#w>5gK-W+nv8zRUI82&l{VY;k^R`)!=vK4PjOOo#zR*>RCzfE5v+!Phr1w zUuo5tj^?KHD2iLZK*8s*CHwf%_7f23K7M7#jIu{ZI@fhAI%71`=b>)YmJKDZubtI1 zFc9c$z&&=IlU|oDKP`c&AhYt)3c89HgyDV&VvyWP^^W>8$ z=|(e4%8k}TBKp5(SI{aAuTHncmYF6}{I9?MlGuFnPcbm9{K}vE`9I_2<#jB~Ih(^7 OfWXt$&t;ucLK6UU0P@-Z literal 14598 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 ZcXRRmJB=c5)IK>hO?5rBdKJ6q{{xf%hJ*kB From 4674ecfcdd780730f467f30876a6698d116ce26f Mon Sep 17 00:00:00 2001 From: "M. Sonntag" Date: Thu, 25 Oct 2018 14:15:35 +0200 Subject: [PATCH 12/12] [docs] Add python convenience scripts description --- docs/index.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/docs/index.md b/docs/index.md index d659e783..62d59fbd 100644 --- a/docs/index.md +++ b/docs/index.md @@ -50,6 +50,18 @@ pip install odml - We have assembled a set of [tutorials](http://github.com/G-Node/python-odml/blob/master/doc/tutorial.rst "Python Tutorial"). +### Python convenience scripts + +The Python installation features two convenience commandline scripts. + +- `odmlconversion`: Converts odML files of previous file versions into the current one. +- `odmltordf`: Converts odML files to the supported RDF version of odML. + +Both scripts provide detailed usage descriptions by adding the help flag to the command. + + odmlconversion -h + odmltordf -h + ## Support If you experience problems using *odml* feel free to join our IRC channel